[
Top
]
[
Contents
]
[
Index
]
[
?
]
Table of Contents
1. Introduction
1.1 How To Read This Manual
1.2 Current Status
1.3 Using Crystal Space For Your Project
1.4 A Guide to This Documentation
1.5 Feature List
1.6 Where to Get Crystal Space
1.7 Mailing Lists
1.8 Internet Relay Chat (IRC)
1.9 Feedback and Bug Reporting
1.10 Genesis of Crystal Space
1.11 Documentation Authors & Contributors
1.12 Crystal Space Contributors
1.13 GNU Library General Public License
1.14 Parts of CS covered under different licenses
2. Building and Installing
2.1 Directory Hierarchy
2.2 Requirements
2.3 External Libraries
2.4 Platform Specific Instructions
2.4.1 Unix
2.4.2 Windows using Microsoft Visual C++
2.4.2.1 Microsoft Visual C++ 6
2.4.2.2 Microsoft Visual C++ 7
2.4.3 Windows using MinGW
2.4.4 Windows using Cygwin
2.4.5 MacOS/X
2.4.5.1 Library Prerequisites
2.4.5.2 Resources
2.4.5.3 Building
2.4.5.4 Using Crystal Space
2.5 Platform Specific Problems
2.6 Quick Start
3. Configuring Crystal Space
3.1 Common Command Line Options
3.2 Configuration File
3.2.1 System Configuration
3.2.2 Graphics Configuration
3.2.3 Engine Configuration
3.2.4 Sound Configuration
3.2.5 Console Configuration
4. Applications
4.1 Quick Overview
4.2 Walktest
4.2.1 Keyboard Interface
4.2.2 The Console
4.2.2.1 General commands
4.2.2.2 Boolean Commands
4.2.2.3 Value Commands
4.2.2.4 Multi-Choice Commands
4.2.3 Configuration File
4.3 Quake Map Converter (
map2cs
)
4.3.1 Reference for `
map2cs.cfg
'
4.3.2 Classnames and Keys
4.3.3 Invoking
4.3.4 Game-Specific Data
4.4 Quake Model Converter (
mdl2spr
)
5. Tutorials and HOWTO's
5.1 Developing a Crystal Space Application
5.1.1 Basic Crystal Space Concepts
5.1.2 Minimum Application Requirements
5.1.3 Compiling the Application
5.2 Simple Tutorial 1
5.2.1 Simple Header File
5.2.2 Event Handling
5.2.3 Creating a "World"
5.2.4 The Camera
5.2.5 Locomotion (Moving Around)
5.3 Simple Tutorial 2: Sprites
5.3.1 Loading a Material in Memory
5.3.2 Loading a Mesh Factory in Memory
5.3.3 Creating a Mesh from a Factory
5.4 Simple Tutorial 3: Map Loading
5.4.1 Minimal Base Code
5.4.2 Loading The Map
5.4.3 Locating the Camera
5.5
map2cs
Tutorial
5.5.1 Step 1: Links to Required Tools and Data
5.5.2 Step 2: Configuring Worldcraft
5.5.3 Step 3: Configuring `
map2cs
'
5.5.4 Step 4: Creating a Simple Room in Worldcraft
5.5.5 Step 5: Compiling the Room and Testing It
5.5.6 Step 6: Applying Textures
5.5.7 Step 7: Adding Another Room
5.5.8 Step 8: Adding More Detail
5.5.9 Step 9: Adding Manual Sectors
5.5.10 Generating Skybox Textures
5.5.11 Tips for Map Creation
5.6
md32spr
Tutorial
5.7
caltocs
Tutorial
5.7.1 Install Cal3D exporter plugin for 3D Studio MAX
5.7.2
Optional:
Compiling Cal3D and the Cal3D plugin for 3D Studio MAX
5.7.3 Exporting the Geometry and Animations from 3D Studio MAX
5.7.4 Creating the Cal3D model config file
5.7.5
Optional:
Viewing the exported Geometry and Animations in the Cal3D Miniviewer
5.7.6 Create the Crystal Space Library file containing the Sprite
5.7.7
Optional:
View the Crystal Space Sprite in Viewmesh
5.7.8
Optional:
View the Crystal Space Sprite in Walktest
5.8 WinCVS Tutorial
5.8.1 Step 1: Getting the Software
5.8.2 Step 2: Installing the Software
5.8.3 Step 3: Creating a Home Directory
5.8.4 Step 4: Setting WinCVS Preferences
5.8.5 Step 5: Setting Location to Checkout Crystal Space
5.8.6 Step 6: Checking out Crystal Space
5.8.7 Step 7: Updating Crystal Space
5.9 HOWTO
5.9.1 Correctly Using Smart Pointers
5.9.2 Doing Collision Detection
5.9.3 Mesh Lighting and Animation
5.9.4 Mesh Movement
5.9.5 Camera Movement
5.9.6 Pseudo-dynamic Lights
5.9.7 Loading a Level
5.9.8 Loading Images for Pixmaps
5.9.9 Render Priorities and Objects in Sectors
5.9.10 Attaching User Objects to CS Objects
5.9.11 Creating an External Crystal Space Application
5.9.12 Creating an External MSVC Application
5.9.13 Creating an External Application using KDevelop
5.9.14 Setting the CRYSTAL environment variable
5.9.15 Create Your Own Plugin
5.9.16 Simple Map Example
5.9.17 Using a Custom Font
5.9.18 Recording Movies
6. Libraries
6.1 Quick Overview
6.2 System Library (
csSys
)
6.3 Utility Library (
csUtil
)
6.3.1
csObject
6.3.2 Typed Arrays
6.4 Shared Class Facility (SCF)
6.4.1 How it Works
6.4.2 Using SCF
6.4.3 Classes Implementing Multiple Interfaces
6.4.4 Interface Versions
6.4.5 Client Side
6.4.6 Example
6.4.7 Advanced Techniques
6.4.8 Smart Pointers
6.5 Geometry Library (
csGeom
)
6.6 Crystal Space Windowing System (CSWS)
6.6.1 Concepts
6.6.2 Components
6.6.3 Events
6.6.4 Clipping
6.6.5 Quick Tutorial
7. Plug-In Modules and Drivers
7.1 Quick Overview
7.2 Virtual File System (VFS)
7.2.1 Details
7.2.2 Configuration File (`
vfs.cfg
')
7.3 Graphics Drivers
7.3.1 Procedural Texture System
7.4 Sound Drivers
7.5 Network Drivers
7.5.1 EN Socket
7.6 The 3D Engine (
csEngine
)
7.6.1 Components of a World
7.6.2 Portal Engine
7.6.3 Lighting
7.6.4 Cameras and Matrices
7.6.5 Space Warping
7.6.6 Texture Mapping
7.6.6.1 Conventions
7.6.6.2 General Concepts
7.6.6.3 Perspective Correction
7.6.6.4 Bringing it All Together
7.6.6.5 Instructions for Texture Mapper
7.6.6.6 Procedural, Dynamic and Animated Textures
7.6.7 Visibility Culling In Detail
7.6.7.1 Sectors and Portals
7.6.7.2 Visibility Cullers
7.6.7.3 Entities
7.6.7.4 Sector Structure
7.6.7.5 Visibility Culling
7.6.7.6 View Frustum Culling
7.6.7.7 Portal/Sector Visibility
7.6.7.8 In-sector Visibility
7.6.8 Rendering Loop
7.6.9 3D Sprites
7.6.9.1 A Simple 3D Sprite
7.6.9.2 Texturing
7.6.9.3 Shading
7.6.10 Dynamic Worlds
7.7 The Map File Parser (
csParser
)
7.8 Format of Map File (XML)
7.8.1 Initalization Section
7.8.2 World Element Section
7.8.3 World Definition Section
7.8.4 Action Section
7.8.5 Old Format of Map File
7.8.5.1 Grammar
7.8.5.2 Syntax
7.8.5.3 Hints
7.9 Mesh Object Plug-In System
7.9.1 MeshObject Concepts
7.9.2 Using Mesh Objects
7.9.3 Writing Mesh Objects
7.9.4 Sprite2D Mesh Object
7.9.5 Sprite3D Mesh Object
7.9.6 Ball Mesh Object
7.9.7 Emitter Mesh Object
7.9.8 Particle Systems in General
7.9.9 Fountain Mesh Object
7.9.10 Fire Mesh Object
7.9.11 Snow Mesh Object
7.9.12 Rain Mesh Object
7.9.13 Explosion Mesh Object
7.9.14 Spiral Mesh Object
7.9.15 Haze Mesh Object
7.9.16 Terrain Mesh Object
7.9.17 Thing Mesh Object
7.9.18 Metaball Mesh Object
7.10 csPython
7.11 Animation
7.11.1 Introduction
7.11.2 Sprite Actions
7.11.3 The Sprite Action Interface
7.11.4 Moving On
7.12 Importing Model Files
7.12.1 Common Model Data Structure (
iModelData
)
7.13 Alternate Windowing System (AWS)
7.13.1 Quick Start
7.13.2 Signals: Responding To User Input
7.13.3 Creating Custom AWS Components
7.13.3.1 Parameter Delivery
7.13.3.2 Events: Responding To User Actions
7.13.3.3 Sending and Receiving Signals
7.13.4 AWS Standard Sink Trigger Reference
7.13.5 AWS Standard Component Signal and Action Reference
7.13.5.1 All Components
7.13.5.2 Command Button
7.13.5.3 Label
7.13.5.4 Check Box
7.13.5.5 Radio Button
7.13.5.6 Group Frame
7.13.5.7 List Box
7.13.5.8 Scrollbar
7.13.5.9 Textbox
7.13.5.10 Image View
7.13.5.11 Multiline Edit
7.13.5.12 Notebook
7.13.5.13 Notebook Page
7.13.5.14 Bar Chart
7.13.6 In-Depth Explanation of AWS Architecture
7.13.7 Using QT Designer To Create AWS Definition Files
8. Internal Project Structure
8.1 Platform-Specific Details
8.1.1 MacOS/X
8.1.1.1 Contents
8.1.1.2 Run-Loop
8.1.1.3 Cocoa Video Optimization
8.1.1.4 Cocoa Frame Buffer
8.1.1.5 Dynamic Linking
8.2 Dependencies
8.3 Makefile How-To
8.3.1 Overall Structure
8.3.2 Variable Naming Conventions
8.3.3 Output Directory
8.4 Crystal Space Memory Debugger
8.4.1 Usage
8.4.2 Map File Format
8.4.3 How It Works
8.5 Threads in Crystal Space
9. Contributing to Crystal Space
9.1 Writing Documentation
9.2 Portability
9.3 Coding Style
9.4 CVS Etiquette Guidelines
9.5 Porting to a New Platform
A. Glossary
B. Frequently Asked Questions (FAQ)
C. Significant API Changes
C.1 API Changes from 0.96 to 0.98
C.2 API Changes from 0.94 to 0.96
C.3 API Changes from 0.92 to 0.94
C.4 API Changes from 0.90 to 0.92
C.5 API Changes from 0.18 to 0.90
C.6 API Changes from 0.17 to 0.18
C.7 API Changes from 0.16 to 0.17
Index
This document was generated using
texi2html