/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
 */

#include "Data/Containers/Array.hpp"
#include <memory>
#include <string>

namespace OpenVulkano
{
	class ResourceLoader
	{
	public:
		virtual ~ResourceLoader() = default;

		[[nodiscard]] virtual Array<char> GetResource(const std::string& resourceName) = 0;

		[[nodiscard]] virtual std::string GetResourcePath(const std::string& resourceName) { return ""; }

		static ResourceLoader& GetInstance();

		static void* RegisterResourceLoader(std::unique_ptr<ResourceLoader> loader);

		static bool UnregisterResourceLoader(void* loaderHandle);
	};
}