An easy to use Unity 3D library for creating illustrated Interactive Fiction games and more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
2.6 KiB

// This code is part of the Fungus library (https://github.com/snozbot/fungus)
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
using UnityEngine;
using UnityEngine.Serialization;
namespace Fungus
{
/// <summary>
/// Sets a float parameter on an Animator component to control a Unity animation.
/// </summary>
[CommandInfo("Animation",
"Set Anim Float",
"Sets a float parameter on an Animator component to control a Unity animation")]
[AddComponentMenu("")]
[ExecuteInEditMode]
public class SetAnimFloat : Command
{
[Tooltip("Reference to an Animator component in a game object")]
[SerializeField] protected AnimatorData _animator;
[Tooltip("Name of the float Animator parameter that will have its value changed")]
[SerializeField] protected StringData _parameterName;
[Tooltip("The float value to set the parameter to")]
[SerializeField] protected FloatData value;
#region Public members
public override void OnEnter()
{
if (_animator.Value != null)
{
_animator.Value.SetFloat(_parameterName.Value, value.Value);
}
Continue();
}
public override string GetSummary()
{
if (_animator.Value == null)
{
return "Error: No animator selected";
}
return _animator.Value.name + " (" + _parameterName.Value + ")";
}
public override Color GetButtonColor()
{
return new Color32(170, 204, 169, 255);
}
public override bool HasReference(Variable variable)
{
return _animator.animatorRef == variable || _parameterName.stringRef == variable || value.floatRef == variable ||
base.HasReference(variable);
}
#endregion
#region Backwards compatibility
[HideInInspector] [FormerlySerializedAs("animator")] public Animator animatorOLD;
[HideInInspector] [FormerlySerializedAs("parameterName")] public string parameterNameOLD = "";
protected virtual void OnEnable()
{
if (animatorOLD != null)
{
_animator.Value = animatorOLD;
animatorOLD = null;
}
if (parameterNameOLD != "")
{
_parameterName.Value = parameterNameOLD;
parameterNameOLD = "";
}
}
#endregion
}
}