コード例 #1
0
 void OnDestroy()
 {
     if (mSeparateTree)
     {
         mSeparateTree.Clear();
     }
     mSeparateTree = null;
     if (mProcessTaskQueue != null)
     {
         mProcessTaskQueue.Clear();
     }
     if (mLoadedEntityList != null)
     {
         mLoadedEntityList.Clear();
     }
     mProcessTaskQueue = null;
     mLoadedEntityList = null;
 }
コード例 #2
0
    /// <summary>
    /// 初始化
    /// </summary>
    /// <param name="center">场景区域中心</param>
    /// <param name="size">场景区域大小</param>
    /// <param name="asyn">是否异步</param>
    /// <param name="maxCreateCount">最大创建数量</param>
    /// <param name="minCreateCount">最小创建数量</param>
    /// <param name="maxRefreshTime">更新区域时间间隔</param>
    /// <param name="maxDestroyTime">检查销毁时间间隔</param>
    /// <param name="quadTreeDepth">四叉树深度</param>
    public void Init(Vector3 center, Vector3 size, bool asyn, int maxCreateCount, int minCreateCount, float maxRefreshTime, float maxDestroyTime, SeparateTreeType treeType, int quadTreeDepth = 5)
    {
        if (mIsInitialized)
        {
            return;
        }
        quadTreeDepth     = Mathf.Clamp(quadTreeDepth, 1, 6);
        mSeparateTree     = new SeparateTree(treeType, center, size, quadTreeDepth);
        mLoadedEntityList = new List <SeparateEntity>();
        mPreDestroyQueue  = new PriorityQueue <SeparateEntity>(new SeparateEntityWeightComparer());

        mMaxCreateCount = Mathf.Max(0, maxCreateCount);
        mMinCreateCount = Mathf.Clamp(minCreateCount, 0, mMaxCreateCount);
        mMaxRefreshTime = maxRefreshTime;
        mMaxDestroyTime = maxDestroyTime;
        mIsAsyn         = asyn;

        mIsInitialized = true;

        mRefreshTime = maxRefreshTime;
    }