legatt 3f965b2393 C++20 migration and Client
- Migrated to C++20 modules
- Worker and ThreadedWorker base classes for interthread systems
- Client class for server transport and converting game data models to render data (views)
- Update provinces render data from Client
- Renderer handles commands now
2026-02-10 04:12:04 +03:00

63 lines
1.3 KiB
C++

module;
#include <concepts>
#include <type_traits>
#include <cstdint>
#include <cstddef>
export module AssetData;
import GameData;
import MapView;
export namespace ee_assets
{
struct AssetData {};
template<typename T> concept Asset = std::is_base_of_v<AssetData, T>;
enum AssetType
{
BINARY,
MAP_MESH,
SAVE,
SHADER,
MATERIAL,
IMAGE
};
struct AssetBinary : public AssetData
{
std::uint8_t* content = nullptr;
std::size_t size = 0;
AssetBinary(std::uint8_t* &source, const std::size_t sourceSize);
~AssetBinary();
};
struct AssetMapMesh : public AssetData
{
ee_engine::MapMesh content;
std::uint8_t* Serialize(std::size_t &size);
AssetMapMesh() {};
AssetMapMesh(std::uint8_t* &source, const std::size_t sourceSize);
};
struct AssetSave : public AssetData
{
ee_data::GameState content;
std::uint8_t* Serialize(std::size_t &size);
AssetSave() {};
AssetSave(std::uint8_t* &source, const std::size_t sourceSize);
};
using AssetShader = AssetBinary;
struct AssetMaterial : public AssetData
{
std::uint32_t vertexShaderAssetID;
std::uint32_t fragmentShaderAssetID;
};
}