Aujourd'hui j'ai refait un truc que j'avais fait il y a longtemps avec une ancienne version de PB, cette version ne marchait plus du tout... PB a beaucoup changé depuis
Avertissement : Déconseillé si vous êtes gerbophobe
Code : Tout sélectionner
InitEngine3D()
InitSprite()
InitKeyboard()
#ScrWidth = 1366 : #ScrHeight = 768 : #BPPx = 4
scr = OpenScreen(#ScrWidth, #ScrHeight,#BPPx * 8,"Cubefield")
Structure cube
rotx.b
roty.b
rotz.b
EndStructure
Declare GetNewCoord (i)
; Lumière
light = CreateLight(#PB_Any, RGB(25, 25, 180), 0, 0, 0, #PB_Light_Spot)
; --- Initialisation de la camera ---
#CameraFOV = 60
Global cameraID
cameraID = CreateCamera(#PB_Any, 0, 0, 100, 100)
CameraFOV(cameraID, #CameraFOV)
MoveCamera(cameraID, 0, 0, 0, #PB_Absolute)
CameraLookAt(cameraID, 0, 0, 1)
CameraRange (cameraID, 0, 1000)
; --- Initialisation des cubes ---
#NBCubes = 1000
Dim cubes.cube(#NBCubes)
For i = 0 To #NBCubes - 1
CreateCube(i, Random (5) + 1)
CreateEntity(i, MeshID(i), #PB_Material_None)
GetNewCoord (i)
cubes(i)\rotx = Random (10) - 5
cubes(i)\roty = Random (10) - 5
cubes(i)\rotz = Random (10) - 5
Next
Repeat
ExamineKeyboard()
MoveCamera (cameraID, 0, 0, -10)
RotateCamera (CameraID, 0,0,-2, #PB_Relative)
For i = 0 To #NBCubes - 1
If CheckObjectVisibility(cameraID, EntityID(i))
RotateEntity(i, cubes(i)\rotx, cubes(i)\roty, cubes(i)\rotz, #PB_Relative)
Else
GetNewCoord (i)
EndIf
Next
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Procedure GetNewCoord(i)
; Déplace une entity à une nouvelle position
MoveEntity(i, Random (1000) - 500, Random (1000) - 500, CameraZ(cameraID) + Random (1000), #PB_Absolute)
EndProcedure