Example #1
0
        public void Asteroid_Render_Test()
        {
            var game = new TestGame();
            Asteroid asteroid = null;
            game.Updated += (o, e) =>
            {
                game.DebugText += "\n\nPress key 1~5 to watch each asteroid";

                Key[] keys = new Key[] { Key.D1, Key.D2, Key.D3, Key.D4, Key.D5 };
                foreach (Key key in keys)
                {
                    if (game.Keyboard.IsKeyDown(key) == false)
                        continue;

                    if (asteroid != null)
                        game.SceneManager.RemoveRenderable(asteroid.MeshNode);

                    int type = key - keys[0];
                    asteroid = new Asteroid(game.Framework, game.SceneManager, type);

                    game.SceneManager.Camera.LookMeshNode(asteroid.MeshNode);
                    game.SceneManager.Light.Position = new Vector3(0.0f, 0.0f, asteroid.MeshNode.BoundingRadius * -5.0f);
                }
            };
            game.Run();
        }
Example #2
0
        private void GenerateAsteroids(List<Asteroid> asteroids, int x, int z)
        {
            if (MathUtils.Abs(x) < 2 && MathUtils.Abs(z) < 2)
                return;

            float density = 0.1f;
            int levelX = x + level.Width / 2;
            int levelZ = z;
            if (levelX >= 0 && levelX < level.Width &&
                levelZ >= 0 && levelZ < level.Length)
            {
                density += this.level.GetDensity(levelX, levelZ);
            }

            int numOfAsteroids = RandomHelper.GetRandomInt(2 + (int)(density * 10));
            for (int i = 0; i < numOfAsteroids; ++i)
            {
                var asteroid = new Asteroid(this.game.framework, this.game.sceneManager, RandomHelper.GetRandomInt(Asteroid.NumTypes - 1));
                asteroid.MeshNode.Position = new Vector3(x * Level.SectorWidth,
                                                         this.game.Camera.EyePos.y + RandomHelper.GetRandomFloat(-Level.SectorWidth * 3.15f, +Level.SectorWidth * 3.15f),
                                                         z * Level.SectorDepth);
                asteroid.MeshNode.Position += RandomHelper.GetRandomVector3(-Level.SectorWidth * 0.42f, +Level.SectorWidth * 0.42f);
                asteroids.Add(asteroid);
            }
        }