public void NotifyManagerRemove(PowerupManager manager) { if (Animator != null && AddedBoolHash != 0) { var logWarnings = Animator.logWarnings; Animator.logWarnings = false; Animator.SetBool(AddedBoolHash, false); Animator.logWarnings = logWarnings; } if (Dependents.Count > 0) { foreach (var dependent in Dependents) { if (dependent.Manager == Manager) { dependent.Remove(); } } } OnManagerRemove(); Manager = null; MoveManager = null; Controller = null; OnRemove.Invoke(); Destroy(this); }
public void NotifyManagerAdd(PowerupManager manager) { Manager = manager; MoveManager = manager.MoveManager; Controller = manager.Controller; if (Controller != null && Animator == null) { Animator = Controller.Animator; } if (Duration > 0f) { TimeRemaining = Duration; } if (Animator != null && AddedBoolHash != 0) { var logWarnings = Animator.logWarnings; Animator.logWarnings = false; Animator.SetBool(AddedBoolHash, true); Animator.logWarnings = logWarnings; } OnManagerAdd(); OnAdd.Invoke(); }
public void NotifyManagerAdd(MoveManager manager) { enabled = true; Manager = manager; PowerupManager = manager.GetComponent <PowerupManager>(); Controller = manager.Controller; if (!Animator && Controller) { Animator = Controller.Animator; } // Pretend the move is available to see if it wants to be performed on init CurrentState = State.Available; OnManagerAdd(); OnAdd.Invoke(); // If it performed itself we can exit here if (Active) { return; } if (!Available) { CurrentState = State.Unavailable; } }
public void Add(PowerupManager manager) { manager.Add(this); }