animNode#
The AnimNode files are used to link animation files to the game by defining different parameters for the animation. This will notably control the speed of the animation, its blending with animations played before and after, events that need to be triggered and conditions that control when that animation can be played.
File Patterns#
**/AnimSets/**/*.xml
Root Element#
- Element:
<animNode>- Type:
type_AnimNode
Structure#
The root element uses a choice composition, meaning it can contain any combination of the following elements:
Attributes:
:ref:` <animNode.type_AnimNode.>`: ```` (optional)
Root Type Details#
type_AnimNode#
- Type:
Complex
- Composition:
choice
Elements#
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
A unique identifier for this animation node. For example: “LoadRiffle”, “Walk” etc. This is notably used to reference this animNode in other animNodes.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
Name of the animation clip to play. This is the name of the animation file without the extension. The animation clip needs to be stored inside the anims_X folder and inside a subfolder which matches the character the animation is for. For the player, that subfolder needs to be Bob.
For example, take the animation file Bob_Reload_Rifle_Load.glb with the following folder structure:
📁 media
📁 anims_X
📁 Bob
📄 Bob_Reload_Rifle_Load.glb
To reference it in the animNode, you would use:
<m_AnimName>Bob_Reload_Rifle_Load</m_AnimName>
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
Defines how quickly the animation will begin to play, and how the game interpolates moving the armature’s bones from one animNode to another.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
Defines how quickly the animation will end, and how the game interpolates moving the armature’s bones from one animState to another. It is used to create a smooth transition when the animation is stopped or changed.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
Looks unused.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
Defines whether the animation will loop or not. If set to true, the animation will loop indefinitely until it is manually stopped or conditions are no longer met.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
In cases of two animations that are playing at the same time, dictates which animation’s bone weights or keyframes will take precedence. An example would be an idle animMask holding a glass which transitions into a drinking animation. The drinking animation takes priority over the idle drink-holding ainmMask if its priority is higher than the idle animation mask’s XML. The priority value is an integer starting at 1 with high numbers taking the priority.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
Used to specify conditions that will allow an animation node to be chosen. If the conditions are not met, the node will not be chosen. These are often combined with the function setVariable) (which exists in many forms) to set a specific condition.
This can notably be used to trigger an animation by setting that condition to be valid, which will make the animation node eligible to be chosen by the game, as long as other conditions are also met.
The syntax is as follows for the most common cases:
<m_Conditions>
<m_Name>VariableName</m_Name>
<m_Type>STRING</m_Type>
<m_Value>value</m_Value>
</m_Conditions>
In the following example, the variable WeaponReloadType is set by the game, using the parameter of the same name in the item script:
<m_Conditions>
<m_Name>WeaponReloadType</m_Name>
<m_Type>STRING</m_Type>
<m_Value>revolver</m_Value>
</m_Conditions>
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
Used to trigger different events during the animation at specific moments. This can be used to play sounds, set variables, and more. You can find a list of available events here.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
Used to define the weight of a bone and its keyframes or descendants. By default, all bones that are not defined with this parameter have a default weight of 1. If you wanted to make it so an animation were to only play a specific set of bones; you would define the Dummy01 or the Bip01 bones (the parent armature bones) to have a weight of 0, and then specifically define all the bones you wish to play to have a weight value greater than 0.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
Attributes#
unknown#
- Type:
unknown- Use:
Optional
Import another relative animNode file into this one. Needs to be the file name so for the following example folder structure:
📁 media
📁 AnimSets
📁 Rifle
📄 LoadRifle.xml
📄 LoadRifle_Alt.xml
The LoadRifle_Alt.xml file can import the LoadRifle.xml file by using:
<animNode x_extends="LoadRifle.xml"></animNode>
Types#
rule_Time#
- Type:
Simple
rule_TimePc#
- Type:
Simple
rule_Type#
- Type:
Simple
type_2DBlendTri#
- Type:
Complex
Elements#
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
type_2DBlends#
- Type:
Complex
Elements#
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
Attributes#
unknown#
- Type:
unknown- Use:
Optional
type_Condition#
- Type:
Complex
Elements#
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
Attributes#
unknown#
- Type:
unknown- Use:
Optional
This is unused by the game but it seems to be a simple identifier (often a GUID) used by the unreleased AnimZed.
type_Events#
- Type:
Complex
Elements#
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
The name of the event to trigger. This can be a custom name but there’s also available events that will trigger specific actions. You can find a list of available events here.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
The moment during the animation when the event will be triggered. This can be set to Start or End.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
The moment during the animation when the event will be triggered. This uses a normalized time, so 0 is the start and 1 is the end. In comparison to m_Time, this allows for more precision of when to trigger the event.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
The value to pass to the event when it is triggered. This can be used to specify which sound to play, which variable to set, and more, depending on the event being triggered.
Attributes#
unknown#
- Type:
unknown- Use:
Optional
This is unused by the game but it seems to be a simple identifier (often a GUID) used by the unreleased AnimZed.
type_SubStateBoneWeights#
- Type:
Complex
Elements#
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
type_Transitions#
- Type:
Complex
- Composition:
choice
Elements#
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
The name of the target animNode to transition to. This is the value of the m_Name field in the target animNode.
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown
unknown#
- Occurrence:
Optional (0 or 1)
- Type:
unknown