| 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. |