Game of Ur 0.3.3
This is a computer adaptation of Game of Ur, written in C++ mainly using SDL and OpenGL.
|
The aspect responsible for conducting raycasts and calling pointer event callbacks on eligible objects. More...
#include <query_click.hpp>
Public Member Functions | |
std::shared_ptr< BaseSimObjectAspect > | clone () const override |
Creates a new query click aspect using this one as its blueprint. | |
![]() | |
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. | |
![]() | |
~IUsePointer ()=default | |
Virtual IUsePointer destructor, so that subclasses can use their own. | |
Static Public Member Functions | |
static std::string | getSimObjectAspectTypeName () |
Gets the aspect type string associated with this class. | |
static std::shared_ptr< BaseSimObjectAspect > | create (const nlohmann::json &jsonAspectProperties) |
Creates a query click object based on its description in JSON. | |
Protected Member Functions | |
bool | onPointerMove (const ToyMaker::ActionData &actionData, const ToyMaker::ActionDefinition &actionDefinition) |
Method responsible for calling hover callbacks when a pointer move event is received. | |
bool | onLeftClick (const ToyMaker::ActionData &actionData, const ToyMaker::ActionDefinition &actionDefinition) |
Method responsible for calling left mouse button press callbacks on eligible objects when a pointer click event is received. | |
bool | onLeftRelease (const ToyMaker::ActionData &actionData, const ToyMaker::ActionDefinition &actionDefinition) |
Method responsible for calling left mouse button release callbacks on eligible objects when a pointer button release event is received. | |
![]() | |
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. | |
![]() | |
bool | leftClickOn (ILeftClickable &clickable, glm::vec4 clickLocation) |
Calls the left mouse button press (or equivalent) callback on an object. | |
bool | leftReleaseOn (ILeftClickable &clickable, glm::vec4 clickLocation) |
Calls the left mouse button release (or equivalent) callback on an object. | |
bool | pointerEnter (IHoverable &hoverable, glm::vec4 hoverLocation) |
Callback for when a pointer enters a region containing an object. | |
bool | pointerLeave (IHoverable &hoverable) |
Callback for when a pointer leaves a region containing an object. | |
Protected Attributes | |
std::weak_ptr< ToyMaker::FixedActionBinding > | handlerPointerMove |
The binding connecting the pointer move action to its handler method on this object. | |
std::weak_ptr< ToyMaker::FixedActionBinding > | handlerLeftClick |
The binding connecting the pointer left click action to its handler method on this object. | |
std::weak_ptr< ToyMaker::FixedActionBinding > | handlerLeftRelease |
The binding connecting the pointer left release action to its handler method on this object. | |
Private Member Functions | |
QueryClick () | |
Constructs a new Query Click aspect. | |
ToyMaker::Ray | rayFromClickCoordinates (glm::vec2 clickCoordinates) |
Converts the location of a pointer event from its normalized viewport coordinates to a camera relative ray into the scene. | |
Private Attributes | |
std::vector< std::shared_ptr< ToyMaker::SceneNodeCore > > | mPreviousQueryResults {} |
A list of results from previous pointer queries. | |
Additional Inherited Members | |
![]() | |
template<typename TSimObjectAspectDerived> | |
static void | registerAspect () |
Registers an implementation of an aspect with the SimSystem. | |
The aspect responsible for conducting raycasts and calling pointer event callbacks on eligible objects.
It has access to object click callbacks through its IUsePointer interface.
Should be attached to a SimObject which is a part of the CameraSystem.
Its appearance in JSON is as follows:
|
overridevirtual |
Creates a new query click aspect using this one as its blueprint.
Implements ToyMaker::BaseSimObjectAspect.
|
static |
Creates a query click object based on its description in JSON.
jsonAspectProperties | The json description of this aspect. |
|
inlinestatic |
Gets the aspect type string associated with this class.
|
protected |
Method responsible for calling left mouse button press callbacks on eligible objects when a pointer click event is received.
actionData | The location of the pointer click. |
actionDefinition | The definition of the pointer click action. |
true | The action was handled by an object supporting the click callback. |
false | The action was not handled by any object. |
|
protected |
Method responsible for calling left mouse button release callbacks on eligible objects when a pointer button release event is received.
actionData | The location of the pointer button release event. |
actionDefinition | The definition of the pointer button release action. |
true | The pointer button release action was handled by an objects supporting the appropriate callback. |
false | The pointer button release action was not handledy by any object. |
|
protected |
Method responsible for calling hover callbacks when a pointer move event is received.
actionData | Pointer move event data. |
actionDefinition | Pointer move event definition. |
true | The pointer move event was handled by an object handling hover events. |
false | The pointer move event wasn't handled by any object. |
|
private |
Converts the location of a pointer event from its normalized viewport coordinates to a camera relative ray into the scene.
clickCoordinates | The normalized coordinates of the pointer relative to this aspect's camera's viewport. |
|
protected |
The binding connecting the pointer left click action to its handler method on this object.
|
protected |
The binding connecting the pointer left release action to its handler method on this object.
|
protected |
The binding connecting the pointer move action to its handler method on this object.
|
private |
A list of results from previous pointer queries.
Used in order to compare results from the two most recent frames, to determine whether or not hover events should be fired this frame.