mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-05-14 14:29:52 -05:00
56 lines
1.3 KiB
C#
56 lines
1.3 KiB
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace UniVRM10
|
|
{
|
|
[Serializable]
|
|
public class VRM10ControllerExpression : IDisposable
|
|
{
|
|
[SerializeField]
|
|
public VRM10ExpressionAvatar ExpressionAvatar;
|
|
|
|
ExpressionMerger m_merger;
|
|
|
|
public void Dispose()
|
|
{
|
|
if (m_merger != null)
|
|
{
|
|
m_merger.RestoreMaterialInitialValues();
|
|
}
|
|
}
|
|
|
|
IExpressionAccumulator m_accumulator;
|
|
|
|
public IExpressionAccumulator Accumulator
|
|
{
|
|
get
|
|
{
|
|
if (m_accumulator == null)
|
|
{
|
|
m_accumulator = new DefaultExpressionAccumulator();
|
|
}
|
|
return m_accumulator;
|
|
}
|
|
}
|
|
|
|
public void OnStart(Transform transform)
|
|
{
|
|
if (ExpressionAvatar != null)
|
|
{
|
|
if (m_merger == null)
|
|
{
|
|
m_merger = new ExpressionMerger(ExpressionAvatar.Clips, transform);
|
|
}
|
|
|
|
Accumulator.OnStart(ExpressionAvatar);
|
|
}
|
|
}
|
|
|
|
public void Apply()
|
|
{
|
|
m_merger.SetValues(m_accumulator.FrameExpression());
|
|
m_merger.Apply();
|
|
}
|
|
}
|
|
}
|