mirror of
https://github.com/love2d/love.git
synced 2026-08-12 08:30:56 +02:00
Error instead of crashing when a frequency of 0 is set on a MouseJoint. Resolves issue #1197.
--HG-- branch : minor
This commit is contained in:
@@ -25,6 +25,8 @@
|
||||
#include "World.h"
|
||||
#include "Physics.h"
|
||||
|
||||
#include <float.h>
|
||||
|
||||
namespace love
|
||||
{
|
||||
namespace physics
|
||||
@@ -78,6 +80,12 @@ float MouseJoint::getMaxForce() const
|
||||
|
||||
void MouseJoint::setFrequency(float hz)
|
||||
{
|
||||
// This is kind of a crappy check. The frequency is used in an internal
|
||||
// box2d calculation whose result must be > FLT_EPSILON, but other variables
|
||||
// go into that calculation...
|
||||
if (hz <= FLT_EPSILON * 2)
|
||||
throw love::Exception("MouseJoint frequency must be a positive number.");
|
||||
|
||||
joint->SetFrequency(hz);
|
||||
}
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ int w_MouseJoint_setFrequency(lua_State *L)
|
||||
{
|
||||
MouseJoint *t = luax_checkmousejoint(L, 1);
|
||||
float arg1 = (float)luaL_checknumber(L, 2);
|
||||
t->setFrequency(arg1);
|
||||
luax_catchexcept(L, [&]() { t->setFrequency(arg1); });
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user