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

2.1 Directory Hierarchy

Written by Thomas Hieber, thieber@gmx.net. Last updated 21 June 2002 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 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/out
This directory is used by the build process. It 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
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 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.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/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.4 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/visualc
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.4 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/cslua
Lua SWIG interface

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 engine plugin: the preferred method of interfacing with the Crystal Space engine.

CS/plugins/engine/3d
The main 3D engine

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/filesys
filesystem-related plugins

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

CS/plugins/font
a 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
the old 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
Ensocket Network Driver

CS/plugins/net/driver/socket
BSD Sockets Network Driver

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
Sound Plugins

CS/plugins/sound/driver
System-dependent 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

CS/plugins/sound/renderer/arts
aRts Sound Renderer

CS/plugins/sound/renderer/common
common sound rendering routines

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). It can be used standalone but it is currently very limited and not very useful (this may change in the future).

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/linex
X11 Line3D driver

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

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
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/inf
Infinite 3D renderer

CS/plugins/video/renderer/line
Line 3D renderer

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