Daicon
![]()
Daicon - корневая нода сцены, отвечающая за шейдеры.
Параметры:
- shader_trigger_nodes
Array[Node]
Список узлов-триггеров использующих ShaderCast или другие механизмы проектирования шейдеров на узлах-целях.
Note
Нода-триггер обязательно должна содержать ShaderCast или другой механизм проектирования шейдера. Иначе будет ошибка.
- shader_target_nodes
Array[Node]
Список узлов-целей. Отрисовывают шейдер, используя переданную информацию позиции от узлов-триггеров.
- PositionArray
Array[Vector2]
Динамически обновляемый список позиций всех шейдеров на экране.
Методы:
- _physics_process
func _physics_process(delta: float) -> void:
(1) shader_target_nodes.sort_custom(func(a, b): return a.z_index < b.z_index)
for shader_target in shader_target_nodes:
(2) PositionArray.clear()
(3) shader_trigger_nodes.sort_custom(func(a, b): return a.z_index < b.z_index)
for shader_trigger in shader_trigger_nodes:
(4) if shader_trigger.shader_cast.is_colliding() and shader_target.z_index >= shader_trigger.z_index:
(5) PositionArray.append(get_viewport().get_final_transform() * shader_trigger.get_global_transform_with_canvas() * Vector2(0,0))
(6) shader_target.material.set_shader_parameter("CircleCentres", PositionArray)
shader_target.material.set_shader_parameter("NumCircleCentres", PositionArray.size())
- Сортировка списка узлов-целей за z-индексом.
- Очистка списка позиций.
- Сортировка списка триггеров за z-индексом
- Проверка: активен ли ShaderCast и если z-индекс цели выше за z-индекс триггера
- Заносим координаты триггера в список позиций
- Вносим координаты в параметр шейдера
- _ready
func _ready() -> void:
self.set_y_sort_enabled(true)
Параметр set_y_sort_enabled всегда равен true.