public void StartUp(VoxelMap map, WorldScriptableObject worldObject) { voxelMesh = FindObjectOfType <VoxelMesh>(); terrainNoise = FindObjectOfType <TerrainNoise>(); terrainMap = FindObjectOfType <TerrainMap>(); chunkCollider = FindObjectOfType <ChunkCollider>(); recycleableChunks = map.recycleableChunks; regionResolution = map.regionResolution; chunkResolution = map.chunkResolution; voxelResolution = map.voxelResolution; viewDistance = map.viewDistance; chunks = map.chunks; existingChunks = map.existingChunks; useVoxelReferences = map.useVoxelReferences; colliderRadius = map.colliderRadius; useColliders = map.useColliders; player = map.player; chunkSaveLoadManager = map.chunkSaveLoadManager; worldScriptableObject = worldObject; playerRb = player.GetComponent <Rigidbody2D>(); terrainNoise.seed = worldScriptableObject.seed; terrainNoise.Startup(voxelResolution, chunkResolution); voxelMesh.Startup(voxelResolution, chunkResolution, viewDistance, useColliders, colliderRadius); InvokeRepeating(nameof(UpdateMap), 0.0f, terrainMap.updateInterval); }
public void Startup(VoxelMap map) { var blockTypeNames = System.Enum.GetNames(typeof(BlockType)); foreach (var blockType in blockTypeNames) { FillTypeNames.Add(blockType); } voxelResolution = map.voxelResolution; chunkResolution = map.chunkResolution; viewDistance = map.viewDistance; existingChunks = map.existingChunks; voxelMap = map; mainCamera = Camera.main; terrainMap = FindObjectOfType <TerrainMap>(); voxelMesh = FindObjectOfType <VoxelMesh>(); chunkCollider = FindObjectOfType <ChunkCollider>(); box = gameObject.GetComponent <BoxCollider>(); if (box != null) { DestroyImmediate(box); } box = gameObject.AddComponent <BoxCollider>(); box.center = Vector3.one * (voxelResolution / 2f); box.size = new Vector3((chunkResolution - viewDistance) * voxelResolution, (chunkResolution - viewDistance) * voxelResolution); }
public void StartUp(VoxelMap map) { voxelMap = map; mainCamera = Camera.main; terrainMap = FindObjectOfType <TerrainMap>(); voxelMesh = FindObjectOfType <VoxelMesh>(); chunkCollider = FindObjectOfType <ChunkCollider>(); worldManager = FindObjectOfType <WorldManager>(); uiHotBar = FindObjectOfType <UI_HotBar>(); var blockCollection = BlockManager.Read(); if (worldManager.creativeMode) { foreach (var block in blockCollection.blocks) { fillTypeNames.Add(block.blockType.ToString()); } } boxCollider = gameObject.GetComponent <BoxCollider>(); if (boxCollider != null) { DestroyImmediate(boxCollider); } boxCollider = gameObject.AddComponent <BoxCollider>(); boxCollider.size = new Vector3((voxelMap.chunkResolution - voxelMap.viewDistance) * voxelMap.voxelResolution, (voxelMap.chunkResolution - voxelMap.viewDistance) * voxelMap.voxelResolution); }
void Awake() { _renderer = GetComponent <MeshRenderer>(); _filter = GetComponent <MeshFilter>(); _collider = GetComponent <ChunkCollider>(); _collider.initialize(Chunk.tileDimension); _mesh = new Mesh(); _filter.sharedMesh = _mesh; }
public void StartUp(VoxelMap map) { voxelMesh = FindObjectOfType <VoxelMesh>(); terrainNoise = FindObjectOfType <TerrainNoise>(); terrainMap = FindObjectOfType <TerrainMap>(); chunkCollider = FindObjectOfType <ChunkCollider>(); chunkObjectSpawner = FindObjectOfType <ChunkObjectSpawner>(); chunkSaveLoadManager = FindObjectOfType <ChunkSaveLoadManager>(); playerRb = FindObjectOfType <PlayerController>().GetComponent <Rigidbody2D>(); voxelMap = map; terrainNoise.seed = voxelMap.worldScriptableObject.seed; terrainNoise.StartUp(voxelMap.voxelResolution, voxelMap.chunkResolution); voxelMesh.StartUp(voxelMap.voxelResolution, voxelMap.chunkResolution, voxelMap.viewDistance, useColliders, colliderRadius); InvokeRepeating(nameof(UpdateMap), 0.0f, terrainMap.updateInterval); }
// Player collides with a level chunk collider public void playerTrigger(string transitionToChunk, ChunkCollider chunkCollider) { createNextChunk(); }
private Chunk ParseLevelData(LevelObject levelObject, int xOffset, int yOffset) { // Debug.Log("started parsing level data"); List <string> data = levelObject.Data; int x = xOffset; int y = data.Count + yOffset; Chunk chunk = new Chunk(); chunk.Type = levelObject.Type; ChunkCollider tempChunkCollider = SpawnChunkCollider(levelObject, hubXOffset + xOffset, hubYOffset + yOffset); tempChunkCollider.parentChunk = chunk; chunk.chunkCollider = tempChunkCollider; SpawnFullFloor(levelObject, hubXOffset + xOffset, hubYOffset + yOffset); List <List <GameObject> > chunkColumns = new List <List <GameObject> >(); foreach (string row in data) { List <GameObject> chunkRow = new List <GameObject>(); char[] columns = row.ToCharArray(); x = xOffset; foreach (char column in columns) { GameObject permanentTile = null; GameObject temporaryItem = null; bool isObstacle = true; if (column == GameAssetCodes.wall) { permanentTile = SpawnRandomWall(x, y); } else if (column == GameAssetCodes.blankRandom) { permanentTile = SpawnWallWithProbability(x, y, 1, 4); } else if (column == GameAssetCodes.optionalPath) { permanentTile = SpawnWallWithProbability(x, y, 1, 5); } else if (column == GameAssetCodes.optionalWall) { permanentTile = SpawnWallWithProbability(x, y, 3, 4); } else { //permanentTile = SpawnEmptyFloor(x, y); isObstacle = false; } if (!isObstacle) { // if space is free, spawn items if (column == GameAssetCodes.centerLane) { temporaryItem = SpawnRandomItemWithProbability(x, y, 1, 4); } else if (column == GameAssetCodes.enemy) { temporaryItem = SpawnRandomEnemy(x, y); } else if (column == GameAssetCodes.spawnPoint) { temporaryItem = SpawnSpawnPoint(x, y); } else if (column == GameAssetCodes.door) { permanentTile = SpawnDoor(x, y); } else if (column == GameAssetCodes.portal) { //permanentTile = SpawnPortal(x, y); } else if (column == GameAssetCodes.coin) { temporaryItem = SpawnCoin(x, y); } else if (column == GameAssetCodes.treasure) { temporaryItem = SpawnTreasure(x, y); } else if (column == GameAssetCodes.goldBlock) { temporaryItem = SpawnGoldBlock(x, y); } else { temporaryItem = SpawnRandomEntityWithProbability(x, y, 1, 5); } } if (permanentTile != null) { chunkRow.Add(permanentTile); } x++; } if (chunkRow.Count > 0) { chunkColumns.Add(chunkRow); } y--; } chunk.Tiles = chunkColumns; return(chunk); }