2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								<?xml version="1.0" encoding="UTF-8" ?> 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-14 14:18:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								<class  name= "AnimationTree"  inherits= "Node"  version= "4.0"  xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"  xsi:noNamespaceSchemaLocation= "../class.xsd" > 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									<brief_description > 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-03 19:21:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										A node to be used for advanced animation transitions in an [AnimationPlayer].
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									</brief_description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									<description > 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-05 14:24:34 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										A node to be used for advanced animation transitions in an [AnimationPlayer].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										[b]Note:[/b] When linked with an [AnimationPlayer], several properties and methods of the corresponding [AnimationPlayer] will not function as expected. Playback and transitions should be handled using only the [AnimationTree] and its constituent [AnimationNode](s). The [AnimationPlayer] node should be used solely for adding, deleting, and editing animations.
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									<tutorials > 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-15 10:43:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<link  title= "Using AnimationTree" > $DOCS_URL/tutorials/animation/animation_tree.html</link> 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-01 04:34:47 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<link  title= "Third Person Shooter Demo" > https://godotengine.org/asset-library/asset/678</link> 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-19 11:03:46 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									</tutorials> 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									<methods > 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-02 08:22:24 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<method  name= "advance" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 15:28:05 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											<return  type= "void"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 21:11:48 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											<param  index= "0"  name= "delta"  type= "float"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-02 08:22:24 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											<description > 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-03 19:21:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												Manually advance the animations by the specified time (in seconds).
							 
						 
					
						
							
								
									
										
										
										
											2018-08-02 08:22:24 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										</method> 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-26 16:04:15 +09:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<method  name= "get_root_motion_position"  qualifiers= "const" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											<return  type= "Vector3"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											<description > 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-26 16:04:15 +09:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												Retrieve the motion of position with the [member root_motion_track] as a [Vector3] that can be used elsewhere.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												If [member root_motion_track] is not a path to a track of type [constant Animation.TYPE_POSITION_3D], returns [code]Vector3(0, 0, 0)[/code].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												See also [member root_motion_track] and [RootMotionView].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												The most basic example is applying position to [CharacterBody3D]:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[codeblocks]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												var current_rotation: Quaternion
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												func _process(delta):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												    if Input.is_action_just_pressed("animate"):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												        current_rotation = get_quaternion()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												        state_machine.travel("Animate")
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												    var velocity: Vector3 = current_rotation * animation_tree.get_root_motion_position() / delta
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												    set_velocity(velocity)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												    move_and_slide()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[/gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[/codeblocks]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										</method> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										<method  name= "get_root_motion_rotation"  qualifiers= "const" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											<return  type= "Quaternion"  /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											<description > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												Retrieve the motion of rotation with the [member root_motion_track] as a [Quaternion] that can be used elsewhere.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												If [member root_motion_track] is not a path to a track of type [constant Animation.TYPE_ROTATION_3D], returns [code]Quaternion(0, 0, 0, 1)[/code].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												See also [member root_motion_track] and [RootMotionView].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												The most basic example is applying rotation to [CharacterBody3D]:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[codeblocks]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												func _process(delta):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												    if Input.is_action_just_pressed("animate"):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												        state_machine.travel("Animate")
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												    set_quaternion(get_quaternion() * animation_tree.get_root_motion_rotation())
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[/gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[/codeblocks]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										</method> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										<method  name= "get_root_motion_scale"  qualifiers= "const" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											<return  type= "Vector3"  /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											<description > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												Retrieve the motion of scale with the [member root_motion_track] as a [Vector3] that can be used elsewhere.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												If [member root_motion_track] is not a path to a track of type [constant Animation.TYPE_SCALE_3D], returns [code]Vector3(0, 0, 0)[/code].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												See also [member root_motion_track] and [RootMotionView].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												The most basic example is applying scale to [CharacterBody3D]:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[codeblocks]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												var current_scale: Vector3 = Vector3(1, 1, 1)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												var scale_accum: Vector3 = Vector3(1, 1, 1)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												func _process(delta):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												    if Input.is_action_just_pressed("animate"):
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												        current_scale = get_scale()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												        scale_accum = Vector3(1, 1, 1)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												        state_machine.travel("Animate")
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												    scale_accum += animation_tree.get_root_motion_scale()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												    set_scale(current_scale * scale_accum)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[/gdscript]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												[/codeblocks]
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										</method> 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-21 00:35:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<method  name= "rename_parameter" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-30 15:28:05 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											<return  type= "void"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 21:11:48 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											<param  index= "0"  name= "old_name"  type= "String"  /> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											<param  index= "1"  name= "new_name"  type= "String"  /> 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-21 00:35:30 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											<description > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										</method> 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									</methods> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									<members > 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-29 12:38:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<member  name= "active"  type= "bool"  setter= "set_active"  getter= "is_active"  default= "false" > 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-03 19:21:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											If [code]true[/code], the [AnimationTree] will be processing.
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										</member> 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-20 11:36:54 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<member  name= "advance_expression_base_node"  type= "NodePath"  setter= "set_advance_expression_base_node"  getter= "get_advance_expression_base_node"  default= "NodePath(".")" > 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-21 07:37:00 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											The path to the [Node] used to evaluate the AnimationNode [Expression] if one is not explicitly specified internally.
							 
						 
					
						
							
								
									
										
										
										
											2022-04-20 11:36:54 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										</member> 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-29 12:38:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<member  name= "anim_player"  type= "NodePath"  setter= "set_animation_player"  getter= "get_animation_player"  default= "NodePath("")" > 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-03 19:21:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											The path to the [AnimationPlayer] used for animating.
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										</member> 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-19 13:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<member  name= "process_callback"  type= "int"  setter= "set_process_callback"  getter= "get_process_callback"  enum= "AnimationTree.AnimationProcessCallback"  default= "1" > 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-19 07:57:41 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											The process mode of this [AnimationTree]. See [enum AnimationProcessCallback] for available modes.
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										</member> 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-29 12:38:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<member  name= "root_motion_track"  type= "NodePath"  setter= "set_root_motion_track"  getter= "get_root_motion_track"  default= "NodePath("")" > 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-02 12:03:05 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											The path to the Animation track used for root motion. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. To specify a track that controls properties or bones, append its name after the path, separated by [code]":"[/code]. For example, [code]"character/skeleton:ankle"[/code] or [code]"character/mesh:transform/local"[/code].
							 
						 
					
						
							
								
									
										
										
										
											2022-11-26 16:04:15 +09:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											If the track has type [constant Animation.TYPE_POSITION_3D], [constant Animation.TYPE_ROTATION_3D] or [constant Animation.TYPE_SCALE_3D] the transformation will be cancelled visually, and the animation will appear to stay in place. See also [method get_root_motion_position], [method get_root_motion_rotation], [method get_root_motion_scale] and [RootMotionView].
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										</member> 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-15 20:42:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<member  name= "tree_root"  type= "AnimationNode"  setter= "set_tree_root"  getter= "get_tree_root" > 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-03 19:21:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											The root animation node of this [AnimationTree]. See [AnimationNode].
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										</member> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									</members> 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-01 23:00:55 +09:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									<signals > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										<signal  name= "animation_player_changed" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											<description > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												Emitted when the [member anim_player] is changed.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											</description> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										</signal> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									</signals> 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									<constants > 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-19 13:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<constant  name= "ANIMATION_PROCESS_PHYSICS"  value= "0"  enum= "AnimationProcessCallback" > 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-03 19:21:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											The animations will progress during the physics frame (i.e. [method Node._physics_process]).
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										</constant> 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-19 13:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<constant  name= "ANIMATION_PROCESS_IDLE"  value= "1"  enum= "AnimationProcessCallback" > 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-03 19:21:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											The animations will progress during the idle frame (i.e. [method Node._process]).
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										</constant> 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-19 13:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										<constant  name= "ANIMATION_PROCESS_MANUAL"  value= "2"  enum= "AnimationProcessCallback" > 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-03 19:21:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											The animations will only progress manually (see [method advance]).
							 
						 
					
						
							
								
									
										
										
										
											2018-08-02 08:22:24 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										</constant> 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 11:56:21 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									</constants> 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								</class>