CartesianMixerState Class

Summary

[Pro-Only] An Animancer.AnimancerState which blends an array of other states together based on a two dimensional parameter and thresholds using Gradient Band Interpolation.
graph BT Type-->Base0["MixerState<Vector2>"] Base0-->Base1["ManualMixerState"] click Base1 "/animancer-v7-4/api/Animancer/ManualMixerState" Base1-->Base2["AnimancerState"] click Base2 "/animancer-v7-4/api/Animancer/AnimancerState" Base2-->Base3["AnimancerNode"] click Base3 "/animancer-v7-4/api/Animancer/AnimancerNode" Base3-->Base4["Key"] click Base4 "/animancer-v7-4/api/Animancer/Key" Base4-->Base5["Object"] Type-.->Interface0["IUpdatable"] click Interface0 "/animancer-v7-4/api/Animancer/IUpdatable" Type-.->Interface1["Key.IListItem"] click Interface1 "/animancer-v7-4/api/Animancer/IListItem" Type-.->Interface2["IEnumerable<AnimancerState>"] Type-.->Interface3["IEnumerator"] Type-.->Interface4["IPlayableWrapper"] click Interface4 "/animancer-v7-4/api/Animancer/IPlayableWrapper" Type-.->Interface5["ICopyable<AnimancerNode>"] Type-.->Interface6["IAnimationClipCollection"] click Interface6 "/animancer-v7-4/api/Animancer/IAnimationClipCollection" Type-.->Interface7["ICopyable<AnimancerState>"] Type-.->Interface8["ICopyable<ManualMixerState>"] Type-.->Interface9["ICopyable<MixerState<Vector2>>"] Type-.->Interface10["ICopyable<CartesianMixerState>"] Type["CartesianMixerState"] class Type type-node

Syntax

public class CartesianMixerState : MixerState<Vector2>, IUpdatable, Key.IListItem, 
    IEnumerable<AnimancerState>, IEnumerator, IPlayableWrapper, ICopyable<AnimancerNode>, 
    IAnimationClipCollection, ICopyable<AnimancerState>, ICopyable<ManualMixerState>, 
    ICopyable<MixerState<Vector2>>, ICopyable<CartesianMixerState>

Remarks

This mixer type is similar to the 2D Freeform Cartesian Blend Type in Mecanim Blend Trees.

Documentation: Mixers

Fields

Name Constant Value Summary
NotInList -1
The Animancer.Key._Index which indicates that an item isn't in a list.
Inherited from Key
static

Properties

Name Value Summary
ApplyAnimatorIK bool
Should Unity call OnAnimatorIK on the animated object while this object and its children have any Animancer.AnimancerNode.Weight?
Inherited from ManualMixerState
ApplyFootIK bool
Should this object and its children apply IK to the character's feet?
Inherited from ManualMixerState
ApplyParentAnimatorIK bool
Should setting the Animancer.AnimancerNode.Parent also set this node's Animancer.AnimancerNode.ApplyAnimatorIK to match it? Default is true.
Inherited from AnimancerNode
static
ApplyParentFootIK bool
Should setting the Animancer.AnimancerNode.Parent also set this node's Animancer.AnimancerNode.ApplyFootIK to match it? Default is true.
Inherited from AnimancerNode
static
AutomaticallyClearEvents bool
Should the Animancer.AnimancerState.Events be cleared automatically whenever Animancer.AnimancerState.Play, Animancer.AnimancerState.Stop, or Animancer.AnimancerState.OnStartFade are called? Default true.
Inherited from AnimancerState
static
AverageVelocity Vector3
The average velocity of the root motion caused by this state.
Inherited from ManualMixerState
ChildCapacity int
The size of the internal array of Animancer.ManualMixerState.ChildStates.
Inherited from ManualMixerState
ChildCount int
[Animancer.IPlayableWrapper] The number of states using this node as their Animancer.AnimancerState.Parent.
Inherited from ManualMixerState
ChildStates AnimancerState[]
The states connected to this mixer.
Inherited from ManualMixerState
Clip AnimationClip
A Animancer.ManualMixerState has no UnityEngine.AnimationClip.
Inherited from ManualMixerState
DebugName string
[Assert-Only] The Inspector display name of this node.
Inherited from AnimancerNode
DefaultChildCapacity int
Animancer.ManualMixerState.ChildCapacity starts at 0 then expands to this value when the first child is added.
Inherited from ManualMixerState
static
Duration float
The number of seconds the animation will take to play fully at its current Animancer.AnimancerNode.EffectiveSpeed.
Inherited from AnimancerState
EffectiveSpeed float
The Animancer.AnimancerNode.Speed of this node multiplied by the Animancer.AnimancerNode.Speed of each of its parents to determine the actual speed it's playing at.
Inherited from AnimancerNode
EffectiveWeight float
The Animancer.AnimancerNode.Weight of this state multiplied by the Animancer.AnimancerNode.Weight of each of its parents down the hierarchy to determine how much this state affects the final output.
Inherited from AnimancerNode
Events AnimancerEvent.Sequence
A list of Animancer.AnimancerEvents that will occur while this state plays as well as one that specifically defines when this state ends.
Inherited from AnimancerState
FadeSpeed float
The speed at which this node is fading towards the Animancer.AnimancerNode.TargetWeight.
Inherited from AnimancerNode
HasEvents bool
Does this state have an Animancer.AnimancerEvent.Sequence?
Inherited from AnimancerState
Index int
The index of the port this node is connected to on the parent's Animancer.AnimancerNode.Playable.
Inherited from AnimancerNode
IsActive bool
Returns true if this state is playing and is at or fading towards a non-zero Animancer.AnimancerNode.Weight.
Inherited from AnimancerState
IsLooping bool
Are any child states looping?
Inherited from ManualMixerState
IsPlaying bool
Is the Animancer.AnimancerState.Time automatically advancing?
Inherited from AnimancerState
IsStopped bool
Returns true if this state isn't playing and is at 0 Animancer.AnimancerNode.Weight.
Inherited from AnimancerState
IsValid bool
Is the Animancer.AnimancerNode.Playable usable (properly initialized and not destroyed)?
Inherited from AnimancerNode
KeepChildrenConnected bool
Returns true because mixers should always keep child playables connected to the graph.
Inherited from ManualMixerState
Key Object
The object used to identify this state in the root Animancer.AnimancerPlayable.States dictionary. Can be null.
Inherited from AnimancerState
Layer AnimancerLayer
The root Animancer.AnimancerLayer which this node is connected to.
Inherited from AnimancerState
LayerIndex int
The index of the Animancer.AnimancerLayer this state is connected to (determined by the Animancer.AnimancerState.Parent). Returns -1 if this state is not connected to a layer.
Inherited from AnimancerState
Length float
The weighted average Animancer.AnimancerState.Length of each child state according to their Animancer.AnimancerNode.Weight.
Inherited from ManualMixerState
MainObject Object
The main object to show in the Inspector for this state (if any).
Inherited from AnimancerState
MinimumSynchronizeChildrenWeight float
The minimum total weight of all children for their times to be synchronized. Default 0.01.
Inherited from ManualMixerState
static
NormalizedEndTime float
[Pro-Only] The Animancer.AnimancerState.NormalizedTime after which the Animancer.AnimancerEvent.Sequence.OnEnd callback will be invoked every frame.
Inherited from AnimancerState
NormalizedTime float
The Animancer.AnimancerState.Time of this state as a portion of the animation's Animancer.AnimancerState.Length, meaning the value goes from 0 to 1 as it plays from start to end, regardless of how long that actually takes.
Inherited from AnimancerState
NormalizedTimeD double
The underlying double value of Animancer.AnimancerState.NormalizedTime.
Inherited from AnimancerState
ParameterCount int
The number of parameters being managed by this state.
ParameterX float
Animancer.MixerState`1.Parameter.x.
ParameterY float
Animancer.MixerState`1.Parameter.y.
Parent IPlayableWrapper
The object which receives the output of the UnityEngine.Playables.Playable.
Inherited from AnimancerState
Playable Playable
The internal UnityEngine.Playables.Playable managed by this node.
Inherited from AnimancerNode
RawTime double
The weighted average Animancer.AnimancerState.Time of each child state according to their Animancer.AnimancerNode.Weight.
Inherited from ManualMixerState
RemainingDuration float
The number of seconds this state will take to go from its current Animancer.AnimancerState.NormalizedTime to the Animancer.AnimancerState.NormalizedEndTime at its current Animancer.AnimancerNode.EffectiveSpeed.
Inherited from AnimancerState
Root AnimancerPlayable
The Animancer.AnimancerPlayable at the root of the graph.
Inherited from AnimancerNode
Speed float
[Pro-Only] How fast the Animancer.AnimancerState.Time is advancing every frame (default 1).
Inherited from AnimancerNode
SynchronizedChildCount int
The number of Animancer.ManualMixerState.SynchronizedChildren.
Inherited from ManualMixerState
SynchronizedChildren AnimancerState[]
A copy of the internal list of child states that will have their times synchronized.
Inherited from ManualMixerState
SynchronizeNewChildren bool
Should newly added children be automatically added to the synchronization list? Default true.
Inherited from ManualMixerState
static
TargetWeight float
The desired Animancer.AnimancerNode.Weight which this node is fading towards according to the Animancer.AnimancerNode.FadeSpeed.
Inherited from AnimancerNode
Time float
The number of seconds that have passed since the start of this animation.
Inherited from AnimancerState
TimeD double
The underlying double value of Animancer.AnimancerState.Time.
Inherited from AnimancerState
TraceConstructor bool
[Assert-Only] Should a System.Diagnostics.StackTrace be captured in the constructor of all new nodes so Animancer.OptionalWarning.UnusedNode can include it in the warning if that node ends up being unused?
Inherited from AnimancerNode
static
UnsupportedEventsMessage string
[Assert-Only] Returns null if Animancer Events will work properly on this type of state, or a message explaining why they might not work.
Inherited from AnimancerState
UnsupportedSpeedMessage string
[Assert-Only] Returns null if the Animancer.AnimancerNode.Speed property will work properly on this type of node, or a message explaining why it won't work.
Inherited from AnimancerNode
Weight float
The current blend weight of this node which determines how much it affects the final output.
Inherited from AnimancerNode
WeightsAreDirty bool
Should the weights of all child states be recalculated?
Inherited from ManualMixerState

Methods

Name Value Summary
~AnimancerNode() void
[Assert-Only] Checks Animancer.OptionalWarning.UnusedNode.
Inherited from AnimancerNode
Add(AnimancerState) void
Assigns the `state` as a child of this mixer.
Inherited from ManualMixerState
Add(AnimationClip) ClipState
Creates and returns a new Animancer.ClipState to play the `clip` as a child of this mixer.
Inherited from ManualMixerState
Add(ITransition) AnimancerState
Calls Animancer.AnimancerUtilities.CreateStateAndApply(Animancer.ITransition,Animancer.AnimancerPlayable) then Animancer.ManualMixerState.Add(Animancer.AnimancerState).
Inherited from ManualMixerState
Add(Object) AnimancerState
Calls one of the other Animancer.ManualMixerState.Add(System.Object) overloads as appropriate for the `child`.
Inherited from ManualMixerState
AddRange(AnimationClip[]) void
Calls Animancer.ManualMixerState.Add(UnityEngine.AnimationClip) for each of the `clips`.
Inherited from ManualMixerState
AddRange(IList<AnimationClip>) void
Calls Animancer.ManualMixerState.Add(UnityEngine.AnimationClip) for each of the `clips`.
Inherited from ManualMixerState
AddRange(IList<ITransition>) void
Calls Animancer.ManualMixerState.Add(Animancer.ITransition) for each of the `transitions`.
Inherited from ManualMixerState
AddRange(IList<Object>) void
Calls Animancer.ManualMixerState.Add(System.Object) for each of the `children`.
Inherited from ManualMixerState
AddRange(ITransition[]) void
Calls Animancer.ManualMixerState.Add(Animancer.ITransition) for each of the `clips`.
Inherited from ManualMixerState
AddRange(Object[]) void
Calls Animancer.ManualMixerState.Add(System.Object) for each of the `clips`.
Inherited from ManualMixerState
AppendDescription(StringBuilder, string) void
Appends a detailed descrption of the current details of this node.
Inherited from AnimancerNode
AppendIKDetails(StringBuilder, string, IPlayableWrapper) void
Appends the details of Animancer.IPlayableWrapper.ApplyAnimatorIK and Animancer.IPlayableWrapper.ApplyFootIK.
Inherited from AnimancerNode
static
AppendParameter(StringBuilder, Vector2) void
Appends the `parameter` in a viewer-friendly format.
ApplySynchronizeChildren(bool) void
Synchronizes the Animancer.AnimancerState.NormalizedTimes of the Animancer.ManualMixerState.SynchronizedChildren by modifying their internal playable speeds.
Inherited from ManualMixerState
ApplyWeight() void
Applies the Animancer.AnimancerNode.Weight to the connection between this node and its Animancer.AnimancerNode.Parent.
Inherited from AnimancerNode
AssertConnectionWeight() void
[Assert-Only] Logs an error if the weight of the connection between the Animancer.AnimancerNode.Parent and this node does not match the Animancer.AnimancerNode.Weight.
Inherited from AnimancerNode
AssertConnectionWeightRecursive(IPlayableWrapper) void
[Assert-Only] Calls Animancer.AnimancerNode.AssertConnectionWeight for this node and all of its children.
Inherited from AnimancerNode
static
CalculateRealEffectiveSpeed() float
The multiplied UnityEngine.Playables.PlayableExtensions.GetSpeed``1(``0) of this mixer and its parents down the hierarchy to determine the actual speed its output is being played at.
Inherited from ManualMixerState
CalculateTotalWeight(AnimancerState[], int) float
Calculates the sum of the Animancer.AnimancerNode.Weight of all `states`.
Inherited from ManualMixerState
static
CancelSetTime() void
Prevents the Animancer.AnimancerState.RawTime from being applied.
Inherited from AnimancerState
ChangeMainObject<T>(T, T) void
Sets the `currentObject` and calls Animancer.AnimancerNode.RecreatePlayable. If the `currentObject` was being used as the Animancer.AnimancerState.Key then it is changed as well.
Inherited from AnimancerState
Clone() AnimancerState
Creates a copy of this state with the same Animancer.AnimancerNode.Root.
Inherited from AnimancerState
Clone(AnimancerPlayable) AnimancerState
CopyIKFlags(AnimancerNode) void
Copies the IK settings from the Animancer.AnimancerNode.Parent:
  • If is true, copy .
  • If is true, copy .
Inherited from AnimancerNode
CreatePlayable() void
Creates and assigns the UnityEngine.Playables.Playable managed by this state.
Inherited from AnimancerState
CreatePlayable(Playable) void
Creates and assigns the UnityEngine.Animations.AnimationMixerPlayable managed by this state.
Inherited from ManualMixerState
CreatePlayable<T>(AnimancerPlayable, T, bool) AnimationScriptPlayable
Creates an UnityEngine.Animations.AnimationScriptPlayable to run the specified Animation Job instead of the usual UnityEngine.Animations.AnimationMixerPlayable.
Inherited from ManualMixerState
CreatePlayable<T>(Playable, T, bool) void
Creates an UnityEngine.Animations.AnimationScriptPlayable to run the specified Animation Job instead of the usual UnityEngine.Animations.AnimationMixerPlayable.
Inherited from ManualMixerState
Destroy() void
Destroys the UnityEngine.Playables.Playable and cleans up this state.
Inherited from ManualMixerState
DestroyChildren() void
Destroys all Animancer.ManualMixerState.ChildStates connected to this mixer. This operation cannot be undone.
Inherited from ManualMixerState
DestroyPlayable() void
Destroys the Animancer.AnimancerNode.Playable.
Inherited from AnimancerNode
DisableRemainingStates(int) void
Sets the weight of all states after the `previousIndex` to 0.
Inherited from ManualMixerState
DontSynchronize(AnimancerState) void
Removes the `state` from the Animancer.ManualMixerState.SynchronizedChildren.
Inherited from ManualMixerState
DontSynchronizeChildren() void
Removes all children of this mixer from the Animancer.ManualMixerState.SynchronizedChildren.
Inherited from ManualMixerState
EnsureRemainingChildCapacity(int) void
Ensures that the remaining unused Animancer.ManualMixerState.ChildCapacity is greater than or equal to the `minimumCapacity`.
Inherited from ManualMixerState
ForceRecalculateWeights() void
Recalculates the weights of all Animancer.ManualMixerState.ChildStates based on the current value of the Animancer.MixerState`1.Parameter and the Animancer.MixerState`1._Thresholds.
GatherAnimationClips(ICollection<AnimationClip>) void
[Animancer.IAnimationClipCollection] Gathers all the animations in this state.
Inherited from ManualMixerState
GetChild(int) AnimancerState
[Animancer.IPlayableWrapper] Returns the state connected to the specified `index` as a child of this node.
Inherited from ManualMixerState
GetConstructorStackTrace(AnimancerNode) StackTrace
[Assert-Only] Returns the stack trace of the constructor (or null if Animancer.AnimancerNode.TraceConstructor was false).
Inherited from AnimancerNode
static
GetDescription(string) string
Returns a detailed descrption of the current details of this node.
Inherited from AnimancerNode
GetEnumerator() FastEnumerator<AnimancerState>
Gets an enumerator for all of this node's child states.
Inherited from ManualMixerState
GetJobData<T>() T
Gets the Animation Job data from the UnityEngine.Animations.AnimationScriptPlayable.
Inherited from ManualMixerState
GetParameterError(Vector2) string
Returns an error message if the given `parameter` value can't be assigned to the Animancer.MixerState`1.Parameter. Otherwise returns null.
GetParameterName(int) string
Returns the name of a parameter being managed by this state.
GetParameterType(int) AnimatorControllerParameterType
Returns the type of a parameter being managed by this state.
GetParameterValue(int) Object
Returns the value of a parameter being managed by this state.
GetParentMixer() ManualMixerState
Returns the highest Animancer.ManualMixerState in the hierarchy above this mixer or this mixer itself if there are none above it.
Inherited from ManualMixerState
GetParentMixer(IPlayableWrapper) ManualMixerState
Returns the highest Animancer.ManualMixerState in the hierarchy above the `state` (inclusive).
Inherited from ManualMixerState
static
GetPath() string
Returns the hierarchy path of this state through its Animancer.AnimancerState.Parents.
Inherited from AnimancerState
IndexOf(AnimancerState) int
Returns the index of the specified `child` state.
Inherited from ManualMixerState
IndexOf(Key) int
Returns location of this object in the list (or -1 if it is not currently in a keyed list).
Inherited from Key
static
InitializeSynchronizedChildren(bool[]) void
Initializes the internal Animancer.ManualMixerState.SynchronizedChildren list.
Inherited from ManualMixerState
IsChildOf(IPlayableWrapper, IPlayableWrapper) bool
Is the `child` a child of the `parent`?
Inherited from ManualMixerState
static
IsInList(Key) bool
Is the `key` currently in a keyed list?
Inherited from Key
static
IsPlayingAndNotEnding() bool
Returns true if the animation is playing and has not yet passed the Animancer.AnimancerEvent.Sequence.EndEvent.
Inherited from AnimancerState
IsSynchronized(AnimancerState) bool
Is the `state` in the Animancer.ManualMixerState.SynchronizedChildren?
Inherited from ManualMixerState
MoveTime(double, bool) void
Sets the Animancer.AnimancerState.Time or Animancer.AnimancerState.NormalizedTime, but unlike those properties this method applies any Root Motion and Animation Events (but not Animancer Events) between the old and new time.
Inherited from ManualMixerState
MoveTime(float, bool) void
Sets the Animancer.AnimancerState.Time or Animancer.AnimancerState.NormalizedTime, but unlike those properties this method applies any Root Motion and Animation Events (but not Animancer Events) between the old and new time.
Inherited from AnimancerState
NormalizeDurations() void
Recalculates the Animancer.AnimancerState.Duration of all child states so that they add up to 1.
Inherited from ManualMixerState
NormalizeWeights(float) void
Divides the weight of all child states by the `totalWeight`.
Inherited from ManualMixerState
OnAddChild(IList<AnimancerState>, AnimancerState) void
Connects the `state` to this node at its Animancer.AnimancerNode.Index.
Inherited from AnimancerNode
OnSetIsPlaying() void
Called when the value of Animancer.AnimancerState.IsPlaying is changed.
Inherited from ManualMixerState
OnThresholdsChanged() void
Called whenever the thresholds are changed. Indicates that the internal blend factors need to be recalculated and calls Animancer.CartesianMixerState.ForceRecalculateWeights.
Play() void
Plays this state immediately, without any blending.

Unlike Animancer.AnimancerPlayable.Play(Animancer.AnimancerState), this method only affects this state and won't stop any others that are playing.
Inherited from AnimancerState
RecalculateWeights() bool
If Animancer.ManualMixerState.WeightsAreDirty this method recalculates the weights of all child states and returns true.
Inherited from ManualMixerState
RecreatePlayableRecursive() void
Calls Animancer.AnimancerNode.RecreatePlayable on this node and all its children recursively.
Inherited from AnimancerNode
Remove(AnimancerState, bool) void
Removes the specified `child`.
Inherited from ManualMixerState
Remove(int, bool) void
Removes the child at the specified `index`.
Inherited from ManualMixerState
RequireUpdate() void
Calls Animancer.AnimancerPlayable.RequirePreUpdate(Animancer.IUpdatable) if the Animancer.AnimancerNode.Root is not null.
Inherited from AnimancerNode
Set(int, AnimancerState, bool) void
Replaces the `child` at the specified `index`.
Inherited from ManualMixerState
Set(int, AnimationClip, bool) ClipState
Replaces the child at the specified `index` with a new Animancer.ClipState.
Inherited from ManualMixerState
Set(int, ITransition, bool) AnimancerState
Replaces the child at the specified `index` with a Animancer.ITransition.CreateState.
Inherited from ManualMixerState
Set(int, Object, bool) AnimancerState
Calls one of the other Animancer.ManualMixerState.Set(System.Int32,System.Object,System.Boolean) overloads as appropriate for the `child`.
Inherited from ManualMixerState
SetChildrenTime(float, bool) void
Sets Animancer.AnimancerState.Time for all Animancer.ManualMixerState.ChildStates.
Inherited from ManualMixerState
SetDebugName(string) void
[Assert-Conditional] Sets the Inspector display name of this node. Animancer.AnimancerNode.ToString returns the name.
Inherited from AnimancerNode
SetJobData<T>(T) void
Sets the Animation Job data in the UnityEngine.Animations.AnimationScriptPlayable.
Inherited from ManualMixerState
SetNewCloneRoot(AnimancerPlayable) void
Sets the Animancer.AnimancerNode.Root.
Inherited from AnimancerState
SetParameterValue(int, Object) void
Sets the value of a parameter being managed by this state.
SetParent(AnimancerNode, int) void
Connects this state to the `parent` state at the specified `index`.
Inherited from AnimancerState
SetRoot(AnimancerPlayable) void
The Animancer.AnimancerPlayable at the root of the graph.
Inherited from AnimancerState
SetWeight(float) void
Sets the current blend weight of this node which determines how much it affects the final output. 0 has no effect while 1 applies the full effect of this node.

This method allows any fade currently in progress to continue. If you don't wish to do that, you can set the Animancer.AnimancerNode.Weight property instead.

Animancer Lite only allows this value to be set to 0 or 1 in runtime builds.
Inherited from AnimancerNode
StartFade(float) void
Calls Animancer.AnimancerNode.OnStartFade and starts fading the Animancer.AnimancerNode.Weight over the course of the Animancer.AnimancerPlayable.DefaultFadeDuration (in seconds).
Inherited from AnimancerNode
StartFade(float, float) void
Calls Animancer.AnimancerNode.OnStartFade and starts fading the Animancer.AnimancerNode.Weight over the course of the `fadeDuration` (in seconds).
Inherited from AnimancerNode
Stop() void
Stops the animation and makes it inactive immediately so it no longer affects the output.
Inherited from AnimancerState
Synchronize(AnimancerState) void
Adds the `state` to the Animancer.ManualMixerState.SynchronizedChildren.
Inherited from ManualMixerState
ToString() string
Returns a string describing the type of this mixer and the name of Animancer.ManualMixerState.Clips connected to it.
Inherited from ManualMixerState

Extension Methods

Name Value Summary
CalculateEditorFadeDuration(float) float
[Animancer Extension] [Editor-Only] Returns the duration of the `node`s current fade (if any), otherwise returns the `defaultDuration`.
CalculateThresholdsFromAverageVelocityXZ() void
[Animancer Extension] [Pro-Only] Calculates all thresholds in the `mixer` using the Animancer.AnimancerState.AverageVelocity of each state on the X and Z axes.

Note that this method requires the Root Transform Position (XZ) -> Bake Into Pose toggle to be disabled in the Import Settings of each UnityEngine.AnimationClip in the mixer.
IsValid() bool
[Animancer Extension] Is the `node` is not null and Animancer.AnimancerNode.IsValid?