float_node.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. type float_node_t = {
  2. base?: logic_node_t;
  3. value?: f32;
  4. image?: image_t;
  5. };
  6. function float_node_create(arg: f32): float_node_t {
  7. let n: float_node_t = {};
  8. n.base = logic_node_create();
  9. n.base.get = float_node_get;
  10. n.base.get_as_image = float_node_get_as_image;
  11. n.base.set = float_node_set;
  12. n.value = arg;
  13. return n;
  14. }
  15. function float_node_get(self: float_node_t, from: i32): logic_node_value_t {
  16. if (self.base.inputs.length > 0) {
  17. return logic_node_input_get(self.base.inputs[0]);
  18. }
  19. else {
  20. let v: logic_node_value_t = { _f32: self.value };
  21. return v;
  22. }
  23. }
  24. function float_node_get_as_image(self: float_node_t, from: i32): image_t {
  25. if (self.base.inputs.length > 0) {
  26. return logic_node_input_get_as_image(self.base.inputs[0]);
  27. }
  28. if (self.image != null) {
  29. image_unload(self.image);
  30. }
  31. let b: buffer_t = buffer_create(16);
  32. let v: buffer_view_t = buffer_view_create(b);
  33. buffer_view_set_f32(v, 0, self.value);
  34. buffer_view_set_f32(v, 4, self.value);
  35. buffer_view_set_f32(v, 8, self.value);
  36. buffer_view_set_f32(v, 12, 1.0);
  37. self.image = image_from_bytes(b, 1, 1, tex_format_t.RGBA128);
  38. return self.image;
  39. }
  40. function float_node_set(self: float_node_t, value: any) {
  41. if (self.base.inputs.length > 0) {
  42. logic_node_input_set(self.base.inputs[0], value);
  43. }
  44. else {
  45. self.value = value;
  46. }
  47. }
  48. let float_node_def: zui_node_t = {
  49. id: 0,
  50. name: _tr("Value"),
  51. type: "float_node",
  52. x: 0,
  53. y: 0,
  54. color: 0xffb34f5a,
  55. inputs: [
  56. {
  57. id: 0,
  58. node_id: 0,
  59. name: _tr("Value"),
  60. type: "VALUE",
  61. color: 0xffa1a1a1,
  62. default_value: f32_array_create_x(0.5),
  63. min: 0.0,
  64. max: 10.0,
  65. precision: 100,
  66. display: 0
  67. }
  68. ],
  69. outputs: [
  70. {
  71. id: 0,
  72. node_id: 0,
  73. name: _tr("Value"),
  74. type: "VALUE",
  75. color: 0xffa1a1a1,
  76. default_value: f32_array_create_x(0.5),
  77. min: 0.0,
  78. max: 1.0,
  79. precision: 100,
  80. display: 0
  81. }
  82. ],
  83. buttons: [],
  84. width: 0
  85. };