2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-09-24 09:16:39 +00:00

Import code from previous AssetBuilder version

This commit is contained in:
Jan
2019-09-24 10:45:09 +02:00
parent 5609557516
commit 0d8432d4f7
919 changed files with 154412 additions and 26 deletions

View File

@@ -0,0 +1,67 @@
#pragma once
#include "XAssetInfo.h"
#include <string>
#include <map>
template<typename T>
class AssetPool
{
public:
std::map<std::string, XAssetInfo<T>*> m_asset_lookup;
class Iterator
{
typename std::map<std::string, XAssetInfo<T>*>::iterator m_iterator;
public:
explicit Iterator(typename std::map<std::string, XAssetInfo<T>*>::iterator i)
{
m_iterator = i;
}
bool operator!=(Iterator rhs)
{
return m_iterator != rhs.m_iterator;
}
XAssetInfo<T>* operator*()
{
return m_iterator.operator*().second;
}
void operator++()
{
++m_iterator;
}
};
AssetPool()
{
m_asset_lookup = std::map<std::string, XAssetInfo<T>*>();
}
virtual ~AssetPool() = default;
virtual XAssetInfo<T>* AddAsset(std::string name, T* asset, std::vector<std::string>& scriptStrings, std::vector<XAssetDependency>& dependencies) = 0;
XAssetInfo<T>* GetAsset(const std::string& name)
{
auto foundAsset = m_asset_lookup.find(name);
if(foundAsset == m_asset_lookup.end())
return nullptr;
return foundAsset->second;
}
Iterator begin()
{
return Iterator(m_asset_lookup.begin());
}
Iterator end()
{
return Iterator(m_asset_lookup.end());
}
};