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

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.

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

This document was generated using texi2html