using UnityEngine;
namespace Unity.VisualScripting
{
/// <summary>
/// Returns the power of a base and exponent.
/// </summary>
[UnitCategory("Math/Scalar")]
[UnitTitle("Exponentiate")]
[UnitOrder(105)]
public sealed class ScalarExponentiate : Unit
{
/// <summary>
/// The base.
/// </summary>
[DoNotSerialize]
[PortLabel("x")]
public ValueInput @base { get; private set; }
/// <summary>
/// The exponent.
/// </summary>
[DoNotSerialize]
[PortLabel("n")]
public ValueInput exponent { get; private set; }
/// <summary>
/// The power of base elevated to exponent.
/// </summary>
[DoNotSerialize]
[PortLabel("x\u207f")]
public ValueOutput power { get; private set; }
protected override void Definition()
{
@base = ValueInput<float>(nameof(@base), 1);
exponent = ValueInput<float>(nameof(exponent), 2);
power = ValueOutput(nameof(power), Exponentiate);
Requirement(@base, power);
Requirement(exponent, power);
}
public float Exponentiate(Flow flow)
{
return Mathf.Pow(flow.GetValue<float>(@base), flow.GetValue<float>(exponent));
}
}
}