* modules/Location.h, rulesets/Pedestrian.cpp, rulesets/Thing.cpp,
server/WorldRouter.cpp: Store the last movement update time
in location, so it can be used for interpolation elsewhere.
Don't yet update it in the main Move code is this causes movement
jitter.
* common/BaseWorld.h, server/WorldRouter.cpp, server/WorldRouter.h:
Modify world interface so it takes a string mode when adjusting
the height of entities. Handle floating and swimming entities
accordingly.
* rulesets/Thing.cpp: Change the order in which mode is checked
so it is available when adjusting height.
* rulesets/mason/define_world.py: Randomise height of fish, so they
look more like they are swimming.
* rulesets/Thing.cpp: Fix leak of Motion object.
* rulesets/World.cpp, rulesets/World.h: Make tileShader a member
variable, and delete it in the destructor to avoid a leak.
* server/PersistantThingFactory.cpp: Fix leak of ScriptFactorys.
* server/PersistantThingFactory_impl.h: Fix leak of Persistor
in ForbiddenThingFactory.
* rulesets/Entity.cpp, rulesets/Thing.cpp: Move Create op subscription
into Entity, as that is where the method is.
* rulesets/World.cpp: Create a boulder entity when the pickaxe
is used on rocky terain.
* client/CharacterClient.cpp: Don't process ops from the server in
* rulesets/Motion.h, rulesets/Motion.cpp: Add a little more API,
and provide stubs of existing methods.
* rulesets/Thing.cpp: Add a motion instance to all physical
entities, and pass mode setting to it.
* rulesets/Thing.cpp: Remove obsolete commented out code.
* server/Account.cpp, server/Connection.cpp:
Add a note about serialno/refno handling when code sends ops
directly to the client.
* server/CommClient.cpp, server/CommClient.h: Clean up some debug
code, and method names.
* server/Lobby.cpp: Fix a case where a private message would fail
silently if account had logged on recenlty but was no longer.
* rulesets/Entity.h: Add a pointer to a Motion object to entities.
* rulesets/Thing.cpp: Add notes about Motion implementation.
Clean up some variable names.
* common/Database.cpp: Fix some lingering missuse of the varconf API.
* rulesets/Thing.cpp: Remove some debug output.
* rulesets/Py_Vector3D.cpp: Add error checking so that normalising
a zero mangitude vector does not abort.
* common/BaseWorld.h, rulesets/Character.cpp, rulesets/Py_World.cpp,
rulesets/PythonThingScript.cpp, rulesets/Stackable.cpp,
rulesets/Thing.cpp, rulesets/World.cpp, server/Account.cpp,
server/Admin.cpp, server/Connection.cpp, server/EntityFactory.cpp,
server/Restoration.cpp, server/WorldRouter.cpp, server/WorldRouter.h:
Rename some functions in the World interface so they make more
sense.
* rulesets/Entity.cpp, rulesets/Entity.h: Add destroyed flag to
Entity so we can tell if its no longer in the world.
* server/WorldRouter.cpp: Cut down the special case handling of
delete ops as we can now broadcast ops from entities that
have been removed from the world.
* rulesets/Entity.cpp, rulesets/Entity.h, rulesets/Thing.cpp,
server/WorldRouter.cpp: Increment reference count on parent
entity when a child has a reference to it.
* common/Property.h, rulesets/Thing.cpp: Clean up some comments.
* rulesets/EntityProperties.cpp: Remove specialisation of
ImmutableProperty::set for EntitySet, as its the same as the
default.
* rulesets/Script.h: Update the copyright date, and clean up some
comments.
* rulesets/Container.cpp, rulesets/Container.h,
tests/Containertest.cpp: New virtualised classes for handling
entity containership, with API that mimics STL set. To be used to
allow entities to handle containership differently.
* rulesets/EntityProperties.cpp: Add specialisation of
ImmutableProperty for Container class.
* rulesets/Character.cpp: Clarify error message on tool use.
* rulesets/Thing.cpp: Allow setting of mode attribute from args
of move op for efficiency.
* server/Player.cpp, server/Admin.cpp, server/Player.cpp:
Add TO to all accounts at the account level, so the client
can tell they are for the account.
* rulesets/Character.cpp, rulesets/EntityProperties.cpp,
rulesets/Thing.cpp: Use pre-increment in for loops.
* server/WorldRouter.cpp: Optimise inserting ops into the queue.
* 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/Entity.cpp, rulesets/MemMap.cpp: Modify FIXME text so
its clearer which ones are part of the same problem.
* rulesets/Thing.cpp: Use a Delete pointer for a Delete operation.
* server/CommServer.cpp, server/CommServer.h: Change references
to clients into sockets. Remove unused version of removeSocket()
which takes an error message.
* Add to the list of predators that chicken avoids.
* rulesets/Thing.cpp, rulesets/Entity.cpp: Don't read bbox in
Entity::getLocation, as it needs to be trivially modifiable,
so it is now only read in Entity::merge.
* rulesets/World.cpp, rulesets/World.h: Add accessor to get height
at a particular point.
* server/Account.cpp: Remove redundant check on new character
location.
* common/BaseWorld.h, server/WorldRouter.cpp, server/WorldRouter.h,
rulesets/Thing.cpp: Add new function for correcting height
of entities to ground level, and use it whenever new entities
are created, or whenever an entity moves.
* 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.
* rulesets/Thing.cpp: Send an Appearance op from new entities
rather than Sight(Create).
* server/WorldRouter.cpp: Accept Appearance and Disappearance
as ops which can be broadcast.
* tests/Worldtest.cpp: Update test to take account of changes
in the BaseWorld interface.
* server/WorldRouter.cpp: Report an error if an entity creation
attempt of unknown type is attempted.
* server/EntityFactory.h, server/EntityFactory.cpp: Modify
unbound rule queue so it handles multiple rules depending
on a single parent.
* server/EntityFactory.cpp: Be much stricter about missing types,
and missing parents of types. Refuse to add types or instances
which have non-existant parents.
* common/BaseWorld.h, rulesets/Thing.cpp, server/Account.cpp,
server/Account.h, server/EntityFactory.h,
server/WorldRouter.cpp, server/WorldRouter.h:
Change names of functions used to add new objects to the world
to reflect that they do this. Handle failure to create an
entity.
* server/Lobby.cpp: Add some debugging messages.
* server/CommServer.cpp: Tweak select loop so that closed connections
are cleaned up as soon as they are detected.
* rulesets/World.cpp: Make demo terrain a bit more mountainous.
* Convert entire codebase over to using Atlas-C++ 0.4.90, as
start of transition to 0.6 API.
* server/Restoration.cpp: Send restored entities a setup op, so the
AI gets initialised as if the entity had just been created.
* Clean up member variable names.
* rulesets/mason/mind/SkelMind.py: Get skeleton to recognise
settlers.
* client/CommClient.cpp, client/CreatorClient.cpp,
client/ObserverClient.cpp, client/Py_CreatorClient.cpp,
common/BaseEntity.cpp, common/BaseEntity.h,
common/types.h, rulesets/Area.cpp, rulesets/BaseMind.cpp,
rulesets/Character.cpp, rulesets/Entity.cpp,
rulesets/Food.cpp, rulesets/Line.cpp,
rulesets/MemMap.cpp, rulesets/Pedestrian.cpp,
rulesets/Plant.cpp, rulesets/Py_Mind.cpp,
rulesets/Py_Object.cpp, rulesets/Py_Thing.cpp,
rulesets/Python_API.cpp, rulesets/Stackable.cpp,
rulesets/Thing.cpp, rulesets/World.cpp,
server/Account.cpp, server/Admin.cpp, server/CommClient.cpp,
server/CommServer.cpp, server/Connection.cpp,
server/EntityFactory.cpp, server/Lobby.cpp,
server/Persistance.cpp, server/Player.cpp,
server/ServerRouting.cpp, server/WorldRouter.cpp:
Switch to using Element as name for Atlas::Message::Object,
to avoid name clashes on Object, and bring into line with
the way Atlas-C++ will be.