projectEli/Assets/NeoFPS/Core/MotionGraphs/Conditions/PitchCondition.cs
2022-11-06 20:28:33 -05:00

61 lines
2.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using NeoFPS.CharacterMotion;
using NeoFPS.CharacterMotion.Parameters;
using NeoCC;
namespace NeoFPS.CharacterMotion.Conditions
{
[MotionGraphElement("Character/Pitch")]
public class PitchCondition : MotionGraphCondition
{
[SerializeField] private ComparisonType m_ComparisonType = ComparisonType.EqualTo;
[SerializeField, Range(-90, 90)] private float m_CompareValue = 0f;
private IAimController m_AimController = null;
public enum ComparisonType
{
EqualTo,
NotEqualTo,
GreaterThan,
GreaterOrEqual,
LessThan,
LessOrEqual
}
public override void Initialise(IMotionController c)
{
base.Initialise(c);
// Get aim controller
m_AimController = c.GetComponent<IAimController>();
}
public override bool CheckCondition(MotionGraphConnectable connectable)
{
if (m_AimController != null)
{
switch (m_ComparisonType)
{
case ComparisonType.EqualTo:
return Mathf.Approximately(m_AimController.pitch, m_CompareValue);
case ComparisonType.NotEqualTo:
return !Mathf.Approximately(m_AimController.pitch, m_CompareValue);
case ComparisonType.GreaterThan:
return m_AimController.pitch > m_CompareValue;
case ComparisonType.GreaterOrEqual:
return m_AimController.pitch >= m_CompareValue;
case ComparisonType.LessThan:
return m_AimController.pitch < m_CompareValue;
case ComparisonType.LessOrEqual:
return m_AimController.pitch <= m_CompareValue;
}
}
else
Debug.Log("Naaah");
return false;
}
}
}