| ## Public API Reference

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

# Crystal Space 3D Engine

## Modules
| Lighting
| Mesh support
| Renderloops & Rendersteps
| Textures & Materials
| Views & Cameras
| Visibility
## Classes
struct | csFog
| Sector fog structure. More...
struct | csSectorHitBeamResult
| Return structure for the iSector->HitBeam() routines. More...
struct | iEngine
| This interface is the main interface to the 3D engine. More...
struct | iEngineFrameCallback
| A callback that will be fired whenever the engine starts drawing a frame. More...
struct | iEngineSectorCallback
| A callback that will be fired whenever a sector is created or removed from the engine. More...
struct | iImposter
| iImposter defines the interface a mesh (or other) class must implement to be used as imposter mesh by the engine. More...
struct | iLightVisibleCallback
| A callback that is fired whenever a light is visible. More...
struct | iMeshGenerator
| iMeshGenerator defines the interface for a mesh generator. More...
struct | iMeshGeneratorGeometry
| This interface defines one piece of geometry for the mesh generator. More...
struct | iMovable
| This interface represents the position and orientation of an object relative to its parent (this is the transformation between local object space of the model and world space (i.e. More...
struct | iMovableListener
| Implement this class if you're interested in hearing about movable changes. More...
struct | iObjectWatcher
| This is a generic object watcher. More...
struct | iObjectWatcherListener
| Implement this class if you're interested in hearing about object watcher events. More...
struct | iPortal
| This is the interface to the Portal objects. More...
struct | iPortalCallback
| When a sector is missing this callback will be called. More...
struct | iPortalContainer
| A container for portals. More...
struct | iRegion
| A region. More...
struct | iRegionList
| A list of region objects. More...
struct | iSceneNode
| This interface represents a node in the scene graph. More...
struct | iSceneNodeArray
| An array of scene node interfaces. More...
struct | iSector
| The iSector interface is used to work with "sectors". More...
struct | iSectorCallback
| Set a callback which is called when this sector is traversed. More...
struct | iSectorIterator
| An iterator to iterate over sectors. More...
struct | iSectorList
| A list of sectors. More...
struct | iSectorMeshCallback
| Set a callback which is called when a mesh is added or removed from this sector. More...
struct | iSharedVariable
| iSharedVariable implements a refcounted value which can be shared across many objects and updated efficiently. More...
struct | iSharedVariableList
| A list of shared variables. More...
struct | iSharedVariableListener
| A listener so that you can get notified when a variable is changed. More...
## SetLightingCacheMode() settings
#define | CS_ENGINE_CACHE_NOUPDATE 4
| Do not calculate lighting if not up-to-date.
#define | CS_ENGINE_CACHE_READ 1
| Read the cache.
#define | CS_ENGINE_CACHE_WRITE 2
| Write the cache.
## Operations
Operations indicate what has changed in one of the objects that is being watched.
#define | CS_WATCH_LIGHT_ATTENUATION 8
| Light has changed attenuation.
#define | CS_WATCH_LIGHT_COLOR 4
| Light has changed color.
#define | CS_WATCH_LIGHT_DESTROY 1
| Light has been destroyed.
#define | CS_WATCH_LIGHT_MOVE 2
| Light has moved.
#define | CS_WATCH_LIGHT_RADIUS 3
| Light has changed radius.
#define | CS_WATCH_LIGHT_SECTOR 5
| Light has changed sector.
#define | CS_WATCH_MOVABLE_CHANGED 7
| Movable has changed otherwise.
#define | CS_WATCH_MOVABLE_DESTROY 6
| Movable has been destroyed.
#define | CS_WATCH_NONE 0
| No operation recorded yet.
#define | CS_WATCH_SECTOR_NEWMESH 9
| Sector has a new mesh.
#define | CS_WATCH_SECTOR_REMOVEMESH 10
| Sector has a removed mesh.
## RegisterRenderPriority() flags
enum | csRenderPrioritySorting { CS_RENDPRI_SORT_NONE = 0, CS_RENDPRI_SORT_BACK2FRONT = 1, CS_RENDPRI_SORT_FRONT2BACK = 2 }
## Defines
#define | CS_PORTAL_CLIPDEST 0x00000001
| If this flag is set then this portal will clip all geometry in the destination sector.
#define | CS_PORTAL_CLIPSTRADDLING 0x00000002
| If this flag is set then this portal will clip geometry of an object that is straddling this portal (i.e.
#define | CS_PORTAL_COLLDET 0x00000080
| If this flag is set then this portal is used for collision detection.
#define | CS_PORTAL_FLOAT 0x00000040
| If this flag is used then the portal will use possible available stencil buffer on the hardware to do good clipping.
#define | CS_PORTAL_MIRROR 0x00000010
| If this flag is set then this portal mirrors space (changes order of the vertices of polygons).
#define | CS_PORTAL_STATICDEST 0x00000020
| A flag which indicates if the destination of this portal should not be transformed from object to world space.
#define | CS_PORTAL_VISCULL 0x00000100
| If this flag is set then this portal is used for visibility culling.
#define | CS_PORTAL_WARP 0x00000008
| If this flag is set then this portal will do space warping.
#define | CS_PORTAL_ZFILL 0x00000004
| If this flag is set then this portal will do a Z-fill after rendering the contents.
## Enumerations
enum | csFogMode

## Define Documentation

#define CS_ENGINE_CACHE_NOUPDATE 4

Do not calculate lighting if not up-to-date.

On by default.

Definition at line 99 of file engine.h.

#define CS_ENGINE_CACHE_READ 1

Read the cache.

Definition at line 89 of file engine.h.

#define CS_ENGINE_CACHE_WRITE 2

Write the cache.

Definition at line 94 of file engine.h.

#define CS_PORTAL_CLIPDEST 0x00000001

If this flag is set then this portal will clip all geometry in the destination sector.

This must be used for portals which arrive in the middle of a sector.

Definition at line 53 of file portal.h.

#define CS_PORTAL_CLIPSTRADDLING 0x00000002

If this flag is set then this portal will clip geometry of an object that is straddling this portal (i.e.

the object is both in the source and destination sector and the portal 'cuts' the object). This is only needed if the portal is on a surface that is transparent. A space warping portal will do this automatically.

Definition at line 62 of file portal.h.

#define CS_PORTAL_COLLDET 0x00000080

If this flag is set then this portal is used for collision detection.

Definition at line 111 of file portal.h.

#define CS_PORTAL_FLOAT 0x00000040

If this flag is used then the portal will use possible available stencil buffer on the hardware to do good clipping.

This flag should be used if you have a portal that is not at the boundary of the sector and that can be covered (or itself covers) other objects. It is usually used in combination with CS_PORTAL_ZFILL and sometimes with CS_PORTAL_CLIPDEST if the destination of the portal enters in the middle of a sector.

Definition at line 106 of file portal.h.

#define CS_PORTAL_MIRROR 0x00000010

If this flag is set then this portal mirrors space (changes order of the vertices of polygons).

Don't set this flag directly. It will be automatically set if a mirroring space warp is used with SetWarp().

Definition at line 87 of file portal.h.

#define CS_PORTAL_STATICDEST 0x00000020

A flag which indicates if the destination of this portal should not be transformed from object to world space.

For mirrors you should disable this flag because you want the destination to move with the source.

Definition at line 95 of file portal.h.

#define CS_PORTAL_VISCULL 0x00000100

If this flag is set then this portal is used for visibility culling.

Definition at line 116 of file portal.h.

#define CS_PORTAL_WARP 0x00000008

If this flag is set then this portal will do space warping.

You can use this to implement mirrors or other weird portal effects. Don't set this flag directly. Use SetWarp() instead. It is safe to disable and query this flag though.

Definition at line 80 of file portal.h.

#define CS_PORTAL_ZFILL 0x00000004

If this flag is set then this portal will do a Z-fill after rendering the contents.

This is mainly useful for floating portals where it is possible that there is geometry in the same sector that will be rendered behind the portal (and thus could accidently get written in the portal sector because the Z-buffer cannot be trusted).

Definition at line 72 of file portal.h.

#define CS_WATCH_LIGHT_ATTENUATION 8

Light has changed attenuation.

Definition at line 57 of file objwatch.h.

#define CS_WATCH_LIGHT_COLOR 4

Light has changed color.

Definition at line 49 of file objwatch.h.

#define CS_WATCH_LIGHT_DESTROY 1

Light has been destroyed.

Definition at line 43 of file objwatch.h.

#define CS_WATCH_LIGHT_MOVE 2

Light has moved.

Definition at line 45 of file objwatch.h.

#define CS_WATCH_LIGHT_RADIUS 3

Light has changed radius.

Definition at line 47 of file objwatch.h.

#define CS_WATCH_LIGHT_SECTOR 5

Light has changed sector.

Definition at line 51 of file objwatch.h.

#define CS_WATCH_MOVABLE_CHANGED 7

Movable has changed otherwise.

Definition at line 55 of file objwatch.h.

#define CS_WATCH_MOVABLE_DESTROY 6

Movable has been destroyed.

Definition at line 53 of file objwatch.h.

#define CS_WATCH_NONE 0

No operation recorded yet.

Definition at line 41 of file objwatch.h.

#define CS_WATCH_SECTOR_NEWMESH 9

Sector has a new mesh.

Definition at line 59 of file objwatch.h.

#define CS_WATCH_SECTOR_REMOVEMESH 10

Sector has a removed mesh.

Definition at line 61 of file objwatch.h.

## Enumeration Type Documentation

enum csRenderPrioritySorting

Enumerator:

  CS_RENDPRI_SORT_NONE | Do not sort this priority.
  CS_RENDPRI_SORT_BACK2FRONT | Sort this priority back to front.
  CS_RENDPRI_SORT_FRONT2BACK | Sort this priority front to back.

Definition at line 104 of file engine.h.