Mark Sibly 7 years ago
parent
commit
7208fb5da7

+ 1 - 1
modules/mojo3d/components/animator.monkey2

@@ -194,7 +194,7 @@ Class Animator Extends Component
 	Field _time0:Float
 	
 	Field _animation:Animation
-	Field _speed:Float
+	Field _speed:Float=1
 	Field _time:Float
 	
 	Field _finished:Void()

+ 15 - 5
modules/mojo3d/components/flybehaviour.monkey2

@@ -17,9 +17,18 @@ Class FlyBehaviour Extends Behaviour
 		_speed=speed
 	End
 	
+	Property RotSpeed:Float()
+		
+		Return _rspeed
+		
+	Setter( rspeed:Float )
+		
+		_rspeed=rspeed
+	End
+	
 	Method OnUpdate( elapsed:Float ) Override
 		
-		Local rspeed:=_speed*(elapsed/(1.0/60.0))
+		Local rspeed:=_rspeed * 60.0 * elapsed
 		
 		Local entity:=Entity
 		
@@ -38,9 +47,9 @@ Class FlyBehaviour Extends Behaviour
 		Endif
 	
 		If Keyboard.KeyDown( Key.A )
-			entity.MoveZ( .1 )
+			entity.MoveZ( _speed * 60 * elapsed )
 		Else If Keyboard.KeyDown( Key.Z )
-			entity.MoveZ( -.1 )
+			entity.MoveZ( -_speed * 60 * elapsed )
 		Endif
 		
 		If Mouse.ButtonDown( MouseButton.Left )
@@ -49,7 +58,7 @@ Class FlyBehaviour Extends Behaviour
 			Else If Mouse.X>view.Width/3*2
 				entity.RotateY( -rspeed,True )
 			Else
-				entity.Move( New Vec3f( 0,0,.1 ) )
+				entity.Move( New Vec3f( 0,0,_speed * 60 * elapsed ) )
 			Endif
 		Endif
 		
@@ -57,6 +66,7 @@ Class FlyBehaviour Extends Behaviour
 	
 	Private
 	
-	Field _speed:Float=3.0
+	Field _speed:Float=.1
+	Field _rspeed:Float=3.0
 	
 End

+ 6 - 5
modules/mojo3d/mojo3d.monkey2

@@ -56,17 +56,18 @@ Using opengl..
 
 Function Main()
 	
+	SetConfig( "MOJO_OPENGL_PROFILE","compatibility" )
+	
 #If __DESKTOP_TARGET__ Or __WEB_TARGET__
 
-	SetEnv( "MOJO3D_DEFAULT_RENDERER","deferred" )
+	SetConfig( "MOJO3D_DEFAULT_RENDERER","deferred" )
 	
 #Else if __MOBILE_TARGET__
 	
-	SetEnv( "MOJO3D_DEFAULT_RENDERER","forward" )
-	
-	SetEnv( "MOJO3D_FORWARD_RENDERER_DIRECT",1 )
+	SetConfig( "MOJO3D_DEFAULT_RENDERER","forward" )
 	
-	SetEnv( "MOJO_DEPTH_BUFFER_BITS",16 )
+	SetConfig( "MOJO3D_FORWARD_RENDERER_DIRECT",1 )
+	SetConfig( "MOJO_DEPTH_BUFFER_BITS",16 )
 	
 #endif
 	

+ 28 - 24
modules/mojo3d/render/renderer.monkey2

@@ -54,12 +54,12 @@ Class Renderer
 		_psmSize=size
 	End
 	
-	Function SetCurrent( renderer:Renderer )
+'	Function SetCurrent( renderer:Renderer )
 		
-		DebugAssert( Not _current,"Renderer.Current already set" )
+'		DebugAssert( Not _current,"Renderer.Current already set" )
 		
-		_current=renderer
-	End
+'		_current=renderer
+'	End
 	
 	#rem monkeydoc Gets the current renderer.
 	
@@ -70,29 +70,28 @@ Class Renderer
 	#end
 	Function GetCurrent:Renderer()
 		
-		If _current Return _current
-		
-		Select( GetConfig( "MOJO3D_DEFAULT_RENDERER" ) )
-		Case "deferred"
-			_current=New DeferredRenderer
-		Case "forward"
-			_current=New ForwardRenderer
-		Default
-#If Not __MOBILE_TARGET__					
-			_current=New DeferredRenderer
-#else
-			_current=New ForwardRenderer
-#Endif
-		End
+		If Not _current
+			
+			Select( GetConfig( "MOJO3D_DEFAULT_RENDERER" ) )
+			Case "deferred"
+				_current=New DeferredRenderer
+			Case "forward"
+				_current=New ForwardRenderer
+			Default
+	#If Not __MOBILE_TARGET__					
+				_current=New DeferredRenderer
+	#else
+				_current=New ForwardRenderer
+	#Endif
+			End
+		Endif
 		
 		Return _current
 	End
 	
-	Internal
-
-	#rem monkeydoc @hidden
+	#rem monkeydoc @hidden DON'T USE! WILL CHANGE!
 	#end
-	Method Render( scene:Scene,camera:Camera,device:GraphicsDevice )
+	Method Render( scene:Scene,camera:Camera,device:GraphicsDevice ) Virtual
 
 		'***** validate stuff *****
 			
@@ -106,7 +105,7 @@ Class Renderer
 		
 		_csmSplitDepths[0]=camera.Near
 		For Local i:=1 Until 5
-			_csmSplitDepths[i]=_csmSplitDepths[i-1]+_csmSplits[i-1]
+			_csmSplitDepths[i]=Min( _csmSplitDepths[i-1]+_csmSplits[i-1],camera.Far )
 		Next
 		
 		Local time:=Float( Now() )
@@ -189,7 +188,7 @@ Class Renderer
 		_renderCamera=Null
 		
 		_renderScene=Null
-	End
+	End	
 	
 	Property ShaderDefs:String()
 		
@@ -204,6 +203,11 @@ Class Renderer
 	Method OnRender( scene:Scene,camera:Camera,device:GraphicsDevice ) Virtual
 	End
 	
+	Method New()
+		
+		_current=Self
+	End
+	
 	Method Init( linearOutput:Bool )
 		
 		_linearOutput=linearOutput

+ 8 - 1
modules/mojo3d/scene/entity.monkey2

@@ -165,7 +165,7 @@ Class Entity Extends DynamicObject
 	
 	#rem monkeydoc World space transformation matrix.
 	
-	The world matrix combines the world position, basis matrix and scale of the entity into a single affine 4x4 matrix.
+	The world matrix combines the world position, basis matrix and scale of the entity into a single affine 3x4 matrix.
 	
 	#end
 	Property Matrix:AffineMat4f()
@@ -176,6 +176,13 @@ Class Entity Extends DynamicObject
 		Endif
 		
 		Return _W
+	
+	Setter( matrix:AffineMat4f )
+		
+		Local scale:=matrix.m.GetScaling()
+		Basis=matrix.m.Scale( 1/scale.x,1/scale.y,1/scale.z )
+		Position=matrix.t
+		Scale=scale
 	End
 	
 	#rem monkeydoc Inverse world space transformation matrix.

+ 1 - 15
modules/mojo3d/scene/scene.monkey2

@@ -95,17 +95,6 @@ Class Scene Extends DynamicObject
 		_ambientDiffuse=color
 	End
 	
-	#rem monkeydoc Renderer for the scene.
-	#end
-	Property Renderer:Renderer()
-		
-		Return _renderer
-	
-	Setter( renderer:Renderer )
-		
-		_renderer=renderer
-	End
-	
 	#rem monkeydoc Adds a post effect to the scene.
 	#end
 	Method AddPostEffect( postEffect:PostEffect )
@@ -192,7 +181,7 @@ Class Scene Extends DynamicObject
 	#end
 	Function SetCurrent( scene:Scene )
 		
-		DebugAssert( Not _current,"Scene.Current already set" )
+'		DebugAssert( Not _current,"Scene.Current already set" )
 		
 		_current=scene
 	End
@@ -247,11 +236,8 @@ Class Scene Extends DynamicObject
 	Field _clearColor:Color
 	Field _ambientDiffuse:Color
 	
-	Field _renderer:Renderer
-	
 	Field _postEffects:=New Stack<PostEffect>
 	
-	
 	Field _rootEntities:=New Stack<Entity>
 	
 	Field _cameras:=New Stack<Camera>

+ 5 - 1
modules/mojo3d/tests/cubes.monkey2

@@ -24,6 +24,10 @@ Class MyWindow Extends Window
 
 		Super.New( title,width,height,flags )
 		
+		Print opengl.glGetString( opengl.GL_VERSION )
+		
+		SwapInterval=0
+		
 		_scene=Scene.GetCurrent()
 		
 		_scene.ClearColor=Color.Sky
@@ -72,7 +76,7 @@ Class MyWindow Extends Window
 End
 
 Function Main()
-
+	
 	New AppInstance
 	
 	New MyWindow

+ 10 - 19
modules/mojo3d/tests/ducks.monkey2

@@ -13,21 +13,10 @@ Using std..
 Using mojo..
 Using mojo3d..
 
-Function Main()
-
-	New AppInstance
-	
-	New MyWindow
-	
-	App.Run()
-End
-
 Class MyWindow Extends Window
 	
 	Field _scene:Scene
 	
-	Field _fog:FogEffect
-
 	Field _camera:Camera
 	
 	Field _light:Light
@@ -44,20 +33,14 @@ Class MyWindow Extends Window
 		
 		Print "GL_VERSION="+opengl.glGetString( opengl.GL_VERSION )
 		
+		'SwapInterval=0
+		
 		'create scene
 		'		
 		_scene=Scene.GetCurrent()
 		
 		_scene.ClearColor=Color.Sky
 		
-		'add fog effect to scene
-		'		
-'		_fog=New FogEffect
-'		_fog.Color=Color.Sky
-'		_fog.Near=0
-'		_fog.Far=50
-'		_scene.AddPostEffect( _fog )
-		
 		'create camera
 		'
 		_camera=New Camera
@@ -141,3 +124,11 @@ Class MyWindow Extends Window
 	
 End
 
+Function Main()
+
+	New AppInstance
+	
+	New MyWindow
+	
+	App.Run()
+End

+ 8 - 2
modules/mojo3d/tests/sprites.monkey2

@@ -31,6 +31,10 @@ Class MyWindow Extends Window
 
 		Super.New( title,width,height,flags )
 		
+		Print opengl.glGetString( opengl.GL_VERSION )
+		
+		SwapInterval=0
+		
 		_scene=Scene.GetCurrent()
 		
 		_scene.SkyTexture=Texture.Load( "asset::miramar-skybox.jpg",TextureFlags.FilterMipmap|TextureFlags.Cubemap )
@@ -64,13 +68,13 @@ Class MyWindow Extends Window
 		
 		material.AlphaDiscard=1.0/255.0
 		
-		For Local i:=0 Until 1000
+		For Local i:=0 Until 10000
 			
 			Local sprite:=New Sprite( material )
 			
 			sprite.Move( Rnd(-50,50),0,Rnd(-50,50) )
 			
-			sprite.Scale=New Vec3f( Rnd(2,3),Rnd(3,5),1 )
+			sprite.Scale=New Vec3f( Rnd(2,3),Rnd(4,5),1 )
 			
 			sprite.Handle=New Vec2f( .5,0 )
 			
@@ -104,6 +108,8 @@ End
 
 Function Main()
 	
+'	SetConfig( "MOJO_OPENGL_PROFILE","es" )
+	
 	New AppInstance
 	
 	New MyWindow