MPhysicsProperties

Example
For detailed explanations on how to manipulate physics via code see Creating and updating physics objects.

MPhysicsProperties is a class used by MOEntity. The class is defined in the MOEntity source code itself. This class has and can set the MPhysicsConstraint. MPhysicsProperties contains all the properties that will be used by the physics engine. These properties can also be edited in the Maratis Editor. The properties are mere value holders for the physics engine. This means that editing them when the game is already started will have no effect at all. The properties take effect only when the scene prepares the physics (MScene::preparePhysics) creating the collision objects for every entity.

However you can apply the new values using these methods of MPhysicsContext:


 * setObjectMass
 * setObjectRestitution
 * setObjectFriction
 * setObjectLinearFactor
 * setObjectAngularFactor
 * setObjectDamping

Another option is to reload all the physics properties of the entity using MScene::prepareCollisionShape and MScene::PrepareCollisionObject.

Shape ID
The ID of the shape used by MPhysicsContext. See Creating and updating physics objects.

Collision object ID
The ID of the very collision object used by MPhysicsContext. See the introduction of this page or Creating and updating physics objects.

Ghost
Setting the entity as a ghost disables all the physics properties (e.g. mass, friction) but the collision shape (which you can set, e.g. Box, Sphere). Constraints are also disabled. The entity will allow you to detect collisions with other objects (because it has a physics shape) but it will not interact with them (it will just pass through, hence the name ghost). This is generally used as a child object of another entity which is moving, so you can check if there is a collision at specific areas (e.g. feet). If what you want is to have a static entity, you should set the mass to zero instead. See MPhysicsProperties.

Notice that the property is not applied until you create/update the real physics object. See Creating and updating physics objects.

phyProps->setGhost(true); //set entity as ghost phyProps->setGhost(false); //entity is no more a ghost

Check if the entity is a ghost.

if(phyProps->isGhost) printf("Entity is a ghost");

Mass
The mass of the entity. Notice that the property is not applied until you create/update the real physics object. See Creating and updating physics objects. Setting the mass to zero makes the entity a static mesh, which means that it will be still for the entire game and objects can collide with it. This is generally used for rooms, using the collision shape "Triangle mesh" so you can have precise collisions against walls and other elements of the room. If you want the entity to pass through other objects but still detect collisions you should use the MPhysicsProperties property.

Set the Mass. Float type.

phyProps->setMass(5.2f);

Retrieve the Mass. Float type.

float mass = phyProp->getMass;

Friction
Notice that the property is not applied until you create/update the real physics object. See Creating and updating physics objects.

Restitution
Restitution is basically how much the object bounces against others. Notice that the property is not applied until you create/update the real physics object. See Creating and updating physics objects.

Linear damping
Notice that the property is not applied until you create/update the real physics object. See Creating and updating physics objects.

Angular damping
Notice that the property is not applied until you create/update the real physics object. See Creating and updating physics objects.

Angular factor
Notice that the property is not applied until you create/update the real physics object. See Creating and updating physics objects.

Linear factor
Notice that the property is not applied until you create/update the real physics object. See Creating and updating physics objects.