;
; ------------------------------------------------------------
;
;   PureBasic - ResizeCamera
;
;    (c) Fantaisie Software
;
; ------------------------------------------------------------
;

#CameraSpeed = 1

IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY
Define.f x=25,y=0,s=1,ps=0.2,px=0.2,py=0.2

If InitEngine3D()
  
  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Models", #PB_3DArchive_FileSystem)
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    
    AmbientColor(RGB(200, 200, 200))
    
    CreateMaterial(0, LoadTexture(0, "r2skin.jpg"))
    CreateEntity(0, LoadMesh(0, "robot.mesh"), MaterialID(0))
    StartEntityAnimation(0, "Walk")
    
    CreateCamera(0, 0, 0, 100, 100)  ; Front camera
    MoveCamera(0, 0, 20, 250, #PB_Absolute)
    CameraBackColor(0, RGB(55, 0, 0))
    
    CreateCamera(1, x, y, s, s) ; Back camera
    MoveCamera(1, 0, 50, 200, #PB_Absolute)
    CameraBackColor(1, RGB(0, 0, 50))
    
    
    CameraRenderMode(1, #PB_Camera_Wireframe)  ; Wireframe for this camera
    
    Repeat
      Screen3DEvents()
      ExamineKeyboard()
      
      RotateEntity(0, 0, 0.3, 0, #PB_Relative)
      
      x + px
      If x<=0  Or x>=(100-s)
        ps=-ps
        px = -px
      EndIf
      
      y + py
      If y<=0  Or y>=(100-s)
        ps=-ps
        py = -py
      EndIf
      
      s	+ ps
      If s<=1 Or s>=100
        ps = -ps
      EndIf
      
      ResizeCamera(1,x,y,s,s)
      
      RenderWorld()
      Screen3DStats()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
  
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf

End