OGRE  1.9.0
OgreResourceGroupManager.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#ifndef _ResourceGroupManager_H__
29#define _ResourceGroupManager_H__
30
31#include "OgrePrerequisites.h"
32#include "OgreSingleton.h"
33#include "OgreCommon.h"
34#include "OgreDataStream.h"
35#include "OgreResource.h"
36#include "OgreArchive.h"
38#include <ctime>
39#include "OgreHeaderPrefix.h"
40
41// If X11/Xlib.h gets included before this header (for example it happens when
42// including wxWidgets and FLTK), Status is defined as an int which we don't
43// want as we have an enum named Status.
44#ifdef Status
45#undef Status
46#endif
47
48namespace Ogre {
49
87 {
88 public:
90
100 virtual void resourceGroupScriptingStarted(const String& groupName, size_t scriptCount) = 0;
108 virtual void scriptParseStarted(const String& scriptName, bool& skipThisScript) = 0;
109
112 virtual void scriptParseEnded(const String& scriptName, bool skipped) = 0;
114 virtual void resourceGroupScriptingEnded(const String& groupName) = 0;
115
121 virtual void resourceGroupPrepareStarted(const String& groupName, size_t resourceCount)
122 { (void)groupName; (void)resourceCount; }
123
127 virtual void resourcePrepareStarted(const ResourcePtr& resource)
128 { (void)resource; }
129
132 virtual void resourcePrepareEnded(void) {}
138 virtual void worldGeometryPrepareStageStarted(const String& description)
139 { (void)description; }
140
145 virtual void worldGeometryPrepareStageEnded(void) {}
147 virtual void resourceGroupPrepareEnded(const String& groupName)
148 { (void)groupName; }
149
155 virtual void resourceGroupLoadStarted(const String& groupName, size_t resourceCount) = 0;
159 virtual void resourceLoadStarted(const ResourcePtr& resource) = 0;
162 virtual void resourceLoadEnded(void) = 0;
168 virtual void worldGeometryStageStarted(const String& description) = 0;
173 virtual void worldGeometryStageEnded(void) = 0;
175 virtual void resourceGroupLoadEnded(const String& groupName) = 0;
179 virtual void resourceCreated(const ResourcePtr& resource)
180 { (void)resource; }
181
184 virtual void resourceRemove(const ResourcePtr& resource)
185 { (void)resource; }
186 };
187
194 {
195 public:
197
199 virtual DataStreamPtr resourceLoading(const String &name, const String &group, Resource *resource) = 0;
200
206 virtual void resourceStreamOpened(const String &name, const String &group, Resource *resource, DataStreamPtr& dataStream) = 0;
207
210 virtual bool resourceCollision(Resource *resource, ResourceManager *resourceManager) = 0;
211 };
212
261 class _OgreExport ResourceGroupManager : public Singleton<ResourceGroupManager>, public ResourceAlloc
262 {
263 public:
264 OGRE_AUTO_MUTEX; // public to allow external locking
281
293
295
296 protected:
299
303
306
308
311
316 {
325
328 OGRE_MUTEX(statusMutex);
342 // Group by loading order of the type (defined by ResourceManager)
343 // (e.g. skeletons and materials before meshes)
350 // in global pool flag - if true the resource will be loaded even a different group was requested in the load method as a parameter.
352
353 void addToIndex(const String& filename, Archive* arch);
354 void removeFromIndex(const String& filename, Archive* arch);
356
357 };
358
361
364
387 void fireResourceGroupScriptingStarted(const String& groupName, size_t scriptCount);
389 void fireScriptStarted(const String& scriptName, bool &skipScript);
391 void fireScriptEnded(const String& scriptName, bool skipped);
395 void fireResourceGroupLoadStarted(const String& groupName, size_t resourceCount);
401 void fireResourceGroupLoadEnded(const String& groupName);
403 void fireResourceGroupPrepareStarted(const String& groupName, size_t resourceCount);
409 void fireResourceGroupPrepareEnded(const String& groupName);
411 void fireResourceCreated(const ResourcePtr& resource);
413 void fireResourceRemove(const ResourcePtr& resource);
415 time_t resourceModifiedTime(ResourceGroup* group, const String& filename);
416
421 bool resourceExists(ResourceGroup* group, const String& filename);
422
425 public:
428
466 void createResourceGroup(const String& name, const bool inGlobalPool = true);
467
468
509
514
532 void prepareResourceGroup(const String& name, bool prepareMainResources = true,
533 bool prepareWorldGeom = true);
534
552 void loadResourceGroup(const String& name, bool loadMainResources = true,
553 bool loadWorldGeom = true);
554
570 void unloadResourceGroup(const String& name, bool reloadableOnly = true);
571
584 bool reloadableOnly = true);
585
595 void clearResourceGroup(const String& name);
596
602 void destroyResourceGroup(const String& name);
603
612
620 bool isResourceGroupLoaded(const String& name);
621
622 /*** Verify if a resource group exists
623 @param name The name of the resource group to look for
624 */
625 bool resourceGroupExists(const String& name);
626
648 void addResourceLocation(const String& name, const String& locType,
649 const String& resGroup = DEFAULT_RESOURCE_GROUP_NAME, bool recursive = false, bool readOnly = true);
652 const String& resGroup = DEFAULT_RESOURCE_GROUP_NAME);
655 const String& resGroup = DEFAULT_RESOURCE_GROUP_NAME);
656
691 void declareResource(const String& name, const String& resourceType,
692 const String& groupName = DEFAULT_RESOURCE_GROUP_NAME,
693 const NameValuePairList& loadParameters = NameValuePairList());
733 void declareResource(const String& name, const String& resourceType,
734 const String& groupName, ManualResourceLoader* loader,
735 const NameValuePairList& loadParameters = NameValuePairList());
746 void undeclareResource(const String& name, const String& groupName);
747
767 DataStreamPtr openResource(const String& resourceName,
768 const String& groupName = DEFAULT_RESOURCE_GROUP_NAME,
769 bool searchGroupsIfNotFound = true, Resource* resourceBeingLoaded = 0);
770
783 const String& groupName = DEFAULT_RESOURCE_GROUP_NAME);
784
793 StringVectorPtr listResourceNames(const String& groupName, bool dirs = false);
794
801 FileInfoListPtr listResourceFileInfo(const String& groupName, bool dirs = false);
802
814 StringVectorPtr findResourceNames(const String& groupName, const String& pattern,
815 bool dirs = false);
816
821 bool resourceExists(const String& group, const String& filename);
822
826 bool resourceExistsInAnyGroup(const String& filename);
827
835
845 FileInfoListPtr findResourceFileInfo(const String& group, const String& pattern,
846 bool dirs = false);
847
849 time_t resourceModifiedTime(const String& group, const String& filename);
855
862 StringVectorPtr findResourceLocation(const String& groupName, const String& pattern);
863
879 bool overwrite = false, const String& locationPattern = StringUtil::BLANK);
880
890 void deleteResource(const String& filename, const String& groupName = DEFAULT_RESOURCE_GROUP_NAME,
891 const String& locationPattern = StringUtil::BLANK);
892
902 void deleteMatchingResources(const String& filePattern, const String& groupName = DEFAULT_RESOURCE_GROUP_NAME,
903 const String& locationPattern = StringUtil::BLANK);
904
911
918 void setWorldResourceGroupName(const String& groupName) {mWorldGroupName = groupName;}
919
921 const String& getWorldResourceGroupName(void) const { return mWorldGroupName; }
922
937 const String& worldGeometry, SceneManager* sceneManager);
938
944
953
955 void shutdownAll(void);
956
957
967 void _registerResourceManager(const String& resourceType, ResourceManager* rm);
968
975 void _unregisterResourceManager(const String& resourceType);
976
982
988
993
998
1003
1008
1013
1016 void _notifyResourceGroupChanged(const String& oldGroup, Resource* res);
1017
1023
1040
1054
1060
1065
1098
1099 };
1100
1102}
1103
1104#include "OgreHeaderSuffix.h"
1105
1106#endif
#define _OgreExport
Archive-handling class.
Definition OgreArchive.h:89
Interface describing a manual resource loader.
Concrete IteratorWrapper for nonconst access to the underlying key-value container.
This abstract class defines an interface which is called back during resource group loading to indica...
virtual void scriptParseEnded(const String &scriptName, bool skipped)=0
This event is fired when the script has been fully parsed.
virtual void worldGeometryStageEnded(void)=0
This event is fired when a stage of loading linked world geometry has been completed.
virtual void resourcePrepareStarted(const ResourcePtr &resource)
This event is fired when a declared resource is about to be prepared.
virtual void resourceCreated(const ResourcePtr &resource)
This event is fired when a resource was just created.
virtual void resourceGroupLoadEnded(const String &groupName)=0
This event is fired when a resource group finished loading.
virtual void resourceGroupPrepareStarted(const String &groupName, size_t resourceCount)
This event is fired when a resource group begins preparing.
virtual void resourceLoadEnded(void)=0
This event is fired when the resource has been loaded.
virtual void resourceLoadStarted(const ResourcePtr &resource)=0
This event is fired when a declared resource is about to be loaded.
virtual void worldGeometryStageStarted(const String &description)=0
This event is fired when a stage of loading linked world geometry is about to start.
virtual void worldGeometryPrepareStageStarted(const String &description)
This event is fired when a stage of preparing linked world geometry is about to start.
virtual void worldGeometryPrepareStageEnded(void)
This event is fired when a stage of preparing linked world geometry has been completed.
virtual void resourceRemove(const ResourcePtr &resource)
This event is fired when a resource is about to be removed.
virtual void resourceGroupLoadStarted(const String &groupName, size_t resourceCount)=0
This event is fired when a resource group begins loading.
virtual void resourcePrepareEnded(void)
This event is fired when the resource has been prepared.
virtual void resourceGroupPrepareEnded(const String &groupName)
This event is fired when a resource group finished preparing.
virtual void scriptParseStarted(const String &scriptName, bool &skipThisScript)=0
This event is fired when a script is about to be parsed.
virtual void resourceGroupScriptingEnded(const String &groupName)=0
This event is fired when a resource group finished parsing scripts.
virtual void resourceGroupScriptingStarted(const String &groupName, size_t scriptCount)=0
This event is fired when a resource group begins parsing scripts.
void unloadResourceGroup(const String &name, bool reloadableOnly=true)
Unloads a resource group.
list< ResourceLocation * >::type LocationList
List of possible file locations.
void unloadUnreferencedResourcesInGroup(const String &name, bool reloadableOnly=true)
Unload all resources which are not referenced by any other object.
DataStreamPtr createResource(const String &filename, const String &groupName=DEFAULT_RESOURCE_GROUP_NAME, bool overwrite=false, const String &locationPattern=StringUtil::BLANK)
Create a new resource file in a given group.
bool isResourceGroupLoaded(const String &name)
Checks the status of a resource group.
const LocationList & getResourceLocationList(const String &groupName)
Get the list of resource locations for the specified group name.
void fireResourceCreated(const ResourcePtr &resource)
Internal event firing method.
void destroyResourceGroup(const String &name)
Destroys a resource group, clearing it first, destroying the resources which are part of it,...
void fireScriptStarted(const String &scriptName, bool &skipScript)
Internal event firing method.
void declareResource(const String &name, const String &resourceType, const String &groupName=DEFAULT_RESOURCE_GROUP_NAME, const NameValuePairList &loadParameters=NameValuePairList())
Declares a resource to be a part of a resource group, allowing you to load and unload it as part of t...
ResourceDeclarationList getResourceDeclarationList(const String &groupName)
Get the list of resource declarations for the specified group name.
ScriptLoader * _findScriptLoader(const String &pattern)
Method used to directly query for registered script loaders.
StringVector getResourceGroups(void)
Get a list of the currently defined resource groups.
void dropGroupContents(ResourceGroup *grp)
Drops contents of a group, leave group there, notify ResourceManagers.
static size_t RESOURCE_SYSTEM_NUM_REFERENCE_COUNTS
The number of reference counts held per resource by the resource system.
void initialiseAllResourceGroups(void)
Initialise all resource groups which are yet to be initialised.
void unlinkWorldGeometryFromResourceGroup(const String &group)
Clear any link to world geometry from a resource group.
static ResourceGroupManager * getSingletonPtr(void)
Override standard Singleton retrieval.
void prepareResourceGroup(const String &name, bool prepareMainResources=true, bool prepareWorldGeom=true)
Prepares a resource group.
ResourceGroup * getResourceGroup(const String &name)
Get resource group.
void loadResourceGroup(const String &name, bool loadMainResources=true, bool loadWorldGeom=true)
Loads a resource group.
DataStreamListPtr openResources(const String &pattern, const String &groupName=DEFAULT_RESOURCE_GROUP_NAME)
Open all resources matching a given pattern (which can contain the character '*' as a wildcard),...
void setWorldResourceGroupName(const String &groupName)
Sets the resource group that 'world' resources will use.
void createDeclaredResources(ResourceGroup *grp)
Create all the pre-declared resources.
static String INTERNAL_RESOURCE_GROUP_NAME
Internal resource group name (should be used by OGRE internal only)
void fireResourcePrepareEnded(void)
Internal event firing method.
void addCreatedResource(ResourcePtr &res, ResourceGroup &group)
Adds a created resource to a group.
bool resourceExists(ResourceGroup *group, const String &filename)
Find out if the named file exists in a group.
map< String, Archive * >::type ResourceLocationIndex
Resource index entry, resourcename->location.
void fireResourceRemove(const ResourcePtr &resource)
Internal event firing method.
void deleteGroup(ResourceGroup *grp)
Delete a group for shutdown - don't notify ResourceManagers.
bool resourceExists(const String &group, const String &filename)
Find out if the named file exists in a group.
DataStreamPtr openResource(const String &resourceName, const String &groupName=DEFAULT_RESOURCE_GROUP_NAME, bool searchGroupsIfNotFound=true, Resource *resourceBeingLoaded=0)
Open a single resource by name and return a DataStream pointing at the source of the data.
const String & getWorldResourceGroupName(void) const
Gets the resource group that 'world' resources will use.
ResourceManager * _getResourceManager(const String &resourceType)
Internal method for getting a registered ResourceManager.
void fireResourceGroupScriptingEnded(const String &groupName)
Internal event firing method.
static ResourceGroupManager & getSingleton(void)
Override standard Singleton retrieval.
void linkWorldGeometryToResourceGroup(const String &group, const String &worldGeometry, SceneManager *sceneManager)
Associates some world geometry with a resource group, causing it to be loaded / unloaded with the res...
bool resourceExistsInAnyGroup(const String &filename)
Find out if the named file exists in any group.
void addResourceLocation(const String &name, const String &locType, const String &resGroup=DEFAULT_RESOURCE_GROUP_NAME, bool recursive=false, bool readOnly=true)
Method to add a resource location to for a given resource group.
void clearResourceGroup(const String &name)
Clears a resource group.
static String AUTODETECT_RESOURCE_GROUP_NAME
Special resource group name which causes resource group to be automatically determined based on searc...
void _notifyWorldGeometryStageStarted(const String &description)
Notify this manager that one stage of world geometry loading has been started.
void fireResourceGroupPrepareStarted(const String &groupName, size_t resourceCount)
Internal event firing method.
ScriptLoaderOrderMap mScriptLoaderOrderMap
bool resourceGroupExists(const String &name)
void _registerResourceManager(const String &resourceType, ResourceManager *rm)
Internal method for registering a ResourceManager (which should be a singleton).
void _unregisterResourceManager(const String &resourceType)
Internal method for unregistering a ResourceManager.
ResourceManagerIterator getResourceManagerIterator()
Get an iterator over the registered resource managers.
static String DEFAULT_RESOURCE_GROUP_NAME
Default resource group name.
void deleteMatchingResources(const String &filePattern, const String &groupName=DEFAULT_RESOURCE_GROUP_NAME, const String &locationPattern=StringUtil::BLANK)
Delete all matching resource files.
ResourceManagerMap mResourceManagerMap
Map of resource types (strings) to ResourceManagers, used to notify them to load / unload group conte...
StringVectorPtr findResourceNames(const String &groupName, const String &pattern, bool dirs=false)
Find all file or directory names matching a given pattern in a resource group.
void fireScriptEnded(const String &scriptName, bool skipped)
Internal event firing method.
void _notifyResourceGroupChanged(const String &oldGroup, Resource *res)
Internal method to notify the group manager that a resource has changed group (only applicable for au...
void fireResourceGroupPrepareEnded(const String &groupName)
Internal event firing method.
time_t resourceModifiedTime(ResourceGroup *group, const String &filename)
Internal modification time retrieval.
void removeResourceLocation(const String &name, const String &resGroup=DEFAULT_RESOURCE_GROUP_NAME)
Removes a resource location from the search path.
void addResourceGroupListener(ResourceGroupListener *l)
Adds a ResourceGroupListener which will be called back during resource loading events.
void undeclareResource(const String &name, const String &groupName)
Undeclare a resource.
void _notifyAllResourcesRemoved(ResourceManager *manager)
Internal method called by ResourceManager when all resources for that manager are removed.
void fireResourceGroupLoadEnded(const String &groupName)
Internal event firing method.
map< String, ResourceManager * >::type ResourceManagerMap
list< ResourceDeclaration >::type ResourceDeclarationList
List of resource declarations.
void _unregisterScriptLoader(ScriptLoader *su)
Internal method for unregistering a ScriptLoader.
void removeResourceGroupListener(ResourceGroupListener *l)
Removes a ResourceGroupListener.
StringVectorPtr findResourceLocation(const String &groupName, const String &pattern)
Find all resource location names matching a given pattern in a resource group.
ResourceGroupListenerList mResourceGroupListenerList
void fireResourceGroupScriptingStarted(const String &groupName, size_t scriptCount)
Internal event firing method.
bool resourceLocationExists(const String &name, const String &resGroup=DEFAULT_RESOURCE_GROUP_NAME)
Verify if a resource location exists for the given group.
void _registerScriptLoader(ScriptLoader *su)
Internal method for registering a ScriptLoader.
const String & findGroupContainingResource(const String &filename)
Find the group in which a resource exists.
void createResourceGroup(const String &name, const bool inGlobalPool=true)
Create a resource group.
StringVectorPtr listResourceLocations(const String &groupName)
List all resource locations in a resource group.
multimap< Real, ScriptLoader * >::type ScriptLoaderOrderMap
Map of loading order (Real) to ScriptLoader, used to order script parsing.
ResourceGroup * mCurrentGroup
Stored current group - optimisation for when bulk loading a group.
bool isResourceGroupInitialised(const String &name)
Checks the status of a resource group.
StringVectorPtr listResourceNames(const String &groupName, bool dirs=false)
List all file or directory names in a resource group.
void _notifyWorldGeometryStageEnded(void)
Notify this manager that one stage of world geometry loading has been completed.
void parseResourceGroupScripts(ResourceGroup *grp)
Parses all the available scripts found in the resource locations for the given group,...
vector< ResourceGroupListener * >::type ResourceGroupListenerList
bool isResourceGroupInGlobalPool(const String &name)
Checks the status of a resource group.
void fireResourceLoadEnded(void)
Internal event firing method.
void shutdownAll(void)
Shutdown all ResourceManagers, performed as part of clean-up.
void setLoadingListener(ResourceLoadingListener *listener)
Sets a new loading listener.
map< String, ResourceGroup * >::type ResourceGroupMap
Map from resource group names to groups.
void fireResourcePrepareStarted(const ResourcePtr &resource)
Internal event firing method.
void _notifyResourceCreated(ResourcePtr &res)
Internal method called by ResourceManager when a resource is created.
FileInfoListPtr listResourceFileInfo(const String &groupName, bool dirs=false)
List all files in a resource group with accompanying information.
void _notifyResourceRemoved(ResourcePtr &res)
Internal method called by ResourceManager when a resource is removed.
void fireResourceLoadStarted(const ResourcePtr &resource)
Internal event firing method.
FileInfoListPtr findResourceFileInfo(const String &group, const String &pattern, bool dirs=false)
Find all files or directories matching a given pattern in a group and get some detailed information a...
void fireResourceGroupLoadStarted(const String &groupName, size_t resourceCount)
Internal event firing method.
String mWorldGroupName
Group name for world resources.
ResourceGroup * findGroupContainingResourceImpl(const String &filename)
Internal find method for auto groups.
ResourceLoadingListener * mLoadingListener
list< ResourcePtr >::type LoadUnloadResourceList
List of resources which can be loaded / unloaded.
void initialiseResourceGroup(const String &name)
Initialises a resource group.
ResourceLoadingListener * getLoadingListener()
Returns the current loading listener.
MapIterator< ResourceManagerMap > ResourceManagerIterator
void declareResource(const String &name, const String &resourceType, const String &groupName, ManualResourceLoader *loader, const NameValuePairList &loadParameters=NameValuePairList())
Declares a resource to be a part of a resource group, allowing you to load and unload it as part of t...
time_t resourceModifiedTime(const String &group, const String &filename)
Retrieve the modification time of a given file.
void deleteResource(const String &filename, const String &groupName=DEFAULT_RESOURCE_GROUP_NAME, const String &locationPattern=StringUtil::BLANK)
Delete a single resource file.
virtual bool resourceCollision(Resource *resource, ResourceManager *resourceManager)=0
This event is called when a resource collides with another existing one in a resource manager.
virtual DataStreamPtr resourceLoading(const String &name, const String &group, Resource *resource)=0
This event is called when a resource beings loading.
virtual void resourceStreamOpened(const String &name, const String &group, Resource *resource, DataStreamPtr &dataStream)=0
This event is called when a resource stream has been opened, but not processed yet.
Defines a generic resource handler.
Abstract class representing a loadable resource (e.g.
Manages the organisation and rendering of a 'scene' i.e.
Abstract class defining the interface used by classes which wish to perform script loading to define ...
Singleton(const Singleton< ResourceGroupManager > &)
static const String BLANK
Constant blank string, useful for returning by ref where local does not exist.
Definition OgreString.h:196
vector< String >::type StringVector
map< String, String >::type NameValuePairList
Name / value parameter pair (first = name, second = value)
Definition OgreCommon.h:550
SharedPtr< StringVector > StringVectorPtr
SharedPtr< DataStream > DataStreamPtr
Shared pointer to allow data streams to be passed around without worrying about deallocation.
SharedPtr< FileInfoList > FileInfoListPtr
Definition OgreArchive.h:70
SharedPtr< DataStreamList > DataStreamListPtr
Shared pointer to list of DataStream items.
SharedPtr< Resource > ResourcePtr
Shared pointer to a Resource.
ResourceAllocatedObject ResourceAlloc
_StringBase String
Nested struct defining a resource declaration.
ResourceDeclarationList resourceDeclarations
Pre-declared resources, ready to be created.
ResourceLocationIndex resourceIndexCaseInsensitive
Index of resource names to locations, built for speedy access (case insensitive archives)
OGRE_AUTO_MUTEX
General mutex for dealing with group content.
SceneManager * worldGeometrySceneManager
Scene manager to use with linked world geometry.
String worldGeometry
Linked world geometry, as passed to setWorldGeometry.
void addToIndex(const String &filename, Archive *arch)
ResourceLocationIndex resourceIndexCaseSensitive
Index of resource names to locations, built for speedy access (case sensitive archives)
LocationList locationList
List of possible locations to search.
void removeFromIndex(const String &filename, Archive *arch)
map< Real, LoadUnloadResourceList * >::type LoadResourceOrderMap
Created resources which are ready to be loaded / unloaded.
OGRE_MUTEX(statusMutex)
Status-specific mutex, separate from content-changing mutex.
Archive * archive
Pointer to the archive which is the destination.
bool recursive
Whether this location was added recursively.
std::list< T, A > type
std::map< K, V, P, A > type
std::multimap< K, V, P, A > type
std::vector< T, A > type