示例#1
0
        public OCBlockData GetBlock(int x, int y, int z)
        {
            OCChunk chunk = null;

            if (_lastRequestedChunk != null)
            {
                Vector3i requestedChunkPosition = OCChunk.ToChunkPosition(x, y, z);
                if (requestedChunkPosition.x == _lastRequestedChunk.GetPosition().x)
                {
                    if (requestedChunkPosition.y == _lastRequestedChunk.GetPosition().y)
                    {
                        if (requestedChunkPosition.z == _lastRequestedChunk.GetPosition().z)
                        {
                            chunk = _lastRequestedChunk;
                        }
                    }
                }
            }

            if (chunk == null)
            {
                chunk = GetChunk(OCChunk.ToChunkPosition(x, y, z));
                _lastRequestedChunk = chunk;
            }

            if (chunk == null)
            {
                return(OCBlockData.CreateInstance <OCBlockData>());
            }
            return(chunk.GetBlock(OCChunk.ToLocalPosition(x, y, z)));
        }
示例#2
0
 public OCChunk(OCMap map, Vector3i position)
 {
     this.map      = map;
     this.position = position;
     for (int x = blocks.GetMinX(); x < blocks.GetMaxX(); ++x)
     {
         for (int y = blocks.GetMinY(); y < blocks.GetMaxY(); ++y)
         {
             for (int z = blocks.GetMinZ(); z < blocks.GetMaxZ(); ++z)
             {
                 Vector3i pos = new Vector3i(x, y, z);
                 blocks.Set(OCBlockData.CreateInstance <OCBlockData>().Init(null, pos), pos);
             }
         }
     }
 }
示例#3
0
 public void SetBlock(OpenCog.BlockSet.BaseBlockSet.OCBlock block, int x, int y, int z)
 {
     SetBlock(OCBlockData.CreateInstance <OCBlockData>().Init(block, new Vector3i(x, y, z)), x, y, z);
 }
示例#4
0
 public void SetBlock(OpenCog.BlockSet.BaseBlockSet.OCBlock block, Vector3i pos)
 {
     SetBlock(OCBlockData.CreateInstance <OCBlockData>().Init(block, pos), pos);
 }