Exemple #1
0
        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);
        }
Exemple #4
0
        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);
        }