96 lines
2.4 KiB
C++
96 lines
2.4 KiB
C++
#ifndef GUIShaderNode_h__
|
|
#define GUIShaderNode_h__
|
|
#include <gui/GUIWindow.h>
|
|
#include <gui/GUIPlane.h>
|
|
#include <gui/GUIText.h>
|
|
#include <gui/GUIMenu.h>
|
|
#include <gui/GUIManager.h>
|
|
#include "GUIShaderNodeIO.h"
|
|
#include <gui/GUIPicture.h>
|
|
#include <shaders/IShaderGraphNode.h>
|
|
#include <vector>
|
|
#include <IPropertyHolder.h>
|
|
|
|
class GUIShaderNode : public GUIWindow, public Core::IPropertyHolder
|
|
{
|
|
public:
|
|
|
|
EVENT(LayoutEvent);
|
|
LayoutEvent Event_LayoutChanged;
|
|
|
|
EVENT1(ShaderNodeEvent, GUIShaderNode*);
|
|
ShaderNodeEvent Event_Select;
|
|
|
|
EVENT2(ShaderNodeNouseEvent, GUIShaderNode*, int);
|
|
ShaderNodeNouseEvent Event_HeaderClick;
|
|
|
|
EVENT2(NodeEvent, GUIShaderNodeIO*, GUIShaderNodeIO*);
|
|
NodeEvent Event_Attach;
|
|
GUIShaderNode(IShaderGraphNode* src);
|
|
~GUIShaderNode();
|
|
void SetCaption(const String& text);
|
|
const String& GetCaption();
|
|
void Update(float dt);
|
|
void RenderSelf();
|
|
void SetBackColor(const Vec4f& color);
|
|
void AddInput(GUIShaderNodeIO* node);
|
|
void AddOutput(GUIShaderNodeIO* node);
|
|
size_t GetInputCount();
|
|
size_t GetOutputCount();
|
|
GUIShaderNodeIO* GetInput(int id);
|
|
GUIShaderNodeIO* GetOutput(int id);
|
|
|
|
bool ProcessMessage(GUIMessageType mt, GUIMessageParam mp, IMessageArgs* args);
|
|
void* UserData;
|
|
|
|
IShaderGraphNode* GetGraphicsNode()
|
|
{
|
|
return GraphicsNode;
|
|
}
|
|
void Invalidate()
|
|
{
|
|
GUIWindow::Invalidate();
|
|
invalid = true;
|
|
}
|
|
private:
|
|
GUIMenu* menu;
|
|
IShaderGraphNode* GraphicsNode;
|
|
bool invalid;
|
|
GUIPicture* display;
|
|
|
|
bool resizing;
|
|
bool moving;
|
|
Vec2i size_pos;
|
|
Vec2i size_min;
|
|
Vec2i size_max;
|
|
|
|
void OnHeaderRightClick(GUIWindow* wnd, int param);
|
|
void OnBeginResize(GUIWindow* wnd, int param);
|
|
void OnDoResize(GUIWindow* wnd, int param);
|
|
void OnEndResize(GUIWindow* wnd, int param);
|
|
|
|
void OnHeaderMouseDown(GUIWindow* wnd, int param);
|
|
void OnHeaderMouseMove(GUIWindow* wnd, int param);
|
|
void OnHeaderMouseUp(GUIWindow* wnd, int param);
|
|
void OnHeaderMouseClick(GUIWindow* wnd, int param);
|
|
|
|
void OnSelect();
|
|
void ProcessLink(GUIShaderNodeIO* my, GUIShaderNodeIO* other);
|
|
void FormatInputs();
|
|
void FormatOutputs();
|
|
void OnIOResize(GUIWindow* wnd);
|
|
GUIPlane* header;
|
|
GUIText* header_text;
|
|
GUIPlane* body;
|
|
GUIPlane* mover;
|
|
GUIPlane* back;
|
|
typedef std::vector<GUIShaderNodeIO*> IoVector;
|
|
IoVector inputs;
|
|
IoVector outputs;
|
|
|
|
protected:
|
|
void SetDisplayImage(texture_ptr tex);
|
|
texture_ptr displayImage;
|
|
};
|
|
|
|
#endif // GUIShaderNode_h__
|