OGRE  1.9.0
OgrePagedWorld.h
Go to the documentation of this file.
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4(Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2014 Torus Knot Software Ltd
8
9Permission is hereby granted, free of charge, to any person obtaining a copy
10of this software and associated documentation files (the "Software"), to deal
11in the Software without restriction, including without limitation the rights
12to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13copies of the Software, and to permit persons to whom the Software is
14furnished to do so, subject to the following conditions:
15
16The above copyright notice and this permission notice shall be included in
17all copies or substantial portions of the Software.
18
19THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25THE SOFTWARE.
26-----------------------------------------------------------------------------
27*/
28
29#ifndef __Ogre_PagedWorld_H__
30#define __Ogre_PagedWorld_H__
31
33#include "OgreString.h"
34#include "OgreDataStream.h"
35#include "OgreCommon.h"
36#include "OgreNameGenerator.h"
37
38namespace Ogre
39{
40 class PageManager;
41
49
50
58 {
59 protected:
63
64 public:
65 static const uint32 CHUNK_ID;
66 static const uint16 CHUNK_VERSION;
75 PagedWorld(const String& name, PageManager* manager);
76 virtual ~PagedWorld();
77
78 const String& getName() const { return mName; }
80 PageManager* getManager() const { return mManager; }
81
83 void load(const String& filename);
85 void load(const DataStreamPtr& stream);
87 bool load(StreamSerialiser& stream);
92 void save(const String& filename);
94 void save(const DataStreamPtr& stream);
96 void save(StreamSerialiser& stream);
97
113 const String& typeName,
114 const String& sectionName = StringUtil::BLANK);
115
116
130 PagedWorldSection* createSection(const String& strategyName, SceneManager* sceneMgr,
131 const String& sectionName = StringUtil::BLANK);
132
133
147 const String& sectionName = StringUtil::BLANK);
149 void destroySection(const String& name);
154
156 size_t getSectionCount() const { return mSections.size(); }
157
160
163 const SectionMap& getSections() const { return mSections; }
164
176 void setPageProvider(PageProvider* provider) { mPageProvider = provider; }
177
180
188 virtual bool _prepareProceduralPage(Page* page, PagedWorldSection* section);
196 virtual bool _loadProceduralPage(Page* page, PagedWorldSection* section);
204 virtual bool _unloadProceduralPage(Page* page, PagedWorldSection* section);
212 virtual bool _unprepareProceduralPage(Page* page, PagedWorldSection* section);
221
230
232 virtual void frameStart(Real timeSinceLastFrame);
234 virtual void frameEnd(Real timeElapsed);
236 virtual void notifyCamera(Camera* cam);
237
240 _OgrePagingExport friend std::ostream& operator <<( std::ostream& o, const PagedWorld& p );
241
242
243 protected:
246 };
247
250
251}
252
253#endif
#define _OgrePagingExport
A viewpoint from which the scene will be rendered.
Definition OgreCamera.h:87
Utility class to generate a sequentially numbered series of names.
The PageManager is the entry point through which you load all PagedWorld instances,...
Abstract class that can be implemented by the user application to provide a way to retrieve or genera...
Defines the interface to a strategy class which is responsible for deciding when Page instances are r...
Page class.
Definition OgrePage.h:51
Represents a section of the PagedWorld which uses a given PageStrategy, and which is made up of a gen...
void destroySection(const String &name)
Destroy a section of world.
PageProvider * getPageProvider() const
Get the PageProvider which can provide streams for Pages in this world.
void save(StreamSerialiser &stream)
Save world data to a serialiser.
static const uint32 CHUNK_SECTIONDECLARATION_ID
StreamSerialiser * _readPageStream(PageID pageID, PagedWorldSection *section)
Get a serialiser set up to read Page data for the given PageID.
PagedWorldSection * getSection(const String &name)
Retrieve a section of the world.
const String & getName() const
void destroySection(PagedWorldSection *sec)
Destroy a section of world.
virtual void frameStart(Real timeSinceLastFrame)
Called when the frame starts.
virtual bool _prepareProceduralPage(Page *page, PagedWorldSection *section)
Give a world the opportunity to prepare page content procedurally.
static const uint16 CHUNK_VERSION
PageManager * mManager
virtual bool _loadProceduralPage(Page *page, PagedWorldSection *section)
Give a world the opportunity to prepare page content procedurally.
PagedWorld(const String &name, PageManager *manager)
Constructor.
const SectionMap & getSections() const
Retrieve a const reference to all the sections in this world.
void save(const String &filename)
Save world data to a file.
PagedWorldSection * createSection(PageStrategy *strategy, SceneManager *sceneMgr, const String &sectionName=StringUtil::BLANK)
Create a manually defined new section of the world.
size_t getSectionCount() const
Get the number of sections this world has.
void destroyAllSections()
Destroy all world sections.
virtual bool _unprepareProceduralPage(Page *page, PagedWorldSection *section)
Give a world the opportunity to unprepare page content procedurally.
virtual ~PagedWorld()
static const uint32 CHUNK_ID
map< String, PagedWorldSection * >::type SectionMap
NameGenerator mSectionNameGenerator
PagedWorldSection * createSection(SceneManager *sceneMgr, const String &typeName, const String &sectionName=StringUtil::BLANK)
Create a new section of the world based on a specialised type.
void load(const DataStreamPtr &stream)
Load world data from a stream.
bool load(StreamSerialiser &stream)
Load world data from a serialiser (returns true if successful)
virtual void notifyCamera(Camera *cam)
Notify a world of the current camera.
PagedWorldSection * createSection(const String &strategyName, SceneManager *sceneMgr, const String &sectionName=StringUtil::BLANK)
Create a new manually defined section of the world.
void setPageProvider(PageProvider *provider)
Set the PageProvider which can provide streams for Pages in this world.
void save(const DataStreamPtr &stream)
Save world data to a stream.
PageProvider * mPageProvider
void load(const String &filename)
Load world data from a file.
virtual bool _unloadProceduralPage(Page *page, PagedWorldSection *section)
Give a world the opportunity to unload page content procedurally.
virtual void frameEnd(Real timeElapsed)
Called when the frame ends.
StreamSerialiser * _writePageStream(PageID pageID, PagedWorldSection *section)
Get a serialiser set up to read Page data for the given PageID.
PageManager * getManager() const
Get the manager of this world.
Manages the organisation and rendering of a 'scene' i.e.
Utility class providing helper methods for reading / writing structured data held in a DataStream.
static const String BLANK
Constant blank string, useful for returning by ref where local does not exist.
Definition OgreString.h:196
SharedPtr< DataStream > DataStreamPtr
Shared pointer to allow data streams to be passed around without worrying about deallocation.
uint32 PageID
Identifier for a page.
GeneralAllocatedObject PageAlloc
float Real
Software floating point type.
unsigned short uint16
unsigned int uint32
_StringBase String
std::map< K, V, P, A > type