Loading...
Searching...
No Matches
Ogre::Quake3Level Class Reference
Plugins » BSPSceneManager

Support for loading and extracting data from a Quake3 level file. More...

`#include <OgreQuake3Level.h>`

Inheritance diagram for Ogre::Quake3Level:
[legend]

## Public Member Functions

| Quake3Level ()
void | dumpContents (void)
| Debug method.
void | extractLightmaps (void) const
void * | getLump (int lumpType)
| Utility function to return a pointer to a lump.
int | getLumpSize (int lumpType)
void | initialise (bool headerOnly=false)
| Utility function read the header and set up pointers.
void | initialiseCounts (void)
| Utility function read the header and set up counters.
void | initialisePointers (void)
| Utility function read the header and set up pointers.
void | loadFromStream (const DataStreamPtr &inStream)
| Reads Quake3 bsp data from a stream as read from the file.
void | loadHeaderFromStream (DataStreamPtr &inStream)
| Load just the header information from a Quake3 file.

## Public Attributes

bsp_brush_t * | mBrushes
bsp_brushside_t * | mBrushSides
MemoryDataStreamPtr | mChunk
int * | mElements
void * | mEntities
bsp_face_t * | mFaces
bsp_header_t * | mHeader
int * | mLeafBrushes
int * | mLeafFaces
bsp_leaf_t * | mLeaves
unsigned char * | mLightmaps
unsigned char * | mLumpStart
bsp_model_t * | mModels
bsp_node_t * | mNodes
int | mNumBrushes
int | mNumBrushSides
int | mNumElements
int | mNumEntities
int | mNumFaces
int | mNumLeafBrushes
int | mNumLeafFaces
int | mNumLeaves
int | mNumLightmaps
int | mNumModels
int | mNumNodes
int | mNumPlanes
int | mNumShaders
int | mNumVertices
bsp_plane_t * | mPlanes
bsp_shader_t * | mShaders
bsp_vertex_t * | mVertices
bsp_vis_t * | mVis

## Detailed Description

Support for loading and extracting data from a Quake3 level file.

This class implements the required methods for opening Quake3 level files and extracting the pertinent data within. Ogre supports BSP based levels through it's own BspLevel class, which is not specific to any file format, so this class is here to source that data from the Quake3 format. Quake3 levels include far more than just data for rendering - typically the leaves of the tree are used for rendering, and brushes, are used to define convex hulls made of planes for collision detection. There are also entities which define non-visual elements like player start points, triggers etc and models which are used for movable scenery like doors and platforms. Shaders meanwhile are textures with extra effects and 'content flags' indicating special properties like water or lava. I will try to support as much of this as I can in Ogre, but I won't duplicate the structure or necessarily use the same terminology. Quake3 is designed for a very specific purpose and code structure, whereas Ogre is designed to be more flexible, so for example I'm likely to separate game-related properties like surface flags from the generics of materials in my implementation. This is a utility class only - a single call to loadFromChunk should be enough. You should not expect the state of this object to be consistent between calls, since it uses pointers to memory which may no longer be valid after the original call. This is why it has no accessor methods for reading it's internal state.

## Constructor & Destructor Documentation

## Quake3Level()

Ogre::Quake3Level::Quake3Level | ( |  | ) |

## Member Function Documentation

## loadHeaderFromStream()

void Ogre::Quake3Level::loadHeaderFromStream | ( | DataStreamPtr & | inStream | ) |

Load just the header information from a Quake3 file.

This method loads just the header information from the Quake3 file, in order to estimate the loading time.

## loadFromStream()

void Ogre::Quake3Level::loadFromStream | ( | const DataStreamPtr & | inStream | ) |

Reads Quake3 bsp data from a stream as read from the file.

Since ResourceManagers generally locate data in a variety of places they typically manipulate them as a chunk of data, rather than a file pointer since this is unsupported through compressed archives. Quake3 files are made up of a header (which contains version info and a table of the contents) and 17 'lumps' i.e. sections of data, the offsets to which are kept in the table of contents. The 17 types are predefined (You can find them in OgreQuake3Types.h)

Parameters

  inStream | Stream containing Quake3 data

## extractLightmaps()

void Ogre::Quake3Level::extractLightmaps | ( | void |  | ) | const

## initialise()

void Ogre::Quake3Level::initialise | ( | bool | headerOnly = false | ) |

Utility function read the header and set up pointers.

## initialiseCounts()

void Ogre::Quake3Level::initialiseCounts | ( | void |  | ) |

Utility function read the header and set up counters.

## initialisePointers()

void Ogre::Quake3Level::initialisePointers | ( | void |  | ) |

Utility function read the header and set up pointers.

## getLump()

void * Ogre::Quake3Level::getLump | ( | int | lumpType | ) |

Utility function to return a pointer to a lump.

## getLumpSize()

int Ogre::Quake3Level::getLumpSize | ( | int | lumpType | ) |

## dumpContents()

void Ogre::Quake3Level::dumpContents | ( | void |  | ) |

Debug method.

## Member Data Documentation

## mChunk

MemoryDataStreamPtr Ogre::Quake3Level::mChunk

## mHeader

bsp_header_t* Ogre::Quake3Level::mHeader

## mLumpStart

unsigned char* Ogre::Quake3Level::mLumpStart

## mElements

int* Ogre::Quake3Level::mElements

## mNumElements

int Ogre::Quake3Level::mNumElements

## mEntities

void* Ogre::Quake3Level::mEntities

## mNumEntities

int Ogre::Quake3Level::mNumEntities

## mModels

bsp_model_t* Ogre::Quake3Level::mModels

## mNumModels

int Ogre::Quake3Level::mNumModels

## mNodes

bsp_node_t* Ogre::Quake3Level::mNodes

## mNumNodes

int Ogre::Quake3Level::mNumNodes

## mLeaves

bsp_leaf_t* Ogre::Quake3Level::mLeaves

## mNumLeaves

int Ogre::Quake3Level::mNumLeaves

## mLeafFaces

int* Ogre::Quake3Level::mLeafFaces

## mNumLeafFaces

int Ogre::Quake3Level::mNumLeafFaces

## mPlanes

bsp_plane_t* Ogre::Quake3Level::mPlanes

## mNumPlanes

int Ogre::Quake3Level::mNumPlanes

## mFaces

bsp_face_t* Ogre::Quake3Level::mFaces

## mNumFaces

int Ogre::Quake3Level::mNumFaces

## mVertices

bsp_vertex_t* Ogre::Quake3Level::mVertices

## mNumVertices

int Ogre::Quake3Level::mNumVertices

## mShaders

bsp_shader_t* Ogre::Quake3Level::mShaders

## mNumShaders

int Ogre::Quake3Level::mNumShaders

## mLightmaps

unsigned char* Ogre::Quake3Level::mLightmaps

## mNumLightmaps

int Ogre::Quake3Level::mNumLightmaps

## mVis

bsp_vis_t* Ogre::Quake3Level::mVis

## mBrushes

bsp_brush_t* Ogre::Quake3Level::mBrushes

## mNumBrushes

int Ogre::Quake3Level::mNumBrushes

## mBrushSides

bsp_brushside_t* Ogre::Quake3Level::mBrushSides

## mNumBrushSides

int Ogre::Quake3Level::mNumBrushSides

## mLeafBrushes

int* Ogre::Quake3Level::mLeafBrushes

## mNumLeafBrushes

int Ogre::Quake3Level::mNumLeafBrushes

The documentation for this class was generated from the following file:

- OgreQuake3Level.h