DriveHQ Start Menu
Cloud Drive Mapping
Folder Sync
Cloud Backup
True Drop Box
FTP/SFTP Hosting
Group Account
DriveHQ Start Menu
Online File Server
My Storage
|
Manage Shares
|
Publishes
|
Drop Boxes
|
Group Account
WebDAV Drive Mapping
Cloud Drive Home
|
WebDAV Guide
|
Drive Mapping Tool
|
Drive Mapping URL
Complete Data Backup
Backup Guide
|
Online Backup Tool
|
Cloud-to-Cloud Backup
FTP, Email & Web Service
FTP Home
|
FTP Hosting FAQ
|
Email Hosting
|
EmailManager
|
Web Hosting
Help & Resources
About
|
Enterprise Service
|
Partnership
|
Comparisons
|
Support
Quick Links
Security and Privacy
Download Software
Service Manual
Use Cases
Group Account
Online Help
Blog
Contact
Cloud Surveillance
Sign Up
Login
Features
Business Features
Online File Server
FTP Hosting
Cloud Drive Mapping
Cloud File Backup
Email Backup & Hosting
Cloud File Sharing
Folder Synchronization
Group Management
True Drop Box
Full-text Search
AD Integration/SSO
Mobile Access
IP Camera & DVR Solution
More...
Personal Features
Personal Cloud Drive
Backup All Devices
Mobile APPs
Personal Web Hosting
Sub-Account (for Kids)
Home/PC/Kids Monitoring
More...
Software
DriveHQ Drive Mapping Tool
DriveHQ FileManager
DriveHQ Online Backup
DriveHQ Mobile Apps
Pricing
Business Plans & Pricing
Personal Plans & Pricing
Price Comparison with Others
Feature Comparison with Others
Install Mobile App
Sign up
Creating account...
Invalid character in username! Only 0-9, a-z, A-Z, _, -, . allowed.
Username is required!
Invalid email address!
E-mail is required!
Password is required!
Password is invalid!
Password and confirmation do not match.
Confirm password is required!
I accept
Membership Agreement
Please read the Membership Agreement and check "I accept"!
Free Quick Sign-up
Sign-up Page
Log in
Signing in...
Username or e-mail address is required!
Password is required!
Keep me logged in
Quick Login
Forgot Password
Up
Upload
Download
Share
Publish
New Folder
New File
Copy
Cut
Delete
Paste
Rate
Upgrade
Rotate
Effect
Edit
Slide
History
/* ----------------------------------------------------------------------------- This source file is part of OGRE (Object-oriented Graphics Rendering Engine) For the latest info, see http://www.ogre3d.org/ Copyright (c) 2000-2006 Torus Knot Software Ltd Also see acknowledgements in Readme.html This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA, or go to http://www.gnu.org/copyleft/lesser.txt. You may alternatively use this source under the terms of a specific version of the OGRE Unrestricted License provided you have obtained such a license from Torus Knot Software Ltd. ----------------------------------------------------------------------------- */ #ifndef __Quake3Level_H__ #define __Quake3Level_H__ #include "OgreBspPrerequisites.h" #include "OgreQuake3Types.h" #include "OgreDataStream.h" namespace Ogre { /** 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 necesarily 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. */ class Quake3Level { public: Quake3Level(); /** Load just the header information from a Quake3 file. @remarks This method loads just the header information from the Quake3 file, in order to estimate the loading time. */ void loadHeaderFromStream(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) @param inStream Stream containing Quake3 data */ void loadFromStream(DataStreamPtr& inStream); /* Extracts the embedded lightmap texture data and loads them as textures. Calling this method makes the lightmap texture data embedded in the .bsp file available to the renderer. Lightmaps are extracted and loaded as Texture objects (subclass specific to RenderSystem subclass) and are named "@lightmap1", "@lightmap2" etc. */ void extractLightmaps(void) const; /** Utility function read the header and set up pointers. */ void initialise(bool headerOnly = false); /** Utility function read the header and set up counters. */ void initialiseCounts(void); /** Utility function read the header and set up pointers. */ void initialisePointers(void); /** Utility function to return a pointer to a lump. */ void* getLump(int lumpType); int getLumpSize(int lumpType); /** Debug method. */ void dumpContents(void); // Internal storage // This is ALL temporary. Don't rely on it being static MemoryDataStreamPtr mChunk; // NB no brushes, fog or local lightvolumes yet bsp_header_t* mHeader; unsigned char* mLumpStart; int* mElements; // vertex indexes for faces int mNumElements; void* mEntities; int mNumEntities; bsp_model_t* mModels; int mNumModels; bsp_node_t* mNodes; int mNumNodes; bsp_leaf_t* mLeaves; int mNumLeaves; int* mLeafFaces; // Indexes to face groups by leaf int mNumLeafFaces; bsp_plane_t* mPlanes; int mNumPlanes; bsp_face_t* mFaces; // Groups of faces int mNumFaces; bsp_vertex_t* mVertices; int mNumVertices; bsp_shader_t* mShaders; int mNumShaders; unsigned char* mLightmaps; int mNumLightmaps; bsp_vis_t* mVis; bsp_brush_t* mBrushes; int mNumBrushes; bsp_brushside_t* mBrushSides; int mNumBrushSides; int* mLeafBrushes; // Groups of indexes to brushes by leaf int mNumLeafBrushes; }; } #endif
OgreQuake3Level.h
Page URL
File URL
Prev
42/57
Next
Download
( 6 KB )
Note: The DriveHQ service banners will NOT be displayed if the file owner is a paid member.
Comments
Total ratings:
0
Average rating:
Not Rated
Would you like to comment?
Join DriveHQ
for a free account, or
Logon
if you are already a member.