# OgreQuake3Level.h

Go to the documentation of this file.

    00001 /*
    00002 -----------------------------------------------------------------------------
    00003 This source file is part of OGRE
    00004     (Object-oriented Graphics Rendering Engine)
    00005 For the latest info, see http://www.ogre3d.org/
    00006
    00007 Copyright (c) 2000-2005 The OGRE Team
    00008 Also see acknowledgements in Readme.html
    00009
    00010 This program is free software; you can redistribute it and/or modify it under
    00011 the terms of the GNU Lesser General Public License as published by the Free Software
    00012 Foundation; either version 2 of the License, or (at your option) any later
    00013 version.
    00014
    00015 This program is distributed in the hope that it will be useful, but WITHOUT
    00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    00018
    00019 You should have received a copy of the GNU Lesser General Public License along with
    00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
    00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
    00022 http://www.gnu.org/copyleft/lesser.txt.
    00023 -----------------------------------------------------------------------------
    00024 */
    00025 #ifndef __Quake3Level_H__
    00026 #define __Quake3Level_H__
    00027
    00028 #include "OgreBspPrerequisites.h"
    00029 #include "OgreQuake3Types.h"
    00030 #include "OgreDataStream.h"
    00031
    00032
    00033 namespace Ogre {
    00034
    00059     class Quake3Level
    00060     {
    00061     public:
    00062         Quake3Level();
    00063
    00069         void loadHeaderFromStream(DataStreamPtr& inStream);
    00070
    00082         void loadFromStream(DataStreamPtr& inStream);
    00083
    00084         /* Extracts the embedded lightmap texture data and loads them as textures.
    00085            Calling this method makes the lightmap texture data embedded in
    00086            the .bsp file available to the renderer. Lightmaps are extracted
    00087            and loaded as Texture objects (subclass specific to RenderSystem
    00088            subclass) and are named "@lightmap1", "@lightmap2" etc.
    00089         */
    00090         void extractLightmaps(void) const;
    00091
    00093         void initialise(bool headerOnly = false);
    00095         void initialiseCounts(void);
    00097         void initialisePointers(void);
    00098
    00100         void* getLump(int lumpType);
    00101         int getLumpSize(int lumpType);
    00102
    00104         void dumpContents(void);
    00105
    00106         // Internal storage
    00107         // This is ALL temporary. Don't rely on it being static
    00108         MemoryDataStreamPtr mChunk;
    00109
    00110         // NB no brushes, fog or local lightvolumes yet
    00111         bsp_header_t* mHeader;
    00112         unsigned char* mLumpStart;
    00113
    00114         int* mElements; // vertex indexes for faces
    00115         int mNumElements;
    00116
    00117         void* mEntities;
    00118         int mNumEntities;
    00119
    00120         bsp_model_t* mModels;
    00121         int mNumModels;
    00122
    00123         bsp_node_t* mNodes;
    00124         int mNumNodes;
    00125
    00126         bsp_leaf_t* mLeaves;
    00127         int mNumLeaves;
    00128
    00129         int* mLeafFaces;     // Indexes to face groups by leaf
    00130         int mNumLeafFaces;
    00131
    00132         bsp_plane_t* mPlanes;
    00133         int mNumPlanes;
    00134
    00135         bsp_face_t* mFaces;      // Groups of faces
    00136         int mNumFaces;
    00137
    00138         bsp_vertex_t* mVertices;
    00139         int mNumVertices;
    00140
    00141         bsp_shader_t* mShaders;
    00142         int mNumShaders;
    00143
    00144         unsigned char* mLightmaps;
    00145         int mNumLightmaps;
    00146
    00147         bsp_vis_t* mVis;
    00148
    00149         bsp_brush_t* mBrushes;
    00150         int mNumBrushes;
    00151
    00152         bsp_brushside_t* mBrushSides;
    00153         int mNumBrushSides;
    00154
    00155         int* mLeafBrushes;      // Groups of indexes to brushes by leaf
    00156         int mNumLeafBrushes;
    00157
    00158
    00159
    00160     };
    00161 }
    00162
    00163
    00164 #endif

Copyright © 2000-2005 by The OGRE Team
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Feb 12 12:59:50 2006