예제 #1
0
 public void ResetAllData()
 {
     StopAllCoroutines();
     if (m_QuadTree)
     {
         m_QuadTree.Clear();
     }
     m_QuadTree = null;
     if (m_ProcessTaskQueue != null)
     {
         m_ProcessTaskQueue.Clear();
     }
     if (m_LoadedObjectList != null)
     {
         foreach (var item in m_LoadedObjectList)
         {
             DestroyObject(item, false);
         }
         m_LoadedObjectList.Clear();
     }
     m_ProcessTaskQueue = null;
     m_LoadedObjectList = null;
     m_TriggerHandle    = null;
     m_IsInitialized    = false;
 }
    void OnDestroy()
    {
        if (m_QuadTree)
        {
            m_QuadTree.Clear();
        }
        m_QuadTree = null;

        if (m_LoadedObjectList != null)
        {
            m_LoadedObjectList.Clear();
        }

        m_LoadedObjectList = null;
        m_TriggerHandle    = null;
    }
예제 #3
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, SceneSeparateTreeType treeType, int quadTreeDepth = 5)
    {
        if (m_IsInitialized)
        {
            return;
        }
        m_QuadTree         = new SceneSeparateTree <SceneObject>(treeType, center, size, quadTreeDepth);
        m_LoadedObjectList = new List <SceneObject>();
        //m_PreDestroyObjectQueue = new Queue<SceneObject>();
        m_PreDestroyObjectQueue = new PriorityQueue <SceneObject>(new SceneObjectWeightComparer());
        m_TriggerHandle         = new TriggerHandle <SceneObject>(this.TriggerHandle);

        m_MaxCreateCount = Mathf.Max(0, maxCreateCount);
        m_MinCreateCount = Mathf.Clamp(minCreateCount, 0, m_MaxCreateCount);
        m_MaxRefreshTime = maxRefreshTime;
        m_MaxDestroyTime = maxDestroyTime;
        m_Asyn           = asyn;

        m_IsInitialized = true;

        m_RefreshTime = maxRefreshTime;
    }