A layer for drawable entities. More...
#include <RenderLayer.h>
Public Types | |
using | Ptr = std::shared_ptr< RenderLayer > |
Shared render layer pointer. More... | |
Public Member Functions | |
RenderLayer (const RenderLayer &)=delete | |
Copy constructor. More... | |
RenderLayer & | operator= (const RenderLayer &)=delete |
Copy assignment operator. More... | |
RenderLayer (RenderLayer &&) noexcept=default | |
Move constructor. More... | |
RenderLayer & | operator= (RenderLayer &&) noexcept=default |
Move assignment operator. More... | |
std::string | getClassName () const override |
Get the name of this class. More... | |
void | setDrawable (bool render) |
Set whether or not the layer should be drawn by the scene. More... | |
bool | isDrawable () const |
Check whether or not the layer is drawn by the scene. More... | |
void | toggleDrawable () |
Toggle the draw state of the layer. More... | |
unsigned int | getIndex () const |
Get the index of the layer in the RenderLayerContainer. More... | |
void | add (const Drawable &drawable, int renderOrder=0) |
Add a drawable to the layer. More... | |
bool | has (const Drawable &drawable) const |
Check if the render layer has a given drawable or not. More... | |
bool | remove (const Drawable &drawable) |
Remove a drawable from the render layer. More... | |
void | removeAll () |
Remove all drawables from the render layer. More... | |
std::size_t | getCount () const |
Get the number of drawables rendered by the layer. More... | |
void | render (Window &window) const |
~RenderLayer () override | |
Destructor. More... | |
void | setTag (const std::string &tag) |
Assign the object an alias. More... | |
const std::string & | getTag () const |
Get the alias of the object. More... | |
unsigned int | getObjectId () const |
Get the id of the object. 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) |
Add an event listener to a specific property change event. More... | |
void | onPropertyChange (const Callback< Property > &callback) |
Add an event listener to a property change event. More... | |
int | onEvent (const std::string &event, const Callback<> &callback) |
Add an event listener to an event. More... | |
bool | unsubscribe (const std::string &event, int id) |
Remove an event listener from an event. More... | |
int | onDestruction (const Callback<> &callback) |
Add a destruction listener. More... | |
bool | removeDestructionListener (int id) |
Remove a destruction listener form the object. More... | |
bool | operator== (const Object &rhs) const |
Check if two objects are the same object or not. More... | |
bool | operator!= (const Object &rhs) const |
Check if two objects are not the same object. More... | |
Protected Member Functions | |
void | emitChange (const Property &property) |
Dispatch a property change event. More... | |
void | emit (const std::string &event) |
Dispatch an action event. More... | |
Friends | |
class | RenderLayerContainer |
Needs access to constructor. More... | |
A layer for drawable entities.
Typically you add objects that should be drawn together to the same layer. The order in which render layers are rendered is specified in the RenderLayerContainer. Objects in the same layer can also be sorted. For example, you may have a background layer which has mountains, trees and valleys. However you don't want the objects to be drawn non-deterministically. You can specify which objects are drawn over which and which objects are drawn under which by specifying the render order of the object when adding it to the layer. Objects with the lowest render order are drawn first whilst objects with the highest render order are drawn last. When objects have the same render order, the object that was added first to the layer will be rendered first.
By default, all objects have the same render order, as a result, they are drawn in the order in which they were added to the layer
A layer is not instantiated directly but rather using a RenderLayerContainer
Definition at line 60 of file RenderLayer.h.
using ime::RenderLayer::Ptr = std::shared_ptr<RenderLayer> |
Shared render layer pointer.
Definition at line 62 of file RenderLayer.h.
|
delete |
Copy constructor.
|
defaultnoexcept |
Move constructor.
|
override |
Destructor.
void ime::RenderLayer::add | ( | const Drawable & | drawable, |
int | renderOrder = 0 |
||
) |
Add a drawable to the layer.
drawable | The drawable to be added |
renderOrder | The layer level render order of the drawable |
The render order determines which game objects get rendered first and which game objects get rendered last in the layer. Therefore the order in which drawables are added to the layer does not necessarily matter. Drawables with the smallest render order are be rendered first. Note that multiple drawables can have the same render order, in such a case the drawables will be drawn in the order in which they were added to the layer
By default, all drawables have the same render order of 0
|
protectedinherited |
Dispatch an action event.
event | The name of the event to be dispatched |
This function will invoke all event listeners of the specified event. The function should be used for events that represent an action, rather than those that represent a property change (Use emitChange for that)
|
protectedinherited |
Dispatch a property change event.
property | The property that changed |
This function will invoke all the event listeners of the specified property
|
overridevirtual |
|
virtualinherited |
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 Object which also serve as base classes for other Objects. For classes whose direct parent is this class, this function will return the name of this class
Reimplemented in ime::SpriteImage, ime::Shape, ime::Drawable, ime::GridMover, ime::Joint, ime::Collider, and ime::GameObject.
std::size_t ime::RenderLayer::getCount | ( | ) | const |
Get the number of drawables rendered by the layer.
unsigned int ime::RenderLayer::getIndex | ( | ) | const |
Get the index of the layer in the RenderLayerContainer.
The index indicates the render order of the layer. The bigger the index the further away the layer is from the foreground. The layer with the an index of 0 is always the foreground layer and all other layers are rendered behind it
|
inherited |
Get the id of the object.
Each object has a unique id
|
inherited |
bool ime::RenderLayer::has | ( | const Drawable & | drawable | ) | const |
Check if the render layer has a given drawable or not.
drawable | The drawable to be checked |
When a render layer "has" a drawable, it means that the drawable is rendered by that layer to the render window
bool ime::RenderLayer::isDrawable | ( | ) | const |
Check whether or not the layer is drawn by the scene.
|
inherited |
Add a destruction listener.
callback | Function to be executed when the object is destroyed |
Note that an object may have more than one destruction listeners, however, you have to keep the returned id if you may want to remove the callback at a later time
|
inherited |
Add an event listener to an event.
event | The name of the event to add an an event listener to |
callback | The function to be executed when the event takes place |
Unlike onPropertyChange, this function registers event listeners to events that occur when something happens to the object, or when the object does something (action events). Usually the name of the event/action is the name of the function:
Add an event listener to a property change event.
callback | The function to be executed when the property changes |
Note that only one callback function may be registered with this function. This means that adding a new event listener overwrites the previous event listener. To remove the callback, pass a nullptr as an argument. The function may be useful if you want to write the logic for property changes in one function.
|
inherited |
Add an event listener to a specific property change event.
property | The name of the property to listen for |
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, for the setTag function, the property that the function modifies is Tag.
Note that when adding a property change event listener, the name of the property must be in lowercase:
Unlike onPropertyChange(const Callback&) you can add multiple event listeners to the same property using this function. However you must store the unique id of the event listener if you wish to remove it at a later time
|
inherited |
Check if two objects are not the same object.
rhs | Object to compare against this object |
Two objects are different from each other if they have different object id's
|
delete |
Copy assignment operator.
|
defaultnoexcept |
Move assignment operator.
|
inherited |
Check if two objects are the same object or not.
rhs | Object to compare against this object |
Two objects are the same object if they have the same object id. Recall that each object instance has a unique id
bool ime::RenderLayer::remove | ( | const Drawable & | drawable | ) |
Remove a drawable from the render layer.
drawable | The drawable to be removed |
When a drawable is removed from the render layer, it will no longer be rendered by the scene, hence it won't appear on the game window
void ime::RenderLayer::removeAll | ( | ) |
Remove all drawables from the render layer.
|
inherited |
Remove a destruction listener form the object.
The | id of the destruction listener to be removed |
void ime::RenderLayer::setDrawable | ( | bool | render | ) |
Set whether or not the layer should be drawn by the scene.
render | True to have the layer drawn by the scene otherwise false |
By default the layer is drawable
|
inherited |
Assign the object an alias.
name | The alias of the object |
This function is useful if you want to refer to the object by tag instead of its id. Unlike an object id, multiple objects may have the same tag.
By default, the tag is an empty string
void ime::RenderLayer::toggleDrawable | ( | ) |
Toggle the draw state of the layer.
This function will set the layer to drawable if its currently not drawable and vice versa
|
inherited |
Remove an event listener from an event.
event | The name of the event to remove event listener from |
id | The unique id of the event listener to be removed |
|
friend |
Needs access to constructor.
Definition at line 215 of file RenderLayer.h.