123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- /**
- * 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
- {
- /// <summary>
- /// The cubism expression data.
- /// </summary>
- [System.Serializable]
- public class CubismPlayingExpression
- {
- #region variable
- /// <summary>
- /// Expression type.
- /// </summary>
- [SerializeField]
- public string Type;
- /// <summary>
- /// Expression fade in time.
- /// </summary>
- [SerializeField]
- public float FadeInTime;
- /// <summary>
- /// Expression fade out time.
- /// </summary>
- [SerializeField]
- public float FadeOutTime;
- /// <summary>
- /// Expression Weight.
- /// </summary>
- [SerializeField, Range(0.0f, 1.0f)]
- public float Weight;
- /// <summary>
- /// Expression user time.
- /// </summary>
- [SerializeField]
- public float ExpressionUserTime;
- /// <summary>
- /// Expression end time.
- /// </summary>
- [SerializeField]
- public float ExpressionEndTime;
- /// <summary>
- /// Expression parameters cache.
- /// </summary>
- [SerializeField]
- public CubismParameter[] Destinations;
- /// <summary>
- /// Expression parameter value.
- /// </summary>
- [SerializeField]
- public float[] Value;
- /// <summary>
- /// Expression parameter blend mode.
- /// </summary>
- [SerializeField]
- public CubismParameterBlendMode[] Blend;
- #endregion
- /// <summary>
- /// Initialize expression data from <see cref="CubismExpressionData"/>.
- /// </summary>
- /// <param name="model">model.</param>
- /// <param name="expressionData">Source.</param>
- 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;
- }
- }
- }
|