protected TezHexArrayIndex toArrayIndex(ref TezHexOffsetCoordinate coordinate) { var pos_x = m_HalfWidth + coordinate.q; var pos_y = m_HalfHeight + coordinate.r; ///计算数组坐标在哪一个chunk的范围内 var chunk_x = pos_x / m_ChunkSize; var chunk_y = pos_y / m_ChunkSize; ///计算chunk内的Block的数组坐标 var block_x = pos_x % m_ChunkSize; var block_y = pos_y % m_ChunkSize; return(new TezHexArrayIndex(chunk_x, chunk_y, block_x, block_y)); }
public bool tryGetBlock(TezHexOffsetCoordinate coordinate, out Block block) { var array_index = this.toArrayIndex(ref coordinate); if (array_index.isChunkOutOfRange(m_ChunkXCount, m_ChunkYCount)) { block = null; return(false); } return(m_ChunkArray[array_index.chunkX, array_index.chunkY].tryGetBlock( array_index.blockX, array_index.blockY, out block)); }