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(); }); }
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)); }
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); } }
private void RenderChunksNearPlayer() { var playerChunkPosition = MapPositionUtil.GetChunkPosition(transform.position); Chunk.Instance.RenderOnly(playerChunkPosition.GetPositionsInCubeRadius(1).ToList()); }