Exemple #1
0
    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;
            }
        };
    }