/** * 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.Core; using UnityEngine; namespace Live2D.Cubism.Framework.Expression { /// /// The cubism expression data. /// [System.Serializable] public class CubismPlayingExpression { #region variable /// /// Expression type. /// [SerializeField] public string Type; /// /// Expression fade in time. /// [SerializeField] public float FadeInTime; /// /// Expression fade out time. /// [SerializeField] public float FadeOutTime; /// /// Expression Weight. /// [SerializeField, Range(0.0f, 1.0f)] public float Weight; /// /// Expression user time. /// [SerializeField] public float ExpressionUserTime; /// /// Expression end time. /// [SerializeField] public float ExpressionEndTime; /// /// Expression parameters cache. /// [SerializeField] public CubismParameter[] Destinations; /// /// Expression parameter value. /// [SerializeField] public float[] Value; /// /// Expression parameter blend mode. /// [SerializeField] public CubismParameterBlendMode[] Blend; #endregion /// /// Initialize expression data from . /// /// model. /// Source. public static CubismPlayingExpression Create(CubismModel model, CubismExpressionData expressionData) { // Fail silently... if(model == null || expressionData == null) { return null; } var ret = new CubismPlayingExpression(); ret.Type = expressionData.Type; ret.FadeInTime = (expressionData.FadeInTime < 0.0f) ? 1.0f : expressionData.FadeInTime; ret.FadeOutTime = (expressionData.FadeOutTime < 0.0f) ? 1.0f : expressionData.FadeOutTime; ret.Weight = 0.0f; ret.ExpressionUserTime = 0.0f; ret.ExpressionEndTime = 0.0f; var parameterCount = expressionData.Parameters.Length; ret.Destinations = new CubismParameter[parameterCount]; ret.Value = new float[parameterCount]; ret.Blend = new CubismParameterBlendMode[parameterCount]; for(var i = 0; i < parameterCount; ++i) { ret.Destinations[i] = model.Parameters.FindById(expressionData.Parameters[i].Id); ret.Value[i] = expressionData.Parameters[i].Value; ret.Blend[i] = expressionData.Parameters[i].Blend; } return ret; } } }