aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api/AssetManager.hpp
blob: 977b4e11fae4affb18cb2c875fd14690b7ea988e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#pragma once

#include "AssetManager.h"

namespace crepe {

template <typename asset>
std::shared_ptr<asset> AssetManager::cache(const std::string & file_path,
										   bool reload) {
	auto it = asset_cache.find(file_path);

	if (!reload && it != asset_cache.end()) {
		return std::any_cast<std::shared_ptr<asset>>(it->second);
	}

	std::shared_ptr<asset> new_asset
		= std::make_shared<asset>(file_path.c_str());

	asset_cache[file_path] = new_asset;

	return new_asset;
}

} // namespace crepe