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-index でソートする
- ShaderCast がアクティブかどうか、およびターゲットの z-index がトリガーの z-index よりも高いかどうかをチェックする
- トリガーの座標を位置のリストに入れる
- シェーダーパラメータに座標を入力する
- _ready
func _ready() -> void:
self.set_y_sort_enabled(true)
set_y_sort_enabledパラメータは常にtrue**である。