#include <stdio.h>
#include <string>
#include <vector>
#include <map>
Go to the source code of this file.
Classes | |
class | Node |
Basic node, these are like smart pointers to NodeObjects. More... | |
class | NodeObject |
Base Class for All Nodes. More... | |
class | NodeManager |
Full Node Manager, access using NODEMAN. More... | |
struct | NodeManager::StringPair |
[Internal] Structure to hold all message data pairs. More... | |
struct | NodeManager::StringPairFloat |
[Internal] Structure to hold all information regarding active, waiting messages. More... | |
Defines | |
#define | CLASS_RTTI(NAME, PARENT) |
RTTI Macro, place this in your class definition, under public:. | |
#define | REGISTER_CLASS(CLASSNAME) |
Registeration Macro, place this in your class's cpp file. | |
#define | NODE_CAST(Node, Type) (Node.Get()?((Type*) (Node->IsTypeOf(#Type)?Node.Get():NULL)):NULL) |
Cast given node to a more/less generic Type, safely. If it is incorrect, return null. | |
#define | GET_NODE_CAST(NodeName, Type) ((Type*)NODEMAN->DerefGet( #Type, NodeName )) |
Get instance of object by name NodeName and do an unsafe cast. | |
#define | CODERENDERNODE(NODENAME, CODEIN, CODEOUT) |
VERY Simple node instanciation. Things like lighting, etc can be used here. | |
Typedefs | |
typedef NodeObject *(* | ProducerFunct )(const string &sObjectName) |
Function to generate a new NodeObject. | |
Variables | |
NodeManager * | NODEMAN |
Instance of NodeManager singleton. |
#define CLASS_RTTI | ( | NAME, | |||
PARENT | ) |
#define CODERENDERNODE | ( | NODENAME, | |||
CODEIN, | |||||
CODEOUT | ) |
Value:
class NODENAME : public NodeObject \ { \ public: \ NODENAME( const string & sName ) : NodeObject( sName ) { } \ CLASS_RTTI( NODENAME, NodeObject ); \ \ virtual void Render() { CODEIN; NodeObject::Render(); CODEOUT; } \ };
#define GET_NODE_CAST | ( | NodeName, | |||
Type | ) | ((Type*)NODEMAN->DerefGet( #Type, NodeName )) |
#define REGISTER_CLASS | ( | CLASSNAME | ) |
Value:
NodeObject * Produce##CLASSNAME( const string & sObjectName ) \ { return new CLASSNAME( sObjectName ); } \ class RegClass##CLASSNAME { public: \ RegClass##CLASSNAME() { \ NodeManager::Instance()->RegisterType( #CLASSNAME, Produce##CLASSNAME ); \ } \ }; \ RegClass##CLASSNAME AUTOREG##CLASSNAME;
typedef NodeObject*(* ProducerFunct)(const string &sObjectName) |