FloatConst.hx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package hrt.shgraph.nodes;
  2. using hxsl.Ast;
  3. @name("Value")
  4. @description("Number input (static)")
  5. @group("Property")
  6. @width(100)
  7. @noheader()
  8. class FloatConst extends ShaderConst {
  9. @output() var output = SType.Float;
  10. @prop() var value : Float = 0.;
  11. public function new(?value : Float) {
  12. if (value != null)
  13. this.value = value;
  14. }
  15. override public function getOutputTExpr(key : String) : TExpr {
  16. return {
  17. e: TConst(CFloat(value)),
  18. p: null,
  19. t: TFloat
  20. };
  21. }
  22. override public function build(key : String) : TExpr {
  23. return null;
  24. }
  25. #if editor
  26. override public function getPropertiesHTML(width : Float) : Array<hide.Element> {
  27. var elements = super.getPropertiesHTML(width);
  28. var element = new hide.Element('<div style="width: 75px; height: 30px"></div>');
  29. element.append(new hide.Element('<input type="text" id="value" style="width: ${width*0.5}px" value="${value}" />'));
  30. var input = element.children("input");
  31. input.on("keydown", function(e) {
  32. e.stopPropagation();
  33. });
  34. input.on("change", function(e) {
  35. var tmpValue = Std.parseFloat(input.val());
  36. if (Math.isNaN(tmpValue) ) {
  37. input.addClass("error");
  38. } else {
  39. this.value = tmpValue;
  40. input.val(tmpValue);
  41. input.removeClass("error");
  42. }
  43. });
  44. elements.push(element);
  45. return elements;
  46. }
  47. #end
  48. }