示例#1
0
    public static void Delete(GameObject g)
    {
        PoolToken token    = GetPoolToken(g);
        PoolType  poolType = token.poolType;

        if (poolType == PoolType.RPC || poolType == PoolType.PhotonView)
        {
            ObjectPoolRpcManager.Delete(g);
        }
        ObjectPoolManager.Delete(g);
    }
示例#2
0
    public static GameObject PhotonRpcInstantiateAsSibling(string prefabPath, Vector3 position, Quaternion rotation, object[] data, int siblingTokenId)
    {
        InstantiationData i = InstantiationData(prefabPath, position, rotation, data);

        i.PoolType = PoolType.RPC;

        var g = ObjectPoolManager.InstantiateAsSibling(i, siblingTokenId);

        ObjectPoolRpcManager.InstantiateAsSibling(i, siblingTokenId);
        return(g);
    }
示例#3
0
    public static GameObject PhotonRpcInstantiateAsChild(string prefabPath, Vector3 position, Quaternion rotation, object[] data, int parentTokenId)
    {
        InstantiationData i = InstantiationData(prefabPath, position, rotation, data);

        i.PoolType = PoolType.RPC;

        var g = ObjectPoolManager.Instantiate(i);

        g.transform.parent = ManagedObjects.Find(parentTokenId).transform;
        ObjectPoolRpcManager.InstantiateAsChild(i, parentTokenId);
        return(g);
    }
示例#4
0
    public static GameObject PhotonViewInstantiate(string prefabPath, Vector3 position, Quaternion rotation, object[] data)
    {
        InstantiationData i = InstantiationData(prefabPath, position, rotation, data);

        i.PoolType = PoolType.PhotonView;

        var g = ObjectPoolManager.Instantiate(i);

        PhotonView[] pvs     = g.GetComponents <PhotonView>();
        List <int>   viewIds = new List <int>();

        foreach (PhotonView pv in pvs)
        {
            viewIds.Add(pv.viewID);
        }
        i.ViewIds = viewIds.ToArray();
        ObjectPoolRpcManager.Instantiate(i);
        return(g);
    }
示例#5
0
    public int DefaultMaxPoolSize  = 100;   //Objects added to a pool beyond its max size will be permanently deleted

    void Awake()
    {
        if (PersistThroughLoad)
        {
            DontDestroyOnLoad(this);
        }

        ObjectPoolRpcManager.Initialize();
        ObjectPoolManager.Initialize();
        ManagedObjects.Initialize();

        itemsCreated    = 0;
        LocalPools      = new Dictionary <string, Pool>();
        PhotonViewPools = new Dictionary <string, Pool>();
        RPCPools        = new Dictionary <string, Pool>();
        objectPool      = this;

        PreloadedPool[] poolsArray = GetComponentsInChildren <PreloadedPool>();

        if (LogFull)
        {
            Debug.Log("Found " + poolsArray.Length + " pools to preload.");
        }

        List <PreloadedPool> pools = new List <PreloadedPool>(poolsArray);

        while (pools.Count > 0)
        {
            PreloadedPool p    = pools[0];
            Pool          pool = Pool.InitializePool(this, p.PrefabString, p.PoolType, p.MaxPoolSize, p.PreloadSize, p.gameObject);
            PoolFromPoolType(p.PoolType)[p.PrefabString] = pool;
            pool.RenameGameObject();
            pools.Remove(p);
            Destroy(p);
        }
    }
示例#6
0
 void OnDestroy()
 {
     ObjectPoolRpcManager.Uninitialize();
     ObjectPoolManager.Uninitialize();
     ManagedObjects.Uninitialize();
 }