Rasagar/Library/PackageCache/com.unity.visualscripting/Runtime/VisualScripting.Flow/Framework/Logic/ApproximatelyEqual.cs

51 lines
1.4 KiB
C#
Raw Normal View History

2024-08-26 13:07:20 -07:00
using System;
using UnityEngine;
namespace Unity.VisualScripting
{
/// <summary>
/// Compares two numbers to determine if they are approximately equal (disregarding floating point precision errors).
/// </summary>
[UnitCategory("Logic")]
[UnitShortTitle("Equal")]
[UnitSubtitle("(Approximately)")]
[UnitOrder(7)]
[Obsolete("Use the Equal node with Numeric enabled instead.")]
public sealed class ApproximatelyEqual : Unit
{
/// <summary>
/// The first number.
/// </summary>
[DoNotSerialize]
public ValueInput a { get; private set; }
/// <summary>
/// The second number.
/// </summary>
[DoNotSerialize]
public ValueInput b { get; private set; }
/// <summary>
/// Whether A is approximately equal to B.
/// </summary>
[DoNotSerialize]
[PortLabel("A \u2248 B")]
public ValueOutput equal { get; private set; }
protected override void Definition()
{
a = ValueInput<float>(nameof(a));
b = ValueInput<float>(nameof(b), 0);
equal = ValueOutput(nameof(equal), Comparison).Predictable();
Requirement(a, equal);
Requirement(b, equal);
}
public bool Comparison(Flow flow)
{
return Mathf.Approximately(flow.GetValue<float>(a), flow.GetValue<float>(b));
}
}
}