|
Brunot
|
#include <Entity.h>
Public Member Functions | |
| Entity () | |
| Entity (const Entity &other) | |
| ~Entity () override | |
| auto | clone () const -> std::unique_ptr< GameObject > override |
| makes a copy a GameObject even if it's held polymorphically | |
| auto | showMenu () -> void override |
| Called before update each frame, for calling ImGui editor code relevant to the gameObject. | |
| auto | update (float dt) -> void override |
| called once every frame. | |
| auto | onUpdate (float dt) -> void override |
| called once every frame. | |
| auto | endWindow () -> void override |
| currently unused, but intended to but was assumed to be necessary for a proper ImGui editor | |
| auto | render () -> void override |
| called every frame after update has been called for every object. | |
| auto | onRender () -> void override |
| called every frame after update has been called for every object. | |
| auto | onEnterEngine () -> void override |
| hook that is called when a GameObject enters the Engine tree. | |
| auto | for_each (std::function< void(GameObject &)> func) -> void override |
| applies a function to every child. | |
| auto | for_each (std::function< void(const GameObject &)> func) const -> void override |
| applies a const function to every child. | |
| auto | load (Stream &stream) -> void override |
| Implementations will load the state of a GameObject from a th::Json Object. | |
| auto | save (Stream &stream) const -> void override |
| Implementations will load the state of a GameObject to a th::Json object. | |
| auto | getParent () const -> Entity *override |
| auto | destroy () -> void override |
| Marks an GameObject to be destroyed. | |
| auto | setShouldUpdate (const bool _shouldUpdate) -> void override |
| set whether the Entity, its components, and its children Entities should update every frame | |
| auto | setShouldRender (const bool _shouldRender) -> void override |
| set whether the Entity, its components, and its children Entities should render every frame | |
| auto | setShouldReceiveMessages (const bool _shouldReceiveMessages) -> void override |
| set whether the Entity, its components, and its children Entities should receive messages | |
| auto | pop () -> std::unique_ptr< Entity > |
| Removes the Entity from the Engine tree, and gives ownership to the caller. | |
| template<typename type> | |
| auto | GetComponent (Component::ComponentTypeEnum typeId) -> type * |
| the implementation of the GetComponent Template | |
| auto | addChild (std::unique_ptr< GameObject > newChild) -> bool override |
| adds either a component to the entity, or another game object as a child | |
| auto | addChild (std::unique_ptr< Entity > newChild) -> bool |
| auto | addComponent (std::unique_ptr< Component > &&component) -> void |
| takes a component pointer, and adds it to the Entity. | |
| auto | addComponent (std::unique_ptr< GameObject > component) -> bool |
| Takes a pointer to a GameObject, and adds it to the Entity. | |
| template<std::derived_from< Component > T> | |
| auto | addComponent (const T &component) -> void |
| takes a component directly and adds it to the Entity. | |
| template<std::derived_from< Component > T> | |
| auto | addComponent (std::unique_ptr< T > component) -> void |
| allows adding components to objects with unique_ptrs to concrete components | |
| auto | deregisterComponents () const -> void |
| deregister every component from messaging system | |
| auto | showComponentsMenu () -> void |
| call showMenu() on all children | |
| Public Member Functions inherited from GameObject | |
| GameObject (std::string typeName, gobj::Type parentType, gobj::Type type) | |
| constructor for gameobject. | |
| virtual | ~GameObject () |
| destructor for GameObject. | |
| GameObject (const GameObject &other) | |
| Copy Constructor. | |
| auto | operator= (const GameObject &other) -> GameObject & |
| copy assignment operator | |
| GameObject (GameObject &&other) noexcept | |
| Move constructor. | |
| auto | operator= (GameObject &&other) noexcept -> GameObject & |
| Move assignment operator. | |
| virtual auto | getParent () const -> GameObject * |
| Gets the parent of a GameObject. | |
| virtual auto | parentTo (GameObject *newParent) -> bool |
| Sets the GameObject as a child of another GameObject. | |
| auto | getInternalParent () const -> GameObject * |
| returns the actual owning parent of the GameObject | |
| virtual auto | getKey () const -> Key |
| Generates a unique Key that corresponds to the GameObject. | |
| auto | destroyed () const -> bool |
| auto | getUUID () const -> gobj::UUID |
| auto | isUUID (gobj::UUID compareUUID) const -> bool |
| auto | getName () const -> const std::string & |
| Gets the type of the object as a string. | |
| auto | getNickname () const -> const std::string & |
| Gets the nickname (custom, writable name) of a GameObject. | |
| void | calculateFormattedName () const |
| auto | getFormattedName () const -> const std::string & |
| combines a GameObjects Type, Nickname, and UUID into one string, for use with logging. | |
| auto | nameEquals (const std::string &compareString) const -> bool |
| check whether a GameObjects typeName is equivilent to a given string. | |
| auto | isType (gobj::Type otherType) const -> bool |
| check whether the GameObject is the same as a given type. | |
| auto | getObjectType () const -> gobj::Type |
| gets the internal type of the GameObject, as an enum | |
| auto | setNickname (const std::string &newNickname) -> void |
| sets the GameObjects nickname. | |
| auto | updates () const -> bool |
| auto | renders () const -> bool |
| auto | receivesMessages () const -> bool |
| auto | isActive () const -> bool |
| auto | setActive (const bool shouldBeActive) -> void |
| set the GameObject should update, render, and receive messages | |
Protected Member Functions | |
| auto | getChildren () const -> std::shared_ptr< std::vector< GameObject * > > override |
| Protected Member Functions inherited from GameObject | |
| auto | setInternalParent (GameObject *parent) -> bool |
| sets the internal parent of a GameObject directly, avoiding abstractions provided by ParentTo(). | |
| auto | getGameObjectJson () const -> json |
| Used for serializing GameObjects. | |
| auto | setGameObjectJson (const json &stream) -> void |
| used for deserializing GameObjects | |
| auto | checkAddToSceneHook () -> void |
| Determine if the GameObject was recently added to the engine, and if it was, call onEngineEnter. | |
Private Member Functions | |
| auto | Get (Component::ComponentTypeEnum typeId) -> Component * |
| auto | addComponentButton () -> void |
| A helper function for drawMenu() to make a button that lets you add components or entities. | |
| auto | showUpdateRenderMessagesFlagButtons () -> void |
| A helper function for showMenu() to make buttons for toggling shouldRender, shouldUpdate, shouldReceiveMessages. | |
| auto | showNameInputMenu () -> void |
| A helper function for showMenu() to show a input field for the entity name. | |
Private Attributes | |
| ChildrenHandeler< Component > | components |
Friends | |
| auto | to_json (json &j, const Entity &obj) ->void |
| auto | from_json (const json &j, Entity &obj) ->void |
Additional Inherited Members | |
| Public Attributes inherited from GameObject | |
| friend | Entity |
| friend | Node |
| friend | ChildrenHandeler |
| friend | Engine |
| Entity::Entity | ( | ) |
| Entity::Entity | ( | const Entity & | other | ) |
|
override |
| auto Entity::addChild | ( | std::unique_ptr< Entity > | newChild | ) | ->bool |
|
nodiscardoverridevirtual |
adds either a component to the entity, or another game object as a child
| newChild | component pointer or other gameobject pointer |
Reimplemented from GameObject.
|
inline |
takes a component directly and adds it to the Entity.
component will be copied
| T | some component |
| component | the component to take. it will be copied |
| auto Entity::addComponent | ( | std::unique_ptr< Component > && | component | ) | ->void |
takes a component pointer, and adds it to the Entity.
this is the equivalent of calling entity->addChild(component); but, it won't fail. Useful if you have a pointer to a Component, rather that a pointer to a GameObject
| component | a unique pointer to a Component |
| auto Entity::addComponent | ( | std::unique_ptr< GameObject > | component | ) | ->bool |
Takes a pointer to a GameObject, and adds it to the Entity.
The function will fail if the GameObject isn't actually a Component
| component | a unique pointer |
|
inline |
allows adding components to objects with unique_ptrs to concrete components
| T | a unique pointer to some component |
| component |
|
private |
A helper function for drawMenu() to make a button that lets you add components or entities.
|
overridevirtual |
makes a copy a GameObject even if it's held polymorphically
Implements GameObject.
|
inline |
deregister every component from messaging system
|
overridevirtual |
Marks an GameObject to be destroyed.
The GameObject will be actually removed when it is updated next
Reimplemented from GameObject.
|
inlineoverridevirtual |
currently unused, but intended to but was assumed to be necessary for a proper ImGui editor
Implements GameObject.
|
overridevirtual |
applies a const function to every child.
applies to internal children, not public children. (this means that entities will only update their components, not their child entities)
| func | a function that takes a C reference, and does some operation using it |
Reimplemented from GameObject.
|
overridevirtual |
applies a function to every child.
applies to internal children, not public children. (this means that entities will only update their components, not their child entities)
| func | a function that takes a GameObject reference, and does some operation on it |
Reimplemented from GameObject.
|
private |
| typeId | The type of component you want to get |
|
overrideprotectedvirtual |
Reimplemented from GameObject.
|
inline |
the implementation of the GetComponent Template
this template is a type safe method of getting a specific component from an object. It must be declared here, in the header, otherwise linker errors occur. It calls the private Get() function to actually do the searching for the component
| type | the type of component to search for |
| typeId | the type of component as an enum |
|
override |
|
overridevirtual |
Implementations will load the state of a GameObject from a th::Json Object.
Unimplemented in GameObject
| stream | th::Json Object |
Implements GameObject.
|
overridevirtual |
hook that is called when a GameObject enters the Engine tree.
The hook is called immedietly after a gameobject's parent is called. Functionality may not be correct if an object was removed from the engine then re-added
Reimplemented from GameObject.
|
overridevirtual |
called every frame after update has been called for every object.
Generally used for rendering an object to the screen, when applicable. Unimplemented in GameObject
Implements GameObject.
|
overridevirtual |
called once every frame.
Generally used for timers, movement, condition checks, etc. Unimplemented in GameObject
| dt | the time in seconds that has elapsed |
Implements GameObject.
| auto Entity::pop | ( | ) | ->std::unique_ptr< Entity > |
|
overridevirtual |
called every frame after update has been called for every object.
Generally used for rendering an object to the screen, when applicable. override to ensure proper rendering of children that may be active calls onRender for implementation by concrete classes make sure you call GameObject::Update() when overriding
Reimplemented from GameObject.
|
overridevirtual |
Implementations will load the state of a GameObject to a th::Json object.
Unimplemented in GameObject
| stream | th::Json Object |
Implements GameObject.
|
overridevirtual |
set whether the Entity, its components, and its children Entities should receive messages
| _shouldReceiveMessages | whether the object should receive Messages |
Reimplemented from GameObject.
|
overridevirtual |
set whether the Entity, its components, and its children Entities should render every frame
| _shouldRender | whether the object should render |
Reimplemented from GameObject.
|
overridevirtual |
set whether the Entity, its components, and its children Entities should update every frame
| _shouldUpdate | whether the object should update |
Reimplemented from GameObject.
| auto Entity::showComponentsMenu | ( | ) | ->void |
|
overridevirtual |
Called before update each frame, for calling ImGui editor code relevant to the gameObject.
virtual because we might need to destroy other things too, like parent node for entity Has a empty definition in GameObject, so it may be overriden, but doesn't have to be.
Reimplemented from GameObject.
|
private |
A helper function for showMenu() to show a input field for the entity name.
|
private |
A helper function for showMenu() to make buttons for toggling shouldRender, shouldUpdate, shouldReceiveMessages.
|
overridevirtual |
called once every frame.
Generally used for timers, movement, condition checks, etc. calls onUpdate for implementation by concrete classes. override to properly call children make sure you call GameObject::Update() when overriding
| dt | the time in seconds that has elapsed |
Reimplemented from GameObject.
|
private |