IrrlichtWrapper 1.05 (leider immer noch beta)
- tft
- Beiträge: 650
- Registriert: 08.09.2004 20:18
- Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
- Wohnort: Dachsen
- Kontaktdaten:
Hallo ...
und ich schon wider, aber das erstellen eines Tutorial. Bringt eine menge dinge zutage. die ich nicht verstehe.
childs.l = IrrGetNodeChildCount(stone_liste()\node)
If childs.l>0
*node.l=irrgetnodechildat(stone_liste()\node,0)
EndIf
Gibt immer einen Memory fehler an Adresse 1
Eigentlich sollte in *node der Zeiger auf die erste Child Node von stone_liste()\node landen.
und ich schon wider, aber das erstellen eines Tutorial. Bringt eine menge dinge zutage. die ich nicht verstehe.
childs.l = IrrGetNodeChildCount(stone_liste()\node)
If childs.l>0
*node.l=irrgetnodechildat(stone_liste()\node,0)
EndIf
Gibt immer einen Memory fehler an Adresse 1
Eigentlich sollte in *node der Zeiger auf die erste Child Node von stone_liste()\node landen.
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler

- tft
- Beiträge: 650
- Registriert: 08.09.2004 20:18
- Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
- Wohnort: Dachsen
- Kontaktdaten:
Hallo ..
Ja ... das macht echt arbeit. Ich möchte ja weiterkommen. Daher werde ich nach einer anderen lösung suchen bis das behoben ist.
Ja ... das macht echt arbeit. Ich möchte ja weiterkommen. Daher werde ich nach einer anderen lösung suchen bis das behoben ist.
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler

Manchmal muss man etwas Zeit investieren.
Hab heute mal ausführlich bissl mit rumprobiert, alle examples ausgetestet
(einige funktionierten nicht, 1.05 beta) und überlege ernsthaft
da nun ja statische lib angesagt ist mein projekt evtl. umzustellen, da mir enorm Möglichkeiten geboten wären.
Kurze Frage dazu:
1)Bisher habe ich meistens fast auschliesslich PB-Befehle genutzt und möchte die Plattformunabhängigkeit evtl. waren.Wie weit ist denn denn plattformübergreifend der wrapper gediegen ?
(OpenGL wird wohl überall funktionieren)
2)Das projekt worum es sich bei mir dreht ist in einer früheren version auch
hier downloadbar .
Oft hab ich einfach nur einfach bewegte objekte (buttons).Kann man sowas einfach als objekt (Mesh) erstellen und benutzen ?
(Also drehen, zoomen, transparent einstellen ).Bisher mache ich das über Sprite3D.
3). Kann man andere fremde Fenster (allerdings selber erstellt) einblenden ? (siehe TV-Abschnitt)
4)Da 3d, und irrlicht selbst für mich noch etwas ungewohnt ist, wo findet man die beste Doku ? Ich möchte gerne erfahren was die Irrklang kann, inwieweit GUI-Elemente implementiert sind.
5) Ich bin einfach begeistert über soviel gute Arbeit.
Hab heute mal ausführlich bissl mit rumprobiert, alle examples ausgetestet
(einige funktionierten nicht, 1.05 beta) und überlege ernsthaft
da nun ja statische lib angesagt ist mein projekt evtl. umzustellen, da mir enorm Möglichkeiten geboten wären.
Kurze Frage dazu:
1)Bisher habe ich meistens fast auschliesslich PB-Befehle genutzt und möchte die Plattformunabhängigkeit evtl. waren.Wie weit ist denn denn plattformübergreifend der wrapper gediegen ?
(OpenGL wird wohl überall funktionieren)
2)Das projekt worum es sich bei mir dreht ist in einer früheren version auch
hier downloadbar .
Oft hab ich einfach nur einfach bewegte objekte (buttons).Kann man sowas einfach als objekt (Mesh) erstellen und benutzen ?
(Also drehen, zoomen, transparent einstellen ).Bisher mache ich das über Sprite3D.
3). Kann man andere fremde Fenster (allerdings selber erstellt) einblenden ? (siehe TV-Abschnitt)
4)Da 3d, und irrlicht selbst für mich noch etwas ungewohnt ist, wo findet man die beste Doku ? Ich möchte gerne erfahren was die Irrklang kann, inwieweit GUI-Elemente implementiert sind.
5) Ich bin einfach begeistert über soviel gute Arbeit.
Rings hat geschrieben:ziert sich nich beim zitieren
- tft
- Beiträge: 650
- Registriert: 08.09.2004 20:18
- Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
- Wohnort: Dachsen
- Kontaktdaten:
Hallo ...
Um mein Tut weiterzubringen wollte ich etwas Sound hinzufügen.
Aber nun habe ich erhebliche Schwierigkeit. Und ich fürchte das liegt an meinem MultiCore. Folgender Simpler Code geht garnicht.
Eigentlich sollte er nur auf einen Tastendruck warten. Aber das ganze schmiert einfach total ab.
Um mein Tut weiterzubringen wollte ich etwas Sound hinzufügen.
Aber nun habe ich erhebliche Schwierigkeit. Und ich fürchte das liegt an meinem MultiCore. Folgender Simpler Code geht garnicht.
Code: Alles auswählen
XIncludeFile #PB_Compiler_Home + "Includes\IrrlichtWrapper_Include.pbi"
If IrrStartEx(#IRR_EDT_DIRECT3D9,200, 200,#False, #False,#False, 32, #True, #False,#False,#Null)
Repeat
While IrrKeyEventAvailable()
*KeyEvent.irr_key_event = IrrReadKeyEvent()
Select *KeyEvent\key
Case #IRR_KEY_ESCAPE
en=1
EndSelect
Wend
IrrBeginScene(0, 0, 55 )
IrrDrawScene()
IrrEndScene()
Delay(100)
Debug "1"
Until en>0
IrrStop()
EndIf
End
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler

- tft
- Beiträge: 650
- Registriert: 08.09.2004 20:18
- Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
- Wohnort: Dachsen
- Kontaktdaten:
Hallo ...
und dann gleich nochetwas .... zum Thema Sound. IrrKlangPlaySound3D() gibt keinen Handler zurück.
und dann gleich nochetwas .... zum Thema Sound. IrrKlangPlaySound3D() gibt keinen Handler zurück.
Code: Alles auswählen
;
; -------------------------------------------------------------------------------
;
; PureBasic - Irrlicht
;
; Von 0 auf 100 (c) 2008 - TFT
;
; IrrKlangTest
;
; -------------------------------------------------------------------------------
;
; Um die Schwierigkeiten mit Irrlicht zu umgehen. Werde ich mich nun an die
; funktionierende Vorlage von Thalius halten. Auch wenn ich nicht nachvollziehen
; kann warum das eine oder ander nicht functioniert. Die Parts ab 101 sind so
; umgestalt das die Grundstruckture eingehalten wird.
;
;- Includes
XIncludeFile "Irr3DRequester_mod.pb"
;- Defines
; = System =
; Globals
Global Quit.l = #False
Global MouseX.l,MouseY.l,MouseSpeedX.l,MouseSpeedY.l
Global LeftMouseBottonHit.l,RigtMouseBottonHit.l,LeftMouseBottonDown.l,RigtMouseBottonDown.l
Global BottonHitLMB.l,BottonHitRMB.l
; Locals
*MyEvent = 0
x.f=0:y.f=0:z.f=0
irr_fps.l
;= IrrKlang =
Global *music_soundsource.l = #Null ; Pointer to a SoundSource
Global *fx_soundsource.l = #Null ; Pointer to a SoundEffectSource
Global *music_sound.l = #Null ; Pointer to a Sound
Global *fx_sound.l = #Null ; Pointer to a SoundEffect
;= Irrlicht =
; Camera / Action
Global *camera.irr_camera
; Nodes
Global *cube.irr_node
; Textures
Global *CubeTexture.irr_texture
; Animator
Global *irb.irr_animator
; Media
Global *BitmapFont
;- Functions
Procedure InitScene()
;- Init Camera
*camera = IrrAddCamera(0,0,0,0,0,1)
If *camera
IrrSetCameraClipDistance(*camera,100) ; We set this to 10 to save some extra cpu, since our Scene is very small
IrrSetCameraNearValue(*camera,0.1)
Else
ProcedureReturn #False
EndIf
;- Get Media
*BitmapFont = IrrGetFont( "bitmapfont.bmp" )
If Not *BitmapFont
ProcedureReturn #False
EndIf
;- Create Cube
*cube=IrrAddCubeSceneNode(2)
If Not *cube
ProcedureReturn #False
EndIf
*CubeTexture = IrrGetTexture( "test.bmp" )
If Not *CubeTexture
ProcedureReturn #False
EndIf
IrrSetNodePosition(*cube,0,0,0)
IrrSetNodeMaterialFlag( *cube, #IRR_EMF_LIGHTING, #IRR_Off )
IrrSetNodeMaterialTexture( *cube, *CubeTexture, 0 )
IrrSetNodeMaterialFlag( *cube, #IRR_EMF_BACK_FACE_CULLING, #IRR_OFF)
IrrSetNodeMaterialType( *cube, #IRR_EMT_TRANSPARENT_ADD_COLOR)
*irb.irr_animator = IrrAddFlyCircleAnimator(*cube, 0,0,0,10,0.001)
;- Load Sound
*fx_soundsource = IrrKlangAddSound("explosion.wav")
If Not *fx_soundsource
ProcedureReturn #False
EndIf
;IrrKlangSSSetDefaultMaxDistance(*fx_soundsource,40.0)
;-
ProcedureReturn #True ; Everything's fine !
EndProcedure
ProcedureC _My_Events(*event.SEvent)
Protected key.l,mouse.l
If *event\EventType = #IRR_EET_KEY_INPUT_EVENT
key.l = *event\KeyEvent\key
Select key
Case #IRR_KEY_ESCAPE ; -> Escape Quits
If *event\KeyEvent\PressedDown
If Quit.l = #False
Quit.l = #True
EndIf
EndIf
Case #IRR_KEY_F12
If *event\KeyEvent\PressedDown
IrrStop()
If Irr3DRequester(#IRR3DREQ_REQUESTER)
IrrSetWindowCaption("PureBasic - Irrlicht > Von 0 auf 100 (c) 2008 - TFT")
If InitScene()
*MyEvent = IrrCreateEventReceiver(@_My_Events())
IrrSetEventReceiver(*MyEvent)
Else
MessageRequester("ERROR!","Unable to inizialise Scene")
If Quit.l = #False
Quit.l = #True
EndIf
EndIf
Else
MessageRequester("ERROR!","Unable to open Irr3DRequester .")
If Quit.l = #False
Quit.l = #True
EndIf
EndIf
EndIf
EndSelect
ElseIf *event\EventType = #IRR_EET_MOUSE_INPUT_EVENT
mouse.l = *event\MouseEvent\event
Select mouse
Case #IRR_EMIE_LMOUSE_PRESSED_DOWN
LeftMouseBottonDown.l=1
Case #IRR_EMIE_RMOUSE_PRESSED_DOWN
RigtMouseBottonDown.l=1
Case #IRR_EMIE_MMOUSE_PRESSED_DOWN
Case #IRR_EMIE_LMOUSE_LEFT_UP
LeftMouseBottonDown.l=0
Case #IRR_EMIE_RMOUSE_LEFT_UP
RigtMouseBottonDown.l=0
Case #IRR_EMIE_MMOUSE_LEFT_UP
Case #IRR_EMIE_MOUSE_MOVED
MouseSpeedX.l=MouseX.l-*event\MouseEvent\x
MouseSpeedY.l=MouseY.l-*event\MouseEvent\y
MouseX.l = *event\MouseEvent\x
MouseY.l = *event\MouseEvent\y
Case #IRR_EMIE_MOUSE_WHEEL
EndSelect
EndIf
ProcedureReturn #False
EndProcedure
Procedure BottonHitControll()
LeftMouseBottonHit=0
If LeftMouseBottonDown.l=1 And BottonHitLMB=0
BottonHitLMB=1
LeftMouseBottonHit=1
ElseIf LeftMouseBottonDown.l=0
BottonHitLMB=0
EndIf
RigtMouseBottonHit=0
If RigtMouseBottonDown.l=1 And BottonHitRMB=0
BottonHitRMB=1
RigtMouseBottonHit=1
ElseIf RigtMouseBottonDown.l=0
BottonHitRMB=0
EndIf
EndProcedure
If Irr3DRequester(#IRR3DREQ_SKIP)
IrrSetWindowCaption("PureBasic - Irrlicht > Von 0 auf 100 (c) 2008 - TFT")
If IrrKlangStart()
If InitScene()
*MyEvent = IrrCreateEventReceiver(@_My_Events())
IrrSetEventReceiver(*MyEvent)
posOnCircle.f = 0;
radius.f = 5;
;- Mainloop
While IrrRunning() And Quit = #False
BottonHitControll()
IrrGetNodePosition(*cube,@x.f,@y.f,@z.f)
; After We know the positions, We need To let irrKlang know about the
; listener position (always position (0,0,0), facing forward in This example)
; And let irrKlang know about our calculated 3D music Position
IrrKlangListenerPosition(0,0,0, 0,0,1, 0,0,0, 0,0,0)
If LeftMouseBottonHit=1
*fx_sound.l=IrrKlangPlay3D(*fx_soundsource, x.f,y.f,z.f , #False, #False, #False)
If *fx_sound <> #Null
Debug "PlaySouns"
IrrKlangSoundSetMinDistance(*fx_sound, 0.1)
IrrKlangSoundSetMaxDistance(*fx_sound, 50)
Else
Debug "IrrKlangPlay3D() Return 0"
EndIf
EndIf
irr_fps.l=IrrGetFPS()
IrrBeginScene(0, 0, 55 )
IrrDrawScene()
Irr2DFontDraw ( *BitmapFont,"Position = "+Str(irr_fps.l),4,4,0,0)
IrrEndScene()
Delay(10)
Wend
Else
MessageRequester("ERROR!","Unable to inizialise Scene .")
EndIf
Else
MessageRequester("ERROR!","Unable to inizialise IrrKlang .")
EndIf
EndIf
IrrStop()
End
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler

Ganz einfach du überprüfst nicht ob Irrlicht läuft bevor du versuchst einen Event abzufragen - des geht natürlich ned...tft hat geschrieben:Hallo ...
Um mein Tut weiterzubringen wollte ich etwas Sound hinzufügen.
Aber nun habe ich erhebliche Schwierigkeit. Und ich fürchte das liegt an meinem MultiCore. Folgender Simpler Code geht garnicht.
Eigentlich sollte er nur auf einen Tastendruck warten. Aber das ganze schmiert einfach total ab.

Hier die kommentierte, korrigierte Version die tut was man ihr sagt

Code: Alles auswählen
XIncludeFile #PB_Compiler_Home + "Includes\IrrlichtWrapper_Include.pbi"
Define *KeyEvent.irr_key_event
; IrrStartEx: *------ FLAG to TRUE - Capture Events.
; This flags Event processing on and off - if #False no events will be processed and therefor
; No keyevent is cast - This allows the programmer the Freedom to save some extra cpu time again
; when no events are needed.
If IrrStartEx(#IRR_EDT_DIRECT3D9,200, 200,#False, #False,#True, 32, #True, #False,#False,#Null)
; While Irrlicht is running...
While IrrRunning() And Quit = #False
; clear the canvas to dark blue
IrrBeginScene(0, 0, 55 )
IrrDrawScene() ; draw the scene
; draw the Graphical User Interface on top of the scene ( if there is one ;)
; IrrDrawGUI()
; end drawing the scene/flip and display it
IrrEndScene()
; we check if a key event is available for the next frame ...
If IrrKeyEventAvailable()
*KeyEvent = IrrReadKeyEvent()
; ...and if teh button is held down ...
If *KeyEvent\direction = #IRR_KEY_DOWN
; arbitrate the key...
Select *KeyEvent\key
Case #IRR_KEY_ESCAPE
MessageRequester("Yatta!","Escape has been pressed! i will now cleanup.")
Quit = #True
EndSelect
EndIf
EndIf
Delay(100) ; delay 100 whoa this is alot !
Wend
; Stop Irrlicht Enviroment and free Ressources.
IrrStop()
EndIf
End
Thalius
"...smoking hash-tables until until you run out of memory." :P
tft hat geschrieben:Hallo ...
und dann gleich nochetwas .... zum Thema Sound. IrrKlangPlaySound3D() gibt keinen Handler zurück.
EDIT: Track'ing auf #True setzen damit man handle erhält. Ansonsten wird keine Rückgabe gemacht und CPU zeit gespart.
Hier korriegiert, kommentiert:
Code: Alles auswählen
;
; -------------------------------------------------------------------------------
;
; PureBasic - Irrlicht
;
; Von 0 auf 100 (c) 2008 - TFT
;
; IrrKlangTest
;
; -------------------------------------------------------------------------------
;
; Um die Schwierigkeiten mit Irrlicht zu umgehen. Werde ich mich nun an die
; funktionierende Vorlage von Thalius halten. Auch wenn ich nicht nachvollziehen
; kann warum das eine oder ander nicht functioniert. Die Parts ab 101 sind so
; umgestalt das die Grundstruckture eingehalten wird.
;
;- Includes
XIncludeFile "Irr3DRequester.pb"
;- Defines
; = System =
; Globals
Global Quit.l = #False
Global MouseX.l,MouseY.l,MouseSpeedX.l,MouseSpeedY.l
Global LeftMouseBottonHit.l,RigtMouseBottonHit.l,LeftMouseBottonDown.l,RigtMouseBottonDown.l
Global BottonHitLMB.l,BottonHitRMB.l
; Locals
*MyEvent = 0
x.f=0:y.f=0:z.f=0
irr_fps.l
;= IrrKlang =
Global *music_soundsource.l = #Null ; Pointer to a SoundSource
Global *fx_soundsource.l = #Null ; Pointer to a SoundEffectSource
Global *music_sound.l = #Null ; Pointer to a Sound
Global *fx_sound.l = #Null ; Pointer to a SoundEffect
;= Irrlicht =
; Camera / Action
Global *camera.irr_camera
; Nodes
Global *cube.irr_node
; Textures
Global *CubeTexture.irr_texture
; Animator
Global *irb.irr_animator
; Media
Global *BitmapFont
;- Functions
Procedure InitScene()
;- Init Camera
*camera = IrrAddCamera(0,0,0,0,0,1)
If *camera
IrrSetCameraClipDistance(*camera,100) ; We set this to 10 to save some extra cpu, since our Scene is very small
IrrSetCameraNearValue(*camera,0.1)
Else
ProcedureReturn #False
EndIf
;- Get Media
*BitmapFont = IrrGetFont( "media/bitmapfont.bmp" )
If Not *BitmapFont
ProcedureReturn #False
EndIf
;- Create Cube
*cube=IrrAddCubeSceneNode(2)
If Not *cube
ProcedureReturn #False
EndIf
*CubeTexture = IrrGetTexture( "media/fire.bmp" )
If Not *CubeTexture
ProcedureReturn #False
EndIf
IrrSetNodePosition(*cube,0,0,0)
IrrSetNodeMaterialFlag( *cube, #IRR_EMF_LIGHTING, #IRR_OFF )
IrrSetNodeMaterialTexture( *cube, *CubeTexture, 0 )
IrrSetNodeMaterialFlag( *cube, #IRR_EMF_BACK_FACE_CULLING, #IRR_OFF)
IrrSetNodeMaterialType( *cube, #IRR_EMT_TRANSPARENT_ADD_COLOR)
*irb = IrrAddFlyCircleAnimator(*cube, 0,0,0,10,0.001)
;- Load Sound
*fx_soundsource = IrrKlangAddSound("media/explosion.wav")
If Not *fx_soundsource And *mx_soundsource
ProcedureReturn #False
EndIf
;IrrKlangSSSetDefaultMaxDistance(*fx_soundsource,40.0)
;-
ProcedureReturn #True ; Everything's fine !
EndProcedure
ProcedureC _My_Events(*event.SEvent)
Protected key.l,mouse.l
If *event\EventType = #IRR_EET_KEY_INPUT_EVENT
key.l = *event\KeyEvent\key
Select key
Case #IRR_KEY_ESCAPE ; -> Escape Quits
If *event\KeyEvent\PressedDown
If Quit.l = #False
Quit.l = #True
EndIf
EndIf
Case #IRR_KEY_F12
If *event\KeyEvent\PressedDown
; PLease recheck this - you try to STOP Irrlicht here then reuse its functions
; See Console Window for error and crash at end.
;
; Sidenote: a Eventreceiver has to be created ocne - as every ressource in irrlicht
; It is cashed and doesent need to be loaded again until you free it.
;
; This allows fast levelchanges or dynamic model switching without killing your io or harddrive.
;
; So effectively Irrlicht does NOT need a restart everytime the scene changes. In
; fact it is alot more efficient to just reset the scene.
; *uncommented evil code*
; IrrStop()
; If Irr3DRequester()
; IrrSetWindowCaption("PureBasic - Irrlicht > Von 0 auf 100 (c) 2008 - TFT")
; If InitScene()
; *MyEvent = IrrCreateEventReceiver(@_My_Events())
; IrrSetEventReceiver(*MyEvent)
; Else
; MessageRequester("ERROR!","Unable to inizialise Scene")
; If Quit.l = #False
; Quit.l = #True
; EndIf
; EndIf
; Else
; MessageRequester("ERROR!","Unable to open Irr3DRequester .")
; If Quit.l = #False
; Quit.l = #True
; EndIf
; EndIf
; *end uncomment*
; Stop animator
IrrRemoveAnimator(*cube, *irb)
; Reset Scene
IrrSetNodePosition(*cube,0,0,0)
; and start animator again... uncommented you clearly hear the soudn coming from around you as the box
; is inside our listener ( or surrounds it )
;*irb = IrrAddFlyCircleAnimator(*cube, 0,0,0,10,0.001) <-- uncomment me
EndIf
EndSelect
ElseIf *event\EventType = #IRR_EET_MOUSE_INPUT_EVENT
mouse.l = *event\MouseEvent\event
Select mouse
Case #IRR_EMIE_LMOUSE_PRESSED_DOWN
LeftMouseBottonDown.l=1
Case #IRR_EMIE_RMOUSE_PRESSED_DOWN
RigtMouseBottonDown.l=1
Case #IRR_EMIE_MMOUSE_PRESSED_DOWN
Case #IRR_EMIE_LMOUSE_LEFT_UP
LeftMouseBottonDown.l=0
Case #IRR_EMIE_RMOUSE_LEFT_UP
RigtMouseBottonDown.l=0
Case #IRR_EMIE_MMOUSE_LEFT_UP
Case #IRR_EMIE_MOUSE_MOVED
MouseSpeedX.l=MouseX.l-*event\MouseEvent\x
MouseSpeedY.l=MouseY.l-*event\MouseEvent\y
MouseX.l = *event\MouseEvent\x
MouseY.l = *event\MouseEvent\y
Case #IRR_EMIE_MOUSE_WHEEL
EndSelect
EndIf
ProcedureReturn #False
EndProcedure
Procedure BottonHitControll()
LeftMouseBottonHit=0
If LeftMouseBottonDown.l=1 And BottonHitLMB=0
BottonHitLMB=1
LeftMouseBottonHit=1
ElseIf LeftMouseBottonDown.l=0
BottonHitLMB=0
EndIf
RigtMouseBottonHit=0
If RigtMouseBottonDown.l=1 And BottonHitRMB=0
BottonHitRMB=1
RigtMouseBottonHit=1
ElseIf RigtMouseBottonDown.l=0
BottonHitRMB=0
EndIf
EndProcedure
If Irr3DRequester()
IrrSetWindowCaption("PureBasic - Irrlicht > Von 0 auf 100 (c) 2008 - TFT")
If IrrKlangStart()
If InitScene()
*MyEvent = IrrCreateEventReceiver(@_My_Events())
IrrSetEventReceiver(*MyEvent)
posOnCircle.f = 0;
radius.f = 5;
;- Mainloop
While IrrRunning() And Quit = #False
BottonHitControll()
IrrGetNodePosition(*cube,@x.f,@y.f,@z.f)
; After We know the positions, We need To let irrKlang know about the
; listener position (always position (0,0,0), facing forward in This example)
; And let irrKlang know about our calculated 3D music Position
IrrKlangListenerPosition(0,0,0, 0,0,1, 0,0,0, 0,0,0)
If LeftMouseBottonHit=1
; Play functions have no return value as they only play ;)
IrrKlangPlay3D(*fx_soundsource, x.f,y.f,z.f , #False, #False, #False)
EndIf
irr_fps.l=IrrGetFPS()
IrrBeginScene(0, 0, 55 )
IrrDrawScene()
Irr2DFontDraw ( *BitmapFont,"Position = "+Str(irr_fps.l),4,4,0,0)
IrrEndScene()
Delay(1)
Wend
Else
MessageRequester("ERROR!","Unable to inizialise Scene .")
EndIf
Else
MessageRequester("ERROR!","Unable to inizialise IrrKlang .")
EndIf
EndIf
IrrKlangStop() ; clenaup irrklang
IrrStop() ; clenaup irrlicht
End

Thalius
Zuletzt geändert von Thalius am 08.01.2008 02:17, insgesamt 1-mal geändert.
"...smoking hash-tables until until you run out of memory." :P
Derzeit sind mal alle Grundfunktionen unter Linux lauffähig ( 1.05 ) An den extras nage ich noch.Rings hat geschrieben: Kurze Frage dazu:
1)Bisher habe ich meistens fast auschliesslich PB-Befehle genutzt und möchte die Plattformunabhängigkeit evtl. waren.Wie weit ist denn denn plattformübergreifend der wrapper gediegen ?
(OpenGL wird wohl überall funktionieren)

Manual ist zu 90% fertig ( Newton , Stlt und paar Kleinigkeiten fehlen noch )
Also - hab ich noch nicht getestet aber Irrlicht sowie des neue PB DX9 sollten kompatibel sein ( Sprich du kannst PB Spites ( anstatt irrlicht Sprites ) direkt über Irrlicht Szenen rendern lassen ( DirectX only ). Dazu musst du ihm den hook mitgeben ( hat glaub ne funktion in der Include lib - hierzu sind noch beispiele geplant ) - auch die movie funktionen sollten dadurch funktionieren. Als 2 methode wäre direkt zb ffmpg anzusprechen und auf eine Textur zu rendern ( das ganze dann zb auf nem 3D objekt darzustellen2)Das projekt worum es sich bei mir dreht ist in einer früheren version auch
hier downloadbar .
Oft hab ich einfach nur einfach bewegte objekte (buttons).Kann man sowas einfach als objekt (Mesh) erstellen und benutzen ?
(Also drehen, zoomen, transparent einstellen ).Bisher mache ich das über Sprite3D.

Mehr Sprite und Partikelfunktionen folgen ebenfalls sowie funktionen für direkte Bild/Texturmanipulation - Imo geht das nur über PB ( Irr2PBImage() ).
In einem Windowed Screen sollte das gehen. Irrlicht lässt sich in jedes Gadget "inkorporieren" ( Siehe Beispiel 24 ). Evtl. kommt später noch ein 3D HTML Renderer rein in dem sich webseiten dann perspektivisch im raum anzeigen lassen ( auf surfaces ) ...3). Kann man andere fremde Fenster (allerdings selber erstellt) einblenden ? (siehe TV-Abschnitt)

GUI und Imagegui sind drin wobei in der Version auf purearea net ist da noch ein kleiner bug im imagui ( eigentlich in der header definition dessen ). Aber ich schick dir auf wunsch n fix ( das noch n bissl gehen wir dbis ich heir durch bin ). Eine einfache doku ist dabei ( die komplette ist bald feddich .. endlich .. ). Falls du hartgesotten bist und was in der momentanen docu ned findest:4)Da 3d, und irrlicht selbst für mich noch etwas ungewohnt ist, wo findet man die beste Doku ? Ich möchte gerne erfahren was die Irrklang kann, inwieweit GUI-Elemente implementiert sind.
http://irrlicht.sourceforge.net/docu/
Irrklang features:
http://www.ambiera.com/irrklang/index.html
aktuell ist version 1.0 bei uns drinne aber ne neue zu kompiliern sollte keine hexerei sein.
Ansonsten schiess los wenn Fragen hast


Auch das include file solltest du dir vorher mal genau ansehen


Danke! Aber ist noch bissl entfernt von Komplett - aber bin fast durch. Werds auch Mike ausrichten , der freut sich sicher über etwas Motivation5) Ich bin einfach begeistert über soviel gute Arbeit.


Grüssle, Thalius

"...smoking hash-tables until until you run out of memory." :P
Nachtrag, Hier eine komplettere Version des autocomplete udn command index für jaPBe:
http://www.anwesend.ch/meckardt/irrlich ... rapper.txt
Einfach ins jaPBe/Definitions/ hauen - jaPBe neustarten udn voila.
Thalius
http://www.anwesend.ch/meckardt/irrlich ... rapper.txt
Einfach ins jaPBe/Definitions/ hauen - jaPBe neustarten udn voila.
Thalius
"...smoking hash-tables until until you run out of memory." :P