|
@@ -2,6 +2,13 @@ Namespace ted2go
|
|
|
|
|
|
#Import "<mojo3d>"
|
|
#Import "<mojo3d>"
|
|
#Import "<mojo3d-loaders>"
|
|
#Import "<mojo3d-loaders>"
|
|
|
|
+#Import "<reflection>"
|
|
|
|
+
|
|
|
|
+'just too brutal in debug mode!
|
|
|
|
+#If __RELEASE__
|
|
|
|
+#Reflect mojo.graphics
|
|
|
|
+#Reflect mojo3d
|
|
|
|
+#Endif
|
|
|
|
|
|
Using mojo3d..
|
|
Using mojo3d..
|
|
|
|
|
|
@@ -17,38 +24,31 @@ Class SceneDocumentView Extends View
|
|
|
|
|
|
Method OnRender( canvas:Canvas ) Override
|
|
Method OnRender( canvas:Canvas ) Override
|
|
|
|
|
|
- For Local x:=0 Until Width Step 64
|
|
|
|
- For Local y:=0 Until Height Step 64
|
|
|
|
- canvas.Color=(x~y) & 64 ? New Color( .1,.1,.1 ) Else New Color( .05,.05,.05 )
|
|
|
|
- canvas.DrawRect( x,y,64,64 )
|
|
|
|
- Next
|
|
|
|
- Next
|
|
|
|
|
|
+ RequestRender()
|
|
|
|
|
|
- Local model:=_doc.Model
|
|
|
|
- If Not model
|
|
|
|
- canvas.Clear( Color.Sky )
|
|
|
|
|
|
+ If Not _doc.Scene Or Not _doc.Camera
|
|
|
|
+ canvas.Clear( Color.Red )
|
|
Return
|
|
Return
|
|
Endif
|
|
Endif
|
|
|
|
|
|
- RequestRender()
|
|
|
|
-
|
|
|
|
- Global _anim:Float=0
|
|
|
|
-
|
|
|
|
- If Keyboard.KeyDown( Key.A )
|
|
|
|
- If _doc.Model.Animator
|
|
|
|
|
|
+ If _doc.Model And _doc.Model.Animator
|
|
|
|
+ Global _anim:Float=0
|
|
|
|
+ If Keyboard.KeyDown( Key.A )
|
|
_anim+=12.0/60.0
|
|
_anim+=12.0/60.0
|
|
_doc.Model.Animator.Animate( 0,_anim )
|
|
_doc.Model.Animator.Animate( 0,_anim )
|
|
|
|
+ Else
|
|
|
|
+ _anim=0
|
|
Endif
|
|
Endif
|
|
- Else
|
|
|
|
- _anim=0
|
|
|
|
Endif
|
|
Endif
|
|
|
|
|
|
|
|
+ _doc.Scene.Update()
|
|
|
|
+
|
|
_doc.Camera.Render( canvas )
|
|
_doc.Camera.Render( canvas )
|
|
End
|
|
End
|
|
|
|
|
|
Method OnMouseEvent( event:MouseEvent ) Override
|
|
Method OnMouseEvent( event:MouseEvent ) Override
|
|
|
|
|
|
- If Not _doc.Model Return
|
|
|
|
|
|
+ If Not _doc.Camera Or Not _doc.Model Return
|
|
|
|
|
|
Global _v:Vec2i
|
|
Global _v:Vec2i
|
|
Global _f:Bool
|
|
Global _f:Bool
|
|
@@ -74,13 +74,15 @@ Class SceneDocumentView Extends View
|
|
|
|
|
|
Method OnKeyEvent( event:KeyEvent ) Override
|
|
Method OnKeyEvent( event:KeyEvent ) Override
|
|
|
|
|
|
|
|
+ If Not _doc.Camera Or Not _doc.Model Return
|
|
|
|
+
|
|
If event.Type=EventType.KeyDown
|
|
If event.Type=EventType.KeyDown
|
|
Select event.Key
|
|
Select event.Key
|
|
Case Key.R
|
|
Case Key.R
|
|
_doc.Camera.Position=New Vec3f(0,0,-2.5)
|
|
_doc.Camera.Position=New Vec3f(0,0,-2.5)
|
|
_doc.Model.Rotation=New Vec3f(0,0,0)
|
|
_doc.Model.Rotation=New Vec3f(0,0,0)
|
|
Case Key.S
|
|
Case Key.S
|
|
- _doc.Light.CastsShadow=Not _doc.Light.CastsShadow
|
|
|
|
|
|
+ If _doc.Light _doc.Light.CastsShadow=Not _doc.Light.CastsShadow
|
|
Case Key.A
|
|
Case Key.A
|
|
|
|
|
|
End
|
|
End
|
|
@@ -99,22 +101,6 @@ Class SceneDocument Extends Ted2Document
|
|
Super.New( path )
|
|
Super.New( path )
|
|
|
|
|
|
_view=New SceneDocumentView( Self )
|
|
_view=New SceneDocumentView( Self )
|
|
-
|
|
|
|
- _scene=New Scene
|
|
|
|
-
|
|
|
|
- Scene.SetCurrent( _scene )
|
|
|
|
-
|
|
|
|
- _camera=New Camera( _view )
|
|
|
|
- _camera.Near=.01
|
|
|
|
- _camera.Far=10
|
|
|
|
- _camera.MoveZ( -2.5 )
|
|
|
|
-
|
|
|
|
- _light=New Light
|
|
|
|
- _light.RotateX( Pi/2 )
|
|
|
|
-
|
|
|
|
- _model=null
|
|
|
|
-
|
|
|
|
- Scene.SetCurrent( Null )
|
|
|
|
End
|
|
End
|
|
|
|
|
|
Property Scene:Scene()
|
|
Property Scene:Scene()
|
|
@@ -127,30 +113,50 @@ Class SceneDocument Extends Ted2Document
|
|
Return _camera
|
|
Return _camera
|
|
End
|
|
End
|
|
|
|
|
|
- Property Light:Light()
|
|
|
|
-
|
|
|
|
- Return _light
|
|
|
|
- End
|
|
|
|
-
|
|
|
|
Property Model:Model()
|
|
Property Model:Model()
|
|
|
|
|
|
Return _model
|
|
Return _model
|
|
End
|
|
End
|
|
|
|
|
|
|
|
+ Property Light:Light()
|
|
|
|
+
|
|
|
|
+ Return _light
|
|
|
|
+ End
|
|
|
|
+
|
|
Protected
|
|
Protected
|
|
|
|
|
|
Method OnLoad:Bool() Override
|
|
Method OnLoad:Bool() Override
|
|
|
|
|
|
- If _model _model.Destroy()
|
|
|
|
|
|
+ If ExtractExt( Path )=".mojo3d"
|
|
|
|
+
|
|
|
|
+ Print "Loading scene from "+Path
|
|
|
|
+
|
|
|
|
+ _scene=Scene.Load( Path )
|
|
|
|
+
|
|
|
|
+ _camera=Cast<Camera>( _scene.FindEntity( "Camera" ) )
|
|
|
|
+' If _camera _camera.View=_view
|
|
|
|
+
|
|
|
|
+ Return True
|
|
|
|
+ Endif
|
|
|
|
+
|
|
|
|
+ _scene=New Scene
|
|
|
|
|
|
Scene.SetCurrent( _scene )
|
|
Scene.SetCurrent( _scene )
|
|
|
|
+
|
|
|
|
+ _camera=New Camera( _view )
|
|
|
|
+ _camera.Near=.01
|
|
|
|
+ _camera.Far=10
|
|
|
|
+ _camera.MoveZ( -2.5 )
|
|
|
|
+ _camera.AddComponent<FlyBehaviour>()
|
|
|
|
+
|
|
|
|
+ _light=New Light
|
|
|
|
+ _light.RotateX( Pi/2 )
|
|
|
|
|
|
_model=Model.Load( Path )
|
|
_model=Model.Load( Path )
|
|
-
|
|
|
|
- Scene.SetCurrent( Null )
|
|
|
|
-
|
|
|
|
If _model _model.Mesh.FitVertices( New Boxf( -1,1 ) )
|
|
If _model _model.Mesh.FitVertices( New Boxf( -1,1 ) )
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ Scene.SetCurrent( Null )
|
|
|
|
+
|
|
Return True
|
|
Return True
|
|
End
|
|
End
|
|
|
|
|
|
@@ -162,7 +168,6 @@ Class SceneDocument Extends Ted2Document
|
|
Method OnClose() Override
|
|
Method OnClose() Override
|
|
|
|
|
|
_scene.DestroyAllEntities()
|
|
_scene.DestroyAllEntities()
|
|
-
|
|
|
|
End
|
|
End
|
|
|
|
|
|
Method OnCreateView:SceneDocumentView() Override
|
|
Method OnCreateView:SceneDocumentView() Override
|
|
@@ -190,7 +195,11 @@ Class SceneDocumentType Extends Ted2DocumentType
|
|
Method New()
|
|
Method New()
|
|
AddPlugin( Self )
|
|
AddPlugin( Self )
|
|
|
|
|
|
- Extensions=New String[]( ".gltf",".glb",".b3d",".3ds",".obj",".dae",".fbx",".blend",".x" )
|
|
|
|
|
|
+ #If __RELEASE__
|
|
|
|
+ Extensions=New String[]( ".mojo3d",".gltf",".glb",".b3d",".3ds",".obj",".dae",".fbx",".blend",".x" )
|
|
|
|
+ #Else
|
|
|
|
+ Extensions=New String[]( ".gltf",".glb",".b3d",".3ds",".obj",".dae",".fbx",".blend",".x" )
|
|
|
|
+ #Endif
|
|
End
|
|
End
|
|
|
|
|
|
Method OnCreateDocument:Ted2Document( path:String ) Override
|
|
Method OnCreateDocument:Ted2Document( path:String ) Override
|
|
@@ -201,5 +210,4 @@ Class SceneDocumentType Extends Ted2DocumentType
|
|
Private
|
|
Private
|
|
|
|
|
|
Global _instance:=New SceneDocumentType
|
|
Global _instance:=New SceneDocumentType
|
|
-
|
|
|
|
End
|
|
End
|