Files
2024-11-20 15:21:28 +01:00

72 lines
2.0 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
using UnityEngine;
using System.Collections.Generic;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.AnimateVariables)]
[Tooltip("Easing Animation - Vector3")]
public class EaseVector3 : EaseFsmAction
{
[RequiredField]
public FsmVector3 fromValue;
[RequiredField]
public FsmVector3 toValue;
[UIHint(UIHint.Variable)]
public FsmVector3 vector3Variable;
private bool finishInNextStep = false;
public override void Reset (){
base.Reset();
vector3Variable = null;
fromValue = null;
toValue = null;
finishInNextStep = false;
}
public override void OnEnter ()
{
base.OnEnter();
fromFloats = new float[3];
fromFloats[0] = fromValue.Value.x;
fromFloats[1] = fromValue.Value.y;
fromFloats[2] = fromValue.Value.z;
toFloats = new float[3];
toFloats[0] = toValue.Value.x;
toFloats[1] = toValue.Value.y;
toFloats[2] = toValue.Value.z;
resultFloats = new float[3];
finishInNextStep = false;
vector3Variable.Value = fromValue.Value;
}
public override void OnExit (){
base.OnExit();
}
public override void OnUpdate(){
base.OnUpdate();
if(!vector3Variable.IsNone && isRunning){
vector3Variable.Value = new Vector3(resultFloats[0],resultFloats[1],resultFloats[2]);
}
if(finishInNextStep){
Finish();
if(finishEvent != null) Fsm.Event(finishEvent);
}
if(finishAction && !finishInNextStep){
if(!vector3Variable.IsNone){
vector3Variable.Value = new Vector3(reverse.IsNone ? toValue.Value.x : reverse.Value ? fromValue.Value.x : toValue.Value.x,
reverse.IsNone ? toValue.Value.y : reverse.Value ? fromValue.Value.y : toValue.Value.y,
reverse.IsNone ? toValue.Value.z : reverse.Value ? fromValue.Value.z : toValue.Value.z
);
}
finishInNextStep = true;
}
}
}
}