84 lines
1.9 KiB
C++
84 lines
1.9 KiB
C++
#include "pch.h"
|
|
#include "log.h"
|
|
#include "node_button_custom.h"
|
|
|
|
Node* NodeButtonCustom::clone_instantiate() const
|
|
{
|
|
return new NodeButtonCustom();
|
|
}
|
|
|
|
void NodeButtonCustom::clone_copy(Node* dest) const
|
|
{
|
|
NodeBorder::clone_copy(dest);
|
|
NodeButtonCustom* n = static_cast<NodeButtonCustom*>(dest);
|
|
n->color_normal = color_normal;
|
|
n->color_hover = color_hover;
|
|
n->color_down = color_down;
|
|
n->m_mouse_ignore = false;
|
|
n->m_color = color_normal;
|
|
}
|
|
|
|
void NodeButtonCustom::loaded()
|
|
{
|
|
NodeBorder::loaded();
|
|
//m_thinkness = 1;
|
|
//m_border_color = glm::vec4(0, 0, 0, 1);
|
|
m_color = color_normal;
|
|
m_mouse_ignore = false;
|
|
}
|
|
|
|
void NodeButtonCustom::set_color(const glm::vec4& c)
|
|
{
|
|
color_normal = c;
|
|
m_color = color_normal;
|
|
}
|
|
|
|
kEventResult NodeButtonCustom::handle_event(Event* e)
|
|
{
|
|
NodeBorder::handle_event(e);
|
|
switch (e->m_type)
|
|
{
|
|
case kEventType::MouseEnter:
|
|
m_color = color_hover;
|
|
break;
|
|
case kEventType::MouseLeave:
|
|
m_color = color_normal;
|
|
break;
|
|
case kEventType::MouseDownL:
|
|
m_color = color_down;
|
|
mouse_capture();
|
|
break;
|
|
case kEventType::MouseUpL:
|
|
#ifdef __IOS__
|
|
m_color = color_normal;
|
|
#else
|
|
m_color = m_mouse_inside ? color_hover : color_normal;
|
|
#endif
|
|
mouse_release();
|
|
if (m_mouse_inside && on_click != nullptr)
|
|
on_click(this);
|
|
break;
|
|
case kEventType::MouseCancel:
|
|
m_color = color_normal;
|
|
mouse_release();
|
|
break;
|
|
default:
|
|
return kEventResult::Available;
|
|
break;
|
|
}
|
|
return kEventResult::Consumed;
|
|
}
|
|
|
|
void NodeButtonCustom::parse_attributes(kAttribute ka, const tinyxml2::XMLAttribute* attr)
|
|
{
|
|
NodeBorder::parse_attributes(ka, attr);
|
|
switch (ka)
|
|
{
|
|
case kAttribute::Color:
|
|
color_normal = m_color;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|