Avoid duplicate state names:
- When a state name is reused, Unity replaces it with a non-descriptive name - Replace that state name to avoid duplication
This commit is contained in:
@@ -119,6 +119,8 @@ namespace AnimatorAsCode.V1
|
|||||||
|
|
||||||
private readonly List<AacAnimatorNode> _childNodes;
|
private readonly List<AacAnimatorNode> _childNodes;
|
||||||
|
|
||||||
|
private readonly HashSet<string> _stateNames;
|
||||||
|
|
||||||
internal AacFlStateMachine(AnimatorStateMachine machine, AnimationClip emptyClip, AacBackingAnimator backingAnimator, IAacDefaultsProvider defaultsProvider, AacFlStateMachine parent = null)
|
internal AacFlStateMachine(AnimatorStateMachine machine, AnimationClip emptyClip, AacBackingAnimator backingAnimator, IAacDefaultsProvider defaultsProvider, AacFlStateMachine parent = null)
|
||||||
: base(parent, defaultsProvider)
|
: base(parent, defaultsProvider)
|
||||||
{
|
{
|
||||||
@@ -126,6 +128,7 @@ namespace AnimatorAsCode.V1
|
|||||||
_emptyClip = emptyClip;
|
_emptyClip = emptyClip;
|
||||||
_backingAnimator = backingAnimator;
|
_backingAnimator = backingAnimator;
|
||||||
_defaultsProvider = defaultsProvider;
|
_defaultsProvider = defaultsProvider;
|
||||||
|
_stateNames = new HashSet<string>();
|
||||||
|
|
||||||
var grid = defaultsProvider.Grid();
|
var grid = defaultsProvider.Grid();
|
||||||
_gridShiftX = grid.x;
|
_gridShiftX = grid.x;
|
||||||
@@ -190,6 +193,17 @@ namespace AnimatorAsCode.V1
|
|||||||
DefaultsProvider.ConfigureState(state, _emptyClip);
|
DefaultsProvider.ConfigureState(state, _emptyClip);
|
||||||
var aacState = new AacFlState(state, this, DefaultsProvider);
|
var aacState = new AacFlState(state, this, DefaultsProvider);
|
||||||
_childNodes.Add(aacState);
|
_childNodes.Add(aacState);
|
||||||
|
|
||||||
|
int suffix = 0;
|
||||||
|
string stateName = name;
|
||||||
|
while (_stateNames.Contains(stateName))
|
||||||
|
{
|
||||||
|
stateName = name + " " + (++suffix);
|
||||||
|
}
|
||||||
|
|
||||||
|
state.name = stateName;
|
||||||
|
_stateNames.Add(state.name);
|
||||||
|
|
||||||
return aacState;
|
return aacState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user