Brunot
Loading...
Searching...
No Matches
sys::SceneManager Class Reference

#include <SceneManager.h>

Inheritance diagram for sys::SceneManager:
[legend]
Collaboration diagram for sys::SceneManager:
[legend]

Public Member Functions

 SceneManager ()
 ~SceneManager () override=default
 SceneManager (const SceneManager &other)
 SceneManager (SceneManager &&other) noexcept
auto operator= (const SceneManager &other) -> SceneManager &
auto operator= (SceneManager &&other) noexcept -> SceneManager &
auto clone () const -> std::unique_ptr< GameObject > override
 makes a copy a GameObject even if it's held polymorphically
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 onRender () -> void override
 called every frame after update has been called for every object.
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 saveScene (Stream &stream) const -> void
auto addChild (std::unique_ptr< GameObject > newChild) -> bool override
 loads a scene
auto loadScene (std::unique_ptr< Node > scene) -> void
 loads a scene by taking the scene directly
auto loadScene (const std::string &name) -> void
 load a scene based on it's name
auto getCurrentScene () const -> GameObject *
auto registerScene (Scene &scene) -> void
auto deregisterScene (Scene &scene) -> void
auto linkMessages () -> void
auto receiveResetKeyPressed (const Message *message) -> Message
Public Member Functions inherited from System
auto showMenu () -> void override
 Called before update each frame, for calling ImGui editor code relevant to the gameObject.
auto getKey () const -> Key override
 Generates a unique Key that corresponds to the GameObject.
auto getParent () const -> GameObject *override
 Gets the parent of a GameObject.
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 update (float dt) -> void
 called once every frame.
virtual auto render () -> void
 called every frame after update has been called for every object.
virtual auto destroy () -> void
 Marks an GameObject to be destroyed.
virtual auto onEnterEngine () -> void
 hook that is called when a GameObject enters the Engine tree.
virtual auto for_each (std::function< void(GameObject &)> func) -> void
 applies a function to every child.
virtual auto for_each (std::function< void(const GameObject &)> func) const -> void
 applies a const function to every child.
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
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
virtual auto setShouldUpdate (const bool _shouldUpdate) -> void
 set whether the GameObject should update every frame, and whether all of it's children should update every frame
virtual auto setShouldRender (const bool _shouldRender) -> void
 set whether the GameObject should render every frame, and whether all of it's children should render every frame
virtual auto setShouldReceiveMessages (const bool _shouldReceiveMessages) -> void
 set whether the GameObject should Receive Messags, and whether all of it's children should receive messages
auto setActive (const bool shouldBeActive) -> void
 set the GameObject should update, render, and receive messages

Static Public Member Functions

static auto getEnum () -> Type
 function required by all systems
static auto LoadScene (std::unique_ptr< Node > scene) -> void
 loads a scene by taking the scene directly
static auto LoadScene (const std::string &name) -> void
 load a scene based on it's name

Public Attributes

friend Scene
Public Attributes inherited from GameObject
friend Entity
friend Node
friend ChildrenHandeler
friend Engine

Protected Member Functions

auto systemShowMenu () -> void override
 Specific systems should override this function to show their specific menu for the system.
Protected Member Functions inherited from System
 System (const std::string &typeName, Type systemType)
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
virtual auto getChildren () const -> std::shared_ptr< std::vector< GameObject * > >
 gets a vector of a GameObjects public (i.e.
auto checkAddToSceneHook () -> void
 Determine if the GameObject was recently added to the engine, and if it was, call onEngineEnter.

Private Member Functions

auto pushCorrectState (const Scene &sceneToKeep, SceneState newState, SceneState keepSceneState, std::vector< Scene * >::iterator::value_type scene) -> void
 Helper function for pushStateToOtherScenes.
auto toAllSceneChildren (Scene *parent, std::function< void(Scene *)> func) -> void
 apply a function to all children of a specific scene
auto pushStateToOtherScenes (const Scene &sceneToKeep, SceneState othersState, SceneState keepSceneState) -> void
auto popAllScenes (const Scene &sceneToKeep) -> void

Private Attributes

std::vector< Scene * > scenes

Additional Inherited Members

Public Types inherited from System
enum class  Type : unsigned short {
  system_error_type = 0 , newSystemStub = 100 , OpenGL = 200 , Input = 300 ,
  Editor = 400 , Messaging = 500 , Camera = 600 , Logging = 700 ,
  AudioSystem = 750 , Scoring = 800 , HandSystem = 900 , SceneManager = 1000 ,
  ActionList = 1100 , DebugDraw = 1150 , TestRunner = 1200 , ColliderSystem = 1300
}

Constructor & Destructor Documentation

◆ SceneManager() [1/3]

sys::SceneManager::SceneManager ( )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~SceneManager()

sys::SceneManager::~SceneManager ( )
overridedefault
Here is the call graph for this function:

◆ SceneManager() [2/3]

sys::SceneManager::SceneManager ( const SceneManager & other)
Here is the call graph for this function:

◆ SceneManager() [3/3]

sys::SceneManager::SceneManager ( SceneManager && other)
noexcept
Here is the call graph for this function:

Member Function Documentation

◆ addChild()

auto sys::SceneManager::addChild ( std::unique_ptr< GameObject > newChild) ->bool
nodiscardoverridevirtual

loads a scene

Parameters
newChilda unique pointer to the scene to load(a node). it must have a top level entity that has a scene component
Returns
success

Reimplemented from GameObject.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ clone()

auto sys::SceneManager::clone ( ) const->std::unique_ptr< GameObject >
inlineoverridevirtual

makes a copy a GameObject even if it's held polymorphically

Warning
When overriding this function, make sure to set the parents object to this
Returns
a unique_ptr to a new stack allocated object that is a copy of the object

Implements GameObject.

Here is the call graph for this function:

◆ deregisterScene()

auto sys::SceneManager::deregisterScene ( Scene & scene) ->void

◆ endWindow()

auto sys::SceneManager::endWindow ( ) ->void
inlineoverridevirtual

currently unused, but intended to but was assumed to be necessary for a proper ImGui editor

Implements GameObject.

◆ getCurrentScene()

auto sys::SceneManager::getCurrentScene ( ) const->GameObject *
Returns
a pointer to Entity that is the scene root (it has the Scene Component)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getEnum()

auto sys::SceneManager::getEnum ( ) ->Type
inlinestatic

function required by all systems

◆ linkMessages()

auto sys::SceneManager::linkMessages ( ) ->void
Here is the call graph for this function:

◆ load()

auto sys::SceneManager::load ( Stream & stream) ->void
overridevirtual

Implementations will load the state of a GameObject from a th::Json Object.

Unimplemented in GameObject

Parameters
streamth::Json Object

Implements GameObject.

◆ LoadScene() [1/2]

auto sys::SceneManager::LoadScene ( const std::string & name) ->void
static

load a scene based on it's name

Parameters
namethe name of the scene to load. Scene/ will be prepended
Here is the call graph for this function:

◆ LoadScene() [2/2]

auto sys::SceneManager::LoadScene ( std::unique_ptr< Node > scene) ->void
static

loads a scene by taking the scene directly

Parameters
scenea unique pointer to the root node. The entity on the root node MUST have a scene component.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ loadScene() [1/2]

auto sys::SceneManager::loadScene ( const std::string & name) ->void

load a scene based on it's name

Parameters
namethe name of the scene to load. Scene/ will be prepended
Here is the call graph for this function:

◆ loadScene() [2/2]

auto sys::SceneManager::loadScene ( std::unique_ptr< Node > scene) ->void

loads a scene by taking the scene directly

Parameters
scenea unique pointer to the root node. The entity on the root node MUST have a scene component.
Here is the call graph for this function:

◆ onRender()

auto sys::SceneManager::onRender ( ) ->void
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.

◆ onUpdate()

auto sys::SceneManager::onUpdate ( float dt) ->void
overridevirtual

called once every frame.

Generally used for timers, movement, condition checks, etc. Unimplemented in GameObject

Parameters
dtthe time in seconds that has elapsed

Implements GameObject.

◆ operator=() [1/2]

auto sys::SceneManager::operator= ( const SceneManager & other) ->SceneManager &

TODO: make this a real copy swap

Here is the call graph for this function:

◆ operator=() [2/2]

auto sys::SceneManager::operator= ( SceneManager && other) ->SceneManager &
noexcept
Here is the call graph for this function:

◆ popAllScenes()

auto sys::SceneManager::popAllScenes ( const Scene & sceneToKeep) ->void
private
Here is the call graph for this function:

◆ pushCorrectState()

auto sys::SceneManager::pushCorrectState ( const Scene & sceneToKeep,
SceneState newState,
SceneState keepSceneState,
std::vector< Scene * >::iterator::value_type scene )->void
private

Helper function for pushStateToOtherScenes.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pushStateToOtherScenes()

auto sys::SceneManager::pushStateToOtherScenes ( const Scene & sceneToKeep,
SceneState othersState,
SceneState keepSceneState )->void
private
Here is the call graph for this function:

◆ receiveResetKeyPressed()

auto sys::SceneManager::receiveResetKeyPressed ( const Message * message) ->Message
Todo
:: Add resetting scene functionality inside of SceneManager
Here is the caller graph for this function:

◆ registerScene()

auto sys::SceneManager::registerScene ( Scene & scene) ->void

◆ save()

auto sys::SceneManager::save ( Stream & stream) const->void
overridevirtual

Implementations will load the state of a GameObject to a th::Json object.

Unimplemented in GameObject

Parameters
streamth::Json Object

Implements GameObject.

◆ saveScene()

auto sys::SceneManager::saveScene ( Stream & stream) const->void
Here is the call graph for this function:

◆ systemShowMenu()

auto sys::SceneManager::systemShowMenu ( ) ->void
overrideprotectedvirtual

Specific systems should override this function to show their specific menu for the system.

Reimplemented from System.

◆ toAllSceneChildren()

auto sys::SceneManager::toAllSceneChildren ( Scene * parent,
std::function< void(Scene *)> func )->void
private

apply a function to all children of a specific scene

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ Scene

friend sys::SceneManager::Scene

◆ scenes

std::vector<Scene*> sys::SceneManager::scenes
private

The documentation for this class was generated from the following files: