MObject3d

Example
MObject3d is a base object from which other important objects are derived (e.g. MOEntity, MOCamera, MOText). It allows basic operations like translation/rotation, parent/child linking, etc.

All its methods can be called from the derived object:

camera->setPosition(MVector3(0,0,0));

This works because MOCamera is derived from MObject3d which has the method setPosition. Notice the derived objects has the O in the name for "Object3d" to suggest their base class (e.g. MOEntity).

Position
Position simply tells where the object is in space coordinate (X, Y and Z). MVector3 is used to generate specific coordinate:

MVector3 pos = MVector3(10,10,10); //pos is a point with coordinate 10,10,10 camera->setPosition(pos); //a camera object is now set to the coordinates 10,10,10 player->setPosition(MVector3(50,50,50)); //the player is set explicitly to position 50,50,50 MVector3 point = camera->getPosition; //get the position of the camera object and stores it in "point".

Active
Every object is active by default. If you deactivate it, things like translation/rotation won't be updated in the next frames. More importantly, the linked physics object won't be updated. This means that deactivating an entity can save CPU time.

entity->setActive(true); //activate the entity entity->setActive(false); //deactivate the entity

if(enemy->isActive) //then make "enemy" attack the player

if(! entity->isActive) //if the entity is NOT active return; //exit this function/method //otherwise go on with the code: entity->...

Visibility
Invisible objects can still be transformed and have an influence in the scene (e.g. physics).

Type
When you have a pointer to an object but you don't know what the object is (e.g. when looping through a vector of objects), you can use getType.

MObject3D returns the M_OBJECT3D "identifier", but this is a virtual method which is overrided by the derived objects (e.g.MOEntity, MOCamera). So in the case of MOEntity, the object will return the M_OBJECT3D_ENTITY "identifier" so you can tell that you're working with a MOEntity object.

unsigned int size = vector_of_objects.size; for(unsigned int i=0; igetType == M_OBJECT3D_ENTITY) {        printf("I've found an entity!\n"); } }

The "identifiers" (M_OBJECT3D_ENTITY, M_OBJECT3D_CAMERA, etc.) are macro definitions and are defined in MEngine.h

Update
This virtual method is empty and it will be overrided by the derived objects (e.g. MOEntity::update). It's called by MScene::update for every object.