HowTo: Adding a new class to the hierarchy
Table of Contents
The class hierarchy in Orxonox is controlled by Identifiers. Every class has it's identifier. This page explains how a new class is added correctly to the class hierarchy.
Features available to classes in the hierarchy:
Objects
If you want to create a new object (an object in the sense of a game-related class), you have to inherit directly or indirectly from doc/BaseObject and call RegisterObject(ClassName) (see doc/CoreIncludes) in the constructor of this class.
If you want this class to be loadable? from an XML-file, add CreateFactory(ClassName) outside of the code. This creates a mapping between the string "ClassName" and the class itself (see doc/Factory).
*.h file:
#include "core/BaseObject.h"
class MyClass : public BaseObject
{
public:
MyClass();
};
or
#include "objects/SomeOtherObject.h"
class MyClass : public SomeOtherObject
{
public:
MyClass();
};
*.cc file:
#include "core/CoreIncludes.h"
CreateFactory(MyClass); // optional
// Constructor:
MyClass::MyClass()
{
RegisterObject(MyClass);
}
Interfaces
Interfaces in Orxonox aren't objects by themselfes, but provide functions and features for real objects. Those objects inherit from the interfaces, additionally to doc/BaseObject (or a derivative).
Interfaces have to inherit virtually from doc/OrxonoxClass and call RegisterRootObject(InterfaceName) in the constructor.
*.h file:
#include "core/OrxonoxClass.h"
class MyInterface : virtual public OrxonoxClass
{
public:
MyInterface();
};
*.cc file:
#include "core/CoreIncludes.h"
// Constructor:
MyInterface::MyInterface()
{
RegisterRootObject(MyInterface);
}










