*
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
#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__
|
||||
Reference in New Issue
Block a user