示例#1
0
    public static void PoolNetworkDestroy(GameObject target)
    {
        if (!IsInstanceInit())
        {
            return;
        }

        //even if it has a pool prefab tracker, will still destroy it if it has no object behavior
        var poolPrefabTracker = target.GetComponent <PoolPrefabTracker>();
        var objBehavior       = target.GetComponent <ObjectBehaviour>();

        if (poolPrefabTracker != null && objBehavior != null)
        {
            //pooled
            target.BroadcastMessage("GoingOffStage", SendMessageOptions.DontRequireReceiver);
            Instance.AddToPool(target);
            objBehavior.VisibleState = false;
        }
        else
        {
            //not pooled
            target.BroadcastMessage("GoingOffStage", SendMessageOptions.DontRequireReceiver);
            NetworkServer.Destroy(target);
        }
    }
示例#2
0
    public static void PoolNetworkDestroy(GameObject target)
    {
        if (!IsInstanceInit())
        {
            return;
        }

        //even if it has a pool prefab tracker, will still destroy it if it has no object behavior
        var poolPrefabTracker = target.GetComponent <PoolPrefabTracker>();
        var objBehavior       = target.GetComponent <ObjectBehaviour>();
        var cnt = target.GetComponent <CustomNetTransform>();

        if (cnt)
        {
            cnt.FireGoingOffStageHooks();
        }
        else
        {
            Logger.LogWarningFormat("Attempting to network destroy object {0} at {1} but this object" +
                                    " has no CustomNetTransform. Lifecycle hooks will be bypassed. This is" +
                                    " most likely a mistake as any objects which sync over the network" +
                                    " should have a CNT.", Category.ItemSpawn, target.name, objBehavior.AssumedWorldPositionServer());
        }
        if (poolPrefabTracker != null && objBehavior != null)
        {
            //pooled
            Instance.AddToPool(target);
            objBehavior.VisibleState = false;
        }
        else
        {
            //not pooled
            NetworkServer.Destroy(target);
        }
    }
示例#3
0
    void Start()
    {
        PoolManager.Init();
        go_objectID = PoolManager.AddToPool(go_object, 5);

        Time_ToGenerate = Time.time;
    }
示例#4
0
    public static void PoolNetworkDestroy(GameObject target)
    {
        if (!IsInstanceInit())
        {
            return;
        }

        //even if it has a pool prefab tracker, will still destroy it if it has no object behavior
        var poolPrefabTracker = target.GetComponent <PoolPrefabTracker>();
        var objBehavior       = target.GetComponent <ObjectBehaviour>();

        if (poolPrefabTracker != null && objBehavior != null)
        {
            //pooled
            Instance.AddToPool(target);
            objBehavior.visibleState = false;
        }
        else
        {
            //not pooled
            NetworkServer.Destroy(target);
        }
    }
 // Update is called once per frame
 void Update()
 {
     if (agent.pathStatus == NavMeshPathStatus.PathComplete && agent.remainingDistance <= agent.stoppingDistance)
     {
         if (currentWayPoint < waypoints.Length)
         {
             SetNextPoint();
         }
         else
         {
             GameEventObserver.FireOnDamageTakenEvent(currentStats.damageToPlayer);
             PoolManager.AddToPool(this);
         }
     }
 }
示例#6
0
    public void OnTowerManagementAction(TowerManagementCellController cell)
    {
        var action = cell.action;

        switch (action)
        {
        case TowerManagementAction.UPGRADE:
            buildedTower.UpgradeTower();
            break;

        default:
            PoolManager.AddToPool(buildedTower);
            buildedTower = null;
            break;
        }
    }
    void Start()
    {
        currentHealth = defaultHealth;
        GameEventObserver.FireHUDHealthEvent(currentHealth);
        GameEventObserver.FireHUDMaxWaveEvent((uint)waves.Length);

        PoolManager.Initialize();

        for (int index = 0; index < poolableObjects.Length; index++)
        {
            var poolableObject = poolableObjects[index];
            PoolManager.AddToPool(poolableObject);
        }

        GameEventObserver.AddOnDamageTakenListener(OnDamageTaken);

        StartCoroutine(SpawnCoroutine());
        GameEventObserver.FireHUDHealthEvent(currentHealth);
    }
 private void OnDeath()
 {
     OnKill?.Invoke(this);
     GameEventObserver.FireEnemyKillEvent(this);
     PoolManager.AddToPool(this);
 }
示例#9
0
 private void MoveToPool()
 {
     StopAllCoroutines();
     PoolManager.AddToPool(this);
 }