forked from enlightenment/efl
EPhysics: add linear slop setter / getter for world
Constraint solver can be configured using some advanced settings, like the solver slop factor. Linear slop on sequencial impulse constraint solver is used as a factor for penetration. The penetration will the manifold distance + linear slop. SVN revision: 73066
This commit is contained in:
parent
05988c9feb
commit
ea31a552ef
|
@ -565,6 +565,41 @@ EAPI void ephysics_world_event_callback_add(EPhysics_World *world, EPhysics_Call
|
||||||
*/
|
*/
|
||||||
EAPI void *ephysics_world_event_callback_del(EPhysics_World *world, EPhysics_Callback_Type type, EPhysics_World_Event_Cb func);
|
EAPI void *ephysics_world_event_callback_del(EPhysics_World *world, EPhysics_Callback_Type type, EPhysics_World_Event_Cb func);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief
|
||||||
|
* Set linear slop to be used by world.
|
||||||
|
*
|
||||||
|
* Constraint solver can be configured using some advanced settings, like
|
||||||
|
* the solver slop factor.
|
||||||
|
*
|
||||||
|
* The default value is set to 0 with a small value results in a smoother
|
||||||
|
* stabilization for stacking bodies.
|
||||||
|
*
|
||||||
|
* Linear slop on sequencial impulse constraint solver is used as a factor
|
||||||
|
* for penetration. The penetration will the manifold distance + linear slop.
|
||||||
|
*
|
||||||
|
* @param world The physics world.
|
||||||
|
* @param linear_slop New linear slop value to be used by constraint solver
|
||||||
|
* of physics engine.
|
||||||
|
*
|
||||||
|
* @ingroup EPhysics_World
|
||||||
|
*/
|
||||||
|
EAPI void ephysics_world_linear_slop_set(EPhysics_World *world, double linear_slop);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief
|
||||||
|
* Get linear slop used by world.
|
||||||
|
*
|
||||||
|
* @param world The physics world.
|
||||||
|
* @return Linear slop value used by constraint solver of physics engine or 0
|
||||||
|
* on failure.
|
||||||
|
*
|
||||||
|
* @see ephysics_world_linear_slop_set() for details.
|
||||||
|
*
|
||||||
|
* @ingroup EPhysics_World
|
||||||
|
*/
|
||||||
|
EAPI double ephysics_world_linear_slop_get(EPhysics_World *world);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -642,6 +642,30 @@ ephysics_world_render_geometry_get(EPhysics_World *world, Evas_Coord *x, Evas_Co
|
||||||
if (h) *h = world->h;
|
if (h) *h = world->h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ephysics_world_linear_slop_set(EPhysics_World *world, double linear_slop)
|
||||||
|
{
|
||||||
|
if (!world)
|
||||||
|
{
|
||||||
|
ERR("Can't set linear slop, world is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
world->dynamics_world->getSolverInfo().m_linearSlop = btScalar(linear_slop);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI double
|
||||||
|
ephysics_world_linear_slop_get(EPhysics_World *world)
|
||||||
|
{
|
||||||
|
if (!world)
|
||||||
|
{
|
||||||
|
ERR("Can't get linear slop, world is null.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return world->dynamics_world->getSolverInfo().m_linearSlop;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue