#include "GUINodePort.h" #include GUINodePort::GUINodePort() :input_mode(false) { allowDrop = true; allowDrag = true; can_drag = false; } GUINodePort::~GUINodePort() { } void GUINodePort::FinishDrag() { } bool GUINodePort::DragEnter(DragInfo* info) { if(this->input_mode == true && info->Name == STR("Shader_Output")) return true; if(this->input_mode == false && info->Name == STR("Shader_Input")) return true; return false; } void GUINodePort::AcceptDrop(DragInfo* info) { Event_Link.Invoke(this, reinterpret_cast(info->data)); } void GUINodePort::OnMouseMove(int abs_x, int abs_y, int rel_x, int rel_y) { if(can_drag) { can_drag = false; if(input_mode) info.Name = STR("Shader_Input"); else info.Name = STR("Shader_Output"); info.data = this; FindOverlay()->BeginDrag(this, &info); } else { GUIPlane::OnMouseMove(abs_x, abs_y, rel_x, rel_y); } } void GUINodePort::OnMousePress(int x, int y, int key) { can_drag = true; GUIPlane::OnMousePress(x, y, key); }