BITFALL/Assets/MagicaCloth2/Scripts/Core/Cloth/MagicaClothAnimationPropert...

117 lines
4.0 KiB
C#

// Magica Cloth 2.
// Copyright (c) 2024 MagicaSoft.
// https://magicasoft.jp
using UnityEngine;
namespace MagicaCloth2
{
/// <summary>
/// プロパティをアニメーションから制御するためのラッパー.
/// Wrapper for controlling properties from animation.
/// </summary>
public partial class MagicaCloth
{
[HideInInspector]
public float animationPoseRatioProperty;
float _animationPoseRatioProperty;
[HideInInspector]
public float gravityProperty;
float _gravityProperty;
[HideInInspector]
public float dampingProperty;
float _dampingProperty;
[HideInInspector]
public float worldInertiaProperty;
float _worldInertiaProperty;
[HideInInspector]
public float localInertiaProperty;
float _localInertiaProperty;
[HideInInspector]
public float windInfluenceProperty;
float _windInfluenceProperty;
//=========================================================================================
internal void InitAnimationProperty()
{
animationPoseRatioProperty = serializeData.animationPoseRatio;
_animationPoseRatioProperty = animationPoseRatioProperty;
gravityProperty = serializeData.gravity;
_gravityProperty = gravityProperty;
dampingProperty = serializeData.damping.value;
_dampingProperty = dampingProperty;
worldInertiaProperty = serializeData.inertiaConstraint.worldInertia;
_worldInertiaProperty = worldInertiaProperty;
localInertiaProperty = serializeData.inertiaConstraint.localInertia;
_localInertiaProperty = localInertiaProperty;
windInfluenceProperty = serializeData.wind.influence;
_windInfluenceProperty = windInfluenceProperty;
}
/// <summary>
/// アニメーションによりMagicaClothのプロパティが変更されたときに呼び出される.
/// Called when a property of MagicaCloth changes due to animation.
/// </summary>
void OnDidApplyAnimationProperties()
{
if (Application.isPlaying)
{
//Debug.Log($"Animated property changes. F:{Time.frameCount}");
if (animationPoseRatioProperty != _animationPoseRatioProperty)
{
_animationPoseRatioProperty = animationPoseRatioProperty;
serializeData.animationPoseRatio = animationPoseRatioProperty;
SetParameterChange();
}
if (gravityProperty != _gravityProperty)
{
_gravityProperty = gravityProperty;
serializeData.gravity = gravityProperty;
SetParameterChange();
}
if (dampingProperty != _dampingProperty)
{
_dampingProperty = dampingProperty;
serializeData.damping.value = dampingProperty;
SetParameterChange();
}
if (worldInertiaProperty != _worldInertiaProperty)
{
_worldInertiaProperty = worldInertiaProperty;
serializeData.inertiaConstraint.worldInertia = worldInertiaProperty;
SetParameterChange();
}
if (localInertiaProperty != _localInertiaProperty)
{
_localInertiaProperty = localInertiaProperty;
serializeData.inertiaConstraint.localInertia = localInertiaProperty;
SetParameterChange();
}
if (windInfluenceProperty != _windInfluenceProperty)
{
_windInfluenceProperty = windInfluenceProperty;
serializeData.wind.influence = windInfluenceProperty;
SetParameterChange();
}
}
}
}
}