* rulesets/Thing.cpp: Use != for logical exclusive or on bools.
* physics/Collision.cpp: Re-write complete excluseive or
implementation and replace with !=.
* modules/Location.cpp, modules/Location.h:
Add const accessors for location data, in preparation for
adding cached collision data which must be updated every
time data is modified.
* physics/Collision.cpp, rulesets/Character.cpp, rulesets/Entity.cpp,
rulesets/Entity.h, rulesets/MemMap.cpp, rulesets/Movement.cpp,
rulesets/Pedestrian.cpp, rulesets/Plant.cpp,
rulesets/Py_Location.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
server/Account.cpp, server/EntityFactory.cpp, server/Persistor.cpp,
server/Persistor_impl.h, server/Restorer_impl.h,
server/WorldRouter.cpp, tests/Locationtest.cpp:
Use the const accessors whenver reading data from Location.
* rulesets/Movement.cpp: Add an assert check to ensure collision
code is working ok.
* physics/Collision.cpp: Fix a bug where emergence from a container
was incorrectly predicted because the final emerging corner was
mispredicted.
* physics/BBox.cpp, physics/BBox.h: Add functions to cheapy
determine the bounding radius of a bounding box.
* physics/Collision.cpp: Add a coarse collision test to the beginning
of collision prediction, to avoid the full expensive test in
most cases.
* modules/Location.cpp, physics/Collision.cpp, rulesets/Character.cpp,
rulesets/Entity.cpp, rulesets/Movement.cpp, rulesets/Movement.h,
rulesets/Pedestrian.cpp: Make sure orientation is not used if it
is not valid.
* physics/Collision.cpp: Need to check whether orientation
is valid, and if not apply just translation.
* rulesets/Py_Location.cpp: Fix an error message to give the right
type.
* physics/Vector3D.h, physics/Vector3D.cpp, modules/Location.h,
modules/Location.cpp: Convert to using WFMath::Point instead of
WFMath::Vector for position.
* physics/Collision.h, physics/Collision.cpp: Update collision code
to use new pos type.
* rulesets/Py_Point3D.h, rulesets/Py_Point3D.cpp: New python
wrappers for WFMath::Point.
* rulesets/Py_Location.cpp, rulesets/Py_Vector3D.cpp,
rulesets/Python_API.cpp:
Update python wrappers to take into account new pos type.
Ensure that only apropriate functionality is available for
point and vector.
* rulesets/Character.cpp, rulesets/Entity.cpp, rulesets/Entity.h,
rulesets/Line.cpp, rulesets/Movement.cpp, rulesets/Movement.h,
rulesets/Pedestrian.cpp, rulesets/Pedestrian.h,
rulesets/Plant.cpp, rulesets/Thing.cpp, rulesets/World.cpp,
server/EntityFactory.cpp, server/WorldRouter.cpp,
server/WorldRouter.h: Update the rest of the code for new pos
type, converting all places where entity parenting is changed
to use WFMath toParentCoords() and toLocalCoords() methods,
so that orientation is handled correctly.
* tests/transformtest.cpp: New test to ensure that toParentCoords()
and toLocalCoords() perform as expected.
* tests/Creatortest.cpp, tests/Locationtest.cpp, tests/Worldtest.cpp,
tests/collisiontest.cpp, tests/emergencetest.cpp:
Update the rest of the tests.
* rulesets/Thing.cpp, rulesets/World.cpp, server/WorldRouter.cpp:
Delete commented out code for old range checks.
* modules/Location.h, physics/BBox.h, physics/Collision.cpp,
physics/Vector3D.h, rulesets/Entity.h: Remove obsolete math
functions for doing silly calculations with boxes.
* physics/Collision.cpp: Sort out a weird floating pointe problem
with emergence test. Now works. Remove debug output.
* tests/emergencetest.cpp: Implement a suitable minimal set of tests.
* rulesets/Movement.cpp: Switch to using the new code.
* physics/Collision.h, physics/Collision.cpp: Work on code predicting
when entity leaves parent.
* tests/emergencetest.cpp: Add test for emergence code.
* common/const.cpp, common/const.h, common/random.h,
physics/BBox.h, physics/Collision.cpp, physics/Collision.h,
physics/Quaternion.cpp, physics/Quaternion.h, physics/Vector3D.h,
rulesets/Movement.cpp, rulesets/Plant.cpp, rulesets/Python_API.cpp,
tests/collisiontest.cpp: Update variables relating to geometry
from double to float as this is the type used internall by
WFMath.
* physics/Vector3D.cpp, physics/Quaternion.cpp, physics/Quaternion.h:
Remove legacy code.
* server/CommPSQLSocket.cpp: Reformatting.
* server/CommPSQLSocket.h, server/CommPSQLSocket.cpp,
common/Database.h: Work in progress on Comm object to handle
non-blocking database communication.
* physics/Collision.cpp: Remove obsolete FIXME about non-valid
velocity.
* physics/Collision.h, physics/Collision.cpp: Fix vertex/plane
collision function by removing returned normal, because it is
always the plane normal. Implement returning collision
normal from the mesh collision function.
* physics/Collision.cpp: Modify collision behavoir so we only
detect collisions in the future, while still detecting
collisions that are in progress. Add debugging and some
FIXMEs.
* rulesets/Movement.h, rulesets/Movement.cpp,
rulesets/Pedestrian.cpp: Switch to using new collision
code.
* tests/collisiontest.cpp: Add Location collision function test.
* physics/Collision.cpp: Fix box transformation and displacement
code. Handle locations which don't have an orientation. Test
now works.
* physics/Collision.cpp: Small fix to mesh collision function,
and add controlled debugging output.
* tests/collisiontest.cpp: Fixes to mesh collision test. Now works.
* physics/Collision.h, physics/Collision.cpp: Fix mesh collision
functions. Modify return status of vertex/plane collision
return value so its more useful.
* modules/Location.cpp, physics/Collision.cpp, physics/Collision.h,
physics/Vector3D.h: Move recently developed collision code into
module of its own, and give functions a new name.
* tests/collisiontest.cpp: Update test accordingly.