123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- /**
- * 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;
- using System;
- using UnityEngine;
- namespace Live2D.Cubism.Framework.Physics
- {
- /// <summary>
- /// Input data of physics.
- /// </summary>
- [Serializable]
- public struct CubismPhysicsInput
- {
- /// <summary>
- /// Delegation of function of getting normalized parameter value.
- /// </summary>
- /// <param name="targetTranslation">Result of translation.</param>
- /// <param name="targetAngle">Result of rotation.</param>
- /// <param name="parameter">Parameter.</param>
- /// <param name="normalization">Normalized components.</param>
- /// <param name="weight">Weight.</param>
- public delegate void NormalizedParameterValueGetter(
- ref Vector2 targetTranslation,
- ref float targetAngle,
- CubismParameter parameter,
- CubismPhysicsNormalization normalization,
- float weight
- );
- /// <summary>
- /// Gets Normalized parameter value from input translation X-axis.
- /// </summary>
- /// <param name="targetTranslation">Result of translation.</param>
- /// <param name="targetAngle">Result of rotation.</param>
- /// <param name="parameter">Parameter.</param>
- /// <param name="normalization">Normalized components.</param>
- /// <param name="weight">Weight.</param>
- private void GetInputTranslationXFromNormalizedParameterValue(
- ref Vector2 targetTranslation,
- ref float targetAngle,
- CubismParameter parameter,
- CubismPhysicsNormalization normalization,
- float weight
- )
- {
- targetTranslation.x += CubismPhysicsMath.Normalize(
- parameter,
- normalization.Position.Minimum,
- normalization.Position.Maximum,
- normalization.Position.Default,
- IsInverted
- ) * weight;
- }
- /// <summary>
- /// Gets Normalized parameter value from input translation Y-axis.
- /// </summary>
- /// <param name="targetTranslation">Result of translation.</param>
- /// <param name="targetAngle">Result of rotation.</param>
- /// <param name="parameter">Parameter.</param>
- /// <param name="normalization">Normalized components.</param>
- /// <param name="weight">Weight.</param>
- private void GetInputTranslationYFromNormalizedParameterValue(
- ref Vector2 targetTranslation,
- ref float targetAngle,
- CubismParameter parameter,
- CubismPhysicsNormalization normalization,
- float weight
- )
- {
- targetTranslation.y += CubismPhysicsMath.Normalize(
- parameter,
- normalization.Position.Minimum,
- normalization.Position.Maximum,
- normalization.Position.Default,
- IsInverted
- ) * weight;
- }
- /// <summary>
- /// Gets Normalized parameter value from input rotation.
- /// </summary>
- /// <param name="targetTranslation">Result of translation.</param>
- /// <param name="targetAngle">Result of rotation.</param>
- /// <param name="parameter">Parameter.</param>
- /// <param name="normalization">Normalized components.</param>
- /// <param name="weight">Weight.</param>
- private void GetInputAngleFromNormalizedParameterValue(
- ref Vector2 targetTranslation,
- ref float targetAngle,
- CubismParameter parameter,
- CubismPhysicsNormalization normalization,
- float weight
- )
- {
- targetAngle += CubismPhysicsMath.Normalize(
- parameter,
- normalization.Angle.Minimum,
- normalization.Angle.Maximum,
- normalization.Angle.Default,
- IsInverted
- ) * weight;
- }
- public void InitializeGetter()
- {
- switch (SourceComponent)
- {
- case CubismPhysicsSourceComponent.X:
- {
- GetNormalizedParameterValue =
- GetInputTranslationXFromNormalizedParameterValue;
- }
- break;
- case CubismPhysicsSourceComponent.Y:
- {
- GetNormalizedParameterValue =
- GetInputTranslationYFromNormalizedParameterValue;
- }
- break;
- case CubismPhysicsSourceComponent.Angle:
- {
- GetNormalizedParameterValue =
- GetInputAngleFromNormalizedParameterValue;
- }
- break;
- }
- }
- /// <summary>
- /// Parameter ID of source.
- /// </summary>
- [SerializeField]
- public string SourceId;
- /// <summary>
- /// Scale of translation.
- /// </summary>
- [SerializeField]
- public Vector2 ScaleOfTranslation;
- /// <summary>
- /// Scale of angle.
- /// </summary>
- [SerializeField]
- public float AngleScale;
- /// <summary>
- /// Weight.
- /// </summary>
- [SerializeField]
- public float Weight;
- /// <summary>
- /// Component of source.
- /// </summary>
- [SerializeField]
- public CubismPhysicsSourceComponent SourceComponent;
- /// <summary>
- /// True if value is inverted; otherwise.
- /// </summary>
- [SerializeField]
- public bool IsInverted;
- /// <summary>
- /// Source data from parameter.
- /// </summary>
- [NonSerialized]
- public CubismParameter Source;
- /// <summary>
- /// Function of getting normalized parameter value.
- /// </summary>
- [NonSerialized]
- public NormalizedParameterValueGetter GetNormalizedParameterValue;
- }
- }
|