public float Excavate(Vector3 lPosition, float excavationTime) { //if there's a cavern here (a lack of rock!) return 0 if (CavernMap[lPosition]) { return(0f); } else //there's a rock here { //drill on it some ProgressMap[lPosition] += excavationTime; if (ProgressMap[lPosition] > BlockExcavationSeconds) { Transform existingCavernWall = CavernTransforms[lPosition]; CavernWallBuffer.AddExisting(existingCavernWall); CavernTransforms[lPosition] = CavernBuffer.Get(lPosition); CavernMap[lPosition] = true; FillAdjacentTransformless(lPosition); } return(ProgressMap[lPosition] / BlockExcavationSeconds); } }
public void Fill(Vector3 lPosition, bool onlyVoidCells = false) { Transform existingTransform = CavernTransforms[lPosition]; bool isVoidCell = existingTransform == null; if (onlyVoidCells && !isVoidCell) { return; } bool isEmpty = CavernMap[lPosition]; if (isEmpty) { if (existingTransform != null) { CavernBuffer.AddExisting(existingTransform); } } CavernTransforms[lPosition] = CavernWallBuffer.Get(lPosition); CavernMap[lPosition] = false; }