Nebula
|
#include <featureunit.h>
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 | |
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::CommandLineArgs & | GetCmdLineArgs () 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::String & | GetClassName () 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) | |
|
privatevirtual |
destructor
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.
|
inlineprivate |
get command line args
|
inlineprivate |
return true if featureunit is currently active
|
privatevirtual |
called after GameServer::AttachGameFeature()
This method is called by Game::GameServer::AttachGameFeature().
Use this method for one-time initializations of the FeatureUnit.
Reimplemented in AudioFeature::AudioFeatureUnit, BaseGameFeature::BaseGameFeatureUnit, GraphicsFeature::GraphicsFeatureUnit, PhysicsFeature::PhysicsFeatureUnit, and Scripting::ScriptFeatureUnit.
|
privatevirtual |
|
privatevirtual |
called from within GameServer::NotifyBeforeCleanup()
Reimplemented in PhysicsFeature::PhysicsFeatureUnit.
|
privatevirtual |
called from within GameServer::NotifyBeforeLoad()
|
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.
|
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.
|
privatevirtual |
called before GameServer::RemoveGameFeature()
This method is called by Game::GameServer::RemoveGameFeature().
Use this method to cleanup stuff which has been initialized in OnActivate().
Reimplemented in AudioFeature::AudioFeatureUnit, BaseGameFeature::BaseGameFeatureUnit, GraphicsFeature::GraphicsFeatureUnit, PhysicsFeature::PhysicsFeatureUnit, and Scripting::ScriptFeatureUnit.
|
privatevirtual |
called after entities has been destroyed and before releasing their memory
Reimplemented in PhysicsFeature::PhysicsFeatureUnit.
|
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.
|
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.
|
privatevirtual |
called from within GameServer::Load()
This method is called from within Game::GameServer::Load().
|
privatevirtual |
called from GameServer::RemoveGameFeature()
|
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.
|
privatevirtual |
called from within GameServer::Save()
This method is called from within Game::GameServer::NotifyGameSave().
|
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.
|
privatevirtual |
called from withing GameServer::Stop()
remove a manager from the feature unit
Remove a manager from the game world.
The manager's OnDeactivate() method will be called.
|
inlineprivate |
set command line args
|
protected |
|
protected |
cmdline args for configuration from cmdline
|
protected |