Basic asset system serialization
Some checks failed
Bigfoot / Build & Test Debug with ./ConanProfiles/clang (Unity Build: OFF) (push) Successful in 7m7s
Bigfoot / Build & Test Debug with ./ConanProfiles/clang (Unity Build: ON) (push) Successful in 5m16s
Bigfoot / Build & Test Debug with ./ConanProfiles/clang_asan (Unity Build: OFF) (push) Successful in 5m40s
Bigfoot / Build & Test Debug with ./ConanProfiles/clang_asan (Unity Build: ON) (push) Successful in 5m39s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/clang (Unity Build: OFF) (push) Successful in 6m3s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/clang (Unity Build: ON) (push) Successful in 6m2s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/clang_asan (Unity Build: OFF) (push) Successful in 6m56s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/clang_asan (Unity Build: ON) (push) Successful in 7m4s
Bigfoot / Build & Test Release with ./ConanProfiles/clang (Unity Build: OFF) (push) Successful in 6m6s
Bigfoot / Build & Test Release with ./ConanProfiles/clang (Unity Build: ON) (push) Successful in 5m58s
Bigfoot / Build & Test Release with ./ConanProfiles/clang_asan (Unity Build: OFF) (push) Successful in 6m34s
Bigfoot / Build & Test Release with ./ConanProfiles/clang_asan (Unity Build: ON) (push) Successful in 6m45s
Bigfoot / Clang Format Checks (push) Failing after 10s

This commit is contained in:
2026-05-09 23:41:04 +02:00
parent 4c9c4d5547
commit 4261ddd393
51 changed files with 1266 additions and 618 deletions

View File

@@ -2,9 +2,10 @@
* \file AssetTypeID.cpp
*
* \author Romain BOULLARD
* \date February 2026
* \date May 2026
*********************************************************************/
#include <Engine/Asset/AssetTypeID.hpp>
#include <Engine/Asset/AssetTypeID_generated.hpp>
namespace flatbuffers
{

View File

@@ -12,26 +12,26 @@
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 1192> g_Asset_bfbs = {
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00},
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x8C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x88}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00},
std::byte{0x9C}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0xDC}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xE0}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x8C}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xDC}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x70}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0xB0}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00},
std::byte{0x60}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0xB8}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x12}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x48}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01},
std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00},
std::byte{0x06}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x04}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65},
std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA0}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00},
std::byte{0xE0}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xE4}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x90}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xE0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0xB4}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x5C}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xBC}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x12}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73},
std::byte{0x65}, std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x44}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00},
std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x04},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x72}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x73},
std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x00}, std::byte{0x34}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x64}, std::byte{0x65}, std::byte{0x72}, std::byte{0x00}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},

View File

@@ -1,8 +1,6 @@
include "Engine/Asset/AssetTypeID.fbs";
native_include "Engine/Asset/AssetTypeID.hpp";
include "System/UUID/UUID.fbs";
native_include "System/UUID/UUID.hpp";
namespace Flat.Bigfoot;
@@ -19,7 +17,7 @@ table AssetHeader
table Asset
{
header: AssetHeader (required, id: 0);
asset: [ubyte] (required, id: 1);
inner_asset: [ubyte] (required, id: 1);
}
root_type Asset;

View File

@@ -7,27 +7,48 @@
#ifndef BIGFOOT_ENGINE_ASSET_HPP
#define BIGFOOT_ENGINE_ASSET_HPP
#include <Engine/Asset/Asset_generated.hpp>
#include <Engine/Asset/Reference_generated.hpp>
#include <Engine/EngineAssertHandler.hpp>
#include <flatbuffers/reflection.h>
#include <EASTL/span.h>
#include <EASTL/vector.h>
#include <ankerl/unordered_dense.h>
#include <rapidhash.h>
namespace Bigfoot
{
template<class FLAT_ASSET>
template<class ASSET>
class Asset
{
public:
using FLAT_ASSET = typename ASSET::FLAT;
Asset()
{
m_header.type_id = GetTypeID();
m_header.type_name = GetTypeName();
}
explicit Asset(const eastl::span<const std::byte> p_flatbuffer):
m_header(UnPackHeader(p_flatbuffer)),
m_asset(UnpackAsset(p_flatbuffer))
explicit Asset(const eastl::span<const std::byte> p_flatbuffer)
{
#ifdef BIGFOOT_NOT_OPTIMIZED
flatbuffers::Verifier verifier {std::bit_cast<std::uint8_t*>(p_flatbuffer.data()), p_flatbuffer.size()};
const bool assetVerified = ::Flat::Bigfoot::VerifyAssetBuffer(verifier);
CRITICAL_ASSERT(EngineAssertHandler, assetVerified, "Given asset could not be verified!");
const ::Flat::Bigfoot::Asset* asset = flatbuffers::GetRoot<::Flat::Bigfoot::Asset>(p_flatbuffer.data());
flatbuffers::Verifier innerAssetVerifier {asset->inner_asset()->data(), asset->inner_asset()->size()};
const bool innerAssetVerified = innerAssetVerifier.VerifyBuffer<FLAT_ASSET>();
CRITICAL_ASSERT(EngineAssertHandler, innerAssetVerified, "Given asset could not be verified!");
#else
const ::Flat::Bigfoot::Asset* asset = flatbuffers::GetRoot<::Flat::Bigfoot::Asset>(p_flatbuffer.data());
#endif
asset->header()->UnPackTo(&m_header);
flatbuffers::GetRoot<FLAT_ASSET>(asset->inner_asset()->data())->UnPackTo(&m_asset, nullptr);
}
Asset(const Asset& p_asset) = default;
@@ -54,20 +75,23 @@ class Asset
}
[[nodiscard]]
eastl::vector<std::byte> Pack() const
eastl::vector<std::byte> Save()
{
flatbuffers::FlatBufferBuilder innerAssetFbb;
innerAssetFbb.Finish(FLAT_ASSET::Pack(innerAssetFbb, &m_asset));
m_header.dependencies = CollectHardRefs(innerAssetFbb);
::Flat::Bigfoot::AssetT asset;
asset.header = eastl::make_unique<::Flat::Bigfoot::AssetHeaderT>(m_header);
asset.inner_asset = eastl::vector<std::uint8_t> {innerAssetFbb.GetBufferPointer(),
innerAssetFbb.GetBufferPointer() + innerAssetFbb.GetSize()};
flatbuffers::FlatBufferBuilder assetFbb;
assetFbb.Finish(FLAT_ASSET::Pack(assetFbb, &m_asset));
assetFbb.Finish(::Flat::Bigfoot::Asset::Pack(assetFbb, &asset));
::Flat::Bigfoot::AssetT outer;
outer.header = eastl::make_unique<::Flat::Bigfoot::AssetHeaderT>(m_header);
outer.asset = {assetFbb.GetBufferSpan().begin(), assetFbb.GetBufferSpan().end()};
flatbuffers::FlatBufferBuilder fullFbb;
fullFbb.Finish(::Flat::Bigfoot::Asset::Pack(fullFbb, &outer));
return eastl::vector<std::byte> {std::bit_cast<std::byte*>(fullFbb.GetBufferPointer()),
std::bit_cast<std::byte*>(fullFbb.GetBufferPointer() + fullFbb.GetSize())};
return eastl::vector<std::byte> {std::bit_cast<std::byte*>(assetFbb.GetBufferPointer()),
std::bit_cast<std::byte*>(assetFbb.GetBufferPointer() + assetFbb.GetSize())};
}
void SetName(const eastl::string_view p_name)
@@ -94,31 +118,98 @@ class Asset
return FLAT_ASSET::GetFullyQualifiedName();
}
[[nodiscard]]
Asset& operator=(const Asset& p_asset) = default;
[[nodiscard]]
Asset& operator=(Asset&& p_asset) = default;
private:
[[nodiscard]]
static ::Flat::Bigfoot::AssetHeaderT UnPackHeader(const eastl::span<const std::byte> p_flatbuffer)
static void WalkTableForHardRef(const flatbuffers::Table* p_table,
const reflection::Object* p_obj,
const reflection::Schema* p_schema,
ankerl::unordered_dense::segmented_set<UUID>& p_deps)
{
::Flat::Bigfoot::AssetHeaderT header;
constexpr auto isHardRef = [](const reflection::Object* p_object)
{
return eastl::string_view(p_object->name()->c_str()) == ::Flat::Bigfoot::HardRef::GetFullyQualifiedName();
};
flatbuffers::GetRoot<::Flat::Bigfoot::Asset>(p_flatbuffer.data())->header()->UnPackTo(&header);
for (const reflection::Field* field: *p_obj->fields())
{
const reflection::BaseType baseType = field->type()->base_type();
return header;
if (baseType == reflection::BaseType::Obj)
{
const reflection::Object* fieldObj = p_schema->objects()->Get(field->type()->index());
if (fieldObj->is_struct())
{
if (!isHardRef(fieldObj))
{
continue;
}
if (const ::Flat::Bigfoot::HardRef* hardRef = std::bit_cast<const ::Flat::Bigfoot::HardRef*>(
flatbuffers::GetFieldStruct(*p_table, *field)))
{
p_deps.insert(flatbuffers::UnPack(hardRef->uuid()));
}
}
else
{
if (const flatbuffers::Table* nestedTable = flatbuffers::GetFieldT(*p_table, *field))
{
WalkTableForHardRef(nestedTable, fieldObj, p_schema, p_deps);
}
}
}
else if (baseType == reflection::BaseType::Vector && field->type()->element() == reflection::BaseType::Obj)
{
const reflection::Object* elemObj = p_schema->objects()->Get(field->type()->index());
const flatbuffers::VectorOfAny* nestedTables = flatbuffers::GetFieldAnyV(*p_table, *field);
if (!nestedTables)
{
continue;
}
if (isHardRef(elemObj))
{
const flatbuffers::Vector<::Flat::Bigfoot::HardRef>* hardRefs =
std::bit_cast<const flatbuffers::Vector<::Flat::Bigfoot::HardRef>*>(nestedTables);
for (const ::Flat::Bigfoot::HardRef* hardRef: *hardRefs)
{
p_deps.insert(flatbuffers::UnPack(hardRef->uuid()));
}
}
else if (!elemObj->is_struct())
{
const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::Table>>* tables =
std::bit_cast<const flatbuffers::Vector<flatbuffers::Offset<flatbuffers::Table>>*>(
nestedTables);
for (const flatbuffers::Table* table: *tables)
{
WalkTableForHardRef(table, elemObj, p_schema, p_deps);
}
}
}
}
}
[[nodiscard]]
static typename FLAT_ASSET::NativeTableType UnpackAsset(const eastl::span<const std::byte> p_flatbuffer)
static eastl::vector<UUID> CollectHardRefs(const flatbuffers::FlatBufferBuilder& p_fbb)
{
typename FLAT_ASSET::NativeTableType asset;
ankerl::unordered_dense::segmented_set<UUID> depsSet;
const ::Flat::Bigfoot::Asset* outer = flatbuffers::GetRoot<::Flat::Bigfoot::Asset>(p_flatbuffer.data());
flatbuffers::GetRoot<FLAT_ASSET>(outer->asset()->data())->UnPackTo(&asset, nullptr);
const reflection::Schema* schema = reflection::GetSchema(ASSET::ReflectionInfo().data());
const flatbuffers::Table* table = flatbuffers::GetRoot<flatbuffers::Table>(p_fbb.GetBufferPointer());
WalkTableForHardRef(table, schema->root_table(), schema, depsSet);
return asset;
eastl::vector<UUID> deps;
deps.reserve(depsSet.size());
for (const UUID& id: depsSet)
{
deps.push_back(id);
}
return deps;
}
private:

View File

@@ -1,3 +1,5 @@
native_include "Engine/Asset/AssetTypeID.hpp";
namespace Flat.Bigfoot;
struct AssetTypeID (native_type: "::Bigfoot::AssetTypeID")

View File

@@ -6,8 +6,6 @@
*********************************************************************/
#ifndef BIGFOOT_ENGINE_ASSETTYPEID_HPP
#define BIGFOOT_ENGINE_ASSETTYPEID_HPP
#include <Engine/Asset/AssetTypeID_generated.hpp>
#include <cstdint>
namespace Bigfoot
@@ -15,6 +13,18 @@ namespace Bigfoot
using AssetTypeID = std::uint64_t;
}
/****************************************************************************************/
namespace Flat
{
namespace Bigfoot
{
struct AssetTypeID;
}
} // namespace Flat
/****************************************************************************************/
namespace flatbuffers
{
Flat::Bigfoot::AssetTypeID Pack(const Bigfoot::AssetTypeID& p_assetTypeID);

View File

@@ -13,8 +13,11 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included");
#include "Engine/Asset/AssetTypeID.hpp"
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Flat {
namespace Bigfoot {

View File

@@ -13,7 +13,6 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included");
#include "Engine/Asset/AssetTypeID.hpp"
#include "Engine/Asset/AssetTypeID.hpp"
#include "System/UUID/UUID.hpp"
#include "Engine/Asset/AssetTypeID_generated.hpp"
@@ -21,6 +20,7 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Flat {
namespace Bigfoot {
@@ -47,7 +47,7 @@ struct AssetHeaderT : public ::flatbuffers::NativeTable {
::Bigfoot::AssetTypeID type_id{};
eastl::string type_name{};
uint32_t version = 0;
std::vector<::Bigfoot::UUID> dependencies{};
eastl::vector<::Bigfoot::UUID> dependencies{};
};
struct AssetHeader FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
@@ -174,7 +174,7 @@ struct AssetT : public ::flatbuffers::NativeTable {
return "Flat.Bigfoot.AssetT";
}
eastl::unique_ptr<Flat::Bigfoot::AssetHeaderT> header{};
std::vector<uint8_t> asset{};
eastl::vector<uint8_t> inner_asset{};
AssetT() = default;
AssetT(const AssetT &o);
AssetT(AssetT&&) FLATBUFFERS_NOEXCEPT = default;
@@ -193,21 +193,21 @@ struct Asset FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
}
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_HEADER = 4,
VT_ASSET = 6
VT_INNER_ASSET = 6
};
const Flat::Bigfoot::AssetHeader *header() const {
return GetPointer<const Flat::Bigfoot::AssetHeader *>(VT_HEADER);
}
const ::flatbuffers::Vector<uint8_t> *asset() const {
return GetPointer<const ::flatbuffers::Vector<uint8_t> *>(VT_ASSET);
const ::flatbuffers::Vector<uint8_t> *inner_asset() const {
return GetPointer<const ::flatbuffers::Vector<uint8_t> *>(VT_INNER_ASSET);
}
template <bool B = false>
bool Verify(::flatbuffers::VerifierTemplate<B> &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffsetRequired(verifier, VT_HEADER) &&
verifier.VerifyTable(header()) &&
VerifyOffsetRequired(verifier, VT_ASSET) &&
verifier.VerifyVector(asset()) &&
VerifyOffsetRequired(verifier, VT_INNER_ASSET) &&
verifier.VerifyVector(inner_asset()) &&
verifier.EndTable();
}
AssetT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
@@ -222,8 +222,8 @@ struct AssetBuilder {
void add_header(::flatbuffers::Offset<Flat::Bigfoot::AssetHeader> header) {
fbb_.AddOffset(Asset::VT_HEADER, header);
}
void add_asset(::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> asset) {
fbb_.AddOffset(Asset::VT_ASSET, asset);
void add_inner_asset(::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> inner_asset) {
fbb_.AddOffset(Asset::VT_INNER_ASSET, inner_asset);
}
explicit AssetBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
@@ -233,7 +233,7 @@ struct AssetBuilder {
const auto end = fbb_.EndTable(start_);
auto o = ::flatbuffers::Offset<Asset>(end);
fbb_.Required(o, Asset::VT_HEADER);
fbb_.Required(o, Asset::VT_ASSET);
fbb_.Required(o, Asset::VT_INNER_ASSET);
return o;
}
};
@@ -241,9 +241,9 @@ struct AssetBuilder {
inline ::flatbuffers::Offset<Asset> CreateAsset(
::flatbuffers::FlatBufferBuilder &_fbb,
::flatbuffers::Offset<Flat::Bigfoot::AssetHeader> header = 0,
::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> asset = 0) {
::flatbuffers::Offset<::flatbuffers::Vector<uint8_t>> inner_asset = 0) {
AssetBuilder builder_(_fbb);
builder_.add_asset(asset);
builder_.add_inner_asset(inner_asset);
builder_.add_header(header);
return builder_.Finish();
}
@@ -285,7 +285,7 @@ inline ::flatbuffers::Offset<AssetHeader> AssetHeader::Pack(::flatbuffers::FlatB
auto _type_id = ::flatbuffers::Pack(_o->type_id);
auto _type_name = _fbb.CreateString(_o->type_name);
auto _version = _o->version;
auto _dependencies = _fbb.CreateVectorOfNativeStructs<Flat::Bigfoot::UUID, ::Bigfoot::UUID>(_o->dependencies);
auto _dependencies = _fbb.CreateVectorOfNativeStructs<Flat::Bigfoot::UUID, ::Bigfoot::UUID>(_o->dependencies.data(), _o->dependencies.size());
return Flat::Bigfoot::CreateAssetHeader(
_fbb,
&_uuid,
@@ -298,12 +298,12 @@ inline ::flatbuffers::Offset<AssetHeader> AssetHeader::Pack(::flatbuffers::FlatB
inline AssetT::AssetT(const AssetT &o)
: header((o.header) ? new Flat::Bigfoot::AssetHeaderT(*o.header) : nullptr),
asset(o.asset) {
inner_asset(o.inner_asset) {
}
inline AssetT &AssetT::operator=(AssetT o) FLATBUFFERS_NOEXCEPT {
std::swap(header, o.header);
std::swap(asset, o.asset);
std::swap(inner_asset, o.inner_asset);
return *this;
}
@@ -317,7 +317,7 @@ inline void Asset::UnPackTo(AssetT *_o, const ::flatbuffers::resolver_function_t
(void)_o;
(void)_resolver;
{ auto _e = header(); if (_e) { if(_o->header) { _e->UnPackTo(_o->header.get(), _resolver); } else { _o->header = eastl::unique_ptr<Flat::Bigfoot::AssetHeaderT>(_e->UnPack(_resolver)); } } else if (_o->header) { _o->header.reset(); } }
{ auto _e = asset(); if (_e) { _o->asset.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->asset.begin()); } }
{ auto _e = inner_asset(); if (_e) { _o->inner_asset.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inner_asset.begin()); } }
}
inline ::flatbuffers::Offset<Asset> CreateAsset(::flatbuffers::FlatBufferBuilder &_fbb, const AssetT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) {
@@ -329,11 +329,11 @@ inline ::flatbuffers::Offset<Asset> Asset::Pack(::flatbuffers::FlatBufferBuilder
(void)_o;
struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AssetT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
auto _header = _o->header ? CreateAssetHeader(_fbb, _o->header.get(), _rehasher) : 0;
auto _asset = _fbb.CreateVector(_o->asset);
auto _inner_asset = _fbb.CreateVector(_o->inner_asset.data(), _o->inner_asset.size());
return Flat::Bigfoot::CreateAsset(
_fbb,
_header,
_asset);
_inner_asset);
}
inline const ::flatbuffers::TypeTable *AssetHeaderTypeTable() {
@@ -373,7 +373,7 @@ inline const ::flatbuffers::TypeTable *AssetTypeTable() {
};
static const char * const names[] = {
"header",
"asset"
"inner_asset"
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_TABLE, 2, type_codes, type_refs, nullptr, nullptr, names

View File

@@ -11,30 +11,29 @@
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 608> g_Reference_bfbs = {
inline constexpr eastl::array<std::byte, 592> g_Reference_bfbs = {
std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x14}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00},
std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xAC}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x50}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x54}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x9C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0xFC}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA4}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x44}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x70}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x94}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01},
std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00},
std::byte{0xBC}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x7C}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01},
std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65},
std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52},
std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66},
std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xC4}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x84}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x74}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x2F}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00},

View File

@@ -1,14 +1,15 @@
include "System/UUID/UUID.fbs";
native_include "System/UUID/UUID.hpp";
native_include "Engine/Asset/Reference.hpp";
namespace Flat.Bigfoot.Reference;
include "System/UUID/UUID.fbs";
namespace Flat.Bigfoot;
struct HardRef
{
uuid:UUID (native_inline);
uuid:UUID;
}
struct SoftRef
{
uuid:UUID (native_inline);
uuid:UUID;
}

View File

@@ -6,7 +6,7 @@
*********************************************************************/
#ifndef BIGFOOT_ENGINE_REFERENCE_HPP
#define BIGFOOT_ENGINE_REFERENCE_HPP
#include <Engine/Asset/Reference_generated.hpp>
#include <System/UUID/UUID.hpp>
namespace Bigfoot
{
@@ -35,6 +35,12 @@ class HardRef
HardRef& operator=(const HardRef& p_ref) = default;
HardRef& operator=(HardRef&& p_ref) = default;
[[nodiscard]]
bool operator==(const HardRef& p_ref) const
{
return m_uuid == p_ref.m_uuid;
}
private:
UUID m_uuid = UUID::NULL_UUID;
};
@@ -64,61 +70,68 @@ class SoftRef
SoftRef& operator=(const SoftRef& p_ref) = default;
SoftRef& operator=(SoftRef&& p_ref) = default;
[[nodiscard]]
bool operator==(const SoftRef& p_ref) const
{
return m_uuid == p_ref.m_uuid;
}
private:
UUID m_uuid = UUID::NULL_UUID;
};
} // namespace Bigfoot
#define ASSET_SOFT_REF_DECL(AssetName, AssetType) \
namespace flatbuffers \
{ \
Flat::Bigfoot::SoftRef PackSoftRef##AssetName(const Bigfoot::SoftRef<AssetType>& p_softRef); \
Bigfoot::SoftRef<AssetType> UnPackSoftRef##AssetName(const Flat::Bigfoot::SoftRef& p_softRef); \
}
#define ASSET_HARD_REF_DECL(AssetName, AssetType) \
namespace flatbuffers \
{ \
Flat::Bigfoot::HardRef PackHardRef##AssetName(const Bigfoot::HardRef<AssetType>& p_hardRef); \
Bigfoot::HardRef<AssetType> UnPackHardRef##AssetName(const Flat::Bigfoot::HardRef& p_hardRef); \
}
#define ASSET_REF_DECL(AssetName, AssetType) \
ASSET_SOFT_REF_DECL(AssetName, AssetType) \
ASSET_HARD_REF_DECL(AssetName, AssetType)
#define ASSET_DECL(AssetName, AssetType) ASSET_REF_DECL(AssetName, AssetType)
/****************************************************************************************/
#define ASSET_HARD_REF_DECL(Ref, FlatRef) \
#define ASSET_SOFT_REF_IMPL(AssetName, AssetType) \
namespace flatbuffers \
{ \
::Flat::Bigfoot::Reference::FlatRef Pack(const ::Bigfoot::HardRef<::Bigfoot::Ref>& p_ref); \
::Bigfoot::HardRef<::Bigfoot::Ref> UnPack(const ::Flat::Bigfoot::Reference::FlatRef& p_ref); \
} // namespace flatbuffers
Flat::Bigfoot::SoftRef PackSoftRef##AssetName(const Bigfoot::SoftRef<AssetType>& p_softRef) \
{ \
return {flatbuffers::Pack(p_softRef.GetUUID())}; \
} \
Bigfoot::SoftRef<AssetType> UnPackSoftRef##AssetName(const Flat::Bigfoot::SoftRef& p_softRef) \
{ \
return {flatbuffers::UnPack(p_softRef.uuid())}; \
} \
}
#define ASSET_HARD_REF_IMPL(Ref, FlatRef) \
#define ASSET_HARD_REF_IMPL(AssetName, AssetType) \
namespace flatbuffers \
{ \
::Flat::Bigfoot::Reference::FlatRef Pack(const ::Bigfoot::HardRef<::Bigfoot::Ref>& p_ref) \
Flat::Bigfoot::HardRef PackHardRef##AssetName(const Bigfoot::HardRef<AssetType>& p_softRef) \
{ \
return ::Flat::Bigfoot::Reference::FlatRef { \
::Flat::Bigfoot::Reference::HardRef {flatbuffers::Pack(p_ref.GetUUID())}}; \
return {flatbuffers::Pack(p_softRef.GetUUID())}; \
} \
::Bigfoot::HardRef<::Bigfoot::Ref> UnPack(const ::Flat::Bigfoot::Reference::FlatRef& p_ref) \
Bigfoot::HardRef<AssetType> UnPackHardRef##AssetName(const Flat::Bigfoot::HardRef& p_softRef) \
{ \
return ::Bigfoot::HardRef<::Bigfoot::Ref> {flatbuffers::UnPack(p_ref.hard_ref().uuid())}; \
return {flatbuffers::UnPack(p_softRef.uuid())}; \
} \
} // namespace flatbuffers
}
#define ASSET_SOFT_REF_DECL(Ref, FlatRef) \
namespace flatbuffers \
{ \
::Flat::Bigfoot::Reference::FlatRef Pack(const ::Bigfoot::SoftRef<::Bigfoot::Ref>& p_ref); \
::Bigfoot::SoftRef<::Bigfoot::Ref> UnPack(const ::Flat::Bigfoot::Reference::FlatRef& p_ref); \
} // namespace flatbuffers
#define ASSET_SOFT_REF_IMPL(Ref, FlatRef) \
namespace flatbuffers \
{ \
::Flat::Bigfoot::Reference::FlatRef Pack(const ::Bigfoot::SoftRef<::Bigfoot::Ref>& p_ref) \
{ \
return ::Flat::Bigfoot::Reference::FlatRef { \
::Flat::Bigfoot::Reference::SoftRef {flatbuffers::Pack(p_ref.GetUUID())}}; \
} \
::Bigfoot::SoftRef<::Bigfoot::Ref> UnPack(const ::Flat::Bigfoot::Reference::FlatRef& p_ref) \
{ \
return ::Bigfoot::SoftRef<::Bigfoot::Ref> {flatbuffers::UnPack(p_ref.soft_ref().uuid())}; \
} \
} // namespace flatbuffers
#define ASSET_REF_DECL(Ref) \
ASSET_HARD_REF_DECL(Ref, Ref##HardRef) \
ASSET_SOFT_REF_DECL(Ref, Ref##SoftRef)
#define ASSET_REF_IMPL(Ref) \
ASSET_HARD_REF_IMPL(Ref, Ref##HardRef) \
ASSET_SOFT_REF_IMPL(Ref, Ref##SoftRef)
#define ASSET_REF_IMPL(AssetName, AssetType) \
ASSET_SOFT_REF_IMPL(AssetName, AssetType) \
ASSET_HARD_REF_IMPL(AssetName, AssetType)
#define ASSET_IMPL(AssetName, AssetType) ASSET_REF_IMPL(AssetName, AssetType)
#endif

View File

@@ -1,8 +1,8 @@
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_REFERENCE_H_
#define FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_REFERENCE_H_
#ifndef FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_H_
#define FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_H_
#include "flatbuffers/flatbuffers.h"
@@ -13,15 +13,17 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included");
#include "Engine/Asset/Reference.hpp"
#include "System/UUID/UUID.hpp"
#include "Engine/Asset/Reference.hpp"
#include "System/UUID/UUID_generated.hpp"
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Flat {
namespace Bigfoot {
namespace Reference {
struct HardRef;
@@ -41,7 +43,7 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) HardRef FLATBUFFERS_FINAL_CLASS {
return HardRefTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Flat.Bigfoot.Reference.HardRef";
return "Flat.Bigfoot.HardRef";
}
HardRef()
: uuid_() {
@@ -69,7 +71,7 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) SoftRef FLATBUFFERS_FINAL_CLASS {
return SoftRefTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Flat.Bigfoot.Reference.SoftRef";
return "Flat.Bigfoot.SoftRef";
}
SoftRef()
: uuid_() {
@@ -121,8 +123,7 @@ inline const ::flatbuffers::TypeTable *SoftRefTypeTable() {
return &tt;
}
} // namespace Reference
} // namespace Bigfoot
} // namespace Flat
#endif // FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_REFERENCE_H_
#endif // FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_H_

View File

@@ -26,8 +26,8 @@ class BigFile
*/
BigFile(const File& p_file);
BigFile(const BigFile& p_bigFile) = default;
BigFile(BigFile&& p_bigFile) = default;
BigFile(const BigFile& p_bigFile) = delete;
BigFile(BigFile&& p_bigFile) = delete;
/**
* Begin a transaction
@@ -49,8 +49,8 @@ class BigFile
~BigFile();
BigFile& operator=(const BigFile& p_bigFile) = default;
BigFile& operator=(BigFile&& p_bigFile) = default;
BigFile& operator=(const BigFile& p_bigFile) = delete;
BigFile& operator=(BigFile&& p_bigFile) = delete;
class Request
{

View File

@@ -15,6 +15,7 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Bigfoot {
namespace Flat {

View File

@@ -23,8 +23,8 @@ namespace Bigfoot
std::byte{0x00}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x2C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x0A}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x54}, std::byte{0x69}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x11}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66},
std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x54}, std::byte{0x69}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x11}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x54}, std::byte{0x69}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0A}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},

View File

@@ -1,4 +1,6 @@
namespace Bigfoot.Flat;
native_include "System/Time/Time.hpp";
namespace Flat.Bigfoot;
struct Time (native_type: "::Bigfoot::Time")
{

View File

@@ -6,8 +6,6 @@
*********************************************************************/
#ifndef BIGFOOT_SYSTEM_TIME_HPP
#define BIGFOOT_SYSTEM_TIME_HPP
#include <System/Time/Time_generated.hpp>
#include <chrono>
#include <compare>
#include <cstdint>
@@ -69,10 +67,20 @@ class Time
/****************************************************************************************/
namespace Flat
{
namespace Bigfoot
{
struct Time;
}
} // namespace Flat
/****************************************************************************************/
namespace flatbuffers
{
Bigfoot::Flat::Time Pack(const Bigfoot::Time& p_time);
Bigfoot::Time UnPack(const Bigfoot::Flat::Time& p_flatTime);
Flat::Bigfoot::Time Pack(const Bigfoot::Time& p_time);
Bigfoot::Time UnPack(const Flat::Bigfoot::Time& p_flatTime);
} // namespace flatbuffers
#endif

View File

@@ -1,8 +1,8 @@
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_TIME_BIGFOOT_FLAT_H_
#define FLATBUFFERS_GENERATED_TIME_BIGFOOT_FLAT_H_
#ifndef FLATBUFFERS_GENERATED_TIME_FLAT_BIGFOOT_H_
#define FLATBUFFERS_GENERATED_TIME_FLAT_BIGFOOT_H_
#include "flatbuffers/flatbuffers.h"
@@ -13,11 +13,14 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included");
#include "System/Time/Time.hpp"
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Bigfoot {
namespace Flat {
namespace Bigfoot {
struct Time;
@@ -33,7 +36,7 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) Time FLATBUFFERS_FINAL_CLASS {
return TimeTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Bigfoot.Flat.Time";
return "Flat.Bigfoot.Time";
}
Time()
: epoch_(0) {
@@ -65,7 +68,7 @@ inline const ::flatbuffers::TypeTable *TimeTypeTable() {
return &tt;
}
} // namespace Flat
} // namespace Bigfoot
} // namespace Flat
#endif // FLATBUFFERS_GENERATED_TIME_BIGFOOT_FLAT_H_
#endif // FLATBUFFERS_GENERATED_TIME_FLAT_BIGFOOT_H_

View File

@@ -1,3 +1,5 @@
native_include "System/UUID/UUID.hpp";
namespace Flat.Bigfoot;
struct UUID (native_type: "::Bigfoot::UUID")

View File

@@ -6,8 +6,6 @@
*********************************************************************/
#ifndef BIGFOOT_SYSTEM_UUID_HPP
#define BIGFOOT_SYSTEM_UUID_HPP
#include <System/UUID/UUID_generated.hpp>
#include <uuid.h>
namespace Bigfoot
@@ -146,6 +144,16 @@ struct quill::Codec<Bigfoot::UUID>: quill::DeferredFormatCodec<Bigfoot::UUID>
/****************************************************************************************/
namespace Flat
{
namespace Bigfoot
{
struct UUID;
}
} // namespace Flat
/****************************************************************************************/
namespace flatbuffers
{
Flat::Bigfoot::UUID Pack(const Bigfoot::UUID& p_uuid);

View File

@@ -13,8 +13,11 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included");
#include "System/UUID/UUID.hpp"
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Flat {
namespace Bigfoot {

View File

@@ -5,6 +5,7 @@
* \date December 2025
*********************************************************************/
#include <System/Time/Time.hpp>
#include <System/Time/Time_generated.hpp>
#include <System/SystemAssertHandler.hpp>
@@ -124,14 +125,14 @@ Time Time::Now()
namespace flatbuffers
{
Bigfoot::Flat::Time Pack(const Bigfoot::Time& p_time)
Flat::Bigfoot::Time Pack(const Bigfoot::Time& p_time)
{
return Bigfoot::Flat::Time {p_time.Epoch()};
return Flat::Bigfoot::Time {p_time.Epoch()};
}
/****************************************************************************************/
Bigfoot::Time UnPack(const Bigfoot::Flat::Time& p_flatTime)
Bigfoot::Time UnPack(const Flat::Bigfoot::Time& p_flatTime)
{
return Bigfoot::Time {p_flatTime.epoch()};
}

View File

@@ -5,6 +5,7 @@
* \date October 2025
*********************************************************************/
#include <System/UUID/UUID.hpp>
#include <System/UUID/UUID_generated.hpp>
namespace Bigfoot
{

View File

@@ -68,15 +68,11 @@ class Singleton
Finalize();
}
[[nodiscard]]
Lifetime& operator=(const Lifetime& p_lifetime) = delete;
[[nodiscard]]
Lifetime& operator=(Lifetime&& p_lifetime) = delete;
};
[[nodiscard]]
Singleton& operator=(const Singleton& p_singleton) = delete;
[[nodiscard]]
Singleton& operator=(Singleton&& p_singleton) = delete;
private:

View File

@@ -15,8 +15,7 @@
#include <EngineTests/Asset/AssetA.hpp>
#include <EngineTests/Asset/AssetB.hpp>
#include <flatbuffers/reflection.h>
#include <EngineTests/Asset/AssetC.hpp>
#include <gtest/gtest.h>
@@ -35,7 +34,7 @@ class AssetFixture: public ::testing::Test
/****************************************************************************************/
TEST_F(AssetFixture, Asset)
TEST_F(AssetFixture, AssetATests)
{
constexpr eastl::string_view name = "Hello";
constexpr std::uint32_t version = 42;
@@ -48,61 +47,198 @@ TEST_F(AssetFixture, Asset)
assetA.GetAsset().health = health;
assetA.GetAsset().mana = mana;
const eastl::vector<std::byte> test = assetA.Pack();
const eastl::vector<std::byte> test = assetA.Save();
AssetA assetB {test};
AssetA assetA_dup {test};
EXPECT_EQ(assetA.GetHeader().uuid, assetB.GetHeader().uuid);
EXPECT_EQ(assetA.GetHeader().uuid, assetA_dup.GetHeader().uuid);
EXPECT_EQ(assetA.GetHeader().type_id, AssetA::GetTypeID());
EXPECT_EQ(assetA.GetHeader().type_id, assetB.GetHeader().type_id);
EXPECT_EQ(assetA.GetHeader().type_id, assetA_dup.GetHeader().type_id);
EXPECT_EQ(assetA.GetHeader().type_name, AssetA::GetTypeName());
EXPECT_EQ(assetA.GetHeader().type_name, assetB.GetHeader().type_name);
EXPECT_EQ(assetA.GetHeader().type_name, assetA_dup.GetHeader().type_name);
EXPECT_EQ(assetA.GetHeader().name, name);
EXPECT_EQ(assetA.GetHeader().name, assetB.GetHeader().name);
EXPECT_EQ(assetA.GetHeader().name, assetA_dup.GetHeader().name);
EXPECT_EQ(assetA.GetHeader().version, version);
EXPECT_EQ(assetA.GetHeader().version, assetB.GetHeader().version);
EXPECT_EQ(assetA.GetHeader().version, assetA_dup.GetHeader().version);
EXPECT_EQ(assetA.GetHeader().dependencies, assetB.GetHeader().dependencies);
EXPECT_TRUE(assetA.GetHeader().dependencies.empty());
EXPECT_EQ(assetA.GetHeader().dependencies, assetA_dup.GetHeader().dependencies);
EXPECT_EQ(assetA.GetAsset().health, health);
EXPECT_EQ(assetA.GetAsset().health, assetB.GetAsset().health);
EXPECT_EQ(assetA.GetAsset().health, assetA_dup.GetAsset().health);
EXPECT_EQ(assetA.GetAsset().mana, mana);
EXPECT_EQ(assetA.GetAsset().mana, assetB.GetAsset().mana);
EXPECT_EQ(assetA.GetAsset().mana, assetA_dup.GetAsset().mana);
}
/****************************************************************************************/
TEST_F(AssetFixture, Reflection)
TEST_F(AssetFixture, AssetBTests)
{
[[maybe_unused]]
const reflection::Schema* reflection = reflection::GetSchema(AssetA::ReflectionInfo().data());
constexpr eastl::string_view nameA = "Hello";
constexpr std::uint32_t versionA = 42;
constexpr std::uint32_t healthA = 100;
constexpr std::uint32_t manaA = 50;
for (const auto test: *reflection->root_table()->fields())
{
eastl::string typeName;
AssetA assetA;
assetA.SetName(nameA);
assetA.SetVersion(versionA);
assetA.GetAsset().health = healthA;
assetA.GetAsset().mana = manaA;
if (test->type()->base_type() == reflection::BaseType::Obj)
{
const reflection::Object* obj = reflection->objects()->Get(test->type()->index());
typeName = obj->name()->c_str();
}
else if (test->type()->base_type() == reflection::BaseType::Vector &&
test->type()->element() == reflection::BaseType::Obj)
{
const reflection::Object* obj = reflection->objects()->Get(test->type()->index());
typeName = eastl::string("[") + obj->name()->c_str() + "]";
}
else
{
typeName = reflection::EnumNameBaseType(test->type()->base_type());
}
constexpr eastl::string_view nameAA = "There";
constexpr std::uint32_t versionAA = 42;
constexpr std::uint32_t healthAA = 100;
constexpr std::uint32_t manaAA = 50;
BIGFOOT_LOG_INFO(ENGINE_LOGGER, "{} {}", typeName, test->name()->c_str());
}
AssetA assetAA;
assetAA.SetName(nameAA);
assetAA.SetVersion(versionAA);
assetAA.GetAsset().health = healthAA;
assetAA.GetAsset().mana = manaAA;
constexpr eastl::string_view nameB = "Kenobi";
constexpr std::uint32_t versionB = 1;
AssetB assetB;
assetB.SetName(nameB);
assetB.SetVersion(versionB);
assetB.GetAsset().asset_a_ref = HardRef<AssetA> {assetA.GetHeader().uuid};
assetB.GetAsset().asset_a_refs = {SoftRef<AssetA> {assetA.GetHeader().uuid},
SoftRef<AssetA> {assetAA.GetHeader().uuid}};
const eastl::vector<std::byte> test = assetB.Save();
AssetB assetB_dup {test};
EXPECT_EQ(assetB.GetHeader().uuid, assetB_dup.GetHeader().uuid);
EXPECT_EQ(assetB.GetHeader().type_id, AssetB::GetTypeID());
EXPECT_EQ(assetB.GetHeader().type_id, assetB_dup.GetHeader().type_id);
EXPECT_EQ(assetB.GetHeader().type_name, AssetB::GetTypeName());
EXPECT_EQ(assetB.GetHeader().type_name, assetB_dup.GetHeader().type_name);
EXPECT_EQ(assetB.GetHeader().name, nameB);
EXPECT_EQ(assetB.GetHeader().name, assetB_dup.GetHeader().name);
EXPECT_EQ(assetB.GetHeader().version, versionB);
EXPECT_EQ(assetB.GetHeader().version, assetB_dup.GetHeader().version);
EXPECT_EQ(assetB.GetHeader().dependencies.size(), 1);
EXPECT_NE(eastl::find(assetB.GetHeader().dependencies.begin(),
assetB.GetHeader().dependencies.end(),
assetA.GetHeader().uuid),
assetB.GetHeader().dependencies.end());
EXPECT_EQ(assetB.GetHeader().dependencies, assetB_dup.GetHeader().dependencies);
EXPECT_EQ(assetB.GetAsset().asset_a_ref, HardRef<AssetA> {assetA.GetHeader().uuid});
EXPECT_EQ(assetB.GetAsset().asset_a_ref, assetB_dup.GetAsset().asset_a_ref);
EXPECT_EQ(assetB.GetAsset().asset_a_refs,
(eastl::vector<SoftRef<AssetA>> {SoftRef<AssetA> {assetA.GetHeader().uuid},
SoftRef<AssetA> {assetAA.GetHeader().uuid}}));
EXPECT_EQ(assetB.GetAsset().asset_a_refs, assetB_dup.GetAsset().asset_a_refs);
}
/****************************************************************************************/
TEST_F(AssetFixture, AssetCTests)
{
constexpr eastl::string_view nameA = "Hello";
constexpr std::uint32_t versionA = 42;
constexpr std::uint32_t healthA = 100;
constexpr std::uint32_t manaA = 50;
AssetA assetA;
assetA.SetName(nameA);
assetA.SetVersion(versionA);
assetA.GetAsset().health = healthA;
assetA.GetAsset().mana = manaA;
constexpr eastl::string_view nameAA = "There";
constexpr std::uint32_t versionAA = 42;
constexpr std::uint32_t healthAA = 100;
constexpr std::uint32_t manaAA = 50;
AssetA assetAA;
assetAA.SetName(nameAA);
assetAA.SetVersion(versionAA);
assetAA.GetAsset().health = healthAA;
assetAA.GetAsset().mana = manaAA;
constexpr eastl::string_view nameB = "Kenobi";
constexpr std::uint32_t versionB = 1;
AssetB assetB;
assetB.SetName(nameB);
assetB.SetVersion(versionB);
assetB.GetAsset().asset_a_ref = HardRef<AssetA> {assetA.GetHeader().uuid};
assetB.GetAsset().asset_a_refs = {SoftRef<AssetA> {assetA.GetHeader().uuid},
SoftRef<AssetA> {assetAA.GetHeader().uuid}};
constexpr eastl::string_view nameC = "General";
constexpr std::uint32_t versionC = 1;
AssetC assetC;
assetC.SetName(nameC);
assetC.SetVersion(versionC);
assetC.GetAsset().inner_table->asset_a_ref = HardRef<AssetA> {assetA.GetHeader().uuid};
assetC.GetAsset().inner_table->asset_a_refs = {HardRef<AssetA> {assetA.GetHeader().uuid},
HardRef<AssetA> {assetAA.GetHeader().uuid}};
assetC.GetAsset().asset_b_ref = HardRef<AssetB> {assetB.GetHeader().uuid};
assetC.GetAsset().asset_b_refs = {SoftRef<AssetB> {assetB.GetHeader().uuid}};
const eastl::vector<std::byte> test = assetC.Save();
AssetC assetC_dup {test};
EXPECT_EQ(assetC.GetHeader().uuid, assetC_dup.GetHeader().uuid);
EXPECT_EQ(assetC.GetHeader().type_id, AssetC::GetTypeID());
EXPECT_EQ(assetC.GetHeader().type_id, assetC_dup.GetHeader().type_id);
EXPECT_EQ(assetC.GetHeader().type_name, AssetC::GetTypeName());
EXPECT_EQ(assetC.GetHeader().type_name, assetC_dup.GetHeader().type_name);
EXPECT_EQ(assetC.GetHeader().name, nameC);
EXPECT_EQ(assetC.GetHeader().name, assetC_dup.GetHeader().name);
EXPECT_EQ(assetC.GetHeader().version, versionC);
EXPECT_EQ(assetC.GetHeader().version, assetC_dup.GetHeader().version);
EXPECT_EQ(assetC.GetHeader().dependencies.size(), 3);
EXPECT_NE(eastl::find(assetC.GetHeader().dependencies.begin(),
assetC.GetHeader().dependencies.end(),
assetB.GetHeader().uuid),
assetC.GetHeader().dependencies.end());
EXPECT_NE(eastl::find(assetC.GetHeader().dependencies.begin(),
assetC.GetHeader().dependencies.end(),
assetA.GetHeader().uuid),
assetC.GetHeader().dependencies.end());
EXPECT_NE(eastl::find(assetC.GetHeader().dependencies.begin(),
assetC.GetHeader().dependencies.end(),
assetAA.GetHeader().uuid),
assetC.GetHeader().dependencies.end());
EXPECT_EQ(assetC.GetHeader().dependencies, assetC_dup.GetHeader().dependencies);
EXPECT_EQ(assetC.GetAsset().asset_b_ref, HardRef<AssetB> {assetB.GetHeader().uuid});
EXPECT_EQ(assetC.GetAsset().asset_b_ref, assetC_dup.GetAsset().asset_b_ref);
EXPECT_EQ(assetC.GetAsset().asset_b_refs,
(eastl::vector<SoftRef<AssetB>> {SoftRef<AssetB> {assetB.GetHeader().uuid}}));
EXPECT_EQ(assetC.GetAsset().asset_b_refs, assetC_dup.GetAsset().asset_b_refs);
EXPECT_EQ(assetC.GetAsset().inner_table->asset_a_ref, HardRef<AssetA> {assetA.GetHeader().uuid});
EXPECT_EQ(assetC.GetAsset().inner_table->asset_a_ref, assetC_dup.GetAsset().inner_table->asset_a_ref);
EXPECT_EQ(assetC.GetAsset().inner_table->asset_a_refs,
(eastl::vector<HardRef<AssetA>> {HardRef<AssetA> {assetA.GetHeader().uuid},
HardRef<AssetA> {assetAA.GetHeader().uuid}}));
EXPECT_EQ(assetC.GetAsset().inner_table->asset_a_refs, assetC_dup.GetAsset().inner_table->asset_a_refs);
}
} // namespace Bigfoot

View File

@@ -1,9 +1,9 @@
/*********************************************************************
* \file AssetA.cpp
* \file AssetA_fwd.cpp
*
* \author Romain BOULLARD
* \date May 2026
*********************************************************************/
#include <EngineTests/Asset/AssetA.hpp>
#include <EngineTests/Asset/AssetA_fwd.hpp>
ASSET_REF_IMPL(AssetA)
ASSET_REF_IMPL(AssetA, ::Bigfoot::AssetA)

View File

@@ -1,9 +1,9 @@
/*********************************************************************
* \file AssetB.cpp
* \file AssetB_fwd.cpp
*
* \author Romain BOULLARD
* \date May 2026
*********************************************************************/
#include <EngineTests/Asset/AssetB.hpp>
#include <EngineTests/Asset/AssetB_fwd.hpp>
ASSET_REF_IMPL(AssetB)
ASSET_REF_IMPL(AssetB, ::Bigfoot::AssetB)

View File

@@ -0,0 +1,9 @@
/*********************************************************************
* \file AssetC_fwd.cpp
*
* \author Romain BOULLARD
* \date May 2026
*********************************************************************/
#include <EngineTests/Asset/AssetC_fwd.hpp>
ASSET_REF_IMPL(AssetC, ::Bigfoot::AssetC)

View File

@@ -11,35 +11,19 @@
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 1184> g_AssetA_bfbs = {
inline constexpr eastl::array<std::byte, 912> g_AssetA_bfbs = {
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA0}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x44}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0xD8}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x94}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00},
std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x2C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x54}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x84}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x58}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x50}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x6C}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0xF8}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01},
std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x08}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66},
std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xB4}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x80}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x73}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x8C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E},
std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0xFC}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x94}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00},
std::byte{0x28}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x5C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x84}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x48}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x50}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x6C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73},
@@ -53,25 +37,24 @@ namespace Bigfoot
std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x6C}, std::byte{0x74}, std::byte{0x68}, std::byte{0x00}, std::byte{0x00}, std::byte{0xC8}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01},
std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x6C}, std::byte{0x74}, std::byte{0x68}, std::byte{0x00}, std::byte{0x00}, std::byte{0xD8}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01},
std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00},
std::byte{0x7C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x48}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01},
std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F},
std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75}, std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73},
std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F},
std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67},
std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x48},
std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66},
std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x84}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x50}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x40}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E},
std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75}, std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73}, std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F},
std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x41},
std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66},
std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72},
std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},

View File

@@ -1,5 +1,7 @@
include "Engine/Asset/Reference.fbs";
native_include "EngineTests/Asset/AssetA_fwd.hpp";
namespace Flat.Bigfoot;
table AssetA
@@ -8,15 +10,4 @@ table AssetA
mana: uint = 0;
}
root_type AssetA;
namespace Flat.Bigfoot.Reference;
struct AssetAHardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetA>")
{
hard_ref: HardRef;
}
struct AssetASoftRef (native_type: "::Bigfoot::SoftRef<::Bigfoot::AssetA>")
{
soft_ref: SoftRef;
}
root_type AssetA;

View File

@@ -7,14 +7,23 @@
#ifndef BIGFOOT_ENGINE_ASSETA_HPP
#define BIGFOOT_ENGINE_ASSETA_HPP
#include <Engine/Asset/Asset.hpp>
#include <Engine/Asset/Reference.hpp>
#include <EngineTests/Asset/AssetA.bfbs_generated.hpp>
#include <EngineTests/Asset/AssetA_generated.hpp>
namespace Bigfoot
{
class AssetA: public Asset<::Flat::Bigfoot::AssetA>
struct AssetATraits
{
using FLAT = ::Flat::Bigfoot::AssetA;
static constexpr eastl::span<const std::byte> ReflectionInfo()
{
return g_AssetA_bfbs;
}
};
class AssetA: public Asset<AssetATraits>
{
public:
AssetA() = default;
@@ -29,18 +38,9 @@ class AssetA: public Asset<::Flat::Bigfoot::AssetA>
~AssetA() = default;
[[nodiscard]]
AssetA& operator=(const AssetA& p_asset) = default;
[[nodiscard]]
AssetA& operator=(AssetA&& p_asset) = default;
static constexpr eastl::span<const std::byte> ReflectionInfo()
{
return g_AssetA_bfbs;
}
};
} // namespace Bigfoot
ASSET_REF_DECL(AssetA)
#endif

View File

@@ -0,0 +1,18 @@
/*********************************************************************
* \file AssetA_fwd.hpp
*
* \author Romain BOULLARD
* \date May 2026
*********************************************************************/
#ifndef BIGFOOT_ENGINE_ASSETA_FWD_HPP
#define BIGFOOT_ENGINE_ASSETA_FWD_HPP
#include <Engine/Asset/Reference_generated.hpp>
namespace Bigfoot
{
class AssetA;
} // namespace Bigfoot
ASSET_DECL(AssetA, ::Bigfoot::AssetA)
#endif

View File

@@ -1,8 +1,8 @@
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_REFERENCE_H_
#define FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_REFERENCE_H_
#ifndef FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_H_
#define FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_H_
#include "flatbuffers/flatbuffers.h"
@@ -13,11 +13,15 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included");
#include "Engine/Asset/Reference.hpp"
#include "System/UUID/UUID.hpp"
#include "Engine/Asset/Reference.hpp"
#include "EngineTests/Asset/AssetA_fwd.hpp"
#include "Engine/Asset/Reference_generated.hpp"
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Flat {
namespace Bigfoot {
@@ -26,80 +30,8 @@ struct AssetA;
struct AssetABuilder;
struct AssetAT;
namespace Reference {
struct AssetAHardRef;
struct AssetASoftRef;
} // namespace Reference
inline const ::flatbuffers::TypeTable *AssetATypeTable();
namespace Reference {
inline const ::flatbuffers::TypeTable *AssetAHardRefTypeTable();
inline const ::flatbuffers::TypeTable *AssetASoftRefTypeTable();
FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetAHardRef FLATBUFFERS_FINAL_CLASS {
private:
Flat::Bigfoot::Reference::HardRef hard_ref_;
public:
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return AssetAHardRefTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Flat.Bigfoot.Reference.AssetAHardRef";
}
AssetAHardRef()
: hard_ref_() {
}
AssetAHardRef(const Flat::Bigfoot::Reference::HardRef &_hard_ref)
: hard_ref_(_hard_ref) {
}
const Flat::Bigfoot::Reference::HardRef &hard_ref() const {
return hard_ref_;
}
};
FLATBUFFERS_STRUCT_END(AssetAHardRef, 16);
struct AssetAHardRef::Traits {
using type = AssetAHardRef;
};
FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetASoftRef FLATBUFFERS_FINAL_CLASS {
private:
Flat::Bigfoot::Reference::SoftRef soft_ref_;
public:
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return AssetASoftRefTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Flat.Bigfoot.Reference.AssetASoftRef";
}
AssetASoftRef()
: soft_ref_() {
}
AssetASoftRef(const Flat::Bigfoot::Reference::SoftRef &_soft_ref)
: soft_ref_(_soft_ref) {
}
const Flat::Bigfoot::Reference::SoftRef &soft_ref() const {
return soft_ref_;
}
};
FLATBUFFERS_STRUCT_END(AssetASoftRef, 16);
struct AssetASoftRef::Traits {
using type = AssetASoftRef;
};
} // namespace Reference
struct AssetAT : public ::flatbuffers::NativeTable {
typedef AssetA TableType;
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
@@ -223,44 +155,6 @@ inline const ::flatbuffers::TypeTable *AssetATypeTable() {
return &tt;
}
namespace Reference {
inline const ::flatbuffers::TypeTable *AssetAHardRefTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_SEQUENCE, 0, 0 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Flat::Bigfoot::Reference::HardRefTypeTable
};
static const int64_t values[] = { 0, 16 };
static const char * const names[] = {
"hard_ref"
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_STRUCT, 1, type_codes, type_refs, nullptr, values, names
};
return &tt;
}
inline const ::flatbuffers::TypeTable *AssetASoftRefTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_SEQUENCE, 0, 0 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Flat::Bigfoot::Reference::SoftRefTypeTable
};
static const int64_t values[] = { 0, 16 };
static const char * const names[] = {
"soft_ref"
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_STRUCT, 1, type_codes, type_refs, nullptr, values, names
};
return &tt;
}
} // namespace Reference
inline const Flat::Bigfoot::AssetA *GetAssetA(const void *buf) {
return ::flatbuffers::GetRoot<Flat::Bigfoot::AssetA>(buf);
}
@@ -312,4 +206,4 @@ inline eastl::unique_ptr<Flat::Bigfoot::AssetAT> UnPackSizePrefixedAssetA(
} // namespace Bigfoot
} // namespace Flat
#endif // FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_REFERENCE_H_
#endif // FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_H_

View File

@@ -11,69 +11,37 @@
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 1720> g_AssetB_bfbs = {
inline constexpr eastl::array<std::byte, 1192> g_AssetB_bfbs = {
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xB0}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA8}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x09}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x88}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x7C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0xF0}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00},
std::byte{0x70}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0xF4}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA4}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00},
std::byte{0x30}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x78}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x58}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x90}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00},
std::byte{0x50}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x48}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x78}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x4C}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x5C}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x60}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0xFB}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xF4}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74},
std::byte{0x42}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xC0}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x8C}, std::byte{0xFB}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F},
std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x73}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74},
std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x80}, std::byte{0xFB}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01},
std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x78}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72},
std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0xFB}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73},
std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0xA0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x13}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x00},
std::byte{0x1C}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0A}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x0F}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x73},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00},
std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00},
std::byte{0xF8}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67},
std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41},
std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0xB4}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x80}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x73}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x8C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74},
std::byte{0x41}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xFC}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F},
std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64},
std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00},
std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x88}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xAC}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00},
std::byte{0x40}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x78}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x98}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00},
std::byte{0x60}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x58}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x80}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x4C}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x5C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x68}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x13}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00},
std::byte{0x08}, std::byte{0x00}, std::byte{0x0A}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00},
std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00},
std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x0F},
std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65},
std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00},
std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00},
std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F},
std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65},
std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73},
@@ -87,25 +55,24 @@ namespace Bigfoot
std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x6C}, std::byte{0x74}, std::byte{0x68}, std::byte{0x00}, std::byte{0x00},
std::byte{0xC8}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67},
std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x53},
std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x7C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x48}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x38}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E},
std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75}, std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73}, std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F},
std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x41},
std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66},
std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00},
std::byte{0xD8}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67},
std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x84}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x50}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01},
std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F},
std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75}, std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73},
std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F},
std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67},
std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x34}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00},
std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00},
std::byte{0x07}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x54}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},

View File

@@ -1,25 +1,15 @@
include "Engine/Asset/Reference.fbs";
include "EngineTests/Asset/AssetA.fbs";
native_include "EngineTests/Asset/AssetA.hpp";
native_include "EngineTests/Asset/AssetB_fwd.hpp";
namespace Flat.Bigfoot;
table AssetB
{
asset_a_ref: Flat.Bigfoot.Reference.AssetAHardRef (native_inline);
asset_a_refs: [Flat.Bigfoot.Reference.AssetAHardRef] (native_inline);
asset_a_ref: Flat.Bigfoot.HardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetA>", native_inline, native_type_pack_name: "HardRefAssetA");
asset_a_refs: [Flat.Bigfoot.SoftRef] (native_type: "::Bigfoot::SoftRef<::Bigfoot::AssetA>", native_inline, native_type_pack_name: "SoftRefAssetA");
}
root_type AssetB;
namespace Flat.Bigfoot.Reference;
struct AssetBHardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetB>")
{
hard_ref: HardRef;
}
struct AssetBSoftRef (native_type: "::Bigfoot::SoftRef<::Bigfoot::AssetB>")
{
soft_ref: SoftRef;
}
root_type AssetB;

View File

@@ -1,5 +1,5 @@
/*********************************************************************
* \file AssetA.hpp
* \file AssetB.hpp
*
* \author Romain BOULLARD
* \date April 2026
@@ -7,14 +7,23 @@
#ifndef BIGFOOT_ENGINE_ASSETB_HPP
#define BIGFOOT_ENGINE_ASSETB_HPP
#include <Engine/Asset/Asset.hpp>
#include <Engine/Asset/Reference.hpp>
#include <EngineTests/Asset/AssetB.bfbs_generated.hpp>
#include <EngineTests/Asset/AssetB_generated.hpp>
namespace Bigfoot
{
class AssetB: public Asset<::Flat::Bigfoot::AssetB>
struct AssetBTraits
{
using FLAT = ::Flat::Bigfoot::AssetB;
static constexpr eastl::span<const std::byte> ReflectionInfo()
{
return g_AssetB_bfbs;
}
};
class AssetB: public Asset<AssetBTraits>
{
public:
AssetB() = default;
@@ -29,18 +38,9 @@ class AssetB: public Asset<::Flat::Bigfoot::AssetB>
~AssetB() = default;
[[nodiscard]]
AssetB& operator=(const AssetB& p_asset) = default;
[[nodiscard]]
AssetB& operator=(AssetB&& p_asset) = default;
static constexpr eastl::span<const std::byte> ReflectionInfo()
{
return g_AssetB_bfbs;
}
};
} // namespace Bigfoot
ASSET_REF_DECL(AssetB)
#endif

View File

@@ -0,0 +1,18 @@
/*********************************************************************
* \file AssetB_fwd.hpp
*
* \author Romain BOULLARD
* \date May 2026
*********************************************************************/
#ifndef BIGFOOT_ENGINE_ASSETB_FWD_HPP
#define BIGFOOT_ENGINE_ASSETB_FWD_HPP
#include <Engine/Asset/Reference_generated.hpp>
namespace Bigfoot
{
class AssetB;
} // namespace Bigfoot
ASSET_DECL(AssetB, ::Bigfoot::AssetB)
#endif

View File

@@ -1,8 +1,8 @@
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_REFERENCE_H_
#define FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_REFERENCE_H_
#ifndef FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_H_
#define FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_H_
#include "flatbuffers/flatbuffers.h"
@@ -13,13 +13,17 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included");
#include "Engine/Asset/Reference.hpp"
#include "System/UUID/UUID.hpp"
#include "EngineTests/Asset/AssetA.hpp"
#include "Engine/Asset/Reference.hpp"
#include "EngineTests/Asset/AssetA_fwd.hpp"
#include "EngineTests/Asset/AssetB_fwd.hpp"
#include "Engine/Asset/Reference_generated.hpp"
#include "EngineTests/Asset/AssetA_generated.hpp"
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Flat {
namespace Bigfoot {
@@ -28,87 +32,15 @@ struct AssetB;
struct AssetBBuilder;
struct AssetBT;
namespace Reference {
struct AssetBHardRef;
struct AssetBSoftRef;
} // namespace Reference
inline const ::flatbuffers::TypeTable *AssetBTypeTable();
namespace Reference {
inline const ::flatbuffers::TypeTable *AssetBHardRefTypeTable();
inline const ::flatbuffers::TypeTable *AssetBSoftRefTypeTable();
FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetBHardRef FLATBUFFERS_FINAL_CLASS {
private:
Flat::Bigfoot::Reference::HardRef hard_ref_;
public:
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return AssetBHardRefTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Flat.Bigfoot.Reference.AssetBHardRef";
}
AssetBHardRef()
: hard_ref_() {
}
AssetBHardRef(const Flat::Bigfoot::Reference::HardRef &_hard_ref)
: hard_ref_(_hard_ref) {
}
const Flat::Bigfoot::Reference::HardRef &hard_ref() const {
return hard_ref_;
}
};
FLATBUFFERS_STRUCT_END(AssetBHardRef, 16);
struct AssetBHardRef::Traits {
using type = AssetBHardRef;
};
FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetBSoftRef FLATBUFFERS_FINAL_CLASS {
private:
Flat::Bigfoot::Reference::SoftRef soft_ref_;
public:
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return AssetBSoftRefTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Flat.Bigfoot.Reference.AssetBSoftRef";
}
AssetBSoftRef()
: soft_ref_() {
}
AssetBSoftRef(const Flat::Bigfoot::Reference::SoftRef &_soft_ref)
: soft_ref_(_soft_ref) {
}
const Flat::Bigfoot::Reference::SoftRef &soft_ref() const {
return soft_ref_;
}
};
FLATBUFFERS_STRUCT_END(AssetBSoftRef, 16);
struct AssetBSoftRef::Traits {
using type = AssetBSoftRef;
};
} // namespace Reference
struct AssetBT : public ::flatbuffers::NativeTable {
typedef AssetB TableType;
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Flat.Bigfoot.AssetBT";
}
::Bigfoot::HardRef<::Bigfoot::AssetA> asset_a_ref{};
std::vector<::Bigfoot::HardRef<::Bigfoot::AssetA>> asset_a_refs{};
eastl::vector<::Bigfoot::SoftRef<::Bigfoot::AssetA>> asset_a_refs{};
};
struct AssetB FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
@@ -125,16 +57,16 @@ struct AssetB FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
VT_ASSET_A_REF = 4,
VT_ASSET_A_REFS = 6
};
const Flat::Bigfoot::Reference::AssetAHardRef *asset_a_ref() const {
return GetStruct<const Flat::Bigfoot::Reference::AssetAHardRef *>(VT_ASSET_A_REF);
const Flat::Bigfoot::HardRef *asset_a_ref() const {
return GetStruct<const Flat::Bigfoot::HardRef *>(VT_ASSET_A_REF);
}
const ::flatbuffers::Vector<const Flat::Bigfoot::Reference::AssetAHardRef *> *asset_a_refs() const {
return GetPointer<const ::flatbuffers::Vector<const Flat::Bigfoot::Reference::AssetAHardRef *> *>(VT_ASSET_A_REFS);
const ::flatbuffers::Vector<const Flat::Bigfoot::SoftRef *> *asset_a_refs() const {
return GetPointer<const ::flatbuffers::Vector<const Flat::Bigfoot::SoftRef *> *>(VT_ASSET_A_REFS);
}
template <bool B = false>
bool Verify(::flatbuffers::VerifierTemplate<B> &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<Flat::Bigfoot::Reference::AssetAHardRef>(verifier, VT_ASSET_A_REF, 1) &&
VerifyField<Flat::Bigfoot::HardRef>(verifier, VT_ASSET_A_REF, 1) &&
VerifyOffset(verifier, VT_ASSET_A_REFS) &&
verifier.VerifyVector(asset_a_refs()) &&
verifier.EndTable();
@@ -148,10 +80,10 @@ struct AssetBBuilder {
typedef AssetB Table;
::flatbuffers::FlatBufferBuilder &fbb_;
::flatbuffers::uoffset_t start_;
void add_asset_a_ref(const Flat::Bigfoot::Reference::AssetAHardRef *asset_a_ref) {
void add_asset_a_ref(const Flat::Bigfoot::HardRef *asset_a_ref) {
fbb_.AddStruct(AssetB::VT_ASSET_A_REF, asset_a_ref);
}
void add_asset_a_refs(::flatbuffers::Offset<::flatbuffers::Vector<const Flat::Bigfoot::Reference::AssetAHardRef *>> asset_a_refs) {
void add_asset_a_refs(::flatbuffers::Offset<::flatbuffers::Vector<const Flat::Bigfoot::SoftRef *>> asset_a_refs) {
fbb_.AddOffset(AssetB::VT_ASSET_A_REFS, asset_a_refs);
}
explicit AssetBBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
@@ -167,8 +99,8 @@ struct AssetBBuilder {
inline ::flatbuffers::Offset<AssetB> CreateAssetB(
::flatbuffers::FlatBufferBuilder &_fbb,
const Flat::Bigfoot::Reference::AssetAHardRef *asset_a_ref = nullptr,
::flatbuffers::Offset<::flatbuffers::Vector<const Flat::Bigfoot::Reference::AssetAHardRef *>> asset_a_refs = 0) {
const Flat::Bigfoot::HardRef *asset_a_ref = nullptr,
::flatbuffers::Offset<::flatbuffers::Vector<const Flat::Bigfoot::SoftRef *>> asset_a_refs = 0) {
AssetBBuilder builder_(_fbb);
builder_.add_asset_a_refs(asset_a_refs);
builder_.add_asset_a_ref(asset_a_ref);
@@ -191,8 +123,8 @@ inline AssetBT *AssetB::UnPack(const ::flatbuffers::resolver_function_t *_resolv
inline void AssetB::UnPackTo(AssetBT *_o, const ::flatbuffers::resolver_function_t *_resolver) const {
(void)_o;
(void)_resolver;
{ auto _e = asset_a_ref(); if (_e) _o->asset_a_ref = ::flatbuffers::UnPack(*_e); }
{ auto _e = asset_a_refs(); if (_e) { _o->asset_a_refs.resize(_e->size()); for (::flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->asset_a_refs[_i] = ::flatbuffers::UnPack(*_e->Get(_i)); } } else { _o->asset_a_refs.resize(0); } }
{ auto _e = asset_a_ref(); if (_e) _o->asset_a_ref = ::flatbuffers::UnPackHardRefAssetA(*_e); }
{ auto _e = asset_a_refs(); if (_e) { _o->asset_a_refs.resize(_e->size()); for (::flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->asset_a_refs[_i] = ::flatbuffers::UnPackSoftRefAssetA(*_e->Get(_i)); } } else { _o->asset_a_refs.resize(0); } }
}
inline ::flatbuffers::Offset<AssetB> CreateAssetB(::flatbuffers::FlatBufferBuilder &_fbb, const AssetBT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) {
@@ -203,8 +135,8 @@ inline ::flatbuffers::Offset<AssetB> AssetB::Pack(::flatbuffers::FlatBufferBuild
(void)_rehasher;
(void)_o;
struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AssetBT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
auto _asset_a_ref = ::flatbuffers::Pack(_o->asset_a_ref);
auto _asset_a_refs = _fbb.CreateVectorOfNativeStructs<Flat::Bigfoot::Reference::AssetAHardRef, ::Bigfoot::HardRef<::Bigfoot::AssetA>>(_o->asset_a_refs);
auto _asset_a_ref = ::flatbuffers::PackHardRefAssetA(_o->asset_a_ref);
auto _asset_a_refs = _fbb.CreateVectorOfNativeStructs<Flat::Bigfoot::SoftRef, ::Bigfoot::SoftRef<::Bigfoot::AssetA>>(_o->asset_a_refs.data(), _o->asset_a_refs.size(), ::flatbuffers::PackSoftRefAssetA);
return Flat::Bigfoot::CreateAssetB(
_fbb,
&_asset_a_ref,
@@ -214,10 +146,11 @@ inline ::flatbuffers::Offset<AssetB> AssetB::Pack(::flatbuffers::FlatBufferBuild
inline const ::flatbuffers::TypeTable *AssetBTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_SEQUENCE, 0, 0 },
{ ::flatbuffers::ET_SEQUENCE, 1, 0 }
{ ::flatbuffers::ET_SEQUENCE, 1, 1 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Flat::Bigfoot::Reference::AssetAHardRefTypeTable
Flat::Bigfoot::HardRefTypeTable,
Flat::Bigfoot::SoftRefTypeTable
};
static const char * const names[] = {
"asset_a_ref",
@@ -229,44 +162,6 @@ inline const ::flatbuffers::TypeTable *AssetBTypeTable() {
return &tt;
}
namespace Reference {
inline const ::flatbuffers::TypeTable *AssetBHardRefTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_SEQUENCE, 0, 0 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Flat::Bigfoot::Reference::HardRefTypeTable
};
static const int64_t values[] = { 0, 16 };
static const char * const names[] = {
"hard_ref"
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_STRUCT, 1, type_codes, type_refs, nullptr, values, names
};
return &tt;
}
inline const ::flatbuffers::TypeTable *AssetBSoftRefTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_SEQUENCE, 0, 0 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Flat::Bigfoot::Reference::SoftRefTypeTable
};
static const int64_t values[] = { 0, 16 };
static const char * const names[] = {
"soft_ref"
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_STRUCT, 1, type_codes, type_refs, nullptr, values, names
};
return &tt;
}
} // namespace Reference
inline const Flat::Bigfoot::AssetB *GetAssetB(const void *buf) {
return ::flatbuffers::GetRoot<Flat::Bigfoot::AssetB>(buf);
}
@@ -318,4 +213,4 @@ inline eastl::unique_ptr<Flat::Bigfoot::AssetBT> UnPackSizePrefixedAssetB(
} // namespace Bigfoot
} // namespace Flat
#endif // FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_REFERENCE_H_
#endif // FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_H_

View File

@@ -0,0 +1,123 @@
/**
* Auto-generated header from: AssetC.bfbs
* Generated by Bin2CPP
*
* DO NOT TOUCH
*/
#ifndef ASSETC_BFBS_HPP
#define ASSETC_BFBS_HPP
#include <EASTL/array.h>
#include <cstddef>
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 1656> g_AssetC_bfbs = {
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xD4}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x48}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x54}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00},
std::byte{0x98}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x7C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00},
std::byte{0x3C}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x40}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x68}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00},
std::byte{0x20}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x7C}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x04}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00},
std::byte{0x94}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFC}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x24}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA8}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xF0}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xB8}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x0C}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xD4}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xF0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x5C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x9C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x13}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73},
std::byte{0x65}, std::byte{0x74}, std::byte{0x43}, std::byte{0x00}, std::byte{0x4C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x02}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00},
std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x0F},
std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65},
std::byte{0x74}, std::byte{0x5F}, std::byte{0x62}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x84}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x14}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x62}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00},
std::byte{0x14}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x72}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x61},
std::byte{0x62}, std::byte{0x6C}, std::byte{0x65}, std::byte{0x00}, std::byte{0x4C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73},
std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x43}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x5C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x17}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x49}, std::byte{0x6E}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x72}, std::byte{0x54}, std::byte{0x61},
std::byte{0x62}, std::byte{0x6C}, std::byte{0x65}, std::byte{0x00}, std::byte{0x4C}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00},
std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x0F},
std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65},
std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x04}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x13}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00},
std::byte{0x08}, std::byte{0x00}, std::byte{0x0A}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00},
std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00},
std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x0F},
std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65},
std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00},
std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00},
std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F},
std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65},
std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x13}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74},
std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xCC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6D}, std::byte{0x61}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00},
std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00},
std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x6C}, std::byte{0x74}, std::byte{0x68}, std::byte{0x00}, std::byte{0x00},
std::byte{0xD8}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67},
std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x84}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x50}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01},
std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F},
std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75}, std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73},
std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F},
std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67},
std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x34}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00},
std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00},
std::byte{0x07}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x54}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E},
std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75},
std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x79}, std::byte{0x73}, std::byte{0x74}, std::byte{0x65}, std::byte{0x6D}, std::byte{0x2F}, std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C},
std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x79}, std::byte{0x73}, std::byte{0x74}, std::byte{0x65}, std::byte{0x6D}, std::byte{0x2F}, std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x2F},
std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x11}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67},
std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00},
std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00},
std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x11}, std::byte{0x04}, std::byte{0x10}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00},
std::byte{0x62}, std::byte{0x79}, std::byte{0x74}, std::byte{0x65}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}
};
} // namespace Bigfoot
#endif // ASSETC_BFBS_HPP

View File

@@ -0,0 +1,24 @@
include "Engine/Asset/Reference.fbs";
include "EngineTests/Asset/AssetA.fbs";
include "EngineTests/Asset/AssetB.fbs";
native_include "EngineTests/Asset/AssetC_fwd.hpp";
namespace Flat.Bigfoot;
table InnerTable
{
asset_a_ref: Flat.Bigfoot.HardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetA>", native_inline, native_type_pack_name: "HardRefAssetA");
asset_a_refs: [Flat.Bigfoot.HardRef] (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetA>", native_inline, native_type_pack_name: "HardRefAssetA");
}
table AssetC
{
inner_table: InnerTable (required);
asset_b_ref: Flat.Bigfoot.HardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetB>", native_inline, native_type_pack_name: "HardRefAssetB");
asset_b_refs: [Flat.Bigfoot.SoftRef] (native_type: "::Bigfoot::SoftRef<::Bigfoot::AssetB>", native_inline, native_type_pack_name: "SoftRefAssetB");
}
root_type AssetC;

View File

@@ -0,0 +1,49 @@
/*********************************************************************
* \file AssetC.hpp
*
* \author Romain BOULLARD
* \date April 2026
*********************************************************************/
#ifndef BIGFOOT_ENGINE_ASSETC_HPP
#define BIGFOOT_ENGINE_ASSETC_HPP
#include <Engine/Asset/Asset.hpp>
#include <EngineTests/Asset/AssetC.bfbs_generated.hpp>
#include <EngineTests/Asset/AssetC_generated.hpp>
namespace Bigfoot
{
struct AssetCTraits
{
using FLAT = ::Flat::Bigfoot::AssetC;
static constexpr eastl::span<const std::byte> ReflectionInfo()
{
return g_AssetC_bfbs;
}
};
class AssetC: public Asset<AssetCTraits>
{
public:
AssetC()
{
GetAsset().inner_table = eastl::make_unique<::Flat::Bigfoot::InnerTableT>();
}
AssetC(const eastl::span<const std::byte> p_flatbuffer):
Asset(p_flatbuffer)
{
}
AssetC(const AssetC& p_asset) = default;
AssetC(AssetC&& p_asset) = default;
~AssetC() = default;
AssetC& operator=(const AssetC& p_asset) = default;
AssetC& operator=(AssetC&& p_asset) = default;
};
} // namespace Bigfoot
#endif

View File

@@ -0,0 +1,18 @@
/*********************************************************************
* \file AssetC_fwd.hpp
*
* \author Romain BOULLARD
* \date May 2026
*********************************************************************/
#ifndef BIGFOOT_ENGINE_ASSETC_FWD_HPP
#define BIGFOOT_ENGINE_ASSETC_FWD_HPP
#include <Engine/Asset/Reference_generated.hpp>
namespace Bigfoot
{
class AssetC;
} // namespace Bigfoot
ASSET_DECL(AssetC, ::Bigfoot::AssetC)
#endif

View File

@@ -0,0 +1,387 @@
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_ASSETC_FLAT_BIGFOOT_H_
#define FLATBUFFERS_GENERATED_ASSETC_FLAT_BIGFOOT_H_
#include "flatbuffers/flatbuffers.h"
// Ensure the included flatbuffers.h is the same version as when this file was
// generated, otherwise it may not be compatible.
static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_MINOR == 12 &&
FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included");
#include "Engine/Asset/Reference.hpp"
#include "System/UUID/UUID.hpp"
#include "Engine/Asset/Reference.hpp"
#include "EngineTests/Asset/AssetA_fwd.hpp"
#include "EngineTests/Asset/AssetB_fwd.hpp"
#include "EngineTests/Asset/AssetC_fwd.hpp"
#include "Engine/Asset/Reference_generated.hpp"
#include "EngineTests/Asset/AssetA_generated.hpp"
#include "EngineTests/Asset/AssetB_generated.hpp"
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
#include "EASTL/vector.h"
namespace Flat {
namespace Bigfoot {
struct InnerTable;
struct InnerTableBuilder;
struct InnerTableT;
struct AssetC;
struct AssetCBuilder;
struct AssetCT;
inline const ::flatbuffers::TypeTable *InnerTableTypeTable();
inline const ::flatbuffers::TypeTable *AssetCTypeTable();
struct InnerTableT : public ::flatbuffers::NativeTable {
typedef InnerTable TableType;
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Flat.Bigfoot.InnerTableT";
}
::Bigfoot::HardRef<::Bigfoot::AssetA> asset_a_ref{};
eastl::vector<::Bigfoot::HardRef<::Bigfoot::AssetA>> asset_a_refs{};
};
struct InnerTable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
typedef InnerTableT NativeTableType;
typedef InnerTableBuilder Builder;
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return InnerTableTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Flat.Bigfoot.InnerTable";
}
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_ASSET_A_REF = 4,
VT_ASSET_A_REFS = 6
};
const Flat::Bigfoot::HardRef *asset_a_ref() const {
return GetStruct<const Flat::Bigfoot::HardRef *>(VT_ASSET_A_REF);
}
const ::flatbuffers::Vector<const Flat::Bigfoot::HardRef *> *asset_a_refs() const {
return GetPointer<const ::flatbuffers::Vector<const Flat::Bigfoot::HardRef *> *>(VT_ASSET_A_REFS);
}
template <bool B = false>
bool Verify(::flatbuffers::VerifierTemplate<B> &verifier) const {
return VerifyTableStart(verifier) &&
VerifyField<Flat::Bigfoot::HardRef>(verifier, VT_ASSET_A_REF, 1) &&
VerifyOffset(verifier, VT_ASSET_A_REFS) &&
verifier.VerifyVector(asset_a_refs()) &&
verifier.EndTable();
}
InnerTableT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
void UnPackTo(InnerTableT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
static ::flatbuffers::Offset<InnerTable> Pack(::flatbuffers::FlatBufferBuilder &_fbb, const InnerTableT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr);
};
struct InnerTableBuilder {
typedef InnerTable Table;
::flatbuffers::FlatBufferBuilder &fbb_;
::flatbuffers::uoffset_t start_;
void add_asset_a_ref(const Flat::Bigfoot::HardRef *asset_a_ref) {
fbb_.AddStruct(InnerTable::VT_ASSET_A_REF, asset_a_ref);
}
void add_asset_a_refs(::flatbuffers::Offset<::flatbuffers::Vector<const Flat::Bigfoot::HardRef *>> asset_a_refs) {
fbb_.AddOffset(InnerTable::VT_ASSET_A_REFS, asset_a_refs);
}
explicit InnerTableBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
::flatbuffers::Offset<InnerTable> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = ::flatbuffers::Offset<InnerTable>(end);
return o;
}
};
inline ::flatbuffers::Offset<InnerTable> CreateInnerTable(
::flatbuffers::FlatBufferBuilder &_fbb,
const Flat::Bigfoot::HardRef *asset_a_ref = nullptr,
::flatbuffers::Offset<::flatbuffers::Vector<const Flat::Bigfoot::HardRef *>> asset_a_refs = 0) {
InnerTableBuilder builder_(_fbb);
builder_.add_asset_a_refs(asset_a_refs);
builder_.add_asset_a_ref(asset_a_ref);
return builder_.Finish();
}
struct InnerTable::Traits {
using type = InnerTable;
static auto constexpr Create = CreateInnerTable;
};
::flatbuffers::Offset<InnerTable> CreateInnerTable(::flatbuffers::FlatBufferBuilder &_fbb, const InnerTableT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr);
struct AssetCT : public ::flatbuffers::NativeTable {
typedef AssetC TableType;
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Flat.Bigfoot.AssetCT";
}
eastl::unique_ptr<Flat::Bigfoot::InnerTableT> inner_table{};
::Bigfoot::HardRef<::Bigfoot::AssetB> asset_b_ref{};
eastl::vector<::Bigfoot::SoftRef<::Bigfoot::AssetB>> asset_b_refs{};
AssetCT() = default;
AssetCT(const AssetCT &o);
AssetCT(AssetCT&&) FLATBUFFERS_NOEXCEPT = default;
AssetCT &operator=(AssetCT o) FLATBUFFERS_NOEXCEPT;
};
struct AssetC FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
typedef AssetCT NativeTableType;
typedef AssetCBuilder Builder;
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return AssetCTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Flat.Bigfoot.AssetC";
}
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_INNER_TABLE = 4,
VT_ASSET_B_REF = 6,
VT_ASSET_B_REFS = 8
};
const Flat::Bigfoot::InnerTable *inner_table() const {
return GetPointer<const Flat::Bigfoot::InnerTable *>(VT_INNER_TABLE);
}
const Flat::Bigfoot::HardRef *asset_b_ref() const {
return GetStruct<const Flat::Bigfoot::HardRef *>(VT_ASSET_B_REF);
}
const ::flatbuffers::Vector<const Flat::Bigfoot::SoftRef *> *asset_b_refs() const {
return GetPointer<const ::flatbuffers::Vector<const Flat::Bigfoot::SoftRef *> *>(VT_ASSET_B_REFS);
}
template <bool B = false>
bool Verify(::flatbuffers::VerifierTemplate<B> &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffsetRequired(verifier, VT_INNER_TABLE) &&
verifier.VerifyTable(inner_table()) &&
VerifyField<Flat::Bigfoot::HardRef>(verifier, VT_ASSET_B_REF, 1) &&
VerifyOffset(verifier, VT_ASSET_B_REFS) &&
verifier.VerifyVector(asset_b_refs()) &&
verifier.EndTable();
}
AssetCT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
void UnPackTo(AssetCT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
static ::flatbuffers::Offset<AssetC> Pack(::flatbuffers::FlatBufferBuilder &_fbb, const AssetCT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr);
};
struct AssetCBuilder {
typedef AssetC Table;
::flatbuffers::FlatBufferBuilder &fbb_;
::flatbuffers::uoffset_t start_;
void add_inner_table(::flatbuffers::Offset<Flat::Bigfoot::InnerTable> inner_table) {
fbb_.AddOffset(AssetC::VT_INNER_TABLE, inner_table);
}
void add_asset_b_ref(const Flat::Bigfoot::HardRef *asset_b_ref) {
fbb_.AddStruct(AssetC::VT_ASSET_B_REF, asset_b_ref);
}
void add_asset_b_refs(::flatbuffers::Offset<::flatbuffers::Vector<const Flat::Bigfoot::SoftRef *>> asset_b_refs) {
fbb_.AddOffset(AssetC::VT_ASSET_B_REFS, asset_b_refs);
}
explicit AssetCBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
::flatbuffers::Offset<AssetC> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = ::flatbuffers::Offset<AssetC>(end);
fbb_.Required(o, AssetC::VT_INNER_TABLE);
return o;
}
};
inline ::flatbuffers::Offset<AssetC> CreateAssetC(
::flatbuffers::FlatBufferBuilder &_fbb,
::flatbuffers::Offset<Flat::Bigfoot::InnerTable> inner_table = 0,
const Flat::Bigfoot::HardRef *asset_b_ref = nullptr,
::flatbuffers::Offset<::flatbuffers::Vector<const Flat::Bigfoot::SoftRef *>> asset_b_refs = 0) {
AssetCBuilder builder_(_fbb);
builder_.add_asset_b_refs(asset_b_refs);
builder_.add_asset_b_ref(asset_b_ref);
builder_.add_inner_table(inner_table);
return builder_.Finish();
}
struct AssetC::Traits {
using type = AssetC;
static auto constexpr Create = CreateAssetC;
};
::flatbuffers::Offset<AssetC> CreateAssetC(::flatbuffers::FlatBufferBuilder &_fbb, const AssetCT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr);
inline InnerTableT *InnerTable::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const {
auto _o = std::make_unique<InnerTableT>();
UnPackTo(_o.get(), _resolver);
return _o.release();
}
inline void InnerTable::UnPackTo(InnerTableT *_o, const ::flatbuffers::resolver_function_t *_resolver) const {
(void)_o;
(void)_resolver;
{ auto _e = asset_a_ref(); if (_e) _o->asset_a_ref = ::flatbuffers::UnPackHardRefAssetA(*_e); }
{ auto _e = asset_a_refs(); if (_e) { _o->asset_a_refs.resize(_e->size()); for (::flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->asset_a_refs[_i] = ::flatbuffers::UnPackHardRefAssetA(*_e->Get(_i)); } } else { _o->asset_a_refs.resize(0); } }
}
inline ::flatbuffers::Offset<InnerTable> CreateInnerTable(::flatbuffers::FlatBufferBuilder &_fbb, const InnerTableT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) {
return InnerTable::Pack(_fbb, _o, _rehasher);
}
inline ::flatbuffers::Offset<InnerTable> InnerTable::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const InnerTableT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) {
(void)_rehasher;
(void)_o;
struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const InnerTableT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
auto _asset_a_ref = ::flatbuffers::PackHardRefAssetA(_o->asset_a_ref);
auto _asset_a_refs = _fbb.CreateVectorOfNativeStructs<Flat::Bigfoot::HardRef, ::Bigfoot::HardRef<::Bigfoot::AssetA>>(_o->asset_a_refs.data(), _o->asset_a_refs.size(), ::flatbuffers::PackHardRefAssetA);
return Flat::Bigfoot::CreateInnerTable(
_fbb,
&_asset_a_ref,
_asset_a_refs);
}
inline AssetCT::AssetCT(const AssetCT &o)
: inner_table((o.inner_table) ? new Flat::Bigfoot::InnerTableT(*o.inner_table) : nullptr),
asset_b_ref(o.asset_b_ref),
asset_b_refs(o.asset_b_refs) {
}
inline AssetCT &AssetCT::operator=(AssetCT o) FLATBUFFERS_NOEXCEPT {
std::swap(inner_table, o.inner_table);
std::swap(asset_b_ref, o.asset_b_ref);
std::swap(asset_b_refs, o.asset_b_refs);
return *this;
}
inline AssetCT *AssetC::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const {
auto _o = std::make_unique<AssetCT>();
UnPackTo(_o.get(), _resolver);
return _o.release();
}
inline void AssetC::UnPackTo(AssetCT *_o, const ::flatbuffers::resolver_function_t *_resolver) const {
(void)_o;
(void)_resolver;
{ auto _e = inner_table(); if (_e) { if(_o->inner_table) { _e->UnPackTo(_o->inner_table.get(), _resolver); } else { _o->inner_table = eastl::unique_ptr<Flat::Bigfoot::InnerTableT>(_e->UnPack(_resolver)); } } else if (_o->inner_table) { _o->inner_table.reset(); } }
{ auto _e = asset_b_ref(); if (_e) _o->asset_b_ref = ::flatbuffers::UnPackHardRefAssetB(*_e); }
{ auto _e = asset_b_refs(); if (_e) { _o->asset_b_refs.resize(_e->size()); for (::flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->asset_b_refs[_i] = ::flatbuffers::UnPackSoftRefAssetB(*_e->Get(_i)); } } else { _o->asset_b_refs.resize(0); } }
}
inline ::flatbuffers::Offset<AssetC> CreateAssetC(::flatbuffers::FlatBufferBuilder &_fbb, const AssetCT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) {
return AssetC::Pack(_fbb, _o, _rehasher);
}
inline ::flatbuffers::Offset<AssetC> AssetC::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const AssetCT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) {
(void)_rehasher;
(void)_o;
struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AssetCT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
auto _inner_table = _o->inner_table ? CreateInnerTable(_fbb, _o->inner_table.get(), _rehasher) : 0;
auto _asset_b_ref = ::flatbuffers::PackHardRefAssetB(_o->asset_b_ref);
auto _asset_b_refs = _fbb.CreateVectorOfNativeStructs<Flat::Bigfoot::SoftRef, ::Bigfoot::SoftRef<::Bigfoot::AssetB>>(_o->asset_b_refs.data(), _o->asset_b_refs.size(), ::flatbuffers::PackSoftRefAssetB);
return Flat::Bigfoot::CreateAssetC(
_fbb,
_inner_table,
&_asset_b_ref,
_asset_b_refs);
}
inline const ::flatbuffers::TypeTable *InnerTableTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_SEQUENCE, 0, 0 },
{ ::flatbuffers::ET_SEQUENCE, 1, 0 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Flat::Bigfoot::HardRefTypeTable
};
static const char * const names[] = {
"asset_a_ref",
"asset_a_refs"
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_TABLE, 2, type_codes, type_refs, nullptr, nullptr, names
};
return &tt;
}
inline const ::flatbuffers::TypeTable *AssetCTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_SEQUENCE, 0, 0 },
{ ::flatbuffers::ET_SEQUENCE, 0, 1 },
{ ::flatbuffers::ET_SEQUENCE, 1, 2 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Flat::Bigfoot::InnerTableTypeTable,
Flat::Bigfoot::HardRefTypeTable,
Flat::Bigfoot::SoftRefTypeTable
};
static const char * const names[] = {
"inner_table",
"asset_b_ref",
"asset_b_refs"
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_TABLE, 3, type_codes, type_refs, nullptr, nullptr, names
};
return &tt;
}
inline const Flat::Bigfoot::AssetC *GetAssetC(const void *buf) {
return ::flatbuffers::GetRoot<Flat::Bigfoot::AssetC>(buf);
}
inline const Flat::Bigfoot::AssetC *GetSizePrefixedAssetC(const void *buf) {
return ::flatbuffers::GetSizePrefixedRoot<Flat::Bigfoot::AssetC>(buf);
}
template <bool B = false>
inline bool VerifyAssetCBuffer(
::flatbuffers::VerifierTemplate<B> &verifier) {
return verifier.template VerifyBuffer<Flat::Bigfoot::AssetC>(nullptr);
}
template <bool B = false>
inline bool VerifySizePrefixedAssetCBuffer(
::flatbuffers::VerifierTemplate<B> &verifier) {
return verifier.template VerifySizePrefixedBuffer<Flat::Bigfoot::AssetC>(nullptr);
}
inline const char *AssetCExtension() {
return "bfbs";
}
inline void FinishAssetCBuffer(
::flatbuffers::FlatBufferBuilder &fbb,
::flatbuffers::Offset<Flat::Bigfoot::AssetC> root) {
fbb.Finish(root);
}
inline void FinishSizePrefixedAssetCBuffer(
::flatbuffers::FlatBufferBuilder &fbb,
::flatbuffers::Offset<Flat::Bigfoot::AssetC> root) {
fbb.FinishSizePrefixed(root);
}
inline eastl::unique_ptr<Flat::Bigfoot::AssetCT> UnPackAssetC(
const void *buf,
const ::flatbuffers::resolver_function_t *res = nullptr) {
return eastl::unique_ptr<Flat::Bigfoot::AssetCT>(GetAssetC(buf)->UnPack(res));
}
inline eastl::unique_ptr<Flat::Bigfoot::AssetCT> UnPackSizePrefixedAssetC(
const void *buf,
const ::flatbuffers::resolver_function_t *res = nullptr) {
return eastl::unique_ptr<Flat::Bigfoot::AssetCT>(GetSizePrefixedAssetC(buf)->UnPack(res));
}
} // namespace Bigfoot
} // namespace Flat
#endif // FLATBUFFERS_GENERATED_ASSETC_FLAT_BIGFOOT_H_

View File

@@ -88,8 +88,10 @@ function(bigfoot_compile_flatbuffers BigfootDependencies)
--force-empty
--cpp-ptr-type "eastl::unique_ptr"
--cpp-str-type "eastl::string"
--cpp-vec-type "eastl::vector"
--cpp-include "EASTL/unique_ptr.h"
--cpp-include "EASTL/string.h"
--cpp-include "EASTL/vector.h"
-o "${SOURCE_DIRECTORY}"
--schema "${SOURCE_FILE}"
)

View File

@@ -66,7 +66,7 @@ class Bigfoot(ConanFile):
self.requires("sqlite3/3.51.2@bigfootdev/main", transitive_headers=True)
self.requires("rapidhash/3.0@bigfootdev/main", transitive_headers=True)
self.requires("effolkronium-random/1.5.0", transitive_headers=True)
self.requires("flatbuffers/25.12.19@bigfootdev/main", transitive_headers=True)
self.requires("flatbuffers/25.12.19-2026-02-06-03fffb2-bigfoot@bigfootdev/main", transitive_headers=True)
if(self.settings.build_type == "RelWithDebInfo" or self.settings.build_type == "Debug"):
self.requires("quill/11.0.2", transitive_headers=True)