#pragma once #include "GameData.hpp" #include "Map.hpp" #include #include #include namespace ee_assets { struct AssetData {}; template concept Asset = std::derived_from; enum AssetType { BINARY, MAP_MESH, SAVE, SHADER, MATERIAL, IMAGE }; struct AssetBinary : public AssetData { uint8_t* content = nullptr; size_t size = 0; AssetBinary(uint8_t* &source, const size_t sourceSize); ~AssetBinary(); }; struct AssetMapMesh : public AssetData { ee_engine::MapMesh content; uint8_t* Serialize(size_t &size); AssetMapMesh() {}; AssetMapMesh(uint8_t* &source, const size_t sourceSize); }; struct AssetSave : public AssetData { std::vector subjects; uint8_t* Serialize(size_t &size); AssetSave() {}; AssetSave(uint8_t* &source, const size_t sourceSize); }; #define AssetShader AssetBinary struct AssetMaterial : public AssetData { uint32_t vertexShaderAssetID; uint32_t fragmentShaderAssetID; }; }