Module CS/include/imesh/thing/

back to main page

Summary Period: 2001-06-18 to 2003-06-16

Modules

[root]/CS/include/imesh/thing

Lines Of Code


Total Lines Of Code: 773 (2003-07-11 20:29)

Authors

Author Changes Lines of code Lines per change
Totals 97 (100.0%) 1391 (100.0%) 14.3
jorrit 75 (77.3%) 1315 (94.5%) 17.5
ab031ns 7 (7.2%) 21 (1.5%) 3.0
norman 3 (3.1%) 13 (0.9%) 4.3
ate 1 (1.0%) 12 (0.9%) 12.0
mgeisse 3 (3.1%) 10 (0.7%) 3.3
tetron 1 (1.0%) 6 (0.4%) 6.0
vengeance2001 1 (1.0%) 5 (0.4%) 5.0
dentoid 4 (4.1%) 5 (0.4%) 1.2
philwyett 1 (1.0%) 2 (0.1%) 2.0
matzebraun 1 (1.0%) 2 (0.1%) 2.0

Most Recent Commits

jorrit 2003-06-16 09:09

- Jorrit made the <moveable/> option no longer required (it is
now deprecated). The thing mesh object plugin will not automatically
detect if it is needed to switch to moveable or not. So setting
this is no longer required.

5 lines of code changed in:

jorrit 2003-05-29 08:04

Replaced NULL with 0.

6 lines of code changed in:

tetron 2003-05-28 09:35

adds an Unprepare() method

6 lines of code changed in:

jorrit 2003-05-21 11:15

Jorrit did various changes related to portal management:
- Moved iPortal definition from imesh/thing/portal.h to
iengine/portal.h. The reason is that portals are now an engine
concept and not only for things. The only portal implementation
is currently still in thing though.
- Added the ability to get the portal vertices from iPortal.
- Added iMeshObject->GetPortalCount() and iMeshObject->GetPortal().
- Also added default implementations of those to csMeshObject
(supporting no portals).
- At two places in the engine (GetNearbyObjects() and PlaceMesh())
this new function is used instead of first querying for
iThingState. This makes those functions a bit faster and is (in
theory) also more general (in the sense of being able to add
portals to any mesh object). However later on most functions
still query for iThingState so this promise of more generality
is not fulfilled yet.

0 lines of code changed in:

jorrit 2003-04-11 12:19

- Removed the unsupported CS_THING_MOVE_OFTEN flag. Only OCCASIONAL
and NEVER remain.
- Added iPolygon3D->SetMaterial() and GetMaterial().
- Added iThingState->ReplaceMaterial() to scan all polygons and
replace the material with another one (must be the same size!).
The new 'replacematerials' now uses this function.
Additionally added iThingState->ClearReplacedMaterials() to
reset all replaced materials to default (i.e. use from factory).

27 lines of code changed in:

jorrit 2003-04-11 10:36

- Removed iThingFactoryState->MergeTemplate() and ReplaceMaterials().
These don't work correctly and are no longer needed.
- Removed broken support for material sets ('materialselect' and
'matset' keywords).
- Added new 'replacematerial' keyword which you can use in a thing
instance to replace the material used in the factory with another one.
Using this feature you can still reuse a factory even if the
materials are different. Note that the materials MUST have the
same size! i.e. if the factory uses a 64x64 material then you can
only replace it with another 64x64 material.
Currently unimplemented!!!
- Fixed a bug with collision detection and HardTransform of a thing
mesh object. This is a new bug introduced with my changes yesterday
and it was visible in the partsys level (when traversing a portal).

2 lines of code changed in:

jorrit 2003-04-10 14:34

Thing changes:
- Removed obsolete csThingBBox bounding box in csThing.
- Split bezier curves in seperate mesh object plugin (bezier
plugin).
- Greatly cleaned up the csThingStatic stuff and moved all static
stuff to that.
- Updated API modification document.
- Also updated various other parts in the documentation for these
changes.
- Fixed map2cs to export curves using the new bezier plugin.
- Changed the way thing factories and objects work. A thing factory
and a mesh object no longer are the same object. So first you
have to make a factory and then the object. This also allows
sharing of factories between objects.
- As a consequence of all these changes the lightmap format has
changed again.
- Doing a HardTransform() on a thing mesh object will automatically
cause the factory of that thing to be cloned so that other
things sharing that factory will not be transformed.
Doing a HardTransform() on a thing factory will have an
effect on all instances created from that.
- Used csBlockAllocator<T> for a lot of polygon objects in the
thing mesh plugin. This speeds up loading/unloading and also
improves memory usage.
- Merged csPolyTexLightMap into csPolyTexture. This improved
both speed, memory usage, and source code readability.
- Thing now uses ClipBSphere() instead of ClipBBox(). This is
faster.

3 lines of code changed in:

jorrit 2003-03-31 06:28

Fix.

1 lines of code changed in:

jorrit 2003-03-30 21:09

Changed iPortal->SetMirror() to accept a plane instead of a polygon.

3 lines of code changed in:

jorrit 2003-03-30 10:33

- Removed world space warping transformation in portals. Instead this
is now calculated as needed. This part is less optimal but in addition
I optimized the fact that the warp matrix is no longer transformed
if a thing moves and there is no warping.
- Physically split csPolygon3D into csPolygon3DStatic and csPolygon3D.
This is the next step into seperating static thing and mesh objects.
- Several internal orginizations are caused by this in the thing
mesh plugin.

26 lines of code changed in:

jorrit 2003-03-28 09:20

- Removed internal csPolyTxtPlane class from thing and merged
functionality with csPolyTexLightMap.
- Moved some static data to the static part of csPolygon3D.

7 lines of code changed in:

jorrit 2003-03-27 14:28

- Updated API mod doc with regards to this new change.
- Syntax service loader no longer supports loading of planes. It now
gives an error saying you must use levtool -planes.
- Removed all texture mapping plane related stuff from
iThingEnvironment.
- Removed the plane loader and saver addon from the thing loader
plugin.
- Removed iPolyTxtPlane interface and fixed thing plugin related to
that. This should already speed up things a tiny bit.

7 lines of code changed in:

jorrit 2003-03-25 11:40

- Changed API of OpenPortal() to accept a G3DPolygonDFP instead
of a 2D polygon. I need z-information.
- First version of OpenGL implementation of OpenPortal().
- Added CS_PORTAL_FLOAT option for portals. This will enable the
portal to use the new OpenPortal() code.
- Added <float> flag to the portal loading code to enable this new
flag. Currently this new feature is not yet working properly.
Needs more testing and fixing.
- Optimized the polygon drawing structures in graph3d.h a little.

11 lines of code changed in:

jorrit 2003-03-20 10:56

- Split iThingState with iThingState and iThingFactoryState.
- Renamed GetPolygonStatic() to GetPolygon().

105 lines of code changed in:

jorrit 2003-03-19 14:35

Split iPolygon3D into iPolygon3D and iPolygon3DStatic. The static
part contains all information that is static and could be in
a factory. Several functions (like iThingState->CreatePolygon)
will now return an iPolygon3DStatic instead of an iPolygon3D.

49 lines of code changed in:

jorrit 2003-03-19 09:14

- Removed a few unused flags from csPolygon3D.
- In order to be able to make real thing factories (that don't use
up enourmous amounts of memory) I started redesiging the API of
things a bit. The first step is the creation of a csLightMapMapping
structure which defines the static mapping of the lightmap on the
polygon. iPolygonTexture uses that now instead of the direct
values. This should improve efficiency a bit as well as there
are less virtual function calls needed now.

74 lines of code changed in:

jorrit 2003-03-11 11:14

csPolygon3D and csThing no longer inherit from csObject. This added
unneeded overhead (especially in the case of polygons). The
QueryObject() function has been removed. However it is still
possible to set names on polygons. To do that you can use
SetName() and GetName().

7 lines of code changed in:

jorrit 2003-03-06 09:41

- Reworked the notion of curve templates. The iCurveTemplate has
been removed and it's functionality has moved to iCurve itself.
The notion of curve templates has always been a bit curious
as a curve template is just a list of nine vertex indices. So
it didn't make sense to seperate it. As a consequence of this
change the bezier addon loader has been removed. 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:
<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="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>

5 lines of code changed in:

jorrit 2003-03-05 14:42

- Worked a bit further on blocks: now no longer uses gouraud shaded
polygons.
- Completely changed the way polygons can be shaded. Now it is only
possible to use lightmaps. Previously it was also possible to use
gouraud shading but for that it is better to use genmesh (this
support was never very good anyway). The <shading> keyword
has been changed to accept a boolean instead of NONE, FLAT, GOURAUD,
and LIGHTMAP. With this you can enable/disable texture mapping.
Several API calls in iPolygon3D has been modified for this.
Additionally all iPolyTex* interfaces have been removed.
The functions from iPolyTexNone and iPolyTexLightMap have moved
to iPolygon3D.
- Did some further optimizations in the polygon class with regards to
memory usage and also time efficiency. A single polygon now
takes considerably less memory.
- Removed iPolygon3D->GetPolygonID() since this ID was not used
and not useful. Also removed iCurve->GetCurveID().
- Removed cosinus factor API calls from iPolygon3D and moved them
to iThingState instead. Now it is only possible to control this
on a per-thing level. This change also reflects in the thing
loader.
- Remove csPolyPlane and merged all planes into the polygon class.
This saves on object creation and speed (less pointer indirection).
- Removed some fields from csPolyTexture.
- Cache data in csPolyTexture is now allocated on demand. This
makes the structure smaller at the expense of a little more
memory usage for software renderer alone. Only the software renderer
uses this cache data.
- Also removed the camera space plane from the polygon structure.
This camera space plane is now computed as needed (this was
happening anyway).
- Created new API doc appendix for 0.96 to 0.98.

34 lines of code changed in:

jorrit 2003-03-03 09:33

- Added iThingState->Prepare(). This function will prepare the thing
to be ready for use. Normally this doesn't have to be called as the
engine will call this function automatically as soon as the object
is rendered. However, to avoid the (sometimes long) setup time for
an object while walking around an application can choose to call
this function manually in order to increase load time but decrease
the time need to setup things later.

11 lines of code changed in:

(46 more)


Generated by StatCvs v0.2-dev