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); } }
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); } }
void Start() { PoolManager.Init(); go_objectID = PoolManager.AddToPool(go_object, 5); Time_ToGenerate = Time.time; }
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); } } }
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); }
private void MoveToPool() { StopAllCoroutines(); PoolManager.AddToPool(this); }