|[ < ]||[ > ]||[ << ]||[ Up ]||[ >> ]||[Top]||[Contents]||[Index]||[ ? ]||[ Search: ]|
This section documents the major changes between versions 0.94 and 0.96 of of Crystal Space.
The new template class
csRef<> automates reference count manipulation,
thus freeing programmers from the task of manipulating reference counts
manually. When assigned,
csRef<> increments the reference count of the
target object by invoking the object's
IncRef() method. When the
csRef<> is destroyed, or when it is re-assigned, it decrements the
object's reference count via
DecRef(). This frees clients from having
DecRef() manually, thus helping to
alleviate a potential source of resource leaks. The companion template
csPtr<> has also been added as a micro-optimization for certain cases
when it is desirable to avoid reference count manipulation during assignment.
See the smart pointer HOWTO for additional information,
Correctly Using Smart Pointers. Also see the API documentation for
The Crystal Space API has been largely updated to return
csPtr<> from functions which transfer ownership of an object to the
caller of the function. Client code which used to assign results of such
function calls to a normal pointer and invoke
IncRef() on that pointer
should now instead simply assign the result to a
csRef<>, and allow the
reference count to be managed automatically. See the smart pointer HOWTO
for complete details. See section Correctly Using Smart Pointers.
The header for ‘iPolygonMesh’ has moved from ‘include/ivaria’ to ‘include/igeom’.
The following functions have been removed:
Instead there is now a new routine called
iMeshObject::GetObjectModel() which will return an instance of
‘iObjectModel’. The functions can be called from that instance.
A similar change has taken place in the ‘iVisibilityObject’ interface.
The map format has changed to XML. Use the ‘cs2xml’ tool to convert old maps like this (with a real path to a zip file):
or (with a VFS path):
The old parser is gone. We switched to XML.
The following macros have been removed:
Fast interfaces are now default. Just use the normal query versions instead of the ones above.
For interfaces the ‘scfGetID_Interfacename’ and the ‘VERSION_Interfacename’ have been renamed to ‘Interfacename_scfGetID’ and ‘Interfacename_VERSION’ for making namespaces working nicely with them.
Some targets for the ‘make’ facility (all applications, some plugins) have changed. In general, the name of a target is now the same as the name of the resulting binary (without suffix). For example, ‘walktest’ is now built with ‘make -k walktest’ instead of ‘make -k walk’. However, the composite target names have not been changed. To build ‘walktest’ and all required plugins, one still invokes ‘make -k walkall’.
iLoader::LoadSound() that returns an
now returns a pointer that has a reference count of one more compared
The following methods have moved:
The following methods were eliminated:
The procedural texture system has been rewritten. See the documentation for
iGraphics3D::SetRenderTarget() for details.
The interpretation of the matrix used in the ‘hardmove’ tag for mesh factories (‘meshfact’) has been inverted so it is more logical and also corresponds with the wah ‘hardmove’ is interpreted for mesh objects (‘meshobj’).
The old octree culler is now completely gone. Instead you should use Dynavis now. If you still have an old level that uses this culler then you can try to convert it using the ‘levtool’ utility but this is only a temporary measure. It is a lot better to design the level with Dynavis in mind. To convert an old level do this:
levtool -dynavis old_level.zip
Note that the statements ‘culler’ and ‘vistree’ are no longer supported in world files. The loader will give an error if it finds them.
All the macro versions of the growing arrays and vectors have been removed
and replaced with corresponding templated arrays (see section Utility Library (
example, the following macros and all derivatives have been removed:
|[ < ]||[ > ]||[ << ]||[ Up ]||[ >> ]||[Top]||[Contents]||[Index]||[ ? ]|
This document was generated using texi2html 1.76.