A UI component class for creating simple buttons comprised of a resizable panel and some text.
More...
|
std::shared_ptr< BaseSimObjectAspect > | clone () const override |
| Creates an instance of the aspect using this this aspect as its blueprint.
|
|
void | onActivated () override |
| Sets the state of this button and computes its texture on becoming an active part of the scene.
|
|
void | enableButton () |
| Enables the button so that it will respond to pointer events.
|
|
void | disableButton () |
| Disables this button, preventing it from responding to pointer events.
|
|
void | updateText (const std::string &newText) |
| Updates the text displayed within the button.
|
|
void | updateTextScale (float scale) |
| Updates the scale of the text in this button.
|
|
void | updateTextFont (const std::string &textResourceName) |
| Updates the font used to generate the text texture used by this button.
|
|
void | updateTextColor (glm::u8vec4 textColor) |
| Updates the color of the text rendered by TextFont.
|
|
void | updateButtonAnchor (glm::vec2 newAnchor) |
| Updates the point on the button StaticModel considered its anchor, where (0, 0) is the top left corner, and (1, 1) is the bottom right corner.
|
|
void | updateHighlightColor (glm::vec4 newColor) |
| The color applied to this object's "highlight" texture.
|
|
virtual | ~BaseSimObjectAspect ()=default |
| Destroys this object.
|
|
virtual void | simulationUpdate (uint32_t simStepMillis) |
| Overriding this allows an aspect to respond to simulation updates.
|
|
virtual void | variableUpdate (uint32_t variableStepMillis) |
| Overriding this allows an aspect to respond to variable updates.
|
|
bool | handleAction (const ActionData &actionData, const ActionDefinition &actionDefinition) override final |
| Pipes an action received from the InputManager via our SimObject to all that action's handler methods on this aspect.
|
|
ViewportNode & | getLocalViewport () |
| Returns the closest ancestor viewport to this node, if one exists (which it should, since this shouldn't be called until this aspect is attached to an active SimObject).
|
|
| SignalTracker () |
| Constructs a new SignalTracker object.
|
|
| SignalTracker (const SignalTracker &other) |
| Constructs a new SignalTracker.
|
|
SignalTracker & | operator= (const SignalTracker &other) |
| Copy assignment operator.
|
|
| SignalTracker (SignalTracker &&other) |
| Moves resources from another SignalTracker into this one, invalidating them from the other.
|
|
SignalTracker & | operator= (SignalTracker &&other) |
| Moves resources from another SignalTracker into this one, destroying this tracker's resources in the process.
|
|
void | connect (const std::string &theirSignal, const std::string &ourObserver, SignalTracker &other) |
| Method that connects one of this objects SignalObservers to another tracker's Signal.
|
|
|
State | mCurrentState { State::ACTIVE } |
| The current state of this button.
|
|
bool | mHovered { false } |
| Whether this button is being hovered over presently.
|
|
std::array< std::shared_ptr< NineSlicePanel >, State::TOTAL > | mStatePanels {} |
| The panel textures associated with the different states of this button.
|
|
glm::vec2 | mAnchor {.5f, .5f} |
| The anchor of the button, considered the StaticModel component's "origin".
|
|
std::string | mValue {""} |
| The value emitted by this button when it has been pressed-and-released.
|
|
std::string | mTextOverride {""} |
| The text rendered on this button.
|
|
float | mTextScaleOverride {1.f} |
| The scale of the rendered text used with this button.
|
|
std::string | mTextFontOverride {""} |
| The name of the font resource used to render this button's text.
|
|
glm::u8vec4 | mTextColorOverride { 0x00, 0x00, 0x00, 0xFF } |
| The color value with which this button's text is rendered.
|
|
std::shared_ptr< NineSlicePanel > | mHighlightPanel {} |
| The texture used on this object's child object, which acts as an overlay to this button.
|
|
glm::vec4 | mHighlightColor {0.f, 0.f, 0.f, 0.f} |
| The colour which the highlight object will be rendered with.
|
|
|
| SimObjectAspect (int explicitlyInitializeMe) |
|
| BaseSimObjectAspect (const BaseSimObjectAspect &other)=delete |
|
| BaseSimObjectAspect (BaseSimObjectAspect &&other)=delete |
|
SimObject & | getSimObject () |
| Returns the sim object that this aspect is attached to.
|
|
template<typename TComponent> |
void | addComponent (const TComponent &component) |
| Adds a component of some type to the underlying entity.
|
|
template<typename TComponent> |
bool | hasComponent () |
| Tests whether a component of some specific type is present on the object.
|
|
template<typename TComponent> |
void | updateComponent (const TComponent &component) |
| Updates the value of a component belonging to this object to a new one.
|
|
template<typename TComponent> |
TComponent | getComponent (const float simulationProgress=1.f) const |
| Gets the value of a component belonging to this object.
|
|
template<typename TComponent> |
void | removeComponent () |
| Removes a component of some type belonging to the underlying SimObject.
|
|
void | addAspect (const nlohmann::json &jsonAspectProperties) |
| Adds a new aspect to the underlying SimObject constructed based on its properties in JSON.
|
|
void | addAspect (const BaseSimObjectAspect &aspect) |
| Adds a new aspect to the underlying SimObject copied from an already existing aspect.
|
|
template<typename TSimObjectAspect> |
bool | hasAspect () const |
| Tests whether an aspect of a particular type is attached to the underlying SimObject.
|
|
bool | hasAspect (const std::string &aspectType) const |
| Tests whether an aspect of a particular type is attached to the underlying SimObject.
|
|
template<typename TSimObjectAspect> |
TSimObjectAspect & | getAspect () |
| Gets an aspect of a particular type belonging to the underlying SimObject.
|
|
BaseSimObjectAspect & | getAspect (const std::string &aspectType) |
| Gets (a base class reference to) an aspect of a particular type belonging to the underlying SimObject.
|
|
template<typename TSimObjectAspect> |
void | removeAspect () |
| Removes an aspect from the underlying SimObject.
|
|
void | addOrReplaceAspect (const BaseSimObjectAspect &aspect) |
| Adds or replaces an aspect on the underlying SimObject with a new aspect constructed as a copy of another.
|
|
void | addOrReplaceAspect (const nlohmann::json &jsonAspectProperties) |
| Adds or replaces an aspect on the underlying SimObject with a new aspect constructed from its JSON description.
|
|
std::weak_ptr< FixedActionBinding > | declareFixedActionBinding (const std::string &context, const std::string &action, std::function< bool(const ActionData &, const ActionDefinition &)>) |
| Binds some method (or any function) present on this object to an action generated by the InputManager.
|
|
EntityID | getEntityID () const |
| Gets the ID of the ECSWorld Entity belonging to our SimObject.
|
|
std::weak_ptr< ECSWorld > | getWorld () const |
| Gets a weak reference to the ECSWorld to which our SimObject's entity belongs.
|
|
template<typename TSimObjectAspectDerived> |
static void | registerAspect () |
| Registers an implementation of an aspect with the SimSystem.
|
|
A UI component class for creating simple buttons comprised of a resizable panel and some text.
May optionally also have a "highlight" texture configured to overlay over a button in order to represent special application defined states.
Upon receiving a pointer left button event from an implementer of ILeftClickable, emits a "ButtonPressed" or "ButtonReleased" event containing the value configured for the button.
Usage
Its appearance in JSON may be as follows:
{
"name": "Ur_Button",
"parent": "/viewport_UI/",
"type": "Scene",
"copy": true,
"overrides": {
"name": "return",
"components": [
{
"type": "Placement",
"orientation": [ 1.0, 0.0, 0.0, 0.0 ],
"position": [ -683.0, -384.0, 0.0, 1.0 ],
"scale": [ 1.0, 1.0, 1.0 ]
}
],
"aspects": [
{
"type": "UIButton",
"text": "<- Main Menu",
"font_resource_name": "Roboto_Mono_Regular_24",
"color": [255, 255, 255, 255],
"scale": 1.0,
"anchor": [0.0, 1.0],
"value": "Game_Of_Ur_Main_Menu",
"panel_active": "Bad_Button_Active_Panel",
"panel_inactive": "Bad_Button_Inactive_Panel",
"panel_hover": "Bad_Button_Hover_Panel",
"panel_pressed": "Bad_Button_Pressed_Panel",
"has_highlight": false
}
]
}
},
To connect with, for example, the "ButtonReleased" event for this button, write this in the connections section of the appropriate scene file.
{
"from": "/viewport_UI/return/@UIButton",
"signal": "ButtonReleased",
"to": "/@UrUINavigation",
"observer": "ButtonClickedObserved"
}
... where "/@UrUINavigation"
is the path to the aspect of the SimObject responsible for handling this signal, and "ButtonClickedObserved" is the name of its SignalObserver.
The button may also be enabled or disabled by calling UIButton::enableButton() or UIButton::disableButton().