Accomodate new VRCAnimatorPlayAudio requirements:

- Nodes need to know the Animator Root, so that relative paths can be resolved during the creation of State behaviours (i.e. Relative path of an AudioSource).
- Nodes need to have the ability to create a New Behaviour, even if one already exists.
This commit is contained in:
Haï~
2024-06-30 13:58:54 +02:00
parent a9e1b62818
commit 582b109a82
4 changed files with 33 additions and 12 deletions
@@ -121,8 +121,8 @@ namespace AnimatorAsCode.V1
private readonly HashSet<string> _stateNames;
internal AacFlStateMachine(AnimatorStateMachine machine, AnimationClip emptyClip, AacBackingAnimator backingAnimator, IAacDefaultsProvider defaultsProvider, AacFlStateMachine parent = null)
: base(parent, defaultsProvider)
internal AacFlStateMachine(AnimatorStateMachine machine, AnimationClip emptyClip, AacBackingAnimator backingAnimator, IAacDefaultsProvider defaultsProvider, Transform animatorRoot, AacFlStateMachine parent = null)
: base(parent, defaultsProvider, animatorRoot)
{
Machine = machine;
_emptyClip = emptyClip;
@@ -151,7 +151,7 @@ namespace AnimatorAsCode.V1
public AacFlStateMachine NewSubStateMachine(string name, int x, int y)
{
var stateMachine = AacInternals.NoUndo(Machine, () => Machine.AddStateMachine(EnsureNameIsDeduplicated(name), GridPosition(x, y)));
var aacMachine = new AacFlStateMachine(stateMachine, _emptyClip, _backingAnimator, DefaultsProvider, this);
var aacMachine = new AacFlStateMachine(stateMachine, _emptyClip, _backingAnimator, DefaultsProvider, AnimatorRoot, this);
_defaultsProvider.ConfigureStateMachine(stateMachine);
_childNodes.Add(aacMachine);
return aacMachine;
@@ -191,7 +191,7 @@ namespace AnimatorAsCode.V1
{
var state = AacInternals.NoUndo(Machine, () => Machine.AddState(EnsureNameIsDeduplicated(name), GridPosition(x, y)));
DefaultsProvider.ConfigureState(state, _emptyClip);
var aacState = new AacFlState(state, this, DefaultsProvider);
var aacState = new AacFlState(state, this, DefaultsProvider, AnimatorRoot);
_childNodes.Add(aacState);
return aacState;
@@ -331,6 +331,11 @@ namespace AnimatorAsCode.V1
return AacInternals.NoUndo(Machine, () => Machine.AddStateMachineBehaviour<TBehaviour>());
}
public override TBehaviour CreateNewBehaviour<TBehaviour>()
{
return AacInternals.NoUndo(Machine, () => Machine.AddStateMachineBehaviour<TBehaviour>());
}
}
public class AacFlState : AacAnimatorNode<AacFlState>
@@ -338,7 +343,7 @@ namespace AnimatorAsCode.V1
public readonly AnimatorState State;
private readonly AnimatorStateMachine _machine;
public AacFlState(AnimatorState state, AacFlStateMachine parentMachine, IAacDefaultsProvider defaultsProvider) : base(parentMachine, defaultsProvider)
public AacFlState(AnimatorState state, AacFlStateMachine parentMachine, IAacDefaultsProvider defaultsProvider, Transform animatorRoot) : base(parentMachine, defaultsProvider, animatorRoot)
{
State = state;
_machine = parentMachine.Machine;
@@ -482,6 +487,11 @@ namespace AnimatorAsCode.V1
return AacInternals.NoUndo(State, () => State.AddStateMachineBehaviour<TBehaviour>());
}
public override TBehaviour CreateNewBehaviour<TBehaviour>()
{
return AacInternals.NoUndo(State, () => State.AddStateMachineBehaviour<TBehaviour>());
}
}
public class AacFlTransition : AacFlNewTransitionContinuation