예제 #1
0
    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);
        }
    }
예제 #2
0
    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;
    }