float_node.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. type float_node_t = {
  2. base?: logic_node_t;
  3. value?: f32;
  4. image?: gpu_texture_t;
  5. };
  6. function float_node_create(raw: ui_node_t, args: f32_array_t): float_node_t {
  7. let n: float_node_t = {};
  8. n.base = logic_node_create(n);
  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 = args == null ? 0.5 : args[0];
  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): gpu_texture_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. gpu_delete_texture(self.image);
  30. }
  31. let b: buffer_t = buffer_create(16);
  32. buffer_set_f32(b, 0, self.value);
  33. buffer_set_f32(b, 4, self.value);
  34. buffer_set_f32(b, 8, self.value);
  35. buffer_set_f32(b, 12, 1.0);
  36. self.image = gpu_create_texture_from_bytes(b, 1, 1, gpu_texture_format_t.RGBA128);
  37. return self.image;
  38. }
  39. function float_node_set(self: float_node_t, value: f32_array_t) {
  40. if (self.base.inputs.length > 0) {
  41. logic_node_input_set(self.base.inputs[0], value);
  42. }
  43. else {
  44. self.value = value[0];
  45. }
  46. }
  47. let float_node_def: ui_node_t = {
  48. id : 0,
  49. name : _tr("Value"),
  50. type : "float_node",
  51. x : 0,
  52. y : 0,
  53. color : 0xffb34f5a,
  54. inputs : [ {
  55. id : 0,
  56. node_id : 0,
  57. name : _tr("Value"),
  58. type : "VALUE",
  59. color : 0xffa1a1a1,
  60. default_value : f32_array_create_x(0.5),
  61. min : 0.0,
  62. max : 10.0,
  63. precision : 100,
  64. display : 0
  65. } ],
  66. outputs : [ {
  67. id : 0,
  68. node_id : 0,
  69. name : _tr("Value"),
  70. type : "VALUE",
  71. color : 0xffa1a1a1,
  72. default_value : f32_array_create_x(0.5),
  73. min : 0.0,
  74. max : 1.0,
  75. precision : 100,
  76. display : 0
  77. } ],
  78. buttons : [],
  79. width : 0,
  80. flags : 0
  81. };