Ejemplo n.º 1
0
        private void CreateAsteroids()
        {
            Vector3[] vertices = new Vector3[0];
            int[] indices = new int[0];
            Model asteroidPicked = Resources.Instance.GetModel("asteroid1");
            int mass = 0;
            Vector3 scale = new Vector3(0, 0, 0);

            List<Vector3> asteroidLocations = spawner.GetAsteroidLocations();
            for (int i = 0; i < asteroidLocations.Count; i++)
            {
                int rand = GameInformation.Instance.Rand.Next(0, 5);
                switch (rand)
                {
                    case 0:
                        ModelDataExtractor.GetVerticesAndIndicesFromModel(Resources.Instance.GetModel("asteroid1"), out vertices, out indices);
                        asteroidPicked = Resources.Instance.GetModel("asteroid1");
                        scale = new Vector3(3, 3, 3);
                        mass = 5;
                        break;
                    case 1:
                        ModelDataExtractor.GetVerticesAndIndicesFromModel(Resources.Instance.GetModel("asteroid2"), out vertices, out indices);
                        asteroidPicked = Resources.Instance.GetModel("asteroid2");
                        scale = new Vector3(3, 3, 3);
                        mass = 5;
                        break;
                    case 2:
                        ModelDataExtractor.GetVerticesAndIndicesFromModel(Resources.Instance.GetModel("asteroid3"), out vertices, out indices);
                        asteroidPicked = Resources.Instance.GetModel("asteroid3");
                        scale = new Vector3(5, 5, 5);
                        mass = 30;
                        break;
                    case 3:
                        ModelDataExtractor.GetVerticesAndIndicesFromModel(Resources.Instance.GetModel("asteroid4"), out vertices, out indices);
                        asteroidPicked = Resources.Instance.GetModel("asteroid4");
                        scale = new Vector3(5, 5, 5);
                        mass = 30;
                        break;
                    case 4:
                        ModelDataExtractor.GetVerticesAndIndicesFromModel(Resources.Instance.GetModel("asteroid5"), out vertices, out indices);
                        asteroidPicked = Resources.Instance.GetModel("asteroid5");
                        scale = new Vector3(6, 6, 6);
                        mass = 45;
                        break;
                    case 5:
                        ModelDataExtractor.GetVerticesAndIndicesFromModel(Resources.Instance.GetModel("asteroid6"), out vertices, out indices);
                        asteroidPicked = Resources.Instance.GetModel("asteroid6");
                        scale = new Vector3(6, 6, 6);
                        mass = 45;
                        break;
                }

                MobileMesh mobMesh = new MobileMesh(vertices, indices, new AffineTransform(scale, BEPUutilities.Quaternion.Identity, asteroidLocations[i]), BEPUphysics.CollisionShapes.MobileMeshSolidity.Solid, mass);
                mobMesh.CollisionInformation.Tag = i.ToString();
                space.Add(mobMesh);
                mobMesh.AngularDamping = 0;
                mobMesh.LinearDamping = 0;
                mobMesh.LinearVelocity = new Vector3(GameInformation.Instance.Rand.Next(0, 30) - 15, GameInformation.Instance.Rand.Next(0, 30) - 15, GameInformation.Instance.Rand.Next(0, 30) - 15);
                mobMesh.AngularVelocity = new Vector3(GameInformation.Instance.Rand.Next(1, 10) - 5, GameInformation.Instance.Rand.Next(1, 10) - 5, GameInformation.Instance.Rand.Next(1, 10) - 5);
                MobileMeshModel model = new MobileMeshModel(game, mobMesh, asteroidPicked, scale.X, this);
                modelLookup.Add(i, model);
                game.Components.Add(model);
            }
        }
Ejemplo n.º 2
0
        private void LoadShip()
        {
            Vector3[] vertices = new Vector3[0];
            int[] indices = new int[0];
            Model shipModel = Resources.Instance.GetModel("ship");
            int mass = 5;
            Vector3 scale = new Vector3(3, 3, 3);

            ModelDataExtractor.GetVerticesAndIndicesFromModel(Resources.Instance.GetModel("asteroid1"), out vertices, out indices);
            MobileMesh mobMesh = new MobileMesh(vertices, indices, new AffineTransform(scale, BEPUutilities.Quaternion.Identity, BEPUutilities.Vector3.Zero), BEPUphysics.CollisionShapes.MobileMeshSolidity.Solid, mass);
            mobMesh.Tag = "ship";
            mobMesh.CollisionInformation.Events.InitialCollisionDetected += HandleCollision;
            space.Add(mobMesh);
            mobMesh.AngularDamping = 0;
            mobMesh.LinearDamping = 0;
            mobMesh.LinearVelocity = BEPUutilities.Vector3.Zero;
            mobMesh.AngularVelocity = BEPUutilities.Vector3.Zero;
            MobileMeshModel model = new MobileMeshModel(game, mobMesh, shipModel, scale.X, this, true);
            Ship = model;
            game.Components.Add(model);
        }