2017-09-12 22:42:36 +02:00
<?xml version="1.0" encoding="UTF-8" ?>
2018-06-14 17:37:51 +02:00
<class name= "AnimationTreePlayer" inherits= "Node" category= "Core" version= "3.0.4" >
2017-09-12 22:42:36 +02:00
<brief_description >
2017-12-23 13:45:01 +01:00
Animation Player that uses a node graph for blending Animations.
2017-09-12 22:42:36 +02:00
</brief_description>
<description >
2017-12-06 04:25:37 +01:00
A node graph tool for blending multiple animations bound to an [AnimationPlayer]. Especially useful for animating characters or other skeleton-based rigs. It can combine several animations to form a desired pose.
2017-12-23 13:45:01 +01:00
It takes [Animation]s from an [AnimationPlayer] node and mixes them depending on the graph.
2017-09-12 22:42:36 +02:00
</description>
<tutorials >
</tutorials>
<demos >
</demos>
<methods >
<method name= "add_node" >
<return type= "void" >
</return>
<argument index= "0" name= "type" type= "int" enum= "AnimationTreePlayer.NodeType" >
</argument>
<argument index= "1" name= "id" type= "String" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
Adds a [code]type[/code] node to the graph with name [code]id[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "advance" >
<return type= "void" >
</return>
<argument index= "0" name= "delta" type= "float" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
Shifts position in the animation timeline. Delta is the time in seconds to shift.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "animation_node_get_animation" qualifiers= "const" >
<return type= "Animation" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
2017-12-23 13:45:01 +01:00
Returns the [AnimationPlayer]'s [Animation] bound to the [code]AnimationTreePlayer[/code]'s animation node with name [code]id[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "animation_node_get_master_animation" qualifiers= "const" >
<return type= "String" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
2017-12-23 13:45:01 +01:00
Returns the name of the [member master_player]'s [Animation] bound to this animation node.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "animation_node_set_animation" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "animation" type= "Animation" >
</argument>
<description >
2017-12-23 13:45:01 +01:00
Binds a new [Animation] from the [member master_player] to the [code]AnimationTreePlayer[/code]'s animation node with name [code]id[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "animation_node_set_filter_path" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "path" type= "NodePath" >
</argument>
<argument index= "2" name= "enable" type= "bool" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
If [code]enable[/code] is [code]true[/code], the animation node with ID [code]id[/code] turns off the track modifying the property at [code]path[/code]. The modified node's children continue to animate.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "animation_node_set_master_animation" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "source" type= "String" >
</argument>
<description >
2017-12-23 13:45:01 +01:00
Binds the [Animation] named [code]source[/code] from [member master_player] to the animation node [code]id[/code]. Recalculates caches.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "are_nodes_connected" qualifiers= "const" >
<return type= "bool" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "dst_id" type= "String" >
</argument>
<argument index= "2" name= "dst_input_idx" type= "int" >
</argument>
<description >
Returns whether node [code]id[/code] and [code]dst_id[/code] are connected at the specified slot.
</description>
</method>
<method name= "blend2_node_get_amount" qualifiers= "const" >
<return type= "float" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Returns the blend amount of a Blend2 node given its name.
</description>
</method>
<method name= "blend2_node_set_amount" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "blend" type= "float" >
</argument>
<description >
Sets the blend amount of a Blend2 node given its name and value.
2017-12-23 13:45:01 +01:00
A Blend2 Node blends two animations with the amount between 0 and 1.
At 0, Output is input a.
Towards 1, the influence of a gets lessened, the influence of b gets raised.
At 1, Output is input b.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "blend2_node_set_filter_path" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "path" type= "NodePath" >
</argument>
<argument index= "2" name= "enable" type= "bool" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
If [code]enable[/code] is [code]true[/code], the blend2 node with ID [code]id[/code] turns off the track modifying the property at [code]path[/code]. The modified node's children continue to animate.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "blend3_node_get_amount" qualifiers= "const" >
<return type= "float" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Returns the blend amount of a Blend3 node given its name.
</description>
</method>
<method name= "blend3_node_set_amount" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "blend" type= "float" >
</argument>
<description >
Sets the blend amount of a Blend3 node given its name and value.
2017-12-23 13:45:01 +01:00
A Blend3 Node blends three animations with the amount between -1 and 1.
At -1, Output is input b-.
From -1 to 0, the influence of b- gets lessened, the influence of a gets raised and the influence of b+ is 0.
At 0, Output is input a.
From 0 to 1, the influence of a gets lessened, the influence of b+ gets raised and the influence of b+ is 0.
At 1, Output is input b+.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "blend4_node_get_amount" qualifiers= "const" >
<return type= "Vector2" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Returns the blend amount of a Blend4 node given its name.
</description>
</method>
<method name= "blend4_node_set_amount" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "blend" type= "Vector2" >
</argument>
<description >
Sets the blend amount of a Blend4 node given its name and value.
2017-12-23 13:45:01 +01:00
A Blend4 Node blends two pairs of animations.
The two pairs are blended like blend2 and then added together.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "connect_nodes" >
<return type= "int" enum= "Error" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "dst_id" type= "String" >
</argument>
<argument index= "2" name= "dst_input_idx" type= "int" >
</argument>
<description >
Connects node [code]id[/code] to [code]dst_id[/code] at the specified input slot.
</description>
</method>
<method name= "disconnect_nodes" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "dst_input_idx" type= "int" >
</argument>
<description >
Disconnects nodes connected to [code]id[/code] at the specified input slot.
</description>
</method>
<method name= "get_node_list" >
<return type= "PoolStringArray" >
</return>
<description >
2017-12-23 13:45:01 +01:00
Returns a [PoolStringArray] containing the name of all nodes.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "mix_node_get_amount" qualifiers= "const" >
<return type= "float" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Returns mix amount of a Mix node given its name.
</description>
</method>
<method name= "mix_node_set_amount" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "ratio" type= "float" >
</argument>
<description >
Sets mix amount of a Mix node given its name and value.
2017-12-23 13:45:01 +01:00
A Mix node adds input b to input a by a the amount given by ratio.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "node_exists" qualifiers= "const" >
<return type= "bool" >
</return>
<argument index= "0" name= "node" type= "String" >
</argument>
<description >
Check if a node exists (by name).
</description>
</method>
<method name= "node_get_input_count" qualifiers= "const" >
<return type= "int" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Return the input count for a given node. Different types of nodes have different amount of inputs.
</description>
</method>
<method name= "node_get_input_source" qualifiers= "const" >
<return type= "String" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "idx" type= "int" >
</argument>
<description >
Return the input source for a given node input.
</description>
</method>
2017-09-10 15:37:49 +02:00
<method name= "node_get_position" qualifiers= "const" >
2017-09-12 22:42:36 +02:00
<return type= "Vector2" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Returns position of a node in the graph given its name.
</description>
</method>
<method name= "node_get_type" qualifiers= "const" >
<return type= "int" enum= "AnimationTreePlayer.NodeType" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Get the node type, will return from NODE_* enum.
</description>
</method>
<method name= "node_rename" >
<return type= "int" enum= "Error" >
</return>
<argument index= "0" name= "node" type= "String" >
</argument>
<argument index= "1" name= "new_name" type= "String" >
</argument>
<description >
Rename a node in the graph.
</description>
</method>
2017-09-10 15:37:49 +02:00
<method name= "node_set_position" >
2017-09-12 22:42:36 +02:00
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
2017-09-10 15:37:49 +02:00
<argument index= "1" name= "screen_position" type= "Vector2" >
2017-09-12 22:42:36 +02:00
</argument>
<description >
Sets position of a node in the graph given its name and position.
</description>
</method>
<method name= "oneshot_node_get_autorestart_delay" qualifiers= "const" >
<return type= "float" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Returns autostart delay of a OneShot node given its name.
</description>
</method>
<method name= "oneshot_node_get_autorestart_random_delay" qualifiers= "const" >
<return type= "float" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Returns autostart random delay of a OneShot node given its name.
</description>
</method>
<method name= "oneshot_node_get_fadein_time" qualifiers= "const" >
<return type= "float" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Returns fade in time of a OneShot node given its name.
</description>
</method>
<method name= "oneshot_node_get_fadeout_time" qualifiers= "const" >
<return type= "float" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Returns fade out time of a OneShot node given its name.
</description>
</method>
<method name= "oneshot_node_has_autorestart" qualifiers= "const" >
<return type= "bool" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Returns whether a OneShot node will auto restart given its name.
</description>
</method>
<method name= "oneshot_node_is_active" qualifiers= "const" >
<return type= "bool" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Returns whether a OneShot node is active given its name.
</description>
</method>
<method name= "oneshot_node_set_autorestart" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "enable" type= "bool" >
</argument>
<description >
Sets autorestart property of a OneShot node given its name and value.
</description>
</method>
<method name= "oneshot_node_set_autorestart_delay" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "delay_sec" type= "float" >
</argument>
<description >
Sets autorestart delay of a OneShot node given its name and value in seconds.
</description>
</method>
<method name= "oneshot_node_set_autorestart_random_delay" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "rand_sec" type= "float" >
</argument>
<description >
Sets autorestart random delay of a OneShot node given its name and value in seconds.
</description>
</method>
<method name= "oneshot_node_set_fadein_time" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "time_sec" type= "float" >
</argument>
<description >
Sets fade in time of a OneShot node given its name and value in seconds.
</description>
</method>
<method name= "oneshot_node_set_fadeout_time" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "time_sec" type= "float" >
</argument>
<description >
Sets fade out time of a OneShot node given its name and value in seconds.
</description>
</method>
<method name= "oneshot_node_set_filter_path" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "path" type= "NodePath" >
</argument>
<argument index= "2" name= "enable" type= "bool" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
If [code]enable[/code] is [code]true[/code], the oneshot node with ID [code]id[/code] turns off the track modifying the property at [code]path[/code]. The modified node's children continue to animate.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "oneshot_node_start" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
Starts a OneShot node given its name.
</description>
</method>
<method name= "oneshot_node_stop" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
Stops the OneShot node with name [code]id[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "recompute_caches" >
<return type= "void" >
</return>
<description >
2017-12-06 04:25:37 +01:00
Manually recalculates the cache of track information generated from animation nodes. Needed when external sources modify the animation nodes' state.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "remove_node" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
Removes the animation node with name [code]id[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "reset" >
<return type= "void" >
</return>
<description >
2017-12-23 13:45:01 +01:00
Resets this [code]AnimationTreePlayer[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "timescale_node_get_scale" qualifiers= "const" >
<return type= "float" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
Returns time scale value of the TimeScale node with name [code]id[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "timescale_node_set_scale" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "scale" type= "float" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
Sets the time scale of the TimeScale node with name [code]id[/code] to [code]scale[/code].
2017-12-23 13:45:01 +01:00
The timescale node is used to speed [Animation]s up if the scale is above 1 or slow them down if it is below 1.
If applied after a blend or mix, affects all input animations to that blend or mix.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "timeseek_node_seek" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
2017-09-10 15:37:49 +02:00
<argument index= "1" name= "seconds" type= "float" >
2017-09-12 22:42:36 +02:00
</argument>
<description >
2017-12-06 04:25:37 +01:00
Sets the time seek value of the TimeSeek node with name [code]id[/code] to [code]seconds[/code]
2017-12-23 13:45:01 +01:00
This functions as a seek in the [Animation] or the blend or mix of [Animation]s input in it.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "transition_node_delete_input" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "input_idx" type= "int" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
Deletes the input at [code]input_idx[/code] for the transition node with name [code]id[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "transition_node_get_current" qualifiers= "const" >
<return type= "int" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
Returns the index of the currently evaluated input for the transition node with name [code]id[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "transition_node_get_input_count" qualifiers= "const" >
<return type= "int" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
2017-12-23 13:45:01 +01:00
Returns the number of inputs for the transition node with name [code]id[/code]. You can add inputs by rightclicking on the transition node.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "transition_node_get_xfade_time" qualifiers= "const" >
<return type= "float" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
Returns the cross fade time for the transition node with name [code]id[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "transition_node_has_input_auto_advance" qualifiers= "const" >
<return type= "bool" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "input_idx" type= "int" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
Returns [code]true[/code] if the input at [code]input_idx[/code] on transition node with name [code]id[/code] is set to automatically advance to the next input upon completion.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "transition_node_set_current" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "input_idx" type= "int" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
The transition node with name [code]id[/code] sets its current input at [code]input_idx[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "transition_node_set_input_auto_advance" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "input_idx" type= "int" >
</argument>
<argument index= "2" name= "enable" type= "bool" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
The transition node with name [code]id[/code] advances to its next input automatically when the input at [code]input_idx[/code] completes.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "transition_node_set_input_count" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "count" type= "int" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
Resizes the number of inputs available for the transition node with name [code]id[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "transition_node_set_xfade_time" >
<return type= "void" >
</return>
<argument index= "0" name= "id" type= "String" >
</argument>
<argument index= "1" name= "time_sec" type= "float" >
</argument>
<description >
2017-12-06 04:25:37 +01:00
The transition node with name [code]id[/code] sets its cross fade time to [code]time_sec[/code].
2017-09-12 22:42:36 +02:00
</description>
</method>
</methods>
<members >
2017-12-10 00:43:30 +01:00
<member name= "active" type= "bool" setter= "set_active" getter= "is_active" >
If [code]true[/code] the [code]AnimationTreePlayer[/code] is able to play animations. Default value: [code]false[/code].
2017-12-06 04:25:37 +01:00
</member>
<member name= "base_path" type= "NodePath" setter= "set_base_path" getter= "get_base_path" >
The node from which to relatively access other nodes. Default value: [code]".."[/code].
2017-12-23 13:45:01 +01:00
It accesses the Bones, so it should point to the same Node the AnimationPlayer would point its Root Node at.
2017-12-06 04:25:37 +01:00
</member>
2017-12-10 00:43:30 +01:00
<member name= "master_player" type= "NodePath" setter= "set_master_player" getter= "get_master_player" >
The path to the [AnimationPlayer] from which this [code]AnimationTreePlayer[/code] binds animations to animation nodes.
2017-12-23 13:45:01 +01:00
Once set, Animation nodes can be added to the AnimationTreePlayer.
2017-12-10 00:43:30 +01:00
</member>
<member name= "playback_process_mode" type= "int" setter= "set_animation_process_mode" getter= "get_animation_process_mode" enum= "AnimationTreePlayer.AnimationProcessMode" >
The thread in which to update animations. Default value: [enum ANIMATION_PROCESS_IDLE].
2017-09-12 22:42:36 +02:00
</member>
</members>
<constants >
2017-11-24 23:16:30 +01:00
<constant name= "NODE_OUTPUT" value= "0" enum= "NodeType" >
2017-09-12 22:42:36 +02:00
Output node.
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NODE_ANIMATION" value= "1" enum= "NodeType" >
2017-09-12 22:42:36 +02:00
Animation node.
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NODE_ONESHOT" value= "2" enum= "NodeType" >
2017-09-12 22:42:36 +02:00
OneShot node.
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NODE_MIX" value= "3" enum= "NodeType" >
2017-09-12 22:42:36 +02:00
Mix node.
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NODE_BLEND2" value= "4" enum= "NodeType" >
2017-09-12 22:42:36 +02:00
Blend2 node.
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NODE_BLEND3" value= "5" enum= "NodeType" >
2017-09-12 22:42:36 +02:00
Blend3 node.
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NODE_BLEND4" value= "6" enum= "NodeType" >
2017-09-12 22:42:36 +02:00
Blend4 node.
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NODE_TIMESCALE" value= "7" enum= "NodeType" >
2017-09-12 22:42:36 +02:00
TimeScale node.
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NODE_TIMESEEK" value= "8" enum= "NodeType" >
2017-09-12 22:42:36 +02:00
TimeSeek node.
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NODE_TRANSITION" value= "9" enum= "NodeType" >
2017-09-12 22:42:36 +02:00
Transition node.
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "ANIMATION_PROCESS_PHYSICS" value= "0" enum= "AnimationProcessMode" >
2017-12-06 04:25:37 +01:00
Process animation during the physics process. This is especially useful when animating physics bodies.
2017-09-16 01:46:14 +02:00
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "ANIMATION_PROCESS_IDLE" value= "1" enum= "AnimationProcessMode" >
2017-12-06 04:25:37 +01:00
Process animation during the idle process.
2017-09-16 01:46:14 +02:00
</constant>
2017-09-12 22:42:36 +02:00
</constants>
</class>