#pragma once #include #include #include class Renderer; class Asset { public: virtual ~Asset() {} virtual void Load(Renderer*) {} virtual void Unload(Renderer*) {} virtual std::vector GetDependencies() { return std::vector(); } void SetParent(Asset* asset) { m_parentAsset = asset; } Asset* GetParent() const { return m_parentAsset; } virtual std::type_index GetType() { return typeid(Asset); } bool IsLoaded() { return m_loaded; } virtual std::string GetName() { return std::string(); } virtual std::string GetPath() { return std::string(); } protected: Asset* m_parentAsset = nullptr; bool m_loaded = false; };