CubismPlayingExpression.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /**
  2. * Copyright(c) Live2D Inc. All rights reserved.
  3. *
  4. * Use of this source code is governed by the Live2D Open Software license
  5. * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
  6. */
  7. using Live2D.Cubism.Core;
  8. using UnityEngine;
  9. namespace Live2D.Cubism.Framework.Expression
  10. {
  11. /// <summary>
  12. /// The cubism expression data.
  13. /// </summary>
  14. [System.Serializable]
  15. public class CubismPlayingExpression
  16. {
  17. #region variable
  18. /// <summary>
  19. /// Expression type.
  20. /// </summary>
  21. [SerializeField]
  22. public string Type;
  23. /// <summary>
  24. /// Expression fade in time.
  25. /// </summary>
  26. [SerializeField]
  27. public float FadeInTime;
  28. /// <summary>
  29. /// Expression fade out time.
  30. /// </summary>
  31. [SerializeField]
  32. public float FadeOutTime;
  33. /// <summary>
  34. /// Expression Weight.
  35. /// </summary>
  36. [SerializeField, Range(0.0f, 1.0f)]
  37. public float Weight;
  38. /// <summary>
  39. /// Expression user time.
  40. /// </summary>
  41. [SerializeField]
  42. public float ExpressionUserTime;
  43. /// <summary>
  44. /// Expression end time.
  45. /// </summary>
  46. [SerializeField]
  47. public float ExpressionEndTime;
  48. /// <summary>
  49. /// Expression parameters cache.
  50. /// </summary>
  51. [SerializeField]
  52. public CubismParameter[] Destinations;
  53. /// <summary>
  54. /// Expression parameter value.
  55. /// </summary>
  56. [SerializeField]
  57. public float[] Value;
  58. /// <summary>
  59. /// Expression parameter blend mode.
  60. /// </summary>
  61. [SerializeField]
  62. public CubismParameterBlendMode[] Blend;
  63. #endregion
  64. /// <summary>
  65. /// Initialize expression data from <see cref="CubismExpressionData"/>.
  66. /// </summary>
  67. /// <param name="model">model.</param>
  68. /// <param name="expressionData">Source.</param>
  69. public static CubismPlayingExpression Create(CubismModel model, CubismExpressionData expressionData)
  70. {
  71. // Fail silently...
  72. if(model == null || expressionData == null)
  73. {
  74. return null;
  75. }
  76. var ret = new CubismPlayingExpression();
  77. ret.Type = expressionData.Type;
  78. ret.FadeInTime = (expressionData.FadeInTime < 0.0f)
  79. ? 1.0f
  80. : expressionData.FadeInTime;
  81. ret.FadeOutTime = (expressionData.FadeOutTime < 0.0f)
  82. ? 1.0f
  83. : expressionData.FadeOutTime;
  84. ret.Weight = 0.0f;
  85. ret.ExpressionUserTime = 0.0f;
  86. ret.ExpressionEndTime = 0.0f;
  87. var parameterCount = expressionData.Parameters.Length;
  88. ret.Destinations = new CubismParameter[parameterCount];
  89. ret.Value = new float[parameterCount];
  90. ret.Blend = new CubismParameterBlendMode[parameterCount];
  91. for(var i = 0; i < parameterCount; ++i)
  92. {
  93. ret.Destinations[i] = model.Parameters.FindById(expressionData.Parameters[i].Id);
  94. ret.Value[i] = expressionData.Parameters[i].Value;
  95. ret.Blend[i] = expressionData.Parameters[i].Blend;
  96. }
  97. return ret;
  98. }
  99. }
  100. }