示例#1
0
文件: UIManager.cs 项目: huangjk/Ash
 /// <summary>
 /// 初始化界面管理器的新实例。
 /// </summary>
 public UIManager()
 {
     m_UIGroups                    = new Dictionary <string, UIGroup>();
     m_UIFormsBeingLoaded          = new List <int>();
     m_UIFormAssetNamesBeingLoaded = new List <string>();
     m_UIFormsToReleaseOnLoad      = new HashSet <int>();
     m_RecycleQueue                = new LinkedList <IUIForm>();
     m_LoadAssetCallbacks          = new LoadAssetCallbacks(LoadUIFormSuccessCallback, LoadUIFormFailureCallback, LoadUIFormUpdateCallback, LoadUIFormDependencyAssetCallback);
     m_ObjectPoolManager           = null;
     m_ResourceManager             = null;
     m_InstancePool                = null;
     m_UIFormHelper                = null;
     m_Serial = 0;
     m_OpenUIFormSuccessEventHandler         = null;
     m_OpenUIFormFailureEventHandler         = null;
     m_OpenUIFormUpdateEventHandler          = null;
     m_OpenUIFormDependencyAssetEventHandler = null;
     m_CloseUIFormCompleteEventHandler       = null;
 }
示例#2
0
 /// <summary>
 /// 初始化实体管理器的新实例。
 /// </summary>
 public EntityManager()
 {
     m_EntityInfos             = new Dictionary <int, EntityInfo>();
     m_EntityGroups            = new Dictionary <string, EntityGroup>(StringComparer.Ordinal);
     m_EntitiesBeingLoaded     = new Dictionary <int, int>();
     m_EntitiesToReleaseOnLoad = new HashSet <int>();
     m_RecycleQueue            = new Queue <EntityInfo>();
     m_LoadAssetCallbacks      = new LoadAssetCallbacks(LoadAssetSuccessCallback, LoadAssetFailureCallback, LoadAssetUpdateCallback, LoadAssetDependencyAssetCallback);
     m_ObjectPoolManager       = null;
     m_ResourceManager         = null;
     m_EntityHelper            = null;
     m_Serial     = 0;
     m_IsShutdown = false;
     m_ShowEntitySuccessEventHandler         = null;
     m_ShowEntityFailureEventHandler         = null;
     m_ShowEntityUpdateEventHandler          = null;
     m_ShowEntityDependencyAssetEventHandler = null;
     m_HideEntityCompleteEventHandler        = null;
 }
示例#3
0
 /// <summary>
 /// 初始化界面管理器的新实例。
 /// </summary>
 public UIManager()
 {
     m_UIGroups               = new Dictionary <string, UIGroup>(StringComparer.Ordinal);
     m_UIFormsBeingLoaded     = new Dictionary <int, string>();
     m_UIFormsToReleaseOnLoad = new HashSet <int>();
     m_RecycleQueue           = new Queue <IUIForm>();
     m_LoadAssetCallbacks     = new LoadAssetCallbacks(LoadAssetSuccessCallback, LoadAssetFailureCallback, LoadAssetUpdateCallback, LoadAssetDependencyAssetCallback);
     m_ObjectPoolManager      = null;
     m_ResourceManager        = null;
     m_InstancePool           = null;
     m_UIFormHelper           = null;
     m_Serial     = 0;
     m_IsShutdown = false;
     m_OpenUIFormSuccessEventHandler         = null;
     m_OpenUIFormFailureEventHandler         = null;
     m_OpenUIFormUpdateEventHandler          = null;
     m_OpenUIFormDependencyAssetEventHandler = null;
     m_CloseUIFormCompleteEventHandler       = null;
 }
示例#4
0
        public static ObjectInstance FromXProxy(LevelX.ObjectInstanceX proxy, IObjectPoolManager manager)
        {
            if (proxy == null)
            {
                return(null);
            }

            ObjectPool pool = manager.PoolFromItemKey(proxy.Class);

            if (pool == null)
            {
                return(null);
            }

            ObjectClass objClass = pool.Objects[proxy.Class];

            if (objClass == null)
            {
                return(null);
            }

            return(new ObjectInstance(proxy, objClass));
        }
            /// <summary>
            /// 初始化实体组的新实例。
            /// </summary>
            /// <param name="name">实体组名称。</param>
            /// <param name="instanceAutoReleaseInterval">实体实例对象池自动释放可释放对象的间隔秒数。</param>
            /// <param name="instanceCapacity">实体实例对象池容量。</param>
            /// <param name="instanceExpireTime">实体实例对象池对象过期秒数。</param>
            /// <param name="instancePriority">实体实例对象池的优先级。</param>
            /// <param name="entityGroupHelper">实体组辅助器。</param>
            /// <param name="objectPoolManager">对象池管理器。</param>
            public EntityGroup(string name, float instanceAutoReleaseInterval, int instanceCapacity, float instanceExpireTime, int instancePriority, IEntityGroupHelper entityGroupHelper, IObjectPoolManager objectPoolManager)
            {
                if (string.IsNullOrEmpty(name))
                {
                    throw new GameFrameworkException("Entity group name is invalid.");
                }

                if (entityGroupHelper == null)
                {
                    throw new GameFrameworkException("Entity group helper is invalid.");
                }

                m_Name = name;
                m_EntityGroupHelper = entityGroupHelper;
                m_InstancePool      = objectPoolManager.CreateSingleSpawnObjectPool <EntityInstanceObject>(Utility.Text.Format("Entity Instance Pool ({0})", name), instanceCapacity, instanceExpireTime, instancePriority);
                m_InstancePool.AutoReleaseInterval = instanceAutoReleaseInterval;
                m_Entities = new LinkedList <IEntity>();
            }
 /// <summary>
 /// 设置对象池管理器。
 /// </summary>
 /// <param name="objectPoolManager">对象池管理器。</param>
 public void SetObjectPoolManager(IObjectPoolManager objectPoolManager)
 {
     m_AssetPool    = objectPoolManager.CreateMultiSpawnObjectPool <AssetObject>("Asset Pool");
     m_ResourcePool = objectPoolManager.CreateMultiSpawnObjectPool <ResourceObject>("Resource Pool");
 }
示例#7
0
 /// <summary>
 /// 设置对象池管理器。
 /// </summary>
 /// <param name="objectPoolManager">对象池管理器。</param>
 public void SetObjectPoolManager(IObjectPoolManager objectPoolManager)
 {
     throw new NotSupportedException("SetObjectPoolManager");
 }
示例#8
0
        public static ObjectInstance FromXProxy(LevelX.ObjectInstanceX proxy, IObjectPoolManager manager)
        {
            if (proxy == null)
                return null;

            ObjectPool pool = manager.PoolFromItemKey(proxy.Class);
            if (pool == null)
                return null;

            ObjectClass objClass = pool.Objects[proxy.Class];
            if (objClass == null)
                return null;

            return new ObjectInstance(proxy, objClass);
        }
        public void BindObjectPoolManager(IObjectPoolManager manager)
        {
            if (_poolManager != null) {
                _poolManager.PoolAdded -= ObjectPoolAdded;
                _poolManager.PoolRemoved -= ObjectPoolRemoved;

                foreach (var pool in _poolManager.Pools)
                    UnhookObjectPool(pool);
            }

            _poolManager = manager;
            if (_poolManager != null) {
                _poolManager.PoolAdded += ObjectPoolAdded;
                _poolManager.PoolRemoved += ObjectPoolRemoved;

                foreach (var pool in _poolManager.Pools)
                    HookObjectPool(pool);

                InitializePoolPresenters();
            }
            else {
                ClearPoolPresenters();
            }

            OnSyncObjectPoolManager(EventArgs.Empty);
        }
            /// <summary>
            /// 初始化实体组的新实例。
            /// </summary>
            /// <param name="name">实体组名称。</param>
            /// <param name="instanceAutoReleaseInterval">实体实例对象池自动释放可释放对象的间隔秒数。</param>
            /// <param name="instanceCapacity">实体实例对象池容量。</param>
            /// <param name="instanceExpireTime">实体实例对象池对象过期秒数。</param>
            /// <param name="instancePriority">实体实例对象池的优先级。</param>
            /// <param name="ItemGroupHelper">实体组辅助器。</param>
            /// <param name="objectPoolManager">对象池管理器。</param>
            public ItemGroup(string name, float instanceAutoReleaseInterval, int instanceCapacity, float instanceExpireTime, int instancePriority, IItemGroupHelper ItemGroupHelper, IObjectPoolManager objectPoolManager)
            {
                if (string.IsNullOrEmpty(name))
                {
                    throw new GameFrameworkException("Item group name is invalid.");
                }

                if (ItemGroupHelper == null)
                {
                    throw new GameFrameworkException("Item group helper is invalid.");
                }

                m_Name            = name;
                m_ItemGroupHelper = ItemGroupHelper;
                m_InstancePool    = objectPoolManager.CreateSingleSpawnObjectPool <ItemInstanceObject>(Utility.Text.Format("Item Instance Pool ({0})", name), instanceCapacity, instanceExpireTime, instancePriority);
                m_InstancePool.AutoReleaseInterval = instanceAutoReleaseInterval;
                m_Items      = new GameFrameworkLinkedList <IItem>();
                m_CachedNode = null;
            }
示例#11
0
 public void SetObjectPoolManager(IObjectPoolManager objectPoolManager)
 {
     //throw new NotImplementedException();
 }
        private void BindObjectManager(IObjectPoolManager manager)
        {
            if (_objectPoolManager == manager)
                return;

            if (_objectPoolManager != null) {
                _objectPoolManager.Pools.ResourceAdded -= ObjectPoolAddedHandler;
                _objectPoolManager.Pools.ResourceRemoved -= ObjectPoolRemovedHandler;

                foreach (ObjectPool pool in _objectPoolManager.Pools)
                    UnhookObjectPool(pool);
            }

            _objectPoolManager = manager;

            if (_objectPoolManager != null) {
                _objectPoolManager.Pools.ResourceAdded += ObjectPoolAddedHandler;
                _objectPoolManager.Pools.ResourceRemoved += ObjectPoolRemovedHandler;

                foreach (ObjectPool pool in _objectPoolManager.Pools)
                    HookObjectPool(pool);
            }
        }
示例#13
0
 public void SetObjectPoolManager(IObjectPoolManager objectPoolManager)
 {
     m_ResourceLoader.SetObjectPoolManager(objectPoolManager);
 }