; Ich habe hier eine Grafik von --pf shadoko--, die eigentlich in das
; englische Forum gehört.
; Da dort mein Login nicht funktioniert, setze ich den Source hier rein.
; Vieleicht kann jemand was mit dem Gerümpel anfangen.
;--------------------------------------
; Relief & Music & FmodEx
; PB 6.00 / 6.11
;"FmodEx.pbi" from "Grillmeister".
;https://www.purebasic.fr/german/viewtop ... od#p329333
;--------------------------------------
;von pf shadoko »Mo Jul 08, 2024 20:07 Uhr
;--------------------------------------
Code: Alles auswählen
Enumeration Gadget
#Button_Musik : #Button_Start : #Button_Pause : #Song_Name : #Slider_Signal : #Text_Signal : #Slider_Signal_Position
#Text_Signal_Position : #Button_Normal : #Button_RGB : #Button_Diffus : #Gradient_Position : #Text_Gradient_Position
#Button_Gatter : #Slider_CamColor : #Text_CamColor
#Licht_Color : #Slider_Licht_R : #Slider_Licht_G : #Slider_Licht_B : #Text_Licht_R : #Text_Licht_G : #Text_Licht_B
#Licht_Position : #Slider_Licht_X : #Slider_Licht_Y : #Slider_Licht_Z : #Text_Licht_X : #Text_Licht_Y : #Text_Licht_Z
#Ambient_Color : #Slider_Amb_R : #Slider_Amb_G : #Slider_Amb_B : #Text_Amb_R : #Text_Amb_G : #Text_Amb_B : #Button_Ende : #Frame
EndEnumeration
;--------------------------------------
Procedure.l cola(col,a=$ff)
ProcedureReturn col | (a<<24)
EndProcedure
;--------------------------------------
;Declare Anim(Val)
;--------------------------------------
LoadFont(1, "Arial", 14)
SetGadgetFont(#PB_Default, FontID(1))
;###################################### ;Fmod
IncludeFile "fmodex.pbi"
;###################################### ;Preferents
Macro Grafik_Normal
Global Normal = 1, Material = 0
;Lampe Position
Global Licht_X = 100, Licht_Y = 1, Licht_Z = -100
SetGadgetState(#Slider_Licht_X, Licht_X)
SetGadgetText(#Text_Licht_X ," X: "+Str(GetGadgetState(#Slider_Licht_X )))
SetGadgetState(#Slider_Licht_Y, Licht_Y)
SetGadgetText(#Text_Licht_Y ," Y: "+Str(GetGadgetState(#Slider_Licht_Y )))
SetGadgetState(#Slider_Licht_Z, Licht_Z)
SetGadgetText(#Text_Licht_Z ," Z: "+Str(GetGadgetState(#Slider_Licht_Z )))
;--------------------------------------
;Lampe
Global Licht_R = 255, Licht_G = 255, Licht_B = 255
SetGadgetState(#Slider_Licht_R, Licht_R)
SetGadgetText(#Text_Licht_R ," R: "+Str(GetGadgetState(#Slider_Licht_R )))
SetGadgetState(#Slider_Licht_G, Licht_G)
SetGadgetText(#Text_Licht_G ," G: "+Str(GetGadgetState(#Slider_Licht_G )))
SetGadgetState(#Slider_Licht_B, Licht_B)
SetGadgetText(#Text_Licht_B ," B: "+Str(GetGadgetState(#Slider_Licht_B )))
;--------------------------------------
;Ambiente
Global Amb_R = 0, Amb_G = 0, Amb_B = 150
SetGadgetState(#Slider_Amb_R, Amb_R)
SetGadgetText(#Text_Amb_R ," R: "+Str(GetGadgetState(#Slider_Amb_R )))
SetGadgetState(#Slider_Amb_G, Amb_G)
SetGadgetText(#Text_Amb_G ," G: "+Str(GetGadgetState(#Slider_Amb_G )))
SetGadgetState(#Slider_Amb_B, Amb_B)
SetGadgetText(#Text_Amb_B ," B: "+Str(GetGadgetState(#Slider_Amb_B )))
EndMacro
;-------------------------------------
Macro Grafik_RGB
Global Normal = 0, Material = 1
;Lampe Position
Global Licht_X = 0, Licht_Y = 0, Licht_Z = -100
SetGadgetState(#Slider_Licht_X, Licht_X)
SetGadgetText(#Text_Licht_X ," X: "+Str(GetGadgetState(#Slider_Licht_X )))
SetGadgetState(#Slider_Licht_Y, Licht_Y)
SetGadgetText(#Text_Licht_Y ," Y: "+Str(GetGadgetState(#Slider_Licht_Y )))
SetGadgetState(#Slider_Licht_Z, Licht_Z)
SetGadgetText(#Text_Licht_Z ," Z: "+Str(GetGadgetState(#Slider_Licht_Z )))
;-------------------------------------
;Lampe
Global Licht_R = 255, Licht_G = 255, Licht_B = 255
SetGadgetState(#Slider_Licht_R, Licht_R)
SetGadgetText(#Text_Licht_R ," R: "+Str(GetGadgetState(#Slider_Licht_R )))
SetGadgetState(#Slider_Licht_G, Licht_G)
SetGadgetText(#Text_Licht_G ," G: "+Str(GetGadgetState(#Slider_Licht_G )))
SetGadgetState(#Slider_Licht_B, Licht_B)
SetGadgetText(#Text_Licht_B ," B: "+Str(GetGadgetState(#Slider_Licht_B )))
;--------------------------------------
;Ambient Gatter
Global Amb_R = 255, Amb_G = 255, Amb_B = 255
SetGadgetState(#Slider_Amb_R, Amb_R)
SetGadgetText(#Text_Amb_R ," R: "+Str(GetGadgetState(#Slider_Amb_R )))
SetGadgetState(#Slider_Amb_G, Amb_G)
SetGadgetText(#Text_Amb_G ," G: "+Str(GetGadgetState(#Slider_Amb_G )))
SetGadgetState(#Slider_Amb_B, Amb_B)
SetGadgetText(#Text_Amb_B ," B: "+Str(GetGadgetState(#Slider_Amb_B )))
EndMacro
;######################################
InitEngine3D() : InitSprite() : InitKeyboard() : InitMouse()
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
;Finster
OpenWindow(0, 0, 0, 0,0, " [F12]: Wireframe ----- [Esc]: Quit " ,#PB_Window_Maximize)
ex=WindowWidth (0,#PB_Window_InnerCoordinate)
ey=WindowHeight(0,#PB_Window_InnerCoordinate) ;Button
ButtonGadget(#Button_Musik, 10, 30, 200, 40, "Lood de Musik")
ButtonGadget(#Button_Start, 230, 30, 80, 40, "Start")
ButtonGadget(#Button_Pause, 320, 30, 80, 40, "Pause")
ButtonGadget(#Button_Normal, 10, 160, 80, 40, "Normal", #PB_Button_Toggle)
ButtonGadget(#Button_RGB, 120, 160, 80, 40, "RGB ", #PB_Button_Toggle)
ButtonGadget(#Button_Diffus, 210, 160, 80, 40, "<<Diffus", #PB_Button_Toggle)
TextGadget(#Song_Name, 10, 90, 390, 50, "", #PB_Text_Center | #PB_Text_Border )
SetGadgetColor(#Song_Name, #PB_Gadget_FrontColor,RGB(255,255,255))
SetGadgetColor(#Song_Name, #PB_Gadget_BackColor,RGB(0,0,255))
ScrollBarGadget(#Slider_Signal, 10, 220, 150, 30, 0, 40, 0)
TextGadget(#Text_Signal, 165, 220, 120, 30, "")
ScrollBarGadget(#Slider_CamColor, 10, 280, 120, 30, 0, 255, 0)
TextGadget(#Text_CamColor, 135, 280, 150, 30,"")
ScrollBarGadget(#Gradient_Position, 10, 330, 120, 30, 1, 5, 0)
TextGadget(#Text_Gradient_Position, 135, 330, 150, 30,"")
;--------------------------------------
;Lampe Position
TextGadget(#Licht_Position, 10, 385, 225, 25, " Licht Position ")
ScrollBarGadget(#Slider_Licht_X, 10, 420, 150, 30, -100, 100, 0) ;### Minus Debug!
TextGadget(#Text_Licht_X, 165, 420, 70, 30, "")
ScrollBarGadget(#Slider_Licht_Y, 10, 460, 150, 30, 0, 100, 0)
TextGadget(#Text_Licht_Y, 165, 460, 70, 30, "")
ScrollBarGadget(#Slider_Licht_Z, 10, 500, 150, 30, -100, 100, 0) ;### Minus
TextGadget(#Text_Licht_Z, 165, 500, 70, 30, "")
;Lampe
TextGadget(#Licht_Color, 10, 555, 225, 25, " Licht Color ")
ScrollBarGadget(#Slider_Licht_R, 10, 590, 150, 30, 0, 255, 0)
TextGadget(#Text_Licht_R, 165, 590, 70, 30, "")
ScrollBarGadget(#Slider_Licht_G, 10, 630, 150, 30, 0, 255, 0)
TextGadget(#Text_Licht_G, 165, 630, 70, 30, "")
ScrollBarGadget(#Slider_Licht_B, 10, 670, 150, 30, 0, 255, 0)
TextGadget(#Text_Licht_B, 165, 670, 70, 30, "")
;--------------------------------------
;Ambiente Gatter
TextGadget(#Ambient_Color, 10, 725, 225, 25, " Ambiente Gatter ")
ScrollBarGadget(#Slider_Amb_R, 10, 760, 150, 30, 0, 255, 0)
TextGadget(#Text_Amb_R, 165, 760, 70, 30, "")
ScrollBarGadget(#Slider_Amb_G, 10, 800, 150, 30, 0, 255, 0)
TextGadget(#Text_Amb_G, 165, 800, 70, 30, "")
ScrollBarGadget(#Slider_Amb_B, 10, 840, 150, 30, 0, 255, 0)
TextGadget(#Text_Amb_B, 165, 840, 70, 30, "")
;--------------------------------------
ButtonGadget(#Button_Ende, 10, 900, 200, 40, "Ende ( Esc )")
FrameGadget(#Frame, 10, 980, 125, 30, "", #PB_Frame_Double)
;--------------------------------------
;Schild
OpenWindowedScreen(WindowID(0), 0, 0, ex, ey, 0, 0, 0)
CreateCamera(0, 0, 0, 100, 100)
CreateLight(0, RGB(0, 0, 0), 0, 0, 0)
;--------------------------------------
;LoadTexture(1, "Flare.png" ) ;Textur
;LoadTexture(1, "Wood.jpg" )
;LoadTexture(1, "smoke2.png" )
LoadTexture(1, "spheremap.png" )
;--------------------------------------
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)
;------------------------------------ ;Fmod
Dim Array.f ( 2048 ) ; 8192
Global fmodsystem.i, Channel.i, Sound.i
FMOD_System_Create(@System)
FMOD_System_Init(System, 2, #FMOD_INIT_NORMAL, 0)
;-------------------------------------- ;image creation
Global n = 128, n1 = n-1
CreateImage(0,n,n,32)
Dim t.MeshVertex(n,n)
dist=160
;-------------------------------------- ;Start Grafik
SetGadgetState(#Button_Normal ,1)
Grafik_Normal
P = 0
Diffus = 0 ;Start Preferents
;--------------------------------------
Global Signal = 10, CamColor = 100, Gradient_Position = 4
SetGadgetState(#Slider_Signal, Signal)
SetGadgetText(#Text_Signal ," Signal: "+Str(GetGadgetState(#Slider_Signal )))
SetGadgetState(#Slider_CamColor, CamColor)
SetGadgetText(#Text_CamColor ," Cam Color: "+Str(GetGadgetState(#Slider_CamColor )))
SetGadgetState(#Gradient_Position, Gradient_Position)
SetGadgetText(#Text_Gradient_Position ," Gradient Pos: "+Str(GetGadgetState(#Gradient_Position )))
;###################################### ;Musik
Macro Musik
P = 0
Signal = GetGadgetState( #Slider_Signal ) ; Wenn Pause aktiv. Grafik start.
Song.s = OpenFileRequester("*","*", " Song (*.mp3, *.wav, *.mp2)|*.mp3;*.wav;*.mp2|*.*|*.*",0,0)
FMOD_System_CreateStream(System, Ascii(Song) , #FMOD_CREATESTREAM, 0 , @sound)
FMOD_System_PlaySound(System, 0, sound, 0, @Channel)
FMOD_Channel_SetVolume(Channel, 1)
GP.s = GetFilePart(Song, #PB_FileSystem_NoExtension)
SetGadgetText(#Song_Name,GP)
EndMacro
;######################################
Repeat
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
Case #PB_Event_Gadget
Gadget = EventGadget()
Select Gadget
;--------------------------------------
Case #Button_Musik
Musik:
Case #Button_Start
P = 0
Signal = GetGadgetState( #Slider_Signal )
FMOD_System_PlaySound(System, 0, sound, 0, @Channel)
;--------------------------------------
Case #Button_Pause
If P = 0
SetGadgetState(#Button_Pause,1)
FMOD_Channel_SetPaused(Channel, #True)
P =10
Signal = 0
Else
SetGadgetState(#Button_Pause,0)
FMOD_Channel_SetPaused(Channel, #False)
P = 0
Signal = GetGadgetState( #Slider_Signal )
EndIf
;--------------------------------------
Case #Button_Normal
SetGadgetState(#Button_Normal ,1)
SetGadgetState(#Button_RGB ,0)
DisableGadget(#Button_Diffus ,1)
Grafik_Normal
Case #Button_RGB
SetGadgetState(#Button_Normal ,0)
SetGadgetState(#Button_RGB ,1)
DisableGadget(#Button_Diffus , 0)
Grafik_RGB
Case #Button_Diffus
If Diffus = 0
SetGadgetState(#Button_Diffus,1)
Diffus = 1
Else
SetGadgetState(#Button_Diffus,0)
Diffus = 0
EndIf
;--------------------------------------
;Signal
Case #Slider_Signal
Signal = GetGadgetState(#Slider_Signal )
SetGadgetText(#Text_Signal ," Signal: "+Str(GetGadgetState(#Slider_Signal )))
;--------------------------------------
;Kamera
Case #Slider_CamColor
CamColor = GetGadgetState(#Slider_CamColor )
SetGadgetText(#Text_CamColor, " Cam Color: " + Str(GetGadgetState(#Slider_CamColor) ))
;--------------------------------------
;Gradient Position
Case #Gradient_Position
Gradient_Position = GetGadgetState(#Gradient_Position )
SetGadgetText(#Text_Gradient_Position ," Gradient Pos: "+Str(GetGadgetState(#Gradient_Position )))
;--------------------------------------
;Lampe X, Y, Z
Case #Slider_Licht_X
Licht_X = GetGadgetState(#Slider_Licht_X )
SetGadgetText(#Text_Licht_X ," X: "+Str(GetGadgetState(#Slider_Licht_X )))
Case #Slider_Licht_Y
Licht_Y = GetGadgetState(#Slider_Licht_Y )
SetGadgetText(#Text_Licht_Y ," Y: "+Str(GetGadgetState(#Slider_Licht_Y )))
Case #Slider_Licht_Z
Licht_Z = GetGadgetState(#Slider_Licht_Z )
SetGadgetText(#Text_Licht_Z ," Z: "+Str(GetGadgetState(#Slider_Licht_Z )))
;Lampe RGB
Case #Slider_Licht_R
Licht_R = GetGadgetState(#Slider_Licht_R )
SetGadgetText(#Text_Licht_R ," R: "+Str(GetGadgetState(#Slider_Licht_R )))
Case #Slider_Licht_G
Licht_G = GetGadgetState(#Slider_Licht_G )
SetGadgetText(#Text_Licht_G ," G: "+Str(GetGadgetState(#Slider_Licht_G )))
Case #Slider_Licht_B
Licht_B = GetGadgetState(#Slider_Licht_B )
SetGadgetText(#Text_Licht_B ," B: "+Str(GetGadgetState(#Slider_Licht_B )))
;--------------------------------------
;Ambiente Gatter
Case #Slider_Amb_R
Amb_R = GetGadgetState(#Slider_Amb_R )
SetGadgetText(#Text_Amb_R ," R: "+Str(GetGadgetState(#Slider_Amb_R )))
Case #Slider_Amb_G
Amb_G = GetGadgetState(#Slider_Amb_G )
SetGadgetText(#Text_Amb_G ," G: "+Str(GetGadgetState(#Slider_Amb_G )))
Case #Slider_Amb_B
Amb_B = GetGadgetState(#Slider_Amb_B )
SetGadgetText(#Text_Amb_B ," B: "+Str(GetGadgetState(#Slider_Amb_B )))
;--------------------------------------
Case #Button_Ende
FMOD_Channel_Stop(Channel)
FMOD_System_Release(System)
End
;--------------------------------------
EndSelect
; Delay(1)
EndSelect
Until Event = 0
;###################################### Fmod
FMOD_Channel_GetSpectrum(Channel, Array(), 2048, 0,0) ; 128, 512, 1024, 2048, 4096, 8192 ;Fmod
FMOD_Channel_IsPlaying(Channel, @Play)
If Play = #True : Signal = Signal : EndIf
If Play = #False : Signal = 0 : EndIf
;######################################
StartVectorDrawing(ImageVectorOutput(0)) ;image creation
For i = 15 To n -24 Step 15
For j = 15 To n -24 Step 15
;--------------------------------------
fr = 100
Fr1.f = fr - Pow(1 / fr , Array( i )) * fr : Dir1 = Int(Fr1) * Signal ;Slider Signal
;Fr2.f = fr - Pow(1 / fr , Array( j )) * fr : Dir2 = Int(Fr2) * Signal
; RGB Signal
Fr3.f = fr - Pow(1 / fr , Array( 4 )) * fr : Col1 = Int(Fr3) * Signal
Fr4.f = fr - Pow(1 / fr , Array( 6 )) * fr : Col2 = Int(Fr4) * Signal
;--------------------------------------
x = i + Random( 25 )
y = j + Random( 20 )
r = 12
If Normal = 1 ;Normal Grafik
c = Dir1
Else
; Direktion Kolör
c = RGB( Dir1, Col1, Col2 ) ;RGB Grafik
EndIf
;-------------------------------------
;VectorSourceCircularGradient( x.d, y.d, Radius.d, [ Midde_X.d, Midde_Y.d ] )
VectorSourceCircularGradient( x, y, r )
;VectorSourceGradientColor( Farbe, Position.d )
VectorSourceGradientColor(cola(c, 255 ), 0.0 )
VectorSourceGradientColor(cola(c, 0 ), 0.5 + ( Gradient_Position / 10 ) ) ;Gradient Position
;AddPathCircle(x.d, y.d, Radius.d [, Start_Winkel.d, End_Winkel.d [, Flags]])
AddPathCircle( x, y, r )
;AddPathEllipse(x.d, y.d, RadiusX.d, RadiusY.d [, Start_Winkel.d, End_Winkel.d [, Flags]])
;AddPathEllipse( 65, 65, 45, 45 ) ; Ellipse wenn Musik start
FillPath()
Next
Next
StopVectorDrawing()
;##################################### entity / mesh creation
StartDrawing(ImageOutput(0))
For j=0 To n
For i=0 To n
With t(j,i)
color=Point( i & n1, j & n1 )
\color=color
\x=(i-n/2)
\z=(n/2-j)
\y= -25 + Red(color) / 4 ; -25 Position, / 4 Hoehe ;Height
EndWith
Next : Next
StopDrawing()
CreateDataMesh(0,t(),#PB_Mesh_DiagonalClosestNormal +8)
;--------------------------------------
;Textur inaktiv ;Textur inaktiv
CreateMaterial(0, 0 )
CreateEntity(0, MeshID(0), MaterialID(0))
;Textur aktiv ;Textur aktiv
; CreateMaterial(1, TextureID(1))
; AddMaterialLayer(1,TextureID(1) , #PB_Material_Add ,0)
; SetMaterialAttribute(1, #PB_Material_EnvironmentMap | #PB_Material_NormalMap ,1)
; CreateEntity(0, MeshID(0), MaterialID(1))
;--------------------------------------
If Material = 1 ;RGB Diffus
If Diffus = 1
SetMaterialColor(0, #PB_Material_AmbientColor | #PB_Material_DiffuseColor, -1 )
Else : SetMaterialColor(0, #PB_Material_AmbientColor, -1 ) : EndIf : Else : EndIf
SetLightColor(0, 0 , RGB( Licht_R, Licht_G, Licht_B) )
MoveLight(0, Licht_X, Licht_Y, - Licht_Z , #PB_Absolute) ;Position Lampe
AmbientColor(RGB(Amb_R, Amb_G, Amb_B) ) ;Gatter
CameraBackColor(0, RGB(CamColor, CamColor, CamColor))
;######################################
ExamineKeyboard()
dist - (Bool(KeyboardPushed(#PB_Key_Down)<>0)-Bool(KeyboardPushed(#PB_Key_Up )<>0))*1-MouseWheel()*10
If KeyboardReleased(#PB_Key_F12):fdf=1-fdf:If fdf : CameraRenderMode(0,#PB_Camera_Wireframe)
Else : CameraRenderMode(0,#PB_Camera_Textured) : EndIf:EndIf
a.f = 1.57
MoveCamera(0,Cos(a)*dist,dist*0.3,Sin(a)*dist,0)
StartDrawing(WindowOutput(0)) : DrawingFont(FontID(1))
;DrawText(18, 985,"FPS =" +Str ( Engine3DStatus ( 3 ))) ;#PB_Engine3D_CurrentFPS ))) ;FPS
DrawText(18, 985,"FPS =" +StrF ( Engine3DStatus ( 3 ),2))
StopDrawing()
CameraLookAt(0,0,0,0) : RenderWorld() : FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
;-------------------------------------
;-------------------------------------
; q = 1
; CreateThread(@Anim(), Val)
; Procedure Anim(Val)
; While q
; Grafik
; CameraLookAt(0,0,0,0) : RenderWorld() : FlipBuffers()
; Wend
; EndProcedure