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