public void Init() { FinalPoint = SplineController.FinalPoint; ExitPoint = SplineController.ExitPoint; initialFinalPointpos = FinalPoint.transform.position; initialExitPointPos = ExitPoint.transform.position; TargetBank = SplineController.TargetBank; SplineMovement.Initialize(this); SplineMovement.onTargetPositionReached += SetOnPositionReachedTrue; onBehaviorStart += SplineMovement.OnMovementStart; onBehaviorEnd += SplineMovement.OnMovementEnd; onBehaviorStart += delegate(Effectable effectable, Vector2 vector2) { SetInitialFinalPointPosition(); }; onBehaviorStart += StartRenderingSpline; onBehaviorEnd += StopRenderingSpline; onBehaviorEnd += ResetSpline; foreach (var effect in SplineEffect) { effect.InitEffect(SplineController); onBehaviorStart += effect.OnEffectStart; onBehaviorEnd += effect.OnEffectEnd; if (effect.EffectStartsOnTargetPositionReached) { onPosReachedAttack += effect.OnEffectTrigger; } else { onConcurrentAttack += effect.OnEffectTrigger; } } InitEffectAnimation(); }
//Requires range detector public static void BeamDamageOnArea(EffectableTargetBank effectableTargetBank, int damage, ref Effectable[] effectablesArray) { foreach (var effectable in effectablesArray) { if (effectable == null) { continue; } effectable.ApplyDamage(damage); } }