2.1 Directory Hierarchy
Written by Thomas Hieber, thieber@gmx.net.
This section is intended to explain the general CS directory structure. It
lists all the directories, however some may be missing from your copy of
Crystal Space if you just downloaded the files for a specific port like
Linux or Win32.
Crystal Space consists of the following directories:
CS
- The main directory for Crystal Space. You can choose any path for it, as long
as it is supported by your operating system. This is the path that all
compiled programs end up in. This should be your working directory for these
executables. The two files `vfs.cfg' and `scf.cfg' also reside in this directory.
CS/apps
- This is where all applications which ship with Crystal Space reside.
See section 4. Applications.
CS/apps/tests
- Applications for testing specific features of the project reside here.
CS/bin
- Some scripts to support the build process on various platforms.
CS/data
- Here you should place your levels like `flarge.zip'. You can use any
directory for this, so this is only a suggestion. If you change the name, you
must update the information in the configuration for the Virtual File System,
(`vfs.cfg').
CS/data/config
- Most applications and plugins utilise a (`.cfg') file. For convenience they
are all grouped here.
CS/docs
- The root of the Crystal Space documentation hierarchy. There are several
subdirectories.
CS/docs/texinfo
- Texinfo is the master format for all Crystal Space documentation. This
directory and its subdirectories contain all of the Texinfo source and images
which comprise the Crystal Space manual. Most users need not concern
themselves with this directory since the Texinfo documentation is
automatically converted to HTML which is more accessible to the general
user. Documentation writers and maintainers may be interested in this
directory.
CS/docs/html
- This directory contains the HTML conversion of the Texinfo Crystal Space
documentation. Most users will want to look at the `CS/docs/html/index.htm'
that resides here.
CS/docs/incoming
- This is a temporary staging area for documentation which has not yet been
converted to Texinfo format. Much of this documentation is useful and worth
perusing.
CS/docs/pubapi
- This directory contains the Crystal Space SDK's public API reference manual
rendered in HTML format.
CS/include
- Here are the headers that can be used from other modules. The path for the
headers reflect the structure of the modules in the `CS/lib' directory. So for
further explanation of a specific directory see the `CS/lib' section.
Include files which live in this directory itself (i.e. not deeper in the
hierarchy) contain definitions for SCF interfaces.
See section 6.4 Shared Class Facility (SCF).
CS/libs
- Here is where all the modules provided by Crystal Space live. Some modules will
consist of only one subdirectory, others will be a combination of several
subdirectories.
CS/libs/csengine
- The 3D engine is one of the cornerstones of Crystal Space and also what
originally sparked the birth of the Crystal Space project. It needs the 3D
rasterizer component to display output and also requires a number of other
libraries (csutil, csgeom, csgfxldr). The 3D engine exports a number of
SCF interfaces to allow access through the SCF mechanism.
CS/libs/csengine/light
- Lighting system
CS/libs/csengine/objects
- Things and Mesh objects
CS/libs/csengine/polygon
- Polygon related functionality
CS/libs/csgeom
- The geometry library. Various geometry related functions and classes can be
found here: matrices, vectors, transforms, clipper, planes, etc.
CS/libs/csgfx
- The graphics library. Routines to support loading various graphic file
formats (through plugins) and put them internally in the same format.
Through this library you can get at JPG, GIF, TGA, PNG,
and BMP files.
CS/libs/cssys
- All system dependent stuff (non-graphics and non-sound related) is in this
library.
CS/libs/cssys/general
- Code which may be shared between system drivers that can make use of it.
CS/libs/cssys/be
- BeOS
CS/libs/cssys/djgpp
- DOS using the DJGPP compiler
CS/libs/cssys/mac
- MacOS/9
CS/libs/cssys/next
- MacOS/X, MacOS/X Server 1.0 (Rhapsody), OpenStep, NextStep
CS/libs/cssys/os2
- OS/2
CS/libs/cssys/unix
- Unix, including Linux, Solaris, Irix, etc.
CS/libs/cssys/win32
- Win32
CS/libs/csutil
- This library contains various utilities. There is an Archive class which can
read and/or write ZIP archives. There is a vector class, a sparse matrix class
and some other useful goodies. This library requires the use of the external
`zlib' library which is used to read/write ZIP archives.
CS/libs/csws
- The Crystal Space Window System which is nicely integrated with Crystal Space.
It is also platform independent.
CS/mk
- This directory contains the common parts of the makefiles for many systems
CS/mk/mwcw
- Project files for MacOS/9 CodeWarrior
CS/mk/msvcgen
- Component for automatic generation of Visual C++ project files based upon
information gleaned from GNU makefiles project-wide.
CS/mk/visualc
- Project files for Win32 using MSVC 5.0/ 6.0
CS/plugins
- Plug-in, dynamically loaded modules. Communication with these modules is
performed strictly via SCF interfaces. See section 6.4 Shared Class Facility (SCF).
CS/plugins/csparser
- A plugin which parses ASCII map files and imports the map into the
3D engine.
CS/plugins/video/canvas
- The 2D driver component which manages creation of the Crystal Space window
used for rendering and also supports limited 2D drawing capabilities
(including 2D pixmaps). It can be used standalone but it is currently very
limited and not very useful (this may change in the future). There are several
implementations of this component. All are specific to some 3D Rasterizer
(for example, the OpenGL 3D Rasterizer on Unix requires the OpenGL 2D XLib
Driver).
CS/plugins/video/canvas/common
- Common code for 2D drivers
CS/plugins/video/canvas/be
- BeOS version
CS/plugins/video/canvas/csdive
- OS/2 version
CS/plugins/video/canvas/ddraw
- Win32 using Direct Draw
CS/plugins/video/canvas/ddraw61
- Win32 using Direct Draw (DirectX 6.1)
CS/plugins/video/canvas/dosraw
- DOS
CS/plugins/video/canvas/ggi
- Unix, using GGI
CS/plugins/video/canvas/softx
- Unix, using X
CS/plugins/video/canvas/svgalib
- Unix, using SVGAlib
CS/plugins/video/canvas/mac
- MacOS/9
CS/plugins/video/canvas/next
- MacOS/X, MacOS/X Server, OpenStep, NextStep
CS/plugins/video/canvas/openglcommon
- Common code for all OpenGL 2D drivers
CS/plugins/video/canvas/openglbe
- OpenGL 2D driver for BeOS
CS/plugins/video/canvas/openglmac
- OpenGL 2D driver for MacOS/9
CS/plugins/video/canvas/openglos2
- OpenGL 2D driver for OS/2
CS/plugins/video/canvas/openglwin
- OpenGL 2D driver for Win32
CS/plugins/video/canvas/openglx
- OpenGL 2D driver for Unix/X Windows
CS/plugins/video/renderer
- The 3D rasterizer component is required by the 3D engine but may also be
used in a standalone environment. It requires a 2D Driver to function.
There are currently several classes of this component which correspond
to particular APIs: software, OpenGL, and Direct3D. Some rasterizers
are operating system independent, such as OpenGL and software. Some
rasterizer technology is only available on certain operating systems,
such as DirectX.
CS/plugins/video/renderer/common
- Common code for 3D rasterizers
CS/plugins/video/renderer/direct3d61
- Direct3D rasterizer using DirectX 6.1
CS/plugins/video/renderer/opengl
- 3D rasterizer using OpenGL
CS/plugins/video/renderer/software
- Software based rasterizer
CS/plugins/video/renderer/line
- A vector based rasterizer (draws only lines)
CS/plugins/video/renderer/inf
- The infinite rasterizer (draws nothing at all)
CS/plugins/video/renderer/null
- The null rasterizer (required to work with 2D graphics only)
CS/plugins/video/format
- Support for playing video files on a texture.
CS/plugins/net/driver
- Network drivers. The only existing driver is a BSD socket-based
TCP/IP driver.
CS/plugins/cscript/cspython
- PYTHON scripting module.
CS/plugins/sequence
- This is the sequence manager which is useful for managing timed sequences
of events such as for demos.
CS/plugins/bugplug
- BUGPLUG is a small plugin that gives debugging facilities to any
Crystal Space application. Just load the plugin and it works.
CS/plugins/collide/rapid
- This is the RAPID collision detection plugin. In the future we may
have other collision detection plugins in the `CS/plugins/collide'
directory.
CS/plugins/engine/3d
- If you want to use the engine as a plugin then this directory contains
the needed support. Using the engine as a plugin is the perferred method.
CS/plugins/engine/iso
- This is an alternative engine used in Crystal Space. It gives an isometric view
instead of a real 3D view. Mesh objects can also work with this engine
with a few limitations (mostly regarding size).
CS/plugins/sound/driver
- System dependent sound drivers. There are currently drivers for MacOS/9,
OSS (Unix), and Windows.
CS/plugins/sound/driver/macsnd
- Sound driver for MacOS/9
CS/plugins/sound/driver/oss
- Sound driver for Unix
CS/plugins/sound/driver/waveoutsd
- Sound driver for Win32
CS/plugins/sound/loader
- Loaders for various sound file formats.
CS/plugins/sound/renderer
- Support for 3D sound (DS3D or SOFTWARE only at the moment).
CS/plugins/console
- Various console plugins for input/output. A console is typically overlayed
on top of the 3D display.
CS/plugins/mesh
- Various mesh object implementations. See section 7.8 Mesh Object Plug-In System.
For every mesh object there is typically one implementation in OBJECT
and one or more loader/saver plugins in PERSIST. PERSIST/CLASSIC
is the loader in Crystal Space format.
CS/plugins/font/server/csfont
- Standard Crystal Space font server.
CS/plugins/font/server/freefont
- Freefont font server.
CS/plugins/font/server/fontplex
- Font server multiplexer.
CS/support
- Support routines.
CS/support/debug
- Support routines for extensive memory checking.
CS/support/gnu
- Replacement for `bison.simple', which is missing on some systems.
This document was generated
using texi2html