Ogre Normal-Partikel und Script-Partikel

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
PornosDias vanBoston
Beiträge: 9
Registriert: 18.11.2019 20:12

Ogre Normal-Partikel und Script-Partikel

Beitrag von PornosDias vanBoston »

Hallo, leeve Leuts.

Da ich leider von gutem MP3D, auf "komische Fehler produzierendes" Ogre umsteigen muss,
habe ich diesem Ogre mal ein paar Pickel ausgedrückt und noch ein paar Slider dazu gesetzt, um mal zu testen,
ob ich mit den Partikeln etwas anfangen kann. Jo, geht so.

Es kann vorkommen, dass man das Prog. 2 oder 3 mal starten muss. ( als Ogre-Jungfrau möge man mir verzeihen )
Ist auf der rechten Seite der Sprühstrahl zu sehen, war der Start erfolgreich. ;)

Möchte man "Debug" benutzen, wird man von einem seit 20 Jahren eingebauten, und nie behobenen Fehler belästigt,
der besagt, dass man keine negativen Slider-Werte benutzen darf.
Warum das alles ohne "Debug" funktioniert, wird wohl immer ein Rätsel bleiben.

Da ich der Meinung bin, dass Grafiken auch bewegt werden sollten, anstatt dass sie nur herumlungern, bewegen sie sich nach Musik.
Dazu braucht man "FModEx.pbi" vom "Grillmeister".
-------------------------------------
"FModEX.pbi" findet man hier im Forum unter "fmodex include" oder "viewtopic.php?f=8&t=18082&hilit=fmod+include+file"
Bei der "FModEX.pbi" erscheint mehrmals: "Konstante nicht gefunden". Das Prog funktioniert auch ohne die - nicht gefundenen -.
--------------------------------------


Code: Alles auswählen


;##############################################################################################################

;########################################### Normal Partikel #####################################################

;##############################################################################################################




;Pure 5.73 (32)  Win

;Betriebsanleitung:  

;Listing---->     in Examples\3D 

;-------Slider - Button-------

;Signal för all:-----> Signal erhöhen,  bei schwachem Sound, alten Kassettenaufnahmen etc. ( kein Volume )

;Prefs:-----> Voreinstellung för all de Slider 

;Ball VU:-----> Ein bescheidenes " VU-Meter " für die zwei Bälle.  Schnell nach vorne, langsam zurück.

;SpeedFactor -----> für Spray rechts

;Die Slider hinter dem grünen Balken sind nur für die Grafik in der Mitte.

;Warnung:
;Manche Slider haben negative Werte. Wenn man Debug einschaltet, springt der Käfer. ( 0 - 10000 )

;#######################

;     Form-Designer      

Enumeration FormWindow
  #Window_1
EndEnumeration

Enumeration FormGadget
  #Slider_PartikelSizeX
  #Slider_PartikelSizeY
  #Text_0
  #Text_1
  #Text_2
  #Text_PartikelSizeX
  #Text_PartikelSizeY
  #Slider_EmissionPartikel
  #Text_4
  #Text_EmissionPartikel
  #Text_5
  #Text_6
  #Slider_TimeMinimal
  #Slider_TimeMaximal
  #Text_TimeMinimal
  #Text_TimeMaximal
  #Text_7
  #Slider_EmitterDirectionX
  #Slider_EmitterDirectionY
  #Slider_EmitterDirectionZ
  #Text_16
  #Text_9
  #Text_10
  #Text_EmitterDirectionX
  #Text_EmitterDirectionY
  #Text_EmitterDirectionZ
  #Text_11
  #Slider_VeloMinimum
  #Text_12
  #Slider_VeloMaximum
  #Text_VeloMinimum
  #Text_VeloMaximum
  #Text_13
  #Slider_SpeedFactor
  #Text_SpeedFactor
  #Text_14
  #Slider_AccelerationX
  #Text_AccelerationX
  #Text_15
  #Slider_MoveEmitterX
  #Slider_MoveEmitterY
  #Slider_MoveEmitterZ
  #Text_17
  #Text_18
  #Text_MoveEmitterX
  #Text_MoveEmitterY
  #Text_MoveEmitterZ
  #Text_8
  #Text_19
  #Slider_EmitterAngle
  #Text_EmitterAngle
  #Slider_AccelerationY
  #Slider_AccelerationZ
  #Text_AccelerationY
  #Text_AccelerationZ
  #Text_20
  #Text_21
  #Text_22
  #Slider_ColorStart
  #Slider_ColorEnd
  #Text_23
  #Text_ColorStart
  #Text_ColorEnd
  #Text_24
  #Slider_ColorFaderR
  #Slider_ColorFaderG
  #Slider_ColorFaderB
  #Slider_ColorFaderAlpha
  #Text_ColorFaderR
  #Text_ColorFaderG
  #Text_ColorFaderB
  #Text_ColorFaderAlpha
  #Text_26
  #Text_27
  #Text_28
  #Text_29
  #Text_30
  #Text_31
  #Button_Musik
  #Button_Ende
  #Button_Start
  #Button_Pause
  #Slider_Signal
  #Text_4_1
  #Slider_EmissionEmitter
  #Text_EmissionEmitter
  #Text_13_2
  #Button_Prefs
  #Text_Signal
  #Text__40
  #Text__50
  #Slider_BallVU
  #Text_BallVU
  #Text__51
  #Slider_Spray
  #Text_Spray
  #Text__52
  #Text_40
  #Song_Name
EndEnumeration

Enumeration FormFont
  #Font_Window_1_0
  #Font_Window_1_1
EndEnumeration

LoadFont(#Font_Window_1_0,"Arial", 12, #PB_Font_Bold)
LoadFont(#Font_Window_1_1,"Arial", 10)


Procedure OpenWindow_1(x = 0, y = 0, width = 1920, height = 1080)
  OpenWindow(#Window_1, x, y, width, height, "Normal Partikel Test", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_WindowCentered)
  SetWindowColor(#Window_1, RGB(192,192,192))
  ScrollBarGadget(#Slider_PartikelSizeX, 465, 35, 150, 20, 0, 100, 0)
  ScrollBarGadget(#Slider_PartikelSizeY, 465, 60, 150, 20, 0, 100, 0)
  TextGadget(#Text_0, 435, 10, 220, 20, "Partikel Size", #PB_Text_Center)
  SetGadgetFont(#Text_0, FontID(#Font_Window_1_0))
  TextGadget(#Text_1, 435, 35, 25, 20, "X", #PB_Text_Center)
  SetGadgetFont(#Text_1, FontID(#Font_Window_1_0))
  TextGadget(#Text_2, 435, 60, 25, 20, "Y", #PB_Text_Center)
  SetGadgetFont(#Text_2, FontID(#Font_Window_1_0))
  TextGadget(#Text_PartikelSizeX, 615, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_PartikelSizeX, FontID(#Font_Window_1_0))
  TextGadget(#Text_PartikelSizeY, 615, 60, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_PartikelSizeY, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_EmissionPartikel, 435, 115, 155, 20, 10, 10000, 0)
  TextGadget(#Text_4, 435, 90, 220, 20, "Emission Partikel ", #PB_Text_Center)
  SetGadgetFont(#Text_4, FontID(#Font_Window_1_0))
  TextGadget(#Text_EmissionPartikel, 590, 115, 65, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmissionPartikel, FontID(#Font_Window_1_0))
  TextGadget(#Text_5, 985, 150, 190, 20, "Time Minimal  * 0.1", #PB_Text_Center)
  SetGadgetFont(#Text_5, FontID(#Font_Window_1_0))
  TextGadget(#Text_6, 1235, 150, 190, 20, "Time Maximal  * 0.1", #PB_Text_Center)
  SetGadgetFont(#Text_6, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_TimeMinimal, 985, 175, 150, 20, 1, 100, 0)
  ScrollBarGadget(#Slider_TimeMaximal, 1235, 175, 150, 20, 1, 100, 0)
  TextGadget(#Text_TimeMinimal, 1135, 175, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_TimeMinimal, FontID(#Font_Window_1_0))
  TextGadget(#Text_TimeMaximal, 1385, 175, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_TimeMaximal, FontID(#Font_Window_1_0))
  TextGadget(#Text_7, 1205, 10, 220, 20, "Emitter Direction  ", #PB_Text_Center)
  SetGadgetFont(#Text_7, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_EmitterDirectionX, 1235, 35, 150, 20, -100, 100, 0)
  ScrollBarGadget(#Slider_EmitterDirectionY, 1235, 60, 150, 20, -10, 10, 0)
  ScrollBarGadget(#Slider_EmitterDirectionZ, 1235, 85, 150, 20, -100, 100, 0)
  TextGadget(#Text_16, 1675, 35, 25, 20, "X", #PB_Text_Center)
  SetGadgetFont(#Text_16, FontID(#Font_Window_1_0))
  TextGadget(#Text_9, 1205, 60, 25, 20, "Y", #PB_Text_Center)
  SetGadgetFont(#Text_9, FontID(#Font_Window_1_0))
  TextGadget(#Text_10, 1205, 85, 25, 20, "Z", #PB_Text_Center)
  SetGadgetFont(#Text_10, FontID(#Font_Window_1_0))
  TextGadget(#Text_EmitterDirectionX, 1385, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmitterDirectionX, FontID(#Font_Window_1_0))
  TextGadget(#Text_EmitterDirectionY, 1385, 60, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmitterDirectionY, FontID(#Font_Window_1_0))
  TextGadget(#Text_EmitterDirectionZ, 1385, 85, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmitterDirectionZ, FontID(#Font_Window_1_0))
  TextGadget(#Text_11, 1455, 10, 190, 20, "Velocity Minimum", #PB_Text_Center)
  SetGadgetFont(#Text_11, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_VeloMinimum, 1455, 35, 150, 20, 2, 100, 0)
  TextGadget(#Text_12, 1455, 65, 190, 20, "Velocity Maximum", #PB_Text_Center)
  SetGadgetFont(#Text_12, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_VeloMaximum, 1455, 90, 150, 20, 0, 700, 0)
  TextGadget(#Text_VeloMinimum, 1605, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_VeloMinimum, FontID(#Font_Window_1_0))
  TextGadget(#Text_VeloMaximum, 1605, 90, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_VeloMaximum, FontID(#Font_Window_1_0))
  TextGadget(#Text_13, 1455, 150, 190, 20, "Backw.   - Stop -   Forw.", #PB_Text_Center)
  SetGadgetFont(#Text_13, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_SpeedFactor, 1455, 175, 150, 20, -10, 50, 0)
  TextGadget(#Text_SpeedFactor, 1605, 175, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_SpeedFactor, FontID(#Font_Window_1_0))
  TextGadget(#Text_14, 955, 10, 220, 20, "Acceleration  ( Wind )", #PB_Text_Center)
  SetGadgetFont(#Text_14, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_AccelerationX, 985, 35, 150, 20, -100, 100, 0)
  TextGadget(#Text_AccelerationX, 1135, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_AccelerationX, FontID(#Font_Window_1_0))
  TextGadget(#Text_15, 1675, 10, 220, 20, "Move Partikel Emitter", #PB_Text_Center)
  SetGadgetFont(#Text_15, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_MoveEmitterX, 1705, 35, 150, 20, -300, 300, 0)
  ScrollBarGadget(#Slider_MoveEmitterY, 1705, 60, 150, 20, -100, 100, 0)
  ScrollBarGadget(#Slider_MoveEmitterZ, 1705, 85, 150, 20, -300, 300, 0)
  TextGadget(#Text_17, 1675, 60, 25, 20, "Y", #PB_Text_Center)
  SetGadgetFont(#Text_17, FontID(#Font_Window_1_0))
  TextGadget(#Text_18, 1675, 85, 25, 20, "Z", #PB_Text_Center)
  SetGadgetFont(#Text_18, FontID(#Font_Window_1_0))
  TextGadget(#Text_MoveEmitterX, 1855, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_MoveEmitterX, FontID(#Font_Window_1_0))
  TextGadget(#Text_MoveEmitterY, 1855, 60, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_MoveEmitterY, FontID(#Font_Window_1_0))
  TextGadget(#Text_MoveEmitterZ, 1855, 85, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_MoveEmitterZ, FontID(#Font_Window_1_0))
  TextGadget(#Text_8, 1205, 35, 25, 20, "X", #PB_Text_Center)
  SetGadgetFont(#Text_8, FontID(#Font_Window_1_0))
  TextGadget(#Text_19, 1705, 150, 190, 20, "Emitter Angle", #PB_Text_Center)
  SetGadgetFont(#Text_19, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_EmitterAngle, 1705, 175, 150, 20, 0, 359, 0)
  TextGadget(#Text_EmitterAngle, 1855, 175, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmitterAngle, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_AccelerationY, 985, 60, 150, 20, -100, 100, 0)
  ScrollBarGadget(#Slider_AccelerationZ, 985, 85, 150, 20, -100, 100, 0)
  TextGadget(#Text_AccelerationY, 1135, 60, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_AccelerationY, FontID(#Font_Window_1_0))
  TextGadget(#Text_AccelerationZ, 1135, 85, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_AccelerationZ, FontID(#Font_Window_1_0))
  TextGadget(#Text_20, 955, 35, 25, 20, "X", #PB_Text_Center)
  SetGadgetFont(#Text_20, FontID(#Font_Window_1_0))
  TextGadget(#Text_21, 955, 60, 25, 20, "Y", #PB_Text_Center)
  SetGadgetFont(#Text_21, FontID(#Font_Window_1_0))
  TextGadget(#Text_22, 955, 85, 25, 20, "Z", #PB_Text_Center)
  SetGadgetFont(#Text_22, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_ColorStart, 735, 35, 150, 20, 0, 255, 0)
  DisableGadget(#Slider_ColorStart, 1)
  ScrollBarGadget(#Slider_ColorEnd, 735, 60, 150, 20, 0, 255, 0)
  DisableGadget(#Slider_ColorEnd, 1)
  TextGadget(#Text_23, 685, 10, 240, 20, "Color Range", #PB_Text_Center)
  SetGadgetFont(#Text_23, FontID(#Font_Window_1_0))
  TextGadget(#Text_ColorStart, 885, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorStart, FontID(#Font_Window_1_0))
  TextGadget(#Text_ColorEnd, 885, 60, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorEnd, FontID(#Font_Window_1_0))
  TextGadget(#Text_24, 685, 90, 240, 20, "Color Fader", #PB_Text_Center)
  SetGadgetFont(#Text_24, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_ColorFaderR, 735, 115, 150, 20, -100, 100, 0)
  DisableGadget(#Slider_ColorFaderR, 1)
  ScrollBarGadget(#Slider_ColorFaderG, 735, 140, 150, 20, -100, 100, 0)
  DisableGadget(#Slider_ColorFaderG, 1)
  ScrollBarGadget(#Slider_ColorFaderB, 735, 165, 150, 20, -255, 255, 0)
  DisableGadget(#Slider_ColorFaderB, 1)
  ScrollBarGadget(#Slider_ColorFaderAlpha, 735, 190, 150, 20, 0, 255, 0)
  DisableGadget(#Slider_ColorFaderAlpha, 1)
  TextGadget(#Text_ColorFaderR, 885, 115, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorFaderR, FontID(#Font_Window_1_0))
  TextGadget(#Text_ColorFaderG, 885, 140, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorFaderG, FontID(#Font_Window_1_0))
  TextGadget(#Text_ColorFaderB, 885, 165, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorFaderB, FontID(#Font_Window_1_0))
  TextGadget(#Text_ColorFaderAlpha, 885, 190, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorFaderAlpha, FontID(#Font_Window_1_0))
  TextGadget(#Text_26, 685, 35, 45, 20, "Start", #PB_Text_Center)
  SetGadgetFont(#Text_26, FontID(#Font_Window_1_0))
  TextGadget(#Text_27, 685, 60, 45, 20, "Ende", #PB_Text_Center)
  SetGadgetFont(#Text_27, FontID(#Font_Window_1_0))
  TextGadget(#Text_28, 685, 115, 45, 20, "R", #PB_Text_Center)
  SetGadgetFont(#Text_28, FontID(#Font_Window_1_0))
  TextGadget(#Text_29, 685, 140, 45, 20, "G", #PB_Text_Center)
  SetGadgetFont(#Text_29, FontID(#Font_Window_1_0))
  TextGadget(#Text_30, 685, 165, 45, 20, "B", #PB_Text_Center)
  SetGadgetFont(#Text_30, FontID(#Font_Window_1_0))
  TextGadget(#Text_31, 685, 190, 45, 20, "Alpha", #PB_Text_Center)
  SetGadgetFont(#Text_31, FontID(#Font_Window_1_0))
  ButtonGadget(#Button_Musik, 5, 5, 180, 30, "Lood de Musik ")
  SetGadgetFont(#Button_Musik, FontID(#Font_Window_1_0))
  ButtonGadget(#Button_Ende, 5, 180, 180, 35, "Ende   ( Esc )")
  SetGadgetFont(#Button_Ende, FontID(#Font_Window_1_0))
  ButtonGadget(#Button_Start, 5, 40, 80, 30, "Start ")
  SetGadgetFont(#Button_Start, FontID(#Font_Window_1_0))
  ButtonGadget(#Button_Pause, 105, 40, 80, 30, "Pause", #PB_Button_Toggle)
  SetGadgetFont(#Button_Pause, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_Signal, 5, 110, 140, 20, 1, 100, 0)
  TextGadget(#Text_4_1, 435, 145, 220, 20, "Emission Emitter", #PB_Text_Center)
  SetGadgetFont(#Text_4_1, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_EmissionEmitter, 435, 170, 155, 20, 1, 30, 0)
  DisableGadget(#Slider_EmissionEmitter, 1)
  TextGadget(#Text_EmissionEmitter, 590, 170, 65, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmissionEmitter, FontID(#Font_Window_1_0))
  TextGadget(#Text_13_2, 1455, 130, 190, 20, "Speed Factor  * 0.1", #PB_Text_Center)
  SetGadgetFont(#Text_13_2, FontID(#Font_Window_1_0))
  ButtonGadget(#Button_Prefs, 220, 180, 180, 35, "Preferents för all")
  SetGadgetFont(#Button_Prefs, FontID(#Font_Window_1_0))
  TextGadget(#Text_Signal, 145, 110, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_Signal, FontID(#Font_Window_1_0))
  TextGadget(#Text__40, 5, 80, 180, 20, "Signal för all", #PB_Text_Center)
  SetGadgetFont(#Text__40, FontID(#Font_Window_1_0))
  TextGadget(#Text__50, 220, 10, 180, 20, "Ball  VU", #PB_Text_Center)
  SetGadgetFont(#Text__50, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_BallVU, 220, 35, 140, 20, 1, 200, 0)
  TextGadget(#Text_BallVU, 360, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_BallVU, FontID(#Font_Window_1_0))
  TextGadget(#Text__51, 220, 65, 180, 20, "Speed Factor  * 0.1 ", #PB_Text_Center)
  SetGadgetFont(#Text__51, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_Spray, 220, 110, 140, 20, -5, 40, 0)
  TextGadget(#Text_Spray, 360, 110, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_Spray, FontID(#Font_Window_1_0))
  TextGadget(#Text__52, 220, 85, 180, 20, "Spray rechts", #PB_Text_Center)
  SetGadgetFont(#Text__52, FontID(#Font_Window_1_0))
  TextGadget(#Text_40, 410, 10, 25, 215, "->", #PB_Text_Center)
  SetGadgetColor(#Text_40, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_40, #PB_Gadget_BackColor,RGB(0,255,0))
  SetGadgetFont(#Text_40, FontID(#Font_Window_1_1))
  TextGadget(#Song_Name, 5, 135, 395, 40, "", #PB_Text_Center)
  SetGadgetColor(#Song_Name, #PB_Gadget_FrontColor,RGB(255,255,255))
  SetGadgetColor(#Song_Name, #PB_Gadget_BackColor,RGB(0,0,255))
  SetGadgetFont(#Song_Name, FontID(#Font_Window_1_0))
EndProcedure

;--------------FMod--------------------    
Macro Musik

   Song.s  = OpenFileRequester("*","*", " Plaat op lääje    (*.mp3, *.wav, *.mp2)|*.mp3;*.wav;*.mp2|*.*|*.*",0,0)
                    
       FMOD_System_CreateStream(fmodsystem,  Ascii(Song) , #FMOD_CREATESTREAM, 0 , @sound)              
       FMOD_System_PlaySound(fmodsystem,     1,        sound,      0,       @Channel)  
       FMOD_Channel_SetVolume(Channel, 1) 
 
       GP.s  = GetFilePart(Song, #PB_FileSystem_NoExtension)
  
       SetGadgetText(#Song_Name,GP)     
 
EndMacro    
     
Macro NormalPartikelPrefs 


 Signal = 20
 SetGadgetState(#Slider_Signal, Signal)   
 SetGadgetText(#Text_Signal  ,""+Str(GetGadgetState(#Slider_Signal))) 

 Global BallVU = 120
 SetGadgetState(#Slider_BallVU, BallVU)   
 SetGadgetText(#Text_BallVU  ,""+Str(GetGadgetState(#Slider_BallVU))) 

 Global Spray = 30  ; SpeedFactor
 SetGadgetState(#Slider_Spray, Spray)   
 SetGadgetText(#Text_Spray  ,""+Str(GetGadgetState(#Slider_Spray))) 
   
 Global PartikelSizeX = 3
 SetGadgetState(#Slider_PartikelSizeX, PartikelSizeX)   
 SetGadgetText(#Text_PartikelSizeX  ,""+Str(GetGadgetState(#Slider_PartikelSizeX)))    

 Global PartikelSizeY = 3
 SetGadgetState(#Slider_PartikelSizeY, PartikelSizeY)   
 SetGadgetText(#Text_PartikelSizeY  ,""+Str(GetGadgetState(#Slider_PartikelSizeY)))    
;--------------------------------------
 Global EmissionPartikel = 8000   
 SetGadgetState(#Slider_EmissionPartikel, EmissionPartikel)   
 SetGadgetText(#Text_EmissionPartikel  ,""+Str(GetGadgetState(#Slider_EmissionPartikel)))    

 Global EmissionEmitter = 0
 SetGadgetState(#Slider_EmissionEmitter, EmissionEmitter)   
 SetGadgetText(#Text_EmissionEmitter  ,""+Str(GetGadgetState(#Slider_EmissionEmitter)))    
;--------------------------------------
 Global ColorStart = 0
 SetGadgetState(#Slider_ColorStart, ColorStart)   
 SetGadgetText(#Text_ColorStart  ,""+Str(GetGadgetState(#Slider_ColorStart)))    

 Global ColorEnd = 0
 SetGadgetState(#Slider_ColorEnd, ColorEnd)   
 SetGadgetText(#Text_ColorEnd  ,""+Str(GetGadgetState(#Slider_ColorEnd)))   
;--------------------------------------
 Global ColorFaderR = -1
 SetGadgetState(#Slider_ColorFaderR, ColorFaderR)   
 SetGadgetText(#Text_ColorFaderR  ,""+Str(GetGadgetState(#Slider_ColorFaderR)))   

 Global ColorFaderG = -5
 SetGadgetState(#Slider_ColorFaderG, ColorFaderG)   
 SetGadgetText(#Text_ColorFaderG  ,""+Str(GetGadgetState(#Slider_ColorFaderG))) 

 Global ColorFaderB = -55
 SetGadgetState(#Slider_ColorFaderB, ColorFaderB)   
 SetGadgetText(#Text_ColorFaderB  ,""+Str(GetGadgetState(#Slider_ColorFaderB))) 

 Global ColorFaderAlpha = 255
 SetGadgetState(#Slider_ColorFaderAlpha, ColorFaderAlpha)   
 SetGadgetText(#Text_ColorFaderAlpha  ,""+Str(GetGadgetState(#Slider_ColorFaderAlpha))) 

;--------------------------------------
 Global AccelerationX = 0
 SetGadgetState(#Slider_AccelerationX, AccelerationX)   
 SetGadgetText(#Text_AccelerationX  ,""+Str(GetGadgetState(#Slider_AccelerationX)))    

 Global AccelerationY =  -80  
 SetGadgetState(#Slider_AccelerationY, AccelerationY)   
 SetGadgetText(#Text_AccelerationY  ,""+Str(GetGadgetState(#Slider_AccelerationY)))    

 Global AccelerationZ = 0
 SetGadgetState(#Slider_AccelerationZ, AccelerationZ)   
 SetGadgetText(#Text_AccelerationZ  ,""+Str(GetGadgetState(#Slider_AccelerationZ)))    
;--------------------------------------
 Global TimeMinimal = 10   ; * 0.1
 SetGadgetState(#Slider_TimeMinimal, TimeMinimal)   
 SetGadgetText(#Text_TimeMinimal  ,""+Str(GetGadgetState(#Slider_TimeMinimal)))    

 Global TimeMaximal = 15   ; * 0.1
 SetGadgetState(#Slider_TimeMaximal, TimeMaximal)   
 SetGadgetText(#Text_TimeMaximal  ,""+Str(GetGadgetState(#Slider_TimeMaximal)))    
;--------------------------------------
 Global EmitterDirectionX = 0   
 SetGadgetState(#Slider_EmitterDirectionX, EmitterDirectionX)   
 SetGadgetText(#Text_EmitterDirectionX  ,""+Str(GetGadgetState(#Slider_EmitterDirectionX)))    

 Global EmitterDirectionY = 1  
 SetGadgetState(#Slider_EmitterDirectionY, EmitterDirectionY)   
 SetGadgetText(#Text_EmitterDirectionY  ,""+Str(GetGadgetState(#Slider_EmitterDirectionY)))    

 Global EmitterDirectionZ = 0   
 SetGadgetState(#Slider_EmitterDirectionZ, EmitterDirectionZ)   
 SetGadgetText(#Text_EmitterDirectionZ  ,""+Str(GetGadgetState(#Slider_EmitterDirectionZ)))    
;--------------------------------------
 Global VeloMinimum = 2   
 SetGadgetState(#Slider_VeloMinimum, VeloMinimum)   
 SetGadgetText(#Text_VeloMinimum  ,""+Str(GetGadgetState(#Slider_VeloMinimum)))    

 Global VeloMaximum = 500   
 SetGadgetState(#Slider_VeloMaximum, VeloMaximum)   
 SetGadgetText(#Text_VeloMaximum  ,""+Str(GetGadgetState(#Slider_VeloMaximum)))    
;--------------------------------------
 Global SpeedFactor = 5 
 SetGadgetState(#Slider_SpeedFactor,SpeedFactor)   
 SetGadgetText(#Text_SpeedFactor  ,""+Str(GetGadgetState(#Slider_SpeedFactor)))    
;--------------------------------------
 Global MoveEmitterX = 0 
 SetGadgetState(#Slider_MoveEmitterX,MoveEmitterX)   
 SetGadgetText(#Text_MoveEmitterX  ,""+Str(GetGadgetState(#Slider_MoveEmitterX)))    

 Global MoveEmitterY = 0 
 SetGadgetState(#Slider_MoveEmitterY,MoveEmitterY)   
 SetGadgetText(#Text_MoveEmitterY  ,""+Str(GetGadgetState(#Slider_MoveEmitterY)))    

 Global MoveEmitterZ = 0 
 SetGadgetState(#Slider_MoveEmitterZ,MoveEmitterZ)   
 SetGadgetText(#Text_MoveEmitterZ  ,""+Str(GetGadgetState(#Slider_MoveEmitterZ)))    
;--------------------------------------
 Global EmitterAngle = 10 
 SetGadgetState(#Slider_EmitterAngle,EmitterAngle)   
 SetGadgetText(#Text_EmitterAngle  ,""+Str(GetGadgetState(#Slider_EmitterAngle)))    

EndMacro
  
  InitEngine3D()
  InitSprite() 
  InitKeyboard() 
  InitMouse() 

  IncludeFile "fmodex.pbi"
  ;IncludeFile "Window-Normal.pbf"


 
 Global q   
 Global fmodsystem.i, Channel.i, Sound.i
;------------------
;FMOD EX  Preferents
 P = 1                               ; Pause
 Global Signal =   20       ; Signalstärke   ( no Volume )
;------------------
;FMOD EX
 Declare Anim()
 Global Dim Array.f(1024)
 FMOD_System_Create(@fmodsystem)  
 FMOD_System_Init(fmodsystem, 2, #FMOD_INIT_NORMAL, 0)
;------------------

  OpenWindow_1()    ; 0,  0, 1920,  1080
  ;OpenWindow(1, 0, 0, 1920, 1080, "", #PB_Window_SystemMenu|#PB_Window_SizeGadget    )  
  OpenWindowedScreen(WindowID(#Window_1), 0, 220, 1920, 880 ) 
  
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data"                     , #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures"            , #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Models"              , #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Scripts"             , #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Particles"           , #PB_3DArchive_FileSystem)  
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Packs/desert.zip"    , #PB_3DArchive_Zip)
    Parse3DScripts()

    SetWindowTheme_(GadgetID(#Button_Musik),@Null,@Null)
    SetWindowTheme_(GadgetID(#Button_Start),@Null,@Null)
    SetWindowTheme_(GadgetID(#Button_Pause),@Null,@Null)
    SetWindowTheme_(GadgetID(#Slider_Signal),@Null,@Null)
    SetWindowTheme_(GadgetID(#Button_Ende),@Null,@Null)

    NormalPartikelPrefs:
 
    CreateCamera(0, 0, 0, 100, 100)  
    MoveCamera(0, 0, 120, 300, #PB_Absolute)
    CameraBackColor(0,$884444)  

    LoadTexture(0, "Dirt.jpg")
    CreateMaterial(0, TextureID(0))
    CreatePlane (0,2000,1000,1,1,32,32)
    CreateEntity(0, MeshID(0), MaterialID(0),0,0,0)

    LoadTexture(0, "smoke2.png")
    CreateMaterial(0, TextureID(0))
    DisableMaterialLighting(0, 1)
    MaterialBlendingMode   (0, #PB_Material_AlphaBlend)

    LoadTexture(1, "flare.png")
    CreateMaterial(1, TextureID(1))
    DisableMaterialLighting(1, 1)
    MaterialBlendingMode   (1, #PB_Material_Add)

    LoadTexture(2, "Spheremap.png") 
    CreateMaterial(2, TextureID(2))
    DisableMaterialLighting(2, 1)
    MaterialBlendingMode   (2,  #PB_Material_Add)
    ;MaterialBlendingMode   (0, #PB_Material_AlphaBlend)
    ;MaterialBlendingMode   (0, #PB_Material_Color)

;###################################### 
;-Springbrunnen Mitte, mit Slider

    CreateParticleEmitter(1, 0, 0, 0, 0, 0,  0,  0)
    ParticleMaterial    (1, MaterialID(1))
    ParticleSize        (1, 2,2)  
    ParticleTimeToLive  (1, 1, 2)   
    ParticleEmitterAngle(1,90) 
    ParticleEmissionRate(1, 8000)
;######################################
;-Spray links 
   
    CreateParticleEmitter(2, 0, 0, 0, 0, 0,  0,  0)
    ParticleMaterial    (2, MaterialID(0))
    ParticleSize        (2, 5,5)  
    ParticleTimeToLive  (2, 1, 2.0)   
    ParticleEmitterAngle(2,10)  
    ParticleEmitterDirection(2, -1, 1, -1)
    ParticleEmissionRate(2, 8000)
    MoveParticleEmitter(2,  -150,   0  ,  0)   
;######################################  
;-Spray rechts

    CreateParticleEmitter(3, 0, 0, 0, 0, 100,   0,  -150)
    ParticleMaterial    (3, MaterialID(1))
    ParticleSize        (3,  2, 2)
    ParticleScaleRate(3,  2)
    ParticleEmitterDirection(3, 1, 1, -1)  
    ParticleTimeToLive  (3, 1, 4)
    ParticleEmitterAngle(3,5)
    ParticleEmissionRate(3, 8000) 
    MoveParticleEmitter(3, 0,0,0)
;######################################   
;-Ball links

    CreateParticleEmitter(4, 0, 0, 0, 0,   0,  0,  0)
    ParticleMaterial    (4, MaterialID(2))
    ParticleTimeToLive  (4,  0.1,  0.1)        ; wenn höher, Doppelbilder
    MoveParticleEmitter(4, -50, 30, 160)
    ParticleEmitterDirection(4, 0, 0, 0)
;###################################### 
;-Ball rechts

    CreateParticleEmitter(5, 0, 0, 0, 0,   0,  0,  0)
    ParticleMaterial    (5, MaterialID(2))
    ParticleTimeToLive  (5, 0.1, 0.1)    
    MoveParticleEmitter(5, 50, 30, 160);  
    ParticleEmitterDirection(5, 0, 0, 0)
;######################################
;-Quirl

;     CreateParticleEmitter(6, 0, 0, 0, 0, 0,   50,  -250)
;     ParticleMaterial    (6, MaterialID(1))
;     ParticleSize        (6,  4, 4)
;    ;ParticleScaleRate(6,  2)
;     ParticleEmitterDirection(6, 1, 1, 1)  
;     ParticleTimeToLive  (6,  0.1, 0.7)
;     ParticleEmitterAngle(6, 0.1)
;     ParticleEmissionRate(6, 5000) 
;     MoveParticleEmitter(6, 0,0,0)
;######################################



  q = 1 
  CreateThread(@Anim(), 0) 
  While q 
 ;--------------------------------------                              
 Event =   WindowEvent() ;  WaitWindowEvent(1) 

         If Event  
         Select Event 
      
   Case #PB_Event_Gadget        
             Select EventGadget()
                                                                            
;
;-Start     
  Case #Button_Start 

            Signal = 20
            FMOD_System_PlaySound(fmodsystem,1 ,  sound,  0,  @Channel)
                        

   Case #Button_Pause                             
             If P = 1
                SetGadgetState(#Button_Pause,1)  
                FMOD_Channel_SetPaused(Channel, #True)
                P = 0  
                Signal = 0          
                                
              Else
                SetGadgetState(#Button_Pause,0)  
                FMOD_Channel_SetPaused(Channel, #False)
                P = 1  
                Signal = 20                          
              EndIf  


    Case #Button_Musik  
                
             Musik:

    Case #Button_Prefs

             NormalPartikelPrefs:

    Case #Button_Ende

             FMOD_System_Release(fmodsystem)                                       
             End   

;####################### Slider ########################
;{ Slider

  Case #Slider_Signal 
            Signal  = GetGadgetState(#Slider_Signal )  
            SetGadgetText(#Text_Signal  ,""+Str(GetGadgetState(#Slider_Signal )))    

  Case #Slider_BallVU 
            BallVU  = GetGadgetState(#Slider_BallVU )  
            SetGadgetText(#Text_BallVU  ,""+Str(GetGadgetState(#Slider_BallVU )))    

  Case #Slider_Spray
            Spray  = GetGadgetState(#Slider_Spray )  
            SetGadgetText(#Text_Spray  ,""+Str(GetGadgetState(#Slider_Spray )))  

   Case #Slider_PartikelSizeX 
            PartikelSizeX  = GetGadgetState(#Slider_PartikelSizeX )  
            SetGadgetText(#Text_PartikelSizeX  ,""+Str(GetGadgetState(#Slider_PartikelSizeX )))    

   Case #Slider_PartikelSizeY 
            PartikelSizeY = GetGadgetState(#Slider_PartikelSizeY )   
            SetGadgetText(#Text_PartikelSizeY  ,""+Str(GetGadgetState(#Slider_PartikelSizeY )))    
;--------------------------------------

   Case #Slider_EmissionPartikel
            EmissionPartikel   = GetGadgetState(#Slider_EmissionPartikel )   
            SetGadgetText(#Text_EmissionPartikel   ,""+Str(GetGadgetState(#Slider_EmissionPartikel )))    

   Case #Slider_EmissionEmitter
            EmissionEmitter  = GetGadgetState(#Slider_EmissionEmitter )   
            SetGadgetText(#Text_EmissionEmitter   ,""+Str(GetGadgetState(#Slider_EmissionEmitter )))    
;--------------------------------------

   Case #Slider_ColorStart
            ColorStart  = GetGadgetState(#Slider_ColorStart )   
            SetGadgetText(#Text_ColorStart   ,""+Str(GetGadgetState(#Slider_ColorStart )))    

    Case #Slider_ColorEnd
             ColorEnd  = GetGadgetState(#Slider_ColorEnd )   
             SetGadgetText(#Text_ColorEnd   ,""+Str(GetGadgetState(#Slider_ColorEnd )))  
;--------------------------------------

  Case #Slider_ColorFaderR
             ColorFaderR  = GetGadgetState(#Slider_ColorFaderR )   
             SetGadgetText(#Text_ColorFaderR   ,""+Str(GetGadgetState(#Slider_ColorFaderR )))  

  Case #Slider_ColorFaderG
             ColorFaderG  = GetGadgetState(#Slider_ColorFaderG )   
             SetGadgetText(#Text_ColorFaderG   ,""+Str(GetGadgetState(#Slider_ColorFaderG )))  

  Case #Slider_ColorFaderB
             ColorFaderB  = GetGadgetState(#Slider_ColorFaderB )   
             SetGadgetText(#Text_ColorFaderB   ,""+Str(GetGadgetState(#Slider_ColorFaderB )))  

  Case #Slider_ColorFaderAlpha
             ColorFaderAlpha  = GetGadgetState(#Slider_ColorFaderAlpha)   
             SetGadgetText(#Text_ColorFaderAlpha   ,""+Str(GetGadgetState(#Slider_ColorFaderAlpha )))    
;--------------------------------------

   Case #Slider_AccelerationX
             AccelerationX  = GetGadgetState(#Slider_AccelerationX )   
             SetGadgetText(#Text_AccelerationX   ,""+Str(GetGadgetState(#Slider_AccelerationX )))    

    Case #Slider_AccelerationY
             AccelerationY  = GetGadgetState(#Slider_AccelerationY )   
             SetGadgetText(#Text_AccelerationY   ,""+Str(GetGadgetState(#Slider_AccelerationY ))) 

    Case #Slider_AccelerationZ
             AccelerationZ  = GetGadgetState(#Slider_AccelerationZ )   
             SetGadgetText(#Text_AccelerationZ   ,""+Str(GetGadgetState(#Slider_AccelerationZ ))) 
;--------------------------------------

    Case #Slider_TimeMinimal
             TimeMinimal  = GetGadgetState(#Slider_TimeMinimal )   
             SetGadgetText(#Text_TimeMinimal   ,""+Str(GetGadgetState(#Slider_TimeMinimal ))) 

    Case #Slider_TimeMaximal
             TimeMaximal  = GetGadgetState(#Slider_TimeMaximal )   
             SetGadgetText(#Text_TimeMaximal   ,""+Str(GetGadgetState(#Slider_TimeMaximal ))) 
;--------------------------------------

    Case #Slider_EmitterDirectionX
             EmitterDirectionX  = GetGadgetState(#Slider_EmitterDirectionX )   
             SetGadgetText(#Text_EmitterDirectionX   ,""+Str(GetGadgetState(#Slider_EmitterDirectionX ))) 

    Case #Slider_EmitterDirectionY
             EmitterDirectionY  = GetGadgetState(#Slider_EmitterDirectionY )   
             SetGadgetText(#Text_EmitterDirectionY   ,""+Str(GetGadgetState(#Slider_EmitterDirectionY ))) 

     Case #Slider_EmitterDirectionZ
              EmitterDirectionZ  = GetGadgetState(#Slider_EmitterDirectionZ )   
              SetGadgetText(#Text_EmitterDirectionZ   ,""+Str(GetGadgetState(#Slider_EmitterDirectionZ ))) 
;--------------------------------------

     Case #Slider_VeloMinimum
              VeloMinimum  = GetGadgetState(#Slider_VeloMinimum )   
              SetGadgetText(#Text_VeloMinimum   ,""+Str(GetGadgetState(#Slider_VeloMinimum ))) 

     Case #Slider_VeloMaximum
               VeloMaximum  = GetGadgetState(#Slider_VeloMaximum )   
               SetGadgetText(#Text_VeloMaximum   ,""+Str(GetGadgetState(#Slider_VeloMaximum ))) 
;--------------------------------------

     Case #Slider_SpeedFactor             
               SpeedFactor   = GetGadgetState(#Slider_SpeedFactor )
               SetGadgetText(#Text_SpeedFactor  ,""+Str(GetGadgetState(#Slider_SpeedFactor )))     
;--------------------------------------

     Case #Slider_EmitterAngle             
              EmitterAngle   = GetGadgetState(#Slider_EmitterAngle )
              SetGadgetText(#Text_EmitterAngle  ,""+Str(GetGadgetState(#Slider_EmitterAngle )))     
;--------------------------------------

     Case #Slider_MoveEmitterX             
              MoveEmitterX    = GetGadgetState(#Slider_MoveEmitterX )
              SetGadgetText(#Text_MoveEmitterX  ,""+Str(GetGadgetState(#Slider_MoveEmitterX )))                   

     Case #Slider_MoveEmitterY             
               MoveEmitterY    = GetGadgetState(#Slider_MoveEmitterY )
               SetGadgetText(#Text_MoveEmitterY  ,""+Str(GetGadgetState(#Slider_MoveEmitterY )))     
               
     Case #Slider_MoveEmitterZ             
               MoveEmitterZ    = GetGadgetState(#Slider_MoveEmitterZ )
               SetGadgetText(#Text_MoveEmitterZ  ,""+Str(GetGadgetState(#Slider_MoveEmitterZ ))) 
                

;}
;-----------------------------------------------------------------------------------------
      
  EndSelect : Default :EndSelect : Else : Delay(1) : EndIf 


      ExamineKeyboard()

;-Musik 
    If KeyboardPushed(#PB_Key_M) 
       Musik:
    EndIf 

;-Ende
    If KeyboardPushed(#PB_Key_Escape) Or Quit = 1
       FMOD_System_Release(fmodsystem)   
       End
    EndIf 
;######################################################################################   

 Wend
 
 Procedure Anim() 

 
   While q  

;--------------------------------FMOD EX---------------------------------
;-Frequents aus Froggerproggers Spectrum-Demo: CodeArchiv\Music+Movie\FMod\SpectrumAnalyzer 

; FMOD_RESULT FMOD_Channel_GetSpectrum( FMOD_CHANNEL * channel,
; float * spectrumarray, 
; int numvalues, 
; int channeloffset, 
; FMOD_DSP_FFT_WINDOW windowtype 

  FMOD_Channel_GetSpectrum(Channel, Array(), 1024, 0, 0 )  
   
  w = 150
  Fr1.f = w - Pow(0.0000001 , Array(1 ))  * w   :  S1 = Int(Fr1)  * signal
  Fr2.f = w - Pow(0.0000001 , Array(2 ))  * w   :  S2 = Int(Fr2)  * signal
  Fr3.f = w - Pow(0.0000001 , Array(3 ))  * w   :  S3 = Int(Fr3)  * signal
  Fr4.f = w - Pow(0.0000001 , Array(4 ))  * w   :  S4 = Int(Fr4)  * signal
  Fr5.f = w - Pow(0.0000001 , Array(5 ))  * w   :  S5 = Int(Fr5)  * signal
  Fr6.f = w - Pow(0.0000001 , Array(6 ))  * w   :  S6 = Int(Fr6)  * signal

 ;#######################################################################
 ;-Springbrunnen Mitte, mit Slider

   ParticleSize(1, PartikelSizeX , PartikelSizeY )
   ParticleEmissionRate(1, EmissionPartikel  )   
   ParticleAcceleration(1,  AccelerationX  ,  AccelerationY  ,  AccelerationZ )   
   ParticleTimeToLive(1, TimeMinimal * 0.1, TimeMaximal * 0.1) 
   ParticleEmitterDirection(1, EmitterDirectionX *0.001 ,  EmitterDirectionY *0.1 ,  EmitterDirectionZ  * 0.001)
   ParticleSpeedFactor(1, 0 + ( SpeedFactor * 0.1 )   )
   MoveParticleEmitter(1,  MoveEmitterX,  MoveEmitterY,  MoveEmitterZ, #PB_Absolute)    
   ParticleVelocity(1,  VeloMinimum  , VeloMaximum + ( s6 / 3  )  )   
   ParticleEmitterAngle(1, EmitterAngle)  

;ParticleColorRange(1, ColorStart, ColorEnd )   
;ParticleColorRange(1,  0,  255 )   
;ParticleColorRange(1, RGB(ColorStartR, ColorStartG, ColorStartB), RGB(ColorEndR, ColorEndG, ColorEndB) )       
;ParticleColorFader(1, ColorFaderR * 0.01 ,  ColorFaderG * 0.01 ,  ColorFaderB * 0.01,  ColorFaderAlpha *0.01 )
 ParticleColorFader(1, ColorFaderR  ,  ColorFaderG  ,  ColorFaderB ,  ColorFaderAlpha )

;######################################
;-Spray links

   ParticleSize(2, 5, 5 )
   ParticleEmissionRate(2, 8000  )  
   ParticleAcceleration(2,  0,  -10  ,0  )  
   ParticleTimeToLive(2,  1,  1.5 )
   ParticleEmitterDirection(2,  -1  ,  1,  -1 )
   ParticleSpeedFactor(2,  1  )
   ParticleEmitterAngle(2,  10)     
   ParticleVelocity(2,  2,  30 + s5 / 3 )    
;######################################
;-Spray rechts

    Sig.f = 0.0002 * s4  
    wi.f + ( Sig  )  
    ParticleEmitterDirection(3, 1, 1,   3 * Sin( wi ))
    ParticleVelocity(3,  2,  200  ) 
    ParticleSpeedFactor(3,  (Spray * 0.1  ))
    ParticleAcceleration(3, 0 ,  -1  , 0)  
;######################################  
;-Ball links 

;VU-Meter   
 
     StV = BallVU  ; je nach Bewegung der Grafik anpassen
     H = 0  :   Stepe3 = StV  ;80
     z3 = z3 + Stepe3 : If z3  > H : z3 - Stepe3 - s3  :  EndIf 
     VU3.f = 0.02 * z3  

     H = 0  :   Stepe4 = StV  ;80
     z4 = z4 + Stepe4 : If z4  > H : z4 - Stepe4 - s4  :  EndIf 
     VU4.f = 0.02 * z4

    ParticleVelocity(4,  1,  5 ) 
    ParticleSize      (4,  15  -  VU3,   15  -  VU4) 

;######################################  
;-Ball rechts  

;VU-Meter

     StV = BallVU  
     H = 0  :   Stepe5 = StV  ; 80
     z5 = z5 + Stepe5  : If z5  > H : z5 - Stepe5 - s5  :  EndIf 
     VU5 .f = 0.02  * z5   

     H = 0  :   Stepe6 = StV  ; 80
     z6 = z6 + Stepe6  : If z6  > H : z6 - Stepe6 - s6  :  EndIf 
     VU6.f = 0.02 * z6  

    ParticleVelocity(5,  1,  5 ) 
    ParticleSize      (5,  15  -  VU5 ,   15  -  VU6)

;######################################
;-Quirl

;     Qu.f  +  0.1    
;     ParticleEmitterDirection(6,  Sin( qu ),  Cos( qu ), 1)
;     ParticleVelocity(6,  2,  300  ) 
;     ParticleSpeedFactor(6,  (  0.1  ))
;     ParticleAcceleration(6, 0 ,  -1  , 0)  
;--------------------------------------------------------------------------------------------------
  CameraLookAt(0,0,0,0)
  RenderWorld()
  FlipBuffers()    
 
 Wend
EndProcedure


PornosDias vanBoston
Beiträge: 9
Registriert: 18.11.2019 20:12

Re: Ogre Normal-Partikel und Script-Partikel

Beitrag von PornosDias vanBoston »

Das zweite Programm besteht aus Script-Partikeln.
Man kann sie auch teilweise mit den normalen Pure-Funktionen verändern, aber eben nur mit den vorhandenen.
Somit fehlen für die Script-Partikel noch mindestens 20 Funktionen. ( auf der Ogre-Seite "Particle Scripts" )

Während einer langen Expedition nach etwas Unbekanntem, habe ich "Runtime" in der Hilfe gefunden,
und dazu dass Wort "Script" registriert, um vieleicht damit die fehlenden Script-Funktionen während der Laufzeit zu verändern.
Leider zeigt schon die Funktion "SetRuntimeInteger(Objekt$, Wert )", dass "Wert" nur für eine einzige Zahl gedacht ist.
Für die Script-Partikel gibt es aber Funktionen mit 3 oder 4 Werten. zb: 0 1 0 oder 0 1 0 1.

Hat jemand vieleicht eine Vorstellung, wie man mit "Runtime" oder anderen Möglichkeiten die fehlenden Funktionen der Script-Partikel ändern kann?

Nach Programm-Start werden die Data-Zeilen als Script in "Examples\3D\Data\Particles" als "Musik.particle" geschrieben.
Dann muss man nicht immer im Script rumwühlen.
https://www.purebasic.fr/english/viewto ... cle+script

Code: Alles auswählen

;##############################################################################################################

;########################################### Script Partikel #####################################################

;##############################################################################################################


; Script-Partikel mit Pure Funktion

;Pure 5.73 (32) Win

;Listing---->     in Examples\3D 

;Nach Programm-Start werden die Data-Zeilen als Script in "Examples\3D\Data\Particles" als "Musik.particle" geschrieben. 
;Dann muss man nicht immer im Script rumwühlen.
;https://www.purebasic.fr/english/viewtopic.php?f=36&t=57325&hilit=Reloading+a+particle+script

;Prefs----> Slider Startposition

;--------------------------------------

; Form Designer

Enumeration FormWindow
  #Window_1
EndEnumeration

Enumeration FormGadget
  #Slider_PartikelSizeX
  #Slider_PartikelSizeY
  #Text_0
  #Text_1
  #Text_2
  #Text_PartikelSizeX
  #Text_PartikelSizeY
  #Slider_EmissionPartikel
  #Text_4
  #Text_EmissionPartikel
  #Text_5
  #Text_6
  #Slider_TimeMinimal
  #Slider_TimeMaximal
  #Text_TimeMinimal
  #Text_TimeMaximal
  #Text_7
  #Slider_EmitterDirectionX
  #Slider_EmitterDirectionY
  #Slider_EmitterDirectionZ
  #Text_16
  #Text_9
  #Text_10
  #Text_EmitterDirectionX
  #Text_EmitterDirectionY
  #Text_EmitterDirectionZ
  #Text_11
  #Slider_VeloMinimum
  #Text_12
  #Slider_VeloMaximum
  #Text_VeloMinimum
  #Text_VeloMaximum
  #Text_13
  #Slider_SpeedFactor
  #Text_SpeedFactor
  #Text_14
  #Slider_AccelerationX
  #Text_AccelerationX
  #Text_15
  #Slider_MoveEmitterX
  #Slider_MoveEmitterY
  #Slider_MoveEmitterZ
  #Text_17
  #Text_18
  #Text_MoveEmitterX
  #Text_MoveEmitterY
  #Text_MoveEmitterZ
  #Text_8
  #Text_19
  #Slider_EmitterAngle
  #Text_EmitterAngle
  #Slider_AccelerationY
  #Slider_AccelerationZ
  #Text_AccelerationY
  #Text_AccelerationZ
  #Text_20
  #Text_21
  #Text_22
  #Slider_ColorStart
  #Slider_ColorEnd
  #Text_23
  #Text_ColorStart
  #Text_ColorEnd
  #Text_24
  #Slider_ColorFaderR
  #Slider_ColorFaderG
  #Slider_ColorFaderB
  #Slider_ColorFaderAlpha
  #Text_ColorFaderR
  #Text_ColorFaderG
  #Text_ColorFaderB
  #Text_ColorFaderAlpha
  #Text_26
  #Text_27
  #Text_28
  #Text_29
  #Text_30
  #Text_31
  #Button_Musik
  #Button_Ende
  #Button_Start
  #Button_Stop
  #Slider_Signal
  #Text_4_1
  #Slider_EmissionEmitter
  #Text_EmissionEmitter
  #Text_13_2
  #Button_Prefs
  #Text_Signal
  #Text__40
  #Text_32
  #Text_33
  #Text_32_Copy2
  #Text_32_Copy2_Copy1
  #Text_32_Copy2_Copy3
  #Text_33_Copy1
  #Text_32_Copy2_Copy2_Copy1_Copy1
  #Text_32_Copy2_Copy2_Copy1_Copy1_Copy1
  #Text_32_Copy2_Copy2_Copy1_Copy1_Copy2
  #Text_32_Copy2_Copy2_Copy1_Copy1_Copy3
  #Text_32_Copy1
EndEnumeration

Enumeration FormFont
  #Font_Window_1_0
EndEnumeration

LoadFont(#Font_Window_1_0,"Arial", 12, #PB_Font_Bold)


Procedure OpenWindow_1(x = 0, y = 0, width = 1920, height = 1080)
  OpenWindow(#Window_1, x, y, width, height, "Script Partikel Test", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_WindowCentered)
  SetWindowColor(#Window_1, RGB(192,192,192))
  ScrollBarGadget(#Slider_PartikelSizeX, 465, 35, 150, 20, 0, 100, 0)
  ScrollBarGadget(#Slider_PartikelSizeY, 465, 60, 150, 20, 0, 100, 0)
  TextGadget(#Text_0, 435, 10, 220, 20, "Partikel Size", #PB_Text_Center)
  SetGadgetFont(#Text_0, FontID(#Font_Window_1_0))
  TextGadget(#Text_1, 435, 35, 25, 20, "X", #PB_Text_Center)
  SetGadgetFont(#Text_1, FontID(#Font_Window_1_0))
  TextGadget(#Text_2, 435, 60, 25, 20, "Y", #PB_Text_Center)
  SetGadgetFont(#Text_2, FontID(#Font_Window_1_0))
  TextGadget(#Text_PartikelSizeX, 615, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_PartikelSizeX, FontID(#Font_Window_1_0))
  TextGadget(#Text_PartikelSizeY, 615, 60, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_PartikelSizeY, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_EmissionPartikel, 435, 115, 155, 20, 0, 10000, 0)
  TextGadget(#Text_4, 435, 90, 220, 20, "Emission Partikel ", #PB_Text_Center)
  SetGadgetFont(#Text_4, FontID(#Font_Window_1_0))
  TextGadget(#Text_EmissionPartikel, 590, 115, 65, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmissionPartikel, FontID(#Font_Window_1_0))
  TextGadget(#Text_5, 985, 150, 190, 20, "Time Minimal  * 0.1", #PB_Text_Center)
  SetGadgetFont(#Text_5, FontID(#Font_Window_1_0))
  TextGadget(#Text_6, 1235, 150, 190, 20, "Time Maximal  * 0.1", #PB_Text_Center)
  SetGadgetFont(#Text_6, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_TimeMinimal, 985, 175, 150, 20, 1, 100, 0)
  ScrollBarGadget(#Slider_TimeMaximal, 1235, 175, 150, 20, 1, 100, 0)
  TextGadget(#Text_TimeMinimal, 1135, 175, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_TimeMinimal, FontID(#Font_Window_1_0))
  TextGadget(#Text_TimeMaximal, 1385, 175, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_TimeMaximal, FontID(#Font_Window_1_0))
  TextGadget(#Text_7, 1205, 10, 220, 20, "Emitter Direction  ", #PB_Text_Center)
  SetGadgetFont(#Text_7, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_EmitterDirectionX, 1235, 35, 150, 20, -100, 100, 0)
  ScrollBarGadget(#Slider_EmitterDirectionY, 1235, 60, 150, 20, -1, 1, 0)
  ScrollBarGadget(#Slider_EmitterDirectionZ, 1235, 85, 150, 20, -100, 100, 0)
  TextGadget(#Text_16, 1675, 35, 25, 20, "X", #PB_Text_Center)
  SetGadgetFont(#Text_16, FontID(#Font_Window_1_0))
  TextGadget(#Text_9, 1205, 60, 25, 20, "Y", #PB_Text_Center)
  SetGadgetFont(#Text_9, FontID(#Font_Window_1_0))
  TextGadget(#Text_10, 1205, 85, 25, 20, "Z", #PB_Text_Center)
  SetGadgetFont(#Text_10, FontID(#Font_Window_1_0))
  TextGadget(#Text_EmitterDirectionX, 1385, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmitterDirectionX, FontID(#Font_Window_1_0))
  TextGadget(#Text_EmitterDirectionY, 1385, 60, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmitterDirectionY, FontID(#Font_Window_1_0))
  TextGadget(#Text_EmitterDirectionZ, 1385, 85, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmitterDirectionZ, FontID(#Font_Window_1_0))
  TextGadget(#Text_11, 1455, 10, 190, 20, "Velocity Minimum", #PB_Text_Center)
  SetGadgetFont(#Text_11, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_VeloMinimum, 1455, 35, 150, 20, 2, 2, 0)
  TextGadget(#Text_12, 1455, 65, 190, 20, "Velocity Maximum", #PB_Text_Center)
  SetGadgetFont(#Text_12, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_VeloMaximum, 1455, 90, 150, 20, 0, 1000, 0)
  TextGadget(#Text_VeloMinimum, 1605, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_VeloMinimum, FontID(#Font_Window_1_0))
  TextGadget(#Text_VeloMaximum, 1605, 90, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_VeloMaximum, FontID(#Font_Window_1_0))
  TextGadget(#Text_13, 1455, 150, 190, 20, "Backw.   - Stop -   Forw.", #PB_Text_Center)
  SetGadgetFont(#Text_13, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_SpeedFactor, 1455, 175, 150, 20, -10, 50, 0)
  TextGadget(#Text_SpeedFactor, 1605, 175, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_SpeedFactor, FontID(#Font_Window_1_0))
  TextGadget(#Text_14, 955, 10, 220, 20, "Acceleration  ( Wind )", #PB_Text_Center)
  SetGadgetFont(#Text_14, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_AccelerationX, 985, 35, 150, 20, -100, 100, 0)
  TextGadget(#Text_AccelerationX, 1135, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_AccelerationX, FontID(#Font_Window_1_0))
  TextGadget(#Text_15, 1675, 10, 220, 20, "Move Partikel Emitter", #PB_Text_Center)
  SetGadgetFont(#Text_15, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_MoveEmitterX, 1705, 35, 150, 20, -300, 300, 0)
  ScrollBarGadget(#Slider_MoveEmitterY, 1705, 60, 150, 20, -100, 100, 0)
  ScrollBarGadget(#Slider_MoveEmitterZ, 1705, 85, 150, 20, -300, 300, 0)
  TextGadget(#Text_17, 1675, 60, 25, 20, "Y", #PB_Text_Center)
  SetGadgetFont(#Text_17, FontID(#Font_Window_1_0))
  TextGadget(#Text_18, 1675, 85, 25, 20, "Z", #PB_Text_Center)
  SetGadgetFont(#Text_18, FontID(#Font_Window_1_0))
  TextGadget(#Text_MoveEmitterX, 1855, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_MoveEmitterX, FontID(#Font_Window_1_0))
  TextGadget(#Text_MoveEmitterY, 1855, 60, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_MoveEmitterY, FontID(#Font_Window_1_0))
  TextGadget(#Text_MoveEmitterZ, 1855, 85, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_MoveEmitterZ, FontID(#Font_Window_1_0))
  TextGadget(#Text_8, 1205, 35, 25, 20, "X", #PB_Text_Center)
  SetGadgetFont(#Text_8, FontID(#Font_Window_1_0))
  TextGadget(#Text_19, 1705, 150, 190, 20, "Emitter Angle", #PB_Text_Center)
  SetGadgetFont(#Text_19, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_EmitterAngle, 1705, 175, 150, 20, 0, 180, 0)
  TextGadget(#Text_EmitterAngle, 1855, 175, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmitterAngle, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_AccelerationY, 985, 60, 150, 20, -100, 100, 0)
  ScrollBarGadget(#Slider_AccelerationZ, 985, 85, 150, 20, -100, 100, 0)
  TextGadget(#Text_AccelerationY, 1135, 60, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_AccelerationY, FontID(#Font_Window_1_0))
  TextGadget(#Text_AccelerationZ, 1135, 85, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_AccelerationZ, FontID(#Font_Window_1_0))
  TextGadget(#Text_20, 955, 35, 25, 20, "X", #PB_Text_Center)
  SetGadgetFont(#Text_20, FontID(#Font_Window_1_0))
  TextGadget(#Text_21, 955, 60, 25, 20, "Y", #PB_Text_Center)
  SetGadgetFont(#Text_21, FontID(#Font_Window_1_0))
  TextGadget(#Text_22, 955, 85, 25, 20, "Z", #PB_Text_Center)
  SetGadgetFont(#Text_22, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_ColorStart, 735, 35, 150, 20, 0, 255, 0)
  ScrollBarGadget(#Slider_ColorEnd, 735, 60, 150, 20, 0, 255, 0)
  TextGadget(#Text_23, 685, 10, 240, 20, "Color Range", #PB_Text_Center)
  SetGadgetFont(#Text_23, FontID(#Font_Window_1_0))
  TextGadget(#Text_ColorStart, 885, 35, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorStart, FontID(#Font_Window_1_0))
  TextGadget(#Text_ColorEnd, 885, 60, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorEnd, FontID(#Font_Window_1_0))
  TextGadget(#Text_24, 685, 90, 240, 20, "Color Fader", #PB_Text_Center)
  SetGadgetFont(#Text_24, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_ColorFaderR, 735, 115, 150, 20, 0, 100, 0)
  ScrollBarGadget(#Slider_ColorFaderG, 735, 140, 150, 20, 0, 100, 0)
  ScrollBarGadget(#Slider_ColorFaderB, 735, 165, 150, 20, 0, 100, 0)
  ScrollBarGadget(#Slider_ColorFaderAlpha, 735, 190, 150, 20, 0, 100, 0)
  TextGadget(#Text_ColorFaderR, 885, 115, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorFaderR, FontID(#Font_Window_1_0))
  TextGadget(#Text_ColorFaderG, 885, 140, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorFaderG, FontID(#Font_Window_1_0))
  TextGadget(#Text_ColorFaderB, 885, 165, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorFaderB, FontID(#Font_Window_1_0))
  TextGadget(#Text_ColorFaderAlpha, 885, 190, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_ColorFaderAlpha, FontID(#Font_Window_1_0))
  TextGadget(#Text_26, 685, 35, 45, 20, "Start", #PB_Text_Center)
  SetGadgetFont(#Text_26, FontID(#Font_Window_1_0))
  TextGadget(#Text_27, 685, 60, 45, 20, "Ende", #PB_Text_Center)
  SetGadgetFont(#Text_27, FontID(#Font_Window_1_0))
  TextGadget(#Text_28, 685, 115, 45, 20, "R", #PB_Text_Center)
  SetGadgetFont(#Text_28, FontID(#Font_Window_1_0))
  TextGadget(#Text_29, 685, 140, 45, 20, "G", #PB_Text_Center)
  SetGadgetFont(#Text_29, FontID(#Font_Window_1_0))
  TextGadget(#Text_30, 685, 165, 45, 20, "B", #PB_Text_Center)
  SetGadgetFont(#Text_30, FontID(#Font_Window_1_0))
  TextGadget(#Text_31, 685, 190, 45, 20, "Alpha", #PB_Text_Center)
  SetGadgetFont(#Text_31, FontID(#Font_Window_1_0))
  ButtonGadget(#Button_Musik, 5, 5, 180, 30, "Musik ")
  SetGadgetFont(#Button_Musik, FontID(#Font_Window_1_0))
  ButtonGadget(#Button_Ende, 5, 175, 180, 35, "Ende   ( Esc )")
  SetGadgetFont(#Button_Ende, FontID(#Font_Window_1_0))
  ButtonGadget(#Button_Start, 5, 45, 80, 30, "Start ")
  SetGadgetFont(#Button_Start, FontID(#Font_Window_1_0))
  ButtonGadget(#Button_Stop, 105, 45, 80, 30, "Stop")
  SetGadgetFont(#Button_Stop, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_Signal, 5, 125, 140, 20, 1, 50, 0)
  TextGadget(#Text_4_1, 435, 145, 220, 20, "Emission Emitter", #PB_Text_Center)
  SetGadgetFont(#Text_4_1, FontID(#Font_Window_1_0))
  ScrollBarGadget(#Slider_EmissionEmitter, 435, 170, 155, 20, 1, 30, 0)
  TextGadget(#Text_EmissionEmitter, 590, 170, 65, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_EmissionEmitter, FontID(#Font_Window_1_0))
  TextGadget(#Text_13_2, 1455, 130, 190, 20, "Speed Factor  * 0.1", #PB_Text_Center)
  SetGadgetFont(#Text_13_2, FontID(#Font_Window_1_0))
  ButtonGadget(#Button_Prefs, 220, 175, 95, 35, "Prefs")
  SetGadgetFont(#Button_Prefs, FontID(#Font_Window_1_0))
  TextGadget(#Text_Signal, 145, 125, 40, 20, "", #PB_Text_Center | #PB_Text_Border)
  SetGadgetFont(#Text_Signal, FontID(#Font_Window_1_0))
  TextGadget(#Text__40, 5, 100, 180, 20, "Signal ", #PB_Text_Center)
  SetGadgetFont(#Text__40, FontID(#Font_Window_1_0))
  TextGadget(#Text_32, 940, 10, 15, 95, "")
  SetGadgetColor(#Text_32, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_32, #PB_Gadget_BackColor,RGB(0,255,0))
  TextGadget(#Text_33, 1660, 10, 15, 95, "")
  SetGadgetColor(#Text_33, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_33, #PB_Gadget_BackColor,RGB(0,255,0))
  TextGadget(#Text_32_Copy2, 1440, 65, 15, 45, "")
  SetGadgetColor(#Text_32_Copy2, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_32_Copy2, #PB_Gadget_BackColor,RGB(0,255,0))
  TextGadget(#Text_32_Copy2_Copy1, 1440, 130, 15, 65, "")
  SetGadgetColor(#Text_32_Copy2_Copy1, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_32_Copy2_Copy1, #PB_Gadget_BackColor,RGB(0,255,0))
  TextGadget(#Text_32_Copy2_Copy3, 420, 145, 15, 45, "")
  SetGadgetColor(#Text_32_Copy2_Copy3, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_32_Copy2_Copy3, #PB_Gadget_BackColor,RGB(0,255,0))
  TextGadget(#Text_33_Copy1, 420, 10, 15, 70, "")
  SetGadgetColor(#Text_33_Copy1, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_33_Copy1, #PB_Gadget_BackColor,RGB(0,255,0))
  TextGadget(#Text_32_Copy2_Copy2_Copy1_Copy1, 970, 150, 15, 45, "")
  SetGadgetColor(#Text_32_Copy2_Copy2_Copy1_Copy1, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_32_Copy2_Copy2_Copy1_Copy1, #PB_Gadget_BackColor,RGB(0,255,0))
  TextGadget(#Text_32_Copy2_Copy2_Copy1_Copy1_Copy1, 1220, 150, 15, 45, "")
  SetGadgetColor(#Text_32_Copy2_Copy2_Copy1_Copy1_Copy1, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_32_Copy2_Copy2_Copy1_Copy1_Copy1, #PB_Gadget_BackColor,RGB(0,255,0))
  TextGadget(#Text_32_Copy2_Copy2_Copy1_Copy1_Copy2, 1440, 10, 15, 45, "")
  SetGadgetColor(#Text_32_Copy2_Copy2_Copy1_Copy1_Copy2, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_32_Copy2_Copy2_Copy1_Copy1_Copy2, #PB_Gadget_BackColor,RGB(0,255,0))
  TextGadget(#Text_32_Copy2_Copy2_Copy1_Copy1_Copy3, 1690, 150, 15, 45, "")
  SetGadgetColor(#Text_32_Copy2_Copy2_Copy1_Copy1_Copy3, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_32_Copy2_Copy2_Copy1_Copy1_Copy3, #PB_Gadget_BackColor,RGB(0,255,0))
  TextGadget(#Text_32_Copy1, 1190, 10, 15, 95, "")
  SetGadgetColor(#Text_32_Copy1, #PB_Gadget_FrontColor,RGB(0,255,0))
  SetGadgetColor(#Text_32_Copy1, #PB_Gadget_BackColor,RGB(0,255,0))
EndProcedure






  InitEngine3D()
  InitSprite() 
  InitKeyboard() 
  InitMouse() 
;--------------FMod----------------    
Macro Musik

   Song.s  = OpenFileRequester("*","*", " Musike    (*.mp3, *.wav, *.mp2)|*.mp3;*.wav;*.mp2|*.*|*.*",0,0)
                    
       FMOD_System_CreateStream(fmodsystem,  Ascii(Song) , #FMOD_CREATESTREAM, 0 , @sound)              
       FMOD_System_PlaySound(fmodsystem,     1,        sound,      0,       @Channel)  
       FMOD_Channel_SetVolume(Channel, 1)      
 EndMacro    
     
Macro ScriptPartikelPrefs 
;--------------------------------------

 
 Signal = 20
 SetGadgetState(#Slider_Signal, Signal)   
 SetGadgetText(#Text_Signal  ,""+Str(GetGadgetState(#Slider_Signal))) 

;  Global BallVU = 80
;  SetGadgetState(#Slider_BallVU, BallVU)   
;  SetGadgetText(#Text_BallVU  ,""+Str(GetGadgetState(#Slider_BallVU))) 
; 
;  Global Spray = 25  ; SpeedFactor
;  SetGadgetState(#Slider_Spray, Spray)   
;  SetGadgetText(#Text_Spray  ,""+Str(GetGadgetState(#Slider_Spray))) 
   
 Global PartikelSizeX = 10
 SetGadgetState(#Slider_PartikelSizeX, PartikelSizeX)   
 SetGadgetText(#Text_PartikelSizeX  ,""+Str(GetGadgetState(#Slider_PartikelSizeX)))    

 Global PartikelSizeY = 15
 SetGadgetState(#Slider_PartikelSizeY, PartikelSizeY)   
 SetGadgetText(#Text_PartikelSizeY  ,""+Str(GetGadgetState(#Slider_PartikelSizeY)))    
;--------------------------------------
 Global EmissionPartikel = 0   
 SetGadgetState(#Slider_EmissionPartikel, EmissionPartikel)   
 SetGadgetText(#Text_EmissionPartikel  ,""+Str(GetGadgetState(#Slider_EmissionPartikel)))    

 Global EmissionEmitter = 10
 SetGadgetState(#Slider_EmissionEmitter, EmissionEmitter)   
 SetGadgetText(#Text_EmissionEmitter  ,""+Str(GetGadgetState(#Slider_EmissionEmitter)))    
;--------------------------------------
 Global ColorStart = 0
 SetGadgetState(#Slider_ColorStart, ColorStart)   
 SetGadgetText(#Text_ColorStart  ,""+Str(GetGadgetState(#Slider_ColorStart)))    

 Global ColorEnd = 0
 SetGadgetState(#Slider_ColorEnd, ColorEnd)   
 SetGadgetText(#Text_ColorEnd  ,""+Str(GetGadgetState(#Slider_ColorEnd)))   
;--------------------------------------
 Global ColorFaderR = 0
 SetGadgetState(#Slider_ColorFaderR, ColorFaderR)   
 SetGadgetText(#Text_ColorFaderR  ,""+Str(GetGadgetState(#Slider_ColorFaderR)))   

 Global ColorFaderG = 0
 SetGadgetState(#Slider_ColorFaderG, ColorFaderG)   
 SetGadgetText(#Text_ColorFaderG  ,""+Str(GetGadgetState(#Slider_ColorFaderG))) 

 Global ColorFaderB = 0
 SetGadgetState(#Slider_ColorFaderB, ColorFaderB)   
 SetGadgetText(#Text_ColorFaderB  ,""+Str(GetGadgetState(#Slider_ColorFaderB))) 

 Global ColorFaderAlpha = 0
 SetGadgetState(#Slider_ColorFaderAlpha, ColorFaderAlpha)   
 SetGadgetText(#Text_ColorFaderAlpha  ,""+Str(GetGadgetState(#Slider_ColorFaderAlpha))) 

;--------------------------------------
 Global AccelerationX = 0
 SetGadgetState(#Slider_AccelerationX, AccelerationX)   
 SetGadgetText(#Text_AccelerationX  ,""+Str(GetGadgetState(#Slider_AccelerationX)))    

 Global AccelerationY =  -3  
 SetGadgetState(#Slider_AccelerationY, AccelerationY)   
 SetGadgetText(#Text_AccelerationY  ,""+Str(GetGadgetState(#Slider_AccelerationY)))    

 Global AccelerationZ = 0
 SetGadgetState(#Slider_AccelerationZ, AccelerationZ)   
 SetGadgetText(#Text_AccelerationZ  ,""+Str(GetGadgetState(#Slider_AccelerationZ)))    
;--------------------------------------
 Global TimeMinimal = 1   ; * 0.1
 SetGadgetState(#Slider_TimeMinimal, TimeMinimal)   
 SetGadgetText(#Text_TimeMinimal  ,""+Str(GetGadgetState(#Slider_TimeMinimal)))    

 Global TimeMaximal = 30   ; * 0.1
 SetGadgetState(#Slider_TimeMaximal, TimeMaximal)   
 SetGadgetText(#Text_TimeMaximal  ,""+Str(GetGadgetState(#Slider_TimeMaximal)))    
;--------------------------------------
 Global EmitterDirectionX = 0   
 SetGadgetState(#Slider_EmitterDirectionX, EmitterDirectionX)   
 SetGadgetText(#Text_EmitterDirectionX  ,""+Str(GetGadgetState(#Slider_EmitterDirectionX)))    

 Global EmitterDirectionY = 1  
 SetGadgetState(#Slider_EmitterDirectionY, EmitterDirectionY)   
 SetGadgetText(#Text_EmitterDirectionY  ,""+Str(GetGadgetState(#Slider_EmitterDirectionY)))    

 Global EmitterDirectionZ = 0   
 SetGadgetState(#Slider_EmitterDirectionZ, EmitterDirectionZ)   
 SetGadgetText(#Text_EmitterDirectionZ  ,""+Str(GetGadgetState(#Slider_EmitterDirectionZ)))    
;--------------------------------------
 Global VeloMinimum = 2   ; minimal 2   
 SetGadgetState(#Slider_VeloMinimum, VeloMinimum)   
 SetGadgetText(#Text_VeloMinimum  ,""+Str(GetGadgetState(#Slider_VeloMinimum)))    

 Global VeloMaximum = 500   
 SetGadgetState(#Slider_VeloMaximum, VeloMaximum)   
 SetGadgetText(#Text_VeloMaximum  ,""+Str(GetGadgetState(#Slider_VeloMaximum)))    
;--------------------------------------
 Global SpeedFactor = 5 
 SetGadgetState(#Slider_SpeedFactor,SpeedFactor)   
 SetGadgetText(#Text_SpeedFactor  ,""+Str(GetGadgetState(#Slider_SpeedFactor)))    
;--------------------------------------
 Global MoveEmitterX = 0 
 SetGadgetState(#Slider_MoveEmitterX,MoveEmitterX)   
 SetGadgetText(#Text_MoveEmitterX  ,""+Str(GetGadgetState(#Slider_MoveEmitterX)))    

 Global MoveEmitterY = -100 
 SetGadgetState(#Slider_MoveEmitterY,MoveEmitterY)   
 SetGadgetText(#Text_MoveEmitterY  ,""+Str(GetGadgetState(#Slider_MoveEmitterY)))    

 Global MoveEmitterZ = 0 
 SetGadgetState(#Slider_MoveEmitterZ,MoveEmitterZ)   
 SetGadgetText(#Text_MoveEmitterZ  ,""+Str(GetGadgetState(#Slider_MoveEmitterZ)))    
;--------------------------------------
 Global EmitterAngle = 90 
 SetGadgetState(#Slider_EmitterAngle,EmitterAngle)   
 SetGadgetText(#Text_EmitterAngle  ,""+Str(GetGadgetState(#Slider_EmitterAngle)))    

EndMacro
  

;-Script
Result.q=FileSize("Data/Particles/Musik.particle")
If Result>0
   DeleteFile("Data/Particles/Musik.particle")
EndIf
;--------------------------------------
 IncludeFile "fmodex.pbi"
 ;IncludeFile "Window-Script.pbf"


 Global q   
 Global fmodsystem.i, Channel.i, Sound.i
;------------------
;FMOD EX
 Global Dim Array.f(1024)
 Declare Anim()
 FMOD_System_Create(@fmodsystem)  
 FMOD_System_Init(fmodsystem, 32, #FMOD_INIT_NORMAL, 0)
;------------------
;FMOD EX  Preferents
Global   Signal =   20     ; Signalstärke
;------------------

  OpenWindow_1()    ; 0,  0, 1920,  1080
  ;OpenWindow(0, 0, 0, 1920, 900, "", #PB_Window_SystemMenu|#PB_Window_SizeGadget    )  
  OpenWindowedScreen(WindowID(#Window_1), 0, 220, 1920, 880 ) 
  
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data"                     , #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures"            , #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Models"              , #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Scripts"             , #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Particles"           , #PB_3DArchive_FileSystem)  
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Packs/desert.zip"    , #PB_3DArchive_Zip)
    Parse3DScripts()

   

;-Script
If CreateFile(0, "Data/Particles/Musik.particle")
    Restore Material
    Line$ = "//Musik-Partikel"
    While Line$<> "END"
      WriteStringN(0, Line$)
      Read.s Line$
    Wend
    CloseFile(0)
  Else
    MessageRequester("Information","Can not create the file!")
  EndIf
;--------------------------------------



  ;Script
  ReloadMaterial("Examples/Musik", "Musik.particle", #True)
  ReloadMaterial("Examples/Flare2", "Examples.material", #True)
  Result=GetScriptParticleEmitter(0, "Examples/Musik")
  If Result=0
     MessageRequester("Information","Could not find particle emitter!")
   EndIf
;--------------------------------------

   ;GetScriptParticleEmitter(0,"Examples/Musik")
   ;ParticleMaterial(0, MaterialID(0)) 
   

    ScriptPartikelPrefs:
 
 
    CreateCamera(0, 0, 0, 100, 100)
    MoveCamera(0, 0, 120, 400, #PB_Absolute)
    CameraLookAt(0, 0,0,0)

;     CreateMaterial(0, LoadTexture(0, "Dirt.jpg"))
;     CreatePlane(0, 1000, 1000, 70, 70, 15, 15)
;     CreateEntity(0,MeshID(0),MaterialID(0))
;     EntityRenderMode(0, 0)

;     LoadTexture(0, "flaretrail.png")
;     CreateMaterial(0, TextureID(0))
;     DisableMaterialLighting(0, 0)
;     MaterialBlendingMode   (0, #PB_Material_Add)
;     MaterialBlendingMode   (4, #PB_Material_AlphaBlend)
;     SetMaterialAttribute(0,#PB_Material_TAM,#PB_Material_ClampTAM)


     


  q = 1 
  CreateThread(@Anim(), 0) 
  While q 
 ;--------------------------------------                              
 Event =   WindowEvent() ;  WaitWindowEvent(1) 

         If Event  
         Select Event 
      
   Case #PB_Event_Gadget        
             Select EventGadget()
                                                                            
;
;-Start     
  Case #Button_Start 
          
            FMOD_System_PlaySound(fmodsystem,1 ,  sound,  0,  @Channel)


   Case #Button_Stop  
                              
             FMOD_Channel_Stop(Channel)


    Case #Button_Musik  
                
             Musik:

    Case #Button_Prefs

             ScriptPartikelPrefs:

    Case #Button_Ende

             FMOD_System_Release(fmodsystem)                                       
             End   

;####################### Slider ########################
;{ Slider

  Case #Slider_Signal 
            Signal  = GetGadgetState(#Slider_Signal )  
            SetGadgetText(#Text_Signal  ,""+Str(GetGadgetState(#Slider_Signal )))    

;   Case #Slider_BallVU 
;             BallVU  = GetGadgetState(#Slider_BallVU )  
;             SetGadgetText(#Text_BallVU  ,""+Str(GetGadgetState(#Slider_BallVU )))    
; 
;   Case #Slider_Spray
;             Spray  = GetGadgetState(#Slider_Spray )  
;             SetGadgetText(#Text_Spray  ,""+Str(GetGadgetState(#Slider_Spray )))  

   Case #Slider_PartikelSizeX 
            PartikelSizeX  = GetGadgetState(#Slider_PartikelSizeX )  
            SetGadgetText(#Text_PartikelSizeX  ,""+Str(GetGadgetState(#Slider_PartikelSizeX )))    

   Case #Slider_PartikelSizeY 
            PartikelSizeY = GetGadgetState(#Slider_PartikelSizeY )   
            SetGadgetText(#Text_PartikelSizeY  ,""+Str(GetGadgetState(#Slider_PartikelSizeY )))    
;--------------------------------------

   Case #Slider_EmissionPartikel
            EmissionPartikel   = GetGadgetState(#Slider_EmissionPartikel )   
            SetGadgetText(#Text_EmissionPartikel   ,""+Str(GetGadgetState(#Slider_EmissionPartikel )))    

   Case #Slider_EmissionEmitter
            EmissionEmitter  = GetGadgetState(#Slider_EmissionEmitter )   
            SetGadgetText(#Text_EmissionEmitter   ,""+Str(GetGadgetState(#Slider_EmissionEmitter )))    
;--------------------------------------

   Case #Slider_ColorStart
            ColorStart  = GetGadgetState(#Slider_ColorStart )   
            SetGadgetText(#Text_ColorStart   ,""+Str(GetGadgetState(#Slider_ColorStart )))    

    Case #Slider_ColorEnd
             ColorEnd  = GetGadgetState(#Slider_ColorEnd )   
             SetGadgetText(#Text_ColorEnd   ,""+Str(GetGadgetState(#Slider_ColorEnd )))  
;--------------------------------------

  Case #Slider_ColorFaderR
             ColorFaderR  = GetGadgetState(#Slider_ColorFaderR )   
             SetGadgetText(#Text_ColorFaderR   ,""+Str(GetGadgetState(#Slider_ColorFaderR )))  

  Case #Slider_ColorFaderG
             ColorFaderG  = GetGadgetState(#Slider_ColorFaderG )   
             SetGadgetText(#Text_ColorFaderG   ,""+Str(GetGadgetState(#Slider_ColorFaderG )))  

  Case #Slider_ColorFaderB
             ColorFaderB  = GetGadgetState(#Slider_ColorFaderB )   
             SetGadgetText(#Text_ColorFaderB   ,""+Str(GetGadgetState(#Slider_ColorFaderB )))  

  Case #Slider_ColorFaderAlpha
             ColorFaderAlpha  = GetGadgetState(#Slider_ColorFaderAlpha)   
             SetGadgetText(#Text_ColorFaderAlpha   ,""+Str(GetGadgetState(#Slider_ColorFaderAlpha )))    
;--------------------------------------

   Case #Slider_AccelerationX
             AccelerationX  = GetGadgetState(#Slider_AccelerationX )   
             SetGadgetText(#Text_AccelerationX   ,""+Str(GetGadgetState(#Slider_AccelerationX )))    

    Case #Slider_AccelerationY
             AccelerationY  = GetGadgetState(#Slider_AccelerationY )   
             SetGadgetText(#Text_AccelerationY   ,""+Str(GetGadgetState(#Slider_AccelerationY ))) 

    Case #Slider_AccelerationZ
             AccelerationZ  = GetGadgetState(#Slider_AccelerationZ )   
             SetGadgetText(#Text_AccelerationZ   ,""+Str(GetGadgetState(#Slider_AccelerationZ ))) 
;--------------------------------------

    Case #Slider_TimeMinimal
             TimeMinimal  = GetGadgetState(#Slider_TimeMinimal )   
             SetGadgetText(#Text_TimeMinimal   ,""+Str(GetGadgetState(#Slider_TimeMinimal ))) 

    Case #Slider_TimeMaximal
             TimeMaximal  = GetGadgetState(#Slider_TimeMaximal )   
             SetGadgetText(#Text_TimeMaximal   ,""+Str(GetGadgetState(#Slider_TimeMaximal ))) 
;--------------------------------------

    Case #Slider_EmitterDirectionX
             EmitterDirectionX  = GetGadgetState(#Slider_EmitterDirectionX )   
             SetGadgetText(#Text_EmitterDirectionX   ,""+Str(GetGadgetState(#Slider_EmitterDirectionX ))) 

    Case #Slider_EmitterDirectionY
             EmitterDirectionY  = GetGadgetState(#Slider_EmitterDirectionY )   
             SetGadgetText(#Text_EmitterDirectionY   ,""+Str(GetGadgetState(#Slider_EmitterDirectionY ))) 

     Case #Slider_EmitterDirectionZ
              EmitterDirectionZ  = GetGadgetState(#Slider_EmitterDirectionZ )   
              SetGadgetText(#Text_EmitterDirectionZ   ,""+Str(GetGadgetState(#Slider_EmitterDirectionZ ))) 
;--------------------------------------

     Case #Slider_VeloMinimum
              VeloMinimum  = GetGadgetState(#Slider_VeloMinimum )   
              SetGadgetText(#Text_VeloMinimum   ,""+Str(GetGadgetState(#Slider_VeloMinimum ))) 

     Case #Slider_VeloMaximum
               VeloMaximum  = GetGadgetState(#Slider_VeloMaximum )   
               SetGadgetText(#Text_VeloMaximum   ,""+Str(GetGadgetState(#Slider_VeloMaximum ))) 
;--------------------------------------

     Case #Slider_SpeedFactor             
               SpeedFactor   = GetGadgetState(#Slider_SpeedFactor )
               SetGadgetText(#Text_SpeedFactor  ,""+Str(GetGadgetState(#Slider_SpeedFactor )))     
;--------------------------------------

     Case #Slider_EmitterAngle             
              EmitterAngle   = GetGadgetState(#Slider_EmitterAngle )
              SetGadgetText(#Text_EmitterAngle  ,""+Str(GetGadgetState(#Slider_EmitterAngle )))     
;--------------------------------------

     Case #Slider_MoveEmitterX             
              MoveEmitterX    = GetGadgetState(#Slider_MoveEmitterX )
              SetGadgetText(#Text_MoveEmitterX  ,""+Str(GetGadgetState(#Slider_MoveEmitterX )))                   

      Case #Slider_MoveEmitterY             
               MoveEmitterY    = GetGadgetState(#Slider_MoveEmitterY )
               SetGadgetText(#Text_MoveEmitterY  ,""+Str(GetGadgetState(#Slider_MoveEmitterY )))     
               
      Case #Slider_MoveEmitterZ             
               MoveEmitterZ    = GetGadgetState(#Slider_MoveEmitterZ )
               SetGadgetText(#Text_MoveEmitterZ  ,""+Str(GetGadgetState(#Slider_MoveEmitterZ ))) 
                

;}
;--------------------------------------
      
  EndSelect : Default :EndSelect : Else : Delay(1) : EndIf 


      ExamineKeyboard()

;-Musik 
    If KeyboardPushed(#PB_Key_M) 
       Musik:
    EndIf 

;-Ende
    If KeyboardPushed(#PB_Key_Escape) Or Quit = 1
       FMOD_System_Release(fmodsystem)   

       End
    EndIf 
;######################################################################################   

 Wend
 
 Procedure Anim() 

 
   While q  

;--------------------------------FMOD EX---------------------------------
;-Frequents aus Froggerproggers Spectrum-Demo: CodeArchiv\Music+Movie\FMod\SpectrumAnalyzer 

; FMOD_RESULT FMOD_Channel_GetSpectrum( FMOD_CHANNEL * channel,
; float * spectrumarray, 
; int numvalues, 
; int channeloffset, 
; FMOD_DSP_FFT_WINDOW windowtype 

  FMOD_Channel_GetSpectrum(Channel, Array(), 1024, 0, 0 )  
   
  w = 150
  Fr1.f = w - Pow(0.0000001 , Array(1 ))  * w   :  S1 = Int(Fr1)  * signal
  Fr2.f = w - Pow(0.0000001 , Array(2 ))  * w   :  S2 = Int(Fr2)  * signal
  Fr3.f = w - Pow(0.0000001 , Array(3 ))  * w   :  S3 = Int(Fr3)  * signal
  Fr4.f = w - Pow(0.0000001 , Array(4 ))  * w   :  S4 = Int(Fr4)  * signal
  Fr5.f = w - Pow(0.0000001 , Array(5 ))  * w   :  S5 = Int(Fr5)  * signal
  Fr6.f = w - Pow(0.0000001 , Array(6 ))  * w   :  S6 = Int(Fr6)  * signal

 ;#######################################################################
    ParticleSize(0, PartikelSizeX , PartikelSizeY )

    ;ParticleEmissionRate(0, EmissionPartikel  )       ; Anzahl Partikel bei Bounce 

    ParticleEmissionRate(0, EmissionEmitter )          ; Anzahl Emitter bei Explosion

    ;ParticleColorRange(0, ColorStart, ColorEnd )        

    ;ParticleColorFader(0, ColorFaderR*0.01, ColorFaderG*0.01, ColorFaderB*0.01, ColorFaderAlpha) 

    ParticleAcceleration(0,  AccelerationX,  AccelerationY,  AccelerationZ )   

    ParticleTimeToLive(0, TimeMinimal * 0.1, TimeMaximal * 0.1)

    ParticleEmitterDirection(0, EmitterDirectionX * 0.01,  EmitterDirectionY * 0.01,  EmitterDirectionZ * 0.01 )

    ParticleVelocity(0, VeloMinimum, VeloMaximum )      ; Minimum = 2.

    ParticleSpeedFactor(0, 0 + ( SpeedFactor * 0.1 )   )

    MoveParticleEmitter(0,  MoveEmitterX,  MoveEmitterY,  MoveEmitterZ, #PB_Absolute)  

    ParticleEmitterAngle(0, EmitterAngle)      


;--------------------------------------------------------------------------------------------------
  CameraLookAt(0,0,0,0)
  RenderWorld()
  FlipBuffers()    
 
 Wend
EndProcedure

; Die Pure-Funktionen die neben "Data" stehen, lassen sich über Slider einstellen.



DataSection
Material:
Data.s "// Example emitted emitters"
Data.s "  particle_system Examples/Musik"
Data.s "{"
Data.s "   material Examples/Flare2"
Data.s "      point_rendering            false"
Data.s "      particle_width                     0"           ;ParticleSize()
Data.s "      particle_height                    0"           ;ParticleSize() 
Data.s "      cull_each                       false"
Data.s "      sorted                            false"
Data.s "      quota                          100000"           ;maximal Partikel   
Data.s "      emit_emitter_quota           30"           ;maximal Emitter
Data.s "      billboard_type  oriented_self" 

   
; // Emitter that emits multiple Point emitters With name 'explosion'
Data.s "         emitter Box"   
Data.s "      {"
Data.s "          name                    mainEmitter"
Data.s "          emit_emitter            explosion"
Data.s "          angle                                      0"       ;ParticleEmitterAngle()
Data.s "          emission_rate                        0"       ;ParticleEmissionRate()   =  ( Emitter Emission )
Data.s "          time_to_live                           0"       ;ParticleTimeToLive()                 
Data.s "          direction                           0 0 0"       ;ParticleEmitterDirection() 
Data.s "          velocity                                  0"        ;ParticleVelocity()
Data.s "          position	                          0 0 0"       ;MoveParticleEmitter()
Data.s "      }"                                                           

;// This Point emitter is emitted by the Box emitter And emits billboard particles itself
Data.s "   emitter Point"
Data.s "   {"
Data.s "          name                        explosion"
Data.s "          angle                                      180"
Data.s "          emission_rate                      2000"
Data.s "          time_to_live                            0.4"
Data.s "          direction                               0 1 0"
Data.s "          velocity_min                              1"
Data.s "          velocity_max                            80"
Data.s "          duration                                     1"                    
Data.s "          repeat_delay_min                   0.1"              
Data.s "          repeat_delay_max                  0.1"  

Data.s "  }"

;     // Make em float downwards
Data.s "     affector LinearForce"
Data.s "      {"
Data.s "          force_vector                      0 0 0"            ;ParticleAcceleration()
Data.s "          force_application               add"  
Data.s "      }"

Data.s "      affector ColourInterpolator"
Data.s "      {"
Data.s "          time0                          0"
Data.s "          colour0                 1 0 0"   
Data.s "         time1                        0.5"
Data.s "          colour1                 0 1 0"
Data.s "          time2                       0.9"
Data.s "         colour2                  0 0 1"

; Data.s "  affector ColourFader"
; Data.s " {"
; Data.s "     red -0.25"                                                   ;ParticleColorFader()             
; Data.s "     green -0.25"
; Data.s "     blue -0.25"



Data.s "     }"
Data.s "  }"
Data.s "END"
EndDataSection

Antworten