Aspen
2D C++ Class-Based Object Oriented Game Engine
|
General base class Allows for parent/child relationship trees. More...
#include <Object.hpp>
Public Member Functions | |
Object (Object *parent=nullptr, std::string name="Object") | |
Constructor Derived classes should call this in their constructors' initialization list. More... | |
virtual | ~Object () |
Destructor This will End and then delete all child Objects. | |
const Object * | Parent () const |
Gets the parent of this Object. More... | |
Object * | Parent () |
Gets the parent of this Object. More... | |
const Object * | Root () const |
Gets the root Object of the parent/child tree this Object is a part of. More... | |
Object * | Root () |
Gets the root Object of the parent/child tree this Object is a part of. More... | |
Transform::Transform * | GetTransform () |
Gets the first child Transform::Transform. More... | |
const Transform::Transform * | GetTransform () const |
Gets the first child Transform::Transform. More... | |
Physics::Collider * | GetCollider () |
Gets the first child Physics::Collider. More... | |
const Physics::Collider * | GetCollider () const |
Gets the first child Physics::Collider. More... | |
Physics::Rigidbody * | GetRigidbody () |
Gets the first child Physics::Rigidbody. More... | |
const Physics::Rigidbody * | GetRigidbody () const |
Gets the first child Physics::Rigidbody. More... | |
virtual void | operator() () |
Updates this object and all of its children Derived classes should call or reimplement this at some point in their operator() This won't run if the Object isn't Active. | |
void | AddChild (Object *child) |
Adds child to this Object's list of children This will also set child's _parent to this This will do nothing if child is already in the list of children Useful for adding an already created Object as a child or passing in the return operator new with parameters. More... | |
template<typename T > | |
T * | CreateChild () |
Creates a new child of type T Useful for creating an object with no constructor parameters and/or modifying it later. More... | |
template<typename T > | |
T * | CreateChild (std::string name) |
Creates a new child of type T Useful for creating an object with no constructor parameters and/or modifying it later. More... | |
void | RemoveChild (Object *child) |
Removes child from this Object's list of children This will also set child's _parent to nullptr This will do nothing if child is not in the Object's list of children. More... | |
void | RemoveChild (unsigned index) |
Removes the child at index from this Object's list of children This will also set the child's _parent to nullptr This will do nothing if index is out of range of the Object's list of children. More... | |
Object * | operator[] (unsigned index) |
Gets the child at index from this Object's list of children. More... | |
int | operator[] (Object *child) |
Gets the index of a given child in this Object's list of children. More... | |
Object * | GetLastChild () |
Gets the youngest child from this Object's list of children. More... | |
int | ParentCount () |
Determines the generation of this object in the parent/child tree. More... | |
template<typename T > | |
T * | FindAncestorOfType () const |
Finds the closest ancestor Object of a type applicable to that which was requested. More... | |
template<typename T > | |
const T * | FindChildOfType () const |
Finds the first child Object of a type applicable to that which was requested. More... | |
template<typename T > | |
T * | FindChildOfType () |
Finds the first child Object of a type applicable to that which was requested. More... | |
template<typename T > | |
const std::vector< T * > | FindChildrenOfType () const |
Finds all children Objects of a type applicable to that which was requested. More... | |
template<typename T > | |
std::vector< T * > | FindChildrenOfType () |
Finds all children Objects of a type applicable to that which was requested. More... | |
template<typename T > | |
const std::vector< T * > | FindDescendentsOfType () const |
Recursively finds all descendent Objects of a type applicable to that which was requested. More... | |
template<typename T > | |
std::vector< T * > | FindDescendentsOfType () |
Recursively finds all descendent Objects of a type applicable to that which was requested. More... | |
const bool & | Valid () const |
Determines if the Object is valid. More... | |
bool | Active () const |
Determines if the Object is active. More... | |
void | SetActive (bool active) |
Sets active status of the object Triggers OnActivate or OnDeactivate appropriately. More... | |
void | Activate () |
Activates the object Triggers OnActivate appropriately. | |
void | Deactivate () |
Deactivates the object Triggers OnDeactivate appropriately. | |
operator bool () const | |
Converts Object to bool by calling Valid Example: ``` Object o; while (o) o(); ```. | |
virtual void | End () |
Shuts down and invalidates Object and all of its children An invalid child Object will be deleted by their parent after they update. | |
void | PrintTree (Log::Log &log) const |
Uses Log::Log to print the parent/children tree of this Object. More... | |
void | PrintTree () const |
Uses Log::Log to print the parent/children tree of this Object Uses Log::Debug. | |
std::string | Name () const |
Gets the Object's name. More... | |
unsigned | ChildrenCount () const |
Determines the number of immediate children the Object has. More... | |
std::vector< Object * > & | Children () |
Gets the list of Objects that are children of this Object. More... | |
bool | HasAncestor (const Object *other) const |
Determines if the provided Object is an ancestor of this Object. More... | |
virtual void | PopulateDebugger () |
Fills out the Debugger if it exists with this Object's information Derived classes should call their base class's version of this method. | |
virtual void | OnStart () |
Run when the Object is created. | |
virtual void | OnActivate () |
Run when the Object is activated Run after OnStart. | |
virtual void | OnUpdate () |
Run every frame. | |
virtual void | OnEarlyUpdate () |
Run before OnUpdate. | |
virtual void | OnLateUpdate () |
Run after OnUpdate. | |
virtual void | OnDeactivate () |
Run when the Object is deactivated Run before OnEnd. | |
virtual void | OnEnd () |
Run when the Object is ended/destroyed. | |
virtual void | OnCollision (Physics::Collision c) |
Run when a collision occurs. More... | |
virtual void | OnMouseEnter () |
Run when the mouse enters the Object. | |
virtual void | OnMouseOver () |
Run while the mouse is over the Object. | |
virtual void | OnMouseExit () |
Run when the mouse leaves the Object. | |
virtual void | OnMouseClick () |
Run when the mouse is clicked while over the Object. | |
virtual void | OnMouseRelease () |
Run when the mouse is released while over the Object. | |
Protected Member Functions | |
void | SetParent (Object *parent) |
Sets _parent to the given Object Used by AddChild, CreateChild, etc. | |
void | TriggerOnStart () |
Runs OnStart if the object is currently active for the first time. | |
void | TriggerOnActivate () |
Runs OnActivate if the object is currently active. | |
void | TriggerOnDeactivate () |
Runs OnDeactivate if the object is currently active (being deactivated) | |
Protected Attributes | |
const std::string | _name |
Name of object. | |
Object * | _parent |
Parent/owner of this Object. | |
std::vector< Object * > | _children |
List of children Objects. | |
bool | _valid |
Determines if the Object is valid Derived classes can set this to false in their Constructors if they couldn't be created properly. | |
bool | _active |
Determines if the Object is currently updated. | |
bool | _started |
Determines if the Object has been started Set to true during the first update. | |
Transform::Transform * | _transform |
First child Transform::Transform. | |
Physics::Collider * | _collider |
First child Physics::Collider. | |
Physics::Rigidbody * | _rigidbody |
First child Physics::Rigidbody. | |
Static Protected Attributes | |
static int | _count |
Total number of Objects in existence. | |
General base class Allows for parent/child relationship trees.
Aspen::Object::Object::Object | ( | Object * | parent = nullptr , |
std::string | name = "Object" |
||
) |
bool Aspen::Object::Object::Active | ( | ) | const |
Determines if the Object is active.
void Aspen::Object::Object::AddChild | ( | Object * | child | ) |
Adds child to this Object's list of children This will also set child's _parent to this This will do nothing if child is already in the list of children Useful for adding an already created Object as a child or passing in the return operator new with parameters.
child | Object to add to list of children |
std::vector<Object *>& Aspen::Object::Object::Children | ( | ) |
unsigned Aspen::Object::Object::ChildrenCount | ( | ) | const |
|
inline |
|
inline |
|
inline |
Finds the closest ancestor Object of a type applicable to that which was requested.
T | Type of child to find Must inherit Object |
class A : public Object
and class B : public A
, then FindObjectOfType<A>()
will return whichever was added earliest - A*
or B*
- as an A*
|
inline |
Finds the first child Object of a type applicable to that which was requested.
T | Type of child to find Must inherit Object |
class A : public Object
and class B : public A
, then FindObjectOfType<A>()
will return whichever was added earliest - A*
or B*
- as an A*
|
inline |
Finds the first child Object of a type applicable to that which was requested.
T | Type of child to find Must inherit Object |
class A : public Object
and class B : public A
, then FindObjectOfType<A>()
will return whichever was added earliest - A*
or B*
- as an A*
|
inline |
Finds all children Objects of a type applicable to that which was requested.
T | Type of children to find Must inherit Object |
class A : public Object
and class B : public A
, then FindObjectOfType<A>()
will return both A*
and B*
as A*
|
inline |
Finds all children Objects of a type applicable to that which was requested.
T | Type of children to find Must inherit Object |
class A : public Object
and class B : public A
, then FindObjectOfType<A>()
will return both A*
and B*
as A*
|
inline |
Recursively finds all descendent Objects of a type applicable to that which was requested.
T | Type of descendent to find Must inherit Object |
class A : public Object
and class B : public A
, then FindObjectOfType<A>()
will return both A*
and B*
as A*
|
inline |
Recursively finds all descendent Objects of a type applicable to that which was requested.
T | Type of descendent to find Must inherit Object |
class A : public Object
and class B : public A
, then FindObjectOfType<A>()
will return both A*
and B*
as A*
Physics::Collider* Aspen::Object::Object::GetCollider | ( | ) |
Gets the first child Physics::Collider.
const Physics::Collider* Aspen::Object::Object::GetCollider | ( | ) | const |
Gets the first child Physics::Collider.
Object* Aspen::Object::Object::GetLastChild | ( | ) |
Physics::Rigidbody* Aspen::Object::Object::GetRigidbody | ( | ) |
Gets the first child Physics::Rigidbody.
const Physics::Rigidbody* Aspen::Object::Object::GetRigidbody | ( | ) | const |
Gets the first child Physics::Rigidbody.
Transform::Transform* Aspen::Object::Object::GetTransform | ( | ) |
Gets the first child Transform::Transform.
const Transform::Transform* Aspen::Object::Object::GetTransform | ( | ) | const |
Gets the first child Transform::Transform.
bool Aspen::Object::Object::HasAncestor | ( | const Object * | other | ) | const |
|
virtual |
Run when a collision occurs.
c | Collision that occured |
Object* Aspen::Object::Object::operator[] | ( | unsigned | index | ) |
int Aspen::Object::Object::operator[] | ( | Object * | child | ) |
const Object* Aspen::Object::Object::Parent | ( | ) | const |
Gets the parent of this Object.
int Aspen::Object::Object::ParentCount | ( | ) |
Determines the generation of this object in the parent/child tree.
void Aspen::Object::Object::PrintTree | ( | Log::Log & | log | ) | const |
void Aspen::Object::Object::RemoveChild | ( | Object * | child | ) |
void Aspen::Object::Object::RemoveChild | ( | unsigned | index | ) |
const Object* Aspen::Object::Object::Root | ( | ) | const |
Object* Aspen::Object::Object::Root | ( | ) |
void Aspen::Object::Object::SetActive | ( | bool | active | ) |
Sets active status of the object Triggers OnActivate or OnDeactivate appropriately.
active | New active status |
const bool& Aspen::Object::Object::Valid | ( | ) | const |
Determines if the Object is valid.