|
From: Markus R. <rol...@un...> - 2008-02-17 10:28:13
|
Hi all,
in order to set up a todo list I looked through the diff between our
two repositories (simspark and soccer3d)
There are a whole bunch of compile fixes (f), small additional helper
functions (h) and renames in the simspark repo. But there are also
some new concepts (c) and reorganizations.
[Salt library]
- (h) matrix.h InvertMatrix()
[Zeitgeist library]
- (f) class: {h,cpp}: removed some static shared_ptr instances, their
use count never gets zero resulting a memory leaks
- (h) core: catchsignal() implements a stack walker that dumps the
callstack if the server crashes (using the gnu addr2line tool)
- (c) core: keep track of already loaded bundles. The server happily
reloaded bundles multiple times
- (c) core, class: Registry of cached path name lookups. In the
soccer3d repo every node implements the lookup and caching of paths
itself (e.g. to well known server locations). This is now moved into
the core and allows a refresh of all cached paths with a simple
function call(). This change affects the whole tree, but is only a
small change to most classes.
- (h) node, leaf: GetnumberOfChildren()
- (c) leaf: assure that each child node has a unique name. Check for
name clashes and append a numeric postfix (i.e <name>1, <name>2)
- (f) various compile fixes for win32 build
[Oxygen library]
- (c) class TransformCollider. This class implements the Ode transform
collider concept for composite bodies. For this class to work various
other classes need to be adapted to be aware of a TransformCollider. I
think Sander already made a patch to port this to the soccer3d repo?
- (c) OdeObject and all derived classes: The destruction of managed
ODE objects is moved from the destructor into a separate virtual
function DestroyODEObject(). This is necessary to destroy all ODE
object in the scene in a defined order if the scene is rebuilt (e.g. a
robot that is contained in its own Space is dropped from the scene)
The major problem was that an ODE space must not be destroyed before
all contained ODE objects are destroyed (this resulted in crashs
within ODE). Currently this is not an issue for the socced3d
simulation as robots usually connect and are never destroyed again
during one server run. Unlinking a Space node and recursively
destroying all child nodes did not achieve this. See (space.cpp
Space::DestroySpaceObjects()) for the implementation.
- (h) body: Several additional wrapper methods for ODE mass
calculation Addphere, AddSphereTotal, AddBox, PrepareBoxTotal,
AddBoxTotal, AddMass...
- (h): SynchronizeParent() factored out from
PostPhysicsUpdateInternal()
- (h) camera: new LookAt() function that points the camera to a given
coordinate
- (c) FpsController: The FpsController gained a 'static update'
functionality. This enables the controller to be moved even if the
simulation is paused. In the soccer3d repo camera movement is
implemented using an ODE body. The updates of the controller therefore
only work if the simulation is running. If you pause the simulation
the camera position freezes.
- (c): The SceneServer maintains a 'scene dictionary'. The idea is to
keep track by which specific line of source code (e.g. rsg file) any
given object was created.
Each importer therefore enters the needed information into the scene
dictionary of the scene server. This is a weak mapping from 'leaf
pointer' to a file reference. A file reference is the name of a source
file and a line number.
This functionality allowed rsgedit (the spark gui tool) to show the
source code location for any object you double clicked. Maybe this
functionality is stil valuable for debug purposes? (e.g annotating
scene dumps)
[kerosin library]
- (c) OpenGLSystem: The setup of the opengl output windows was
factored out into a separate OpenGLSytem class. This was useful to
implement different opengl system (the classic SDL based, a wxWidget
win32 based and on Ogre [1] based for Mac OS X)
- (C) MaterialExternal: Oliver implemented a set of helper classes to
use material systems from the OpenGLSystem used. In his case he used
the Ogre materialsystem and translated our material definitions using
these classes.
The above list should serve as a rough overview and todo list to
cherry pick changes from the simspark repo into the soccer3d repo (if
we choose to stay with the current repo)
cheers,
Markus
[1] http://www.ogre3d.org/
|