[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

C.1 API Changes from 0.96 to 0.98

This section documents the major changes between versions 0.96 and 0.98 of of Crystal Space.

Polygon Texture Mapping Changes

The following interfaces have been removed: iPolyTexNone, iPolyTexGouraud, iPolyTexFlat, and iPolyTexLightMap. The combined API from iPolyTexNone and the iPolyTexLightMap have moved to iPolygon3D itself.

iPolygon3D->SetTextureType() and GetTextureType() have been removed. Instead use:

iPolygon3D->GetPolyTexType() has been removed.

The `shading' keyword in polygons now accepts a boolean value instead of `NONE', `FLAT', `GOURAUD', or `LIGHTMAP'. With this you can enable/disable lightmapping.

If you want gouraud shaded polygons you should use the `genmesh' mesh object plugin instead.

Bezier Curve Changes

The notion of curve templates has been reworked. iCurveTemplate has been removed and it's functionality has moved to iCurve itself. As a consequence of this change the bezier addon loader has been removed. Also curves have been seperated from the thing plugin and now live in the 'bezier' plugin. So a curve like this in the past:

 
<addon>
  <plugin>crystalspace.mesh.loader.thing.bezier</plugin>
  <params>
    <name>b1</name>
    <material>mosaic</material>
    <v>0</v> <v>1</v> <v>2</v>
    <v>3</v> <v>4</v> <v>5</v>
    <v>6</v> <v>7</v> <v>8</v>
  </params>
</addon>
<meshfact name="tunnel">
  <plugin>crystalspace.mesh.loader.factory.thing</plugin>
  <params>
    <curvecenter x="0" y="0" z="0" />
    <curvescale>80</curvescale>
    <curvecontrol x="5" y="2" z="0" u="1" v="0" />
    ...
    <curve name="bez">b1</curve>
  </params>
</meshfact>

should now become (mark the new plugin line):

 
<meshfact name="tunnel">
  <plugin>crystalspace.mesh.loader.factory.bezier</plugin>
  <params>
    <curvecenter x="0" y="0" z="0" />
    <curvescale>80</curvescale>
    <curvecontrol x="5" y="2" z="0" u="1" v="0" />
    ...
    <curve name="b1">
      <material>mosaic</material>
      <v>0</v> <v>1</v> <v>2</v>
      <v>3</v> <v>4</v> <v>5</v>
      <v>6</v> <v>7</v> <v>8</v>
    </curve>
  </params>
</meshfact>

On the API side nothing much changes except that when you use the bezier mesh plugin you need to use iBezierState and iBezierFactoryState.

The iThingEnvironment no longer has code to maintain bezier curve templates.

iThingState and iPolygon3D Changes

iPolygon3D and iThingState no longer implement iObject. So the QueryObject() function has been removed. Polygons can still have names though. Added SetName() and GetName() for that.

iPolygon3D has been split in iPolygon3D and iPolygon3DStatic. The static version contains all static data that can be put in a factory. Several functions like iThingState->CreatePolygon() will now return iPolygon3DStatic.

iThingState has been split in iThingState and iThingFactoryState. A thing mesh no longer implements both a mesh object and a mesh object factory. Instead things now work like usual mesh objects where iMeshObjectType->NewFactory() creates a factory that implements iThingFactoryState and iMeshObjectFactory->NewInstance() creates an instance that implements iThingState. The engine conveniance functions to create a thing mesh will automatically create both the factory and mesh so you don't have to worry about that. You can use iThingState->GetFactory() from a thing mesh object to get the iThingFactoryState so you can build the polygons. Note that SCF_QUERY_INTERFACE of iThingFactoryState no longer works on a thing mesh object. You must use GetFactory.

Polygon Planes

Polygon planes are removed. So it is no longer possible to use the plane addon loader to define texture mapping for a polygon outside of the polygon itself. To fix this you must specify all texture mapping information in the texmap statement of the polygon. `map2cs' now correctly outputs polygons like this (no longer outputs planes) and `levtool' can convert old style maps to new format like this:

iThingEnvironment no longer has code to maintain polygon texture mapping planes.

The plane loader and saver addons have been removed from the thing loader plugin.

Removed iPolyTxtPlane interface. Added iPolygon3DStatic->GetTextureSpace() function to get texture space definition for polygon.

 
levtool -planes yourmap.zip

Portal changes

Several methods in iPortal have changed slightly. For example SetMirror now expects a plane instead of a polygon.

Datatype changes

The csSome, csConstSome and uint types have been removed. Use void*, const void* and usigned int instead.

csHashMap changes

csHashIterator can no longer iterate over all objects. To do that you need to use csGlobalHashIterator.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated using texi2html