67 lines
2.0 KiB
C#
67 lines
2.0 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using NeoFPS.CharacterMotion;
|
|
using NeoFPS.CharacterMotion.Parameters;
|
|
|
|
namespace NeoFPS.CharacterMotion.Behaviours
|
|
{
|
|
[MotionGraphElement("Parameters/TimeOps", "TimeOpsBehaviour")]
|
|
[HelpURL("https://docs.neofps.com/manual/motiongraphref-mgb-timeopsbehaviour.html")]
|
|
public class TimeOpsBehaviour : MotionGraphBehaviour
|
|
{
|
|
[SerializeField, Tooltip("The float parameter to read from & write to")]
|
|
private FloatParameter m_Parameter = null;
|
|
|
|
[SerializeField, Tooltip("What operation should be performed.")]
|
|
private What m_What = What.AddElapsedTime;
|
|
|
|
[SerializeField, Tooltip("The multiplier for the elapsed time")]
|
|
private float m_Multiplier = 1f;
|
|
|
|
public enum What
|
|
{
|
|
AddElapsedTime,
|
|
AddElapsedTimeScaled,
|
|
RecordEntryTime,
|
|
RecordExitTime,
|
|
RecordTime
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (m_What == What.RecordEntryTime && m_Parameter != null)
|
|
m_Parameter.value = Time.time;
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (m_What == What.RecordExitTime && m_Parameter != null)
|
|
m_Parameter.value = Time.time;
|
|
}
|
|
|
|
public override void Update()
|
|
{
|
|
if (m_Parameter != null)
|
|
{
|
|
switch (m_What)
|
|
{
|
|
case What.AddElapsedTime:
|
|
m_Parameter.value += Time.deltaTime;
|
|
break;
|
|
case What.AddElapsedTimeScaled:
|
|
m_Parameter.value += Time.deltaTime * m_Multiplier;
|
|
break;
|
|
case What.RecordTime:
|
|
m_Parameter.value = Time.time;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void CheckReferences(IMotionGraphMap map)
|
|
{
|
|
m_Parameter = map.Swap(m_Parameter);
|
|
}
|
|
}
|
|
} |