예제 #1
0
        private void Start()
        {
            DisplayProgressBar();

            Physics.gravity = new Vector3(0, -10, 0);

            var initialPlayerPosition  = getInitialPlayerPosition();
            var chunkPositionsToRender = MapPositionUtil.GetChunkPosition(initialPlayerPosition).GetPositionsInCubeRadius(1).ToList();

            PlayerObjectScript.Instance.FreezePosition();
            PlayerObjectScript.Instance.SetPosition(initialPlayerPosition);

            Chunk.Instance.RenderOnly(chunkPositionsToRender, _progressBar, () =>
            {
                PlayerObjectScript.Instance.UnfreezePosition();
            });
        }
예제 #2
0
        private void HandlePlayerClick()
        {
            if (!Input.GetMouseButtonDown(0))
            {
                return;
            }

            var        ray = _playerCamera.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (!Physics.Raycast(ray, out hit))
            {
                return;
            }

            var pointInTile = hit.point + ray.direction.normalized * (Tile.TileSize.x / 2);

            var tilePosition = MapPositionUtil.GetTilePosition(pointInTile);

            Map.Instance.SetTile(tilePosition, new Tile(TileType.Air));
        }
예제 #3
0
        public static void AddCube(List <Vector3> vertices, List <int> triangles, List <Vector2> uvs, Position3D tileMapIndex)
        {
            var tilePositionInChunk         = MapPositionUtil.GetPositionInChunk(tileMapIndex);
            var tilePositionRelativeToChunk =
                new Vector3(tilePositionInChunk.x * Tile.TileSize.x, tilePositionInChunk.y * Tile.TileSize.y, tilePositionInChunk.z * Tile.TileSize.z);
            var tile = Map.Instance.GetTile(tileMapIndex);

            if (Map.Instance.IsTransparent(tileMapIndex.getPositionPlusY(1)))
            {
                CubeGenerator.AddSquareFaceYPositive(vertices, triangles, uvs, tilePositionRelativeToChunk, Tile.TileSize, tile.TileType.TextureTileOffset);
            }

            if (Map.Instance.IsTransparent(tileMapIndex.getPositionPlusY(-1)))
            {
                CubeGenerator.AddSquareFaceYNegative(vertices, triangles, uvs, tilePositionRelativeToChunk, Tile.TileSize, tile.TileType.TextureTileOffset);
            }

            if (Map.Instance.IsTransparent(tileMapIndex.getPositionPlusZ(-1)))
            {
                CubeGenerator.AddSquareFaceZNegative(vertices, triangles, uvs, tilePositionRelativeToChunk, Tile.TileSize, tile.TileType.TextureTileOffset);
            }

            if (Map.Instance.IsTransparent(tileMapIndex.getPositionPlusZ(1)))
            {
                CubeGenerator.AddSquareFaceZPositive(vertices, triangles, uvs, tilePositionRelativeToChunk, Tile.TileSize, tile.TileType.TextureTileOffset);
            }

            if (Map.Instance.IsTransparent(tileMapIndex.getPositionPlusX(-1)))
            {
                CubeGenerator.AddSquareFaceXNegative(vertices, triangles, uvs, tilePositionRelativeToChunk, Tile.TileSize, tile.TileType.TextureTileOffset);
            }

            if (Map.Instance.IsTransparent(tileMapIndex.getPositionPlusX(1)))
            {
                CubeGenerator.AddSquareFaceXPositive(vertices, triangles, uvs, tilePositionRelativeToChunk, Tile.TileSize, tile.TileType.TextureTileOffset);
            }
        }
예제 #4
0
        private void RenderChunksNearPlayer()
        {
            var playerChunkPosition = MapPositionUtil.GetChunkPosition(transform.position);

            Chunk.Instance.RenderOnly(playerChunkPosition.GetPositionsInCubeRadius(1).ToList());
        }