> For the complete documentation index, see [llms.txt](https://docs.msquared.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.msquared.io/creation/unreal-development/features-and-tutorials/the-animated-crowd/crowd-animation/crowd-anim-blueprint/reference-guide-abp-nodes/transitions.md).

# Transitions

## Transition Properties <a href="#transition-properties" id="transition-properties"></a>

Not a node as such, but this covers the properties on transitions:

<figure><img src="/files/52pMCt4wPAGDbleZs7kt" alt=""><figcaption><p>A Transition</p></figcaption></figure>

#### Supported properties

<figure><img src="/files/TsxQnf4g4dn4tfTBoU7l" alt=""><figcaption><p>Transition Properties</p></figcaption></figure>

* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/standard/ef8b0642-7523-4e13-9fd3-01b65648acf6/64x64/26a0.png" alt="warning" data-size="line"> Transition
  * `Priority Order` is supported
  * `Bidirectional` is unsupported
  * `Blend Logic` is unsupported (always assumes a Standard Blend)
  * `Transition Rule Sharing` is unsupported
  * Transition rules themselves are [covered below](#transition-rules)
  * `Automatic Rule Based On Sequence Player In State` is supported
  * `Automatic Rule Trigger Time` is supported (both nonnegative and negative configurations)
  * `Sync Group Name to Require Valid Markers Rule` is unsupported
* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/cross-64px.png" alt="Cross Mark" data-size="line"> Blend Settings
  * <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/standard/ef8b0642-7523-4e13-9fd3-01b65648acf6/64x64/26a0.png" alt="warning" data-size="line"> Note: Blend settings are always assumed to be a linear transition over 0.2s whenever a state change occurs within the crowd (see `CrowdAnimBlueprintCommon::CrossfadeDuration` constant)
* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/cross-64px.png" alt="Cross Mark" data-size="line"> Events
* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/cross-64px.png" alt="Cross Mark" data-size="line"> Notifications

## Transition Rules <a href="#transition-rules" id="transition-rules"></a>

Simple transition rules can be achieved through comparisons on one or more inputs combined with logical operations.

For example, the following kinds of expressions would be supported

* `AnimVar.IsMoving == 1`
* `AnimVar.HasLowGravity != 0`
* `(Get Relevant Anim Time > 0.4) & (AnimVar.IsJogging == 1)`

where the expressions are all of the form `[Input] [Comparison] [Constant]`. The last case is simply a logical combination of two of these, which also fine.

<figure><img src="/files/lzmd3srlPDGb7WmOhEw3" alt=""><figcaption><p>A simple transition rule just reading a single Anim Var property via a macro</p></figcaption></figure>

<figure><img src="/files/rv43iDIPIU5uJ2Rosiij" alt=""><figcaption><p>A more complex transition rule reading two properties with some logic</p></figcaption></figure>

#### Variables Supported

* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/check-64px.png" alt="Check Mark" data-size="line"> Anim Var inputs
  * Anim Var inputs generally supported
  * As noted [here](/creation/unreal-development/features-and-tutorials/the-animated-crowd/crowd-animation/crowd-anim-blueprint/reference-guide-abp-nodes/variables.md#anim-vars), Boolean variables are all internally represented as float, so care around precision may be needed in comparisons
* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/check-64px.png" alt="Check Mark" data-size="line"> Timestamp tests on state machine
  * Get Relevant Anim Time
  * Get Relevant Anim Time Fraction
  * Get Relevant Anim Time Remaining
  * Get Relevant Anim Time Remaining Fraction
* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/check-64px.png" alt="Check Mark" data-size="line"> Timestamp tests on asset player
  * Current Time
  * Current Time (ratio)
  * Time Remaining
  * Time Remaining (ratio)

#### Comparisons

* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/check-64px.png" alt="Check Mark" data-size="line"> Floating point comparisons: `<`, `<=`, `=`, `!=`, `>=`, `>`
* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/cross-64px.png" alt="Cross Mark" data-size="line"> Non-floating point comparisons (e.g. enums), unsupported
* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/check-64px.png" alt="Check Mark" data-size="line"> `In Range` node supported on float and integer types

#### Logical Ops Supported

* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/check-64px.png" alt="Check Mark" data-size="line"> And
* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/check-64px.png" alt="Check Mark" data-size="line"> Or
* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/check-64px.png" alt="Check Mark" data-size="line"> Xor
* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/check-64px.png" alt="Check Mark" data-size="line"> Not

#### Misc

* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/check-64px.png" alt="Check Mark" data-size="line"> Macros
* <img src="https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/atlassian/productivityEmojis/check-64px.png" alt="Check Mark" data-size="line"> Struct breaking (e.g. extracting a component from a vector)
