/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
* that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
using UnityEngine;
namespace Live2D.Cubism.Framework.MouthMovement
{
///
/// Automatic mouth movement.
///
public sealed class CubismAutoMouthInput : MonoBehaviour
{
///
/// Timescale.
///
[SerializeField]
public float Timescale = 10f;
///
/// Target controller.
///
private CubismMouthController Controller { get; set; }
///
/// Current time.
///
private float T { get; set; }
///
/// Resets the input.
///
public void Reset()
{
T = 0f;
}
#region Unity Event Handling
///
/// Called by Unity. Initializes input.
///
private void Start()
{
Controller = GetComponent();
}
///
/// Called by Unity. Updates controller.
///
///
/// Make sure this method is called after any animations are evaluated.
///
private void LateUpdate()
{
// Fail silently.
if (Controller == null)
{
return;
}
// Progress time.
T += (Time.deltaTime * Timescale);
// Evaluate.
Controller.MouthOpening = Mathf.Abs(Mathf.Sin(T));
}
#endregion
}
}