An abstract top-level base class for IME objects. More...
#include <Object.h>
Public Types | |
using | Ptr = std::unique_ptr< Object > |
Unique object pointer. More... | |
Public Member Functions | |
Object () | |
Default constructor. More... | |
Object (const Object &) | |
Copy constructor. More... | |
Object & | operator= (const Object &) |
Copy assignment operator. More... | |
Object (Object &&) noexcept=default | |
Move constructor. More... | |
Object & | operator= (Object &&) noexcept=default |
Move assignment operator. More... | |
void | setTag (const std::string &tag) |
Assign the object an alias. More... | |
const std::string & | getTag () const |
Get the tag assigned to the object. More... | |
unsigned int | getObjectId () const |
Get the unique id of the object. More... | |
virtual std::string | getClassName () const =0 |
Get the name of the objects concrete class. More... | |
virtual std::string | getClassType () const |
Get the name of the direct parent of an object instance. More... | |
int | onPropertyChange (const std::string &property, const Callback< Property > &callback, bool oneTime=false) |
Add an event listener to a specific property change event. More... | |
int | onPropertyChange (const Callback< Property > &callback, bool oneTime=false) |
Add an event listener to any property change event. More... | |
void | suspendedEventListener (int id, bool suspend) |
Pause or resume execution of an event listener. More... | |
bool | isEventListenerSuspended (int id) const |
Check if an event listener is suspended or not. More... | |
bool | removeEventListener (const std::string &event, int id) |
Remove an event listener from an event. More... | |
bool | removeEventListener (int id) |
Remove an event listener. More... | |
int | onDestruction (const Callback<> &callback) |
Add a destruction listener. More... | |
bool | isSameObjectAs (const Object &other) const |
Check if another object is the same instance as this object. More... | |
virtual | ~Object () |
Destructor. More... | |
Protected Member Functions | |
void | emitChange (const Property &property) |
Dispatch a property change event. More... | |
void | emitDestruction () |
Emit a destruction event. More... | |
Protected Attributes | |
EventEmitter | eventEmitter_ |
Event dispatcher. More... | |
An abstract top-level base class for IME objects.
This class is intended to group all IME objects under a common ancestor.
However, not all classes in IME inherited from it. The extension of ime::Object is not restricted to internal classes only, classes outside of IME may also extend if need be
using ime::Object::Ptr = std::unique_ptr<Object> |
ime::Object::Object | ( | ) |
Default constructor.
ime::Object::Object | ( | const Object & | ) |
Copy constructor.
|
defaultnoexcept |
Move constructor.
|
virtual |
Destructor.
|
protected |
Dispatch a property change event.
property | The property that changed |
This function will invoke all the event listeners of the specified property
|
protected |
Emit a destruction event.
|
pure virtual |
Get the name of the objects concrete class.
This function is implemented by all internal classes that inherit from this class (either directly or indirectly). Example:
Implemented in ime::audio::Music, ime::audio::SoundEffect, ime::GameObject, ime::GridObject, ime::CyclicGridMover, ime::GridMover, ime::KeyboardGridMover, ime::RandomGridMover, ime::TargetGridMover, ime::AABB, ime::BoxCollider, ime::CircleCollider, ime::EdgeCollider, ime::PolygonCollider, ime::DistanceJoint, ime::RigidBody, ime::RenderLayer, ime::RenderLayerContainer, ime::Scene, ime::Camera, ime::CircleShape, ime::ConvexShape, ime::RectangleShape, ime::Sprite, ime::SpriteSheet, and ime::Tile.
|
virtual |
Get the name of the direct parent of an object instance.
In contrast to getClassName() which returns the name of the concrete class, this function returns the name of the concrete class's base class. This function is implemented by all derived classes of ime::Object which also serve as base classes. For classes whose direct parent is this class, this function will return the name of this class
Reimplemented in ime::audio::Audio, ime::GameObject, ime::GridMover, ime::Collider, ime::Joint, ime::Drawable, ime::Shape, and ime::SpriteImage.
unsigned int ime::Object::getObjectId | ( | ) | const |
Get the unique id of the object.
Note that each instance of ime::Object has a unique id
const std::string & ime::Object::getTag | ( | ) | const |
bool ime::Object::isEventListenerSuspended | ( | int | id | ) | const |
Check if an event listener is suspended or not.
id | The identification number of the listener to be checked |
This function also returns false if the specified event listener does not exist
bool ime::Object::isSameObjectAs | ( | const Object & | other | ) | const |
Check if another object is the same instance as this object.
other | The object to compare against this object |
int ime::Object::onDestruction | ( | const Callback<> & | callback | ) |
Add a destruction listener.
callback | Function to be executed when the object is destroyed |
The destruction listener is called when the object reaches the end of its lifetime. Note that an object may have multiple destruction listeners registered to it
Add an event listener to any property change event.
callback | The function to be executed when any property changes |
oneTime | True to execute the callback one-time or false to execute it every time the event is triggered |
When unsubscribing the any property change event handler, you must pass "propertyChange" as the name of the event
int ime::Object::onPropertyChange | ( | const std::string & | property, |
const Callback< Property > & | callback, | ||
bool | oneTime = false |
||
) |
Add an event listener to a specific property change event.
property | The name of the property to add an event listener to |
oneTime | True to execute the callback one-time or false to execute it every time the event is triggered |
callback | The function to be executed when the property changes |
A property change event is triggered by any function that begins with set, where the the text after set is the name of the property. For example, the setTag() function, modifies the tag property of the object, thus will generate a "tag" change event each time it is called
Note that multiple event listeners may be registered to the same property change event. In addition, when adding a property change event listener, the name of the property must be in lowercase.
bool ime::Object::removeEventListener | ( | const std::string & | event, |
int | id | ||
) |
Remove an event listener from an event.
event | The name of the event to remove an event listener from |
id | The unique id of the event listener to be removed |
bool ime::Object::removeEventListener | ( | int | id | ) |
Remove an event listener.
id | The id of the event listener to be removed |
void ime::Object::setTag | ( | const std::string & | tag | ) |
Assign the object an alias.
tag | The alias of the object |
This function is useful if you want to refer to the object by a tag instead of its object id. Unlike an object id, multiple objects may have the same tag
By default, the tag is an empty string
void ime::Object::suspendedEventListener | ( | int | id, |
bool | suspend | ||
) |
Pause or resume execution of an event listener.
id | The event listeners unique identification number |
suspend | True to suspend/pause or false to unsuspend/resume |
|
protected |