Code: Select all
;
IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"
#CameraSpeed = 0.5
Define.f KeyX, KeyY, MouseX, MouseY
If InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
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/GUI" , #PB_3DArchive_FileSystem)
Parse3DScripts()
;WorldDebug(#PB_World_DebugBody)
;-------------------------------
; create material
CreateMaterial(0, LoadTexture(1, "wood.jpg"))
SetMaterialColor(0, #PB_Material_AmbientColor, #PB_Material_AmbientColors)
;
CreateMaterial(2, LoadTexture(2, "dirt.jpg"))
SetMaterialColor(2, #PB_Material_AmbientColor, #PB_Material_AmbientColors)
CreateMaterial(1, LoadTexture(3, "clouds.jpg"))
SetMaterialColor(1, #PB_Material_AmbientColor, #PB_Material_AmbientColors)
CreateMaterial(4, LoadTexture(4, "r2skin.jpg"))
;-------------------------------
CreateCube(1, 2)
CreateEntity(0, MeshID(1),MaterialID(1), 0, 0, 0)
CreateEntity(1, MeshID(1),MaterialID(1), 2, 0, 0)
CreateEntity(2, MeshID(1),MaterialID(1), -2, 0, 0)
CreateEntity(3, MeshID(1),MaterialID(1), 0, 2, 0)
CreateEntity(4, MeshID(1),MaterialID(1), 0, -2, 0)
CreateEntity(5, MeshID(1),MaterialID(1), 0, 0, 2)
CreateEntity(6, MeshID(1),MaterialID(1), 0, 0, -2)
Global Compound = CreateEntity(#PB_Any,0,0)
For i=0 To 6
AddSubEntity(Compound, i, #PB_Entity_BoxBody)
Next
For i=1 To 20
t+1
m!1
CreateEntity(6+t, MeshID(1),MaterialID(m), 2+t*2, 0, 0)
AddSubEntity(Compound, 6+t, #PB_Entity_BoxBody)
Next
CreateEntityBody(Compound, #PB_Entity_CompoundBody, 1, 0.4, 0.5)
;-------------------------------
;Ground
;
Ground = CreateEntity(#PB_Any, MeshID(1), MaterialID(2), 0, -7, 0)
ScaleEntity(Ground, 40, 1, 40)
CreateEntityBody(Ground, #PB_Entity_StaticBody)
; camera
CreateCamera(0, 0, 0, 100, 100, #True)
MoveCamera(0,1.5,3,30, #PB_Absolute)
; GUI
OpenWindow3D(0, 0, 0, 50 , 10 , "")
HideWindow3D(0,1)
ShowGUI(128, 1) ; Display the GUI, semi-transparent and display the mouse cursor
SetWindowTitle(0, "PureBasic-3D Demos .... Press Z/X to apply torque ")
WorldDebug(#PB_World_DebugBody);#PB_World_DebugEntity)
Repeat
Screen3DEvents()
If ExamineMouse()
MouseX = -MouseDeltaX() * #CameraSpeed * 0.1
MouseY = -MouseDeltaY() * #CameraSpeed * 0.1
InputEvent3D(MouseX(), MouseY(),0)
BodyPick(CameraID(0), MouseButton(#PB_MouseButton_Left), MouseX(), MouseY(), 1)
EndIf
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Z)
ApplyEntityTorque(Compound, 0, 0, 25)
ElseIf KeyboardPushed(#PB_Key_X)
ApplyEntityTorque(Compound, 0, 0, -25)
EndIf
If KeyboardPushed(#PB_Key_Left)
KeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = #CameraSpeed
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
EndIf
MoveCamera (0, KeyX, 0, KeyY)
RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End