#pragma once #include "node_border.h" class NodeSliderH : public NodeBorder { bool dragging = false; public: glm::vec2 m_mask{ 1, 0 }; glm::vec2 m_value; std::function on_value_changed; virtual Node* clone_instantiate() const override; virtual void clone_copy(Node* dest) const override; virtual void init() override; virtual void draw() override; void set_value(float value); float get_value(); virtual void parse_attributes(kAttribute ka, const tinyxml2::XMLAttribute* attr) override; virtual kEventResult handle_event(Event* e) override; }; class NodeSliderV : public NodeSliderH { public: virtual Node* clone_instantiate() const override { return new NodeSliderV(); } NodeSliderV() { m_mask = { 0, 1 }; } }; class NodeSliderHue : public NodeSliderV { public: glm::vec4 m_color; std::function on_hue_changed; virtual Node* clone_instantiate() const override; virtual void clone_finalize(Node* dest) const override; virtual void init() override; void init_controls(); glm::vec4 get_hue(); virtual void draw() override; };