/** * 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 { /// /// Extensions for s. /// public static class CubismParameterExtensionMethods { /// /// Additively blends a value in. /// /// . /// Value to blend in. /// Blend weight. public static void AddToValue(this CubismParameter parameter, float value, float weight = 1f) { parameter.Value += (value * weight); } /// /// Multiply blends a value in. /// /// . /// Value to blend in. /// Blend weight. public static void MultiplyValueBy(this CubismParameter parameter, float value, float weight = 1f) { parameter.Value *= (1f + ((value - 1f) * weight)); } /// /// Blends a value in. /// /// . /// Value to blend in. /// Blend mode to use. 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; } /// /// Blends the same value into multiple s. /// /// . /// Value to blend in. /// Blend mode to use. 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; } } } }