mirror of
https://github.com/AssetRipper/AssetRipper.git
synced 2025-12-11 20:15:29 +01:00
* first draft * change requests * actually working draft * duplicated method * use more the new method * - put StateContext class on a separate file - new BidirectionalDictionary<T1,T2> class - other tweaks * - put StateMachineContext class on a separate file - move all asset creations into VirtualAnimationFactory class - added extension method GetName() to IStateConstant - other tweaks * Apply suggestions from code review Co-authored-by: Jeremy Pritts <49847914+ds5678@users.noreply.github.com> * apply requested changes * Apply suggestions from code review Co-authored-by: Jeremy Pritts <49847914+ds5678@users.noreply.github.com> * reorder methods * Update Source/AssetRipper.Processing/AnimatorControllers/AnimatorStateContext.cs Co-authored-by: Jeremy Pritts <49847914+ds5678@users.noreply.github.com> * apply requested changes * IndexedState to StateData[] * Update Source/AssetRipper.Processing/AnimatorControllers/AnimatorStateContext.cs Co-authored-by: Jeremy Pritts <49847914+ds5678@users.noreply.github.com> * apply requested changes * Apply suggestions from code review Co-authored-by: Jeremy Pritts <49847914+ds5678@users.noreply.github.com> * a lot of restructuring and comments * statemachine parenting finished * simplify CreateDefaultAnimatorState * small tweaks --------- Co-authored-by: Jeremy Pritts <49847914+ds5678@users.noreply.github.com>
65 lines
1.7 KiB
C#
65 lines
1.7 KiB
C#
using AssetRipper.SourceGenerated.Enums;
|
|
using AssetRipper.SourceGenerated.Subclasses.OffsetPtr_ConditionConstant;
|
|
using AssetRipper.SourceGenerated.Subclasses.TransitionConstant;
|
|
|
|
namespace AssetRipper.SourceGenerated.Extensions
|
|
{
|
|
public static class TransitionConstantExtensions
|
|
{
|
|
public static bool GetHasFixedDuration(this ITransitionConstant transitionConstant)
|
|
{
|
|
return !transitionConstant.Has_HasFixedDuration() || transitionConstant.HasFixedDuration;
|
|
}
|
|
|
|
public static TransitionInterruptionSource GetInterruptionSource(this ITransitionConstant transitionConstant)
|
|
{
|
|
if (transitionConstant.Has_InterruptionSource())
|
|
{
|
|
return transitionConstant.InterruptionSourceE;
|
|
}
|
|
else
|
|
{
|
|
return transitionConstant.Atomic ? TransitionInterruptionSource.None : TransitionInterruptionSource.Destination;
|
|
}
|
|
}
|
|
|
|
public static float GetExitTime(this ITransitionConstant transitionConstant)
|
|
{
|
|
if (transitionConstant.Has_ExitTime())
|
|
{
|
|
return transitionConstant.ExitTime;
|
|
}
|
|
else
|
|
{
|
|
foreach (OffsetPtr_ConditionConstant conditionPtr in transitionConstant.ConditionConstantArray)
|
|
{
|
|
if (conditionPtr.Data.ConditionModeE == AnimatorConditionMode.ExitTime)
|
|
{
|
|
return conditionPtr.Data.ExitTime;
|
|
}
|
|
}
|
|
return 1.0f;
|
|
}
|
|
}
|
|
|
|
public static bool GetHasExitTime(this ITransitionConstant transitionConstant)
|
|
{
|
|
if (transitionConstant.Has_HasExitTime())
|
|
{
|
|
return transitionConstant.HasExitTime;
|
|
}
|
|
else
|
|
{
|
|
foreach (OffsetPtr_ConditionConstant conditionPtr in transitionConstant.ConditionConstantArray)
|
|
{
|
|
if (conditionPtr.Data.ConditionModeE == AnimatorConditionMode.ExitTime)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|