using System;
using System.Collections.Generic;
using UnityEngine;
namespace VRM
{
[DisallowMultipleComponent]
public class VRMBlendShapeProxy : MonoBehaviour, IVRMComponent
{
[SerializeField]
public BlendShapeAvatar BlendShapeAvatar;
public void OnImported(VRMImporterContext context)
{
throw new NotImplementedException();
}
BlendShapeMerger m_merger;
private void OnDestroy()
{
if (m_merger != null)
{
m_merger.RestoreMaterialInitialValues(BlendShapeAvatar.Clips);
}
}
private void Start()
{
if (BlendShapeAvatar != null)
{
if (m_merger == null)
{
m_merger = new BlendShapeMerger(BlendShapeAvatar.Clips, transform);
}
}
}
///
/// Set a blendShape value immediate
///
///
///
public void SetValue(BlendShapePreset key, float value)
{
#pragma warning disable 0618
SetValue(new BlendShapeKey(key), value, true);
#pragma warning restore 0618
}
///
/// Set a blendShape value immediate or delayed.
///
///
///
/// immediate if true
[Obsolete("Use SetValues")]
public void SetValue(BlendShapePreset key, float value, bool apply)
{
SetValue(new BlendShapeKey(key), value, apply);
}
///
/// Get a blendShape value
///
///
///
public float GetValue(BlendShapePreset key)
{
return GetValue(new BlendShapeKey(key));
}
///
/// Set a blendShape value immediate
///
///
///
public void SetValue(String key, float value)
{
#pragma warning disable 0618
SetValue(new BlendShapeKey(key), value, true);
#pragma warning restore 0618
}
///
/// Set a blendShape value immediate or delayed.
///
///
///
/// immediate if true
[Obsolete("Use SetValues")]
public void SetValue(String key, float value, bool apply)
{
SetValue(new BlendShapeKey(key), value, apply);
}
///
/// Get a blendShape value
///
///
///
public float GetValue(String key)
{
return GetValue(new BlendShapeKey(key));
}
///
/// Set a blendShape value immediate or delayed.
///
///
///
/// immediate if true
[Obsolete("Use SetValues")]
public void SetValue(BlendShapeKey key, float value, bool apply)
{
if (m_merger != null)
{
m_merger.SetValue(key, value, apply);
}
}
///
/// Set a blendShape value immediate
///
///
///
public void SetValue(BlendShapeKey key, float value)
{
if (m_merger != null)
{
m_merger.SetValue(key, value, true);
}
}
///
/// Get a blendShape value
///
///
///
public float GetValue(BlendShapeKey key)
{
if (m_merger == null)
{
return 0;
}
return m_merger.GetValue(key);
}
///
/// Set blendShape values immediate.
///
///
public void SetValues(IEnumerable> values)
{
if (m_merger != null)
{
m_merger.SetValues(values);
}
}
///
/// Clear all blendShape values
///
public void ClearKeys()
{
if (m_merger != null)
{
m_merger.Clear();
}
}
///
/// Apply blendShape values that use SetValue apply=false
///
public void Apply()
{
if (m_merger != null)
{
m_merger.Apply();
}
}
}
}