AnimationNode

Наследует: Resource < RefCounted < Object

Наследуется от: AnimationNodeExtension, AnimationNodeOutput, AnimationNodeSync, AnimationNodeTimeScale, AnimationNodeTimeSeek, AnimationRootNode

Базовый класс для узлов AnimationTree. Не относится к узлам сцены.

Описание

Базовый ресурс для узлов AnimationTree. Обычно он не используется напрямую, но вы можете создавать собственные узлы с помощью собственных формул смешивания.

Наследуйте его при создании узлов анимации, в основном для использования в AnimationNodeBlendTree, в противном случае вместо него следует использовать AnimationRootNode.

Вы можете получить доступ к информации о времени как к параметру только для чтения, который обрабатывается и сохраняется в предыдущем кадре для всех узлов, кроме AnimationNodeOutput.

Примечание: Если в AnimationNode существует несколько входов, то приоритет информации о времени зависит от типа AnimationNode.

var current_length = $AnimationTree["parameters/AnimationNodeName/current_length"]
var current_position = $AnimationTree["parameters/AnimationNodeName/current_position"]
var current_delta = $AnimationTree["parameters/AnimationNodeName/current_delta"]

Обучающие материалы

Свойства

bool

filter_enabled

Методы

String

_get_caption() virtual const

AnimationNode

_get_child_by_name(name: StringName) virtual const

Dictionary

_get_child_nodes() virtual const

Variant

_get_parameter_default_value(parameter: StringName) virtual const

Array

_get_parameter_list() virtual const

bool

_has_filter() virtual const

bool

_is_parameter_read_only(parameter: StringName) virtual const

float

_process(time: float, seek: bool, is_external_seeking: bool, test_only: bool) virtual

bool

add_input(name: String)

void

blend_animation(animation: StringName, time: float, delta: float, seeked: bool, is_external_seeking: bool, blend: float, looped_flag: LoopedFlag = 0)

float

blend_input(input_index: int, time: float, seek: bool, is_external_seeking: bool, blend: float, filter: FilterAction = 0, sync: bool = true, test_only: bool = false)

float

blend_node(name: StringName, node: AnimationNode, time: float, seek: bool, is_external_seeking: bool, blend: float, filter: FilterAction = 0, sync: bool = true, test_only: bool = false)

int

find_input(name: String) const

int

get_input_count() const

String

get_input_name(input: int) const

Variant

get_parameter(name: StringName) const

int

get_processing_animation_tree_instance_id() const

bool

is_path_filtered(path: NodePath) const

bool

is_process_testing() const

void

remove_input(index: int)

void

set_filter_path(path: NodePath, enable: bool)

bool

set_input_name(input: int, name: String)

void

set_parameter(name: StringName, value: Variant)


Сигналы

animation_node_removed(object_id: int, name: String) 🔗

Выдается узлами, которые наследуют этот класс и имеют внутреннее дерево, когда один из их узлов анимации удаляется. Узлы анимации, которые выдают этот сигнал – AnimationNodeBlendSpace1D, AnimationNodeBlendSpace2D, AnimationNodeStateMachine и AnimationNodeBlendTree.


animation_node_renamed(object_id: int, old_name: String, new_name: String) 🔗

Выпускается узлами, которые наследуют этот класс и имеют внутреннее дерево, когда изменяется одно из имен их узлов анимации. Узлы анимации, которые выдают этот сигнал – AnimationNodeBlendSpace1D, AnimationNodeBlendSpace2D, AnimationNodeStateMachine и AnimationNodeBlendTree.


tree_changed() 🔗

Выпускается узлами, которые наследуют этот класс и имеют внутреннее дерево, когда один из их узлов анимации изменяется. Узлы анимации, которые выдают этот сигнал – AnimationNodeBlendSpace1D, AnimationNodeBlendSpace2D, AnimationNodeStateMachine, AnimationNodeBlendTree и AnimationNodeTransition.


Перечисления

enum FilterAction: 🔗

FilterAction FILTER_IGNORE = 0

Не использовать фильтрацию.

FilterAction FILTER_PASS = 1

Пути, соответствующие фильтру, будут пропущены.

FilterAction FILTER_STOP = 2

Пути, соответствующие фильтру, будут отброшены.

FilterAction FILTER_BLEND = 3

Пути, соответствующие фильтру, будут смешаны (по значению смешивания).


Описания свойств

bool filter_enabled 🔗

  • void set_filter_enabled(value: bool)

  • bool is_filter_enabled()

Если true, фильтрация включена.


Описания метода

String _get_caption() virtual const 🔗

При наследовании от AnimationRootNode реализуйте этот виртуальный метод, чтобы переопределить текстовую подпись для этого узла анимации.


AnimationNode _get_child_by_name(name: StringName) virtual const 🔗

При наследовании от AnimationRootNode реализуйте этот виртуальный метод для возврата дочернего узла анимации по его name.


Dictionary _get_child_nodes() virtual const 🔗

При наследовании от AnimationRootNode реализуйте этот виртуальный метод для возврата всех дочерних узлов анимации в порядке словаря name: node.


Variant _get_parameter_default_value(parameter: StringName) virtual const 🔗

При наследовании от AnimationRootNode реализуйте этот виртуальный метод для возврата значения по умолчанию параметра parameter. Параметры — это настраиваемая локальная память, используемая для ваших узлов анимации, учитывая, что ресурс может быть повторно использован в нескольких деревьях.


Array _get_parameter_list() virtual const 🔗

При наследовании от AnimationRootNode реализуйте этот виртуальный метод для возврата списка свойств этого узла анимации. Параметры — это настраиваемая локальная память, используемая для ваших узлов анимации, учитывая, что ресурс может быть повторно использован в нескольких деревьях. Формат аналогичен Object.get_property_list().


bool _has_filter() virtual const 🔗

При наследовании от AnimationRootNode реализуйте этот виртуальный метод, чтобы узнать, должен ли редактор смешанного дерева отображать редактирование фильтра на этом узле анимации.


bool _is_parameter_read_only(parameter: StringName) virtual const 🔗

При наследовании от AnimationRootNode реализуйте этот виртуальный метод, чтобы вернуть, является ли параметр parameter доступным только для чтения. Параметры — это настраиваемая локальная память, используемая для ваших узлов анимации, учитывая, что ресурс может быть повторно использован в нескольких деревьях.


float _process(time: float, seek: bool, is_external_seeking: bool, test_only: bool) virtual 🔗

Устарело: Currently this is mostly useless as there is a lack of many APIs to extend AnimationNode by GDScript. It is planned that a more flexible API using structures will be provided in the future.

При наследовании от AnimationRootNode реализуйте этот виртуальный метод для запуска некоторого кода при обработке этого узла анимации. Параметр time является относительной дельтой, если только seek не является true, в этом случае он является абсолютным.

Здесь вызовите функции blend_input(), blend_node() или blend_animation(). Вы также можете использовать get_parameter() и set_parameter() для изменения локальной памяти.

Эта функция должна возвращать дельту.


bool add_input(name: String) 🔗

Добавляет вход в узел анимации. Это полезно только для узлов анимации, созданных для использования в AnimationNodeBlendTree. Если добавление не удается, возвращает false.


void blend_animation(animation: StringName, time: float, delta: float, seeked: bool, is_external_seeking: bool, blend: float, looped_flag: LoopedFlag = 0) 🔗

Смешивает анимацию по величине blend (имя должно быть допустимым в связанном AnimationPlayer). Могут быть переданы time и delta, а также произошло ли seeked.

looped_flag используется внутренней обработкой сразу после цикла.


float blend_input(input_index: int, time: float, seek: bool, is_external_seeking: bool, blend: float, filter: FilterAction = 0, sync: bool = true, test_only: bool = false) 🔗

Смешивает входные данные. Это полезно только для узлов анимации, созданных для AnimationNodeBlendTree. Параметр time является относительной дельтой, если только seek не является true, в этом случае он является абсолютным. Режим фильтра может быть передан опционально.


float blend_node(name: StringName, node: AnimationNode, time: float, seek: bool, is_external_seeking: bool, blend: float, filter: FilterAction = 0, sync: bool = true, test_only: bool = false) 🔗

Смешайте другой узел анимации (в случае, если этот узел анимации содержит дочерние узлы анимации). Эта функция полезна только если вы наследуете от AnimationRootNode, в противном случае редакторы не будут отображать ваш узел анимации для добавления.


int find_input(name: String) const 🔗

Возвращает входной индекс, который соответствует name. Если не найден, возвращает -1.


int get_input_count() const 🔗

Количество входов в этом узле анимации, полезно только для узлов анимации, которые входят в AnimationNodeBlendTree.


String get_input_name(input: int) const 🔗

Получает имя ввода по индексу.


Variant get_parameter(name: StringName) const 🔗

Получает значение параметра. Параметры — это настраиваемая локальная память, используемая для ваших узлов анимации, учитывая, что ресурс может быть повторно использован в нескольких деревьях.


int get_processing_animation_tree_instance_id() const 🔗

Возвращает идентификатор объекта AnimationTree, которому принадлежит этот узел.

Примечание: Этот метод следует вызывать только из метода AnimationNodeExtension._process_animation_node(), в противном случае он вернет недействительный идентификатор.


bool is_path_filtered(path: NodePath) const 🔗

Возвращает true, если указанный путь отфильтрован.


bool is_process_testing() const 🔗

Возвращает true, если этот узел анимации обрабатывается в тестовом режиме.


void remove_input(index: int) 🔗

Удаляет вход, вызывать только когда неактивен.


void set_filter_path(path: NodePath, enable: bool) 🔗

Добавляет или удаляет путь для фильтра.


bool set_input_name(input: int, name: String) 🔗

Устанавливает имя входа по указанному индексу input. Если настройка не удалась, возвращает false.


void set_parameter(name: StringName, value: Variant) 🔗

Устанавливает пользовательский параметр. Они используются как локальная память, поскольку ресурсы могут повторно использоваться по всему дереву или сценам.