public virtual void Update() { for (int i = 0; i < delayedDespawns.Length; i++) { DelayedDespawn delayedDespawn = delayedDespawns[i]; delayedDespawn.timeRemaining -= Time.deltaTime; if (delayedDespawn.timeRemaining < 0) { Despawn(delayedDespawn.prefabIndex, delayedDespawn.go, delayedDespawn.trs); delayedDespawns = delayedDespawns.RemoveAt(i); i--; if (delayedDespawns.Length == 0 && rangedDespawns.Length == 0) { enabled = false; } } } for (int i = 0; i < rangedDespawns.Length; i++) { RangedDespawn rangedDespawn = rangedDespawns[i]; rangedDespawn.range -= Vector2.Distance(rangedDespawn.trs.localPosition, rangedDespawn.previousPos); rangedDespawn.previousPos = rangedDespawn.trs.localPosition; if (rangedDespawn.range < 0) { Despawn(rangedDespawn.prefabIndex, rangedDespawn.go, rangedDespawn.trs); rangedDespawns = rangedDespawns.Remove(rangedDespawn); i--; if (rangedDespawns.Length == 0 && delayedDespawns.Length == 0) { enabled = false; } } } }
public virtual DelayedDespawn DelayDespawn(int prefabIndex, GameObject clone, Transform trs, float delay) { DelayedDespawn delayedDespawn = new DelayedDespawn(delay); delayedDespawn.go = clone; delayedDespawn.trs = trs; // delayedDespawn.prefab = spawnEntries[prefabIndex].prefab; delayedDespawn.prefabIndex = prefabIndex; delayedDespawns = delayedDespawns.Add(delayedDespawn); enabled = true; return(delayedDespawn); }
public virtual void CancelDelayedDespawn(DelayedDespawn delayedDespawn) { int indexOfDelayedDespawn = delayedDespawns.IndexOf(delayedDespawn); if (indexOfDelayedDespawn != -1) { delayedDespawns = delayedDespawns.RemoveAt(indexOfDelayedDespawn); if (delayedDespawns.Length == 0 && rangedDespawns.Length == 0) { enabled = false; } } }
public virtual void DoUpdate() { for (int i = 0; i < delayedDespawns.Count; i++) { DelayedDespawn delayedDespawn = delayedDespawns[i]; delayedDespawn.timeRemaining -= Time.deltaTime; if (delayedDespawn.timeRemaining < 0) { delayedDespawns.RemoveAt(i); Despawn(delayedDespawn.prefabIndex, delayedDespawn.go, delayedDespawn.trs); // Destroy(delayedDespawn.go); i--; if (delayedDespawns.Count == 0 && rangedDespawns.Count == 0) { enabled = false; } } else { delayedDespawns[i] = delayedDespawn; } } for (int i = 0; i < rangedDespawns.Count; i++) { RangedDespawn rangedDespawn = rangedDespawns[i]; rangedDespawn.range -= Vector3.Distance(rangedDespawn.trs.position, rangedDespawn.previousPos); rangedDespawn.previousPos = rangedDespawn.trs.position; if (rangedDespawn.range < 0) { rangedDespawns.RemoveAt(i); Despawn(rangedDespawn.prefabIndex, rangedDespawn.go, rangedDespawn.trs); // Destroy(rangedDespawn.go); i--; if (rangedDespawns.Count == 0 && delayedDespawns.Count == 0) { enabled = false; } } else { rangedDespawns[i] = rangedDespawn; } } }