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, Multiplayer::MultiplayerFeatureUnit, NavigationFeature::NavigationFeatureUnit, 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()

◆ 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, Multiplayer::MultiplayerFeatureUnit, NavigationFeature::NavigationFeatureUnit, PhysicsFeature::PhysicsFeatureUnit, and Scripting::ScriptFeatureUnit.

◆ OnDeactivate()

◆ 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, Multiplayer::MultiplayerFeatureUnit, 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, Multiplayer::MultiplayerFeatureUnit, 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, Multiplayer::MultiplayerFeatureUnit, NavigationFeature::NavigationFeatureUnit, 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: