Skylicht Engine
Loading...
Searching...
No Matches
Skylicht::UI::CUIButton Class Reference

Button control built on top of CUIBase. More...

#include <UserInterface/CUIButton.h>

Inheritance diagram for Skylicht::UI::CUIButton:
Skylicht::UI::CUIBase

Public Member Functions

 CUIButton (CUIContainer *container, CGUIElement *element)
 Construct a button bound to a container and element.
 CUIButton (CUIContainer *container, CGUIElement *element, CGUIElement *bg, CGUIText *text)
 Construct a button with explicit background and text elements.
void setLabel (const char *string)
 Set the button label using a UTF-8 char string.
void setLabel (const wchar_t *string)
 Set the button label using a wide character string.
void setLabelAndChangeWidth (const char *string, float addition)
 Set the label and adjust the button width by addition units.
void setLabelAndChangeWidth (const wchar_t *string, float addition)
 Set the label (wide chars) and adjust the button width by addition units.
virtual void onPointerHover (int pointerId, float pointerX, float pointerY)
 Called when pointer enters or hovers over the element.
virtual void onPointerOut (int pointerId, float pointerX, float pointerY)
 Called when pointer leaves the element.
virtual void onPressed ()
 Called when the element is considered "pressed" (high-level event). Subclasses may trigger OnPressed callback from here.
void setToggleButton (bool b)
 Enable or disable toggle mode for this button.
bool isToggleButton ()
 Query whether the button is configured as a toggle.
virtual void setToggle (bool b, bool invokeEvent=true)
 Set the toggle state programmatically.
bool isToggle ()
 Returns current toggle state.
CGUIElementgetBackground ()
 Get the background element (may be nullptr).
CGUITextgetText ()
 Get the text element used as label (may be nullptr).
Public Member Functions inherited from Skylicht::UI::CUIBase
 CUIBase (CUIContainer *container, CGUIElement *element)
 Constructor.
virtual ~CUIBase ()
 Virtual destructor.
void remove ()
 Remove this UI object from its container and perform cleanup.
virtual void update ()
virtual void setEnable (bool b)
 Enable or disable this UI object.
virtual void setVisible (bool b)
 Set visibility of this UI object.
bool isEnable ()
 Returns true if the object is enabled.
bool isVisible ()
 Returns true if the object is visible.
int getPointerId ()
 Get the pointer ID associated with this UI object.
void setPointerId (int id)
 Set the pointer ID for this UI object.
void resetTouch ()
 Reset pointer internal state (hover/down).
void setContinueGameEvent (bool b)
 Control whether input events continue to the game layer.
bool isContinueGameEvent ()
 Returns true when events are allowed to continue to the game layer.
bool isContinueKeyEvent ()
void setSkipPointerEventWhenDrag (bool b)
 When true pointer events will be skipped while dragging.
bool isPointerHover ()
 Returns true if pointer is hovering this object.
bool isPointerDown ()
 Returns true if pointer is down on this object.
CGUIElementgetElement ()
 Get the underlying CGUIElement pointer.
CCanvasgetCanvas ()
 Retrieve the canvas that the underlying element belongs to.
CUIContainergetContainer ()
 Get parent container.
core::vector3dfgetRectTransform ()
 Returns a pointer to the internal rect transform (4 corners).
void getRectTransform (CGUIElement *element, core::vector3df *t)
virtual void onPointerDown (int pointerId, float pointerX, float pointerY)
 Called when pointer is pressed down on the element.
virtual void onPointerUp (int pointerId, float pointerX, float pointerY)
 Called when pointer is released over the element.
virtual void onPointerMove (int pointerId, float pointerX, float pointerY)
 Called when pointer moves while over or dragging the element.
virtual void onFocus ()
 Called when element receives focus.
virtual void onLostFocus ()
 Called when element loses focus.
virtual void onKeyEvent (const SEvent &event)
 Called when a keyboard event is delivered to this element.
void startMotion (EMotionEvent event)
 Start motions associated with a specific motion event.
void stopMotion (EMotionEvent event)
 Stop motions associated with a specific motion event.
bool isMotionPlaying (EMotionEvent event)
 Query whether any motion is currently playing for the given event.
virtual CMotionaddMotion (EMotionEvent event, CMotion *motion)
 Add a CMotion instance to the list for the given event. The motion will be initialized and managed by this object.
virtual CMotionaddMotion (EMotionEvent event, CGUIElement *element, CMotion *motion)
 Add a CMotion instance bound to a specific CGUIElement for the given event.
bool removeMotion (EMotionEvent event, CMotion *motion)
 Remove a motion instance from the given event list.
void removeMotions (EMotionEvent event)
 Remove all motions attached to the specified event.
std::vector< CMotion * > & getMotions (EMotionEvent event)
 Access the motion vector for a specific event.
void convertToUICoordinate (float &pointerX, float &pointerY)
 Convert screen pointer coordinates to this UI object's local UI coordinates.
void convertWorldToLocal (CGUIElement *element, float &x, float &y)
 Convert world coordinates to the local coordinate space of a CGUIElement.
void convertLocalToWorld (CGUIElement *element, float &x, float &y)
 Convert local coordinates of a CGUIElement to world coordinates.
virtual bool acceptDragFocus ()
 Whether this UI element should accept drag-focus when the pointer is already down and the user drags over it.
void setSoundId (int slot, int soundId)
 Set the sound id associated with this UI object.
int getSoundId (int slot)
 Get the sound id associated with this UI object.
void setUserData (void *data)
 Attach an application-defined pointer to this UI object.
void * getUserData ()
 Retrieve the pointer previously set via setUserData.

Public Attributes

std::function< void(CUIBase *, bool)> OnToggle
 Callback invoked when the button toggle state changes.
Public Attributes inherited from Skylicht::UI::CUIBase
std::function< void(int, float, float)> OnPointerHover
std::function< void(int, float, float)> OnPointerOut
std::function< void(int, float, float)> OnPointerDown
std::function< void(int, float, float)> OnPointerUp
std::function< void(int, float, float, bool)> OnPointerMove
std::function< void(CUIBase *)> OnPressed
std::function< void(CUIBase *)> OnFocus
std::function< void(CUIBase *)> OnLostFocus
std::function< void(CUIBase *, const SEvent &)> OnKeyEvent
std::function< void(CUIBase *, EMotionEvent)> OnMotionFinish [(int) EMotionEvent::NumEvent]

Protected Attributes

CGUIElementm_background
CGUITextm_text
bool m_isToggle
bool m_toggleStatus
Protected Attributes inherited from Skylicht::UI::CUIBase
CUIContainerm_container
CGUIElementm_element
core::vector3df m_rectTransform [4]
std::vector< CMotion * > m_motions [(int) EMotionEvent::NumEvent]
bool m_enable
bool m_visible
bool m_isPointerHover
bool m_isPointerDown
bool m_skipPointerEventWhenDrag
bool m_continueGameEvent
bool m_continueKeyEvent
int m_pointerId
float m_pointerDownX
float m_pointerDownY
int m_soundId [4]
void * m_userData

Detailed Description

Button control built on top of CUIBase.

CUIButton provides a simple button implementation with optional toggle behavior, a background element and a CGUIText label. It handles pointer hover/out and pressed events and exposes callbacks for toggle changes.

Typical usage:

  • Construct with a parent CUIContainer and a CGUIElement representing the element node.
  • Optionally provide a background element and a text element to control visual parts separately.
  • Register to OnToggle or override onPressed() to react to user interaction.

Constructor & Destructor Documentation

◆ CUIButton() [1/2]

Skylicht::UI::CUIButton::CUIButton ( CUIContainer * container,
CGUIElement * element )

Construct a button bound to a container and element.

Parameters
containerParent CUIContainer that owns this control.
elementUnderlying CGUIElement representing this control node.

The background and text elements remain null; use setters or the alternate constructor to provide them.

◆ CUIButton() [2/2]

Skylicht::UI::CUIButton::CUIButton ( CUIContainer * container,
CGUIElement * element,
CGUIElement * bg,
CGUIText * text )

Construct a button with explicit background and text elements.

Parameters
containerParent CUIContainer.
elementRoot element of the button.
bgBackground CGUIElement used for visual state changes.
textCGUIText used as the button label.

Member Function Documentation

◆ isToggleButton()

bool Skylicht::UI::CUIButton::isToggleButton ( )
inline

Query whether the button is configured as a toggle.

Returns
true if the button is a toggle button.

◆ onPointerHover()

virtual void Skylicht::UI::CUIButton::onPointerHover ( int pointerId,
float pointerX,
float pointerY )
virtual

Called when pointer enters or hovers over the element.

Parameters
pointerIdID of the pointer device.
pointerXWorld X coordinate of pointer.
pointerYWorld Y coordinate of pointer.

Reimplemented from Skylicht::UI::CUIBase.

◆ onPointerOut()

virtual void Skylicht::UI::CUIButton::onPointerOut ( int pointerId,
float pointerX,
float pointerY )
virtual

Called when pointer leaves the element.

Parameters
pointerIdID of the pointer device.
pointerXWorld X coordinate at time of out event.
pointerYWorld Y coordinate at time of out event.

Reimplemented from Skylicht::UI::CUIBase.

◆ onPressed()

virtual void Skylicht::UI::CUIButton::onPressed ( )
virtual

Called when the element is considered "pressed" (high-level event). Subclasses may trigger OnPressed callback from here.

Reimplemented from Skylicht::UI::CUIBase.

◆ setLabel() [1/2]

void Skylicht::UI::CUIButton::setLabel ( const char * string)

Set the button label using a UTF-8 char string.

Parameters
stringNull-terminated UTF-8 string to set as label.

◆ setLabel() [2/2]

void Skylicht::UI::CUIButton::setLabel ( const wchar_t * string)

Set the button label using a wide character string.

Parameters
stringNull-terminated wide string to set as label.

◆ setLabelAndChangeWidth() [1/2]

void Skylicht::UI::CUIButton::setLabelAndChangeWidth ( const char * string,
float addition )

Set the label and adjust the button width by addition units.

Parameters
stringUTF-8 label text.
additionExtra width to add after sizing to the text.

Useful when label size must drive layout while keeping padding.

◆ setLabelAndChangeWidth() [2/2]

void Skylicht::UI::CUIButton::setLabelAndChangeWidth ( const wchar_t * string,
float addition )

Set the label (wide chars) and adjust the button width by addition units.

Parameters
stringWide label text.
additionExtra width to add after sizing to the text.

◆ setToggle()

virtual void Skylicht::UI::CUIButton::setToggle ( bool b,
bool invokeEvent = true )
virtual

Set the toggle state programmatically.

Parameters
bNew toggle state (true = on).
invokeEventIf true, OnToggle will be invoked; otherwise it will not.

◆ setToggleButton()

void Skylicht::UI::CUIButton::setToggleButton ( bool b)
inline

Enable or disable toggle mode for this button.

Parameters
btrue to make the button a toggle (stateful), false for momentary button.

Member Data Documentation

◆ OnToggle

std::function<void(CUIBase*, bool)> Skylicht::UI::CUIButton::OnToggle

Callback invoked when the button toggle state changes.

Parameters
senderPointer to the button (CUIBase* / CUIButton* castable).
toggledNew toggle state (true if toggled on).

The documentation for this class was generated from the following file: