Kanzi  3.9.6
Kanzi Studio API
StateGroup Interface Reference

Configure state groups in a state manager. More...

Public Member Functions

StateTransition CloneTransition (StateTransition sourceTransition)
 Duplicates a transition. More...
 
StateTransition CreateTransition (State startState, State endState)
 Creates a transition between two states. More...
 
void DeleteTransition (StateTransition transition)
 Deletes a transition. More...
 
void MoveTransition (StateTransition transition, int indicesToMove)
 Moves a transition relative to its current position. More...
 

Properties

bool IgnoreStateValidityCheck [get, set]
 
bool IsDisabledOnExport [get, set]
 
IEnumerable< StateStates [get]
 Gets the states in a state group. More...
 
IEnumerable< StateTransitionStateTransitions [get]
 Gets the state transitions in a state group. More...
 

Detailed Description

Configure state groups in a state manager.

State groups contain states, define controller properties, and transitions between states in a state group. A typical transition defines a period and interpolation paths between property values of two states. You can define transitions using a general guideline for all properties, using interpolations for each property as specified, or using animation items.

See also
State, StateObject, StateTransition, ProjectItem, Project.StateManagerLibrary

Examples

To create, duplicate, move, and get transitions in a state group:

public void Execute(PluginCommandParameter parameter)
{
// Get the State Managers library which stores state managers used in a Kanzi Studio project.
var stateManagerLibrary = studio.ActiveProject.StateManagerLibrary;
// Create a state manager named MyStateManager in the State Managers library.
var myStateManager = studio.ActiveProject.CreateProjectItem<StateManager>(
stateManagerLibrary.GenerateUniqueChildName("MyStateManager"), stateManagerLibrary);
// Create a state group named MyStateGroup in the MyStateManager state manager.
var myStateGroup = studio.ActiveProject.CreateProjectItem<StateGroup>(
myStateManager.GenerateUniqueChildName("MyStateGroup"),
myStateManager);
// Create five states in the MyStateGroup state group
var myStates = new List<State>();
for (int i = 0; i <= 4; i++)
{
myStates.Add(studio.ActiveProject.CreateProjectItem<State>(
myStateGroup.GenerateUniqueChildName("MyState" + i),
myStateGroup));
}
// Create transitions between states. Kanzi adds new transitions to the end.
var myTransition1 = myStateGroup.CreateTransition(myStates[0], myStates[1]);
var myTransition2 = myStateGroup.CreateTransition(myStates[1], myStates[2]);
var myTransition3 = myStateGroup.CreateTransition(myStates[2], myStates[3]);
// Duplicate transition myTransition3;
var myTransition4 = myStateGroup.CloneTransition(myTransition3);
// Move the transition myTransition4 to the first position. The position value is relative to the current position.
myStateGroup.MoveTransition(myTransition3, -3);
// Get all transitions in the MyStateGroup state group and print the start state, end state, and duration for each transition.
foreach (var transition in myStateGroup.StateTransitions)
{
studio.Log(transition.StartState + " -> " + transition.EndState + ", Duration: " + transition.Duration + "ms");
}
}

To set the controller property in a state group:

public void Execute(PluginCommandParameter parameter)
{
// Get the State Managers library which stores state managers used in a Kanzi Studio project.
var stateManagerLibrary = studio.ActiveProject.StateManagerLibrary;
// Create a state manager named ToggleButtonStateManager in the State Managers library.
var toggleButtonStateManager = studio.ActiveProject.CreateProjectItem<StateManager>(
stateManagerLibrary.GenerateUniqueChildName("ToggleButtonStateManager"), stateManagerLibrary);
// Create a state group named StateGroup in the ToggleButtonStateManager state manager.
var stateGroup = studio.ActiveProject.CreateProjectItem<StateGroup>(
toggleButtonStateManager.GenerateUniqueChildName("StateGroup"), toggleButtonStateManager);
// Create a state named Off in the StateGroup state group.
var offState = studio.ActiveProject.CreateProjectItem<State>(
stateGroup.GenerateUniqueChildName("Off"), stateGroup);
// Create a state named On in the StateGroup state group.
var onState = studio.ActiveProject.CreateProjectItem<State>(
stateGroup.GenerateUniqueChildName("On"), stateGroup);
// Set the Controller Property of the StateGroup state group to ButtonConcept.ToggleState (Toggle State).
stateGroup.Set(Properties.StateGroupControllerPropertyTypeReference, Properties.ButtonConceptToggleState);
// In the Off state set the value of the Toggle State controller property to 0.
offState.Set(Properties.ButtonConceptToggleState, 0);
// In the On state set the value of the Toggle State controller property to 1.
onState.Set(Properties.ButtonConceptToggleState, 1);
}

To set a custom controller property in a state group:

public void Execute(PluginCommandParameter parameter)
{
// Get the State Managers library which stores state managers used in a Kanzi Studio project.
var stateManagerLibrary = studio.ActiveProject.StateManagerLibrary;
// Create a state manager named LevelStateManager in the State Managers library.
var levelStateManager = studio.ActiveProject.CreateProjectItem<StateManager>(
stateManagerLibrary.GenerateUniqueChildName("LevelStateManager"), stateManagerLibrary);
// Create a state group named StateGroup in the LevelStateManager state manager.
var levelStateGroup = studio.ActiveProject.CreateProjectItem<StateGroup>(
levelStateManager.GenerateUniqueChildName("LevelStateGroup"),
levelStateManager);
// Create five states in the StateGroup state group
var levelStates = new List<State>();
for (int i = 0; i <= 4; i++)
{
levelStates.Add(studio.ActiveProject.CreateProjectItem<State>(
levelStateGroup.GenerateUniqueChildName("Level" + i),
levelStateGroup));
}
// Get the Property Types library in the project.
var propertyTypesLibrary = studio.ActiveProject.PropertyTypeLibrary;
// Create five enumeration options and assign values to them.
var options = new Dictionary<string, int>();
for (int i = 0; i <= 4; i++)
{
options.Add("Level" + i, i);
}
// Create an enumeration controller property type Level Property and assign to it the five enumeration options.
CustomEnumProperty levelProperty = propertyTypesLibrary.CreateCustomEnumProperty(
propertyTypesLibrary.GenerateUniqueChildName("MyPlugin.LevelProperty"),
"Level Property",
"Controller Properties",
options);
// Set the Controller Property of LevelStateGroup to Level Property.
levelStateGroup.Set(Properties.StateGroupControllerPropertyTypeReference, levelProperty);
// In each state in LevelStateGroup, set the value of Level Property to one of the enumeration options.
// For example, in the Level0 state set the value of Level Property to Level0.
foreach (var state in levelStateGroup.States)
{
int value;
if (levelProperty.Options.TryGetValue(state.Name, out value))
{
state.Set(levelProperty.Name, value);
}
}
}

Member Function Documentation

◆ CloneTransition()

StateTransition CloneTransition ( StateTransition  sourceTransition)

Duplicates a transition.

Kanzi adds a duplicated transition as the last transition in a state group. You can move transitions in a state group using MoveTransition.

Parameters
sourceTransitionThe name of the transition you want to duplicate.
See also
MoveTransition

◆ CreateTransition()

StateTransition CreateTransition ( State  startState,
State  endState 
)

Creates a transition between two states.

Kanzi adds a new transition as the last transition in a state group. You can move transitions in a state group using MoveTransition.

Parameters
startStateThe state from which the transition starts.
endStateThe state where the transition ends.
See also
MoveTransition

◆ DeleteTransition()

void DeleteTransition ( StateTransition  transition)

Deletes a transition.

Parameters
transitionThe name of the transition you want to delete.

◆ MoveTransition()

void MoveTransition ( StateTransition  transition,
int  indicesToMove 
)

Moves a transition relative to its current position.

Parameters
transitionThe transition you want to move.
indicesToMoveThe position relative to the current position of the transition. Positive values move the transition down, negative values move the transition up.

Property Documentation

◆ States

IEnumerable<State> States
get

Gets the states in a state group.

The states.

Examples

To get all states in a state group:

public void Execute(PluginCommandParameter parameter)
{
// Get the State Managers library which stores state managers used in a Kanzi Studio project.
var stateManagerLibrary = studio.ActiveProject.StateManagerLibrary;
// Create a state manager named MyStateManager in the State Managers library.
var myStateManager = studio.ActiveProject.CreateProjectItem<StateManager>(
stateManagerLibrary.GenerateUniqueChildName("MyStateManager"), stateManagerLibrary);
// Create a state group named MyStateGroup in the MyStateManager state manager.
var myStateGroup = studio.ActiveProject.CreateProjectItem<StateGroup>(
myStateManager.GenerateUniqueChildName("MyStateGroup"),
myStateManager);
// Create five states in the MyStateGroup state group
var myStates = new List<State>();
for (int i = 0; i <= 4; i++)
{
myStates.Add(studio.ActiveProject.CreateProjectItem<State>(
myStateGroup.GenerateUniqueChildName("MyState" + i),
myStateGroup));
}
// Get all states in the state group MyStateGroup.
var statesInStateGroup = myStateManager.GetChild("MyStateGroup").Children;
// Print the names of the states in the MyStateGroup state group to the Kanzi Studio Log window.
foreach (var state in statesInStateGroup)
{
studio.Log(state.Name);
}
}

◆ StateTransitions

IEnumerable<StateTransition> StateTransitions
get

Gets the state transitions in a state group.

The state transitions.