CubismExpressionData.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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.Framework.Json;
  8. using System;
  9. using UnityEngine;
  10. namespace Live2D.Cubism.Framework.Expression
  11. {
  12. public class CubismExpressionData : ScriptableObject
  13. {
  14. /// <summary>
  15. /// Expression type.
  16. /// </summary>
  17. [SerializeField]
  18. public string Type;
  19. /// <summary>
  20. /// Expression fade in time.
  21. /// </summary>
  22. [SerializeField]
  23. public float FadeInTime;
  24. /// <summary>
  25. /// Expression fade out time.
  26. /// </summary>
  27. [SerializeField]
  28. public float FadeOutTime;
  29. /// <summary>
  30. /// Expression Parameters
  31. /// </summary>
  32. [SerializeField]
  33. public SerializableExpressionParameter[] Parameters;
  34. /// <summary>
  35. /// ExpressionParameter
  36. /// </summary>
  37. [Serializable]
  38. public struct SerializableExpressionParameter
  39. {
  40. /// <summary>
  41. /// Expression Parameter Id
  42. /// </summary>
  43. [SerializeField]
  44. public string Id;
  45. /// <summary>
  46. /// Expression Parameter Value
  47. /// </summary>
  48. [SerializeField]
  49. public float Value;
  50. /// <summary>
  51. /// Expression Parameter Blend Mode
  52. /// </summary>
  53. [SerializeField]
  54. public CubismParameterBlendMode Blend;
  55. }
  56. public static CubismExpressionData CreateInstance(CubismExp3Json json)
  57. {
  58. var expressionData = CreateInstance<CubismExpressionData>();
  59. return CreateInstance(expressionData, json);
  60. }
  61. public static CubismExpressionData CreateInstance(CubismExpressionData expressionData, CubismExp3Json json)
  62. {
  63. expressionData.Type = json.Type;
  64. expressionData.FadeInTime = json.FadeInTime;
  65. expressionData.FadeOutTime = json.FadeOutTime;
  66. expressionData.Parameters = new SerializableExpressionParameter[json.Parameters.Length];
  67. for(var i = 0; i < json.Parameters.Length; ++i)
  68. {
  69. expressionData.Parameters[i].Id = json.Parameters[i].Id;
  70. expressionData.Parameters[i].Value = json.Parameters[i].Value;
  71. switch(json.Parameters[i].Blend)
  72. {
  73. case "Add":
  74. expressionData.Parameters[i].Blend = CubismParameterBlendMode.Additive;
  75. break;
  76. case "Multiply":
  77. expressionData.Parameters[i].Blend = CubismParameterBlendMode.Multiply;
  78. break;
  79. case "Overwrite":
  80. expressionData.Parameters[i].Blend = CubismParameterBlendMode.Override;
  81. break;
  82. default:
  83. expressionData.Parameters[i].Blend = CubismParameterBlendMode.Additive;
  84. break;
  85. }
  86. }
  87. return expressionData;
  88. }
  89. }
  90. }