forked from enlightenment/efl
ephysics: add define to infinite mass
Also check for invalid values on mass set. SVN revision: 77459
This commit is contained in:
parent
7b7bef6087
commit
b52d2ed85e
|
@ -6,9 +6,6 @@
|
||||||
#include <EPhysics.h>
|
#include <EPhysics.h>
|
||||||
#include <Evas.h>
|
#include <Evas.h>
|
||||||
|
|
||||||
/* TODO: move to EPhysics.h */
|
|
||||||
#define EPHYSICS_BODY_MASS_IMMUTABLE (0.0)
|
|
||||||
|
|
||||||
#define WIDTH (512)
|
#define WIDTH (512)
|
||||||
#define HEIGHT (384)
|
#define HEIGHT (384)
|
||||||
#define FLOOR_Y (HEIGHT - 80)
|
#define FLOOR_Y (HEIGHT - 80)
|
||||||
|
@ -219,7 +216,7 @@ elm_main(int argc __UNUSED__, char **argv __UNUSED__)
|
||||||
ephysics_world_render_geometry_set(world, 0, 0, WIDTH, HEIGHT);
|
ephysics_world_render_geometry_set(world, 0, 0, WIDTH, HEIGHT);
|
||||||
|
|
||||||
ground_body = ephysics_body_box_add(world);
|
ground_body = ephysics_body_box_add(world);
|
||||||
ephysics_body_mass_set(ground_body, EPHYSICS_BODY_MASS_IMMUTABLE);
|
ephysics_body_mass_set(ground_body, EPHYSICS_BODY_MASS_STATIC);
|
||||||
ephysics_body_geometry_set(ground_body, -100, FLOOR_Y, WIDTH + 800, 10);
|
ephysics_body_geometry_set(ground_body, -100, FLOOR_Y, WIDTH + 800, 10);
|
||||||
ephysics_body_restitution_set(ground_body, 0.65);
|
ephysics_body_restitution_set(ground_body, 0.65);
|
||||||
ephysics_body_friction_set(ground_body, 0.8);
|
ephysics_body_friction_set(ground_body, 0.8);
|
||||||
|
|
|
@ -1287,6 +1287,16 @@ EAPI void ephysics_world_simulation_get(const EPhysics_World *world, double *fix
|
||||||
* moved or rotated.
|
* moved or rotated.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @def EPHYSICS_BODY_MASS_STATIC
|
||||||
|
* @brief Mass amount used to makes a body static.
|
||||||
|
*
|
||||||
|
* Body will be set with infinite mass, so it will be immovable.
|
||||||
|
*
|
||||||
|
* @see ephysics_body_mass_set() for details.
|
||||||
|
*/
|
||||||
|
#define EPHYSICS_BODY_MASS_STATIC (0.0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef EPhysics_Body_Collision
|
* @typedef EPhysics_Body_Collision
|
||||||
*
|
*
|
||||||
|
@ -1770,6 +1780,13 @@ EAPI void ephysics_body_geometry_get(const EPhysics_Body *body, Evas_Coord *x, E
|
||||||
* an object's resistance to the change of its speed. It's required to apply
|
* an object's resistance to the change of its speed. It's required to apply
|
||||||
* more force on objects with more mass to increase its speed.
|
* more force on objects with more mass to increase its speed.
|
||||||
*
|
*
|
||||||
|
* If mass is set to 0 the body will have infinite mass, so it will be
|
||||||
|
* immovable, static. @ref EPHYSICS_BODY_MASS_STATIC can be used too.
|
||||||
|
*
|
||||||
|
* Negative mass is not allowed.
|
||||||
|
*
|
||||||
|
* By default, a body is created with 1 kg.
|
||||||
|
*
|
||||||
* @note The unit used for mass is kilograms.
|
* @note The unit used for mass is kilograms.
|
||||||
*
|
*
|
||||||
* @param body The body to has its mass set.
|
* @param body The body to has its mass set.
|
||||||
|
|
|
@ -1401,6 +1401,12 @@ ephysics_body_mass_set(EPhysics_Body *body, double mass)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mass < 0)
|
||||||
|
{
|
||||||
|
ERR("Can't set body's mass, it must to be non-negative.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ephysics_world_lock_take(body->world);
|
ephysics_world_lock_take(body->world);
|
||||||
_ephysics_body_mass_set(body, mass);
|
_ephysics_body_mass_set(body, mass);
|
||||||
ephysics_world_lock_release(body->world);
|
ephysics_world_lock_release(body->world);
|
||||||
|
|
Loading…
Reference in New Issue