Game of Ur 0.3.3
This is a computer adaptation of Game of Ur, written in C++ mainly using SDL and OpenGL.
Loading...
Searching...
No Matches
query_click.hpp
Go to the documentation of this file.
1
10
11#ifndef ZOAPPQUERYCLICK_H
12#define ZOAPPQUERYCLICK_H
13
14#include "toymaker/camera_system.hpp"
15#include "toymaker/sim_system.hpp"
16#include "toymaker/input_system/input_system.hpp"
17
19
37class QueryClick: public ToyMaker::SimObjectAspect<QueryClick>, public IUsePointer {
38public:
39
45 inline static std::string getSimObjectAspectTypeName() { return "QueryClick"; }
46
52 std::shared_ptr<BaseSimObjectAspect> clone() const override;
53
60 static std::shared_ptr<BaseSimObjectAspect> create(const nlohmann::json& jsonAspectProperties);
61
62protected:
63
72 bool onPointerMove(const ToyMaker::ActionData& actionData, const ToyMaker::ActionDefinition& actionDefinition);
73
82 bool onLeftClick(const ToyMaker::ActionData& actionData, const ToyMaker::ActionDefinition& actionDefinition);
83
92 bool onLeftRelease(const ToyMaker::ActionData& actionData, const ToyMaker::ActionDefinition& actionDefinition);
93
98 std::weak_ptr<ToyMaker::FixedActionBinding> handlerPointerMove {
100 "UI",
101 "PointerMove",
102 [this](const ToyMaker::ActionData& actionData, const ToyMaker::ActionDefinition& actionDefinition) {
103 return this->onPointerMove(actionData, actionDefinition);
104 }
105 )
106 };
107
112 std::weak_ptr<ToyMaker::FixedActionBinding> handlerLeftClick {
114 "UI",
115 "Tap",
116 [this](const ToyMaker::ActionData& actionData, const ToyMaker::ActionDefinition& actionDefinition) {
117 return this->onLeftClick(actionData, actionDefinition);
118 }
119 )
120 };
121
126 std::weak_ptr<ToyMaker::FixedActionBinding> handlerLeftRelease {
128 "UI",
129 "Untap",
130 [this](const ToyMaker::ActionData& actionData, const ToyMaker::ActionDefinition& actionDefinition) {
131 return this->onLeftRelease(actionData, actionDefinition);
132 }
133 )
134 };
135
136private:
141 QueryClick(): SimObjectAspect<QueryClick>{0} {}
142
149 ToyMaker::Ray rayFromClickCoordinates(glm::vec2 clickCoordinates);
150
159 std::vector<std::shared_ptr<ToyMaker::SceneNodeCore>> mPreviousQueryResults {};
160};
161
162#endif
The interface used by aspects, objects, which cast pointer rays to interact with objects present in t...
Definition interface_pointer_callback.hpp:35
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 c...
Definition query_click.cpp:65
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...
Definition query_click.cpp:100
QueryClick()
Constructs a new Query Click aspect.
Definition query_click.hpp:141
std::vector< std::shared_ptr< ToyMaker::SceneNodeCore > > mPreviousQueryResults
A list of results from previous pointer queries.
Definition query_click.hpp:159
std::weak_ptr< ToyMaker::FixedActionBinding > handlerLeftClick
The binding connecting the pointer left click action to its handler method on this object.
Definition query_click.hpp:112
bool onPointerMove(const ToyMaker::ActionData &actionData, const ToyMaker::ActionDefinition &actionDefinition)
Method responsible for calling hover callbacks when a pointer move event is received.
Definition query_click.cpp:134
static std::string getSimObjectAspectTypeName()
Gets the aspect type string associated with this class.
Definition query_click.hpp:45
static std::shared_ptr< BaseSimObjectAspect > create(const nlohmann::json &jsonAspectProperties)
Creates a query click object based on its description in JSON.
Definition query_click.cpp:60
std::shared_ptr< BaseSimObjectAspect > clone() const override
Creates a new query click aspect using this one as its blueprint.
Definition query_click.cpp:56
ToyMaker::Ray rayFromClickCoordinates(glm::vec2 clickCoordinates)
Converts the location of a pointer event from its normalized viewport coordinates to a camera relativ...
Definition query_click.cpp:8
std::weak_ptr< ToyMaker::FixedActionBinding > handlerPointerMove
The binding connecting the pointer move action to its handler method on this object.
Definition query_click.hpp:98
std::weak_ptr< ToyMaker::FixedActionBinding > handlerLeftRelease
The binding connecting the pointer left release action to its handler method on this object.
Definition query_click.hpp:126
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...
Definition sim_system.cpp:219
An object containing closely related methods and data, and exposing object lifecycle and application ...
Definition sim_system.hpp:956
Contains classes that serve as interfaces for sim objects that wish to respond to click events.
The definition of a single action, including whether it represents state or change,...
Definition input_data.hpp:511
A union that may contain any one of SimpleActionData, OneAxisActionData, TwoAxisActionData,...
Definition input_data.hpp:721