;
; ------------------------------------------------------------
;
; PureBasic - EntityBoundingBox
;
; (c) Fantaisie Software
;
; ------------------------------------------------------------
;
;Speed animation = PageUp and PageDown
IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY, Speed = 0.3
Define.f x1, y1, z1, x2, y2, z2
Define Color = RGB(255, 0, 0)
If InitEngine3D()
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/Packs/desert.zip", #PB_3DArchive_Zip)
Parse3DScripts()
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
; Сущность (Entity)
;
CreateEntity(1, LoadMesh(1, "robot.mesh"), #PB_Material_None)
; Анимация
;
StartEntityAnimation(1, "Walk", #PB_EntityAnimation_Manual)
; Скайбокс (SkyBox)
;
SkyBox("Desert07.jpg")
; Камера
;
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0, 50, 100, 80, #PB_Absolute)
CameraLookAt(0, EntityX(1), EntityY(1) + 40, EntityZ(1))
CreateLight(0, RGB(255, 255, 255), -40, 100, 80)
AmbientColor(RGB(80, 80, 80))
KeyboardMode(#PB_Keyboard_International)
Repeat
Screen3DEvents()
If ExamineMouse()
MouseX = -MouseDeltaX()/10
MouseY = -MouseDeltaY()/10
EndIf
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
KeyX = -1
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = 1
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -1
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = 1
Else
KeyY = 0
EndIf
If KeyboardPushed(#PB_Key_PageUp) And Speed < 2.0
Speed + 0.05
ElseIf KeyboardPushed(#PB_Key_PageDown) And Speed > 0.1
Speed - 0.05
EndIf
EndIf
AddEntityAnimationTime(1, "Walk", TimeSinceLastFrame * Speed)
RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
MoveCamera (0, KeyX, 0, KeyY)
TimeSinceLastFrame = RenderWorld()
RotateEntity(1, 0, 1, 0, #PB_Relative)
; Ограничительная коробка (BoudingBox)
x1 = EntityBoundingBox(1, #PB_Entity_MinBoundingBoxX)
y1 = EntityBoundingBox(1, #PB_Entity_MinBoundingBoxY)
z1 = EntityBoundingBox(1, #PB_Entity_MinBoundingBoxZ)
x2 = EntityBoundingBox(1, #PB_Entity_MaxBoundingBoxX)
y2 = EntityBoundingBox(1, #PB_Entity_MaxBoundingBoxY)
z2 = EntityBoundingBox(1, #PB_Entity_MaxBoundingBoxZ)
; Низ
CreateLine3D(10, x1, y1, z1, Color, x2, y1, z1, Color)
CreateLine3D(11, x2, y1, z1, Color, x2, y1, z2, Color)
CreateLine3D(12, x2, y1, z2, Color, x1, y1, z2, Color)
CreateLine3D(13, x1, y1, z2, Color, x1, y1, z1, Color)
; Верх
CreateLine3D(14, x1, y2, z1, Color, x2, y2, z1, Color)
CreateLine3D(15, x2, y2, z1, Color, x2, y2, z2, Color)
CreateLine3D(16, x2, y2, z2, Color, x1, y2, z2, Color)
CreateLine3D(17, x1, y2, z2, Color, x1, y2, z1, Color)
; Край
CreateLine3D(18, x1, y1, z1, Color, x1, y2, z1, Color)
CreateLine3D(19, x2, y1, z1, Color, x2, y2, z1, Color)
CreateLine3D(20, x2, y1, z2, Color, x2, y2, z2, Color)
CreateLine3D(21, x1, y1, z2, Color, x1, y2, z2, Color)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Ошибка", "3D Движок не может быть инициализирован",0)
EndIf
End