Extend name deduplication to sub-state machines
This commit is contained in:
@@ -150,7 +150,7 @@ namespace AnimatorAsCode.V1
|
|||||||
|
|
||||||
public AacFlStateMachine NewSubStateMachine(string name, int x, int y)
|
public AacFlStateMachine NewSubStateMachine(string name, int x, int y)
|
||||||
{
|
{
|
||||||
var stateMachine = AacInternals.NoUndo(Machine, () => Machine.AddStateMachine(name, GridPosition(x, 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, this);
|
||||||
_defaultsProvider.ConfigureStateMachine(stateMachine);
|
_defaultsProvider.ConfigureStateMachine(stateMachine);
|
||||||
_childNodes.Add(aacMachine);
|
_childNodes.Add(aacMachine);
|
||||||
@@ -189,22 +189,25 @@ namespace AnimatorAsCode.V1
|
|||||||
|
|
||||||
public AacFlState NewState(string name, int x, int y)
|
public AacFlState NewState(string name, int x, int y)
|
||||||
{
|
{
|
||||||
var state = AacInternals.NoUndo(Machine, () => Machine.AddState(name, GridPosition(x, y)));
|
var state = AacInternals.NoUndo(Machine, () => Machine.AddState(EnsureNameIsDeduplicated(name), GridPosition(x, y)));
|
||||||
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;
|
return aacState;
|
||||||
string stateName = name;
|
}
|
||||||
|
|
||||||
|
private string EnsureNameIsDeduplicated(string name)
|
||||||
|
{
|
||||||
|
var suffix = 0;
|
||||||
|
var stateName = name;
|
||||||
while (_stateNames.Contains(stateName))
|
while (_stateNames.Contains(stateName))
|
||||||
{
|
{
|
||||||
stateName = name + " " + (++suffix);
|
stateName = name + " " + (++suffix);
|
||||||
}
|
}
|
||||||
|
|
||||||
state.name = stateName;
|
_stateNames.Add(stateName);
|
||||||
_stateNames.Add(state.name);
|
return stateName;
|
||||||
|
|
||||||
return aacState;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public AacFlTransition AnyTransitionsTo(AacFlState destination)
|
public AacFlTransition AnyTransitionsTo(AacFlState destination)
|
||||||
|
|||||||
Reference in New Issue
Block a user