コード例 #1
0
        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();
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
ファイル: WorldScene.cs プロジェクト: MarcStan/maze-generator
        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);
            }
        }