53 lines
990 B
C++
53 lines
990 B
C++
export module AssetData;
|
|
export import GameData;
|
|
export import views;
|
|
import std;
|
|
|
|
export namespace ee_assets {
|
|
struct AssetTag {};
|
|
|
|
template <typename T> concept Asset = requires { typename T::asset_tag; };
|
|
|
|
enum AssetType {
|
|
BINARY,
|
|
|
|
MAP_MESH,
|
|
SAVE,
|
|
|
|
SHADER,
|
|
MATERIAL,
|
|
IMAGE
|
|
};
|
|
|
|
struct AssetBinary {
|
|
using asset_tag = AssetTag;
|
|
|
|
std::uint8_t *content = nullptr;
|
|
std::size_t size = 0;
|
|
|
|
AssetBinary(std::uint8_t * & source, std::size_t sourceSize);
|
|
~AssetBinary();
|
|
};
|
|
|
|
struct AssetMapMesh {
|
|
using asset_tag = AssetTag;
|
|
|
|
ee_engine::MapMesh content;
|
|
};
|
|
|
|
struct AssetSave {
|
|
using asset_tag = AssetTag;
|
|
|
|
ee_data::GameState content;
|
|
};
|
|
|
|
using AssetShader = AssetBinary;
|
|
|
|
struct AssetMaterial {
|
|
using asset_tag = AssetTag;
|
|
|
|
std::uint32_t vertexShaderAssetID;
|
|
std::uint32_t fragmentShaderAssetID;
|
|
};
|
|
}
|