コード例 #1
0
ファイル: ChunkManager.cs プロジェクト: GuochuSang/Orbit2
    // 分配一个 GameObject 到某个 Chunk
    public void AllotChunkChild(IChunkObject child)
    {
        Vector2    childPos       = child.GetPosition();
        Vector2Int worldPos       = FloorToVector2Int(childPos.x, childPos.y);
        Vector2Int chunkPos       = ToChunkPos(worldPos);
        Chunk      newParentChunk = GetChunk(chunkPos);

        newParentChunk.AddChild(child);
    }
コード例 #2
0
ファイル: Chunk.cs プロジェクト: rabiribi/OrbitII
        // 检测Child GameObjects是否逃逸, 从列表删除逃逸的对象, 并返回逃逸的GameObject列表 (ChunkManager : 如果不在自己的范围, 就把它交给其他Chunk管理)
        public List <IChunkObject> CheckRunningChildren()
        {
            List <IChunkObject> outerChildren = new List <IChunkObject>();

            for (int i = childObjects.Count - 1; i >= 0; i--)
            {
                IChunkObject child = childObjects[i];
                //如果不包含这个GameObject, 就加入返回列表
                if (!CheckContain(child.GetPosition()))
                {
                    // 如果这个Chunk正在更新, 那么child物体退出更新
                    if (enableUpdate)
                    {
                        child.ExitUpdate();
                    }
                    childObjects.Remove(child);
                    outerChildren.Add(child);
                }
            }
            return(outerChildren);
        }