Files
armorpaint/paint/sources/logic_node.ts
T

88 lines
2.2 KiB
TypeScript
Raw Normal View History

2024-03-14 23:58:24 +01:00
type logic_node_t = {
inputs?: logic_node_input_t[];
outputs?: logic_node_t[][];
2025-10-15 18:39:55 +02:00
get?: (self: any, from: i32) => logic_node_value_t;
get_as_image?: (self: any, from: i32) => gpu_texture_t;
get_cached_image?: (self: any) => gpu_texture_t;
set?: (self: any, value: f32_array_t) => void;
2024-10-21 19:28:43 +02:00
ext?: logic_node_ext_t;
2024-03-14 23:58:24 +01:00
};
2024-05-03 21:29:39 +02:00
type logic_node_ext_t = {
base?: logic_node_t;
}
2024-04-08 17:40:32 +02:00
type logic_node_value_t = {
_f32?: f32;
2024-09-08 21:53:39 +02:00
_vec4?: vec4_t;
_str?: string;
2024-04-08 17:40:32 +02:00
};
2024-03-14 23:58:24 +01:00
type logic_node_input_t = {
2024-05-03 21:29:39 +02:00
node?: logic_node_ext_t;
2024-03-14 23:58:24 +01:00
from?: i32; // Socket index
};
2024-10-21 19:28:43 +02:00
function logic_node_create(ext: logic_node_ext_t): logic_node_t {
2024-03-14 23:58:24 +01:00
let n: logic_node_t = {};
2025-10-15 18:39:55 +02:00
n.inputs = [];
n.outputs = [];
n.ext = ext;
2024-03-14 23:58:24 +01:00
return n;
}
2024-05-10 14:20:57 +02:00
function logic_node_add_input(self: logic_node_t, node: logic_node_ext_t, from: i32) {
2024-03-20 16:13:54 +01:00
array_push(self.inputs, logic_node_input_create(node, from));
2024-03-14 23:58:24 +01:00
}
function logic_node_add_outputs(self: logic_node_t, nodes: logic_node_t[]) {
2024-03-20 16:13:54 +01:00
array_push(self.outputs, nodes);
2024-03-14 23:58:24 +01:00
}
2024-04-02 15:45:49 +02:00
function logic_node_get(self: logic_node_t, from: i32): any {
2024-10-21 19:28:43 +02:00
if (self.get != null) {
return self.get(self.ext, from);
}
2024-04-02 15:45:49 +02:00
return null;
2024-03-14 23:58:24 +01:00
}
2025-06-19 19:55:16 +02:00
function logic_node_get_as_image(self: logic_node_t, from: i32): gpu_texture_t {
2024-10-21 19:28:43 +02:00
if (self.get_as_image != null) {
return self.get_as_image(self.ext, from);
}
2024-04-02 15:45:49 +02:00
return null;
2024-03-14 23:58:24 +01:00
}
2025-06-19 19:55:16 +02:00
function logic_node_get_cached_image(self: logic_node_t): gpu_texture_t {
2024-10-21 19:28:43 +02:00
if (self.get_cached_image != null) {
return self.get_cached_image(self.ext);
}
2024-03-14 23:58:24 +01:00
return null;
}
2024-10-21 19:28:43 +02:00
function logic_node_set(self: logic_node_t, value: any) {
if (self.set != null) {
self.set(self.ext, value);
}
}
2024-03-14 23:58:24 +01:00
2024-05-10 14:20:57 +02:00
function logic_node_input_create(node: logic_node_ext_t, from: i32): logic_node_input_t {
2024-03-14 23:58:24 +01:00
let inp: logic_node_input_t = {};
2025-10-15 18:39:55 +02:00
inp.node = node;
inp.from = from;
2024-03-14 23:58:24 +01:00
return inp;
}
2024-04-08 17:40:32 +02:00
function logic_node_input_get(self: logic_node_input_t): logic_node_value_t {
2024-10-21 19:28:43 +02:00
return logic_node_get(self.node.base, self.from);
2024-03-14 23:58:24 +01:00
}
2025-06-19 19:55:16 +02:00
function logic_node_input_get_as_image(self: logic_node_input_t): gpu_texture_t {
2024-10-21 19:28:43 +02:00
return logic_node_get_as_image(self.node.base, self.from);
2024-03-14 23:58:24 +01:00
}
2024-05-03 21:29:39 +02:00
function logic_node_input_set(self: logic_node_input_t, value: f32_array_t) {
2024-10-21 19:28:43 +02:00
logic_node_set(self.node.base, value);
2024-03-14 23:58:24 +01:00
}