2
0

logic_node.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. type logic_node_t = {
  2. inputs?: logic_node_input_t[];
  3. outputs?: logic_node_t[][];
  4. get?: (self: any, from: i32) => logic_node_value_t;
  5. get_as_image?: (self: any, from: i32) => gpu_texture_t;
  6. get_cached_image?: (self: any) => gpu_texture_t;
  7. set?: (self: any, value: f32_array_t) => void;
  8. ext?: logic_node_ext_t;
  9. };
  10. type logic_node_ext_t = {
  11. base?: logic_node_t;
  12. }
  13. type logic_node_value_t = {
  14. _f32?: f32;
  15. _vec4?: vec4_t;
  16. _str?: string;
  17. };
  18. type logic_node_input_t = {
  19. node?: logic_node_ext_t;
  20. from?: i32; // Socket index
  21. };
  22. function logic_node_create(ext: logic_node_ext_t): logic_node_t {
  23. let n: logic_node_t = {};
  24. n.inputs = [];
  25. n.outputs = [];
  26. n.ext = ext;
  27. return n;
  28. }
  29. function logic_node_add_input(self: logic_node_t, node: logic_node_ext_t, from: i32) {
  30. array_push(self.inputs, logic_node_input_create(node, from));
  31. }
  32. function logic_node_add_outputs(self: logic_node_t, nodes: logic_node_t[]) {
  33. array_push(self.outputs, nodes);
  34. }
  35. function logic_node_get(self: logic_node_t, from: i32): any {
  36. if (self.get != null) {
  37. return self.get(self.ext, from);
  38. }
  39. return null;
  40. }
  41. function logic_node_get_as_image(self: logic_node_t, from: i32): gpu_texture_t {
  42. if (self.get_as_image != null) {
  43. return self.get_as_image(self.ext, from);
  44. }
  45. return null;
  46. }
  47. function logic_node_get_cached_image(self: logic_node_t): gpu_texture_t {
  48. if (self.get_cached_image != null) {
  49. return self.get_cached_image(self.ext);
  50. }
  51. return null;
  52. }
  53. function logic_node_set(self: logic_node_t, value: any) {
  54. if (self.set != null) {
  55. self.set(self.ext, value);
  56. }
  57. }
  58. function logic_node_input_create(node: logic_node_ext_t, from: i32): logic_node_input_t {
  59. let inp: logic_node_input_t = {};
  60. inp.node = node;
  61. inp.from = from;
  62. return inp;
  63. }
  64. function logic_node_input_get(self: logic_node_input_t): logic_node_value_t {
  65. return logic_node_get(self.node.base, self.from);
  66. }
  67. function logic_node_input_get_as_image(self: logic_node_input_t): gpu_texture_t {
  68. return logic_node_get_as_image(self.node.base, self.from);
  69. }
  70. function logic_node_input_set(self: logic_node_input_t, value: f32_array_t) {
  71. logic_node_set(self.node.base, value);
  72. }