void UpdateEffectRegion() { if (PowerupRegion != null) { PowerupRegion.OnEnter -= OnEffectRegionEnter; } if (PowerupRegion != null) { PowerupRegion.OnLeave -= OnEffectRegionLeave; } // TODO: remove previous sphere + region component PowerupRegion = EffectRegion; if (PowerupRegion == null) { SphereCollider coll = gameObject.AddComponent <SphereCollider>(); coll.radius = Radius; coll.isTrigger = true; PowerupRegion = gameObject.AddComponent <PhxRegion>(); } PowerupRegion.OnEnter += OnEffectRegionEnter; PowerupRegion.OnLeave += OnEffectRegionLeave; }
public override void BindEvents() { Team.OnValueChanged += ApplyTeam; CaptureRegion.OnValueChanged += (PhxRegion oldRegion) => { if (oldRegion != null) { oldRegion.OnEnter -= AddToCapture; oldRegion.OnLeave -= RemoveFromCapture; } PhxRegion newRegion = CaptureRegion.Get(); if (newRegion != null) { newRegion.OnEnter += AddToCapture; newRegion.OnLeave += RemoveFromCapture; } }; }