Color.hx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package hrt.shgraph.nodes;
  2. using hxsl.Ast;
  3. @name("Color")
  4. @description("Color property (static)")
  5. @group("Property")
  6. @width(100)
  7. @noheader()
  8. class Color extends ShaderConst {
  9. @prop() var r : Float = 0;
  10. @prop() var g : Float = 0;
  11. @prop() var b : Float = 0;
  12. @prop() var a : Float = 1;
  13. override function getOutputs() {
  14. static var output : Array<ShaderNode.OutputInfo> = [{name: "output", type: SgFloat(4)}];
  15. return output;
  16. }
  17. override function generate(ctx: NodeGenContext) {
  18. var expr = makeVec([r,g,b,a]);
  19. ctx.setOutput(0, expr);
  20. ctx.addPreview(expr);
  21. }
  22. #if editor
  23. override public function getPropertiesHTML(width : Float) : Array<hide.Element> {
  24. var elements = super.getPropertiesHTML(width);
  25. var element = new hide.Element('<div style="width: 47px; height: 35px"></div>');
  26. var picker = new hide.comp.ColorPicker.ColorBox(element, true, true);
  27. var start = h3d.Vector.fromArray([r, g, b, a]);
  28. picker.value = start.toColor();
  29. picker.onChange = function(move) {
  30. var vec = h3d.Vector4.fromColor(picker.value);
  31. r = vec.x;
  32. g = vec.y;
  33. b = vec.z;
  34. a = vec.w;
  35. requestRecompile();
  36. };
  37. elements.push(element);
  38. return elements;
  39. }
  40. #end
  41. }