Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 23, 2009, 7:44:49 PM (15 years ago)
Author:
rgrieder
Message:

Simplified our resource system a bit by working with a single resource group on the user end.
However you can still declare resource groups for separate loading. But accessing the files will always look in all groups.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/presentation2/src/libraries/core/Resource.cc

    r5781 r6404  
    3434    std::string Resource::DEFAULT_GROUP(Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
    3535
    36     DataStreamPtr Resource::open(const std::string& name, const std::string& group, bool bSearchGroupsIfNotFound)
     36    DataStreamPtr Resource::open(const std::string& name)
    3737    {
    38         return Ogre::ResourceGroupManager::getSingleton().openResource(name, group, bSearchGroupsIfNotFound);
     38        return Ogre::ResourceGroupManager::getSingleton().openResource(name,
     39            Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, true);
    3940    }
    4041
    41     DataStreamListPtr Resource::openMulti(const std::string& pattern, const std::string& group)
     42    DataStreamListPtr Resource::openMulti(const std::string& pattern)
    4243    {
    43         return Ogre::ResourceGroupManager::getSingleton().openResources(pattern, group);
     44        DataStreamListPtr resources(new Ogre::DataStreamList());
     45        const Ogre::StringVector& groups = Ogre::ResourceGroupManager::getSingleton().getResourceGroups();
     46        for (Ogre::StringVector::const_iterator it = groups.begin(); it != groups.end(); ++it)
     47        {
     48            DataStreamListPtr temp = Ogre::ResourceGroupManager::getSingleton().openResources(pattern, *it);
     49            resources->insert(resources->end(), temp->begin(), temp->end());
     50        }
     51        return resources;
    4452    }
    4553
    46     bool Resource::exists(const std::string& name, const std::string& group)
     54    bool Resource::exists(const std::string& name)
    4755    {
    48         return Ogre::ResourceGroupManager::getSingleton().resourceExists(group, name);
     56        try
     57        {
     58            Ogre::ResourceGroupManager::getSingleton().findGroupContainingResource(name);
     59            return true;
     60        }
     61        catch (const Ogre::Exception&)
     62        {
     63            return false;
     64        }
    4965    }
    5066
    51     shared_ptr<ResourceInfo> Resource::getInfo(const std::string& name, const std::string& group)
     67    shared_ptr<ResourceInfo> Resource::getInfo(const std::string& name)
    5268    {
     69        std::string group;
     70        try
     71        {
     72            group = Ogre::ResourceGroupManager::getSingleton().findGroupContainingResource(name);
     73        }
     74        catch (const Ogre::Exception&)
     75        {
     76            return shared_ptr<ResourceInfo>();
     77        }
    5378        Ogre::FileInfoListPtr infos = Ogre::ResourceGroupManager::getSingleton().findResourceFileInfo(group, name);
    5479        for (std::vector<Ogre::FileInfo>::const_iterator it = infos->begin(); it != infos->end(); ++it)
     
    6792        return shared_ptr<ResourceInfo>();
    6893    }
     94
     95    StringVectorPtr Resource::findResourceNames(const std::string& pattern)
     96    {
     97        StringVectorPtr resourceNames(new Ogre::StringVector());
     98        const Ogre::StringVector& groups = Ogre::ResourceGroupManager::getSingleton().getResourceGroups();
     99        for (Ogre::StringVector::const_iterator it = groups.begin(); it != groups.end(); ++it)
     100        {
     101            StringVectorPtr temp = Ogre::ResourceGroupManager::getSingleton().findResourceNames(*it, pattern);
     102            resourceNames->insert(resourceNames->end(), temp->begin(), temp->end());
     103        }
     104        return resourceNames;
     105    }
    69106}
Note: See TracChangeset for help on using the changeset viewer.