Kaynağa Gözat

renamed Constraint->Joint, PointToPointConstraint->BallSocketJoint, added jointchain test/scene.

Mark Sibly 7 yıl önce
ebeveyn
işleme
8ddb8c361c

+ 8 - 0
VERSIONS.TXT

@@ -1,6 +1,14 @@
 
 ***** Monkey-v2018.05 Mx2cc-v1.1.12 Ted2go-2.10 *****
 
+Renamed mojo3d Constraint->Joint and PointToPointConstraint->BallSocketJoint.
+
+Added mojo3d support for 'spherical' sky textures. Also added TextureFlags.Envmap which must be used for envmap textures. Previously, cubemap+mipmap implied envmap but this is no longer true.
+
+Fixed a very gnarly bug in garbage collector. Thanks Mac767!
+
+Changed emscripten module builds so they generate .bc files instead of .a for a minor link speed up.
+
 Added experimental spot and point light texturing via new Light.Texture property. See tests/spotlight and tests/room for demos.
 
 Added RigidBody.LinearFactor and RigidBody.Angular factor properties - untested!

+ 4231 - 0
jointchain-scene.mojo3d

@@ -0,0 +1,4231 @@
+{
+	"assetsDir":"modules/mojo3d/tests/assets/",
+	"instances":[{
+		"ctor":{
+			"args":[true],
+			"decl":"mojo3d.Scene.New",
+			"type":"Void(Bool)"
+		},
+		"id":0,
+		"state":{
+			"AmbientLight":[0.05000000074505806,0.15000000596046448,0.25,0.25],
+			"ClearColor":[0.20000000298023224,0.60000002384185791,1,1],
+			"FogColor":[0.20000000298023224,0.60000002384185791,1,1],
+			"FogFar":200
+		},
+		"type":"mojo3d.Scene"
+	},{
+		"ctor":{
+			"args":[null],
+			"decl":"mojo3d.Camera.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":1,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,2.5,-5]
+		},
+		"type":"mojo3d.Camera"
+	},{
+		"ctor":{
+			"args":["@1"],
+			"decl":"mojo3d.FlyBehaviour.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":2,
+		"type":"mojo3d.FlyBehaviour"
+	},{
+		"ctor":{
+			"args":[null],
+			"decl":"mojo3d.Light.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":3,
+		"state":{
+			"CastsShadow":true,
+			"LocalMatrix":[0.70710676908493042,0,0.70710676908493042,-0.49999997019767761,0.70710676908493042,0.49999997019767761,-0.49999997019767761,-0.70710676908493042,0.49999997019767761,0,0,0]
+		},
+		"type":"mojo3d.Light"
+	},{
+		"ctor":{
+			"args":[[0.69999998807907104,1,0,1],1,1],
+			"decl":"mojo3d.PbrMaterial.New",
+			"type":"Void(std.graphics.Color,Float,Float)"
+		},
+		"id":4,
+		"type":"mojo3d.PbrMaterial"
+	},{
+		"ctor":{
+			"args":[[-100,-1,-100,100,0,100],1,1,1],
+			"decl":"mojo3d.Mesh.CreateBox",
+			"type":"mojo3d.Mesh(std.geom.Box<monkey.types.Float>,Int,Int,Int)"
+		},
+		"id":5,
+		"type":"mojo3d.Mesh"
+	},{
+		"ctor":{
+			"args":["@5","@4",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Mesh,mojo3d.Material,mojo3d.Entity)"
+		},
+		"id":6,
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@6"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":7,
+		"state":{
+			"Box":[-100,-1,-100,100,0,100]
+		},
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@6"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":8,
+		"state":{
+			"Mass":0
+		},
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":[[1,0,0,1],0.05000000074505806,0.20000000298023224],
+			"decl":"mojo3d.PbrMaterial.New",
+			"type":"Void(std.graphics.Color,Float,Float)"
+		},
+		"id":9,
+		"type":"mojo3d.PbrMaterial"
+	},{
+		"ctor":{
+			"args":[[-0.10000000149011612,-0.44999998807907104,-0.10000000149011612,0.10000000149011612,0.44999998807907104,0.10000000149011612],1,1,1],
+			"decl":"mojo3d.Mesh.CreateBox",
+			"type":"mojo3d.Mesh(std.geom.Box<monkey.types.Float>,Int,Int,Int)"
+		},
+		"id":10,
+		"type":"mojo3d.Mesh"
+	},{
+		"ctor":{
+			"args":["@10","@9",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Mesh,mojo3d.Material,mojo3d.Entity)"
+		},
+		"id":11,
+		"state":{
+			"Visible":false
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@11"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":12,
+		"state":{
+			"Box":[-0.10000000149011612,-0.44999998807907104,-0.10000000149011612,0.10000000149011612,0.44999998807907104,0.10000000149011612]
+		},
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@11"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":13,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":14,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,10,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@14","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":15,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@14","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":16,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":17,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,11,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@17","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":18,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@17","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":19,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@17"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":20,
+		"state":{
+			"ConnectedBody":"@16",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":21,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,12,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@21","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":22,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@21","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":23,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@21"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":24,
+		"state":{
+			"ConnectedBody":"@19",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":25,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,13,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@25","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":26,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@25","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":27,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@25"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":28,
+		"state":{
+			"ConnectedBody":"@23",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":29,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,14,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@29","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":30,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@29","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":31,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@29"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":32,
+		"state":{
+			"ConnectedBody":"@27",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":33,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,15,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@33","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":34,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@33","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":35,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@33"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":36,
+		"state":{
+			"ConnectedBody":"@31",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":37,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,16,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@37","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":38,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@37","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":39,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@37"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":40,
+		"state":{
+			"ConnectedBody":"@35",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":41,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,17,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@41","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":42,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@41","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":43,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@41"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":44,
+		"state":{
+			"ConnectedBody":"@39",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":45,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,18,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@45","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":46,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@45","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":47,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@45"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":48,
+		"state":{
+			"ConnectedBody":"@43",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":49,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,19,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@49","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":50,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@49","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":51,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@49"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":52,
+		"state":{
+			"ConnectedBody":"@47",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":53,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,20,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@53","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":54,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@53","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":55,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@53"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":56,
+		"state":{
+			"ConnectedBody":"@51",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":57,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,21,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@57","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":58,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@57","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":59,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@57"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":60,
+		"state":{
+			"ConnectedBody":"@55",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":61,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,22,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@61","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":62,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@61","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":63,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@61"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":64,
+		"state":{
+			"ConnectedBody":"@59",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":65,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,23,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@65","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":66,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@65","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":67,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@65"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":68,
+		"state":{
+			"ConnectedBody":"@63",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":69,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,24,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@69","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":70,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@69","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":71,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@69"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":72,
+		"state":{
+			"ConnectedBody":"@67",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":73,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,25,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@73","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":74,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@73","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":75,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@73"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":76,
+		"state":{
+			"ConnectedBody":"@71",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":77,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,26,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@77","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":78,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@77","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":79,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@77"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":80,
+		"state":{
+			"ConnectedBody":"@75",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":81,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,27,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@81","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":82,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@81","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":83,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@81"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":84,
+		"state":{
+			"ConnectedBody":"@79",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":85,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,28,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@85","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":86,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@85","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":87,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@85"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":88,
+		"state":{
+			"ConnectedBody":"@83",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":89,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,29,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@89","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":90,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@89","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":91,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@89"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":92,
+		"state":{
+			"ConnectedBody":"@87",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":93,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,30,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@93","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":94,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@93","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":95,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@93"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":96,
+		"state":{
+			"ConnectedBody":"@91",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":97,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,31,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@97","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":98,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@97","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":99,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@97"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":100,
+		"state":{
+			"ConnectedBody":"@95",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":101,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,32,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@101","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":102,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@101","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":103,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@101"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":104,
+		"state":{
+			"ConnectedBody":"@99",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":105,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,33,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@105","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":106,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@105","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":107,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@105"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":108,
+		"state":{
+			"ConnectedBody":"@103",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":109,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,34,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@109","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":110,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@109","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":111,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@109"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":112,
+		"state":{
+			"ConnectedBody":"@107",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":113,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,35,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@113","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":114,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@113","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":115,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@113"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":116,
+		"state":{
+			"ConnectedBody":"@111",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":117,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,36,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@117","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":118,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@117","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":119,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@117"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":120,
+		"state":{
+			"ConnectedBody":"@115",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":121,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,37,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@121","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":122,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@121","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":123,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@121"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":124,
+		"state":{
+			"ConnectedBody":"@119",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":125,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,38,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@125","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":126,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@125","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":127,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@125"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":128,
+		"state":{
+			"ConnectedBody":"@123",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":129,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,39,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@129","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":130,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@129","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":131,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@129"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":132,
+		"state":{
+			"ConnectedBody":"@127",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":133,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,40,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@133","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":134,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@133","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":135,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@133"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":136,
+		"state":{
+			"ConnectedBody":"@131",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":137,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,41,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@137","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":138,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@137","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":139,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@137"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":140,
+		"state":{
+			"ConnectedBody":"@135",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":141,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,42,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@141","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":142,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@141","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":143,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@141"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":144,
+		"state":{
+			"ConnectedBody":"@139",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":145,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,43,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@145","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":146,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@145","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":147,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@145"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":148,
+		"state":{
+			"ConnectedBody":"@143",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":149,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,44,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@149","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":150,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@149","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":151,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@149"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":152,
+		"state":{
+			"ConnectedBody":"@147",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":153,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,45,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@153","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":154,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@153","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":155,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@153"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":156,
+		"state":{
+			"ConnectedBody":"@151",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":157,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,46,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@157","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":158,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@157","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":159,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@157"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":160,
+		"state":{
+			"ConnectedBody":"@155",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":161,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,47,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@161","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":162,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@161","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":163,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@161"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":164,
+		"state":{
+			"ConnectedBody":"@159",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":165,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,48,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@165","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":166,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@165","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":167,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@165"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":168,
+		"state":{
+			"ConnectedBody":"@163",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":169,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,49,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@169","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":170,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@169","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":171,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@169"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":172,
+		"state":{
+			"ConnectedBody":"@167",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":173,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,50,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@173","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":174,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@173","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":175,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@173"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":176,
+		"state":{
+			"ConnectedBody":"@171",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":177,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,51,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@177","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":178,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@177","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":179,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@177"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":180,
+		"state":{
+			"ConnectedBody":"@175",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":181,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,52,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@181","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":182,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@181","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":183,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@181"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":184,
+		"state":{
+			"ConnectedBody":"@179",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":185,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,53,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@185","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":186,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@185","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":187,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@185"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":188,
+		"state":{
+			"ConnectedBody":"@183",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":189,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,54,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@189","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":190,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@189","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":191,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@189"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":192,
+		"state":{
+			"ConnectedBody":"@187",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":193,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,55,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@193","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":194,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@193","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":195,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@193"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":196,
+		"state":{
+			"ConnectedBody":"@191",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":197,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,56,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@197","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":198,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@197","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":199,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@197"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":200,
+		"state":{
+			"ConnectedBody":"@195",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":201,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,57,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@201","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":202,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@201","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":203,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@201"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":204,
+		"state":{
+			"ConnectedBody":"@199",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":205,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,58,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@205","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":206,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@205","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":207,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@205"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":208,
+		"state":{
+			"ConnectedBody":"@203",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":209,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,59,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@209","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":210,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@209","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":211,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@209"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":212,
+		"state":{
+			"ConnectedBody":"@207",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":213,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,60,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@213","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":214,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@213","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":215,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@213"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":216,
+		"state":{
+			"ConnectedBody":"@211",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":217,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,61,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@217","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":218,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@217","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":219,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@217"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":220,
+		"state":{
+			"ConnectedBody":"@215",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":221,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,62,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@221","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":222,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@221","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":223,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@221"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":224,
+		"state":{
+			"ConnectedBody":"@219",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":225,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,63,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@225","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":226,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@225","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":227,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@225"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":228,
+		"state":{
+			"ConnectedBody":"@223",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":229,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,64,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@229","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":230,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@229","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":231,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@229"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":232,
+		"state":{
+			"ConnectedBody":"@227",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":233,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,65,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@233","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":234,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@233","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":235,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@233"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":236,
+		"state":{
+			"ConnectedBody":"@231",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":237,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,66,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@237","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":238,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@237","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":239,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@237"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":240,
+		"state":{
+			"ConnectedBody":"@235",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":241,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,67,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@241","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":242,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@241","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":243,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@241"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":244,
+		"state":{
+			"ConnectedBody":"@239",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":245,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,68,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@245","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":246,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@245","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":247,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@245"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":248,
+		"state":{
+			"ConnectedBody":"@243",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":249,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,69,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@249","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":250,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@249","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":251,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@249"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":252,
+		"state":{
+			"ConnectedBody":"@247",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":253,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,70,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@253","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":254,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@253","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":255,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@253"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":256,
+		"state":{
+			"ConnectedBody":"@251",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":257,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,71,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@257","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":258,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@257","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":259,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@257"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":260,
+		"state":{
+			"ConnectedBody":"@255",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":261,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,72,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@261","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":262,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@261","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":263,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@261"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":264,
+		"state":{
+			"ConnectedBody":"@259",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":265,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,73,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@265","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":266,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@265","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":267,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@265"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":268,
+		"state":{
+			"ConnectedBody":"@263",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":269,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,74,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@269","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":270,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@269","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":271,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@269"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":272,
+		"state":{
+			"ConnectedBody":"@267",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":273,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,75,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@273","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":274,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@273","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":275,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@273"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":276,
+		"state":{
+			"ConnectedBody":"@271",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":277,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,76,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@277","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":278,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@277","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":279,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@277"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":280,
+		"state":{
+			"ConnectedBody":"@275",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":281,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,77,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@281","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":282,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@281","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":283,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@281"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":284,
+		"state":{
+			"ConnectedBody":"@279",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":285,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,78,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@285","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":286,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@285","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":287,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@285"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":288,
+		"state":{
+			"ConnectedBody":"@283",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":289,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,79,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@289","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":290,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@289","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":291,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@289"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":292,
+		"state":{
+			"ConnectedBody":"@287",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":293,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,80,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@293","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":294,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@293","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":295,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@293"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":296,
+		"state":{
+			"ConnectedBody":"@291",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":297,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,81,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@297","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":298,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@297","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":299,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@297"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":300,
+		"state":{
+			"ConnectedBody":"@295",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":301,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,82,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@301","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":302,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@301","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":303,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@301"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":304,
+		"state":{
+			"ConnectedBody":"@299",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":305,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,83,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@305","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":306,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@305","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":307,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@305"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":308,
+		"state":{
+			"ConnectedBody":"@303",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":309,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,84,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@309","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":310,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@309","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":311,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@309"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":312,
+		"state":{
+			"ConnectedBody":"@307",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":313,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,85,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@313","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":314,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@313","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":315,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@313"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":316,
+		"state":{
+			"ConnectedBody":"@311",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":317,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,86,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@317","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":318,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@317","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":319,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@317"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":320,
+		"state":{
+			"ConnectedBody":"@315",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":321,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,87,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@321","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":322,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@321","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":323,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@321"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":324,
+		"state":{
+			"ConnectedBody":"@319",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":325,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,88,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@325","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":326,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@325","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":327,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@325"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":328,
+		"state":{
+			"ConnectedBody":"@323",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":329,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,89,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@329","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":330,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@329","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":331,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@329"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":332,
+		"state":{
+			"ConnectedBody":"@327",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":333,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,90,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@333","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":334,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@333","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":335,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@333"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":336,
+		"state":{
+			"ConnectedBody":"@331",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":337,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,91,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@337","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":338,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@337","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":339,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@337"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":340,
+		"state":{
+			"ConnectedBody":"@335",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":341,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,92,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@341","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":342,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@341","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":343,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@341"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":344,
+		"state":{
+			"ConnectedBody":"@339",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":345,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,93,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@345","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":346,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@345","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":347,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@345"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":348,
+		"state":{
+			"ConnectedBody":"@343",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":349,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,94,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@349","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":350,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@349","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":351,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@349"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":352,
+		"state":{
+			"ConnectedBody":"@347",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":353,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,95,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@353","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":354,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@353","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":355,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@353"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":356,
+		"state":{
+			"ConnectedBody":"@351",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":357,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,96,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@357","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":358,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@357","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":359,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@357"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":360,
+		"state":{
+			"ConnectedBody":"@355",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":361,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,97,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@361","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":362,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@361","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":363,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@361"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":364,
+		"state":{
+			"ConnectedBody":"@359",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":365,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,98,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@365","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":366,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@365","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":367,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@365"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":368,
+		"state":{
+			"ConnectedBody":"@363",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":369,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,99,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@369","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":370,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@369","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":371,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@369"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":372,
+		"state":{
+			"ConnectedBody":"@367",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":373,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,100,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@373","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":374,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@373","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":375,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@373"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":376,
+		"state":{
+			"ConnectedBody":"@371",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":377,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,101,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@377","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":378,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@377","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":379,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@377"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":380,
+		"state":{
+			"ConnectedBody":"@375",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":381,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,102,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@381","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":382,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@381","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":383,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@381"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":384,
+		"state":{
+			"ConnectedBody":"@379",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":385,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,103,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@385","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":386,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@385","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":387,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@385"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":388,
+		"state":{
+			"ConnectedBody":"@383",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":389,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,104,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@389","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":390,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@389","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":391,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@389"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":392,
+		"state":{
+			"ConnectedBody":"@387",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":393,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,105,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@393","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":394,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@393","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":395,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@393"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":396,
+		"state":{
+			"ConnectedBody":"@391",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":397,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,106,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@397","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":398,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@397","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":399,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@397"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":400,
+		"state":{
+			"ConnectedBody":"@395",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":401,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,107,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@401","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":402,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@401","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":403,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@401"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":404,
+		"state":{
+			"ConnectedBody":"@399",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":405,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,108,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@405","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":406,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@405","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":407,
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@405"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":408,
+		"state":{
+			"ConnectedBody":"@403",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	},{
+		"ctor":{
+			"args":["@11",null],
+			"decl":"mojo3d.Model.New",
+			"type":"Void(mojo3d.Model,mojo3d.Entity)"
+		},
+		"id":409,
+		"state":{
+			"LocalMatrix":[1,0,0,0,1,0,0,0,1,0,109,0],
+			"Visible":true
+		},
+		"type":"mojo3d.Model"
+	},{
+		"ctor":{
+			"args":["@409","@12"],
+			"decl":"mojo3d.BoxCollider.New",
+			"type":"Void(mojo3d.Entity,mojo3d.BoxCollider)"
+		},
+		"id":410,
+		"type":"mojo3d.BoxCollider"
+	},{
+		"ctor":{
+			"args":["@409","@13"],
+			"decl":"mojo3d.RigidBody.New",
+			"type":"Void(mojo3d.Entity,mojo3d.RigidBody)"
+		},
+		"id":411,
+		"state":{
+			"Mass":0
+		},
+		"type":"mojo3d.RigidBody"
+	},{
+		"ctor":{
+			"args":["@409"],
+			"decl":"mojo3d.BallSocketJoint.New",
+			"type":"Void(mojo3d.Entity)"
+		},
+		"id":412,
+		"state":{
+			"ConnectedBody":"@407",
+			"ConnectedPivot":[0,0.5,0],
+			"Pivot":[0,-0.5,0]
+		},
+		"type":"mojo3d.BallSocketJoint"
+	}]
+}

+ 1 - 1
modules/mojo3d/mojo3d.monkey2

@@ -30,7 +30,7 @@ Using reflection..
 #Import "scene/components/animator"
 #Import "scene/components/rigidbody"
 #Import "scene/components/collider"
-#Import "scene/components/constraint"
+#Import "scene/components/joint"
 #Import "scene/components/behaviour"
 #Import "scene/components/flybehaviour"
 #Import "scene/components/movebehaviour"

+ 12 - 12
modules/mojo3d/scene/components/constraint.monkey2 → modules/mojo3d/scene/components/joint.monkey2

@@ -1,20 +1,20 @@
 Namespace mojo3d
 
-Class Constraint Extends Component
+Class Joint Extends Component
 	
 	Const ERP:=0		'error reduction parameter - http://bulletphysics.org/mediawiki-1.5.8/index.php/Definitions
 	Const STOP_ERP:=1
 	Const CFM:=2
 	Const STOP_CFM:=3	'constraint force mixing
 	
-	Const Type:=New ComponentType( "Constraint",-20,ComponentTypeFlags.Singleton )
+	Const Type:=New ComponentType( "Joint",-20,ComponentTypeFlags.Singleton )
 	
 	Method New( entity:Entity )
 		
 		Super.New( entity,Type )
 	End
 	
-	Method New( entity:Entity,constraint:Constraint )
+	Method New( entity:Entity,joint:Joint )
 		
 		Super.New( entity,Type )
 	End
@@ -79,7 +79,7 @@ Protected
 	
 End
 
-Class PointToPointConstraint Extends Constraint
+Class BallSocketJoint Extends Joint
 	
 	Method New( entity:Entity )
 		
@@ -88,15 +88,15 @@ Class PointToPointConstraint Extends Constraint
 		AddInstance()
 	End
 	
-	Method New( entity:Entity,constraint:PointToPointConstraint )
+	Method New( entity:Entity,joint:BallSocketJoint )
 		
-		Super.New( entity,constraint )
+		Super.New( entity,joint )
 		
-		Pivot=constraint.Pivot
-		ConnectedBody=constraint.ConnectedBody
-		ConnectedPivot=constraint.ConnectedPivot
+		Pivot=joint.Pivot
+		ConnectedBody=joint.ConnectedBody
+		ConnectedPivot=joint.ConnectedPivot
 		
-		AddInstance( constraint )
+		AddInstance( joint )
 	End
 	
 	[jsonify=1]
@@ -138,11 +138,11 @@ Class PointToPointConstraint Extends Constraint
 	Method OnCreate() Override
 		
 		Local btBody1:=Entity.GetComponent<RigidBody>().btBody
-		Assert( btBody1,"PointToPointConstraint: No rigid body" )
+		Assert( btBody1,"BallSocketJoint: No rigid body" )	'todo: fail nicely
 		
 		If _connected
 			Local btBody2:=_connected.btBody
-			Assert( btBody2,"PointToPointConstraint: No rigid body" )
+			Assert( btBody2,"BallSocketJoint: No rigid body" )	'todo: fail nicely
 			_btconstraint=New btPoint2PointConstraint( btBody1,btBody2,_pivot1,_pivot2 )
 		Else
 			_btconstraint=New btPoint2PointConstraint( btBody1,_pivot1 )

+ 0 - 2
modules/mojo3d/scene/world.monkey2

@@ -160,7 +160,5 @@ Class World
 	Field _btworld:btDynamicsWorld
 	
 	Field _bodies:=New Stack<RigidBody>
-	
-	Field _constraints:=New Stack<Constraint>
 
 End

+ 109 - 0
modules/mojo3d/tests/jointchain.monkey2

@@ -0,0 +1,109 @@
+Namespace myapp3d
+
+#Import "<std>"
+#Import "<mojo>"
+#Import "<mojo3d>"
+
+#Reflect mojo3d
+
+Using std..
+Using mojo..
+Using mojo3d..
+
+Class MyWindow Extends Window
+	
+	Field _scene:Scene
+	Field _camera:Camera
+	Field _light:Light
+	Field _ground:Model
+	Field _donut:Model
+	
+	Method New( title:String="Simple mojo3d app",width:Int=640,height:Int=480,flags:WindowFlags=WindowFlags.Resizable )
+		
+		Super.New( title,width,height,flags )
+	End
+	
+	Method OnCreateWindow() Override
+		
+		_scene=New Scene( True )
+		
+		_scene.ClearColor = New Color( 0.2, 0.6, 1.0 )
+		_scene.AmbientLight = _scene.ClearColor * 0.25
+		_scene.FogColor = _scene.ClearColor
+		_scene.FogFar = 1.0
+		_scene.FogFar = 200.0
+		
+		'create camera
+		Local camera:=New Camera( Self )
+		camera.AddComponent<FlyBehaviour>()
+		camera.Move( 0,2.5,-5 )
+		
+		'create light
+		Local light:=New Light
+		light.CastsShadow=True
+		light.Rotate( 45, 45, 0 )
+		
+		'create ground
+		Local groundBox:=New Boxf( -100,-1,-100,100,0,100 )
+		Local groundMaterial:=New PbrMaterial( Color.Lime )
+		Local ground:=Model.CreateBox( groundBox,1,1,1,groundMaterial )
+		ground.AddComponent<BoxCollider>().Box=groundBox
+		ground.AddComponent<RigidBody>().Mass=0
+		ground.CastsShadow=False
+
+		'create chain link
+		Local box:=New Boxf( -.1,-.45,-.1,.1,.45,.1 )
+		Local material:=New PbrMaterial( Color.Red, 0.05, 0.2 )
+		Local model:=Model.CreateBox( box,1,1,1,material )
+		model.AddComponent<BoxCollider>().Box=box
+		model.AddComponent<RigidBody>()
+
+		Local prev:Model
+
+		For Local y:=0 Until 100
+			
+			Local copy:=model.Copy()
+			
+			copy.Position=New Vec3f( 0,y+10,0 )
+			
+			If prev
+				Local joint:=copy.AddComponent<BallSocketJoint>()
+				joint.ConnectedBody=prev.RigidBody
+				joint.ConnectedPivot=New Vec3f( 0,.5,0 )
+				joint.Pivot=New Vec3f( 0,-.5,0 )
+			Endif
+			
+			prev=copy
+		Next
+		
+		prev.RigidBody.Mass=0
+		
+		model.Visible=False
+		
+		If _scene.Editable 
+			_scene.Save( "jointchain-scene.mojo3d","modules/mojo3d/tests/assets/" )
+			_scene=Scene.Load( "jointchain-scene.mojo3d" )
+		Endif
+	End
+	
+	Method OnRender( canvas:Canvas ) Override
+		
+		RequestRender()
+		
+		_scene.Update()
+		
+		_scene.Render( canvas )
+		
+		canvas.DrawText( "FPS="+App.FPS,0,0 )
+	End
+	
+End
+
+Function Main()
+
+	New AppInstance
+	
+	New MyWindow
+	
+	App.Run()
+End