public void TestPhysicsMeshPoolConvexMesh() { XNAGame game = new XNAGame(); var mesh = new RAMMesh(); var data = mesh.GetCollisionData(); var convex = new MeshCollisionData.Convex(); convex.Positions = new List <Vector3>(); Vector3[] pos = CreatePyramidPositions(); Vector3[] transpos = new Vector3[pos.Length]; var mat = Matrix.CreateTranslation(20, 5, 20); Vector3.Transform(pos, ref mat, transpos); convex.Positions.AddRange(transpos); data.ConvexMeshes.Add(convex); PhysicsEngine engine = new PhysicsEngine(); PhysicsDebugRendererXNA debugRenderer = null; game.InitializeEvent += delegate { engine.Initialize(); debugRenderer = new PhysicsDebugRendererXNA(game, engine.Scene); debugRenderer.Initialize(game); var pool = new MeshPhysicsPool(); var tMesh1 = pool.CreateConvexMesh(engine.Scene, mesh.GetCollisionData().ConvexMeshes[0]); var tMesh2 = pool.CreateConvexMesh(engine.Scene, mesh.GetCollisionData().ConvexMeshes[0]); Assert.AreEqual(tMesh1, tMesh2); var actorDesc = new ActorDescription(new ConvexShapeDescription() { ConvexMesh = tMesh1 }); engine.Scene.CreateActor(actorDesc); }; game.DrawEvent += delegate { debugRenderer.Render(game); }; int frameNum = 0; game.UpdateEvent += delegate { engine.Update(game.Elapsed); //if (frameNum > 2) game.Exit(); frameNum++; }; game.Run(); }
public MeshCollisionData.Convex CreateCollisionConvex(OBJGroup.SubObject sub) { var positions = sub.GetPositions(importer); var convex = new MeshCollisionData.Convex(); convex.Positions = positions; return(convex); }
private void convertSubObjectPhysicsConvexMesh(ObjImporter importer, OBJGroup.SubObject sub, RAMMesh mesh) { var positions = new List <Vector3>(); addPositionsFromSubObject(importer, sub, positions); var convex = new MeshCollisionData.Convex(); convex.Positions = positions; mesh.GetCollisionData().ConvexMeshes.Add(convex); }
public void TestMeshPhysicsActorBuilderConvex() { var mesh = new RAMMesh(); var data = mesh.GetCollisionData(); var convexMesh = new MeshCollisionData.Convex(); convexMesh.Positions = new List <Vector3>(); Vector3[] pos = CreatePyramidPositions(); Vector3[] transpos = new Vector3[pos.Length]; var mat = Matrix.CreateTranslation(20, 5, 20); Vector3.Transform(pos, ref mat, transpos); convexMesh.Positions.AddRange(transpos); data.ConvexMeshes.Add(convexMesh); testMeshPhysicsActorBuilder(mesh); }