カーネル
芯は、大根の節に詰められ、立体的な性質を与える詰め物である。
カーネルはエディタには表示されず、抽象的にメモリ上に存在します。プロジェクトを開始するたびに、この目的のために割り当てられたパネルで設定されたパラメータを考慮して、カーネルはゼロから形成されます。同じパネルには daicon-node のベースとなるノードの標準パラメータが含まれています。
セル
セルは主にコアの子ノードへの参照である。 それらは、オプション・パネルの 「Core 」セクションにある辞書と密接にリンクしている。
Tip
実際、「Core」セクションは純粋に技術的なものだが、コードを通して直接カーネルを呼び出すことなく、カーネル内に配置された子ノードのパラメーターを追跡するために使用できる。
ノードをコアに配置する(セルに割り当てる)と、セルはまず配置されたノードの親を変更し、それからすべてのパラメータを辞書に書き込んで送信する。
このボキャブラリーは、カーネル内に配置されたノードがカーネルそのものと同じように抽象化されると、カーネルを動的にデプロイするために使われる。
セル:
@export var node_1 : Node:
set(node):
if not d3: return
if node:
if node_1:
node_1_properties = {}
var node_properties = get_node_properties(node)
node.reparent(d3)
d3.move_child(node, 0)
node.position = Vector3(0, 0.5, 0)
node_1_properties = node_properties
else:
node_1_properties = {}
get():
if not node_1_properties: return
return d3.get_node(str(node_1_properties.Name))
彼女の語彙:
@export var node_1_properties : Dictionary:
set(dict):
if not dict and node_1:
node_1.position = Vector3(0, 0, 0)
node_1.reparent(self)
get_child(-1).owner = get_tree().edited_scene_root
node_1_properties = dict
get():
return node_1_properties
単一セルのカーネル子ノード展開コードのセグメント:
if node_1_properties and ClassDB.class_exists(node_1_properties.Class):
var node = ClassDB.instantiate(node_1_properties.Class)
node.set_name(node_1_properties.Name)
d3.add_child(node)
for prop in node_1_properties.Properties:
node.set(prop, node_1_properties.Properties[prop])
コードによるアドレス指定
それぞれのダイコンノードにはコアを表す変数があります。例えば環境ノードであれば d3 やgrid_map などです。この変数を呼び出すことでコアに無制限にアクセスすることができます。
そのため、パラメータ・パネルにないパラメータを追跡して変更したり、カーネルのルート・ノードの子ノードにアクセスしたり、カーネルを自由に操作することができる。
Danger
管理者権限には注意してください。ノードとそのコアにダメージを与えないように、自分のしていることを正確に知っておくべきだ。
Child Count
child_count パラメーターは、自動的にカーネルの子ノードの数を一定に保ちます。これを変更することはできない。
@export var child_count : int:
set(count):
pass
get():
if not d3: return 0
return d3.get_child_count()