|  | 1 | = BaseObject = | 
                          |  | 2 | The BaseObject is the top-most !SuperClass of (most but not) all Classes in orxonox. | 
                          |  | 3 |  | 
                          |  | 4 | source:/trunk/src/lib/lang/base_object.h#HEAD [[br]] | 
                          |  | 5 | __Derived From__: | 
                          |  | 6 | * nothing | 
                          |  | 7 |  | 
                          |  | 8 | == Description == | 
                          |  | 9 | BaseObject is a container for | 
                          |  | 10 | * The Name of the Object (how the object is called) | 
                          |  | 11 | * The Class' Name of the Object (in what class this object is) | 
                          |  | 12 | * The ClassID of the Object (what is the Identity of the class (see [source:/trunk/src/lib/lang/class_id.h#HEAD ClassID] | 
                          |  | 13 |  | 
                          |  | 14 | == Usage == | 
                          |  | 15 | * __Registration__:[[br]] | 
                          |  | 16 | Each class, that extends BaseObject must implement the following function: | 
                          |  | 17 | 1. In the Class-Declaration use the following syntax (taken your class is named OrxClass) | 
                          |  | 18 | {{{ | 
                          |  | 19 | #!cpp | 
                          |  | 20 | class OrxClass : public BaseObject // here you could also specify any class derived from BaseObject | 
                          |  | 21 | { | 
                          |  | 22 | ObjectListDeclaration(OrxClass); | 
                          |  | 23 | /// ... rest of the Declaration; | 
                          |  | 24 | }; | 
                          |  | 25 | }}} | 
                          |  | 26 | 1. At the top of the cc-file of the Class (in the definiton) write: | 
                          |  | 27 | {{{ | 
                          |  | 28 | #!cpp | 
                          |  | 29 | ObjectListDefinition(OrxClass); | 
                          |  | 30 | }}} | 
                          |  | 31 | 1. In the constructor of each class implementing BaseObject write the following: | 
                          |  | 32 | {{{ | 
                          |  | 33 | #!cpp | 
                          |  | 34 | this->registerObject(this, OrxClass::_objectList); | 
                          |  | 35 | }}} | 
                          |  | 36 | 1. you can then set a Name to the Object using | 
                          |  | 37 | {{{ | 
                          |  | 38 | #!cpp | 
                          |  | 39 | this->setName("the name"); | 
                          |  | 40 | }}} | 
                          |  | 41 | * __isA__:[[br]] | 
                          |  | 42 | isA is a function, that queries, if the Object is of a Specified type. e.g. given a class Player that is derived from BaseObject and [wiki:ParentNode PNode] one can do the following check : | 
                          |  | 43 | {{{ | 
                          |  | 44 | #!cpp | 
                          |  | 45 | Player* player = new Player(); | 
                          |  | 46 | if (player->isA(PNode::staticClassID()) { | 
                          |  | 47 | /* do something terrible with it */ } | 
                          |  | 48 | }}} | 
                          |  | 49 |  | 
                          |  | 50 | == Advanced Topics == | 
                          |  | 51 | An interessting Function, that BaseObject provides is the ObjectList. | 
                          |  | 52 | With it, one can retrieve lists of any one kind of derived classes from BaseObject. |