Exemplo n.º 1
0
        public ObjectPoolImpl(int id, PoolManagedBehaviour prefab, ObjectPoolConfig config, Transform hierarchyParent = null, IObjectPoolCallback <PoolManagedBehaviour> callback = null)
        {
            this.id              = id;
            this.prefab          = prefab;
            this.Config          = config;
            this.hierarchyParent = hierarchyParent;
            this.callback        = callback ?? new NopObjectPoolCallBack <PoolManagedBehaviour>();
            hasParent            = hierarchyParent != null;

            prefab.gameObject.SetActive(false); // avoid to call OnAwake OnEnable and OnDisable when CreateInstance
            if (hierarchyParent != null)
            {
                UnityEngine.Object.DontDestroyOnLoad(hierarchyParent);
            }
        }
        /// <summary>Add disposable to controller. Return value is self disposable.</summary>
        /// see UniRx.DisposableExtensions.AddTo
        public static T DisposeWhenReturn <T>(this T disposable, PoolManagedBehaviour poolManagedBehaviour)
            where T : IDisposable
        {
#pragma warning disable RECS0017
            if (disposable == null)
            {
                throw new ArgumentNullException("disposable");
            }
#pragma warning restore RECS0017

            if (poolManagedBehaviour == null)
            {
                throw new ArgumentNullException("poolManagedBehaviour");
            }
            var poolObjectController = poolManagedBehaviour.GetComponent <PoolObjectController>();
            if (poolObjectController == null)
            {
                throw new ArgumentNullException("poolObjectController");
            }
            poolObjectController.AddDisposable(disposable);
            return(disposable);
        }
Exemplo n.º 3
0
 public void OnCreateInstance(int id)
 {
     Id        = id;
     Behaviour = GetComponent <PoolManagedBehaviour>();
 }
Exemplo n.º 4
0
 public void Return(PoolManagedBehaviour behaviour)
 {
     Return(behaviour.GetComponent <PoolObjectController>());
 }