28#ifndef _ResourceGroupManager_H__
29#define _ResourceGroupManager_H__
139 { (
void)description; }
692 const String& groupName = DEFAULT_RESOURCE_GROUP_NAME,
768 const String& groupName = DEFAULT_RESOURCE_GROUP_NAME,
783 const String& groupName = DEFAULT_RESOURCE_GROUP_NAME);
981 mResourceManagerMap.begin(), mResourceManagerMap.end()); }
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Interface describing a manual resource loader.
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.
virtual ~ResourceGroupListener()
This singleton class manages the list of resource groups, and notifying the various resource managers...
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.
virtual ~ResourceGroupManager()
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.
ResourceGroupMap mResourceGroupMap
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 ~ResourceLoadingListener()
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 ...
Reference-counted shared pointer, used for objects where implicit destruction is required.
Template class for creating single-instance global classes.
Nested struct defining a resource declaration.
ManualResourceLoader * loader
NameValuePairList parameters
ResourceDeclarationList resourceDeclarations
Pre-declared resources, ready to be created.
Status groupStatus
Group status.
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.
void removeFromIndex(Archive *arch)
LoadResourceOrderMap loadResourceOrderMap
Archive * archive
Pointer to the archive which is the destination.
bool recursive
Whether this location was added recursively.
std::map< K, V, P, A > type
std::multimap< K, V, P, A > type