12 Commits

Author SHA1 Message Date
5397d358f6 Updated Bin2CPP
Some checks failed
Bigfoot / Build & Test RelWithDebInfo (Unity Build: OFF) (push) Failing after 16m44s
Bigfoot / Build & Test Debug (Unity Build: ON) (push) Failing after 3h0m2s
Bigfoot / Build & Test Debug (Unity Build: OFF) (push) Failing after 3h0m3s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: ON) (push) Failing after 15m9s
Bigfoot / Build & Test Release (Unity Build: OFF) (push) Failing after 8m51s
Bigfoot / Build & Test Release (Unity Build: ON) (push) Failing after 7m37s
Bigfoot / Clang Format Checks (push) Failing after 11s
2026-03-29 13:28:29 +02:00
9c59bd6ab8 Bin2CPP
Some checks failed
Bigfoot / Clang Format Checks (push) Failing after 9s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: OFF) (push) Failing after 16m30s
Bigfoot / Build & Test Debug (Unity Build: ON) (push) Failing after 3h0m50s
Bigfoot / Build & Test Debug (Unity Build: OFF) (push) Failing after 3h1m54s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: ON) (push) Failing after 14m59s
Bigfoot / Build & Test Release (Unity Build: OFF) (push) Failing after 8m41s
Bigfoot / Build & Test Release (Unity Build: ON) (push) Failing after 7m26s
2026-03-29 03:03:13 +02:00
ab96945192 Use profiles from repo instead
Some checks failed
Bigfoot / Build & Test Debug (Unity Build: ON) (push) Failing after 3m50s
Bigfoot / Build & Test Debug (Unity Build: OFF) (push) Failing after 3m53s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: ON) (push) Failing after 2m31s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: OFF) (push) Failing after 2m34s
Bigfoot / Build & Test Release (Unity Build: OFF) (push) Failing after 2m12s
Bigfoot / Build & Test Release (Unity Build: ON) (push) Failing after 2m13s
Bigfoot / Clang Format Checks (push) Successful in 29s
2026-02-20 16:54:11 +01:00
45342a3555 Rework AssetContainer; adding references 2026-02-14 12:26:26 +01:00
a21354b4b4 AssetContainer semantic
Some checks failed
Bigfoot / Build & Test Debug (Unity Build: OFF) (push) Failing after 2m58s
Bigfoot / Build & Test Debug (Unity Build: ON) (push) Failing after 1m10s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: OFF) (push) Failing after 1m47s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: ON) (push) Failing after 1m38s
Bigfoot / Build & Test Release (Unity Build: OFF) (push) Failing after 1m36s
Bigfoot / Build & Test Release (Unity Build: ON) (push) Failing after 1m23s
Bigfoot / Clang Format Checks (push) Successful in 11s
2026-02-13 18:43:21 +01:00
d6df6d8a71 unordered_dense link 2026-02-13 18:40:39 +01:00
bbc8aa3e80 update dependencies 2026-02-13 18:40:30 +01:00
75bd0bf441 AssetContainer concept
Some checks failed
Bigfoot / Build & Test Debug (Unity Build: OFF) (push) Successful in 43s
Bigfoot / Build & Test Debug (Unity Build: ON) (push) Successful in 36s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: ON) (push) Failing after 10s
Bigfoot / Build & Test Release (Unity Build: OFF) (push) Failing after 9s
Bigfoot / Build & Test Release (Unity Build: ON) (push) Failing after 19s
Bigfoot / Clang Format Checks (push) Successful in 10s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: OFF) (push) Failing after 11m40s
2026-02-11 12:03:15 +01:00
e4bcf5563c Correct TypeID and TypeName
All checks were successful
Bigfoot / Build & Test Debug (Unity Build: OFF) (push) Successful in 2m31s
Bigfoot / Build & Test Debug (Unity Build: ON) (push) Successful in 36s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: OFF) (push) Successful in 1m8s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: ON) (push) Successful in 1m4s
Bigfoot / Build & Test Release (Unity Build: OFF) (push) Successful in 59s
Bigfoot / Build & Test Release (Unity Build: ON) (push) Successful in 54s
Bigfoot / Clang Format Checks (push) Successful in 10s
2026-02-11 01:10:45 +01:00
46c3034ea6 FlatAssetWrapper
All checks were successful
Bigfoot / Build & Test Debug (Unity Build: OFF) (push) Successful in 2m25s
Bigfoot / Build & Test Debug (Unity Build: ON) (push) Successful in 35s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: OFF) (push) Successful in 1m9s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: ON) (push) Successful in 1m3s
Bigfoot / Build & Test Release (Unity Build: OFF) (push) Successful in 1m3s
Bigfoot / Build & Test Release (Unity Build: ON) (push) Successful in 59s
Bigfoot / Clang Format Checks (push) Successful in 11s
2026-02-10 17:52:07 +01:00
f5ad5adff6 Fix clang-format
All checks were successful
Bigfoot / Build & Test Debug (Unity Build: OFF) (push) Successful in 28s
Bigfoot / Build & Test Debug (Unity Build: ON) (push) Successful in 24s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: OFF) (push) Successful in 26s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: ON) (push) Successful in 25s
Bigfoot / Build & Test Release (Unity Build: OFF) (push) Successful in 29s
Bigfoot / Build & Test Release (Unity Build: ON) (push) Successful in 26s
Bigfoot / Clang Format Checks (push) Successful in 9s
2026-02-10 00:43:44 +01:00
0ef2f842cb AssetTypeID;No circular Dependency;AssetHeader
Some checks failed
Bigfoot / Build & Test Debug (Unity Build: OFF) (push) Successful in 2m17s
Bigfoot / Build & Test Debug (Unity Build: ON) (push) Successful in 26s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: OFF) (push) Successful in 25s
Bigfoot / Build & Test RelWithDebInfo (Unity Build: ON) (push) Successful in 26s
Bigfoot / Build & Test Release (Unity Build: OFF) (push) Successful in 27s
Bigfoot / Build & Test Release (Unity Build: ON) (push) Successful in 26s
Bigfoot / Clang Format Checks (push) Failing after 11s
2026-02-10 00:37:55 +01:00
58 changed files with 1772 additions and 328 deletions

View File

@@ -34,7 +34,7 @@ jobs:
- name: Build - name: Build
run: | run: |
conan install . --deployer=full_deploy --deployer-folder=build --remote=bigfootpackages -pr:h=clang -pr:b=clang --build=missing -s build_type=${{ matrix.build_type }} -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=False -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build=missing -s build_type=${{ matrix.build_type }} -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=False -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True
cmake -S . -B ./build/${{ matrix.build_type }} --toolchain ./build/${{ matrix.build_type }}/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_UNITY_BUILD=${{ matrix.unity_build }} -G "Ninja" cmake -S . -B ./build/${{ matrix.build_type }} --toolchain ./build/${{ matrix.build_type }}/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_UNITY_BUILD=${{ matrix.unity_build }} -G "Ninja"
cmake --build build/${{ matrix.build_type }} --parallel $(nproc) cmake --build build/${{ matrix.build_type }} --parallel $(nproc)

View File

@@ -25,7 +25,7 @@ jobs:
- name: Generate - name: Generate
run: | run: |
conan install . --deployer=full_deploy --deployer-folder=build --remote=bigfootpackages -pr:h=clang_coverage -pr:b=clang_coverage --build=missing -s build_type=Debug -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=False -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang_coverage -pr:b=./ConanProfiles/clang_coverage --build=missing -s build_type=Debug -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=False -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True
cmake -S . -B ./build/Debug --toolchain ./build/Debug/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Debug -G "Ninja" cmake -S . -B ./build/Debug --toolchain ./build/Debug/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Debug -G "Ninja"
cmake --build build/Debug --parallel $(nproc) cmake --build build/Debug --parallel $(nproc)

View File

@@ -1,22 +1,22 @@
/********************************************************************* /*********************************************************************
* \file FlatTime.cpp * \file AssetTypeID.cpp
* *
* \author Romain BOULLARD * \author Romain BOULLARD
* \date February 2026 * \date February 2026
*********************************************************************/ *********************************************************************/
#include <System/Time/FlatTime.hpp> #include <Engine/BigFile/Asset/AssetTypeID.hpp>
namespace flatbuffers namespace flatbuffers
{ {
Bigfoot::Flat::Time Pack(const Bigfoot::Time& p_time) Bigfoot::Flat::AssetTypeID Pack(const Bigfoot::AssetTypeID& p_assetTypeID)
{ {
return Bigfoot::Flat::Time {p_time.Epoch()}; return Bigfoot::Flat::AssetTypeID {p_assetTypeID};
} }
/****************************************************************************************/ /****************************************************************************************/
Bigfoot::Time UnPack(const Bigfoot::Flat::Time& p_flatTime) Bigfoot::AssetTypeID UnPack(const Bigfoot::Flat::AssetTypeID& p_flatAssetTypeID)
{ {
return Bigfoot::Time {p_flatTime.epoch()}; return Bigfoot::AssetTypeID {p_flatAssetTypeID.value()};
} }
} // namespace flatbuffers } // namespace flatbuffers

View File

@@ -7,7 +7,6 @@ CREATE TABLE IF NOT EXISTS AssetHeader (
Name TEXT NOT NULL UNIQUE, Name TEXT NOT NULL UNIQUE,
TypeID INTEGER NOT NULL, TypeID INTEGER NOT NULL,
TypeName TEXT NOT NULL, TypeName TEXT NOT NULL,
Version INTEGER NOT NULL,
CreateTime INTEGER NOT NULL DEFAULT(CAST(unixepoch('subsec') AS INTEGER) * 1000000), CreateTime INTEGER NOT NULL DEFAULT(CAST(unixepoch('subsec') AS INTEGER) * 1000000),
ModificationTime INTEGER NOT NULL DEFAULT(CAST(unixepoch('subsec') AS INTEGER) * 1000000), ModificationTime INTEGER NOT NULL DEFAULT(CAST(unixepoch('subsec') AS INTEGER) * 1000000),

View File

@@ -0,0 +1,122 @@
/*********************************************************************
* \file Asset.hpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#ifndef BIGFOOT_ENGINE_ASSET_HPP
#define BIGFOOT_ENGINE_ASSET_HPP
#include <Engine/BigFile/Asset/AssetHeader_generated.hpp>
#include <Engine/EngineAssertHandler.hpp>
#include <EASTL/vector.h>
#include <rapidhash.h>
namespace Bigfoot
{
template<typename FLAT_ASSET>
concept FlatAssetConcept = requires(FLAT_ASSET p_flatAsset) {
requires std::is_base_of_v<::flatbuffers::Table, FLAT_ASSET> &&
std::derived_from<typename FLAT_ASSET::NativeTableType, ::flatbuffers::NativeTable>;
{ FLAT_ASSET::GetFullyQualifiedName() } -> std::convertible_to<const char*>;
{ p_flatAsset.asset_header() } -> std::same_as<const Bigfoot::Flat::AssetHeader*>;
};
template<FlatAssetConcept FLAT_ASSET>
class FlatAssetWrapper
{
private:
using FLAT_ASSET_NATIVE = FLAT_ASSET::NativeTableType;
using FLAT_ASSET_BUILDER = FLAT_ASSET::Builder;
public:
FlatAssetWrapper()
{
m_asset.asset_header = eastl::make_unique<Flat::AssetHeaderT>();
m_asset.asset_header->type_id = TypeID();
m_asset.asset_header->type_name = TypeName();
}
FlatAssetWrapper(const eastl::span<const std::byte> p_flatBuffer)
{
flatbuffers::Verifier::Options verifierOptions;
flatbuffers::Verifier verifier {std::bit_cast<const std::uint8_t*>(p_flatBuffer.data()),
p_flatBuffer.size(),
verifierOptions};
CRITICAL_ASSERT(EngineAssertHandler,
verifier.VerifyBuffer<FLAT_ASSET>(),
"Flatbuffer verifier failed for FLAT_ASSET!");
const FLAT_ASSET* flatAsset = flatbuffers::GetRoot<FLAT_ASSET>(p_flatBuffer.data());
CRITICAL_ASSERT(EngineAssertHandler,
flatAsset->asset_header()->type_id()->value() == TypeID() &&
(std::strcmp(flatAsset->asset_header()->type_name()->c_str(), TypeName().data()) == 0),
"Mismatch between flatbufer type and actual type! flatbuffer = {}/{}; expected = {}/{}",
flatAsset->asset_header()->type_name()->c_str(),
flatAsset->asset_header()->type_id()->value(),
TypeName(),
TypeID());
flatAsset->UnPackTo(&m_asset);
}
FlatAssetWrapper(const FlatAssetWrapper& p_assetWrapper) = delete;
FlatAssetWrapper(FlatAssetWrapper&& p_assetWrapper) = delete;
~FlatAssetWrapper() = default;
eastl::vector<std::byte> Pack() const
{
flatbuffers::FlatBufferBuilder builder;
builder.Finish(FLAT_ASSET::Pack(builder, &m_asset));
eastl::vector<std::byte> result {builder.GetSize()};
eastl::transform(builder.GetBufferSpan().begin(),
builder.GetBufferSpan().end(),
result.begin(),
[](const std::uint8_t p_value)
{
return static_cast<std::byte>(p_value);
});
return result;
}
[[nodiscard]]
FLAT_ASSET_NATIVE& Asset()
{
return m_asset;
}
[[nodiscard]]
const FLAT_ASSET_NATIVE& Asset() const
{
return m_asset;
}
static AssetTypeID TypeID()
{
static eastl::string_view typeName = TypeName();
static AssetTypeID typeID = rapidhash(typeName.data(), typeName.size());
return typeID;
}
static eastl::string_view TypeName()
{
static eastl::string_view typeName {FLAT_ASSET::GetFullyQualifiedName()};
return typeName;
}
FlatAssetWrapper& operator=(const FlatAssetWrapper p_assetWrapper) = delete;
FlatAssetWrapper& operator=(FlatAssetWrapper&& p_assetWrapper) = delete;
private:
FLAT_ASSET_NATIVE m_asset;
};
} // namespace Bigfoot
#endif

View File

@@ -0,0 +1,115 @@
/*********************************************************************
* \file AssetContainer.hpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#ifndef BIGFOOT_ENGINE_ASSETCONTAINER_HPP
#define BIGFOOT_ENGINE_ASSETCONTAINER_HPP
#include <Engine/BigFile/Asset/Asset.hpp>
#include <Engine/EngineAssertHandler.hpp>
#include <ankerl/unordered_dense.h>
namespace Bigfoot
{
template<typename ASSET>
concept BigfootAssetConcept = requires(ASSET p_asset, const ASSET p_constAsset) {
requires FlatAssetConcept<typename ASSET::FLAT_ASSET> &&
std::constructible_from<ASSET, FlatAssetWrapper<typename ASSET::FLAT_ASSET>*>;
};
template<BigfootAssetConcept ASSET>
class AssetContainer
{
public:
AssetContainer() = default;
AssetContainer(const AssetContainer& p_container) = delete;
AssetContainer(AssetContainer&& p_container) = delete;
[[nodiscard]]
bool Add(const UUID& p_uuid)
{
return m_assets.emplace(p_uuid, AssetHandle {}).second;
}
[[nodiscard]]
bool Load(const UUID& p_uuid, const eastl::span<const std::byte> p_flatBuffer)
{
if (!m_assets.contains(p_uuid))
{
const bool added = Add(p_uuid);
ASSERT(EngineAssertHandler, added, "{} not added to AssetContainer! Already in container ?", p_uuid);
}
AssetHandle& assetHandle = m_assets.at(p_uuid);
if (assetHandle.m_assetPair)
{
SOFT_ASSERT(EngineAssertHandler, false, "{} already loaded!", p_uuid);
return true;
}
assetHandle.m_assetPair = eastl::make_unique<AssetHandle::Data>(p_flatBuffer);
CRITICAL_ASSERT(EngineAssertHandler,
assetHandle.m_assetPair->m_flatAsset.Asset().asset_header->uuid == p_uuid,
"Mismatch between expected UUID and deserialized UUID ! Got {}; Expected {}",
assetHandle.m_assetPair->m_flatAsset.Asset().asset_header->uuid,
p_uuid);
return true;
}
void UnloadUnreferenced()
{
for (auto& keyValue: m_assets)
{
if (keyValue.second.m_hardRefCount == 0 && keyValue.second.m_assetPair)
{
keyValue.second.m_assetPair.reset();
}
}
}
~AssetContainer() = default;
AssetContainer& operator=(const AssetContainer& p_container) = delete;
AssetContainer& operator=(AssetContainer&& p_container) = delete;
private:
struct AssetHandle
{
struct Data
{
Data(const eastl::span<const std::byte> p_flatBuffer):
m_flatAsset(p_flatBuffer),
m_asset(&m_flatAsset)
{
}
FlatAssetWrapper<typename ASSET::FLAT_ASSET> m_flatAsset;
ASSET m_asset;
};
eastl::unique_ptr<Data> m_assetPair = nullptr;
std::uint32_t m_hardRefCount = 0;
std::uint32_t m_softRefCount = 0;
};
// We use a segmented_map here to keep stable references
ankerl::unordered_dense::segmented_map<UUID, AssetHandle> m_assets;
};
template<BigfootAssetConcept ASSET>
class HardRef
{
};
template<BigfootAssetConcept ASSET>
class SoftRef
{
};
} // namespace Bigfoot
#endif

View File

@@ -1,18 +1,18 @@
include "Engine/BigFile/Asset/AssetTypeID.fbs";
native_include "Engine/BigFile/Asset/AssetTypeID.hpp";
include "System/UUID/UUID.fbs"; include "System/UUID/UUID.fbs";
include "System/Time/Time.fbs"; native_include "System/UUID/UUID.hpp";
namespace Bigfoot.Flat; namespace Bigfoot.Flat;
table AssetHeader table AssetHeader
{ {
uuid: UUID (native_inline); uuid: UUID (required, native_inline);
name: string; name: string (required);
type_id: ulong; type_id: AssetTypeID (required, native_inline);
type_name: string; type_name: string (required);
version: uint; version: uint;
create_time: Time (native_inline);
modification_time: Time (native_inline);
} }
root_type AssetHeader; root_type AssetHeader;

View File

@@ -0,0 +1,45 @@
/**
* Auto-generated header from: AssetHeader.fbs
* Generated by Bin2CPP
*
* DO NOT TOUCH
*/
#ifndef ASSETHEADER_FBS_HPP
#define ASSETHEADER_FBS_HPP
#include <EASTL/array.h>
#include <cstddef>
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 407> g_AssetHeader_fbs = {
std::byte{0x69}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x20}, std::byte{0x22}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F},
std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x46}, std::byte{0x69}, std::byte{0x6C}, 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{0x41}, std::byte{0x73},
std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x54}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x49}, std::byte{0x44}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x22}, std::byte{0x3B}, std::byte{0x0A},
std::byte{0x6E}, std::byte{0x61}, std::byte{0x74}, std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x20}, std::byte{0x22},
std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x46}, std::byte{0x69}, std::byte{0x6C}, 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{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x54}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x49}, std::byte{0x44},
std::byte{0x2E}, std::byte{0x68}, std::byte{0x70}, std::byte{0x70}, std::byte{0x22}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x20},
std::byte{0x22}, 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{0x22}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x74}, std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x69},
std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x20}, std::byte{0x22}, 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{0x68}, std::byte{0x70}, std::byte{0x70}, std::byte{0x22}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x0A},
std::byte{0x6E}, std::byte{0x61}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x73}, std::byte{0x70}, std::byte{0x61}, std::byte{0x63}, std::byte{0x65}, std::byte{0x20}, 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{0x3B}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x74}, std::byte{0x61}, std::byte{0x62}, std::byte{0x6C}, std::byte{0x65}, std::byte{0x20}, std::byte{0x41},
std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x48}, std::byte{0x65}, std::byte{0x61}, std::byte{0x64}, std::byte{0x65}, std::byte{0x72}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A}, std::byte{0x09}, std::byte{0x75}, std::byte{0x75},
std::byte{0x69}, std::byte{0x64}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x20}, std::byte{0x28}, std::byte{0x72}, std::byte{0x65}, std::byte{0x71}, std::byte{0x75}, std::byte{0x69}, std::byte{0x72},
std::byte{0x65}, std::byte{0x64}, std::byte{0x2C}, std::byte{0x20}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x74}, std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x6C}, std::byte{0x69}, std::byte{0x6E},
std::byte{0x65}, std::byte{0x29}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x09}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x73}, std::byte{0x74}, std::byte{0x72}, std::byte{0x69}, std::byte{0x6E},
std::byte{0x67}, std::byte{0x20}, std::byte{0x28}, std::byte{0x72}, std::byte{0x65}, std::byte{0x71}, std::byte{0x75}, std::byte{0x69}, std::byte{0x72}, std::byte{0x65}, std::byte{0x64}, std::byte{0x29}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x09}, std::byte{0x74},
std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x69}, std::byte{0x64}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x54}, std::byte{0x79}, std::byte{0x70},
std::byte{0x65}, std::byte{0x49}, std::byte{0x44}, std::byte{0x20}, std::byte{0x28}, std::byte{0x72}, std::byte{0x65}, std::byte{0x71}, std::byte{0x75}, std::byte{0x69}, std::byte{0x72}, std::byte{0x65}, std::byte{0x64}, std::byte{0x2C}, std::byte{0x20}, std::byte{0x6E},
std::byte{0x61}, std::byte{0x74}, std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x6C}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x29}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x09},
std::byte{0x74}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x73}, std::byte{0x74}, std::byte{0x72}, std::byte{0x69}, std::byte{0x6E},
std::byte{0x67}, std::byte{0x20}, std::byte{0x28}, std::byte{0x72}, std::byte{0x65}, std::byte{0x71}, std::byte{0x75}, std::byte{0x69}, std::byte{0x72}, std::byte{0x65}, std::byte{0x64}, std::byte{0x29}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x09}, std::byte{0x76},
std::byte{0x65}, std::byte{0x72}, std::byte{0x73}, std::byte{0x69}, std::byte{0x6F}, std::byte{0x6E}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x75}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x74}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x7D}, std::byte{0x0A},
std::byte{0x0A}, std::byte{0x72}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x20}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74},
std::byte{0x48}, std::byte{0x65}, std::byte{0x61}, std::byte{0x64}, std::byte{0x65}, std::byte{0x72}, std::byte{0x3B}
};
} // namespace Bigfoot
#endif // ASSETHEADER_FBS_HPP

View File

@@ -13,9 +13,10 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_REVISION == 19, FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included"); "Non-compatible flatbuffers version included");
#include "System/UUID/FlatUUID.hpp" #include "Engine/BigFile/Asset/AssetTypeID.hpp"
#include "System/Time/FlatTime.hpp" #include "Engine/BigFile/Asset/AssetTypeID.hpp"
#include "System/Time/Time_generated.hpp" #include "System/UUID/UUID.hpp"
#include "Engine/BigFile/Asset/AssetTypeID_generated.hpp"
#include "System/UUID/UUID_generated.hpp" #include "System/UUID/UUID_generated.hpp"
#include "EASTL/unique_ptr.h" #include "EASTL/unique_ptr.h"
@@ -37,11 +38,9 @@ struct AssetHeaderT : public ::flatbuffers::NativeTable {
} }
::Bigfoot::UUID uuid{}; ::Bigfoot::UUID uuid{};
eastl::string name{}; eastl::string name{};
uint64_t type_id = 0; ::Bigfoot::AssetTypeID type_id{};
eastl::string type_name{}; eastl::string type_name{};
uint32_t version = 0; uint32_t version = 0;
::Bigfoot::Time create_time{};
::Bigfoot::Time modification_time{};
}; };
struct AssetHeader FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { struct AssetHeader FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
@@ -59,9 +58,7 @@ struct AssetHeader FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
VT_NAME = 6, VT_NAME = 6,
VT_TYPE_ID = 8, VT_TYPE_ID = 8,
VT_TYPE_NAME = 10, VT_TYPE_NAME = 10,
VT_VERSION = 12, VT_VERSION = 12
VT_CREATE_TIME = 14,
VT_MODIFICATION_TIME = 16
}; };
const Bigfoot::Flat::UUID *uuid() const { const Bigfoot::Flat::UUID *uuid() const {
return GetStruct<const Bigfoot::Flat::UUID *>(VT_UUID); return GetStruct<const Bigfoot::Flat::UUID *>(VT_UUID);
@@ -69,8 +66,8 @@ struct AssetHeader FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
const ::flatbuffers::String *name() const { const ::flatbuffers::String *name() const {
return GetPointer<const ::flatbuffers::String *>(VT_NAME); return GetPointer<const ::flatbuffers::String *>(VT_NAME);
} }
uint64_t type_id() const { const Bigfoot::Flat::AssetTypeID *type_id() const {
return GetField<uint64_t>(VT_TYPE_ID, 0); return GetStruct<const Bigfoot::Flat::AssetTypeID *>(VT_TYPE_ID);
} }
const ::flatbuffers::String *type_name() const { const ::flatbuffers::String *type_name() const {
return GetPointer<const ::flatbuffers::String *>(VT_TYPE_NAME); return GetPointer<const ::flatbuffers::String *>(VT_TYPE_NAME);
@@ -78,24 +75,16 @@ struct AssetHeader FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
uint32_t version() const { uint32_t version() const {
return GetField<uint32_t>(VT_VERSION, 0); return GetField<uint32_t>(VT_VERSION, 0);
} }
const Bigfoot::Flat::Time *create_time() const {
return GetStruct<const Bigfoot::Flat::Time *>(VT_CREATE_TIME);
}
const Bigfoot::Flat::Time *modification_time() const {
return GetStruct<const Bigfoot::Flat::Time *>(VT_MODIFICATION_TIME);
}
template <bool B = false> template <bool B = false>
bool Verify(::flatbuffers::VerifierTemplate<B> &verifier) const { bool Verify(::flatbuffers::VerifierTemplate<B> &verifier) const {
return VerifyTableStart(verifier) && return VerifyTableStart(verifier) &&
VerifyField<Bigfoot::Flat::UUID>(verifier, VT_UUID, 1) && VerifyFieldRequired<Bigfoot::Flat::UUID>(verifier, VT_UUID, 1) &&
VerifyOffset(verifier, VT_NAME) && VerifyOffsetRequired(verifier, VT_NAME) &&
verifier.VerifyString(name()) && verifier.VerifyString(name()) &&
VerifyField<uint64_t>(verifier, VT_TYPE_ID, 8) && VerifyFieldRequired<Bigfoot::Flat::AssetTypeID>(verifier, VT_TYPE_ID, 8) &&
VerifyOffset(verifier, VT_TYPE_NAME) && VerifyOffsetRequired(verifier, VT_TYPE_NAME) &&
verifier.VerifyString(type_name()) && verifier.VerifyString(type_name()) &&
VerifyField<uint32_t>(verifier, VT_VERSION, 4) && VerifyField<uint32_t>(verifier, VT_VERSION, 4) &&
VerifyField<Bigfoot::Flat::Time>(verifier, VT_CREATE_TIME, 8) &&
VerifyField<Bigfoot::Flat::Time>(verifier, VT_MODIFICATION_TIME, 8) &&
verifier.EndTable(); verifier.EndTable();
} }
AssetHeaderT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; AssetHeaderT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
@@ -113,8 +102,8 @@ struct AssetHeaderBuilder {
void add_name(::flatbuffers::Offset<::flatbuffers::String> name) { void add_name(::flatbuffers::Offset<::flatbuffers::String> name) {
fbb_.AddOffset(AssetHeader::VT_NAME, name); fbb_.AddOffset(AssetHeader::VT_NAME, name);
} }
void add_type_id(uint64_t type_id) { void add_type_id(const Bigfoot::Flat::AssetTypeID *type_id) {
fbb_.AddElement<uint64_t>(AssetHeader::VT_TYPE_ID, type_id, 0); fbb_.AddStruct(AssetHeader::VT_TYPE_ID, type_id);
} }
void add_type_name(::flatbuffers::Offset<::flatbuffers::String> type_name) { void add_type_name(::flatbuffers::Offset<::flatbuffers::String> type_name) {
fbb_.AddOffset(AssetHeader::VT_TYPE_NAME, type_name); fbb_.AddOffset(AssetHeader::VT_TYPE_NAME, type_name);
@@ -122,12 +111,6 @@ struct AssetHeaderBuilder {
void add_version(uint32_t version) { void add_version(uint32_t version) {
fbb_.AddElement<uint32_t>(AssetHeader::VT_VERSION, version, 0); fbb_.AddElement<uint32_t>(AssetHeader::VT_VERSION, version, 0);
} }
void add_create_time(const Bigfoot::Flat::Time *create_time) {
fbb_.AddStruct(AssetHeader::VT_CREATE_TIME, create_time);
}
void add_modification_time(const Bigfoot::Flat::Time *modification_time) {
fbb_.AddStruct(AssetHeader::VT_MODIFICATION_TIME, modification_time);
}
explicit AssetHeaderBuilder(::flatbuffers::FlatBufferBuilder &_fbb) explicit AssetHeaderBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) { : fbb_(_fbb) {
start_ = fbb_.StartTable(); start_ = fbb_.StartTable();
@@ -135,6 +118,10 @@ struct AssetHeaderBuilder {
::flatbuffers::Offset<AssetHeader> Finish() { ::flatbuffers::Offset<AssetHeader> Finish() {
const auto end = fbb_.EndTable(start_); const auto end = fbb_.EndTable(start_);
auto o = ::flatbuffers::Offset<AssetHeader>(end); auto o = ::flatbuffers::Offset<AssetHeader>(end);
fbb_.Required(o, AssetHeader::VT_UUID);
fbb_.Required(o, AssetHeader::VT_NAME);
fbb_.Required(o, AssetHeader::VT_TYPE_ID);
fbb_.Required(o, AssetHeader::VT_TYPE_NAME);
return o; return o;
} }
}; };
@@ -143,17 +130,13 @@ inline ::flatbuffers::Offset<AssetHeader> CreateAssetHeader(
::flatbuffers::FlatBufferBuilder &_fbb, ::flatbuffers::FlatBufferBuilder &_fbb,
const Bigfoot::Flat::UUID *uuid = nullptr, const Bigfoot::Flat::UUID *uuid = nullptr,
::flatbuffers::Offset<::flatbuffers::String> name = 0, ::flatbuffers::Offset<::flatbuffers::String> name = 0,
uint64_t type_id = 0, const Bigfoot::Flat::AssetTypeID *type_id = nullptr,
::flatbuffers::Offset<::flatbuffers::String> type_name = 0, ::flatbuffers::Offset<::flatbuffers::String> type_name = 0,
uint32_t version = 0, uint32_t version = 0) {
const Bigfoot::Flat::Time *create_time = nullptr,
const Bigfoot::Flat::Time *modification_time = nullptr) {
AssetHeaderBuilder builder_(_fbb); AssetHeaderBuilder builder_(_fbb);
builder_.add_type_id(type_id);
builder_.add_modification_time(modification_time);
builder_.add_create_time(create_time);
builder_.add_version(version); builder_.add_version(version);
builder_.add_type_name(type_name); builder_.add_type_name(type_name);
builder_.add_type_id(type_id);
builder_.add_name(name); builder_.add_name(name);
builder_.add_uuid(uuid); builder_.add_uuid(uuid);
return builder_.Finish(); return builder_.Finish();
@@ -177,11 +160,9 @@ inline void AssetHeader::UnPackTo(AssetHeaderT *_o, const ::flatbuffers::resolve
(void)_resolver; (void)_resolver;
{ auto _e = uuid(); if (_e) _o->uuid = ::flatbuffers::UnPack(*_e); } { auto _e = uuid(); if (_e) _o->uuid = ::flatbuffers::UnPack(*_e); }
{ auto _e = name(); if (_e) _o->name = eastl::string(_e->c_str(), _e->size()); } { auto _e = name(); if (_e) _o->name = eastl::string(_e->c_str(), _e->size()); }
{ auto _e = type_id(); _o->type_id = _e; } { auto _e = type_id(); if (_e) _o->type_id = ::flatbuffers::UnPack(*_e); }
{ auto _e = type_name(); if (_e) _o->type_name = eastl::string(_e->c_str(), _e->size()); } { auto _e = type_name(); if (_e) _o->type_name = eastl::string(_e->c_str(), _e->size()); }
{ auto _e = version(); _o->version = _e; } { auto _e = version(); _o->version = _e; }
{ auto _e = create_time(); if (_e) _o->create_time = ::flatbuffers::UnPack(*_e); }
{ auto _e = modification_time(); if (_e) _o->modification_time = ::flatbuffers::UnPack(*_e); }
} }
inline ::flatbuffers::Offset<AssetHeader> CreateAssetHeader(::flatbuffers::FlatBufferBuilder &_fbb, const AssetHeaderT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { inline ::flatbuffers::Offset<AssetHeader> CreateAssetHeader(::flatbuffers::FlatBufferBuilder &_fbb, const AssetHeaderT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) {
@@ -193,48 +174,40 @@ inline ::flatbuffers::Offset<AssetHeader> AssetHeader::Pack(::flatbuffers::FlatB
(void)_o; (void)_o;
struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AssetHeaderT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AssetHeaderT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
auto _uuid = ::flatbuffers::Pack(_o->uuid); auto _uuid = ::flatbuffers::Pack(_o->uuid);
auto _name = _o->name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->name); auto _name = _fbb.CreateString(_o->name);
auto _type_id = _o->type_id; auto _type_id = ::flatbuffers::Pack(_o->type_id);
auto _type_name = _o->type_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->type_name); auto _type_name = _fbb.CreateString(_o->type_name);
auto _version = _o->version; auto _version = _o->version;
auto _create_time = ::flatbuffers::Pack(_o->create_time);
auto _modification_time = ::flatbuffers::Pack(_o->modification_time);
return Bigfoot::Flat::CreateAssetHeader( return Bigfoot::Flat::CreateAssetHeader(
_fbb, _fbb,
&_uuid, &_uuid,
_name, _name,
_type_id, &_type_id,
_type_name, _type_name,
_version, _version);
&_create_time,
&_modification_time);
} }
inline const ::flatbuffers::TypeTable *AssetHeaderTypeTable() { inline const ::flatbuffers::TypeTable *AssetHeaderTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = { static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_SEQUENCE, 0, 0 }, { ::flatbuffers::ET_SEQUENCE, 0, 0 },
{ ::flatbuffers::ET_STRING, 0, -1 }, { ::flatbuffers::ET_STRING, 0, -1 },
{ ::flatbuffers::ET_ULONG, 0, -1 },
{ ::flatbuffers::ET_STRING, 0, -1 },
{ ::flatbuffers::ET_UINT, 0, -1 },
{ ::flatbuffers::ET_SEQUENCE, 0, 1 }, { ::flatbuffers::ET_SEQUENCE, 0, 1 },
{ ::flatbuffers::ET_SEQUENCE, 0, 1 } { ::flatbuffers::ET_STRING, 0, -1 },
{ ::flatbuffers::ET_UINT, 0, -1 }
}; };
static const ::flatbuffers::TypeFunction type_refs[] = { static const ::flatbuffers::TypeFunction type_refs[] = {
Bigfoot::Flat::UUIDTypeTable, Bigfoot::Flat::UUIDTypeTable,
Bigfoot::Flat::TimeTypeTable Bigfoot::Flat::AssetTypeIDTypeTable
}; };
static const char * const names[] = { static const char * const names[] = {
"uuid", "uuid",
"name", "name",
"type_id", "type_id",
"type_name", "type_name",
"version", "version"
"create_time",
"modification_time"
}; };
static const ::flatbuffers::TypeTable tt = { static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_TABLE, 7, type_codes, type_refs, nullptr, nullptr, names ::flatbuffers::ST_TABLE, 5, type_codes, type_refs, nullptr, nullptr, names
}; };
return &tt; return &tt;
} }

View File

@@ -0,0 +1,6 @@
namespace Bigfoot.Flat;
struct AssetTypeID (native_type: "::Bigfoot::AssetTypeID")
{
value: ulong;
}

View File

@@ -0,0 +1,26 @@
/**
* Auto-generated header from: AssetTypeID.fbs
* Generated by Bin2CPP
*
* DO NOT TOUCH
*/
#ifndef ASSETTYPEID_FBS_HPP
#define ASSETTYPEID_FBS_HPP
#include <EASTL/array.h>
#include <cstddef>
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 105> g_AssetTypeID_fbs = {
std::byte{0x6E}, std::byte{0x61}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x73}, std::byte{0x70}, std::byte{0x61}, std::byte{0x63}, std::byte{0x65}, std::byte{0x20}, 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{0x3B}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x73}, std::byte{0x74}, std::byte{0x72}, std::byte{0x75}, std::byte{0x63}, std::byte{0x74}, std::byte{0x20},
std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x54}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x49}, std::byte{0x44}, std::byte{0x20}, std::byte{0x28}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x74},
std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x22}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67},
std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x54}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x49},
std::byte{0x44}, std::byte{0x22}, std::byte{0x29}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x76}, std::byte{0x61}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x65}, std::byte{0x3A},
std::byte{0x20}, std::byte{0x75}, std::byte{0x6C}, std::byte{0x6F}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x7D}
};
} // namespace Bigfoot
#endif // ASSETTYPEID_FBS_HPP

View File

@@ -0,0 +1,24 @@
/*********************************************************************
* \file AssetTypeID.hpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#ifndef BIGFOOT_ENGINE_ASSETTYPEID_HPP
#define BIGFOOT_ENGINE_ASSETTYPEID_HPP
#include <Engine/BigFile/Asset/AssetTypeID_generated.hpp>
#include <cstdint>
namespace Bigfoot
{
using AssetTypeID = std::uint64_t;
}
namespace flatbuffers
{
Bigfoot::Flat::AssetTypeID Pack(const Bigfoot::AssetTypeID& p_assetTypeID);
Bigfoot::AssetTypeID UnPack(const Bigfoot::Flat::AssetTypeID& p_flatAssetTypeID);
} // namespace flatbuffers
#endif

View File

@@ -0,0 +1,71 @@
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_ASSETTYPEID_BIGFOOT_FLAT_H_
#define FLATBUFFERS_GENERATED_ASSETTYPEID_BIGFOOT_FLAT_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 "EASTL/unique_ptr.h"
#include "EASTL/string.h"
namespace Bigfoot {
namespace Flat {
struct AssetTypeID;
inline const ::flatbuffers::TypeTable *AssetTypeIDTypeTable();
FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) AssetTypeID FLATBUFFERS_FINAL_CLASS {
private:
uint64_t value_;
public:
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return AssetTypeIDTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Bigfoot.Flat.AssetTypeID";
}
AssetTypeID()
: value_(0) {
}
AssetTypeID(uint64_t _value)
: value_(::flatbuffers::EndianScalar(_value)) {
}
uint64_t value() const {
return ::flatbuffers::EndianScalar(value_);
}
};
FLATBUFFERS_STRUCT_END(AssetTypeID, 8);
struct AssetTypeID::Traits {
using type = AssetTypeID;
};
inline const ::flatbuffers::TypeTable *AssetTypeIDTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_ULONG, 0, -1 }
};
static const int64_t values[] = { 0, 8 };
static const char * const names[] = {
"value"
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_STRUCT, 1, type_codes, nullptr, nullptr, values, names
};
return &tt;
}
} // namespace Flat
} // namespace Bigfoot
#endif // FLATBUFFERS_GENERATED_ASSETTYPEID_BIGFOOT_FLAT_H_

View File

@@ -3,7 +3,7 @@ project(${PackageName})
set(PublicDependencies set(PublicDependencies
$<$<CONFIG:Debug,RelWithDebInfo>:quill::quill> $<$<CONFIG:Debug,RelWithDebInfo>:quill::quill>
mimalloc $<IF:$<BOOL:${ASAN}>,mimalloc-asan,mimalloc-static>
stduuid::stduuid) stduuid::stduuid)
set(PrivateDependencies) set(PrivateDependencies)
set(BigfootPublicDependencies set(BigfootPublicDependencies
@@ -20,9 +20,9 @@ bigfoot_create_package_lib(
bigfoot_create_logger() bigfoot_create_logger()
target_compile_definitions(${PROJECT_NAME} target_compile_definitions(${PROJECT_NAME}
PUBLIC $<$<CONFIG:Debug,RelWithDebInfo>:QUILL_NO_EXCEPTIONS> PUBLIC
PUBLIC $<$<CONFIG:Debug,RelWithDebInfo>:QUILL_DISABLE_NON_PREFIXED_MACROS> $<$<CONFIG:Debug,RelWithDebInfo>:QUILL_NO_EXCEPTIONS>
$<$<CONFIG:Debug,RelWithDebInfo>:QUILL_DISABLE_NON_PREFIXED_MACROS>
PUBLIC MI_SHARED_LIB) MI_SHARED_LIB )
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/MimallocImpl.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/MimallocImpl.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON)

View File

@@ -0,0 +1,50 @@
/**
* Auto-generated header from: Log.fbs
* Generated by Bin2CPP
*
* DO NOT TOUCH
*/
#ifndef LOG_FBS_HPP
#define LOG_FBS_HPP
#include <EASTL/array.h>
#include <cstddef>
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 154> g_Log_fbs = {
std::byte{0x6E}, std::byte{0x61}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x73},
std::byte{0x70}, std::byte{0x61}, std::byte{0x63}, std::byte{0x65}, std::byte{0x20},
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{0x3B}, std::byte{0x0A}, std::byte{0x0A},
std::byte{0x65}, std::byte{0x6E}, std::byte{0x75}, std::byte{0x6D}, std::byte{0x20},
std::byte{0x4C}, std::byte{0x6F}, std::byte{0x67}, std::byte{0x53}, std::byte{0x69},
std::byte{0x6E}, std::byte{0x6B}, std::byte{0x54}, std::byte{0x79}, std::byte{0x70},
std::byte{0x65}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x62}, std::byte{0x79},
std::byte{0x74}, std::byte{0x65}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A},
std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x43},
std::byte{0x6F}, std::byte{0x6E}, std::byte{0x73}, std::byte{0x6F}, std::byte{0x6C},
std::byte{0x65}, std::byte{0x0A}, std::byte{0x7D}, std::byte{0x0A}, std::byte{0x0A},
std::byte{0x65}, std::byte{0x6E}, std::byte{0x75}, std::byte{0x6D}, std::byte{0x20},
std::byte{0x4C}, std::byte{0x6F}, std::byte{0x67}, std::byte{0x4C}, std::byte{0x65},
std::byte{0x76}, std::byte{0x65}, std::byte{0x6C}, std::byte{0x3A}, std::byte{0x20},
std::byte{0x62}, std::byte{0x79}, std::byte{0x74}, std::byte{0x65}, std::byte{0x0A},
std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20},
std::byte{0x20}, std::byte{0x44}, std::byte{0x65}, std::byte{0x62}, std::byte{0x75},
std::byte{0x67}, std::byte{0x2C}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20},
std::byte{0x20}, std::byte{0x20}, std::byte{0x54}, std::byte{0x72}, std::byte{0x61},
std::byte{0x63}, std::byte{0x65}, std::byte{0x2C}, std::byte{0x0A}, std::byte{0x20},
std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x49}, std::byte{0x6E},
std::byte{0x66}, std::byte{0x6F}, std::byte{0x2C}, std::byte{0x0A}, std::byte{0x20},
std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x57}, std::byte{0x61},
std::byte{0x72}, std::byte{0x6E}, std::byte{0x2C}, std::byte{0x0A}, std::byte{0x20},
std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x45}, std::byte{0x72},
std::byte{0x72}, std::byte{0x6F}, std::byte{0x72}, std::byte{0x2C}, std::byte{0x0A},
std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x43},
std::byte{0x72}, std::byte{0x69}, std::byte{0x74}, std::byte{0x69}, std::byte{0x63},
std::byte{0x61}, std::byte{0x6C}, std::byte{0x0A}, std::byte{0x7D}
};
} // namespace Bigfoot
#endif // LOG_FBS_HPP

View File

@@ -0,0 +1,29 @@
/**
* Auto-generated header from: Log.fbs
* Generated by Bin2CPP
*
* DO NOT TOUCH
*/
#ifndef LOG_FBS_HPP
#define LOG_FBS_HPP
#include <EASTL/array.h>
#include <cstddef>
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 154> g_Log_fbs = {
std::byte{0x6E}, std::byte{0x61}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x73}, std::byte{0x70}, std::byte{0x61}, std::byte{0x63}, std::byte{0x65}, std::byte{0x20}, 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{0x3B}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x75}, std::byte{0x6D}, std::byte{0x20}, std::byte{0x4C}, std::byte{0x6F},
std::byte{0x67}, std::byte{0x53}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x6B}, std::byte{0x54}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x62}, std::byte{0x79}, std::byte{0x74}, std::byte{0x65}, std::byte{0x0A},
std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x43}, std::byte{0x6F}, std::byte{0x6E}, std::byte{0x73}, std::byte{0x6F}, std::byte{0x6C}, std::byte{0x65}, std::byte{0x0A}, std::byte{0x7D}, std::byte{0x0A},
std::byte{0x0A}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x75}, std::byte{0x6D}, std::byte{0x20}, std::byte{0x4C}, std::byte{0x6F}, std::byte{0x67}, std::byte{0x4C}, std::byte{0x65}, std::byte{0x76}, std::byte{0x65}, std::byte{0x6C}, std::byte{0x3A}, std::byte{0x20},
std::byte{0x62}, std::byte{0x79}, std::byte{0x74}, std::byte{0x65}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x44}, std::byte{0x65}, std::byte{0x62}, std::byte{0x75}, std::byte{0x67},
std::byte{0x2C}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x54}, std::byte{0x72}, std::byte{0x61}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2C}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20},
std::byte{0x20}, std::byte{0x49}, std::byte{0x6E}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x2C}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x57}, std::byte{0x61}, std::byte{0x72}, std::byte{0x6E}, std::byte{0x2C},
std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x45}, std::byte{0x72}, std::byte{0x72}, std::byte{0x6F}, std::byte{0x72}, std::byte{0x2C}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20},
std::byte{0x43}, std::byte{0x72}, std::byte{0x69}, std::byte{0x74}, std::byte{0x69}, std::byte{0x63}, std::byte{0x61}, std::byte{0x6C}, std::byte{0x0A}, std::byte{0x7D}
};
} // namespace Bigfoot
#endif // LOG_FBS_HPP

View File

@@ -1,18 +0,0 @@
/*********************************************************************
* \file FlatTime.hpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#ifndef BIGFOOT_SYSTEM_FLATTIME_HPP
#define BIGFOOT_SYSTEM_FLATTIME_HPP
#include <System/Time/Time.hpp>
#include <System/Time/Time_generated.hpp>
namespace flatbuffers
{
Bigfoot::Flat::Time Pack(const Bigfoot::Time& p_time);
Bigfoot::Time UnPack(const Bigfoot::Flat::Time& p_flatTime);
} // namespace flatbuffers
#endif

View File

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

View File

@@ -0,0 +1,25 @@
/**
* Auto-generated header from: Time.fbs
* Generated by Bin2CPP
*
* DO NOT TOUCH
*/
#ifndef TIME_FBS_HPP
#define TIME_FBS_HPP
#include <EASTL/array.h>
#include <cstddef>
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 88> g_Time_fbs = {
std::byte{0x6E}, std::byte{0x61}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x73}, std::byte{0x70}, std::byte{0x61}, std::byte{0x63}, std::byte{0x65}, std::byte{0x20}, 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{0x3B}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x73}, std::byte{0x74}, std::byte{0x72}, std::byte{0x75}, std::byte{0x63}, std::byte{0x74}, std::byte{0x20},
std::byte{0x54}, std::byte{0x69}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x20}, std::byte{0x28}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x74}, std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x79}, std::byte{0x70},
std::byte{0x65}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x22}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x54},
std::byte{0x69}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x22}, std::byte{0x29}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x65}, std::byte{0x70}, std::byte{0x6F}, std::byte{0x63}, std::byte{0x68}, std::byte{0x3A},
std::byte{0x75}, std::byte{0x6C}, std::byte{0x6F}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x7D}
};
} // namespace Bigfoot
#endif // TIME_FBS_HPP

View File

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

View File

@@ -13,8 +13,6 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_REVISION == 19, FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included"); "Non-compatible flatbuffers version included");
#include "System/Time/FlatTime.hpp"
#include "EASTL/unique_ptr.h" #include "EASTL/unique_ptr.h"
#include "EASTL/string.h" #include "EASTL/string.h"

View File

@@ -1,18 +0,0 @@
/*********************************************************************
* \file FlatUUID.hpp
*
* \author Romain BOULLARD
* \date December 2025
*********************************************************************/
#ifndef BIGFOOT_SYSTEM_FLATUUID_HPP
#define BIGFOOT_SYSTEM_FLATUUID_HPP
#include <System/UUID/UUID.hpp>
#include <System/UUID/UUID_generated.hpp>
namespace flatbuffers
{
Bigfoot::Flat::UUID Pack(const Bigfoot::UUID& p_uuid);
Bigfoot::UUID UnPack(const Bigfoot::Flat::UUID& p_flatUUID);
} // namespace flatbuffers
#endif

View File

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

View File

@@ -0,0 +1,25 @@
/**
* Auto-generated header from: UUID.fbs
* Generated by Bin2CPP
*
* DO NOT TOUCH
*/
#ifndef UUID_FBS_HPP
#define UUID_FBS_HPP
#include <EASTL/array.h>
#include <cstddef>
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 93> g_UUID_fbs = {
std::byte{0x6E}, std::byte{0x61}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x73}, std::byte{0x70}, std::byte{0x61}, std::byte{0x63}, std::byte{0x65}, std::byte{0x20}, 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{0x3B}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x73}, std::byte{0x74}, std::byte{0x72}, std::byte{0x75}, std::byte{0x63}, std::byte{0x74}, std::byte{0x20},
std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x20}, std::byte{0x28}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x74}, std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x79}, std::byte{0x70},
std::byte{0x65}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x22}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x55},
std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x22}, std::byte{0x29}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x62}, std::byte{0x79}, std::byte{0x74}, std::byte{0x65}, std::byte{0x73}, std::byte{0x3A},
std::byte{0x5B}, std::byte{0x75}, std::byte{0x62}, std::byte{0x79}, std::byte{0x74}, std::byte{0x65}, std::byte{0x3A}, std::byte{0x31}, std::byte{0x36}, std::byte{0x5D}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x7D}
};
} // namespace Bigfoot
#endif // UUID_FBS_HPP

View File

@@ -6,6 +6,7 @@
*********************************************************************/ *********************************************************************/
#ifndef BIGFOOT_SYSTEM_UUID_HPP #ifndef BIGFOOT_SYSTEM_UUID_HPP
#define BIGFOOT_SYSTEM_UUID_HPP #define BIGFOOT_SYSTEM_UUID_HPP
#include <System/UUID/UUID_generated.hpp>
#include <uuid.h> #include <uuid.h>
@@ -118,6 +119,8 @@ struct std::formatter<Bigfoot::UUID, char>
} }
}; };
/****************************************************************************************/
#if defined BIGFOOT_NOT_OPTIMIZED #if defined BIGFOOT_NOT_OPTIMIZED
#include <quill/DeferredFormatCodec.h> #include <quill/DeferredFormatCodec.h>
@@ -141,4 +144,12 @@ struct quill::Codec<Bigfoot::UUID>: quill::DeferredFormatCodec<Bigfoot::UUID>
}; };
#endif #endif
/****************************************************************************************/
namespace flatbuffers
{
Bigfoot::Flat::UUID Pack(const Bigfoot::UUID& p_uuid);
Bigfoot::UUID UnPack(const Bigfoot::Flat::UUID& p_flatUUID);
} // namespace flatbuffers
#endif #endif

View File

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

View File

@@ -119,3 +119,20 @@ Time Time::Now()
return Time {epochInMicroSeconds}; return Time {epochInMicroSeconds};
} }
} // namespace Bigfoot } // namespace Bigfoot
/****************************************************************************************/
namespace flatbuffers
{
Bigfoot::Flat::Time Pack(const Bigfoot::Time& p_time)
{
return Bigfoot::Flat::Time {p_time.Epoch()};
}
/****************************************************************************************/
Bigfoot::Time UnPack(const Bigfoot::Flat::Time& p_flatTime)
{
return Bigfoot::Time {p_flatTime.epoch()};
}
} // namespace flatbuffers

View File

@@ -1,27 +0,0 @@
/*********************************************************************
* \file FlatUUID.cpp
*
* \author Romain BOULLARD
* \date December 2025
*********************************************************************/
#include <System/UUID/FlatUUID.hpp>
namespace flatbuffers
{
Bigfoot::Flat::UUID Pack(const Bigfoot::UUID& p_uuid)
{
const std::span<const std::byte, Bigfoot::UUID::UUID_BYTE_SIZE> bytes = p_uuid;
return Bigfoot::Flat::UUID {
std::span<const std::uint8_t, Bigfoot::UUID::UUID_BYTE_SIZE> {reinterpret_cast<const std::uint8_t*>(bytes.data()),
bytes.size()}};
}
/****************************************************************************************/
Bigfoot::UUID UnPack(const Bigfoot::Flat::UUID& p_flatUUID)
{
const std::span<const std::uint8_t, Bigfoot::UUID::UUID_BYTE_SIZE> bytesView {p_flatUUID.bytes()->data(),
p_flatUUID.bytes()->size()};
return Bigfoot::UUID {std::as_bytes(bytesView)};
}
} // namespace flatbuffers

View File

@@ -85,3 +85,25 @@ uuids::uuid_random_generator UUID::GetUUIDGenerator()
return uuids::uuid_random_generator {ms_randomGenerator}; return uuids::uuid_random_generator {ms_randomGenerator};
} }
} // namespace Bigfoot } // namespace Bigfoot
/****************************************************************************************/
namespace flatbuffers
{
Bigfoot::Flat::UUID Pack(const Bigfoot::UUID& p_uuid)
{
const std::span<const std::byte, Bigfoot::UUID::UUID_BYTE_SIZE> bytes = p_uuid;
return Bigfoot::Flat::UUID {
std::span<const std::uint8_t, Bigfoot::UUID::UUID_BYTE_SIZE> {reinterpret_cast<const std::uint8_t*>(bytes.data()),
bytes.size()}};
}
/****************************************************************************************/
Bigfoot::UUID UnPack(const Bigfoot::Flat::UUID& p_flatUUID)
{
const std::span<const std::uint8_t, Bigfoot::UUID::UUID_BYTE_SIZE> bytesView {p_flatUUID.bytes()->data(),
p_flatUUID.bytes()->size()};
return Bigfoot::UUID {std::as_bytes(bytesView)};
}
} // namespace flatbuffers

View File

@@ -2,7 +2,8 @@ get_filename_component(PackageName ${CMAKE_CURRENT_SOURCE_DIR} NAME)
project(${PackageName}) project(${PackageName})
set(PublicDependencies set(PublicDependencies
$<$<CONFIG:Debug,RelWithDebInfo>:cpptrace::cpptrace>) $<$<CONFIG:Debug,RelWithDebInfo>:cpptrace::cpptrace>
unordered_dense::unordered_dense)
set(PrivateDependencies) set(PrivateDependencies)
set(BigfootPublicDependencies) set(BigfootPublicDependencies)
set(BigfootPrivateDependencies) set(BigfootPrivateDependencies)

View File

@@ -6,6 +6,8 @@
*********************************************************************/ *********************************************************************/
#include <Engine/BigFile/BigFile.hpp> #include <Engine/BigFile/BigFile.hpp>
#include <Engine/BigFile/Asset/Asset.hpp>
#include <System/Log/Log.hpp> #include <System/Log/Log.hpp>
#include <System/Time/Time.hpp> #include <System/Time/Time.hpp>
#include <System/UUID/UUID.hpp> #include <System/UUID/UUID.hpp>
@@ -13,6 +15,8 @@
#include <Utils/Singleton.hpp> #include <Utils/Singleton.hpp>
#include <Utils/TargetMacros.h> #include <Utils/TargetMacros.h>
#include <EngineTests/BigFile/Asset/AssetA.hpp>
#include <EngineTests/BigFile/Asset/AssetB.hpp>
#include <EngineTests/BigFileInfo_generated.hpp> #include <EngineTests/BigFileInfo_generated.hpp>
#include <gtest/gtest.h> #include <gtest/gtest.h>
@@ -33,6 +37,9 @@ class BigFileFixture: public ::testing::Test
m_bigFile.CommitTransaction(); m_bigFile.CommitTransaction();
} }
AssetAContainer m_assetAContainer;
AssetBContainer m_assetBContainer;
BIGFOOT_NOT_OPTIMIZED_ONLY(Singleton<Log>::Lifetime m_loggerLifetime;) BIGFOOT_NOT_OPTIMIZED_ONLY(Singleton<Log>::Lifetime m_loggerLifetime;)
BigFile m_bigFile {File {BIGFILE_ENGINETESTS_LOCATION}}; BigFile m_bigFile {File {BIGFILE_ENGINETESTS_LOCATION}};
@@ -42,6 +49,51 @@ class BigFileFixture: public ::testing::Test
TEST_F(BigFileFixture, Lol) TEST_F(BigFileFixture, Lol)
{ {
{
EXPECT_STREQ(FlatAssetWrapper<Flat::AssetA>::TypeName().data(), "Bigfoot.Flat.AssetA");
EXPECT_EQ(FlatAssetWrapper<Flat::AssetA>::TypeID(),
rapidhash(FlatAssetWrapper<Flat::AssetA>::TypeName().data(),
FlatAssetWrapper<Flat::AssetA>::TypeName().size()));
UUID uuid;
std::ignore = m_assetAContainer.Add(uuid);
FlatAssetWrapper<Flat::AssetA> test {};
test.Asset().asset_header->name = "Instance";
test.Asset().asset_header->uuid = uuid;
const eastl::vector<std::byte> flatBuffer = test.Pack();
std::ignore = m_assetAContainer.Load(uuid, flatBuffer);
m_assetAContainer.UnloadUnreferenced();
// UUID uuid;
// std::ignore = m_assetAContainer.Add(uuid, "Instance");
// AssetA* test = m_assetAContainer.Get(uuid);
// test->Health() = 100;
// test->Mana() = 42;
// const eastl::vector<std::byte> flatbuffer = m_assetAContainer.Pack(uuid);
// m_assetAContainer.Remove(uuid);
// std::ignore = m_assetAContainer.Add(uuid, flatbuffer);
// std::ignore = m_assetAContainer.Add(UUID {}, "Instance2");
// std::ignore = m_assetAContainer.Add(UUID {}, "Instance3");
// AssetA* test2 = m_assetAContainer.Get(uuid);
// EXPECT_EQ(test2->Health(), 100);
// EXPECT_EQ(test2->Mana(), 42);
// EXPECT_STREQ(test2->AssetHeader()->name.c_str(), "Instance");
// EXPECT_EQ(test2->AssetHeader()->type_id, FlatAssetWrapper<Flat::AssetA>::TypeID());
// EXPECT_STREQ(test2->AssetHeader()->type_name.c_str(), FlatAssetWrapper<Flat::AssetA>::TypeName().data());
// EXPECT_EQ(test2->AssetHeader()->uuid, uuid);
// EXPECT_EQ(test2->AssetHeader()->version, 2);
}
UUID uuid; UUID uuid;
UUID uuid2; UUID uuid2;

View File

@@ -11,5 +11,3 @@ bigfoot_create_bigfile("Tests/Bigfoot")
bigfoot_create_package_tests( bigfoot_create_package_tests(
"" ""
"${BigfootDependencies}") "${BigfootDependencies}")
bigfoot_setup_dependencies("Tests/Bigfoot")

View File

@@ -2,12 +2,22 @@ include "Engine/BigFile/Asset/AssetHeader.fbs";
namespace Bigfoot.Flat; namespace Bigfoot.Flat;
struct AssetAHardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetA>")
{
uuid: UUID;
}
struct AssetASoftRef (native_type: "::Bigfoot::SoftRef<::Bigfoot::AssetA>")
{
uuid: UUID;
}
table AssetA table AssetA
{ {
asset_header: AssetHeader; asset_header: AssetHeader;
health: uint; health: uint;
hp: uint; mana: uint;
} }
root_type AssetA; root_type AssetA;

View File

@@ -0,0 +1,43 @@
/**
* Auto-generated header from: AssetA.fbs
* Generated by Bin2CPP
*
* DO NOT TOUCH
*/
#ifndef ASSETA_FBS_HPP
#define ASSETA_FBS_HPP
#include <EASTL/array.h>
#include <cstddef>
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 369> g_AssetA_fbs = {
std::byte{0x69}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x20}, std::byte{0x22}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F},
std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x46}, std::byte{0x69}, std::byte{0x6C}, 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{0x41}, std::byte{0x73},
std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x48}, std::byte{0x65}, std::byte{0x61}, std::byte{0x64}, std::byte{0x65}, std::byte{0x72}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x22}, std::byte{0x3B}, std::byte{0x0A},
std::byte{0x0A}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x73}, std::byte{0x70}, std::byte{0x61}, std::byte{0x63}, std::byte{0x65}, std::byte{0x20}, 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{0x3B}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x73}, std::byte{0x74}, std::byte{0x72}, std::byte{0x75}, std::byte{0x63}, std::byte{0x74},
std::byte{0x20}, 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{0x20}, std::byte{0x28},
std::byte{0x6E}, std::byte{0x61}, std::byte{0x74}, std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x22}, std::byte{0x3A}, std::byte{0x3A},
std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x3C}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65},
std::byte{0x74}, std::byte{0x41}, std::byte{0x3E}, std::byte{0x22}, std::byte{0x29}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64},
std::byte{0x3A}, std::byte{0x20}, std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x7D}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x73}, std::byte{0x74}, std::byte{0x72}, std::byte{0x75}, std::byte{0x63},
std::byte{0x74}, std::byte{0x20}, 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{0x20},
std::byte{0x28}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x74}, std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x22}, std::byte{0x3A},
std::byte{0x3A}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65},
std::byte{0x66}, std::byte{0x3C}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73},
std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x3E}, std::byte{0x22}, std::byte{0x29}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69},
std::byte{0x64}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x7D}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x74}, std::byte{0x61}, std::byte{0x62}, std::byte{0x6C},
std::byte{0x65}, std::byte{0x20}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x61},
std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x64}, std::byte{0x65}, std::byte{0x72}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73},
std::byte{0x65}, std::byte{0x74}, std::byte{0x48}, std::byte{0x65}, std::byte{0x61}, std::byte{0x64}, std::byte{0x65}, std::byte{0x72}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x68},
std::byte{0x65}, std::byte{0x61}, std::byte{0x6C}, std::byte{0x74}, std::byte{0x68}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x75}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x74}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20},
std::byte{0x20}, std::byte{0x6D}, std::byte{0x61}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x75}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x74}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x7D}, std::byte{0x0A}, std::byte{0x0A},
std::byte{0x72}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x20}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41},
std::byte{0x3B}
};
} // namespace Bigfoot
#endif // ASSETA_FBS_HPP

View File

@@ -0,0 +1,69 @@
/*********************************************************************
* \file AssetA.hpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#ifndef BIGFOOT_ENGINETESTS_ASSETA_HPP
#define BIGFOOT_ENGINETESTS_ASSETA_HPP
#include <Engine/BigFile/Asset/AssetContainer.hpp>
#include <EngineTests/BigFile/Asset/AssetA_generated.hpp>
namespace Bigfoot
{
class AssetA
{
public:
using FLAT_ASSET = Flat::AssetA;
AssetA(FlatAssetWrapper<Flat::AssetA>* p_flatAsset):
m_flatAsset(p_flatAsset)
{
// deprecation...
if (m_flatAsset->Asset().asset_header->version < 2)
{
m_flatAsset->Asset().asset_header->version = 2;
}
}
AssetA(const AssetA& p_assetA) = default;
AssetA(AssetA&& p_assetA) = default;
[[nodiscard]]
std::uint32_t& Health()
{
return m_flatAsset->Asset().health;
}
[[nodiscard]]
std::uint32_t& Mana()
{
return m_flatAsset->Asset().mana;
}
[[nodiscard]]
Flat::AssetHeaderT* AssetHeader()
{
return m_flatAsset->Asset().asset_header.get();
}
[[nodiscard]]
const Flat::AssetHeaderT* AssetHeader() const
{
return m_flatAsset->Asset().asset_header.get();
}
~AssetA() = default;
AssetA& operator=(const AssetA& p_assetA) = default;
AssetA& operator=(AssetA&& p_assetA) = default;
private:
FlatAssetWrapper<Flat::AssetA>* m_flatAsset;
};
using AssetAContainer = AssetContainer<AssetA>;
} // namespace Bigfoot
#endif

View File

@@ -13,8 +13,9 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
FLATBUFFERS_VERSION_REVISION == 19, FLATBUFFERS_VERSION_REVISION == 19,
"Non-compatible flatbuffers version included"); "Non-compatible flatbuffers version included");
#include "System/UUID/FlatUUID.hpp" #include "Engine/BigFile/Asset/AssetTypeID.hpp"
#include "System/Time/FlatTime.hpp" #include "Engine/BigFile/Asset/AssetTypeID.hpp"
#include "System/UUID/UUID.hpp"
#include "Engine/BigFile/Asset/AssetHeader_generated.hpp" #include "Engine/BigFile/Asset/AssetHeader_generated.hpp"
#include "EASTL/unique_ptr.h" #include "EASTL/unique_ptr.h"
@@ -23,12 +24,76 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 &&
namespace Bigfoot { namespace Bigfoot {
namespace Flat { namespace Flat {
struct AssetAHardRef;
struct AssetASoftRef;
struct AssetA; struct AssetA;
struct AssetABuilder; struct AssetABuilder;
struct AssetAT; struct AssetAT;
inline const ::flatbuffers::TypeTable *AssetAHardRefTypeTable();
inline const ::flatbuffers::TypeTable *AssetASoftRefTypeTable();
inline const ::flatbuffers::TypeTable *AssetATypeTable(); inline const ::flatbuffers::TypeTable *AssetATypeTable();
FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetAHardRef FLATBUFFERS_FINAL_CLASS {
private:
Bigfoot::Flat::UUID uuid_;
public:
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return AssetAHardRefTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Bigfoot.Flat.AssetAHardRef";
}
AssetAHardRef()
: uuid_() {
}
AssetAHardRef(const Bigfoot::Flat::UUID &_uuid)
: uuid_(_uuid) {
}
const Bigfoot::Flat::UUID &uuid() const {
return uuid_;
}
};
FLATBUFFERS_STRUCT_END(AssetAHardRef, 16);
struct AssetAHardRef::Traits {
using type = AssetAHardRef;
};
FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetASoftRef FLATBUFFERS_FINAL_CLASS {
private:
Bigfoot::Flat::UUID uuid_;
public:
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return AssetASoftRefTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Bigfoot.Flat.AssetASoftRef";
}
AssetASoftRef()
: uuid_() {
}
AssetASoftRef(const Bigfoot::Flat::UUID &_uuid)
: uuid_(_uuid) {
}
const Bigfoot::Flat::UUID &uuid() const {
return uuid_;
}
};
FLATBUFFERS_STRUCT_END(AssetASoftRef, 16);
struct AssetASoftRef::Traits {
using type = AssetASoftRef;
};
struct AssetAT : public ::flatbuffers::NativeTable { struct AssetAT : public ::flatbuffers::NativeTable {
typedef AssetA TableType; typedef AssetA TableType;
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
@@ -36,7 +101,7 @@ struct AssetAT : public ::flatbuffers::NativeTable {
} }
eastl::unique_ptr<Bigfoot::Flat::AssetHeaderT> asset_header{}; eastl::unique_ptr<Bigfoot::Flat::AssetHeaderT> asset_header{};
uint32_t health = 0; uint32_t health = 0;
uint32_t hp = 0; uint32_t mana = 0;
AssetAT() = default; AssetAT() = default;
AssetAT(const AssetAT &o); AssetAT(const AssetAT &o);
AssetAT(AssetAT&&) FLATBUFFERS_NOEXCEPT = default; AssetAT(AssetAT&&) FLATBUFFERS_NOEXCEPT = default;
@@ -56,7 +121,7 @@ struct AssetA FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_ASSET_HEADER = 4, VT_ASSET_HEADER = 4,
VT_HEALTH = 6, VT_HEALTH = 6,
VT_HP = 8 VT_MANA = 8
}; };
const Bigfoot::Flat::AssetHeader *asset_header() const { const Bigfoot::Flat::AssetHeader *asset_header() const {
return GetPointer<const Bigfoot::Flat::AssetHeader *>(VT_ASSET_HEADER); return GetPointer<const Bigfoot::Flat::AssetHeader *>(VT_ASSET_HEADER);
@@ -64,8 +129,8 @@ struct AssetA FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
uint32_t health() const { uint32_t health() const {
return GetField<uint32_t>(VT_HEALTH, 0); return GetField<uint32_t>(VT_HEALTH, 0);
} }
uint32_t hp() const { uint32_t mana() const {
return GetField<uint32_t>(VT_HP, 0); return GetField<uint32_t>(VT_MANA, 0);
} }
template <bool B = false> template <bool B = false>
bool Verify(::flatbuffers::VerifierTemplate<B> &verifier) const { bool Verify(::flatbuffers::VerifierTemplate<B> &verifier) const {
@@ -73,7 +138,7 @@ struct AssetA FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
VerifyOffset(verifier, VT_ASSET_HEADER) && VerifyOffset(verifier, VT_ASSET_HEADER) &&
verifier.VerifyTable(asset_header()) && verifier.VerifyTable(asset_header()) &&
VerifyField<uint32_t>(verifier, VT_HEALTH, 4) && VerifyField<uint32_t>(verifier, VT_HEALTH, 4) &&
VerifyField<uint32_t>(verifier, VT_HP, 4) && VerifyField<uint32_t>(verifier, VT_MANA, 4) &&
verifier.EndTable(); verifier.EndTable();
} }
AssetAT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; AssetAT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
@@ -91,8 +156,8 @@ struct AssetABuilder {
void add_health(uint32_t health) { void add_health(uint32_t health) {
fbb_.AddElement<uint32_t>(AssetA::VT_HEALTH, health, 0); fbb_.AddElement<uint32_t>(AssetA::VT_HEALTH, health, 0);
} }
void add_hp(uint32_t hp) { void add_mana(uint32_t mana) {
fbb_.AddElement<uint32_t>(AssetA::VT_HP, hp, 0); fbb_.AddElement<uint32_t>(AssetA::VT_MANA, mana, 0);
} }
explicit AssetABuilder(::flatbuffers::FlatBufferBuilder &_fbb) explicit AssetABuilder(::flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) { : fbb_(_fbb) {
@@ -109,9 +174,9 @@ inline ::flatbuffers::Offset<AssetA> CreateAssetA(
::flatbuffers::FlatBufferBuilder &_fbb, ::flatbuffers::FlatBufferBuilder &_fbb,
::flatbuffers::Offset<Bigfoot::Flat::AssetHeader> asset_header = 0, ::flatbuffers::Offset<Bigfoot::Flat::AssetHeader> asset_header = 0,
uint32_t health = 0, uint32_t health = 0,
uint32_t hp = 0) { uint32_t mana = 0) {
AssetABuilder builder_(_fbb); AssetABuilder builder_(_fbb);
builder_.add_hp(hp); builder_.add_mana(mana);
builder_.add_health(health); builder_.add_health(health);
builder_.add_asset_header(asset_header); builder_.add_asset_header(asset_header);
return builder_.Finish(); return builder_.Finish();
@@ -127,13 +192,13 @@ struct AssetA::Traits {
inline AssetAT::AssetAT(const AssetAT &o) inline AssetAT::AssetAT(const AssetAT &o)
: asset_header((o.asset_header) ? new Bigfoot::Flat::AssetHeaderT(*o.asset_header) : nullptr), : asset_header((o.asset_header) ? new Bigfoot::Flat::AssetHeaderT(*o.asset_header) : nullptr),
health(o.health), health(o.health),
hp(o.hp) { mana(o.mana) {
} }
inline AssetAT &AssetAT::operator=(AssetAT o) FLATBUFFERS_NOEXCEPT { inline AssetAT &AssetAT::operator=(AssetAT o) FLATBUFFERS_NOEXCEPT {
std::swap(asset_header, o.asset_header); std::swap(asset_header, o.asset_header);
std::swap(health, o.health); std::swap(health, o.health);
std::swap(hp, o.hp); std::swap(mana, o.mana);
return *this; return *this;
} }
@@ -148,7 +213,7 @@ inline void AssetA::UnPackTo(AssetAT *_o, const ::flatbuffers::resolver_function
(void)_resolver; (void)_resolver;
{ auto _e = asset_header(); if (_e) { if(_o->asset_header) { _e->UnPackTo(_o->asset_header.get(), _resolver); } else { _o->asset_header = eastl::unique_ptr<Bigfoot::Flat::AssetHeaderT>(_e->UnPack(_resolver)); } } else if (_o->asset_header) { _o->asset_header.reset(); } } { auto _e = asset_header(); if (_e) { if(_o->asset_header) { _e->UnPackTo(_o->asset_header.get(), _resolver); } else { _o->asset_header = eastl::unique_ptr<Bigfoot::Flat::AssetHeaderT>(_e->UnPack(_resolver)); } } else if (_o->asset_header) { _o->asset_header.reset(); } }
{ auto _e = health(); _o->health = _e; } { auto _e = health(); _o->health = _e; }
{ auto _e = hp(); _o->hp = _e; } { auto _e = mana(); _o->mana = _e; }
} }
inline ::flatbuffers::Offset<AssetA> CreateAssetA(::flatbuffers::FlatBufferBuilder &_fbb, const AssetAT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { inline ::flatbuffers::Offset<AssetA> CreateAssetA(::flatbuffers::FlatBufferBuilder &_fbb, const AssetAT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) {
@@ -161,12 +226,46 @@ inline ::flatbuffers::Offset<AssetA> AssetA::Pack(::flatbuffers::FlatBufferBuild
struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AssetAT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AssetAT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
auto _asset_header = _o->asset_header ? CreateAssetHeader(_fbb, _o->asset_header.get(), _rehasher) : 0; auto _asset_header = _o->asset_header ? CreateAssetHeader(_fbb, _o->asset_header.get(), _rehasher) : 0;
auto _health = _o->health; auto _health = _o->health;
auto _hp = _o->hp; auto _mana = _o->mana;
return Bigfoot::Flat::CreateAssetA( return Bigfoot::Flat::CreateAssetA(
_fbb, _fbb,
_asset_header, _asset_header,
_health, _health,
_hp); _mana);
}
inline const ::flatbuffers::TypeTable *AssetAHardRefTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_SEQUENCE, 0, 0 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Bigfoot::Flat::UUIDTypeTable
};
static const int64_t values[] = { 0, 16 };
static const char * const names[] = {
"uuid"
};
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[] = {
Bigfoot::Flat::UUIDTypeTable
};
static const int64_t values[] = { 0, 16 };
static const char * const names[] = {
"uuid"
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_STRUCT, 1, type_codes, type_refs, nullptr, values, names
};
return &tt;
} }
inline const ::flatbuffers::TypeTable *AssetATypeTable() { inline const ::flatbuffers::TypeTable *AssetATypeTable() {
@@ -181,7 +280,7 @@ inline const ::flatbuffers::TypeTable *AssetATypeTable() {
static const char * const names[] = { static const char * const names[] = {
"asset_header", "asset_header",
"health", "health",
"hp" "mana"
}; };
static const ::flatbuffers::TypeTable tt = { static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_TABLE, 3, type_codes, type_refs, nullptr, nullptr, names ::flatbuffers::ST_TABLE, 3, type_codes, type_refs, nullptr, nullptr, names

View File

@@ -0,0 +1,22 @@
include "EngineTests/BigFile/Asset/AssetA.fbs";
namespace Bigfoot.Flat;
struct AssetBHardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetB>")
{
uuid: UUID;
}
struct AssetBSoftRef (native_type: "::Bigfoot::SoftRef<::Bigfoot::AssetB>")
{
uuid: UUID;
}
table AssetB
{
asset_header: AssetHeader;
asset_a_hard_ref: AssetAHardRef (native_inline);
}
root_type AssetB;

View File

@@ -0,0 +1,44 @@
/**
* Auto-generated header from: AssetB.fbs
* Generated by Bin2CPP
*
* DO NOT TOUCH
*/
#ifndef ASSETB_FBS_HPP
#define ASSETB_FBS_HPP
#include <EASTL/array.h>
#include <cstddef>
namespace Bigfoot
{
inline constexpr eastl::array<std::byte, 388> g_AssetB_fbs = {
std::byte{0x69}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x20}, std::byte{0x22}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x54},
std::byte{0x65}, std::byte{0x73}, std::byte{0x74}, std::byte{0x73}, std::byte{0x2F}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x46}, std::byte{0x69}, std::byte{0x6C}, 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{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{0x22}, std::byte{0x3B}, std::byte{0x0A},
std::byte{0x0A}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x6D}, std::byte{0x65}, std::byte{0x73}, std::byte{0x70}, std::byte{0x61}, std::byte{0x63}, std::byte{0x65}, std::byte{0x20}, 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{0x3B}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x73}, std::byte{0x74}, std::byte{0x72}, std::byte{0x75}, std::byte{0x63}, std::byte{0x74},
std::byte{0x20}, 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{0x20}, std::byte{0x28},
std::byte{0x6E}, std::byte{0x61}, std::byte{0x74}, std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x22}, std::byte{0x3A}, std::byte{0x3A},
std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66},
std::byte{0x3C}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65},
std::byte{0x74}, std::byte{0x42}, std::byte{0x3E}, std::byte{0x22}, std::byte{0x29}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64},
std::byte{0x3A}, std::byte{0x20}, std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x7D}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x73}, std::byte{0x74}, std::byte{0x72}, std::byte{0x75}, std::byte{0x63},
std::byte{0x74}, std::byte{0x20}, 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{0x20},
std::byte{0x28}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x74}, std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x22}, std::byte{0x3A},
std::byte{0x3A}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65},
std::byte{0x66}, std::byte{0x3C}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x3A}, std::byte{0x3A}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73},
std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x3E}, std::byte{0x22}, std::byte{0x29}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69},
std::byte{0x64}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x7D}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x74}, std::byte{0x61}, std::byte{0x62}, std::byte{0x6C},
std::byte{0x65}, std::byte{0x20}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x0A}, std::byte{0x7B}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x61},
std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x64}, std::byte{0x65}, std::byte{0x72}, std::byte{0x3A}, std::byte{0x20}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73},
std::byte{0x65}, std::byte{0x74}, std::byte{0x48}, std::byte{0x65}, std::byte{0x61}, std::byte{0x64}, std::byte{0x65}, std::byte{0x72}, std::byte{0x3B}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, std::byte{0x20}, 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{0x68}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x3A},
std::byte{0x20}, 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{0x20}, std::byte{0x28},
std::byte{0x6E}, std::byte{0x61}, std::byte{0x74}, std::byte{0x69}, std::byte{0x76}, std::byte{0x65}, std::byte{0x5F}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x6C}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x29}, std::byte{0x3B}, std::byte{0x0A},
std::byte{0x7D}, std::byte{0x0A}, std::byte{0x0A}, std::byte{0x72}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x79}, std::byte{0x70}, std::byte{0x65}, std::byte{0x20}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73},
std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x3B}
};
} // namespace Bigfoot
#endif // ASSETB_FBS_HPP

View File

@@ -0,0 +1,59 @@
/*********************************************************************
* \file AssetB.hpp
*
* \author Romain BOULLARD
* \date February 2026
*********************************************************************/
#ifndef BIGFOOT_ENGINETESTS_ASSETB_HPP
#define BIGFOOT_ENGINETESTS_ASSETB_HPP
#include <Engine/BigFile/Asset/AssetContainer.hpp>
#include <EngineTests/BigFile/Asset/AssetA.hpp>
#include <EngineTests/BigFile/Asset/AssetB_generated.hpp>
namespace Bigfoot
{
class AssetB
{
public:
using FLAT_ASSET = Flat::AssetB;
AssetB(FlatAssetWrapper<Flat::AssetB>* p_flatAsset):
m_flatAsset(p_flatAsset)
{
}
AssetB(const AssetB& p_assetB) = default;
AssetB(AssetB&& p_assetB) = default;
[[nodiscard]]
HardRef<AssetA> Health()
{
return m_flatAsset->Asset().asset_a_hard_ref;
}
[[nodiscard]]
Flat::AssetHeaderT* AssetHeader()
{
return m_flatAsset->Asset().asset_header.get();
}
[[nodiscard]]
const Flat::AssetHeaderT* AssetHeader() const
{
return m_flatAsset->Asset().asset_header.get();
}
~AssetB() = default;
AssetB& operator=(const AssetB& p_assetB) = default;
AssetB& operator=(AssetB&& p_assetB) = default;
private:
FlatAssetWrapper<Flat::AssetB>* m_flatAsset;
};
using AssetBContainer = AssetContainer<AssetB>;
} // namespace Bigfoot
#endif

View File

@@ -0,0 +1,321 @@
// automatically generated by the FlatBuffers compiler, do not modify
#ifndef FLATBUFFERS_GENERATED_ASSETB_BIGFOOT_FLAT_H_
#define FLATBUFFERS_GENERATED_ASSETB_BIGFOOT_FLAT_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/BigFile/Asset/AssetTypeID.hpp"
#include "Engine/BigFile/Asset/AssetTypeID.hpp"
#include "System/UUID/UUID.hpp"
#include "EngineTests/BigFile/Asset/AssetA_generated.hpp"
#include "EASTL/unique_ptr.h"
#include "EASTL/string.h"
namespace Bigfoot {
namespace Flat {
struct AssetBHardRef;
struct AssetBSoftRef;
struct AssetB;
struct AssetBBuilder;
struct AssetBT;
inline const ::flatbuffers::TypeTable *AssetBHardRefTypeTable();
inline const ::flatbuffers::TypeTable *AssetBSoftRefTypeTable();
inline const ::flatbuffers::TypeTable *AssetBTypeTable();
FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetBHardRef FLATBUFFERS_FINAL_CLASS {
private:
Bigfoot::Flat::UUID uuid_;
public:
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return AssetBHardRefTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Bigfoot.Flat.AssetBHardRef";
}
AssetBHardRef()
: uuid_() {
}
AssetBHardRef(const Bigfoot::Flat::UUID &_uuid)
: uuid_(_uuid) {
}
const Bigfoot::Flat::UUID &uuid() const {
return uuid_;
}
};
FLATBUFFERS_STRUCT_END(AssetBHardRef, 16);
struct AssetBHardRef::Traits {
using type = AssetBHardRef;
};
FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetBSoftRef FLATBUFFERS_FINAL_CLASS {
private:
Bigfoot::Flat::UUID uuid_;
public:
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return AssetBSoftRefTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Bigfoot.Flat.AssetBSoftRef";
}
AssetBSoftRef()
: uuid_() {
}
AssetBSoftRef(const Bigfoot::Flat::UUID &_uuid)
: uuid_(_uuid) {
}
const Bigfoot::Flat::UUID &uuid() const {
return uuid_;
}
};
FLATBUFFERS_STRUCT_END(AssetBSoftRef, 16);
struct AssetBSoftRef::Traits {
using type = AssetBSoftRef;
};
struct AssetBT : public ::flatbuffers::NativeTable {
typedef AssetB TableType;
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Bigfoot.Flat.AssetBT";
}
eastl::unique_ptr<Bigfoot::Flat::AssetHeaderT> asset_header{};
::Bigfoot::HardRef<::Bigfoot::AssetA> asset_a_hard_ref{};
AssetBT() = default;
AssetBT(const AssetBT &o);
AssetBT(AssetBT&&) FLATBUFFERS_NOEXCEPT = default;
AssetBT &operator=(AssetBT o) FLATBUFFERS_NOEXCEPT;
};
struct AssetB FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table {
typedef AssetBT NativeTableType;
typedef AssetBBuilder Builder;
struct Traits;
static const ::flatbuffers::TypeTable *MiniReflectTypeTable() {
return AssetBTypeTable();
}
static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() {
return "Bigfoot.Flat.AssetB";
}
enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
VT_ASSET_HEADER = 4,
VT_ASSET_A_HARD_REF = 6
};
const Bigfoot::Flat::AssetHeader *asset_header() const {
return GetPointer<const Bigfoot::Flat::AssetHeader *>(VT_ASSET_HEADER);
}
const Bigfoot::Flat::AssetAHardRef *asset_a_hard_ref() const {
return GetStruct<const Bigfoot::Flat::AssetAHardRef *>(VT_ASSET_A_HARD_REF);
}
template <bool B = false>
bool Verify(::flatbuffers::VerifierTemplate<B> &verifier) const {
return VerifyTableStart(verifier) &&
VerifyOffset(verifier, VT_ASSET_HEADER) &&
verifier.VerifyTable(asset_header()) &&
VerifyField<Bigfoot::Flat::AssetAHardRef>(verifier, VT_ASSET_A_HARD_REF, 1) &&
verifier.EndTable();
}
AssetBT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
void UnPackTo(AssetBT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const;
static ::flatbuffers::Offset<AssetB> Pack(::flatbuffers::FlatBufferBuilder &_fbb, const AssetBT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr);
};
struct AssetBBuilder {
typedef AssetB Table;
::flatbuffers::FlatBufferBuilder &fbb_;
::flatbuffers::uoffset_t start_;
void add_asset_header(::flatbuffers::Offset<Bigfoot::Flat::AssetHeader> asset_header) {
fbb_.AddOffset(AssetB::VT_ASSET_HEADER, asset_header);
}
void add_asset_a_hard_ref(const Bigfoot::Flat::AssetAHardRef *asset_a_hard_ref) {
fbb_.AddStruct(AssetB::VT_ASSET_A_HARD_REF, asset_a_hard_ref);
}
explicit AssetBBuilder(::flatbuffers::FlatBufferBuilder &_fbb)
: fbb_(_fbb) {
start_ = fbb_.StartTable();
}
::flatbuffers::Offset<AssetB> Finish() {
const auto end = fbb_.EndTable(start_);
auto o = ::flatbuffers::Offset<AssetB>(end);
return o;
}
};
inline ::flatbuffers::Offset<AssetB> CreateAssetB(
::flatbuffers::FlatBufferBuilder &_fbb,
::flatbuffers::Offset<Bigfoot::Flat::AssetHeader> asset_header = 0,
const Bigfoot::Flat::AssetAHardRef *asset_a_hard_ref = nullptr) {
AssetBBuilder builder_(_fbb);
builder_.add_asset_a_hard_ref(asset_a_hard_ref);
builder_.add_asset_header(asset_header);
return builder_.Finish();
}
struct AssetB::Traits {
using type = AssetB;
static auto constexpr Create = CreateAssetB;
};
::flatbuffers::Offset<AssetB> CreateAssetB(::flatbuffers::FlatBufferBuilder &_fbb, const AssetBT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr);
inline AssetBT::AssetBT(const AssetBT &o)
: asset_header((o.asset_header) ? new Bigfoot::Flat::AssetHeaderT(*o.asset_header) : nullptr),
asset_a_hard_ref(o.asset_a_hard_ref) {
}
inline AssetBT &AssetBT::operator=(AssetBT o) FLATBUFFERS_NOEXCEPT {
std::swap(asset_header, o.asset_header);
std::swap(asset_a_hard_ref, o.asset_a_hard_ref);
return *this;
}
inline AssetBT *AssetB::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const {
auto _o = std::make_unique<AssetBT>();
UnPackTo(_o.get(), _resolver);
return _o.release();
}
inline void AssetB::UnPackTo(AssetBT *_o, const ::flatbuffers::resolver_function_t *_resolver) const {
(void)_o;
(void)_resolver;
{ auto _e = asset_header(); if (_e) { if(_o->asset_header) { _e->UnPackTo(_o->asset_header.get(), _resolver); } else { _o->asset_header = eastl::unique_ptr<Bigfoot::Flat::AssetHeaderT>(_e->UnPack(_resolver)); } } else if (_o->asset_header) { _o->asset_header.reset(); } }
{ auto _e = asset_a_hard_ref(); if (_e) _o->asset_a_hard_ref = ::flatbuffers::UnPack(*_e); }
}
inline ::flatbuffers::Offset<AssetB> CreateAssetB(::flatbuffers::FlatBufferBuilder &_fbb, const AssetBT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) {
return AssetB::Pack(_fbb, _o, _rehasher);
}
inline ::flatbuffers::Offset<AssetB> AssetB::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const AssetBT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) {
(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_header = _o->asset_header ? CreateAssetHeader(_fbb, _o->asset_header.get(), _rehasher) : 0;
auto _asset_a_hard_ref = ::flatbuffers::Pack(_o->asset_a_hard_ref);
return Bigfoot::Flat::CreateAssetB(
_fbb,
_asset_header,
&_asset_a_hard_ref);
}
inline const ::flatbuffers::TypeTable *AssetBHardRefTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_SEQUENCE, 0, 0 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Bigfoot::Flat::UUIDTypeTable
};
static const int64_t values[] = { 0, 16 };
static const char * const names[] = {
"uuid"
};
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[] = {
Bigfoot::Flat::UUIDTypeTable
};
static const int64_t values[] = { 0, 16 };
static const char * const names[] = {
"uuid"
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_STRUCT, 1, type_codes, type_refs, nullptr, values, names
};
return &tt;
}
inline const ::flatbuffers::TypeTable *AssetBTypeTable() {
static const ::flatbuffers::TypeCode type_codes[] = {
{ ::flatbuffers::ET_SEQUENCE, 0, 0 },
{ ::flatbuffers::ET_SEQUENCE, 0, 1 }
};
static const ::flatbuffers::TypeFunction type_refs[] = {
Bigfoot::Flat::AssetHeaderTypeTable,
Bigfoot::Flat::AssetAHardRefTypeTable
};
static const char * const names[] = {
"asset_header",
"asset_a_hard_ref"
};
static const ::flatbuffers::TypeTable tt = {
::flatbuffers::ST_TABLE, 2, type_codes, type_refs, nullptr, nullptr, names
};
return &tt;
}
inline const Bigfoot::Flat::AssetB *GetAssetB(const void *buf) {
return ::flatbuffers::GetRoot<Bigfoot::Flat::AssetB>(buf);
}
inline const Bigfoot::Flat::AssetB *GetSizePrefixedAssetB(const void *buf) {
return ::flatbuffers::GetSizePrefixedRoot<Bigfoot::Flat::AssetB>(buf);
}
template <bool B = false>
inline bool VerifyAssetBBuffer(
::flatbuffers::VerifierTemplate<B> &verifier) {
return verifier.template VerifyBuffer<Bigfoot::Flat::AssetB>(nullptr);
}
template <bool B = false>
inline bool VerifySizePrefixedAssetBBuffer(
::flatbuffers::VerifierTemplate<B> &verifier) {
return verifier.template VerifySizePrefixedBuffer<Bigfoot::Flat::AssetB>(nullptr);
}
inline void FinishAssetBBuffer(
::flatbuffers::FlatBufferBuilder &fbb,
::flatbuffers::Offset<Bigfoot::Flat::AssetB> root) {
fbb.Finish(root);
}
inline void FinishSizePrefixedAssetBBuffer(
::flatbuffers::FlatBufferBuilder &fbb,
::flatbuffers::Offset<Bigfoot::Flat::AssetB> root) {
fbb.FinishSizePrefixed(root);
}
inline eastl::unique_ptr<Bigfoot::Flat::AssetBT> UnPackAssetB(
const void *buf,
const ::flatbuffers::resolver_function_t *res = nullptr) {
return eastl::unique_ptr<Bigfoot::Flat::AssetBT>(GetAssetB(buf)->UnPack(res));
}
inline eastl::unique_ptr<Bigfoot::Flat::AssetBT> UnPackSizePrefixedAssetB(
const void *buf,
const ::flatbuffers::resolver_function_t *res = nullptr) {
return eastl::unique_ptr<Bigfoot::Flat::AssetBT>(GetSizePrefixedAssetB(buf)->UnPack(res));
}
} // namespace Flat
} // namespace Bigfoot
#endif // FLATBUFFERS_GENERATED_ASSETB_BIGFOOT_FLAT_H_

View File

@@ -10,5 +10,3 @@ bigfoot_create_package_tests(
"${BigfootDependencies}") "${BigfootDependencies}")
bigfoot_create_logger() bigfoot_create_logger()
bigfoot_setup_dependencies("Tests/Bigfoot")

View File

@@ -7,5 +7,3 @@ set(BigfootDependencies
bigfoot_create_package_tests( bigfoot_create_package_tests(
"" ""
"${BigfootDependencies}") "${BigfootDependencies}")
bigfoot_setup_dependencies("Tests/Bigfoot")

32
CMake/CustomTargets.cmake Normal file
View File

@@ -0,0 +1,32 @@
foreach(CONFIG DEBUG RELWITHDEBINFO)
if("${CMAKE_EXE_LINKER_FLAGS_${CONFIG}}" MATCHES "/INCREMENTAL:NO")
string(REGEX REPLACE "/INCREMENTAL([^:]|$)" ""
CMAKE_EXE_LINKER_FLAGS_${CONFIG}
"${CMAKE_EXE_LINKER_FLAGS_${CONFIG}}")
endif()
if("${CMAKE_SHARED_LINKER_FLAGS_${CONFIG}}" MATCHES "/INCREMENTAL:NO")
string(REGEX REPLACE "/INCREMENTAL([^:]|$)" ""
CMAKE_SHARED_LINKER_FLAGS_${CONFIG}
"${CMAKE_SHARED_LINKER_FLAGS_${CONFIG}}")
endif()
endforeach()
add_library(BigfootCompileAndLinkFlags INTERFACE)
target_compile_options(BigfootCompileAndLinkFlags INTERFACE
$<$<CXX_COMPILER_ID:MSVC>:/W4 /WX>
$<$<CXX_COMPILER_ID:Clang,GNU>:-Wall -Wextra -Wpedantic -Werror>
$<$<AND:$<BOOL:${COVERAGE}>,$<CXX_COMPILER_ID:Clang>>:-fprofile-instr-generate -fcoverage-mapping>
)
target_link_options(BigfootCompileAndLinkFlags INTERFACE
$<$<AND:$<BOOL:${COVERAGE}>,$<CXX_COMPILER_ID:Clang>>:-fprofile-instr-generate>
)
target_compile_definitions(BigfootCompileAndLinkFlags INTERFACE
$<$<PLATFORM_ID:Windows>:NOMINMAX>
$<$<PLATFORM_ID:Windows>:WIN32_LEAN_AND_MEAN>
$<$<PLATFORM_ID:Windows>:BIGFOOT_WINDOWS>
$<$<PLATFORM_ID:Linux>:BIGFOOT_LINUX>
$<$<CONFIG:Release>:BIGFOOT_OPTIMIZED>
$<$<CONFIG:Debug,RelWithDebInfo>:BIGFOOT_NOT_OPTIMIZED>)

View File

@@ -7,7 +7,11 @@ endif()
find_package(EASTL REQUIRED) find_package(EASTL REQUIRED)
find_package(unordered_dense REQUIRED) find_package(unordered_dense REQUIRED)
find_package(mimalloc REQUIRED) if(${ASAN})
find_package(mimalloc-asan REQUIRED)
else()
find_package(mimalloc REQUIRED)
endif()
find_package(stduuid REQUIRED) find_package(stduuid REQUIRED)
find_package(SQLite3 REQUIRED) find_package(SQLite3 REQUIRED)
find_package(CLI11 REQUIRED) find_package(CLI11 REQUIRED)

View File

@@ -1,74 +1,110 @@
function(bigfoot_create_package_lib PackagePublicDependencies PackagePrivateDependencies PackageBigfootPublicDependencies PackageBigfootPrivateDependencies ParentFolder) function(bigfoot_create_package_lib PackagePublicDependencies PackagePrivateDependencies PackageBigfootPublicDependencies PackageBigfootPrivateDependencies ParentFolder)
add_library(${PROJECT_NAME} STATIC) add_library(${PROJECT_NAME} STATIC)
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Include) target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)
bigfoot_compile_flatbuffers("${PackageBigfootPublicDependencies}") bigfoot_compile_flatbuffers("${PackageBigfootPublicDependencies}")
# collect sources (reconfigure when files are added/removed) file(GLOB_RECURSE _SOURCES
file(GLOB_RECURSE _BF_SOURCES CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
)
file(GLOB_RECURSE _HEADERS
CONFIGURE_DEPENDS CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.h
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
)
file(GLOB_RECURSE _OTHERS
CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/*.fbs ${CMAKE_CURRENT_SOURCE_DIR}/*.fbs
${CMAKE_CURRENT_SOURCE_DIR}/*.sql ${CMAKE_CURRENT_SOURCE_DIR}/*.sql
) )
target_sources(${PROJECT_NAME} target_sources(${PROJECT_NAME}
PRIVATE PRIVATE
${_BF_SOURCES} ${_SOURCES}
${_OTHERS}
PUBLIC
FILE_SET HEADERS
BASE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}/Include
FILES
${_HEADERS}
) )
target_compile_options(${PROJECT_NAME} PRIVATE ${BIGFOOT_CXX_FLAGS}) target_link_libraries(${PROJECT_NAME}
PRIVATE
BigfootCompileAndLinkFlags
PUBLIC
unordered_dense::unordered_dense
EASTL::EASTL
flatbuffers::flatbuffers
rapidhash::rapidhash
target_link_libraries(${PROJECT_NAME} PUBLIC unordered_dense::unordered_dense EASTL::EASTL flatbuffers::flatbuffers rapidhash::rapidhash) ${PackagePublicDependencies}
target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS}) $<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageBigfootPublicDependencies}>
target_link_libraries(${PROJECT_NAME} PUBLIC ${PackagePublicDependencies}) PRIVATE
target_link_libraries(${PROJECT_NAME} PRIVATE ${PackagePrivateDependencies}) ${PackagePrivateDependencies}
target_link_libraries(${PROJECT_NAME} PUBLIC $<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageBigfootPublicDependencies}>) $<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageBigfootPrivateDependencies}>)
target_link_libraries(${PROJECT_NAME} PRIVATE $<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageBigfootPrivateDependencies}>)
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src FILES ${_BF_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src FILES ${_SOURCES} ${_HEADERS} ${_OTHERS})
set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Bigfoot/${ParentFolder}) set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Bigfoot/${ParentFolder})
endfunction() endfunction()
function(bigfoot_create_package_tests ParentFolder BigfootDependencies) function(bigfoot_create_package_tests ParentFolder BigfootDependencies)
add_executable(${PROJECT_NAME}) add_executable(${PROJECT_NAME})
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)
bigfoot_compile_flatbuffers("${BigfootDependencies}") bigfoot_compile_flatbuffers("${BigfootDependencies}")
file(GLOB_RECURSE _BF_TEST_SOURCES file(GLOB_RECURSE _SOURCES
CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
)
file(GLOB_RECURSE _HEADERS
CONFIGURE_DEPENDS CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.h
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
)
file(GLOB_RECURSE _OTHERS
CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp.in
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/*.fbs ${CMAKE_CURRENT_SOURCE_DIR}/*.fbs
${CMAKE_CURRENT_SOURCE_DIR}/*.sql
) )
target_sources(${PROJECT_NAME} target_sources(${PROJECT_NAME}
PRIVATE PRIVATE
${_BF_TEST_SOURCES} ${_SOURCES}
${_OTHERS}
PUBLIC
FILE_SET HEADERS
BASE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}/Include
FILES
${_HEADERS}
) )
target_compile_options(${PROJECT_NAME} PRIVATE ${BIGFOOT_CXX_FLAGS}) target_link_libraries(${PROJECT_NAME}
target_link_options(${PROJECT_NAME} PRIVATE ${BIGFOOT_EXE_LINK_FLAGS}) PRIVATE
BigfootCompileAndLinkFlags
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Include) PRIVATE
$<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageName}>
target_link_libraries(${PROJECT_NAME} PRIVATE $<LINK_LIBRARY:WHOLE_ARCHIVE,${PackageName}>) gtest::gtest)
target_link_libraries(${PROJECT_NAME} PRIVATE gtest::gtest)
include(GoogleTest) include(GoogleTest)
gtest_discover_tests(${PROJECT_NAME} XML_OUTPUT_DIR ${CMAKE_BINARY_DIR}/TestResults/) gtest_discover_tests(${PROJECT_NAME} XML_OUTPUT_DIR ${CMAKE_BINARY_DIR}/TestResults/)
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src/ FILES ${_BF_TEST_SOURCES}) source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX Src/ FILES ${_SOURCES} ${_HEADERS} ${_OTHERS})
set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Tests/Bigfoot/${ParentFolder}) set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Tests/Bigfoot/${ParentFolder})

View File

@@ -38,15 +38,22 @@ endfunction()
function(bigfoot_compile_flatbuffers BigfootDependencies) function(bigfoot_compile_flatbuffers BigfootDependencies)
set(IncludeFolders "") set(IncludeFolders "")
get_target_property(CurrentTargetDependencyInclude ${PROJECT_NAME} INCLUDE_DIRECTORIES) list(APPEND IncludeFolders ${CMAKE_CURRENT_SOURCE_DIR}/Include)
if(CurrentTargetDependencyInclude)
list(APPEND IncludeFolders ${CurrentTargetDependencyInclude})
endif()
foreach(Dependency IN LISTS BigfootDependencies) foreach(Dependency IN LISTS BigfootDependencies)
get_target_property(DependencyInclude ${Dependency} INCLUDE_DIRECTORIES) if(TARGET ${Dependency})
if(DependencyInclude) get_target_property(DependencyIncludeDirs ${Dependency} INTERFACE_INCLUDE_DIRECTORIES)
list(APPEND IncludeFolders ${DependencyInclude}) if(DependencyIncludeDirs)
foreach(Dir IN LISTS DependencyIncludeDirs)
# Strip $<BUILD_INTERFACE:...> generator expression
if(Dir MATCHES "^\\$<BUILD_INTERFACE:(.+)>$")
list(APPEND IncludeFolders "${CMAKE_MATCH_1}")
elseif(NOT Dir MATCHES "^\\$<")
# Pass through plain paths, skip other generator expressions
list(APPEND IncludeFolders "${Dir}")
endif()
endforeach()
endif()
endif() endif()
endforeach() endforeach()
@@ -58,7 +65,7 @@ function(bigfoot_compile_flatbuffers BigfootDependencies)
file(GLOB_RECURSE SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/Include/*.fbs") file(GLOB_RECURSE SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/Include/*.fbs")
foreach(SOURCE_FILE IN LISTS SOURCES) foreach(SOURCE_FILE IN LISTS SOURCES)
get_filename_component(SOURCE_DIRECTORY ${SOURCE_FILE} DIRECTORY) get_filename_component(SOURCE_DIRECTORY ${SOURCE_FILE} DIRECTORY)
get_filename_component(SOURCE_NAME_WE ${SOURCE_FILE} NAME_WE)
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${SOURCE_FILE}) set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${SOURCE_FILE})
execute_process( execute_process(
@@ -82,64 +89,14 @@ function(bigfoot_compile_flatbuffers BigfootDependencies)
-o "${SOURCE_DIRECTORY}" -o "${SOURCE_DIRECTORY}"
"${SOURCE_FILE}" "${SOURCE_FILE}"
) )
execute_process(
COMMAND ${BIN2CPP_EXECUTABLE}
--input "${SOURCE_FILE}"
--output "${SOURCE_DIRECTORY}/${SOURCE_NAME_WE}.fbs_generated.hpp"
--arrayType eastl::array
--arrayInclude <EASTL/array.h>
--namespace Bigfoot
)
endforeach() endforeach()
endfunction() endfunction()
function(bigfoot_setup_dependencies ParentFolder)
set(CONAN_DEPLOYER_DIR "${CMAKE_SOURCE_DIR}/build/full_deploy/host")
if(EXISTS ${CONAN_DEPLOYER_DIR})
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
file(GLOB_RECURSE SHARED_BINARIES ${CONAN_DEPLOYER_DIR}/*mimalloc*.dll)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
file(GLOB_RECURSE SHARED_BINARIES ${CONAN_DEPLOYER_DIR}/*mimalloc*.so*)
endif()
if(${IS_MULTI_CONFIG})
foreach(CONFIG ${CMAKE_CONFIGURATION_TYPES})
foreach(file ${SHARED_BINARIES})
if(file MATCHES "/${CONFIG}/")
list(APPEND SHARED_BINARIES_${CONFIG} ${file})
endif()
endforeach()
endforeach()
add_custom_target(${PROJECT_NAME}CopySharedBinaries
ALL DEPENDS SHARED_BINARIES
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:${PROJECT_NAME}>
COMMAND ${CMAKE_COMMAND} -E $<IF:$<CONFIG:Debug>,copy_if_different,true> ${SHARED_BINARIES_Debug} $<TARGET_FILE_DIR:${PROJECT_NAME}>
COMMAND ${CMAKE_COMMAND} -E $<IF:$<CONFIG:Release>,copy_if_different,true> ${SHARED_BINARIES_Release} $<TARGET_FILE_DIR:${PROJECT_NAME}>
COMMAND ${CMAKE_COMMAND} -E $<IF:$<CONFIG:RelWithDebInfo>,copy_if_different,true> ${SHARED_BINARIES_RelWithDebInfo} $<TARGET_FILE_DIR:${PROJECT_NAME}>
COMMENT "Copy shared binaries for ${PROJECT_NAME}"
)
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}CopySharedBinaries)
set_target_properties(${PROJECT_NAME}CopySharedBinaries PROPERTIES FOLDER UtilityTargets/${ParentFolder})
else()
foreach(file ${SHARED_BINARIES})
if(file MATCHES "/${CMAKE_BUILD_TYPE}/")
list(APPEND SHARED_BINARIES_${CMAKE_BUILD_TYPE} ${file})
endif()
endforeach()
add_custom_target(${PROJECT_NAME}CopySharedBinaries ALL
DEPENDS ${SHARED_BINARIES_${CMAKE_BUILD_TYPE}}
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:${PROJECT_NAME}>
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SHARED_BINARIES_${CMAKE_BUILD_TYPE}} $<TARGET_FILE_DIR:${PROJECT_NAME}>
COMMENT "Copy shared binaries for ${PROJECT_NAME}"
)
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}CopySharedBinaries)
set_target_properties(${PROJECT_NAME}CopySharedBinaries PROPERTIES FOLDER UtilityTargets/${ParentFolder})
endif()
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
add_custom_target(${PROJECT_NAME}PatchMinject ALL
COMMAND ${MINJECT_EXECUTABLE} -i -f $<TARGET_FILE:${PROJECT_NAME}>
COMMENT "Patching ${PROJECT_NAME} to ensure mimalloc dynamic override"
)
add_dependencies(${PROJECT_NAME}PatchMinject ${PROJECT_NAME})
set_target_properties(${PROJECT_NAME}PatchMinject PROPERTIES FOLDER "UtilityTargets/${ParentFolder}")
endif()
endfunction()

View File

@@ -1,21 +1,17 @@
cmake_minimum_required(VERSION 3.24) cmake_minimum_required(VERSION 3.26)
# CMake sets this flag by default, we don't use exception in bigfoot, we can remove it
string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
project(Bigfoot VERSION 0.1.0 project(Bigfoot VERSION 0.1.0
DESCRIPTION "The Bigfoot engine" DESCRIPTION "The Bigfoot engine"
LANGUAGES CXX) LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
set(CMAKE_CONFIGURATION_TYPES "Release;RelWithDebInfo;Debug" CACHE STRING "" FORCE) set(CMAKE_CONFIGURATION_TYPES "Release;RelWithDebInfo;Debug" CACHE STRING "" FORCE)
option(BUILD_TESTS OFF) option(BUILD_TESTS OFF)
option(ASAN OFF)
option(COVERAGE OFF)
option(TRACY ON) option(TRACY ON)
option(BUILD_TOOLS ON) option(BUILD_TOOLS ON)
option(VULKAN ON) option(VULKAN ON)
@@ -23,6 +19,7 @@ option(BUILD_BENCHMARKS OFF)
set(AUTO_GENERATED_COMMENT "// AUTO-GENERATED DO NOT TOUCH") set(AUTO_GENERATED_COMMENT "// AUTO-GENERATED DO NOT TOUCH")
include(${CMAKE_SOURCE_DIR}/CMake/CustomTargets.cmake)
include(${CMAKE_SOURCE_DIR}/CMake/FindDependencies.cmake) include(${CMAKE_SOURCE_DIR}/CMake/FindDependencies.cmake)
include(${CMAKE_SOURCE_DIR}/CMake/Utils.cmake) include(${CMAKE_SOURCE_DIR}/CMake/Utils.cmake)
include(${CMAKE_SOURCE_DIR}/CMake/Package.cmake) include(${CMAKE_SOURCE_DIR}/CMake/Package.cmake)
@@ -30,18 +27,11 @@ include(${CMAKE_SOURCE_DIR}/CMake/Package.cmake)
find_program(FLATBUFFERS_FLATC_EXECUTABLE NAMES flatc) find_program(FLATBUFFERS_FLATC_EXECUTABLE NAMES flatc)
find_program(SQLITE3_EXECUTABLE NAMES sqlite3) find_program(SQLITE3_EXECUTABLE NAMES sqlite3)
find_program(MINJECT_EXECUTABLE NAMES minject) find_program(MINJECT_EXECUTABLE NAMES minject)
find_program(BIN2CPP_EXECUTABLE NAMES Bin2CPP)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_OPTIMIZE_DEPENDENCIES 1) set(CMAKE_OPTIMIZE_DEPENDENCIES 1)
add_compile_definitions(
$<$<PLATFORM_ID:Windows>:NOMINMAX>
$<$<PLATFORM_ID:Windows>:WIN32_LEAN_AND_MEAN>
$<$<PLATFORM_ID:Windows>:BIGFOOT_WINDOWS>
$<$<PLATFORM_ID:Linux>:BIGFOOT_LINUX>
$<$<CONFIG:Release>:BIGFOOT_OPTIMIZED>
$<$<CONFIG:Debug,RelWithDebInfo>:BIGFOOT_NOT_OPTIMIZED>)
if(BUILD_TESTS) if(BUILD_TESTS)
enable_testing() enable_testing()
endif() endif()

32
ConanProfiles/clang Normal file
View File

@@ -0,0 +1,32 @@
[settings]
os=Linux
arch=x86_64
compiler=clang
compiler.version=20
compiler.libcxx=libstdc++11
compiler.cppstd=20
compiler.cstd=17
compiler.runtime=static
build_type=Release
[conf]
tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'}
tools.system.package_manager:mode=install
tools.system.package_manager:sudo=True
tools.build:exelinkflags=["-fuse-ld=mold", "-flto"]
tools.build:sharedlinkflags=["-fuse-ld=mold", "-flto"]
tools.build:cflags=["-flto"]
tools.build:cxxflags=["-flto"]
tools.build:compiler_executables={"c": "clang", "cpp": "clang++"}
tools.cmake.cmaketoolchain:generator=Ninja
[tool_requires]
!cmake/*: cmake/[>=4.2]
[options]
Bin2CPP/*:build_tests=True

View File

@@ -0,0 +1,30 @@
[settings]
os=Linux
arch=x86_64
compiler=clang
compiler.version=20
compiler.libcxx=libstdc++11
compiler.cppstd=20
compiler.cstd=17
compiler.runtime=static
build_type=Debug
[conf]
tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'}
tools.system.package_manager:mode=install
tools.system.package_manager:sudo=True
tools.build:exelinkflags=["-fuse-ld=mold"]
tools.build:sharedlinkflags=["-fuse-ld=mold"]
tools.cmake.cmaketoolchain:generator=Ninja
tools.build:compiler_executables={"c": "clang", "cpp": "clang++"}
[tool_requires]
!cmake/*: cmake/[>=4.2]
[options]
Bin2CPP/*:build_tests=True
Bin2CPP/*:coverage=True

29
ConanProfiles/clangd Normal file
View File

@@ -0,0 +1,29 @@
[settings]
os=Linux
arch=x86_64
compiler=clang
compiler.version=20
compiler.libcxx=libstdc++11
compiler.cppstd=20
compiler.cstd=17
compiler.runtime=static
build_type=Debug
[conf]
tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'}
tools.system.package_manager:mode=install
tools.system.package_manager:sudo=True
tools.build:exelinkflags=["-fuse-ld=mold"]
tools.build:sharedlinkflags=["-fuse-ld=mold"]
tools.cmake.cmaketoolchain:generator=Ninja
tools.build:compiler_executables={"c": "clang", "cpp": "clang++"}
[tool_requires]
!cmake/*: cmake/[>=4.2]
[options]
Bin2CPP/*:build_tests=True

33
ConanProfiles/clangd_asan Normal file
View File

@@ -0,0 +1,33 @@
[settings]
os=Linux
arch=x86_64
compiler=clang
compiler.version=20
compiler.libcxx=libstdc++11
compiler.cppstd=20
compiler.cstd=17
compiler.runtime=static
build_type=Debug
[conf]
tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'}
tools.system.package_manager:mode=install
tools.system.package_manager:sudo=True
tools.build:exelinkflags=["-fuse-ld=mold", "-fsanitize=address,undefined,leak"]
tools.build:sharedlinkflags=["-fuse-ld=mold", "-fsanitize=address,undefined,leak"]
tools.build:cflags=["-fsanitize=address,undefined,leak", "-fno-sanitize-recover=all"]
tools.build:cxxflags=["-fsanitize=address,undefined,leak", "-fno-sanitize-recover=all"]
tools.cmake.cmaketoolchain:generator=Ninja
tools.build:compiler_executables={"c": "clang", "cpp": "clang++"}
[tool_requires]
!cmake/*: cmake/[>=4.2]
[options]
Bin2CPP/*:asan=True
Bin2CPP/*:build_tests=True

24
ConanProfiles/msvc Normal file
View File

@@ -0,0 +1,24 @@
[settings]
os=Windows
arch=x86_64
compiler=msvc
compiler.version=195
compiler.cppstd=20
compiler.cstd=17
compiler.runtime=static
build_type=Release
[conf]
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake
tools.build:exelinkflags=["/LTCG", "/INCREMENTAL:NO"]
tools.build:sharedlinkflags=["/LTCG", "/INCREMENTAL:NO"]
tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1", "/GL"]
tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew"]
[tool_requires]
!cmake/*: cmake/[>=4.2]
[options]
Bin2CPP/*:build_tests=True

View File

@@ -0,0 +1,19 @@
# https://github.com/ccache/ccache/wiki/MS-Visual-Studio#usage-with-cmake
find_program(ccache_exe ccache)
if(ccache_exe)
file(COPY_FILE
${ccache_exe} ${CMAKE_BINARY_DIR}/cl.exe
ONLY_IF_DIFFERENT)
# By default Visual Studio generators will use /Zi which is not compatible
# with ccache, so tell Visual Studio to use /Z7 instead.
message(STATUS "Setting MSVC debug information format to 'Embedded'")
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:Embedded>")
set(CMAKE_VS_GLOBALS
"CLToolExe=cl.exe"
"CLToolPath=${CMAKE_BINARY_DIR}"
"UseMultiToolTask=true"
)
endif()

20
ConanProfiles/msvcd Normal file
View File

@@ -0,0 +1,20 @@
[settings]
os=Windows
arch=x86_64
compiler=msvc
compiler.version=195
compiler.cppstd=20
compiler.cstd=17
compiler.runtime=static
build_type=Debug
[conf]
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake
tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1"]
tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew"]
[tool_requires]
!cmake/*: cmake/[>=4.2]
[options]
Bin2CPP/*:build_tests=True

25
ConanProfiles/msvcd_asan Normal file
View File

@@ -0,0 +1,25 @@
[settings]
os=Windows
arch=x86_64
compiler=msvc
compiler.version=195
compiler.cppstd=20
compiler.cstd=17
compiler.runtime=static
build_type=Debug
[conf]
tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake
tools.build:exelinkflags=["/INCREMENTAL:NO"]
tools.build:sharedlinkflags=["/INCREMENTAL:NO"]
tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1"]
tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew"]
[tool_requires]
!cmake/*: cmake/[>=4.2]
[options]
Bin2CPP/*:asan=True
Bin2CPP/*:build_tests=True

View File

@@ -18,6 +18,8 @@ class Bigfoot(ConanFile):
options = { options = {
"shared": [True, False], "shared": [True, False],
"fPIC": [True, False], "fPIC": [True, False],
"asan": [True, False],
"coverage": [True, False],
"build_tests": [True, False], "build_tests": [True, False],
"tracy": [True, False], "tracy": [True, False],
"build_tools": [True, False], "build_tools": [True, False],
@@ -27,6 +29,8 @@ class Bigfoot(ConanFile):
default_options = { default_options = {
"shared": False, "shared": False,
"fPIC": True, "fPIC": True,
"asan": False,
"coverage": False,
"build_tests": False, "build_tests": False,
"tracy": False, "tracy": False,
"build_tools": True, "build_tools": True,
@@ -43,10 +47,8 @@ class Bigfoot(ConanFile):
if self.settings.os == "Windows": if self.settings.os == "Windows":
del self.options.fPIC del self.options.fPIC
self.options['mimalloc'].override = True if(self.options.asan):
self.options['mimalloc'].shared = True self.options["mimalloc"].asan = True
if(self.settings.os == "Windows"):
self.options["mimalloc"].win_redirect = True
self.options['stduuid'].with_cxx20_span = True self.options['stduuid'].with_cxx20_span = True
self.options['flatbuffers'].header_only = True self.options['flatbuffers'].header_only = True
@@ -59,15 +61,17 @@ class Bigfoot(ConanFile):
if(self.options.build_benchmarks): if(self.options.build_benchmarks):
self.options["benchmark"].enable_exceptions = False self.options["benchmark"].enable_exceptions = False
self.options["benchmark"].enable_lto = True
def build_requirements(self):
self.tool_requires("bin2cpp/1.0.0@bigfootdev/main")
def requirements(self): def requirements(self):
self.requires("eastl/3.27.01@bigfootdev/main", transitive_headers=True) self.requires("eastl/3.27.01@bigfootdev/main", transitive_headers=True)
self.requires("unordered_dense/4.8.1@bigfootdev/main", transitive_headers=True) self.requires("unordered_dense/4.8.1@bigfootdev/main", transitive_headers=True)
self.requires("mimalloc/3.1.5@bigfootdev/main", transitive_headers=True) self.requires("mimalloc/3.2.8@bigfootdev/main", transitive_headers=True)
self.requires("stduuid/1.2.3@bigfootdev/main", transitive_headers=True) self.requires("stduuid/1.2.3@bigfootdev/main", transitive_headers=True)
self.requires("sqlite3/3.51.0@bigfootdev/main", transitive_headers=True) self.requires("sqlite3/3.51.2@bigfootdev/main", transitive_headers=True)
self.requires("cli11/2.6.0") self.requires("cli11/2.6.1@bigfootdev/main")
self.requires("rapidhash/3.0@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("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@bigfootdev/main", transitive_headers=True)
@@ -77,10 +81,10 @@ class Bigfoot(ConanFile):
self.requires("cpptrace/1.0.4", transitive_headers=True) self.requires("cpptrace/1.0.4", transitive_headers=True)
if(self.options.tracy): if(self.options.tracy):
self.requires("tracy/0.12.2", transitive_headers=True) self.requires("tracy/0.13.1", transitive_headers=True)
self.requires("glm/1.0.1", transitive_headers=True) self.requires("glm/1.0.1", transitive_headers=True)
self.requires("lodepng/cci.20250727@bigfootdev/main", transitive_headers=True) self.requires("lodepng/cci.20260210@bigfootdev/main", transitive_headers=True)
self.requires("imgui/1.92.5-docking", transitive_headers=True) self.requires("imgui/1.92.5-docking", transitive_headers=True)
if(self.options.vulkan): if(self.options.vulkan):
@@ -100,7 +104,7 @@ class Bigfoot(ConanFile):
self.requires("spirv-cross/1.4.313.0") self.requires("spirv-cross/1.4.313.0")
self.requires("shaderc/2025.3@bigfootdev/main") self.requires("shaderc/2025.3@bigfootdev/main")
self.requires("stb/cci.20240531", override=True) self.requires("stb/cci.20240531", override=True)
self.requires("assimp/6.0.2") self.requires("assimp/6.0.4@bigfootdev/main")
self.requires("meshoptimizer/1.0@bigfootdev/main") self.requires("meshoptimizer/1.0@bigfootdev/main")
self.requires("libsquish/1.15") self.requires("libsquish/1.15")
@@ -110,6 +114,8 @@ class Bigfoot(ConanFile):
def generate(self): def generate(self):
tc = CMakeToolchain(self) tc = CMakeToolchain(self)
tc.variables["ASAN"] = self.options.asan
tc.variables["COVERAGE"] = self.options.coverage
tc.variables["BUILD_TESTS"] = self.options.build_tests tc.variables["BUILD_TESTS"] = self.options.build_tests
tc.variables["TRACY"] = self.options.tracy tc.variables["TRACY"] = self.options.tracy
tc.variables["BUILD_TOOLS"] = self.options.build_tools tc.variables["BUILD_TOOLS"] = self.options.build_tools

View File

@@ -22,12 +22,9 @@ if "%~1"=="force" (
REM Add the remote REM Add the remote
conan remote add bigfootpackages https://conan.romainboullard.com/artifactory/api/conan/BigfootPackages conan remote add bigfootpackages https://conan.romainboullard.com/artifactory/api/conan/BigfootPackages
REM Install the conan configuration
conan config install https://git.romainboullard.com/BigfootDev/ConanProfiles.git
REM Install dependencies with the specified build option REM Install dependencies with the specified build option
conan install . --deployer=full_deploy --remote=bigfootpackages -pr:h=msvc -pr:b=msvc %build_option% -of build -s build_type=Release -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvc -pr:b=./ConanProfiles/msvc %build_option% -of build -s build_type=Release -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True
conan install . --deployer=full_deploy --remote=bigfootpackages -pr:h=msvcd -pr:b=msvcd %build_option% -of build -s build_type=RelWithDebInfo -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvcd -pr:b=./ConanProfiles/msvcd %build_option% -of build -s build_type=RelWithDebInfo -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True
conan install . --deployer=full_deploy --remote=bigfootpackages -pr:h=msvcd -pr:b=msvcd %build_option% -of build -s build_type=Debug -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvcd -pr:b=./ConanProfiles/msvcd %build_option% -of build -s build_type=Debug -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True
endlocal endlocal

View File

@@ -9,18 +9,15 @@ fi
# Add the remote # Add the remote
conan remote add bigfootpackages https://conan.romainboullard.com/artifactory/api/conan/BigfootPackages conan remote add bigfootpackages https://conan.romainboullard.com/artifactory/api/conan/BigfootPackages
# Install the conan configuration
conan config install https://git.romainboullard.com/BigfootDev/ConanProfiles.git
# Set the build option based on the argument # Set the build option based on the argument
if [ "$1" == "force" ]; then if [ "$1" == "force" ]; then
conan install . --deployer=full_deploy --remote=bigfootpackages -pr:h=clang -pr:b=clang --build='*' -of build -s build_type=Release -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build='*' -of build -s build_type=Release -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True
conan install . --deployer=full_deploy --remote=bigfootpackages -pr:h=clangd -pr:b=clangd --build='*' -of build -s build_type=RelWithDebInfo -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build='*' -of build -s build_type=RelWithDebInfo -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True
conan install . --deployer=full_deploy --remote=bigfootpackages -pr:h=clangd -pr:b=clangd --build='*' -of build -s build_type=Debug -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build='*' -of build -s build_type=Debug -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True
elif [ "$1" == "missing" ]; then elif [ "$1" == "missing" ]; then
conan install . --deployer=full_deploy --remote=bigfootpackages -pr:h=clang -pr:b=clang --build=missing -of build -s build_type=Release -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build=missing -of build -s build_type=Release -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True
conan install . --deployer=full_deploy --remote=bigfootpackages -pr:h=clangd -pr:b=clangd --build=missing -of build -s build_type=RelWithDebInfo -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build=missing -of build -s build_type=RelWithDebInfo -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True
conan install . --deployer=full_deploy --remote=bigfootpackages -pr:h=clangd -pr:b=clangd --build=missing -of build -s build_type=Debug -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build=missing -of build -s build_type=Debug -o bigfoot/*:build_tests=True -o bigfoot/*:tracy=True -o bigfoot/*:build_tools=True -o bigfoot/*:vulkan=True -o bigfoot/*:build_benchmarks=True
else else
echo "Invalid argument: $1" echo "Invalid argument: $1"
echo "Usage: $0 [force|missing]" echo "Usage: $0 [force|missing]"