123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- /**
- * 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;
- namespace Live2D.Cubism.Framework
- {
- /// <summary>
- /// Extensions for <see cref="CubismParameter"/>s.
- /// </summary>
- public static class CubismParameterExtensionMethods
- {
- /// <summary>
- /// Additively blends a value in.
- /// </summary>
- /// <param name="parameter"><see langword="this"/>.</param>
- /// <param name="value">Value to blend in.</param>
- /// <param name="weight">Blend weight.</param>
- public static void AddToValue(this CubismParameter parameter, float value, float weight = 1f)
- {
- parameter.Value += (value * weight);
- }
- /// <summary>
- /// Multiply blends a value in.
- /// </summary>
- /// <param name="parameter"><see langword="this"/>.</param>
- /// <param name="value">Value to blend in.</param>
- /// <param name="weight">Blend weight.</param>
- public static void MultiplyValueBy(this CubismParameter parameter, float value, float weight = 1f)
- {
- parameter.Value *= (1f + ((value - 1f) * weight));
- }
- /// <summary>
- /// Blends a value in.
- /// </summary>
- /// <param name="self"><see langword="this"/>.</param>
- /// <param name="value">Value to blend in.</param>
- /// <param name="mode">Blend mode to use.</param>
- public static void BlendToValue(this CubismParameter self, CubismParameterBlendMode mode, float value)
- {
- if (mode == CubismParameterBlendMode.Additive)
- {
- self.AddToValue(value);
- return;
- }
- if (mode == CubismParameterBlendMode.Multiply)
- {
- self.MultiplyValueBy(value);
- return;
- }
- self.Value = value;
- }
- /// <summary>
- /// Blends the same value into multiple <see cref="CubismParameter"/>s.
- /// </summary>
- /// <param name="self"><see langword="this"/>.</param>
- /// <param name="value">Value to blend in.</param>
- /// <param name="mode">Blend mode to use.</param>
- public static void BlendToValue(this CubismParameter[] self, CubismParameterBlendMode mode, float value)
- {
- if (mode == CubismParameterBlendMode.Additive)
- {
- for (var i = 0; i < self.Length; ++i)
- {
- self[i].AddToValue(value);
- }
- return;
- }
- if (mode == CubismParameterBlendMode.Multiply)
- {
- for (var i = 0; i < self.Length; ++i)
- {
- self[i].MultiplyValueBy(value);
- }
- return;
- }
- for (var i = 0; i < self.Length; ++i)
- {
- self[i].Value = value;
- }
- }
- }
- }
|