CubismBuiltinPickers.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 Live2D.Cubism.Rendering;
  9. using UnityEngine;
  10. namespace Live2D.Cubism.Framework.Json
  11. {
  12. /// <summary>
  13. /// Default pickers.
  14. /// </summary>
  15. public static class CubismBuiltinPickers
  16. {
  17. /// <summary>
  18. /// Builtin <see cref="Material"/> picker.
  19. /// </summary>
  20. /// <param name="sender">Event source.</param>
  21. /// <param name="drawable">Drawable to map to.</param>
  22. /// <returns>Mapped texture.</returns>
  23. public static Material MaterialPicker(CubismModel3Json sender, CubismDrawable drawable)
  24. {
  25. if (drawable.IsDoubleSided)
  26. {
  27. if (drawable.BlendAdditive)
  28. {
  29. return (drawable.IsMasked)
  30. ? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitAdditiveMaskedInverted :
  31. CubismBuiltinMaterials.UnlitAdditiveMasked
  32. : CubismBuiltinMaterials.UnlitAdditive;
  33. }
  34. if (drawable.MultiplyBlend)
  35. {
  36. return (drawable.IsMasked)
  37. ? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitMultiplyMaskedInverted :
  38. CubismBuiltinMaterials.UnlitMultiplyMasked
  39. : CubismBuiltinMaterials.UnlitMultiply;
  40. }
  41. return (drawable.IsMasked)
  42. ? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitMaskedInverted :
  43. CubismBuiltinMaterials.UnlitMasked
  44. : CubismBuiltinMaterials.Unlit;
  45. }
  46. if (drawable.BlendAdditive)
  47. {
  48. return (drawable.IsMasked)
  49. ? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitAdditiveMaskedInvertedCulling :
  50. CubismBuiltinMaterials.UnlitAdditiveMaskedCulling
  51. : CubismBuiltinMaterials.UnlitAdditiveCulling;
  52. }
  53. if (drawable.MultiplyBlend)
  54. {
  55. return (drawable.IsMasked)
  56. ? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitMultiplyMaskedInvertedCulling :
  57. CubismBuiltinMaterials.UnlitMultiplyMaskedCulling
  58. : CubismBuiltinMaterials.UnlitMultiplyCulling;
  59. }
  60. return (drawable.IsMasked)
  61. ? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitMaskedInvertedCulling :
  62. CubismBuiltinMaterials.UnlitMaskedCulling
  63. : CubismBuiltinMaterials.UnlitCulling;
  64. }
  65. /// <summary>
  66. /// Builtin <see cref="Texture2D"/> picker.
  67. /// </summary>
  68. /// <param name="sender">Event source.</param>
  69. /// <param name="drawable">Drawable to map to.</param>
  70. /// <returns>Mapped texture.</returns>
  71. public static Texture2D TexturePicker(CubismModel3Json sender, CubismDrawable drawable)
  72. {
  73. return sender.Textures[drawable.TextureIndex];
  74. }
  75. }
  76. }