- Resultat = CreatePyramid(#Mesh, Width.f, Height.f, [SizeTop.f=0])
- Crée un mesh pyramide.
- #Mesh Le numéro d'identification du nouveau mesh. #PB_Any peut être utilisé pour générer automatiquement ce numéro.
- Width.f Largeur de la pyramide.
- Height.f Hauteur de la pyramide.
- SizeTop.f Largeur de la pyramide au sommet. (0 par défaut)
- Renvoie une valeur non nulle en cas de succès, zéro sinon.
- Si #PB_Any a été utilisé pour le paramètre #Mesh alors la valeur de retour est le numéro d'identification, généré automatiquement.
Code : Tout sélectionner
Global MouseX.f, MouseY.f
Declare CreatePyramid(Mesh, Width.f, Height.f, SizeTop.f=0)
InitEngine3D() : InitKeyboard() : InitSprite() : InitMouse()
OpenWindow(0, 0, 0, 1024, 768, "Create Pyramide", #PB_Window_Maximize | #PB_Window_BorderLess)
OpenWindowedScreen(WindowID(0),0, 0, WindowWidth(0) , WindowHeight(0))
Add3DArchive(#PB_Compiler_Home + "Examples\3D\Data\Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "Examples/3D/Data/Packs/waterworld.zip", #PB_3DArchive_Zip)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Packs/desert.zip", #PB_3DArchive_Zip)
SkyBox("desert07.jpg")
;Caméra, Lumiere & Ombre
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0, 0, 1.5, 4)
CameraLookAt(0, 0, 0, 0)
CreateLight(#PB_Any, RGB(151, 251, 151), -200, 100, -500)
WorldShadows(#PB_Shadow_Additive)
CreateMaterial(0, TextureID(LoadTexture(-1, "Dirt.jpg")))
CreateMaterial(1, TextureID(LoadTexture(-1, "Floor02.jpg")))
CreatePlane(0, 5, 5, 1, 1, 5, 5)
CreateEntity(0, MeshID(0), MaterialID(0), 0, 0, 0)
;Deux pyramides
CreatePyramid(0, 1, 1, 0.5)
CreateEntity(1, MeshID(0), MaterialID(1), 1, 0.5, 1)
CreatePyramid(0, 1, 1, 0)
CreateEntity(2, MeshID(0), MaterialID(1), -1, 0.5, 1)
While #True
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
If ExamineKeyboard()
If KeyboardReleased(#PB_Key_Escape)
Break
EndIf
EndIf
If ExamineMouse()
MouseX = -MouseDeltaX() * 0.05
MouseY = -MouseDeltaY() * 0.05
EndIf
RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
RenderWorld()
FlipBuffers()
Wend
Procedure CreatePyramid(Mesh, Width.f, Height.f, SizeTop.f=0)
Protected Dim MeshData.PB_MeshVertex(0)
Protected Result = CreateCube(Mesh, Width)
If Mesh = #PB_Any
Mesh = Result
EndIf
GetMeshData(Mesh, 0, MeshData(), #PB_Mesh_Vertex | #PB_Mesh_UVCoordinate, 0, MeshVertexCount(Mesh)-1)
;(3, 10, 16)
MeshData(3)\x = -SizeTop/2
MeshData(10)\x = -SizeTop/2
MeshData(16)\x = -SizeTop/2
MeshData(3)\z = SizeTop/2
MeshData(10)\z = SizeTop/2
MeshData(16)\z = SizeTop/2
MeshData(3)\y = Height/2
MeshData(10)\y = Height/2
MeshData(16)\y = Height/2
;(6, 11, 19)
MeshData(6)\x = -SizeTop/2
MeshData(11)\x = -SizeTop/2
MeshData(19)\x = -SizeTop/2
MeshData(6)\z = -SizeTop/2
MeshData(11)\z = -SizeTop/2
MeshData(19)\z = -SizeTop/2
MeshData(6)\y = Height/2
MeshData(11)\y = Height/2
MeshData(19)\y = Height/2
;(7, 14, 18)
MeshData(7)\x = SizeTop/2
MeshData(14)\x = SizeTop/2
MeshData(18)\x = SizeTop/2
MeshData(7)\z = -SizeTop/2
MeshData(14)\z = -SizeTop/2
MeshData(18)\z = -SizeTop/2
MeshData(7)\y = Height/2
MeshData(14)\y = Height/2
MeshData(18)\y = Height/2
;(2, 15, 17)
MeshData(2)\x = SizeTop/2
MeshData(15)\x = SizeTop/2
MeshData(17)\x = SizeTop/2
MeshData(2)\z = SizeTop/2
MeshData(15)\z = SizeTop/2
MeshData(17)\z = SizeTop/2
MeshData(2)\y = Height/2
MeshData(15)\y = Height/2
MeshData(17)\y = Height/2
;(0, 9, 23)
MeshData(0)\y = -Height/2
MeshData(9)\y = -Height/2
MeshData(23)\y = -Height/2
;(5, 8, 20)
MeshData(5)\y = -Height/2
MeshData(8)\y = -Height/2
MeshData(20)\y = -Height/2
;(4, 13, 21)
MeshData(4)\y = -Height/2
MeshData(13)\y = -Height/2
MeshData(21)\y = -Height/2
;(1, 12, 22)
MeshData(1)\y = -Height/2
MeshData(12)\y = -Height/2
MeshData(22)\y = -Height/2
SetMeshData(Mesh, 0, MeshData(), #PB_Mesh_Vertex | #PB_Mesh_UVCoordinate, 0, MeshVertexCount(Mesh)-1)
ProcedureReturn Result
EndProcedure