Use a Unity function to clear sub-state machines:
- The previous method may not have been safe for clearing assets.
This commit is contained in:
@@ -610,12 +610,8 @@ namespace AnimatorAsCode.V0
|
|||||||
var originalIndexToPreserveOrdering = FindIndexOf(layerName);
|
var originalIndexToPreserveOrdering = FindIndexOf(layerName);
|
||||||
if (originalIndexToPreserveOrdering != -1)
|
if (originalIndexToPreserveOrdering != -1)
|
||||||
{
|
{
|
||||||
foreach (var childAnimatorStateMachine in _animatorController.layers[originalIndexToPreserveOrdering].stateMachine.stateMachines)
|
RecursivelyClearChildrenMachines(_animatorController.layers[originalIndexToPreserveOrdering].stateMachine);
|
||||||
{
|
|
||||||
childAnimatorStateMachine.stateMachine.states = new ChildAnimatorState[0];
|
|
||||||
childAnimatorStateMachine.stateMachine.entryTransitions = new AnimatorTransition[0];
|
|
||||||
childAnimatorStateMachine.stateMachine.anyStateTransitions = new AnimatorStateTransition[0];
|
|
||||||
}
|
|
||||||
_animatorController.layers[originalIndexToPreserveOrdering].stateMachine.stateMachines = new ChildAnimatorStateMachine[0];
|
_animatorController.layers[originalIndexToPreserveOrdering].stateMachine.stateMachines = new ChildAnimatorStateMachine[0];
|
||||||
_animatorController.layers[originalIndexToPreserveOrdering].stateMachine.states = new ChildAnimatorState[0];
|
_animatorController.layers[originalIndexToPreserveOrdering].stateMachine.states = new ChildAnimatorState[0];
|
||||||
_animatorController.layers[originalIndexToPreserveOrdering].stateMachine.entryTransitions = new AnimatorTransition[0];
|
_animatorController.layers[originalIndexToPreserveOrdering].stateMachine.entryTransitions = new AnimatorTransition[0];
|
||||||
@@ -638,6 +634,16 @@ namespace AnimatorAsCode.V0
|
|||||||
return machinist;
|
return machinist;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void RecursivelyClearChildrenMachines(AnimatorStateMachine parentMachine)
|
||||||
|
{
|
||||||
|
// TODO: RemoveStateMachine might already be recursive
|
||||||
|
foreach (var childStateMachineHolder in parentMachine.stateMachines)
|
||||||
|
{
|
||||||
|
RecursivelyClearChildrenMachines(childStateMachineHolder.stateMachine);
|
||||||
|
parentMachine.RemoveStateMachine(childStateMachineHolder.stateMachine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private int FindIndexOf(string layerName)
|
private int FindIndexOf(string layerName)
|
||||||
{
|
{
|
||||||
return _animatorController.layers.ToList().FindIndex(layer1 => layer1.name == layerName);
|
return _animatorController.layers.ToList().FindIndex(layer1 => layer1.name == layerName);
|
||||||
|
|||||||
Reference in New Issue
Block a user