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

2.1 Directory Hierarchy

Written by Thomas Hieber, thieber@gmx.net.
Updated by Chris Forno, jcore@arbornet.org.

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

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 file `vfs.cfg' also resides in this directory.

CS/out
This directory is used by the build process if you build the project using "make" or "jam" within the source tree. It is also possible (and recommended) to build the project in some other location. This directory will contain all object, dependency, and other files needed for building the Crystal Space applications, libraries, and plugins.

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
Miscellaneous scripts used by the project maintainers.

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 utilize 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 file `CS/docs/html/index.html' that resides here.

CS/docs/pubapi
This directory contains the Crystal Space SDK's public API reference manual rendered in HTML format.

CS/docs/support
This directory contains support scripts and templates for automatically generating documentation.

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.3 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/basic
Collections, movable sector list, polygon edges
CS/libs/csengine/light
Lighting system
CS/libs/csengine/objects
Things and mesh objects

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. Here you will find bumpmapping, mipmapping, quantizers, and routines to support loading an image file (through the various image loading plug-ins).

CS/libs/cssys
All system-dependent source and make files (non-graphics and non-sound related) are located here.

CS/libs/cssys/general
Code which may be shared between system drivers that can make use of it.
CS/libs/cssys/macosx
MacOS/X
CS/libs/cssys/unix
Unix, Linux, FreeBSD, NetBSD, Solaris, Irix, etc.
CS/libs/cssys/win32
Windows 32-bit (9x, NT, ME, 2000, XP)

CS/libs/cstool
This library contains low-level code that the rest of Crystal Space depends on. It includes procedural textures, a video preference manager, 2D animations, key-value pairs, screen effects, map nodes, and more.

CS/libs/csutil
This library contains various utilities. The utilities include an archiver, configuration manager, virtual clock, scheduler, strings, hash maps, SCF (see section 6.3 Shared Class Facility (SCF)), MD5 algorithm, map file parser, command-line parser, event structures, and many others.

CS/libs/csws
The Crystal Space Windowing System which is nicely integrated with Crystal Space and is also platform independent.

CS/mk
This directory contains the common parts of the makefiles for many systems

CS/mk/msvcgen
Component for automatic generation of Visual C++ project files based upon information gleaned from GNU makefiles project-wide.
CS/mk/visualc6
Project files for Win32 using MSVC 5.0/6.0
CS/mk/visualc7
Project files for Win32 using MSVC 7.0

CS/plugins
Dynamically loaded plug-ins. Communication with these modules is performed strictly via SCF interfaces. See section 6.3 Shared Class Facility (SCF).

CS/plugin/aws
Alternate Windowing System.

CS/plugins/bugplug
Crystal Space debugger.

CS/plugins/collide
Collision detection plugins.

CS/plugins/collide/rapid
This is the RAPID collision detection plugin.

CS/plugins/collide/opcode
This is the Opcode collision detection plugin which is based upon the Opcode library.

CS/plugins/console
Various console plugins for input/output. A console is typically overlayed on top of the 3D display.

CS/plugins/cscript
The Crystal Script plugins. Crystal Script plugins allow programmers to interact with the Crystal Space engine in a scripting language.

CS/plugins/cscript/csperl5
Perl5 interface.

CS/plugins/cscript/cspython
Python SWIG interface.

CS/plugins/csparser
A plugin which parses ASCII map files and imports the map into the 3D engine.

CS/plugins/csparser/services
Crystal Space format loader services (for CS World loading).

CS/plugins/culling
Visibility culling plug-ins.

CS/plugins/culling/dynavis
Dynavis visibility culling system
CS/plugins/culling/frustvis
Frustvis visibility culling system (default culler if no other is selected)

CS/plugins/device
Hardware device plugins.

CS/plugins/device/joystick
Joystick input support (currently only for Linux).

CS/plugins/engine
The engines which drive Crystal Space. Both 3D and isometric engines are available.

CS/plugins/engine/3d
The 3D engine plugin. It is recommended that you employ the Crystal Space engine via this plugin module, rather than linking directly with the `csEngine' library.

CS/plugins/engine/iso
The isometric engine provides 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/filesys
Filesystem-related plugins.

CS/plugins/filesys/vfs
Virtual Filesystem, VFS. See section 7.2 Virtual File System (VFS).

CS/plugins/font
Collection of font servers.

CS/plugins/font/server/csfont
Standard (bitmapped) Crystal Space font server.
CS/plugins/font/server/freefont
FreeType (version 2) font server.
CS/plugins/font/server/fontplex
Font server multiplexer.

CS/plugins/isoldr
Isometric world loader plug-in.

CS/plugins/mesh
Various mesh object implementations (see section 7.9 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/standard/' is the loader in Crystal Space format.

CS/plugins/motion
Skeletal motion.

CS/plugins/net
Network communications.

CS/plugins/net/driver/ensocket
A very thin wrapper over BSD-style Sockets.

CS/plugins/net/driver/socket
BSD Sockets network driver. This driver provides an implementation of the very generic `iNetworkDriver', `iNetworkConnection', etc. interfaces. It is much more abstract and generic than the `ensocket' driver. Use of this driver is recommended over the other.

CS/plugins/perfstat
Performance statistics.

CS/plugins/physics
Plug-ins relating to the physics of motion.

CS/plugins/physics/odedynam
ODE dynamics.

CS/plugins/reporter
Reporter.

CS/plugins/sequence
This is the sequence manager which is useful for managing timed sequences of events such as for demos.

CS/plugins/sound
Audio plugins.

CS/plugins/sound/driver
Platform-specific sound drivers.

CS/plugins/sound/driver/coreaudio
CoreAudio sound driver (MacOS/X).
CS/plugins/sound/driver/oss
Open Sound System (OSS) sound driver (UNIX).
CS/plugins/sound/driver/waveoutsd
WaveOut sound driver (Win32).

CS/plugins/sound/loader
Loaders for various sound file formats.

CS/plugins/sound/renderer
Platform- or facility-specific sound renderers.

CS/plugins/sound/renderer/arts
"aRts" sound renderer

CS/plugins/sound/renderer/common
Common sound rendering utility functions.

CS/plugins/sound/renderer/ds3d
DirectSound 3D sound renderer.

CS/plugins/sound/renderer/eax
EAX sound renderer.

CS/plugins/sound/renderer/software
Software sound renderer.

CS/plugins/stdrep
Standard report listener.

CS/plugins/video
All plugins directly related to rendering to a video surface.

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

CS/plugins/video/canvas/asciiart
ASCII Art driver.

CS/plugins/video/canvas/common
Common code for 2D drivers.

CS/plugins/video/canvas/ddraw
Windows DirectDraw driver.

CS/plugins/video/canvas/ddraw8
Windows DirectDraw (version 8) driver.

CS/plugins/video/canvas/directxcommon
Common DirectX (Win32) code.

CS/plugins/video/canvas/macosx
MacOS/X OpenGL, CoreGraphics, and Cocoa 2D graphics drivers.

CS/plugins/video/canvas/memory
Memory driver (render a scene directly to memory).

CS/plugins/video/canvas/null2d
NULL 2D driver.

CS/plugins/video/canvas/openglcommon
Common code for all OpenGL 2D drivers.

CS/plugins/video/canvas/openglwin
OpenGL 2D driver for Windows.

CS/plugins/video/canvas/openglx
OpenGL 2D driver for X11.

CS/plugins/video/canvas/softx
X11 software 2D driver.

CS/plugins/video/canvas/svgalib
SVGAlib driver (Linux).

CS/plugins/video/canvas/xextf86vm
X-extension driver (X11).

CS/plugins/video/canvas/xextshm
MIT X-extension shared memory driver (X11).

CS/plugins/video/canvas/xwindow
X-windows X11 driver.

CS/plugins/video/format
Code for playing video files on a surface.

CS/plugins/video/format/avi
Audio-Video Interlace format.

CS/plugins/video/format/codecs
Video codecs for various formats (currently only AVI).

codecs/divx4
DivX version 4.

codecs/opendivx
OpenDivX.

codecs/rle
Run-Length Encoded.

CS/plugins/video/loader
Loaders for various graphics file formats.

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.

CS/plugins/video/renderer/common
Common code for 3D rasterizers.

CS/plugins/video/renderer/null
NULL renderer (required to work with 2D graphics only).

CS/plugins/video/renderer/opengl
OpenGL renderer.

CS/plugins/video/renderer/software
Software (non-accelerated) renderer.

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

This document was generated using texi2html