Nebula
Loading...
Searching...
No Matches
Game::FeatureUnit Class Reference

#include <featureunit.h>

Detailed Description

A FeatureUnit is an encapsulated feature which can be added to an application.

E.g. game features can be core features like Render or Network, or it can be some of the addons like db or physics.

To add a new feature, derive from this class and add it to the Game::GameServer on application or statehandler startup.

The Game::GameServer will start, load, save, trigger and close your feature.

Inherits Core::RefCounted.

Inherited by AudioFeature::AudioFeatureUnit, BaseGameFeature::BaseGameFeatureUnit, GraphicsFeature::GraphicsFeatureUnit, PhysicsFeature::PhysicsFeatureUnit, and Scripting::ScriptFeatureUnit.

Protected Attributes

Util::Array< Ptr< Manager > > managers
 
bool active
 
Util::CommandLineArgs args
 cmdline args for configuration from cmdline
 

Private Member Functions

virtual __DeclareClass(FeatureUnit) public ~FeatureUnit ()
 destructor
 
template<typename COMPONENT_TYPE >
ComponentId RegisterComponentType (ComponentRegisterInfo< COMPONENT_TYPE > info={})
 Register a component type.
 
virtual void OnAttach ()
 called from GameServer::AttachGameFeature()
 
virtual void OnRemove ()
 called from GameServer::RemoveGameFeature()
 
virtual void OnActivate ()
 called after GameServer::AttachGameFeature()
 
virtual void OnDeactivate ()
 called before GameServer::RemoveGameFeature()
 
bool IsActive () const
 return true if featureunit is currently active
 
virtual void OnLoad (World *world)
 called from within GameServer::Load()
 
virtual void OnStart (World *world)
 called from within GameServer::OnStart() after OnLoad
 
virtual void OnSave (World *world)
 called from within GameServer::Save()
 
virtual void OnBeforeLoad (World *world)
 called from within GameServer::NotifyBeforeLoad()
 
virtual void OnBeforeCleanup (World *world)
 called from within GameServer::NotifyBeforeCleanup()
 
virtual void OnStop (World *world)
 called from withing GameServer::Stop()
 
virtual void OnBeginFrame ()
 called on begin of frame
 
virtual void OnBeforeViews ()
 Called between beginning of frame and before the views are iterated.
 
virtual void OnFrame ()
 called in the middle of the feature trigger cycle
 
virtual void OnEndFrame ()
 called at the end of the feature trigger cycle
 
virtual void OnDecay ()
 called after entities has been destroyed and before releasing their memory
 
virtual void OnRenderDebug ()
 called when game debug visualization is on
 
virtual void AttachManager (Ptr< Manager > manager)
 attach a manager to the feature unit
 
virtual void RemoveManager (Ptr< Manager > manager)
 remove a manager from the feature unit
 
void SetCmdLineArgs (const Util::CommandLineArgs &a)
 set command line args
 
const Util::CommandLineArgsGetCmdLineArgs () const
 get command line args
 

Additional Inherited Members

- Public Member Functions inherited from Core::RefCounted
 RefCounted ()
 constructor
 
int GetRefCount () const
 get the current refcount
 
void AddRef ()
 increment refcount by one
 
void Release ()
 decrement refcount and destroy object if refcount is zero
 
bool IsInstanceOf (const Rtti &rtti) const
 return true if this object is instance of given class
 
bool IsInstanceOf (const Util::String &className) const
 return true if this object is instance of given class by string
 
bool IsInstanceOf (const Util::FourCC &classFourCC) const
 return true if this object is instance of given class by fourcc
 
bool IsA (const Rtti &rtti) const
 return true if this object is instance of given class, or a derived class
 
bool IsA (const Util::String &rttiName) const
 return true if this object is instance of given class, or a derived class, by string
 
bool IsA (const Util::FourCC &rttiFourCC) const
 return true if this object is instance of given class, or a derived class, by fourcc
 
const Util::StringGetClassName () const
 get the class name
 
Util::FourCC GetClassFourCC () const
 get the class FourCC code
 
- Static Public Member Functions inherited from Core::RefCounted
static void DumpRefCountingLeaks ()
 dump refcounting leaks, call at end of application (NEBULA_DEBUG builds only!)
 
- Protected Member Functions inherited from Core::RefCounted
virtual ~RefCounted ()
 destructor (called when refcount reaches zero)
 

Constructor & Destructor Documentation

◆ ~FeatureUnit()

Game::FeatureUnit::~FeatureUnit ( )
privatevirtual

destructor

Member Function Documentation

◆ AttachManager()

void Game::FeatureUnit::AttachManager ( Ptr< Manager > manager)
privatevirtual

attach a manager to the feature unit

Attach a manager to the game world.

The manager's OnActivate() method will be called once right away, and then its OnFrame() method once per frame.

◆ GetCmdLineArgs()

const Util::CommandLineArgs & Game::FeatureUnit::GetCmdLineArgs ( ) const
inlineprivate

get command line args

◆ IsActive()

bool Game::FeatureUnit::IsActive ( ) const
inlineprivate

return true if featureunit is currently active

◆ OnActivate()

void Game::FeatureUnit::OnActivate ( )
privatevirtual

◆ OnAttach()

◆ OnBeforeCleanup()

void Game::FeatureUnit::OnBeforeCleanup ( World * world)
privatevirtual

◆ OnBeforeLoad()

void Game::FeatureUnit::OnBeforeLoad ( World * world)
privatevirtual

called from within GameServer::NotifyBeforeLoad()

◆ OnBeforeViews()

void Game::FeatureUnit::OnBeforeViews ( )
privatevirtual

Called between beginning of frame and before the views are iterated.

This method is called from Game::GameServer::OnBeforeViews() on all game features attached to an GameServer in the order of attachment.

Override this method if your FeatureUnit has to do any work at the beginning of the frame.

Reimplemented in GraphicsFeature::GraphicsFeatureUnit.

◆ OnBeginFrame()

void Game::FeatureUnit::OnBeginFrame ( )
privatevirtual

called on begin of frame

This method is called from Game::GameServer::OnBeginFrame() on all game features attached to an GameServer in the order of attachment.

Override this method if your FeatureUnit has to do any work at the beginning of the frame.

Reimplemented in AudioFeature::AudioFeatureUnit, GraphicsFeature::GraphicsFeatureUnit, PhysicsFeature::PhysicsFeatureUnit, and Scripting::ScriptFeatureUnit.

◆ OnDeactivate()

void Game::FeatureUnit::OnDeactivate ( )
privatevirtual

◆ OnDecay()

void Game::FeatureUnit::OnDecay ( )
privatevirtual

called after entities has been destroyed and before releasing their memory

Reimplemented in PhysicsFeature::PhysicsFeatureUnit.

◆ OnEndFrame()

void Game::FeatureUnit::OnEndFrame ( )
privatevirtual

called at the end of the feature trigger cycle

This method is called from Game::GameServer::OnRender() on all game features attached to an GameServer in the order of attachment.

Override this method if your FeatureUnit has any work to do before rendering happens.

Reimplemented in BaseGameFeature::BaseGameFeatureUnit, GraphicsFeature::GraphicsFeatureUnit, and Scripting::ScriptFeatureUnit.

◆ OnFrame()

void Game::FeatureUnit::OnFrame ( )
privatevirtual

called in the middle of the feature trigger cycle

This method is called from Game::GameServer::OnMoveBefore() on all game features attached to an GameServer in the order of attachment.

Override this method if your FeatureUnit has any work to do before the physics subsystem is triggered.

Reimplemented in BaseGameFeature::BaseGameFeatureUnit, GraphicsFeature::GraphicsFeatureUnit, and Scripting::ScriptFeatureUnit.

◆ OnLoad()

void Game::FeatureUnit::OnLoad ( World * world)
privatevirtual

called from within GameServer::Load()

This method is called from within Game::GameServer::Load().

◆ OnRemove()

void Game::FeatureUnit::OnRemove ( )
privatevirtual

◆ OnRenderDebug()

void Game::FeatureUnit::OnRenderDebug ( )
privatevirtual

called when game debug visualization is on

This method is called from Game::GameServer::OnRenderDebug() on all game features attached to an GameServer in the order of attachment.

It's meant for debug issues. It will be called when debug mode is enabled.

Reimplemented in AudioFeature::AudioFeatureUnit, BaseGameFeature::BaseGameFeatureUnit, GraphicsFeature::GraphicsFeatureUnit, PhysicsFeature::PhysicsFeatureUnit, and Scripting::ScriptFeatureUnit.

◆ OnSave()

void Game::FeatureUnit::OnSave ( World * world)
privatevirtual

called from within GameServer::Save()

This method is called from within Game::GameServer::NotifyGameSave().

◆ OnStart()

void Game::FeatureUnit::OnStart ( World * world)
privatevirtual

called from within GameServer::OnStart() after OnLoad

This method is called from within Game::GameServer::OnStart().

Its called after all game features are activated and have initialized their subsystems.

◆ OnStop()

void Game::FeatureUnit::OnStop ( World * world)
privatevirtual

called from withing GameServer::Stop()

◆ RegisterComponentType()

template<typename COMPONENT_TYPE >
ComponentId Game::FeatureUnit::RegisterComponentType ( ComponentRegisterInfo< COMPONENT_TYPE > info = {})
private

Register a component type.

Todo
We should register the component ids to the feature unit and deregister them when the feature is detached or destroyed.

◆ RemoveManager()

void Game::FeatureUnit::RemoveManager ( Ptr< Manager > manager)
privatevirtual

remove a manager from the feature unit

Remove a manager from the game world.

The manager's OnDeactivate() method will be called.

◆ SetCmdLineArgs()

void Game::FeatureUnit::SetCmdLineArgs ( const Util::CommandLineArgs & a)
inlineprivate

set command line args

Member Data Documentation

◆ active

bool Game::FeatureUnit::active
protected

◆ args

Util::CommandLineArgs Game::FeatureUnit::args
protected

cmdline args for configuration from cmdline

◆ managers

Util::Array<Ptr<Manager> > Game::FeatureUnit::managers
protected

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