Main menu 3D

Everything related to 3D programming
User avatar
minimy
Enthusiast
Enthusiast
Posts: 737
Joined: Mon Jul 08, 2013 8:43 pm
Location: off world

Main menu 3D

Post by minimy »

A main menu 3D created with entitys. The menu is like other objects in the scene take care where you put.
You can modify to your needs.

Image

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


If translation=Error: reply="Sorry, Im Spanish": Endif
User avatar
skinkairewalker
Addict
Addict
Posts: 807
Joined: Fri Dec 04, 2015 9:26 pm

Re: Main menu 3D

Post by skinkairewalker »

sugooooy <3


awesome work, thanks :)
Post Reply