mirror of
				https://github.com/TES3MP/TES3MP.git
				synced 2025-11-03 19:13:31 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "keyframemanager.hpp"
 | 
						|
 | 
						|
#include <components/vfs/manager.hpp>
 | 
						|
 | 
						|
#include "objectcache.hpp"
 | 
						|
 | 
						|
namespace Resource
 | 
						|
{
 | 
						|
 | 
						|
    KeyframeManager::KeyframeManager(const VFS::Manager* vfs)
 | 
						|
        : ResourceManager(vfs)
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    KeyframeManager::~KeyframeManager()
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    osg::ref_ptr<const NifOsg::KeyframeHolder> KeyframeManager::get(const std::string &name)
 | 
						|
    {
 | 
						|
        std::string normalized = name;
 | 
						|
        mVFS->normalizeFilename(normalized);
 | 
						|
 | 
						|
        osg::ref_ptr<osg::Object> obj = mCache->getRefFromObjectCache(normalized);
 | 
						|
        if (obj)
 | 
						|
            return osg::ref_ptr<const NifOsg::KeyframeHolder>(static_cast<NifOsg::KeyframeHolder*>(obj.get()));
 | 
						|
        else
 | 
						|
        {
 | 
						|
            osg::ref_ptr<NifOsg::KeyframeHolder> loaded (new NifOsg::KeyframeHolder);
 | 
						|
            NifOsg::Loader::loadKf(Nif::NIFFilePtr(new Nif::NIFFile(mVFS->getNormalized(normalized), normalized)), *loaded.get());
 | 
						|
 | 
						|
            mCache->addEntryToObjectCache(normalized, loaded);
 | 
						|
            return loaded;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    void KeyframeManager::reportStats(unsigned int frameNumber, osg::Stats *stats) const
 | 
						|
    {
 | 
						|
        stats->setAttribute(frameNumber, "Keyframe", mCache->getCacheSize());
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
}
 |