![]() |
Skylicht Engine
|
Base wrapper class that connects a UI container and a GUI element. More...
#include <UserInterface/CUIBase.h>
Public Member Functions | |
| 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. | |
| CGUIElement * | getElement () |
| Get the underlying CGUIElement pointer. | |
| CCanvas * | getCanvas () |
| Retrieve the canvas that the underlying element belongs to. | |
| CUIContainer * | getContainer () |
| Get parent container. | |
| core::vector3df * | getRectTransform () |
| Returns a pointer to the internal rect transform (4 corners). | |
| void | getRectTransform (CGUIElement *element, core::vector3df *t) |
| 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 | 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 | onPressed () |
| Called when the element is considered "pressed" (high-level event). Subclasses may trigger OnPressed callback from here. | |
| 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 CMotion * | addMotion (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 CMotion * | addMotion (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(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 | |
| CUIContainer * | m_container |
| CGUIElement * | m_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 |
Base wrapper class that connects a UI container and a GUI element.
CUIBase represents a UI object hosted inside a CUIContainer and backed by a CGUIElement. It manages basic UI state (enable/visible), pointer state, and motion sequences (EMotionEvent).
Typical responsibilities:
Subclasses (buttons, sliders, checkboxes, etc.) override virtual event handlers to implement control-specific behavior.
| Skylicht::UI::CUIBase::CUIBase | ( | CUIContainer * | container, |
| CGUIElement * | element ) |
Constructor.
| container | Parent container that owns this UI object. |
| element | Underlying GUI element associated with this object. |
|
inlinevirtual |
Whether this UI element should accept drag-focus when the pointer is already down and the user drags over it.
When the pointer press starts on one control and the user drags over another control, the container (CUIContainer) may call onPointerDown(...) on the hovered element if it "accepts drag focus". This lets controls like list or grid views start scrolling/ handling a drag while the pointer is still pressed.
Default behaviour returns false so only the originally pressed control receives the pointer down. Subclasses that should grab the drag interaction (e.g. CUIListView) should override this to return true.
Reimplemented in Skylicht::UI::CUIListView.
|
virtual |
Add a CMotion instance bound to a specific CGUIElement for the given event.
| event | Motion event to attach the motion to. |
| element | Element that the motion will operate on. |
| motion | Motion instance. |
| void Skylicht::UI::CUIBase::convertLocalToWorld | ( | CGUIElement * | element, |
| float & | x, | ||
| float & | y ) |
Convert local coordinates of a CGUIElement to world coordinates.
| element | Element whose local space is the source. |
| x | In/out: local X -> world X. |
| y | In/out: local Y -> world Y. |
| void Skylicht::UI::CUIBase::convertToUICoordinate | ( | float & | pointerX, |
| float & | pointerY ) |
| void Skylicht::UI::CUIBase::convertWorldToLocal | ( | CGUIElement * | element, |
| float & | x, | ||
| float & | y ) |
Convert world coordinates to the local coordinate space of a CGUIElement.
| element | Element whose local space is the target. |
| x | In/out: world X -> local X. |
| y | In/out: world Y -> local Y. |
|
inline |
Access the motion vector for a specific event.
| event | Motion event. |
|
inline |
Get the sound id associated with this UI object.
|
inline |
Retrieve the pointer previously set via setUserData.
| bool Skylicht::UI::CUIBase::isMotionPlaying | ( | EMotionEvent | event | ) |
Query whether any motion is currently playing for the given event.
| event | Motion event to query. |
|
virtual |
Called when element receives focus.
Reimplemented in Skylicht::UI::CUITextBox.
|
virtual |
Called when a keyboard event is delivered to this element.
| event | Original SEvent from the engine input system. |
Reimplemented in Skylicht::UI::CUITextBox.
|
virtual |
Called when element loses focus.
Reimplemented in Skylicht::UI::CUITextBox.
|
virtual |
Called when pointer is pressed down on the element.
| pointerId | ID of the pointer device. |
| pointerX | World X coordinate where press occurred. |
| pointerY | World Y coordinate where press occurred. |
Reimplemented in Skylicht::UI::CUIDraggable, Skylicht::UI::CUIListView, and Skylicht::UI::CUITextBox.
|
virtual |
Called when pointer enters or hovers over the element.
| pointerId | ID of the pointer device. |
| pointerX | World X coordinate of pointer. |
| pointerY | World Y coordinate of pointer. |
Reimplemented in Skylicht::UI::CUIButton, and Skylicht::UI::CUITextBox.
|
virtual |
Called when pointer moves while over or dragging the element.
| pointerId | ID of the pointer device. |
| pointerX | World X coordinate of pointer. |
| pointerY | World Y coordinate of pointer. |
Reimplemented in Skylicht::UI::CUIDraggable, Skylicht::UI::CUIListView, and Skylicht::UI::CUITextBox.
|
virtual |
Called when pointer leaves the element.
| pointerId | ID of the pointer device. |
| pointerX | World X coordinate at time of out event. |
| pointerY | World Y coordinate at time of out event. |
Reimplemented in Skylicht::UI::CUIButton, and Skylicht::UI::CUITextBox.
|
virtual |
Called when pointer is released over the element.
| pointerId | ID of the pointer device. |
| pointerX | World X coordinate where release occurred. |
| pointerY | World Y coordinate where release occurred. |
Reimplemented in Skylicht::UI::CUIDraggable, Skylicht::UI::CUIListView, and Skylicht::UI::CUITextBox.
|
virtual |
Called when the element is considered "pressed" (high-level event). Subclasses may trigger OnPressed callback from here.
Reimplemented in Skylicht::UI::CUIButton, Skylicht::UI::CUICheckbox, and Skylicht::UI::CUISwitch.
| void Skylicht::UI::CUIBase::remove | ( | ) |
| bool Skylicht::UI::CUIBase::removeMotion | ( | EMotionEvent | event, |
| CMotion * | motion ) |
Remove a motion instance from the given event list.
| event | Event list to remove from. |
| motion | Motion to remove. |
| void Skylicht::UI::CUIBase::removeMotions | ( | EMotionEvent | event | ) |
Remove all motions attached to the specified event.
| event | Event whose motions will be cleared. |
|
inline |
Control whether input events continue to the game layer.
| b | true to let events continue; false to stop propagation. |
|
virtual |
Enable or disable this UI object.
| b | true to enable, false to disable. |
|
inline |
When true pointer events will be skipped while dragging.
| b | true to skip pointer events during drag. |
|
inline |
|
inline |
Attach an application-defined pointer to this UI object.
This is a convenience for storing arbitrary user data or context related to the control. Ownership and lifetime are managed by the caller — the UI system only stores/returns the raw pointer.
| data | Pointer to user-defined data (may be nullptr). |
|
virtual |
Set visibility of this UI object.
| b | true to make visible, false to hide. |
| void Skylicht::UI::CUIBase::startMotion | ( | EMotionEvent | event | ) |
Start motions associated with a specific motion event.
| event | Motion event to start (EMotionEvent). |
| void Skylicht::UI::CUIBase::stopMotion | ( | EMotionEvent | event | ) |
Stop motions associated with a specific motion event.
| event | Motion event to stop (EMotionEvent). |