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.
This document was generated using
texi2html