Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 40s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 21s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 21s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m7s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 44s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 21s
Bigfoot / Sonarqube (game) (push) Skipped
Bigfoot / Sonarqube (toolmode) (push) Skipped
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 58s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m3s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 1m3s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 49s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 21s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 54s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m11s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 42s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 59s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Failing after 20s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Failing after 19s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Failing after 22s
Bigfoot / Clang Format Checks (push) Successful in 10s
112 lines
3.0 KiB
C++
112 lines
3.0 KiB
C++
/*********************************************************************
|
|
* \file AssetBase.hpp
|
|
*
|
|
* \author Romain BOULLARD
|
|
* \date April 2026
|
|
*********************************************************************/
|
|
#ifndef BIGFOOT_ENGINE_ASSET_ASSETBASE_HPP
|
|
#define BIGFOOT_ENGINE_ASSET_ASSETBASE_HPP
|
|
#include <System/UUID/UUID.hpp>
|
|
|
|
#include <Engine/Asset/Asset_generated.hpp>
|
|
|
|
#include <EASTL/span.h>
|
|
#include <EASTL/vector.h>
|
|
#include <ankerl/unordered_dense.h>
|
|
#include <flatbuffers/minireflect.h>
|
|
|
|
namespace Bigfoot
|
|
{
|
|
class AssetBase
|
|
{
|
|
public:
|
|
virtual ~AssetBase() = default;
|
|
|
|
/**
|
|
* Get the header of the asset
|
|
*
|
|
* \return The header of the asset
|
|
*/
|
|
[[nodiscard]]
|
|
virtual const ::Flat::Bigfoot::AssetHeaderT& GetHeader() const = 0;
|
|
|
|
/**
|
|
* Get the HardReferences the flatbuffer has
|
|
*
|
|
* \param p_flatbuffer The flatbuffer
|
|
* \return The UUIDs of the HardReferences
|
|
*/
|
|
[[nodiscard]]
|
|
virtual eastl::vector<UUID> GetHardReferences(const eastl::span<const std::byte> p_flatbuffer) const = 0;
|
|
|
|
/**
|
|
* Unpack a flatbuffer to the asset
|
|
*
|
|
* \param p_flatbuffer The flatbuffer to unpack
|
|
*/
|
|
virtual void Unpack(const eastl::span<const std::byte> p_flatbuffer) = 0;
|
|
|
|
/**
|
|
* Pack the asset to a flatbuffer
|
|
*
|
|
* \return The packed asset
|
|
*/
|
|
[[nodiscard]]
|
|
virtual eastl::vector<std::byte> Pack() const = 0;
|
|
|
|
AssetBase(const AssetBase& p_asset) = delete;
|
|
AssetBase& operator=(const AssetBase& p_asset) = delete;
|
|
|
|
protected:
|
|
AssetBase() = default;
|
|
|
|
AssetBase(AssetBase&& p_asset) = default;
|
|
|
|
AssetBase& operator=(AssetBase&& p_asset) = default;
|
|
|
|
class HardReferenceVisitor: public flatbuffers::IterationVisitor
|
|
{
|
|
public:
|
|
void Field(size_t p_fieldIndex,
|
|
size_t p_setIndex,
|
|
const flatbuffers::ElementaryType p_type,
|
|
const bool p_isVector,
|
|
const flatbuffers::TypeTable* p_typeTable,
|
|
const char* p_name,
|
|
const std::uint8_t* p_val) override;
|
|
|
|
void Element(size_t p_index,
|
|
const flatbuffers::ElementaryType p_type,
|
|
const flatbuffers::TypeTable* p_typeTable,
|
|
const std::uint8_t* p_val) override;
|
|
|
|
/**
|
|
* Get the visited HardReference
|
|
*
|
|
* \return The visited HardReferences
|
|
*/
|
|
[[nodiscard]]
|
|
eastl::vector<UUID> GetUUIDs() const;
|
|
|
|
private:
|
|
/**
|
|
* Visit an element in the flatbuffer
|
|
*
|
|
* \param p_type The element type
|
|
* \param p_typeTable The element typetable
|
|
* \param p_val The element
|
|
*/
|
|
void Visit(const flatbuffers::ElementaryType p_type,
|
|
const flatbuffers::TypeTable* p_typeTable,
|
|
const std::uint8_t* p_val);
|
|
|
|
/**
|
|
* The HardReferences visited so far
|
|
*/
|
|
ankerl::unordered_dense::set<UUID> m_uuids;
|
|
};
|
|
};
|
|
} // namespace Bigfoot
|
|
|
|
#endif
|