Module CS/plugins/mesh/stars/object/

back to main page

Summary Period: 2001-06-11 to 2003-06-22

Modules

[root]/CS/plugins/mesh/stars/object

Lines Of Code


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

Authors

Author Changes Lines of code Lines per change
Totals 74 (100.0%) 1520 (100.0%) 20.5
sunshine 16 (21.6%) 582 (38.3%) 36.3
philwyett 10 (13.5%) 576 (37.9%) 57.6
jorrit 41 (55.4%) 173 (11.4%) 4.2
wouter 2 (2.7%) 168 (11.1%) 84.0
matzebraun 1 (1.4%) 10 (0.7%) 10.0
miklby 2 (2.7%) 7 (0.5%) 3.5
ab031ns 1 (1.4%) 3 (0.2%) 3.0
vengeance2001 1 (1.4%) 1 (0.1%) 1.0

Most Recent Commits

sunshine 2003-06-22 22:38

Eric Sunshine removed the unused, obsolete, and deprecated top-level <name>
node from the .csplugin files.

0 lines of code changed in:

sunshine 2003-06-05 15:45

Eric Sunshine performed Phase Three of the elimination of the monolithic
scf.cfg:

-*- Eliminated the SCF information which was hardcoded in the .cpp files
of plugin modules, and which duplicated information in the external
.csplugin files.

-*- Plugin modules no longer maintain and export a monolithic class list.
Now, each factory implemented by the code is exported automatically.

-*- Added a new <implementation> child node to the <class> node in
.csplugin files. The value of this node is the name of the C++ class
which implements the SCF class. For instance, C++ class csVFS
implements crystalspace.kernel.vfs.

-*- Eliminated the following SCF macros which were related to exporting
SCF information from .cpp code and/or registering classes manually:

SCF_EXPORT_CLASS_TABLE
SCF_EXPORT_CLASS
SCF_EXPORT_CLASS_DEP
SCF_EXPORT_CLASS_TABLE_END
SCF_REGISTER_STATIC_CLASS_DEP

-*- Eliminated the following methods from iSCF:

RegisterStaticClass
RegisterClassList

-*- Plugin modules are now initialized/shutdown lazily as classes are
requested from them. The first time a class is requested, the plugin
is initialized. The plugin is shutdown after the last class instance
has been destroyed.

-*- Fixed bug in scf.h where SCF_PRINT_CALL_ADDRESS was not being enabled
for gcc 3.x.

-*- Fixed bug in win32.jam where GenerateExportDefs rule failed to ensure
that directory containing output file existed before creating file.
Also fixed bug where it failed to set up a dependency between the
input and output files.

-*- Still To-Do:

- Remove references to scf.cfg and scfreg from documentation. Also
document new .csplugin resources.

- Add platform-specific function to scan and locate plugins
automatically rather than using the ad-hoc approach inherited from
scanning for .scf files.

- Add platform-specific function to query a plugin's meta-information.
This should be used by SCF to do the raw extraction. Provide and
finalize API for higher-level clients to access meta-information.

- Augment static linking to work with the new facility. (Removal of
the hardcoded SCF information, has now broken static linking. It
worked until this time, even with all of the preceding changes.)

1 lines of code changed in:

jorrit 2003-05-29 08:06

Replaced NULL with 0.

7 lines of code changed in:

sunshine 2003-05-26 09:49

Eric Sunshine performed Phase One of the elimination of the monolithic
scf.cfg:

-*- Plugin modules are now self-describing. This information can be
queried at run-time without having to actually load the module.

-*- The plugin maintainer now manages the plugin's meta-information in an
external .csplugin file, rather than hard-coding the information into
the plugin's source code. The mechanism by which the meta-information
is bound to the plugin is platform-dependent. Presently, all
platforms simply lay down the meta-information in a plain text file
alongside the plugin itself; with the same basename and extension
.csplugin. This may change in the future. For example, on MacOS/X,
the meta-information will probably be encapsulated within the plugin's
bundle wrapper.

-*- Plugin meta-information is now maintained in XML format. Here is an
example:

<?xml version="1.0"?>
<!-- gl3d.csplugin -->
<plugin>
<name>gl3d</name>
<scf>
<classes>
<class>
<name>crystalspace.graphics3d.opengl</name>
<description>OpenGL 3D graphics driver</description>
<requires>
<class>crystalspace.font.server.</class>
</requires>
</class>
</classes>
</scf>
</plugin>

-*- Since meta-information is now extensible, maintainers can choose to
publish supplementary information about plugins (in addition to the
SCF information already published). For example, image loading
plugins could publish "image indendification" information which would
allow the image loading multiplexor to selectively request image
loading plugins on-demand, rather than requesting all plugins
unconditionally, even if they are not needed. Here is an example of a
possible meta-information table for the PNG loader:

<?xml version="1.0"?>
<!-- cspngimg.csplugin -->
<plugin>
<name>cspngimg</name>
<scf>...</scf>
<imageloader>
<imagetype>
<class>crystalspace.graphic.image.io.png</class>
<identify>
<mimetype>image/png</mimetype>
<extension>png</extension>
<extension>PNG</extension>
<scan length="4" bytes="\0x89PNG"/>
</identify>
</imagetype>
</imageloader>
</plugin>

In this example, the PNG loader meta-information tells the multiplexor
several different ways to identify a PNG image: by checking file
extension, if available; by checking MIME type, if available; by
checking for the magic-string "\0x89PNG" in the raw image data. If
the multiplexor identifies the image as PNG, only then will it
actually request the PNG loader.

-*- Added the --meta-file directive to msvcgen.pl to allow specification
of the meta-information file for a module. The value of this option
is interpolated into template files via the new %metafile% variable.
msvcgen.mak now utilizes this flag with the value of the new
INC.PROJECT makefile variable. Augmented the MSVC6 and MSVC7 plugin
template files (plugin.tpl) to make use of %metafile%.

-*- Changed the file extension for plugins on MacOS/X from .csplugin to
.csbundle to avoid conflict with new meta-information resource which
uses the extension .csplugin.

-*- Still To-Do:

- Augment SCF to utilize the new meta-information resources, and to
understand the new XML format. Presently, these resources are
ignored at run-time.

- Add platform-specific function to scan and locate plugins
automatically, rather than relying upon a monolithic registry such
as scf.cfg.

- Add platform-specific function to query a plugin's meta-information.

- Eliminate the monolithic scf.cfg.

- Augment static linking to work with the new facility.

- Eliminate the hard-coded SCF registration information in each
plugin's source code.

15 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.

2 lines of code changed in:

sunshine 2003-04-27 11:33

Eric Sunshine made the following changes:

-*- Modified configure.ac so that it emits a SRCDIR property to
config.mak. This value represents the --srcdir argument given to the
configure script (or "." if --srcdir is omitted). This points at the
directory containing the CS source code (which may differ from the
build directory, which is typically the current working directory).

-*- Modified makefiles and build scripts throughout the project so that
they respect $(SRCDIR). This allows the project to be built in a
directory other than the source directory, thus it is possible to
place the source directory on a readonly filesystem (such as a
CD-ROM), or to share a single NFS-mounted source directory among
different builds, where each build inhabits its own directory. For
example, if CS resides at /home/CS and you wish to build the project
in /home/build:

% cd /home/build
% ../CS/configure
% make -k all
% make install

(Note that the Jam-base build system already supports this build
paradigm.)

-*- Modified configure.ac so that it emits EXTENSIVE_MEMDEBUG to
config.mak since this variable is used by Makefile.in for the
`showconfig' target.

-*- Modified configure.ac so that it emits MONITOR_MAKEFILE_CACHE when the
value is either "yes" or "no", instead of emitting it only when the
value is "yes". This was necessary because CS/mk/cache.mak prints the
value of this variable as part of $(SYSMODIFIER).

3 lines of code changed in:

jorrit 2003-04-15 14:15

- Added the following functions to iObjectModel:
- GetPolygonMeshBase: Get a polygon mesh representing the
basic geometry of the object.
- SetPolygonMeshColldet: Set a polygon mesh representing the
geometry of the object. This mesh is useful for collision
detection. This can be used to replace the default polygon mesh
returned by GetPolygonMeshColldet() with one that has less
detail or even to support polygon mesh for mesh objects that
otherwise don't support it. The object model will keep a
reference to the given polymesh.
- SetPolygonMeshViscull: Similar to SetPolygonMeshColldet() but
now for visibility culling (occluder writing).
- Added csObjectModel helper class to csgeom to help implement object
models for mesh object plugins.
- Fixed all mesh object implementations to use the new csObjectModel.

3 lines of code changed in:

jorrit 2003-04-14 15:59

- Added csColliderHelper::InitializeCollisionWrapper() which initializes
collision detection for a mesh and all children.
- Added iMeshObjectFactory->GetObjectModel(). This is an optional
method which factories can implement similar to the GetObjectModel()
in iMeshObject. If the factory contains the geometry for a model
then it is prefered that the factory has the object model. This
allows for better sharing of similar data between instances using
the same factory.
- Genmesh now implements GetObjectModel() in the factory.
- Spr3d now implements GetObjectModel() in the factory.
- InitializeCollisionWrapper() will now actually check if the parent
factory supports GetObjectModel() and if so it will share the
collider.

1 lines of code changed in:

matzebraun 2003-04-08 20:18

added the Jamfiles

10 lines of code changed in:

jorrit 2003-02-14 20:39

Mesh objects used to have an old system where a particle system
could remove itself by returning true with WantToDie(). However
this system is slow since the engine has to check this flag
every frame. I replaced this with a new function in the engine
(which is also called WantToDie()). With that functions objects
(like particle systems) can schedule themselves so that they are
deleted the next frame. The engine will only have to check if
there are any sheduled deletions every frame. Much faster...

0 lines of code changed in:

ab031ns 2002-12-23 22:26

Renamed/corrected header defines to CS coding-style.

3 lines of code changed in:

jorrit 2002-12-18 12:10

- Removed 'culler_mesh' in csSector. That is no longer valid
with the removal of the octree.
- Added iMovable::IsTransformIdentity() and TransformIdentity().
With this feature the movable will track if the transform
is still an identity transform. If that's the case then some
entities (like engine and cullers) can optimize based on that
fact. These two functions also make sure the engine doesn't have
to use the equivalent thing flags to do the same optimization.
- Added csTransform::Identity() and IsIdentity().
- Also added iMovable::IsFullTransformIdentity() which corresponds
to the GetFullTransform() being an identity transform.
- Optimized Dynavis and Frustvis by using IsFullTransformIdentity()
and avoiding the transforms in that case.
- Additionally optimized all mesh objects and parts of the engine
to test for the identity transform and avoid some matrix
manipulations or even more in some cases.

12 lines of code changed in:

jorrit 2002-11-25 15:01

- Added a new CS_POLY_VISCULL flag with which it is possible to
enable/disable visibility culling for individual polygons (thing
mesh only). By default this flag is enabled except in the following
cases:
- Polygon has an <alpha> keyword.
- Image associated with the texture of this polygon has
keycolor.
- Image associated with the texture of this polygon has
an alpha map.
Note that it is the polygon loader in syntax services that
actually provides these defaults. If you manually create polygons
with the API the default is always true.
- Extended syntax services plugin with new <viscull> keyword that
you can use in a polygon to enable/disable visibility culling for
individual polygons. Similar to the <colldet> keyword.
- Renamed iObjectModel->GetSmallerPolygonMesh() to
GetPolygonMeshViscull() as this more closely describes what the
purpose is of this polygon mesh.
- Renamed iObjectModel->GetPolygonMesh() to GetPolygonMeshColldet().

2 lines of code changed in:

vengeance2001 2002-11-03 08:51

Added spatial displacement differentials to keyframe animation of sprites.
This resulted in an extra parm to NextFrame, which is stubbed out in all
mesh subclasses and used in Sprite3d.

1 lines of code changed in:

jorrit 2002-11-02 08:04

Completed implementation of the new listener system in
iObjectModel. The next step will be to change the visibility
systems to actually use this new system.

9 lines of code changed in:

jorrit 2002-11-01 21:26

- Removed userdata from iMovableListener. It is not needed.
- Added new iObjectModelListener so you can listen to changes
in an object model. Implemented this partially in all
iObjectModel implementations (i.e. all mesh objects). The listeners
are not yet fired though.

25 lines of code changed in:

jorrit 2002-10-18 15:29

- Removed 8-bit support from the line renderer.
- Moved iTextureManager->FindRGB() to iGraphics2D where it belongs.
- Additionally removed iTextureManager->SetPalette(), ResetPalette(),
and ReserveColor().
- Renamed csColorQuantizer::RGB() to DoRGB() to avoid a conflict
with a define.

1 lines of code changed in:

jorrit 2002-10-02 12:54

- Fixed 'bugplug' console command in walktest.
- Added iMeshObject functions: SetColor(), GetColor(),
SetMaterialWrapper(), and GetMaterialWrapper(). These functions
are conveniance functions so that it is easier to change
color/material for all objects without having to query
for the state interface. Not all mesh objects implement
those functions though. For example, a thing mesh object
doesn't implement either of them since it doesn't have a single
color or material (every polygon has its own color/material).
- The change above greatly simplifies the engine sequence manager
functions to set color and material.
- Started implementing the indexed versions of the operations in the
engine sequence manager.

4 lines of code changed in:

jorrit 2002-09-26 11:27

- Onclick seems to work mostly but HitBeam() is not accurate
enough. More work later...
- Replaced most 'entity_...' stuff in flarge with new sequencer
operations.
- Removed support for most entity related stuff in walktest.
A few still remain.
- Fixed several memory leaks with functions returning
a csPtr casted from csRef and which still assumed that a
DecRef() would happen (which it doesn't know because there
is a constructor for csPtr from csRef which does an IncRef).
- Added the ability to start a trigger disabled in the trigger
loader.
- Started working on cleaning up the sector HitBeam() routines
and also making them more accurate. Unfinished so still unused
at this moment.

4 lines of code changed in:

jorrit 2002-09-11 16:32

Rest of commit.

5 lines of code changed in:

(34 more)


Generated by StatCvs v0.2-dev