protected override void Initialize() { base.Initialize(); FpsCounter.Enable(this); var message = new DebugMessageBuilder(Corner.TopRight, Color.Black); Add(message); Add(new GridAxis(RenderContext, true)); _camera = new FirstPersonCamera(RenderContext.GraphicsDevice, Vector3.Zero, FirstPersonCamera.FirstPersonMode.Person); var player = new Player(_camera); GenerateMaze(player); Add(player); var chunkManager = GetComponents <ChunkManager>().First(); // for first maze, place player at the starting cell const int playerHeight = 2; // position the player in the center of the starting cell var start = chunkManager.GetStartCell().GetBoundingBox(); var center = (start.Min + start.Max) / 2f; var s = new Vector3(center.X, playerHeight, center.Z); _camera.SetPosition(s); UpdateDetails(); }
public ChunkManager(IRenderContext renderContext, DebugMessageBuilder messageBuilder, CollisionEngine collisionEngine, int width, int height) { _messageBuilder = messageBuilder; var start = new Cell(0, 0).GetBoundingBox(); var end = new Cell(width - 1, height - 1).GetBoundingBox(); var fullGrid = BoundingBox.CreateMerged(start, end); _quadtree = new Quadtree <MazeChunk>(fullGrid); var cells = GenerateNewMaze(width, height); var chunks = GenerateChunks(renderContext, cells, collisionEngine); _totalVertices = chunks.Sum(c => c.Vertices); _totalChunks = chunks.Count; foreach (var c in chunks) { _quadtree.Add(c); } }
public WorldScene(IRenderContext renderContext, DebugMessageBuilder messageBuilder) { _messageBuilder = messageBuilder; var width = 250; var height = 250; var start = new Cell(0, 0).GetBoundingBox(); var end = new Cell(width - 1, height - 1).GetBoundingBox(); var fullGrid = BoundingBox.CreateMerged(start, end); _quadtree = new Quadtree <MazeChunk>(fullGrid); var cells = GenerateNewMaze(width, height); var chunks = GenerateChunks(renderContext, cells); _totalVertices = chunks.Sum(c => c.Vertices); _totalChunks = chunks.Count; foreach (var c in chunks) { _quadtree.Add(c); } }