You can modify to your needs.

Code: Select all
InitEngine3D(#PB_Engine3D_DebugLog):InitSprite():InitKeyboard():InitMouse()
OpenWindow(0, 0,0, 1280,720, "m3D - Menú3D",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0),WindowHeight(0), 0, 0, 0)
CreateCamera(0,0,0,100,100):MoveCamera(0,0,5,-20,#PB_Absolute):CameraLookAt(0,0,5,0):CameraBackColor(0,$332211)
CreateLight(0,$ffffff,3,3,3)
Procedure decoradoTEST()
Protected.f o
Protected mate,mesh,enti, p
Protected tt3D= CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(tt3D))
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0,0,OutputWidth(),OutputHeight(),$ff888888)
Box(0,0,256,4,$ff555555)
Box(0,0,4,256,$ff555555)
For p= 0 To 256 Step 64
Box(p,0,8,32,$ff555555)
Box(0,p,32,8,$ff555555)
LineXY(p,0,p,OutputHeight(),$ff555555)
LineXY(0,p,OutputWidth(),p,$ff555555)
Next p
StopDrawing()
mate= CreateMaterial(#PB_Any,TextureID(tt3D));suelo
mesh= CreatePlane(#PB_Any,20,20,10,10,20,20)
enti= CreateEntity(#PB_Any,MeshID(mesh),MaterialID(mate),0,0,0)
CreateEntityBody(enti,#PB_Entity_StaticBody)
SetEntityCollisionFilter(enti,1<<1,1<<1)
mesh= CreateCube(#PB_Any,1)
; meshLOD= CreatePlane(#PB_Any,0.1,0.1,1,1,1,1)
; AddMeshManualLOD(mesh,meshLOD,30)
; BuildMeshLOD(mesh, 1,30,100)
For p= -10 To 9 ;muros
o= Random(15) * 0.02
enti= CreateEntity(#PB_Any,MeshID(mesh),MaterialID(mate),p+0.5,0.5-o,10.5)
CreateEntityBody(enti,#PB_Entity_StaticBody)
SetEntityCollisionFilter(enti,1<<1,1<<1)
enti= CreateEntity(#PB_Any,MeshID(mesh),MaterialID(mate),p+0.5,0.5-o,-10.5)
CreateEntityBody(enti,#PB_Entity_StaticBody)
SetEntityCollisionFilter(enti,1<<1,1<<1)
enti= CreateEntity(#PB_Any,MeshID(mesh),MaterialID(mate),10.5,0.5-o,p+0.5)
CreateEntityBody(enti,#PB_Entity_StaticBody)
SetEntityCollisionFilter(enti,1<<1,1<<1)
enti= CreateEntity(#PB_Any,MeshID(mesh),MaterialID(mate),-10.5,0.5-o,p+0.5)
CreateEntityBody(enti,#PB_Entity_StaticBody)
SetEntityCollisionFilter(enti,1<<1,1<<1)
Next p
For p=1 To 10 ;obstaculos
x= Random(19)-10 : While x>-3 And x<3 : x= Random(19)-10 : Wend
y= Random(19)-10 : While y>-3 And y<3 : y= Random(19)-10 : Wend
enti= CreateEntity(#PB_Any,MeshID(mesh),MaterialID(mate),x+0.5,0.5,y+0.5)
CreateEntityBody(enti,#PB_Entity_StaticBody)
SetEntityCollisionFilter(enti,1<<1,1<<1)
Next p
enti= CreateEntity(#PB_Any,MeshID(mesh),MaterialID(mate),-1.5,0.02,-1.44)
ScaleEntity(enti,0.9,1,4.5,#PB_Absolute):RotateEntity(enti,12.8,0,0)
CreateEntityBody(enti,#PB_Entity_StaticBody)
SetEntityCollisionFilter(enti,1<<1,1<<1)
enti= CreateEntity(#PB_Any,MeshID(mesh),MaterialID(mate),-1.5,0.5,-4)
CreateEntityBody(enti,#PB_Entity_StaticBody)
SetEntityCollisionFilter(enti,1<<1,1<<1)
enti= CreateEntity(#PB_Any,MeshID(mesh),MaterialID(mate),-1.5,0,-5)
CreateEntityBody(enti,#PB_Entity_StaticBody)
SetEntityCollisionFilter(enti,1<<1,1<<1)
enti= CreateEntity(#PB_Any,MeshID(mesh),MaterialID(mate),-3.5,0.5,-3.5)
CreateEntityBody(enti,#PB_Entity_StaticBody)
SetEntityCollisionFilter(enti,1<<1,1<<1)
CreateLine3D(#PB_Any, -20,0,0,$0000ff, 20,0,0,$00ffff)
CreateLine3D(#PB_Any, 0,0,-20,$ff0000, 0,0,20,$ffff00)
CreateLine3D(#PB_Any, 0,0,0,$004400, 0,20,0,$00ff00)
CreateLine3D(#PB_Any, -10,0,-10,$004400, -10,20,-10,$ffffff)
EndProcedure
Procedure testGAME()
If KeyboardReleased(#PB_Key_C)
SetClipboardText("MoveCamera(camara,"+StrD(CameraX(0),2)+","+StrD(CameraY(0),2)+","+StrD(CameraZ(0),2)+",#PB_Absolute)")
EndIf
If KeyboardReleased(#PB_Key_F1)
WorldDebug(#PB_World_DebugNone)
CameraRenderMode(0,#PB_Camera_Textured)
ElseIf KeyboardReleased(#PB_Key_F2)
WorldDebug(#PB_World_DebugEntity)
ElseIf KeyboardReleased(#PB_Key_F3)
WorldDebug(#PB_World_DebugBody)
ElseIf KeyboardReleased(#PB_Key_F4)
CameraRenderMode(0,#PB_Camera_Wireframe)
ElseIf KeyboardReleased(#PB_Key_F5)
ElseIf KeyboardReleased(#PB_Key_F12)
ClearDebugOutput()
EndIf
EndProcedure
Procedure CameraUserControl(camera,speed.f=0.1,smooth.f=0.1,yfixed.f=1e10)
;pf_shadoko camera, thanks pf_shadoko!
Static.f MouseX,Mousey,depx,depz,sdepx,sdepz, fdf.b
depx=-speed*(KeyboardPushed(#PB_Key_Left)-KeyboardPushed(#PB_Key_Right))
depz=-speed*(KeyboardPushed(#PB_Key_Down)-KeyboardPushed(#PB_Key_Up)-MouseWheel()*40)
; depx=-speed*(KeyboardPushed(#PB_Key_A)-KeyboardPushed(#PB_Key_D))
; depz=-speed*(KeyboardPushed(#PB_Key_S)-KeyboardPushed(#PB_Key_W)-MouseWheel()*20)
If KeyboardReleased(#PB_Key_F12):fdf=1-fdf:If fdf:CameraRenderMode(0,#PB_Camera_Wireframe):Else:CameraRenderMode(0,#PB_Camera_Textured):EndIf:EndIf
MouseX = -MouseDeltaX() * 0.05
MouseY = -MouseDeltaY() * 0.05
RotateCamera(camera, MouseY, MouseX, 0, #PB_Relative)
sdepx+(depx-sdepx)*smooth
sdepz+(depz-sdepz)*smooth
MoveCamera (camera, sdepX, 0, -sdepz)
If yfixed<>1e10:MoveCamera(camera,CameraX(camera),yfixed,CameraZ(camera),#PB_Absolute):EndIf
EndProcedure
decoradoTEST()
;---- MENÚ 3D
Enumeration
#m3D_GAD_TEXT
#m3D_GAD_BUTTON
#m3D_GAD_TOGGLE
#m3D_GAD_SLIDER
#m3D_GAD_MULTI
EndEnumeration
Structure menu3D_offTime
e.i
time.i
EndStructure
Structure menu3D_gadg_item_stru
e.i
txt.s
state.b
EndStructure
Structure menu3D_gadg_stru
e.i
type.a
txt.s
w.f
h.f
state.b
tt3d.i ;textura
mate.i ;material
List item.menu3D_gadg_item_stru()
EndStructure
Structure menu3D_stru
ink.l
paper.l
inkHigh.l
meshPlane.i
meshCube.i
meshSphere.i
tt3Dw.c
tt3Dh.c
sprMouse.i
fontN.i
fontG.i
cursor.i
mateItemOn.i
mateItemOff.i
nodo.i
; curTt3D.i
; curMate.i
; curEnti.i
List gad.menu3D_gadg_stru()
List off.menu3D_offTime()
EndStructure
Global m3D.menu3D_stru
Procedure m3dCreateMouseCursor(color.l=$cc55ffff,borde.l=$ff000000)
Protected sprMouse= CreateSprite(#PB_Any,40,40,#PB_Sprite_AlphaBlending)
Protected i= CreateImage(#PB_Any,SpriteWidth(sprMouse),SpriteHeight(sprMouse),32,#PB_Image_Transparent)
StartVectorDrawing(ImageVectorOutput(i))
VectorSourceColor($77000000)
TranslateCoordinates(4,7)
AddPathSegments("M 0 0 L 31 15 L 31 31 L 15 31 L 0 0 C")
FillPath()
ResetCoordinates()
VectorSourceColor(color)
AddPathSegments("M 0 0 L 31 15 L 31 31 L 15 31 L 0 0 C")
FillPath(#PB_Path_Preserve)
VectorSourceColor(borde)
StrokePath(2)
StopVectorDrawing()
StartDrawing(SpriteOutput(sprMouse))
DrawingMode(#PB_2DDrawing_AllChannels)
DrawAlphaImage(ImageID(i),0,0)
StopDrawing()
FreeImage(i)
ProcedureReturn sprMouse
EndProcedure
Procedure m3Dini(paper.l=$aa221100,ink.l=$ffff3322,highlight.l=$ffffaa22, tt3dw.c=64,tt3dh.c=64)
m3d\ink= ink
m3d\inkHigh= highlight
m3d\paper= paper
m3d\meshSphere= CreateSphere(#PB_Any,0.5)
m3d\meshCube= CreateCube(#PB_Any,1)
; m3d\meshPlane= CreatePlane(#PB_Any,1,1,1,1,1,1)
m3d\meshPlane= CreateMesh(#PB_Any)
MeshVertex( 0.5, 0.5,0, 0,0, $ffffff, 0,0,1)
MeshVertex(-0.5, 0.5,0, 1,0, $ffffff, 0,0,1)
MeshVertex(-0.5,-0.5,0, 1,1, $ffffff, 0,0,1)
MeshVertex( 0.5,-0.5,0, 0,1, $ffffff, 0,0,1)
MeshFace(3,2,1,0)
FinishMesh(#True)
BuildMeshShadowVolume(m3d\meshPlane)
; BuildMeshTangents(m3d\meshPlane)
;cursor 3D
; m3d\curTt3D= CreateTexture(#PB_Any,400,100)
; StartDrawing(TextureOutput(m3d\curTt3D))
; DrawingMode(#PB_2DDrawing_AllChannels)
; Box(0,0,OutputWidth(),OutputHeight(),$ffffffff)
; Box(4,4,OutputWidth()-8,OutputHeight()-8,$77000000)
; StopDrawing()
; m3d\curMate= CreateMaterial(#PB_Any,TextureID(m3d\curTt3D))
; MaterialFilteringMode(m3d\curMate,#PB_Material_Trilinear)
; MaterialBlendingMode(m3d\curMate,#PB_Material_AlphaBlend)
; DisableMaterialLighting(m3d\curMate,0)
; m3d\curEnti= CreateEntity(#PB_Any,MeshID(m3D\meshPlane),MaterialID(m3d\curMate))
m3d\mateItemOff= CreateMaterial(#PB_Any,#Null, RGB(Red(m3D\ink),Green(m3D\ink),Blue(m3D\ink)))
m3d\mateItemOn= CreateMaterial(#PB_Any,#Null, RGB(Red(m3D\inkHigh),Green(m3D\inkHigh),Blue(m3D\inkHigh)))
m3d\tt3Dw= tt3dw
m3d\tt3Dh= tt3dh
m3d\fontN= LoadFont(#PB_Any,"Arial",28,#PB_Font_Bold)
m3d\fontG= LoadFont(#PB_Any,"Arial",44,#PB_Font_Bold)
;cursor ratón
m3d\sprMouse= CreateSprite(#PB_Any,40,40,#PB_Sprite_AlphaBlending)
Protected i= CreateImage(#PB_Any,SpriteWidth(m3d\sprMouse),SpriteHeight(m3d\sprMouse),32,#PB_Image_Transparent)
StartVectorDrawing(ImageVectorOutput(i))
VectorSourceColor($77000000)
TranslateCoordinates(4,7)
AddPathSegments("M 0 0 L 31 15 L 31 31 L 15 31 L 0 0 C")
FillPath()
ResetCoordinates()
VectorSourceColor(m3d\inkHigh)
AddPathSegments("M 0 0 L 31 15 L 31 31 L 15 31 L 0 0 C")
FillPath(#PB_Path_Preserve)
VectorSourceColor(m3d\ink)
StrokePath(2)
StopVectorDrawing()
StartDrawing(SpriteOutput(m3d\sprMouse))
DrawingMode(#PB_2DDrawing_AllChannels)
DrawAlphaImage(ImageID(i),0,0)
StopDrawing()
FreeImage(i)
m3d\nodo= CreateNode(#PB_Any)
EndProcedure
Procedure m3Ddraw()
Protected x,y,r=15, it
Protected.s txt
StartDrawing(TextureOutput(m3d\gad()\tt3d))
Select m3D\gad()\type
Case #m3D_GAD_MULTI
txt= StringField(m3d\gad()\txt, m3d\gad()\state+1,"|")
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0,0,OutputWidth(),OutputHeight(),$00000000)
RoundBox(0,0,OutputWidth(),OutputHeight(),r,r, m3d\ink)
RoundBox(4,4,OutputWidth()-8,OutputHeight()-8,r,r, m3d\paper)
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
DrawingFont(FontID(m3d\fontN))
x= (OutputWidth()-TextWidth(txt))/2
y= ((OutputHeight()*0.9)-TextHeight(txt))/2
DrawText(x,y,txt, m3d\ink)
Case #m3D_GAD_SLIDER
txt= StringField(m3d\gad()\txt, m3d\gad()\state+1,"|")
If txt= ""
txt= m3d\gad()\txt
EndIf
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0,0,OutputWidth(),OutputHeight(),$00000000)
RoundBox(0,0,OutputWidth(),OutputHeight(),r,r, m3d\ink)
RoundBox(4,4,OutputWidth()-8,OutputHeight()-8,r,r, m3d\paper)
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
DrawingFont(FontID(m3d\fontN))
x= (OutputWidth()-TextWidth(txt))/2
y= ((OutputHeight()*0.9)-TextHeight(txt))/2
DrawText(x,y,txt, m3d\ink)
Case #m3D_GAD_TEXT
txt= m3d\gad()\txt
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0,0,OutputWidth(),OutputHeight(),$00000000)
; If m3d\gad()\state: tinta= m3d\inkHigh: Else: tinta= m3d\ink: EndIf
tinta= m3d\ink
RoundBox(0,0,OutputWidth(),OutputHeight(),r,r, m3d\paper)
; RoundBox(4,4,OutputWidth()-8,OutputHeight()-8,r,r, m3d\paper)
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
DrawingFont(FontID(m3d\fontN))
x= (OutputWidth()-TextWidth(txt))/2
y= ((OutputHeight()*0.9)-TextHeight(txt))/2
DrawText(x,y,txt, tinta)
Case #m3D_GAD_BUTTON, #m3D_GAD_TOGGLE
txt= StringField(m3d\gad()\txt, m3d\gad()\state+1,"|")
Debug Str(m3D\gad()\state)+" "+Str(m3D\gad()\type)+" "+txt
If txt= ""
txt= m3d\gad()\txt
EndIf
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0,0,OutputWidth(),OutputHeight(),$00000000)
If m3d\gad()\state: tinta= m3d\inkHigh: Else: tinta= m3d\ink: EndIf
RoundBox(0,0,OutputWidth(),OutputHeight(),r,r, tinta)
RoundBox(4,4,OutputWidth()-8,OutputHeight()-8,r,r, m3d\paper)
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
DrawingFont(FontID(m3d\fontN))
x= (OutputWidth()-TextWidth(txt))/2
y= ((OutputHeight()*0.9)-TextHeight(txt))/2
DrawText(x,y,txt, tinta)
EndSelect
StopDrawing()
; If IsMaterial(m3d\gad()\mate):FreeMaterial(m3d\gad()\mate):EndIf
RemoveMaterialLayer(m3d\gad()\mate)
AddMaterialLayer(m3d\gad()\mate, TextureID(m3d\gad()\tt3d),#PB_Material_AlphaBlend)
EndProcedure
Procedure m3Dgad(x.f,y.f,z.f, w.f,h.f, txt.s, state.i, type.a=#m3D_GAD_BUTTON,mesh.i=-1,param.b=0)
If mesh=-1:mesh= m3d\meshPlane: EndIf
AddElement(m3d\gad())
With m3d\gad()
\w= w
\h= h
\txt= txt
\type= type
\state= state
\tt3d= CreateTexture(#PB_Any, m3d\tt3Dw * w, m3d\tt3Dh * h)
m3d\gad()\mate= CreateMaterial(#PB_Any,#Null,0)
MaterialFilteringMode(m3d\gad()\mate,#PB_Material_Trilinear)
MaterialBlendingMode(m3d\gad()\mate,#PB_Material_Color)
DisableMaterialLighting(m3d\gad()\mate,0)
AddMaterialLayer(m3d\gad()\mate, TextureID(m3d\gad()\tt3d),#PB_Material_AlphaBlend)
\e= CreateEntity(#PB_Any,MeshID(mesh),MaterialID(\mate),x,y,z)
ScaleEntity(\e, w,h,h,#PB_Absolute)
AttachNodeObject(m3d\nodo, EntityID(\e))
If m3d\gad()\type= #m3D_GAD_SLIDER
w= (\w / param); * 0.9
h= \h * 0.2
For p= 1 To param
AddElement(m3d\gad()\item())
m3d\gad()\item()\e= CreateEntity(#PB_Any,MeshID(m3d\meshPlane),MaterialID(m3d\mateItemOff), x+(\w/2)+(w/2)-(p*w), y-\h*0.5,-0.02)
ScaleEntity(m3d\gad()\item()\e, w*0.9,0.3,1,#PB_Absolute)
If ListIndex(m3d\gad()\item()) =< m3d\gad()\state
SetEntityMaterial(m3d\gad()\item()\e, MaterialID(m3d\mateItemOn))
Else
SetEntityMaterial(m3d\gad()\item()\e, MaterialID(m3d\mateItemOff))
EndIf
AttachNodeObject(m3d\nodo, EntityID(m3d\gad()\item()\e))
Next p
EndIf
m3Ddraw()
; If mesh= m3d\meshCube
; RotateEntity(\e,0,0,0,#PB_Absolute)
; Else
; If mesh= m3d\meshPlane
; RotateEntity(\e,-90,0,0,#PB_Absolute)
; EndIf
EndWith
ProcedureReturn m3d\gad()\e
EndProcedure
Procedure m3Devent()
Static.b lmb
Protected.b item
Protected gadget
If MouseButton(#PB_MouseButton_Left)
If Not lmb
lmb=1
e= MousePick(0,MouseX(),MouseY())
; Debug e
If e>-1
ForEach m3D\gad()
If e= m3d\gad()\e
Select m3d\gad()\type
Case #m3D_GAD_MULTI
m3d\gad()\state + 1 : If m3d\gad()\state >= CountString(m3D\gad()\txt,"|"): m3d\gad()\state= 0: EndIf
m3Ddraw()
Case #m3D_GAD_TOGGLE
m3d\gad()\state !1
m3Ddraw()
If m3d\gad()\state
; RotateEntity(m3d\gad()\e,25,0,0,#PB_Absolute)
ScaleEntity(m3d\gad()\e,m3d\gad()\w*1.05,m3d\gad()\h*1.05,1,#PB_Absolute)
Else
; RotateEntity(m3d\gad()\e,0,0,0,#PB_Absolute)
ScaleEntity(m3d\gad()\e,m3d\gad()\w,m3d\gad()\h,1,#PB_Absolute)
EndIf
ProcedureReturn m3d\gad()\e
Case #m3D_GAD_BUTTON
m3d\gad()\state= 1
; RotateEntity(m3d\gad()\e,25,0,0,#PB_Absolute)
m3Ddraw()
ScaleEntity(m3d\gad()\e,m3d\gad()\w*1.05,m3d\gad()\h*1.05,1,#PB_Absolute)
AddElement(m3d\off())
m3d\off()\e= m3d\gad()\e
m3d\off()\time= ElapsedMilliseconds()+250
ProcedureReturn m3d\gad()\e
EndSelect
; ScaleEntity(m3d\curEnti, m3d\gad()\w,m3d\gad()\h,1,#PB_Absolute)
; MoveEntity(m3d\curEnti, EntityX(m3d\gad()\e),EntityY(m3d\gad()\e),EntityZ(m3d\gad()\e)-0.1,#PB_Absolute)
; Debug m3d\gad()\txt
EndIf
ForEach m3d\gad()\item()
If ListIndex(m3d\gad()\item()) =< m3d\gad()\state
SetEntityMaterial(m3d\gad()\item()\e, MaterialID(m3d\mateItemOn))
Else
SetEntityMaterial(m3d\gad()\item()\e, MaterialID(m3d\mateItemOff))
EndIf
If e= m3d\gad()\item()\e
m3d\gad()\state= ListIndex(m3d\gad()\item())
; Debug m3d\gad()\state
; m3Ddraw()
gadget= m3d\gad()\e
item=#True
EndIf
Next
Next
If item
ForEach m3d\gad()
ForEach m3d\gad()\item()
If ListIndex(m3d\gad()\item()) =< m3d\gad()\state
SetEntityMaterial(m3d\gad()\item()\e, MaterialID(m3d\mateItemOn))
Else
SetEntityMaterial(m3d\gad()\item()\e, MaterialID(m3d\mateItemOff))
EndIf
Next
If gadget= m3d\gad()\e
ProcedureReturn m3d\gad()\e
EndIf
Next
EndIf
EndIf
EndIf
Else
lmb= 0
EndIf
If KeyboardReleased(#PB_Key_W)
m3d\cursor-1: If m3d\cursor < 0: m3d\cursor=ListSize(m3d\gad())-1: EndIf
SelectElement(m3d\gad(),m3d\cursor): m3dDraw()
ElseIf KeyboardReleased(#PB_Key_S)
m3d\cursor+1: If m3d\cursor >= ListSize(m3d\gad()): m3d\cursor=0: EndIf
SelectElement(m3d\gad(),m3d\cursor): m3dDraw()
EndIf
;desactiva botón
ForEach m3d\off()
If ElapsedMilliseconds() > m3d\off()\time
ForEach m3d\gad()
If m3d\gad()\e= m3d\off()\e
m3d\gad()\state= 0
m3Ddraw()
RotateEntity(m3d\gad()\e,0,0,0,#PB_Absolute)
ScaleEntity(m3d\gad()\e,m3d\gad()\w,m3d\gad()\h,1,#PB_Absolute)
Break
EndIf
Next
DeleteElement(m3d\off())
Break
EndIf
Next
ProcedureReturn 0
EndProcedure
m3Dini()
l1= m3Dgad(-10,12,0, 5,0.9,"MENÚ",0,#m3D_GAD_TEXT)
l1= m3Dgad(-10,11,0, 5,0.9,"Jugar",0,#m3D_GAD_BUTTON)
b1= m3Dgad(-10,10,0, 5,0.9,"Nuevo",0,#m3D_GAD_BUTTON)
b2= m3Dgad(-10, 9,0, 5,0.9,"Carga",0,#m3D_GAD_BUTTON)
b3= m3Dgad(-10, 8,0, 5,0.9,"Graba",0,#m3D_GAD_BUTTON)
t1= m3Dgad(-10, 7,0, 5,0.9,"1 Player|2 Players|",0,#m3D_GAD_TOGGLE);, m3d\meshCube)
t2= m3Dgad(-10, 6,0, 5,0.9,"Shadows Off|Shadows ON|",0,#m3D_GAD_TOGGLE);, m3d\meshCube)
v1di= m3Dgad(-10, 5,0, 5,0.9,"Fácil|Normal|Díficil|",0,#m3D_GAD_MULTI)
t3= m3Dgad(-10, 4,0, 5,0.9,"Quality",3,#m3D_GAD_SLIDER,-1,8);, m3d\meshCube)
exit= m3Dgad(-10, 2,0, 5,0.9,"Salir",0,#m3D_GAD_BUTTON)
Repeat
While WindowEvent():Wend
ExamineMouse(): ExamineKeyboard()
testGAME()
m3Dev= m3Devent()
If m3Dev
Select m3Dev
Case b1
; Debug "B1"
Case t1
; Debug "T1"
Case exit
Break
EndSelect
EndIf
CameraUserControl(0,0.1)
If KeyboardReleased(#PB_Key_V)
EndIf
If KeyboardReleased(#PB_Key_C)
SetClipboardText("MoveCamera(camara,"+StrD(CameraX(camara),2)+","+StrD(CameraY(camara),2)+","+StrD(CameraZ(camara),2)+",#PB_Absolute)")
EndIf
; RotateNode(m3d\nodo,1,0,0,#PB_Relative)
renderTime= RenderWorld()
DisplayTransparentSprite(m3d\sprMouse, MouseX(),MouseY())
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End

