/** * 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; } } }