## Public API Reference

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

# Mesh support
[Crystal Space 3D Engine]

## Modules

| Mesh plugins

## Classes

struct | csHitBeamResult
| Return structure for the iMeshWrapper->HitBeam() routines. More...
struct | csScreenBoxResult
| Return structure for iMeshWrapper->GetScreenBoundingBox(). More...
struct | iLODControl
| The iLODControl interface represents an object that has controllable LOD features. More...
struct | iMeshDrawCallback
| Set a callback which is called just before the object is drawn. More...
struct | iMeshDrawCallback
| Set a callback which is called just before the object is drawn. More...
struct | iMeshFactoryList
| A list of mesh factories. More...
struct | iMeshFactoryWrapper
| A mesh factory wrapper is an engine-level object that wraps around a mesh object factory (iMeshObjectFactory). More...
struct | iMeshList
| A list of meshes. More...
struct | iMeshWrapper
| A mesh wrapper is an engine-level object that wraps around an actual mesh object (iMeshObject). More...
struct | iMeshWrapperIterator
| This is an iterator mesh wrappers. More...

## Meshwrapper flags

#define | CS_ENTITY_CAMERA 4
| If CS_ENTITY_CAMERA is set then this entity will be always be centerer around the same spot relative to the camera.
#define | CS_ENTITY_DETAIL 2
| If CS_ENTITY_DETAIL is set then this entity is a detail object.
#define | CS_ENTITY_INVISIBLE (CS_ENTITY_INVISIBLEMESH+CS_ENTITY_NOHITBEAM)
| If CS_ENTITY_INVISIBLE is set then this thing will not be rendered.
#define | CS_ENTITY_INVISIBLEMESH 8
| If CS_ENTITY_INVISIBLEMESH is set then this thing will not be rendered.
#define | CS_ENTITY_NOCLIP 128
| If CS_ENTITY_NOCLIP is set then this entity will be drawn fully (unclipped to portal frustum) and only once for every frame/camera combination.
#define | CS_ENTITY_NOHITBEAM 64
| If CS_ENTITY_NOHITBEAM is set then this thing will not react to HitBeam calls.
#define | CS_ENTITY_NOLIGHTING 32
| If CS_ENTITY_NOLIGHTING is set then this thing will not be lit.
#define | CS_ENTITY_NOSHADOWS 16
| If CS_ENTITY_NOSHADOWS is set then this thing will not cast shadows.

## SetLightingUpdate flags

#define | CS_LIGHTINGUPDATE_ALWAYSUPDATE 2
| If this flag for iMeshWrapper->SetLightingUpdate() is set then the set of relevant lights will be recalculated every time.
#define | CS_LIGHTINGUPDATE_SORTRELEVANCE 1
| This is a flag for iMeshWrapper->SetLightingUpdate().

## Define Documentation

#define CS_ENTITY_CAMERA 4

| If CS_ENTITY_CAMERA is set then this entity will be always be centerer around the same spot relative to the camera. This is useful for skyboxes or skydomes. Important note! When you use an object with this flag you should also add this object to a render priority that also has the camera flag set (see iEngine->SetRenderPriorityCamera()). Definition at line 82 of file mesh.h.

#define CS_ENTITY_DETAIL 2

| If CS_ENTITY_DETAIL is set then this entity is a detail object. A detail object is treated as a single object by the engine. The engine can do several optimizations on this. In general you should use this flag for small and detailed objects. This flag is currently not used. Definition at line 72 of file mesh.h.

#define CS_ENTITY_INVISIBLE (CS_ENTITY_INVISIBLEMESH+CS_ENTITY_NOHITBEAM)

| If CS_ENTITY_INVISIBLE is set then this thing will not be rendered. It will still cast shadows and be present otherwise. Use the CS_ENTITY_NOSHADOWS flag to disable shadows. Making a mesh invisible will also imply that HitBeam() will ignore it. Definition at line 99 of file mesh.h.

#define CS_ENTITY_INVISIBLEMESH 8

| If CS_ENTITY_INVISIBLEMESH is set then this thing will not be rendered. It will still cast shadows and be present otherwise. Use the CS_ENTITY_NOSHADOWS flag to disable shadows. Using this flag does NOT automatically imply that HitBeam() will ignore this mesh. For that you need to set CS_ENTITY_NOHITBEAM. Definition at line 91 of file mesh.h.

#define CS_ENTITY_NOCLIP 128

If CS_ENTITY_NOCLIP is set then this entity will be drawn fully (unclipped to portal frustum) and only once for every frame/camera combination.

This is useful in a scenario where you have an indoor sector with lots of portals to an outdoor sector. In the outdoor sector there is a complex terrain mesh object and you really only want to render that once with full screen and not many times clipped to individual portals.

Definition at line 130 of file mesh.h.

#define CS_ENTITY_NOHITBEAM 64

| If CS_ENTITY_NOHITBEAM is set then this thing will not react to HitBeam calls. Definition at line 119 of file mesh.h.

#define CS_ENTITY_NOLIGHTING 32

| If CS_ENTITY_NOLIGHTING is set then this thing will not be lit. It may still cast shadows though. Use the CS_ENTITY_NOSHADOWS flag to disable that. Definition at line 113 of file mesh.h.

#define CS_ENTITY_NOSHADOWS 16

| If CS_ENTITY_NOSHADOWS is set then this thing will not cast shadows. Lighting will still be calculated for it though. Use the CS_ENTITY_NOLIGHTING flag to disable that. Definition at line 106 of file mesh.h.

#define CS_LIGHTINGUPDATE_ALWAYSUPDATE 2

| If this flag for iMeshWrapper->SetLightingUpdate() is set then the set of relevant lights will be recalculated every time. Otherwise the lights are only recalculated when the object moves or when one of the affected lights changes (default). Definition at line 150 of file mesh.h.

#define CS_LIGHTINGUPDATE_SORTRELEVANCE 1

| This is a flag for iMeshWrapper->SetLightingUpdate(). If this flag is set then only the 'N' most relevant lights will be returned to the object. If not set then 'N' random lights will be returned. Definition at line 142 of file mesh.h.