/**
* 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 Live2D.Cubism.Framework.Json;
using System;
using UnityEngine;
namespace Live2D.Cubism.Framework.Expression
{
public class CubismExpressionData : ScriptableObject
{
///
/// Expression type.
///
[SerializeField]
public string Type;
///
/// Expression fade in time.
///
[SerializeField]
public float FadeInTime;
///
/// Expression fade out time.
///
[SerializeField]
public float FadeOutTime;
///
/// Expression Parameters
///
[SerializeField]
public SerializableExpressionParameter[] Parameters;
///
/// ExpressionParameter
///
[Serializable]
public struct SerializableExpressionParameter
{
///
/// Expression Parameter Id
///
[SerializeField]
public string Id;
///
/// Expression Parameter Value
///
[SerializeField]
public float Value;
///
/// Expression Parameter Blend Mode
///
[SerializeField]
public CubismParameterBlendMode Blend;
}
public static CubismExpressionData CreateInstance(CubismExp3Json json)
{
var expressionData = CreateInstance();
return CreateInstance(expressionData, json);
}
public static CubismExpressionData CreateInstance(CubismExpressionData expressionData, CubismExp3Json json)
{
expressionData.Type = json.Type;
expressionData.FadeInTime = json.FadeInTime;
expressionData.FadeOutTime = json.FadeOutTime;
expressionData.Parameters = new SerializableExpressionParameter[json.Parameters.Length];
for(var i = 0; i < json.Parameters.Length; ++i)
{
expressionData.Parameters[i].Id = json.Parameters[i].Id;
expressionData.Parameters[i].Value = json.Parameters[i].Value;
switch(json.Parameters[i].Blend)
{
case "Add":
expressionData.Parameters[i].Blend = CubismParameterBlendMode.Additive;
break;
case "Multiply":
expressionData.Parameters[i].Blend = CubismParameterBlendMode.Multiply;
break;
case "Overwrite":
expressionData.Parameters[i].Blend = CubismParameterBlendMode.Override;
break;
default:
expressionData.Parameters[i].Blend = CubismParameterBlendMode.Additive;
break;
}
}
return expressionData;
}
}
}