From: Ben S. <non...@us...> - 2002-11-11 04:39:49
|
nonchocoboy 2002/11/10 20:39:48 PST Modified files: src BoundsSweepCollisionDetector.cpp BoundsSweepCollisionDetector.h CollisionDetector.h GameState.cpp OpenSGSceneViewer.cpp OpenSGSceneViewer.h PhysicsEngine.cpp RigidBody.cpp RigidBody.h SConscript vc7/midworld midworld.vcproj Added files: src BodyChangeEvent.cpp BodyChangeEvent.h BodyChangeListener.h Log: Bug fixed: Actually use the body's path in when testing against the spatial index rather than its bounds at its initial pos. This fixes problems where objects were allowed to pass through walls. Bug fixed: Stop sticking! We now "push back" objects a bit from the point of collision so that we don't leave them in a colliding state for the next frame. Bug fixed: All objects no longer collide against everybody else during the first frame. We now force OpenSG to update the bounding volume each time an entity is changed. Sorry for the tons of debugging output, but I wanted to make this huge commit now while it works. Big changes here. Rigid bodies now fire events to listeners when they are changed. This makes it so that we can update ourscene graph (and thus the body's bounds) immediately rather than the next frame. I reverted CollisionDetector back to only reporting the first collision. I don't know what I was thinking earlier. Our hack of a ground plane collision is now made before the body change is "committed" so that the bounding volume is correct for the collision detector. Revision Changes Path 1.1 +15 -0 midworld/src/BodyChangeEvent.cpp (new) 1.1 +20 -0 midworld/src/BodyChangeEvent.h (new) 1.1 +17 -0 midworld/src/BodyChangeListener.h (new) 1.5 +58 -33 midworld/src/BoundsSweepCollisionDetector.cpp 1.3 +2 -3 midworld/src/BoundsSweepCollisionDetector.h 1.8 +3 -8 midworld/src/CollisionDetector.h 1.113 +5 -2 midworld/src/GameState.cpp 1.12 +113 -41 midworld/src/OpenSGSceneViewer.cpp 1.6 +14 -3 midworld/src/OpenSGSceneViewer.h 1.10 +32 -9 midworld/src/PhysicsEngine.cpp 1.21 +28 -2 midworld/src/RigidBody.cpp 1.24 +16 -2 midworld/src/RigidBody.h 1.61 +2 -2 midworld/src/SConscript 1.31 +9 -0 midworld/vc7/midworld/midworld.vcproj http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/BodyChangeEvent.cpp?rev=1.1&content-type=text/plain http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/BodyChangeEvent.h?rev=1.1&content-type=text/plain http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/BodyChangeListener.h?rev=1.1&content-type=text/plain http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/BoundsSweepCollisionDetector.cpp.diff?r1=1.4&r2=1.5&diff_format=h http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/BoundsSweepCollisionDetector.h.diff?r1=1.2&r2=1.3&diff_format=h http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/CollisionDetector.h.diff?r1=1.7&r2=1.8&diff_format=h http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/GameState.cpp.diff?r1=1.112&r2=1.113&diff_format=h http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/OpenSGSceneViewer.cpp.diff?r1=1.11&r2=1.12&diff_format=h http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/OpenSGSceneViewer.h.diff?r1=1.5&r2=1.6&diff_format=h http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/PhysicsEngine.cpp.diff?r1=1.9&r2=1.10&diff_format=h http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/RigidBody.cpp.diff?r1=1.20&r2=1.21&diff_format=h http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/RigidBody.h.diff?r1=1.23&r2=1.24&diff_format=h http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/src/SConscript.diff?r1=1.60&r2=1.61&diff_format=h http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/isugamedev/midworld/vc7/midworld/midworld.vcproj.diff?r1=1.30&r2=1.31&diff_format=h |