rj-action-library/Runtime/Tools/Boxed/PowerValue.cs

66 lines
1.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Text;
using System;
using Godot;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class PowerValue:BoxedFloatValue
{
[Export(PropertyHint.Range,"0,1")]
public float value;
[Export(PropertyHint.Range,"0.1,10")]
public float power = 1.0f;
public override float GetFloatValue()
{
return Mathf.Pow( value, power );
}
public override void SetFloatValue( float value )
{
this.value = MathX.Base( power, value );
}
public static PowerValue Create( BoxedFloatValue floatValue )
{
if ( floatValue == null )
{
return null;
}
return new PowerValue { value = floatValue.GetFloatValue() };
}
public static PowerValue Create( float value, float power = 1.0f )
{
var fv = new PowerValue();
fv.value = value;
fv.power = power;
return fv;
}
public static PowerValue Create( double value )
{
return Create( (float) value );
}
public static PowerValue Clone( PowerValue value, bool deepClone )
{
if ( deepClone )
{
return value == null ? null : Create( value.value, value.power );
}
return value;
}
}
}