summaryrefslogtreecommitdiff
path: root/servers/physics_2d
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2016-08-31 17:58:51 -0300
committerJuan Linietsky <reduzio@gmail.com>2016-08-31 17:58:51 -0300
commitfc70824f7c6ab1944d54194f54b816e55671e177 (patch)
treebfb5645fa22c724d9f2f8724c809f6319ca51579 /servers/physics_2d
parent5567350e1bf28ca9468b8321378f19e67ee03909 (diff)
More improvements to visual script..
fixed a bug of not saving when sub-nodes changed.
Diffstat (limited to 'servers/physics_2d')
-rw-r--r--servers/physics_2d/space_2d_sw.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp
index 5fde6f567b..366eda6913 100644
--- a/servers/physics_2d/space_2d_sw.cpp
+++ b/servers/physics_2d/space_2d_sw.cpp
@@ -681,11 +681,21 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body,const Vector2&p_motion,float p
Vector2 a = sr[i*2+0];
Vector2 b = sr[i*2+1];
+ Vector2 rel = b-a;
+ float d = rel.length();
+ if (d==0)
+ continue;
+
+ Vector2 n = rel/d;
+ float traveled = n.dot(recover_motion);
+ a+=n*traveled;
+
+
// float d = a.distance_to(b);
//if (d<margin)
/// continue;
- recover_motion+=(b-a)*0.4;
+ recover_motion+=(b-a)*0.2;
}
if (recover_motion==Vector2()) {