|
ToyMaker Game Engine 0.0.2
ToyMaker is a game engine developed and maintained by Zoheb Shujauddin.
|
The base class for all aspects, providing an interface to its attached SimObject, and consequently, the engine's SceneSystem. More...
#include <sim_system.hpp>
Public Member Functions | |
| 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). | |
Public Member Functions inherited from ToyMaker::SignalTracker | |
| 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. | |
Protected Member Functions | |
| 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. | |
| virtual std::string | getAspectTypeName () const =0 |
| Overridable function for fetching the aspect type string of an aspect. | |
Static Protected Member Functions | |
| template<typename TSimObjectAspectDerived> | |
| static void | registerAspect () |
| Registers an implementation of an aspect with the SimSystem. | |
Private Types | |
| enum | AspectState : uint8_t { ATTACHED =1 , ACTIVE =2 } |
| Enum for mask values representing the readiness of an aspect. | |
Private Member Functions | |
| void | activateFixedActionBindings () |
| Called when an aspect has just been activated to bind its handler method to its associated action. | |
| void | deactivateFixedActionBindings () |
| Called when an aspect's SimObject has been deactivated, retiring all currently active action bindings. | |
| void | onAttached_ () |
| void | onDetached_ () |
| void | onActivated_ () |
| void | onDeactivated_ () |
| virtual void | onAttached () |
| Callback for when an aspect has just been attached to an object (but which hasn't yet been activated). | |
| virtual void | onDetached () |
| Callback for when an aspect is about to be removed from an object (after it has been deactivated). | |
| virtual void | onActivated () |
| Callback for when the aspect is activated (after it is attached to an active SimObject, or if the SimObject it was attached to has just been activated) | |
| virtual void | onDeactivated () |
| Callback for when the aspect is deactivated (just prior to being detached, or when its SimObject has been deactivated). | |
| bool | isAttached () |
| Tests whether this aspect is attached to a SimObject. | |
| bool | isActive () |
| Tests whether the SimObject this aspect is attached to is active on the SceneSystem and the SimSystem. | |
| void | attach (SimObject *owner) |
| Causes this aspect to be detached from its previous owner and to be attached to a new one. | |
| void | detach () |
| Causes this aspect to be disconnected from its current SimObject. | |
| virtual std::shared_ptr< BaseSimObjectAspect > | clone () const =0 |
| A method which must be overridden to specify how a new aspect should be constructed as a copy of this one. | |
Private Attributes | |
| std::map< std::pair< std::string, std::string >, std::shared_ptr< FixedActionBinding >, std::less< std::pair< std::string, std::string > > > | mFixedActionBindings {} |
| The set of action bindings owned by this aspect. | |
| SimObject * | mSimObject { nullptr } |
| The SimObject underlying this aspect. | |
| uint8_t | mState { 0x0 } |
| Value representing the readiness of this aspect. | |
Friends | |
| class | SimObject |
The base class for all aspects, providing an interface to its attached SimObject, and consequently, the engine's SceneSystem.
|
protected |
Adds a new aspect to the underlying SimObject copied from an already existing aspect.
| aspect | The aspect being copied. |
|
protected |
Adds a new aspect to the underlying SimObject constructed based on its properties in JSON.
| jsonAspectProperties | The properties of the aspect in JSON. |
|
protected |
Adds a component of some type to the underlying entity.
| TComponent | The type of component being added. |
| component | The value of the component when it is added. |
|
protected |
Adds or replaces an aspect on the underlying SimObject with a new aspect constructed as a copy of another.
| aspect | The aspect being copied. |
|
protected |
Adds or replaces an aspect on the underlying SimObject with a new aspect constructed from its JSON description.
| jsonAspectProperties | The JSON description of the aspect, including its type and value. |
|
private |
Causes this aspect to be detached from its previous owner and to be attached to a new one.
| owner | The new owner of this aspect. |
|
privatepure virtual |
A method which must be overridden to specify how a new aspect should be constructed as a copy of this one.
Implemented in ToyMaker::QueryClick, ToyMaker::RenderDebugViewer, ToyMaker::UIButton, ToyMaker::UIImage, ToyMaker::UIPanel, and ToyMaker::UIText.
|
protected |
Binds some method (or any function) present on this object to an action generated by the InputManager.
| context | The name of the context of the bound action. |
| action | The name of the action itself. |
|
protected |
Gets an aspect of a particular type belonging to the underlying SimObject.
| TSimObjectAspect | The type of the aspect being retrieved. |
|
protected |
Gets (a base class reference to) an aspect of a particular type belonging to the underlying SimObject.
| aspectType | The aspect type name of the aspect being retrieved. |
|
protectedpure virtual |
Overridable function for fetching the aspect type string of an aspect.
Implemented in ToyMaker::SimObjectAspect< TSimObjectAspectDerived >, ToyMaker::SimObjectAspect< QueryClick >, ToyMaker::SimObjectAspect< RenderDebugViewer >, ToyMaker::SimObjectAspect< UIButton >, ToyMaker::SimObjectAspect< UIImage >, ToyMaker::SimObjectAspect< UIPanel >, and ToyMaker::SimObjectAspect< UIText >.
|
protected |
Gets the value of a component belonging to this object.
| TComponent | The type of component being retrieved. |
| simulationProgress | The progress towards the next simulation step after the previous one represented as a value between 0 and 1. |
|
protected |
| ViewportNode & BaseSimObjectAspect::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).
|
protected |
Returns the sim object that this aspect is attached to.
|
protected |
|
finaloverridevirtual |
Pipes an action received from the InputManager via our SimObject to all that action's handler methods on this aspect.
| actionData | The data describing the action event. |
| actionDefinition | The definition of the action event. |
| true | The action was handled by this aspect; |
| false | The action was not handled by this aspect; |
Reimplemented from ToyMaker::IActionHandler.
|
protected |
Tests whether an aspect of a particular type is attached to the underlying SimObject.
| TSimObjectAspect | The type of aspect whose existence is being tested. |
| true | An aspect of the specified type exists; |
| false | No aspect of the type specified exists; |
|
protected |
Tests whether an aspect of a particular type is attached to the underlying SimObject.
| aspectType | The aspect type name of the aspect. |
| true | An aspect of this type exists; |
| false | No aspect of this type exists; |
|
protected |
Tests whether a component of some specific type is present on the object.
| TComponent | The type of component whose existence is being tested. |
| true | The component exists; |
| false | The component does not exist; |
|
inlineprivate |
|
inlineprivate |
|
inlineprivatevirtual |
Callback for when the aspect is activated (after it is attached to an active SimObject, or if the SimObject it was attached to has just been activated)
Reimplemented in ToyMaker::UIButton, ToyMaker::UIImage, ToyMaker::UIPanel, and ToyMaker::UIText.
|
inlinestaticprotected |
Registers an implementation of an aspect with the SimSystem.
This gives the sim system a pointer to the function responsible for the construction of an aspect, allowing the aspect to be constructed by its description in a JSON scene file.
| TSimObjectAspectDerived | The derived aspect's type. |
|
protected |
Removes an aspect from the underlying SimObject.
| TSimObjectAspect | The type of the aspect being removed. |
|
protected |
Removes a component of some type belonging to the underlying SimObject.
| TComponent | The type of component being removed. |
|
inlinevirtual |
Overriding this allows an aspect to respond to simulation updates.
| simStepMillis | The time by which the simulation should be advanced, in milliseconds. |
|
protected |
Updates the value of a component belonging to this object to a new one.
| TComponent | The type of component being updated. |
| component | The new value of the component. |
|
inlinevirtual |
Overriding this allows an aspect to respond to variable updates.
| variableStepMillis | The time since the execution of the last frame, in milliseconds. |
|
private |
The set of action bindings owned by this aspect.
|
private |
Value representing the readiness of this aspect.