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(); }
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); } }