Files
unity-iso-tools/Assets/PlayMaker/Actions/AnimateVariables/CurveFloat.cs
2015-12-13 14:35:35 +06:00

79 lines
2.0 KiB
C#
Executable File

// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
using UnityEngine;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.AnimateVariables)]
[Tooltip("Animates the value of a Float Variable FROM-TO with assistance of Deformation Curve.")]
public class CurveFloat: CurveFsmAction
{
[RequiredField]
[UIHint(UIHint.Variable)]
public FsmFloat floatVariable;
[RequiredField]
public FsmFloat fromValue;
[RequiredField]
public FsmFloat toValue;
[RequiredField]
public FsmAnimationCurve animCurve;
[Tooltip("Calculation lets you set a type of curve deformation that will be applied to otherwise linear move between fromValue and toValue.")]
public Calculation calculation;
private bool finishInNextStep = false;
public override void Reset()
{
base.Reset();
floatVariable = new FsmFloat{UseVariable=true};
toValue = new FsmFloat{UseVariable=true};
fromValue = new FsmFloat{UseVariable=true};
}
public override void OnEnter()
{
base.OnEnter();
finishInNextStep = false;
resultFloats = new float[1];
fromFloats = new float[1];
fromFloats[0] = fromValue.IsNone ? 0f : fromValue.Value;
toFloats = new float[1];
toFloats[0] = toValue.IsNone ? 0f : toValue.Value;
calculations = new Calculation[1];
calculations[0] = calculation;
curves = new AnimationCurve[1];
curves[0] = animCurve.curve;
//call Init after you have initialized curves array
Init();
}
public override void OnExit()
{
}
public override void OnUpdate()
{
base.OnUpdate();
if(!floatVariable.IsNone && isRunning){
floatVariable.Value = resultFloats[0];
}
if(finishInNextStep){
if(!looping) {
Finish();
if(finishEvent != null) Fsm.Event(finishEvent);
}
}
if(finishAction && !finishInNextStep){
if(!floatVariable.IsNone){
floatVariable.Value = resultFloats[0];
}
finishInNextStep = true;
}
}
}
}