From a668d4933146675aecdb427d338a76311b575e5c Mon Sep 17 00:00:00 2001 From: Jakub <80340234+Kubsy@users.noreply.github.com> Date: Wed, 31 May 2023 09:12:20 +0100 Subject: [PATCH] Implemented fog bulb (#1110) * Added fog bulbs * WIP raymarch * constant fog formula with simplex noise * Improved fog formula and handling * Raymarch less expansive; Added fog bulbs to sprites; Removed premultiplication of fog density by color at load time; * Avoid raymarch if fog > 1 * Sorting fog bulbs front to back; Performance improvements; * Added frustum culling for fog bulbs * Tryiing without raymarch * Refactored fog code; Added noise and wibble to fog; Fixed sprites; * Disabled wibble for fog * Removed noise * Fof bulbs like TR5 * Fixed Pascal Case in RenderView; Fixed formatting things; Fixed sprites; * Optimizations * Fixed sprites in fog bulbs * Fixed project paths * Fix compiler warning * Fixed repository * Fog bulbs for sky and horizon * Sky tessellation * Update Renderer11Draw.cpp --------- Co-authored-by: MontyTRC89 Co-authored-by: Raildex Co-authored-by: Lwmte <3331699+Lwmte@users.noreply.github.com> --- .gitignore | 49 +- TombEngine/Game/effects/explosion.cpp | 2 +- TombEngine/Game/effects/smoke.cpp | 6 +- TombEngine/Game/effects/weather.cpp | 8 +- .../ConstantBuffers/CameraMatrixBuffer.h | 72 +- .../Renderer/ConstantBuffers/ShaderFogBulb.h | 13 + TombEngine/Renderer/RenderView/RenderView.cpp | 188 +- TombEngine/Renderer/RenderView/RenderView.h | 12 +- TombEngine/Renderer/Renderer11.cpp | 2 +- TombEngine/Renderer/Renderer11.h | 9 +- .../Renderer/Renderer11Compatibility.cpp | 18 +- TombEngine/Renderer/Renderer11Draw.cpp | 120 +- TombEngine/Renderer/Renderer11Draw2D.cpp | 2 +- TombEngine/Renderer/Renderer11DrawEffect.cpp | 30 +- TombEngine/Renderer/Renderer11DrawMenu.cpp | 4 +- TombEngine/Renderer/Renderer11Enums.h | 10 +- TombEngine/Renderer/Renderer11Frame.cpp | 68 +- TombEngine/Renderer/Renderer11Helper.cpp | 16 +- TombEngine/Renderer/Renderer11Init.cpp | 77 + TombEngine/Renderer/RendererSprites.cpp | 10 +- .../Renderer/Structures/RendererFogBulb.h | 15 + TombEngine/Renderer/Structures/RendererRoom.h | 74 +- TombEngine/Shaders/Blending.hlsli | 381 +- TombEngine/Shaders/CameraMatrixBuffer.hlsli | 6 +- TombEngine/Shaders/DX11_InstancedSprites.fx | 222 +- TombEngine/Shaders/DX11_InstancedStatics.fx | 213 +- TombEngine/Shaders/DX11_Items.fx | 248 +- TombEngine/Shaders/DX11_Rooms.fx | 394 +- TombEngine/Shaders/DX11_Sky.fx | 97 +- TombEngine/Shaders/DX11_Sprites.fx | 172 +- TombEngine/Shaders/DX11_Statics.fx | 191 +- TombEngine/Shaders/Math.hlsli | 35 + TombEngine/Shaders/ShaderLight.hlsli | 247 +- .../flatbuffers/ten_itemdata_generated.h | 7958 +++---- .../flatbuffers/ten_savegame_generated.h | 19860 ++++++++-------- TombEngine/TombEngine - Backup.vcxproj.user | 41 + TombEngine/TombEngine.vcxproj | 2 + TombEngine/TombEngine.vcxproj.user | 46 +- 38 files changed, 15684 insertions(+), 15234 deletions(-) create mode 100644 TombEngine/Renderer/ConstantBuffers/ShaderFogBulb.h create mode 100644 TombEngine/Renderer/Structures/RendererFogBulb.h create mode 100644 TombEngine/TombEngine - Backup.vcxproj.user diff --git a/.gitignore b/.gitignore index 3c9d478c9..ab10332eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,25 @@ -enc_temp_folder/ -Build/ -TombEngine/x64/ -TombEngine/Debug/ -TombEngine/Release/ -packages/ -.vs/ -.vsconfig -*.dmp -*.id0 -*.id1 -*.id2 -*.id3 -*.obj -*.zip -*.db -*.opendb -.exp -.pdb -.ilk -*.wav -*.trc -*.str -*.ten +enc_temp_folder/ +Build/ +TombEngine/x64/ +TombEngine/Debug/ +TombEngine/Release/ +packages/ +.vs/ +.vsconfig +*.dmp +*.id0 +*.id1 +*.id2 +*.id3 +*.obj +*.zip +*.db +*.opendb +.exp +.pdb +.ilk +*.wav +*.trc +*.str +*.ten +Logs/ diff --git a/TombEngine/Game/effects/explosion.cpp b/TombEngine/Game/effects/explosion.cpp index a82bbd57b..58e552e79 100644 --- a/TombEngine/Game/effects/explosion.cpp +++ b/TombEngine/Game/effects/explosion.cpp @@ -63,7 +63,7 @@ namespace TEN::Effects::Explosion int numSprites = -Objects[ID_EXPLOSION_SPRITES].nmeshes - 1; float normalizedAge = e.age / e.life; e.sprite = Lerp(0.0f, numSprites, normalizedAge); - e.tint = Vector4::Lerp(Vector4(2, 2, 2, 1), Vector4(0, 0, 0, 0), normalizedAge); + e.tint = Vector4::Lerp(Vector4(2, 2, 2, 1), Vector4::Zero, normalizedAge); } } diff --git a/TombEngine/Game/effects/smoke.cpp b/TombEngine/Game/effects/smoke.cpp index 7cfd8f894..d9f6727a2 100644 --- a/TombEngine/Game/effects/smoke.cpp +++ b/TombEngine/Game/effects/smoke.cpp @@ -131,7 +131,7 @@ namespace TEN::Effects::Smoke s.gravity = -.1f; s.affectedByWind = TestEnvironment(ENV_FLAG_WIND, pos.x, pos.y, pos.z, roomNumber); s.sourceColor = Vector4(0.4f, 0.4f, 0.4f, 1); - s.destinationColor = Vector4(0, 0, 0, 0); + s.destinationColor = Vector4::Zero; if (initial) { @@ -207,7 +207,7 @@ namespace TEN::Effects::Smoke s.velocity = Vector3(xVel, Random::GenerateFloat(-1, 4), zVel); s.sourceColor = Vector4(1, 1, 1, 1); - s.destinationColor = Vector4(0, 0, 0, 0); + s.destinationColor = Vector4::Zero; s.sourceSize = Random::GenerateFloat(8,24); s.active = true; s.affectedByWind = true; @@ -225,7 +225,7 @@ namespace TEN::Effects::Smoke s = {}; s.position = Vector3(x, y, z) + Vector3(Random::GenerateFloat(8.0f, 16.0f), Random::GenerateFloat(8.0f, 16.0f), Random::GenerateFloat(8.0f, 16.0f)); s.sourceColor = Vector4(0.8f, 0.8f, 1, 1); - s.destinationColor = Vector4(0, 0, 0, 0); + s.destinationColor = Vector4::Zero; s.sourceSize = Random::GenerateFloat(32.0f, 64.0f); s.active = true; s.velocity = Random::GenerateDirection() * Random::GenerateFloat(1.0f, 3.0f); diff --git a/TombEngine/Game/effects/weather.cpp b/TombEngine/Game/effects/weather.cpp index 81c99791c..9495abe70 100644 --- a/TombEngine/Game/effects/weather.cpp +++ b/TombEngine/Game/effects/weather.cpp @@ -39,8 +39,6 @@ namespace TEN::Effects::Environment constexpr auto DUST_LIFE = 40; constexpr auto DUST_SPAWN_RADIUS = (10 * 1024); - constexpr auto SKY_POSITION_LIMIT = 9728; - EnvironmentController Weather; float WeatherParticle::Transparency() const @@ -114,13 +112,13 @@ namespace TEN::Effects::Environment continue; SkyCurrentPosition[i] += level->GetSkyLayerSpeed(i); - if (SkyCurrentPosition[i] <= SKY_POSITION_LIMIT) + if (SkyCurrentPosition[i] <= SKY_SIZE) { if (SkyCurrentPosition[i] < 0) - SkyCurrentPosition[i] += SKY_POSITION_LIMIT; + SkyCurrentPosition[i] += SKY_SIZE; } else - SkyCurrentPosition[i] -= SKY_POSITION_LIMIT; + SkyCurrentPosition[i] -= SKY_SIZE; } } diff --git a/TombEngine/Renderer/ConstantBuffers/CameraMatrixBuffer.h b/TombEngine/Renderer/ConstantBuffers/CameraMatrixBuffer.h index 63257ddc4..7be83a616 100644 --- a/TombEngine/Renderer/ConstantBuffers/CameraMatrixBuffer.h +++ b/TombEngine/Renderer/ConstantBuffers/CameraMatrixBuffer.h @@ -1,41 +1,41 @@ #pragma once -#include -namespace TEN +#include "SimpleMath.h" +#include "ShaderLight.h" +#include "Renderer/ConstantBuffers/ShaderFogBulb.h" + +using DirectX::SimpleMath::Matrix; +using DirectX::SimpleMath::Vector3; +using DirectX::SimpleMath::Vector2; + +struct alignas(16) CCameraMatrixBuffer { - namespace Renderer - { - using DirectX::SimpleMath::Matrix; - using DirectX::SimpleMath::Vector3; - using DirectX::SimpleMath::Vector2; + alignas(16) Matrix ViewProjection; + //-- + alignas(16) Matrix View; + //-- + alignas(16) Matrix Projection; + //-- + alignas(16) Matrix InverseProjection; + //-- + alignas(16) Vector4 CamPositionWS; + //-- + alignas(16) Vector4 CamDirectionWS; + //-- + alignas(16) Vector2 ViewSize; + alignas(4) Vector2 InvViewSize; + //-- + alignas(16) unsigned int Frame; + alignas(4) unsigned int RoomNumber; + alignas(4) unsigned int CameraUnderwater; + //-- + alignas(16) Vector4 FogColor; + alignas(4) int FogMinDistance; + alignas(4) int FogMaxDistance; - struct alignas(16) CCameraMatrixBuffer - { - alignas(16) Matrix ViewProjection; - //-- - alignas(16) Matrix View; - //-- - alignas(16) Matrix Projection; - //-- - alignas(16) Matrix InverseProjection; - //-- - alignas(16) Vector4 CamPositionWS; - //-- - alignas(16) Vector4 CamDirectionWS; - //-- - alignas(16) Vector2 ViewSize; - alignas(4) Vector2 InvViewSize; - //-- - alignas(16) unsigned int Frame; - alignas(4) unsigned int RoomNumber; - alignas(4) unsigned int CameraUnderwater; - //-- - alignas(16) Vector4 FogColor; - alignas(4) int FogMinDistance; - alignas(4) int FogMaxDistance; + alignas(4) float NearPlane; + alignas(4) float FarPlane; - alignas(4) float NearPlane; - alignas(4) float FarPlane; - }; - } -} + alignas(4) int NumFogBulbs; + ShaderFogBulb FogBulbs[32]; +}; diff --git a/TombEngine/Renderer/ConstantBuffers/ShaderFogBulb.h b/TombEngine/Renderer/ConstantBuffers/ShaderFogBulb.h new file mode 100644 index 000000000..0018ba2b8 --- /dev/null +++ b/TombEngine/Renderer/ConstantBuffers/ShaderFogBulb.h @@ -0,0 +1,13 @@ +#pragma once +#include + +struct alignas(16) ShaderFogBulb +{ + Vector3 Position; + float Density; + Vector3 Color; + float SquaredRadius; + Vector3 FogBulbToCameraVector; + float SquaredCameraToFogBulbDistance; + Vector4 Padding2; +}; \ No newline at end of file diff --git a/TombEngine/Renderer/RenderView/RenderView.cpp b/TombEngine/Renderer/RenderView/RenderView.cpp index f48ead9b8..10b5c4a43 100644 --- a/TombEngine/Renderer/RenderView/RenderView.cpp +++ b/TombEngine/Renderer/RenderView/RenderView.cpp @@ -1,94 +1,94 @@ -#include "framework.h" -#include "RenderView.h" - -namespace TEN::Renderer -{ - RenderView::RenderView(CAMERA_INFO* cam, float roll, float fov, float nearPlane, float farPlane, int w, int h) : camera(cam, roll, fov, nearPlane, farPlane, w, h) - { - viewport = {}; - viewport.TopLeftX = 0; - viewport.TopLeftY = 0; - viewport.Width = w; - viewport.Height = h; - viewport.MinDepth = 0; - viewport.MaxDepth = 1; - } - - RenderView::RenderView(const Vector3& pos, const Vector3& dir, const Vector3& up, int w, int h, int room, float nearPlane, float farPlane, float fov) : camera(pos, dir, up, room, w, h, fov, nearPlane, farPlane) - { - - viewport = {}; - viewport.TopLeftX = 0; - viewport.TopLeftY = 0; - viewport.Width = w; - viewport.Height = h; - viewport.MinDepth = 0; - viewport.MaxDepth = 1; - } - - void RenderView::fillConstantBuffer(CCameraMatrixBuffer& bufferToFill) - { - bufferToFill.Projection = camera.Projection; - bufferToFill.View = camera.View; - bufferToFill.ViewProjection = camera.ViewProjection; - bufferToFill.InverseProjection = camera.Projection.Invert(); - bufferToFill.CamDirectionWS = Vector4(camera.WorldDirection); - bufferToFill.CamPositionWS = Vector4(camera.WorldPosition); - bufferToFill.ViewSize = camera.ViewSize; - bufferToFill.InvViewSize = camera.InvViewSize; - bufferToFill.RoomNumber = camera.RoomNumber; - bufferToFill.NearPlane = camera.NearPlane; - bufferToFill.FarPlane = camera.FarPlane; - } - - void RenderView::clear() - { - roomsToDraw.clear(); - lightsToDraw.clear(); - spritesToDraw.clear(); - StaticsToDraw.clear(); - } - - RenderViewCamera::RenderViewCamera(CAMERA_INFO* cam, float roll, float fov, float n, float f, int w, int h) - { - RoomNumber = cam->pos.RoomNumber; - WorldPosition = Vector3(cam->pos.x, cam->pos.y, cam->pos.z); - - Vector3 target = Vector3(cam->target.x, cam->target.y, cam->target.z); - if ((target - WorldPosition) == Vector3::Zero) - target.y -= 10; - - WorldDirection = target - WorldPosition; - WorldDirection.Normalize(); - - Vector3 up = -Vector3::UnitY; - Matrix upRotation = Matrix::CreateFromYawPitchRoll(0.0f, 0.0f, roll); - up = Vector3::Transform(up, upRotation); - up.Normalize(); - - View = Matrix::CreateLookAt(WorldPosition, target, up); - Projection = Matrix::CreatePerspectiveFieldOfView(fov, w / (float)h, n, f); - ViewProjection = View * Projection; - ViewSize = { (float)w, (float)h }; - InvViewSize = { 1.0f / w, 1.0f / h }; - Frustum.Update(View, Projection); - NearPlane = n; - FarPlane = f; - } - - RenderViewCamera::RenderViewCamera(const Vector3& pos, const Vector3& dir, const Vector3& up, int room, int width, int height, float fov, float n, float f) - { - RoomNumber = room; - WorldPosition = pos; - WorldDirection = dir; - View = Matrix::CreateLookAt(pos, pos + dir * 10240, up); - float aspect = (float)width / (float)height; - Projection = Matrix::CreatePerspectiveFieldOfView(fov, aspect, n, f); - ViewProjection = View * Projection; - ViewSize = { (float)width, (float)height }; - InvViewSize = { 1.0f / width, 1.0f / height }; - Frustum.Update(View, Projection); - NearPlane = n; - FarPlane = f; - } -} +#include "framework.h" +#include "RenderView.h" + +namespace TEN::Renderer +{ + RenderView::RenderView(CAMERA_INFO* cam, float roll, float fov, float nearPlane, float farPlane, int w, int h) : Camera(cam, roll, fov, nearPlane, farPlane, w, h) + { + Viewport = {}; + Viewport.TopLeftX = 0; + Viewport.TopLeftY = 0; + Viewport.Width = w; + Viewport.Height = h; + Viewport.MinDepth = 0; + Viewport.MaxDepth = 1; + } + + RenderView::RenderView(const Vector3& pos, const Vector3& dir, const Vector3& up, int w, int h, int room, float nearPlane, float farPlane, float fov) : Camera(pos, dir, up, room, w, h, fov, nearPlane, farPlane) + { + + Viewport = {}; + Viewport.TopLeftX = 0; + Viewport.TopLeftY = 0; + Viewport.Width = w; + Viewport.Height = h; + Viewport.MinDepth = 0; + Viewport.MaxDepth = 1; + } + + void RenderView::fillConstantBuffer(CCameraMatrixBuffer& bufferToFill) + { + bufferToFill.Projection = Camera.Projection; + bufferToFill.View = Camera.View; + bufferToFill.ViewProjection = Camera.ViewProjection; + bufferToFill.InverseProjection = Camera.Projection.Invert(); + bufferToFill.CamDirectionWS = Vector4(Camera.WorldDirection); + bufferToFill.CamPositionWS = Vector4(Camera.WorldPosition); + bufferToFill.ViewSize = Camera.ViewSize; + bufferToFill.InvViewSize = Camera.InvViewSize; + bufferToFill.RoomNumber = Camera.RoomNumber; + bufferToFill.NearPlane = Camera.NearPlane; + bufferToFill.FarPlane = Camera.FarPlane; + } + + void RenderView::clear() + { + RoomsToDraw.clear(); + LightsToDraw.clear(); + SpritesToDraw.clear(); + StaticsToDraw.clear(); + } + + RenderViewCamera::RenderViewCamera(CAMERA_INFO* cam, float roll, float fov, float n, float f, int w, int h) + { + RoomNumber = cam->pos.RoomNumber; + WorldPosition = Vector3(cam->pos.x, cam->pos.y, cam->pos.z); + + Vector3 target = Vector3(cam->target.x, cam->target.y, cam->target.z); + if ((target - WorldPosition) == Vector3::Zero) + target.y -= 10; + + WorldDirection = target - WorldPosition; + WorldDirection.Normalize(); + + Vector3 up = -Vector3::UnitY; + Matrix upRotation = Matrix::CreateFromYawPitchRoll(0.0f, 0.0f, roll); + up = Vector3::Transform(up, upRotation); + up.Normalize(); + + View = Matrix::CreateLookAt(WorldPosition, target, up); + Projection = Matrix::CreatePerspectiveFieldOfView(fov, w / (float)h, n, f); + ViewProjection = View * Projection; + ViewSize = { (float)w, (float)h }; + InvViewSize = { 1.0f / w, 1.0f / h }; + Frustum.Update(View, Projection); + NearPlane = n; + FarPlane = f; + } + + RenderViewCamera::RenderViewCamera(const Vector3& pos, const Vector3& dir, const Vector3& up, int room, int width, int height, float fov, float n, float f) + { + RoomNumber = room; + WorldPosition = pos; + WorldDirection = dir; + View = Matrix::CreateLookAt(pos, pos + dir * 10240, up); + float aspect = (float)width / (float)height; + Projection = Matrix::CreatePerspectiveFieldOfView(fov, aspect, n, f); + ViewProjection = View * Projection; + ViewSize = { (float)width, (float)height }; + InvViewSize = { 1.0f / width, 1.0f / height }; + Frustum.Update(View, Projection); + NearPlane = n; + FarPlane = f; + } +} diff --git a/TombEngine/Renderer/RenderView/RenderView.h b/TombEngine/Renderer/RenderView/RenderView.h index f812d8677..ddfd3a00d 100644 --- a/TombEngine/Renderer/RenderView/RenderView.h +++ b/TombEngine/Renderer/RenderView/RenderView.h @@ -8,6 +8,7 @@ #include "Specific/memory/LinearArrayBuffer.h" #include "RendererSprites.h" #include "RendererTransparentFace.h" +#include "Renderer/Structures/RendererFogBulb.h" namespace TEN::Renderer { @@ -47,11 +48,12 @@ namespace TEN::Renderer struct RenderView { - RenderViewCamera camera; - D3D11_VIEWPORT viewport; - std::vector roomsToDraw; - std::vector lightsToDraw; - std::vector spritesToDraw; + RenderViewCamera Camera; + D3D11_VIEWPORT Viewport; + std::vector RoomsToDraw; + std::vector LightsToDraw; + std::vector FogBulbsToDraw; + std::vector SpritesToDraw; std::vector StaticsToDraw; std::map> SortedStatics; diff --git a/TombEngine/Renderer/Renderer11.cpp b/TombEngine/Renderer/Renderer11.cpp index f1ec9dbc5..9e4df6af3 100644 --- a/TombEngine/Renderer/Renderer11.cpp +++ b/TombEngine/Renderer/Renderer11.cpp @@ -278,7 +278,7 @@ namespace TEN::Renderer m_context->PSSetShaderResources((UINT)registerType, 1, texture->ShaderResourceView.GetAddressOf()); ID3D11SamplerState* samplerState = nullptr; - switch (samplerType) + switch (samplerType) { case SAMPLER_ANISOTROPIC_CLAMP: samplerState = m_states->AnisotropicClamp(); diff --git a/TombEngine/Renderer/Renderer11.h b/TombEngine/Renderer/Renderer11.h index bd3b5074a..227509df5 100644 --- a/TombEngine/Renderer/Renderer11.h +++ b/TombEngine/Renderer/Renderer11.h @@ -5,6 +5,7 @@ #include #include +#include "Math/Math.h" #include "Game/control/box.h" #include "Game/items.h" #include "Game/animation.h" @@ -16,6 +17,8 @@ #include "Specific/level.h" #include "Specific/fast_vector.h" #include "Renderer/Renderer11Enums.h" +#include "Renderer/Structures/RendererLight.h" +#include "RenderView/RenderView.h" #include "Renderer/ConstantBuffers/StaticBuffer.h" #include "Renderer/ConstantBuffers/LightBuffer.h" #include "Renderer/ConstantBuffers/MiscBuffer.h" @@ -32,7 +35,6 @@ #include "Frustum.h" #include "RendererBucket.h" #include "Renderer/RenderTargetCube/RenderTargetCube.h" -#include "RenderView/RenderView.h" #include "Specific/level.h" #include "ConstantBuffer/ConstantBuffer.h" #include "RenderTargetCubeArray/RenderTargetCubeArray.h" @@ -42,7 +44,6 @@ #include "Renderer/ConstantBuffers/InstancedSpriteBuffer.h" #include "Renderer/ConstantBuffers/PostProcessBuffer.h" #include "Renderer/Structures/RendererBone.h" -#include "Renderer/Structures/RendererLight.h" #include "Renderer/Structures/RendererStringToDraw.h" #include "Renderer/Structures/RendererRoom.h" #include "Renderer/VertexBuffer/VertexBuffer.h" @@ -407,6 +408,9 @@ namespace TEN::Renderer fast_vector m_transparentFacesIndices; std::vector m_transparentFaces; + VertexBuffer m_skyVertexBuffer; + IndexBuffer m_skyIndexBuffer; + std::vector m_rooms; bool m_invalidateCache; @@ -517,6 +521,7 @@ namespace TEN::Renderer void InitializeCommonTextures(); void InitializeGameBars(); void InitializeMenuBars(int y); + void InitializeSky(); void DrawAllStrings(); void DrawLaserBarriers(RenderView& view); diff --git a/TombEngine/Renderer/Renderer11Compatibility.cpp b/TombEngine/Renderer/Renderer11Compatibility.cpp index a78ea8e11..9d855649e 100644 --- a/TombEngine/Renderer/Renderer11Compatibility.cpp +++ b/TombEngine/Renderer/Renderer11Compatibility.cpp @@ -406,7 +406,7 @@ namespace TEN::Renderer light->Color = Vector3(oldLight->r, oldLight->g, oldLight->b) * oldLight->intensity; light->Intensity = oldLight->intensity; light->Direction = Vector3(oldLight->dx, oldLight->dy, oldLight->dz); - light->In = oldLight->length; + light->In = oldLight->length; light->Out = oldLight->cutoff; light->InRange = oldLight->in; light->OutRange = oldLight->out; @@ -414,6 +414,16 @@ namespace TEN::Renderer light->Type = LIGHT_TYPE_SPOT; light->Luma = Luma(light->Color); } + else if (oldLight->type == LIGHT_TYPE_FOG_BULB) + { + light->Position = Vector3(oldLight->x, oldLight->y, oldLight->z); + light->Color = Vector3(oldLight->r, oldLight->g, oldLight->b); + light->Intensity = oldLight->intensity; + light->In = oldLight->in; + light->Out = oldLight->out; + light->Type = LIGHT_TYPE_FOG_BULB; + light->Luma = Luma(light->Color); + } // Monty's temp variables for sorting light->LocalIntensity = 0; @@ -448,7 +458,7 @@ namespace TEN::Renderer ); TENLog("Preparing object data...", LogLevel::Info); - + bool isSkinPresent = false; totalVertices = 0; @@ -486,9 +496,9 @@ namespace TEN::Renderer moveable.Id = MoveablesIds[i]; moveable.DoNotDraw = (obj->drawRoutine == nullptr); moveable.ShadowType = obj->shadowType; - + for (int j = 0; j < obj->nmeshes; j++) - { + { // HACK: mesh pointer 0 is the placeholder for Lara's body parts and is right hand with pistols // We need to override the bone index because the engine will take mesh 0 while drawing pistols anim, // and vertices have bone index 0 and not 10. diff --git a/TombEngine/Renderer/Renderer11Draw.cpp b/TombEngine/Renderer/Renderer11Draw.cpp index 09e6db8ce..26ea95a2a 100644 --- a/TombEngine/Renderer/Renderer11Draw.cpp +++ b/TombEngine/Renderer/Renderer11Draw.cpp @@ -48,12 +48,12 @@ namespace TEN::Renderer static const std::array sphereMeshes = { LM_HIPS, LM_TORSO, LM_LFOOT, LM_RFOOT }; static const std::array sphereScaleFactors = { 6.0f, 3.2f, 2.8f, 2.8f }; - for (auto& room : renderView.roomsToDraw) + for (auto& room : renderView.RoomsToDraw) { for (auto& i : room->ItemsToDraw) { auto& nativeItem = g_Level.Items[i->ItemNumber]; - + // Skip everything that isn't alive or a vehicle. if (Objects[nativeItem.ObjectNumber].shadowType == ShadowMode::None) continue; @@ -1015,8 +1015,8 @@ namespace TEN::Renderer void Renderer11::DrawSortedFaces(RenderView& view) { std::for_each(std::execution::par_unseq, - view.roomsToDraw.begin(), - view.roomsToDraw.end(), + view.RoomsToDraw.begin(), + view.RoomsToDraw.end(), [](RendererRoom* room) { std::sort( @@ -1030,9 +1030,9 @@ namespace TEN::Renderer } ); - for (int r = (int)view.roomsToDraw.size() - 1; r >= 0; r--) + for (int r = (int)view.RoomsToDraw.size() - 1; r >= 0; r--) { - RendererRoom& room = *view.roomsToDraw[r]; + RendererRoom& room = *view.RoomsToDraw[r]; m_transparentFacesVertices.clear(); m_transparentFacesIndices.clear(); @@ -1271,7 +1271,7 @@ namespace TEN::Renderer m_stRoom.Caustics = (int)(g_Configuration.EnableCaustics && (nativeRoom->flags & ENV_FLAG_WATER)); m_stRoom.AmbientColor = info->room->AmbientLight; m_stRoom.Water = (nativeRoom->flags & ENV_FLAG_WATER) != 0 ? 1 : 0; - BindRoomLights(view.lightsToDraw); + BindRoomLights(view.LightsToDraw); m_cbRoom.updateData(m_stRoom, m_context.Get()); BindConstantBufferVS(CB_ROOM, m_cbRoom.get()); BindConstantBufferPS(CB_ROOM, m_cbRoom.get()); @@ -1399,7 +1399,7 @@ namespace TEN::Renderer { ResetDebugVariables(); m_Locked = false; - + using ns = std::chrono::nanoseconds; using get_time = std::chrono::steady_clock; @@ -1432,20 +1432,17 @@ namespace TEN::Renderer // Bind and clear render target m_context->ClearRenderTargetView(m_renderTarget.RenderTargetView.Get(), Colors::Black); - m_context->ClearDepthStencilView(m_renderTarget.DepthStencilView.Get(), D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, - 1.0f, 0); + m_context->ClearDepthStencilView(m_renderTarget.DepthStencilView.Get(), D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0); m_context->ClearRenderTargetView(m_depthMap.RenderTargetView.Get(), Colors::White); - m_context->ClearDepthStencilView(m_depthMap.DepthStencilView.Get(), D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, - 1.0f, 0); + m_context->ClearDepthStencilView(m_depthMap.DepthStencilView.Get(), D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0); ID3D11RenderTargetView* m_pRenderViews[2]; m_pRenderViews[0] = m_renderTarget.RenderTargetView.Get(); m_pRenderViews[1] = m_depthMap.RenderTargetView.Get(); - m_context->OMSetRenderTargets(2, &m_pRenderViews[0], - m_renderTarget.DepthStencilView.Get()); + m_context->OMSetRenderTargets(2, &m_pRenderViews[0], m_renderTarget.DepthStencilView.Get()); - m_context->RSSetViewports(1, &view.viewport); + m_context->RSSetViewports(1, &view.Viewport); ResetScissor(); // The camera constant buffer contains matrices, camera position, fog values and other @@ -1465,15 +1462,28 @@ namespace TEN::Renderer else { cameraConstantBuffer.FogMaxDistance = 0; + cameraConstantBuffer.FogColor = Vector4::Zero; } + cameraConstantBuffer.NumFogBulbs = (int)view.FogBulbsToDraw.size(); + + for (int i = 0; i < view.FogBulbsToDraw.size(); i++) + { + cameraConstantBuffer.FogBulbs[i].Position = view.FogBulbsToDraw[i].Position; + cameraConstantBuffer.FogBulbs[i].Density = 1.0f / std::max(14.0f, ((90.0F - view.FogBulbsToDraw[i].Density) * 0.8F + 0.2F)); + cameraConstantBuffer.FogBulbs[i].SquaredRadius = SQUARE(view.FogBulbsToDraw[i].Radius); + cameraConstantBuffer.FogBulbs[i].Color = view.FogBulbsToDraw[i].Color; + cameraConstantBuffer.FogBulbs[i].SquaredCameraToFogBulbDistance = SQUARE(view.FogBulbsToDraw[i].Distance); + cameraConstantBuffer.FogBulbs[i].FogBulbToCameraVector = view.FogBulbsToDraw[i].FogBulbToCameraVector; + } + m_cbCameraMatrices.updateData(cameraConstantBuffer, m_context.Get()); BindConstantBufferVS(CB_CAMERA, m_cbCameraMatrices.get()); BindConstantBufferPS(CB_CAMERA, m_cbCameraMatrices.get()); - + // Draw the horizon and the sky DrawHorizonAndSky(view, m_renderTarget.DepthStencilView.Get()); - + // Draw opaque and alpha test faces DrawRooms(view, false); DrawItems(view, false); @@ -1569,7 +1579,7 @@ namespace TEN::Renderer m_context->ClearDepthStencilView(depthTarget, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0); m_context->OMSetRenderTargets(1, &target, depthTarget); - m_context->RSSetViewports(1, &view.viewport); + m_context->RSSetViewports(1, &view.Viewport); ResetScissor(); // Opaque geometry @@ -1605,7 +1615,7 @@ namespace TEN::Renderer m_context->VSSetShader(m_vsItems.Get(), nullptr, 0); m_context->PSSetShader(m_psItems.Get(), nullptr, 0); - for (auto room : view.roomsToDraw) + for (auto room : view.RoomsToDraw) { for (auto itemToDraw : room->ItemsToDraw) { @@ -1640,7 +1650,7 @@ namespace TEN::Renderer if (g_Configuration.ShadowType != ShadowMode::None) { - for (auto room : renderView.roomsToDraw) + for (auto room : renderView.RoomsToDraw) for (auto itemToDraw : room->ItemsToDraw) RenderShadowMap(itemToDraw, renderView); } @@ -1898,7 +1908,7 @@ namespace TEN::Renderer { Vector3 cameraPosition = Vector3(Camera.pos.x, Camera.pos.y, Camera.pos.z); - for (auto room : view.roomsToDraw) + for (auto room : view.RoomsToDraw) { for (auto& msh : view.StaticsToDraw) { @@ -2000,10 +2010,10 @@ namespace TEN::Renderer } m_numRoomsTransparentPolygons = 0; - for (int i = (int)view.roomsToDraw.size() - 1; i >= 0; i--) + for (int i = (int)view.RoomsToDraw.size() - 1; i >= 0; i--) { int index = i; - RendererRoom* room = view.roomsToDraw[index]; + RendererRoom* room = view.RoomsToDraw[index]; m_cbShadowMap.updateData(m_stShadowMap, m_context.Get()); BindConstantBufferPS(CB_SHADOW_LIGHT, m_cbShadowMap.get()); @@ -2017,7 +2027,7 @@ namespace TEN::Renderer m_stRoom.Caustics = (int)(g_Configuration.EnableCaustics && (nativeRoom->flags & ENV_FLAG_WATER)); m_stRoom.AmbientColor = room->AmbientLight; m_stRoom.Water = (nativeRoom->flags & ENV_FLAG_WATER) != 0 ? 1 : 0; - BindRoomLights(view.lightsToDraw); + BindRoomLights(view.LightsToDraw); m_cbRoom.updateData(m_stRoom, m_context.Get()); SetScissor(room->ClipBounds); @@ -2152,9 +2162,9 @@ namespace TEN::Renderer ScriptInterfaceLevel* level = g_GameFlow->GetLevel(CurrentLevel); bool anyOutsideRooms = false; - for (int k = 0; k < renderView.roomsToDraw.size(); k++) + for (int k = 0; k < renderView.RoomsToDraw.size(); k++) { - ROOM_INFO* nativeRoom = &g_Level.Rooms[renderView.roomsToDraw[k]->RoomNumber]; + ROOM_INFO* nativeRoom = &g_Level.Rooms[renderView.RoomsToDraw[k]->RoomNumber]; if (nativeRoom->flags & ENV_FLAG_OUTSIDE) { anyOutsideRooms = true; @@ -2174,66 +2184,26 @@ namespace TEN::Renderer // Draw the sky Matrix rotation = Matrix::CreateRotationX(PI); - RendererVertex vertices[4]; - float size = 9728.0f; - - vertices[0].Position.x = -size / 2.0f; - vertices[0].Position.y = 0.0f; - vertices[0].Position.z = size / 2.0f; - vertices[0].UV.x = 0.0f; - vertices[0].UV.y = 0.0f; - vertices[0].Color.x = 1.0f; - vertices[0].Color.y = 1.0f; - vertices[0].Color.z = 1.0f; - vertices[0].Color.w = 1.0f; - - vertices[1].Position.x = size / 2.0f; - vertices[1].Position.y = 0.0f; - vertices[1].Position.z = size / 2.0f; - vertices[1].UV.x = 1.0f; - vertices[1].UV.y = 0.0f; - vertices[1].Color.x = 1.0f; - vertices[1].Color.y = 1.0f; - vertices[1].Color.z = 1.0f; - vertices[1].Color.w = 1.0f; - - vertices[2].Position.x = size / 2.0f; - vertices[2].Position.y = 0.0f; - vertices[2].Position.z = -size / 2.0f; - vertices[2].UV.x = 1.0f; - vertices[2].UV.y = 1.0f; - vertices[2].Color.x = 1.0f; - vertices[2].Color.y = 1.0f; - vertices[2].Color.z = 1.0f; - vertices[2].Color.w = 1.0f; - - vertices[3].Position.x = -size / 2.0f; - vertices[3].Position.y = 0.0f; - vertices[3].Position.z = -size / 2.0f; - vertices[3].UV.x = 0.0f; - vertices[3].UV.y = 1.0f; - vertices[3].Color.x = 1.0f; - vertices[3].Color.y = 1.0f; - vertices[3].Color.z = 1.0f; - vertices[3].Color.w = 1.0f; - m_context->VSSetShader(m_vsSky.Get(), nullptr, 0); m_context->PSSetShader(m_psSky.Get(), nullptr, 0); BindTexture(TEXTURE_COLOR_MAP, &m_skyTexture, SAMPLER_ANISOTROPIC_CLAMP); + m_context->IASetVertexBuffers(0, 1, m_skyVertexBuffer.Buffer.GetAddressOf(), &stride, &offset); m_context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); m_context->IASetInputLayout(m_inputLayout.Get()); + m_context->IASetIndexBuffer(m_skyIndexBuffer.Buffer.Get(), DXGI_FORMAT_R32_UINT, 0); SetBlendMode(BLENDMODE_ADDITIVE); for (int s = 0; s < 2; s++) + { for (int i = 0; i < 2; i++) { auto weather = TEN::Effects::Environment::Weather; - Matrix translation = Matrix::CreateTranslation(Camera.pos.x + weather.SkyPosition(s) - i * 9728.0f, - Camera.pos.y - 1536.0f, Camera.pos.z); + Matrix translation = Matrix::CreateTranslation(Camera.pos.x + weather.SkyPosition(s) - i * SKY_SIZE, + Camera.pos.y - 1536.0f, Camera.pos.z); Matrix world = rotation * translation; m_stStatic.World = (rotation * translation); @@ -2245,10 +2215,10 @@ namespace TEN::Renderer BindConstantBufferVS(CB_STATIC, m_cbStatic.get()); BindConstantBufferPS(CB_STATIC, m_cbStatic.get()); - m_primitiveBatch->Begin(); - m_primitiveBatch->DrawQuad(vertices[0], vertices[1], vertices[2], vertices[3]); - m_primitiveBatch->End(); + DrawIndexedTriangles(SKY_INDICES_COUNT, 0, 0); } + } + m_context->ClearDepthStencilView(depthTarget, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1, 0); // Draw horizon @@ -2260,7 +2230,7 @@ namespace TEN::Renderer m_context->IASetIndexBuffer(m_moveablesIndexBuffer.Buffer.Get(), DXGI_FORMAT_R32_UINT, 0); RendererObject& moveableObj = *m_moveableObjects[ID_HORIZON]; - + m_stStatic.World = Matrix::CreateTranslation(Camera.pos.x, Camera.pos.y, Camera.pos.z); m_stStatic.Color = Vector4::One; m_stStatic.AmbientLight = Vector4::One; diff --git a/TombEngine/Renderer/Renderer11Draw2D.cpp b/TombEngine/Renderer/Renderer11Draw2D.cpp index 2e1ab994d..74986471c 100644 --- a/TombEngine/Renderer/Renderer11Draw2D.cpp +++ b/TombEngine/Renderer/Renderer11Draw2D.cpp @@ -310,7 +310,7 @@ namespace TEN::Renderer m_context->ClearRenderTargetView(target, Colors::Black); m_context->ClearDepthStencilView(depthTarget, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0); m_context->OMSetRenderTargets(1, &target, depthTarget); - m_context->RSSetViewports(1, &view.viewport); + m_context->RSSetViewports(1, &view.Viewport); ResetScissor(); RendererVertex vertices[4]; diff --git a/TombEngine/Renderer/Renderer11DrawEffect.cpp b/TombEngine/Renderer/Renderer11DrawEffect.cpp index b03c762b9..e292dc5cc 100644 --- a/TombEngine/Renderer/Renderer11DrawEffect.cpp +++ b/TombEngine/Renderer/Renderer11DrawEffect.cpp @@ -965,7 +965,7 @@ namespace TEN::Renderer m_context->IASetInputLayout(m_inputLayout.Get()); m_context->IASetIndexBuffer(m_moveablesIndexBuffer.Buffer.Get(), DXGI_FORMAT_R32_UINT, 0); - for (auto* room : view.roomsToDraw) + for (auto* room : view.RoomsToDraw) { for (auto* item : room->ItemsToDraw) { @@ -1081,7 +1081,7 @@ namespace TEN::Renderer { case RENDERER_SPRITE_TYPE::SPRITE_TYPE_BILLBOARD: { - auto cameraUp = Vector3(view.camera.View._12, view.camera.View._22, view.camera.View._32); + auto cameraUp = Vector3(view.Camera.View._12, view.Camera.View._22, view.Camera.View._32); spriteMatrix = scaleMatrix * Matrix::CreateRotationZ(sprite->Rotation) * Matrix::CreateBillboard(sprite->pos, Camera.pos.ToVector3(), cameraUp); } break; @@ -1117,13 +1117,13 @@ namespace TEN::Renderer void Renderer11::DrawSprites(RenderView& view) { - if (view.spritesToDraw.empty()) + if (view.SpritesToDraw.empty()) return; // Sort sprites by sprite and blend mode for faster batching. std::sort( - view.spritesToDraw.begin(), - view.spritesToDraw.end(), + view.SpritesToDraw.begin(), + view.SpritesToDraw.end(), [](RendererSpriteToDraw& rDrawSprite0, RendererSpriteToDraw& rDrawSprite1) { if (rDrawSprite0.Sprite != rDrawSprite1.Sprite) @@ -1145,13 +1145,13 @@ namespace TEN::Renderer std::vector spriteBuckets; RendererSpriteBucket currentSpriteBucket; - currentSpriteBucket.Sprite = view.spritesToDraw[0].Sprite; - currentSpriteBucket.BlendMode = view.spritesToDraw[0].BlendMode; - currentSpriteBucket.IsBillboard = view.spritesToDraw[0].Type != RENDERER_SPRITE_TYPE::SPRITE_TYPE_3D; - currentSpriteBucket.IsSoftParticle = view.spritesToDraw[0].SoftParticle; - currentSpriteBucket.RenderType = view.spritesToDraw[0].renderType; + currentSpriteBucket.Sprite = view.SpritesToDraw[0].Sprite; + currentSpriteBucket.BlendMode = view.SpritesToDraw[0].BlendMode; + currentSpriteBucket.IsBillboard = view.SpritesToDraw[0].Type != RENDERER_SPRITE_TYPE::SPRITE_TYPE_3D; + currentSpriteBucket.IsSoftParticle = view.SpritesToDraw[0].SoftParticle; + currentSpriteBucket.RenderType = view.SpritesToDraw[0].renderType; - for (auto& rDrawSprite : view.spritesToDraw) + for (auto& rDrawSprite : view.SpritesToDraw) { bool isBillboard = rDrawSprite.Type != RENDERER_SPRITE_TYPE::SPRITE_TYPE_3D; @@ -1184,12 +1184,12 @@ namespace TEN::Renderer face.info.world = GetWorldMatrixForSprite(&rDrawSprite, view); face.info.blendMode = rDrawSprite.BlendMode; - for (int j = 0; j < view.roomsToDraw.size(); j++) + for (int j = 0; j < view.RoomsToDraw.size(); j++) { - short roomNumber = view.roomsToDraw[j]->RoomNumber; + short roomNumber = view.RoomsToDraw[j]->RoomNumber; if (g_Level.Rooms[roomNumber].Active() && IsPointInRoom(Vector3i(rDrawSprite.pos), roomNumber)) { - view.roomsToDraw[j]->TransparentFacesToDraw.push_back(face); + view.RoomsToDraw[j]->TransparentFacesToDraw.push_back(face); break; } } @@ -1433,7 +1433,7 @@ namespace TEN::Renderer m_context->IASetInputLayout(m_inputLayout.Get()); m_context->IASetIndexBuffer(m_moveablesIndexBuffer.Buffer.Get(), DXGI_FORMAT_R32_UINT, 0); - for (auto room : view.roomsToDraw) + for (auto room : view.RoomsToDraw) { for (auto effect : room->EffectsToDraw) { diff --git a/TombEngine/Renderer/Renderer11DrawMenu.cpp b/TombEngine/Renderer/Renderer11DrawMenu.cpp index 24f9af83c..417dedae1 100644 --- a/TombEngine/Renderer/Renderer11DrawMenu.cpp +++ b/TombEngine/Renderer/Renderer11DrawMenu.cpp @@ -932,7 +932,7 @@ namespace TEN::Renderer PrintDebugMessage(" Statics: %d", m_numStaticsDrawCalls); PrintDebugMessage(" Sprites: %d", m_numSpritesDrawCalls); PrintDebugMessage("Triangles: %d", m_numPolygons); - PrintDebugMessage("Sprites: %d", view.spritesToDraw.size()); + PrintDebugMessage("Sprites: %d", view.SpritesToDraw.size()); PrintDebugMessage("Transparent faces draw calls: %d", m_numTransparentDrawCalls); PrintDebugMessage(" Rooms: %d", m_numRoomsTransparentDrawCalls); PrintDebugMessage(" Movables: %d", m_numMoveablesTransparentDrawCalls); @@ -940,7 +940,7 @@ namespace TEN::Renderer PrintDebugMessage(" Sprites: %d", m_numSpritesTransparentDrawCalls); PrintDebugMessage("Biggest room's index buffer: %d", m_biggestRoomIndexBuffer); PrintDebugMessage("Transparent room polys: %d", m_numRoomsTransparentPolygons); - PrintDebugMessage("Rooms: %d", view.roomsToDraw.size()); + PrintDebugMessage("Rooms: %d", view.RoomsToDraw.size()); PrintDebugMessage(" CheckPortal() calls: %d", m_numCheckPortalCalls); PrintDebugMessage(" GetVisibleRooms() calls: %d", m_numGetVisibleRoomsCalls); PrintDebugMessage(" Dot products: %d", m_dotProducts); diff --git a/TombEngine/Renderer/Renderer11Enums.h b/TombEngine/Renderer/Renderer11Enums.h index a77ffebca..ee1cac123 100644 --- a/TombEngine/Renderer/Renderer11Enums.h +++ b/TombEngine/Renderer/Renderer11Enums.h @@ -36,7 +36,8 @@ enum LIGHT_TYPES LIGHT_TYPE_SUN = 0, LIGHT_TYPE_POINT = 1, LIGHT_TYPE_SPOT = 2, - LIGHT_TYPE_SHADOW = 3 + LIGHT_TYPE_SHADOW = 3, + LIGHT_TYPE_FOG_BULB = 4 }; enum BLEND_MODES @@ -223,6 +224,7 @@ constexpr auto FADE_FACTOR = 0.0625f; constexpr auto NUM_LIGHTS_PER_BUFFER = 48; constexpr auto MAX_LIGHTS_PER_ITEM = 8; +constexpr auto MAX_FOG_BULBS = 32; constexpr auto MAX_LIGHTS = 100; constexpr auto AMBIENT_LIGHT_INTERPOLATION_STEP = 1.0f / 10.0f; constexpr auto MAX_DYNAMIC_SHADOWS = 1; @@ -252,6 +254,12 @@ constexpr auto DEFAULT_FAR_VIEW = 102400.0f; constexpr auto INSTANCED_SPRITES_BUCKET_SIZE = 512; +constexpr auto SKY_TILES_COUNT = 20; +constexpr auto SKY_SIZE = 10240.0f; +constexpr auto SKY_VERTICES_COUNT = 4 * SKY_TILES_COUNT * SKY_TILES_COUNT; +constexpr auto SKY_INDICES_COUNT = 6 * SKY_TILES_COUNT * SKY_TILES_COUNT; +constexpr auto SKY_TRIANGLES_COUNT = 2 * SKY_TILES_COUNT * SKY_TILES_COUNT; + // FUTURE /* #define CBUFFER_CAMERA 0 diff --git a/TombEngine/Renderer/Renderer11Frame.cpp b/TombEngine/Renderer/Renderer11Frame.cpp index 805e37d3a..1a0819871 100644 --- a/TombEngine/Renderer/Renderer11Frame.cpp +++ b/TombEngine/Renderer/Renderer11Frame.cpp @@ -24,10 +24,10 @@ namespace TEN::Renderer void Renderer11::CollectRooms(RenderView& renderView, bool onlyRooms) { for (int i = 0; i < g_Level.Rooms.size(); i++) - { + { RendererRoom* room = &m_rooms[i]; - - room->ItemsToDraw.clear(); + + room->ItemsToDraw.clear(); room->EffectsToDraw.clear(); room->TransparentFacesToDraw.clear(); room->StaticsToDraw.clear(); @@ -43,24 +43,64 @@ namespace TEN::Renderer } } - GetVisibleRooms(NO_ROOM, renderView.camera.RoomNumber, Vector4(-1.0f, -1.0f, 1.0f, 1.0f), false, 0, onlyRooms, renderView); + GetVisibleRooms(NO_ROOM, renderView.Camera.RoomNumber, Vector4(-1.0f, -1.0f, 1.0f, 1.0f), false, 0, onlyRooms, renderView); - m_invalidateCache = false; + m_invalidateCache = false; // Prepae the real DX scissor test rectangle - for (auto room : renderView.roomsToDraw) + for (auto room : renderView.RoomsToDraw) { room->ClipBounds.left = (room->ViewPort.x + 1.0f) * m_screenWidth * 0.5f; room->ClipBounds.bottom = (1.0f - room->ViewPort.y) * m_screenHeight * 0.5f; room->ClipBounds.right = (room->ViewPort.z + 1.0f) * m_screenWidth * 0.5f; room->ClipBounds.top = (1.0f - room->ViewPort.w) * m_screenHeight * 0.5f; - } + } // Sort statics for doing instancing later std::sort(renderView.StaticsToDraw.begin(), renderView.StaticsToDraw.end(), [](const RendererStatic* a, const RendererStatic* b) { return a->ObjectNumber < b->ObjectNumber; }); + + // Collect fog bulbs + renderView.FogBulbsToDraw.clear(); + vector tempFogBulbs; + for (auto room : m_rooms) + { + for (RendererLight light : room.Lights) + { + if (light.Type == LIGHT_TYPE_FOG_BULB) + { + RendererFogBulb bulb; + + if (renderView.Camera.Frustum.SphereInFrustum(light.Position, light.Out)) + { + bulb.Position = light.Position; + bulb.Density = light.Intensity; + bulb.Color = light.Color; + bulb.Radius = light.Out; + bulb.FogBulbToCameraVector = bulb.Position - renderView.Camera.WorldPosition; + bulb.Distance = bulb.FogBulbToCameraVector.Length(); + + tempFogBulbs.push_back(bulb); + } + } + } + } + + std::sort( + tempFogBulbs.begin(), + tempFogBulbs.end(), + [](RendererFogBulb a, RendererFogBulb b) + { + return a.Distance < b.Distance; + } + ); + + for (int i = 0; i < std::min(MAX_FOG_BULBS, (int)tempFogBulbs.size()); i++) + { + renderView.FogBulbsToDraw.push_back(tempFogBulbs[i]); + } } bool Renderer11::CheckPortal(short parentRoomNumber, RendererDoor* door, Vector4 viewPort, Vector4* clipPort, RenderView& renderView) @@ -79,7 +119,7 @@ namespace TEN::Renderer { if (!door->Visited) { - p[i] = Vector4::Transform(door->AbsoluteVertices[i], renderView.camera.ViewProjection); + p[i] = Vector4::Transform(door->AbsoluteVertices[i], renderView.Camera.ViewProjection); if (p[i].w > 0.0f) { p[i].x *= (1.0f / p[i].w); @@ -196,7 +236,7 @@ namespace TEN::Renderer { room->Visited = true; - renderView.roomsToDraw.push_back(room); + renderView.RoomsToDraw.push_back(room); CollectLightsForRoom(to, renderView); @@ -316,7 +356,7 @@ namespace TEN::Renderer bool inFrustum = false; for (int i = 0; !inFrustum, i < cnt; i++) // Blow up sphere radius by half for cases of too small calculated spheres. - if (renderView.camera.Frustum.SphereInFrustum(spheres[i].Center, spheres[i].Radius * 1.5f)) + if (renderView.Camera.Frustum.SphereInFrustum(spheres[i].Center, spheres[i].Radius * 1.5f)) inFrustum = true; if (!inFrustum) @@ -391,7 +431,7 @@ namespace TEN::Renderer } auto length = Vector3(mesh->VisibilityBox.Extents).Length(); - if (!renderView.camera.Frustum.SphereInFrustum(mesh->VisibilityBox.Center, length)) + if (!renderView.Camera.Frustum.SphereInFrustum(mesh->VisibilityBox.Center, length)) { continue; } @@ -721,13 +761,13 @@ namespace TEN::Renderer } // Light buffer is full - if (renderView.lightsToDraw.size() >= NUM_LIGHTS_PER_BUFFER) + if (renderView.LightsToDraw.size() >= NUM_LIGHTS_PER_BUFFER) { break; } // Light already on a list - if (std::find(renderView.lightsToDraw.begin(), renderView.lightsToDraw.end(), light) != renderView.lightsToDraw.end()) + if (std::find(renderView.LightsToDraw.begin(), renderView.LightsToDraw.end(), light) != renderView.LightsToDraw.end()) { continue; } @@ -738,7 +778,7 @@ namespace TEN::Renderer continue; } - renderView.lightsToDraw.push_back(light); + renderView.LightsToDraw.push_back(light); room.LightsToDraw.push_back(light); } } diff --git a/TombEngine/Renderer/Renderer11Helper.cpp b/TombEngine/Renderer/Renderer11Helper.cpp index c4f0451f2..cb586deab 100644 --- a/TombEngine/Renderer/Renderer11Helper.cpp +++ b/TombEngine/Renderer/Renderer11Helper.cpp @@ -311,7 +311,7 @@ namespace TEN::Renderer void Renderer11::UpdateItemAnimations(RenderView& view) { - for (const auto* room : view.roomsToDraw) + for (const auto* room : view.RoomsToDraw) { for (const auto* itemToDraw : room->ItemsToDraw) { @@ -514,14 +514,14 @@ namespace TEN::Renderer { auto point = Vector4(pos.x, pos.y, pos.z, 1.0f); auto cameraPos = Vector4( - gameCamera.camera.WorldPosition.x, - gameCamera.camera.WorldPosition.y, - gameCamera.camera.WorldPosition.z, + gameCamera.Camera.WorldPosition.x, + gameCamera.Camera.WorldPosition.y, + gameCamera.Camera.WorldPosition.z, 1.0f); auto cameraDirection = Vector4( - gameCamera.camera.WorldDirection.x, - gameCamera.camera.WorldDirection.y, - gameCamera.camera.WorldDirection.z, + gameCamera.Camera.WorldDirection.x, + gameCamera.Camera.WorldDirection.y, + gameCamera.Camera.WorldDirection.z, 1.0f); // Point is behind camera; return nullopt. @@ -529,7 +529,7 @@ namespace TEN::Renderer return std::nullopt; // Calculate clip space coords. - point = Vector4::Transform(point, gameCamera.camera.ViewProjection); + point = Vector4::Transform(point, gameCamera.Camera.ViewProjection); // Calculate NDC. point /= point.w; diff --git a/TombEngine/Renderer/Renderer11Init.cpp b/TombEngine/Renderer/Renderer11Init.cpp index 8ed75f93a..d88998bec 100644 --- a/TombEngine/Renderer/Renderer11Init.cpp +++ b/TombEngine/Renderer/Renderer11Init.cpp @@ -229,6 +229,83 @@ void TEN::Renderer::Renderer11::Initialize(int w, int h, bool windowed, HWND han InitializeGameBars(); initQuad(m_device.Get()); + InitializeSky(); +} + +void TEN::Renderer::Renderer11::InitializeSky() +{ + RendererVertex vertices[SKY_VERTICES_COUNT]; + int indices[SKY_INDICES_COUNT]; + int size = SKY_SIZE; + + int lastVertex = 0; + int lastIndex = 0; + + for (int x = 0; x < SKY_TILES_COUNT; x++) + { + for (int z = 0; z < SKY_TILES_COUNT; z++) + { + indices[lastIndex + 0] = lastVertex + 0; + indices[lastIndex + 1] = lastVertex + 1; + indices[lastIndex + 2] = lastVertex + 2; + indices[lastIndex + 3] = lastVertex + 0; + indices[lastIndex + 4] = lastVertex + 2; + indices[lastIndex + 5] = lastVertex + 3; + + lastIndex += 6; + + vertices[lastVertex].Position.x = -size / 2.0f + x * 512.0f; + vertices[lastVertex].Position.y = 0.0f; + vertices[lastVertex].Position.z = -size / 2.0f + (z + 1) * 512.0f; + vertices[lastVertex].UV.x = x / 20.0f; + vertices[lastVertex].UV.y = (z + 1) / 20.0f; + vertices[lastVertex].Color.x = 1.0f; + vertices[lastVertex].Color.y = 1.0f; + vertices[lastVertex].Color.z = 1.0f; + vertices[lastVertex].Color.w = 1.0f; + + lastVertex++; + + vertices[lastVertex].Position.x = -size / 2.0f + (x + 1) * 512.0f; + vertices[lastVertex].Position.y = 0.0f; + vertices[lastVertex].Position.z = -size / 2.0f + (z + 1) * 512.0f; + vertices[lastVertex].UV.x = (x + 1) / 20.0f; + vertices[lastVertex].UV.y = (z + 1) / 20.0f; + vertices[lastVertex].Color.x = 1.0f; + vertices[lastVertex].Color.y = 1.0f; + vertices[lastVertex].Color.z = 1.0f; + vertices[lastVertex].Color.w = 1.0f; + + lastVertex++; + + vertices[lastVertex].Position.x = -size / 2.0f + (x + 1) * 512.0f; + vertices[lastVertex].Position.y = 0.0f; + vertices[lastVertex].Position.z = -size / 2.0f + z * 512.0f; + vertices[lastVertex].UV.x = (x + 1) / 20.0f; + vertices[lastVertex].UV.y = z / 20.0f; + vertices[lastVertex].Color.x = 1.0f; + vertices[lastVertex].Color.y = 1.0f; + vertices[lastVertex].Color.z = 1.0f; + vertices[lastVertex].Color.w = 1.0f; + + lastVertex++; + + vertices[lastVertex].Position.x = -size / 2.0f + x * 512.0f; + vertices[lastVertex].Position.y = 0.0f; + vertices[lastVertex].Position.z = -size / 2.0f + z * 512.0f; + vertices[lastVertex].UV.x = x / 20.0f; + vertices[lastVertex].UV.y = z / 20.0f; + vertices[lastVertex].Color.x = 1.0f; + vertices[lastVertex].Color.y = 1.0f; + vertices[lastVertex].Color.z = 1.0f; + vertices[lastVertex].Color.w = 1.0f; + + lastVertex++; + } + } + + m_skyVertexBuffer = VertexBuffer(m_device.Get(), SKY_VERTICES_COUNT, vertices); + m_skyIndexBuffer = IndexBuffer(m_device.Get(), SKY_INDICES_COUNT, indices); } void TEN::Renderer::Renderer11::InitializeScreen(int w, int h, HWND handle, bool reset) diff --git a/TombEngine/Renderer/RendererSprites.cpp b/TombEngine/Renderer/RendererSprites.cpp index fc6181329..b3898b953 100644 --- a/TombEngine/Renderer/RendererSprites.cpp +++ b/TombEngine/Renderer/RendererSprites.cpp @@ -34,7 +34,7 @@ namespace TEN::Renderer spr.color = color; spr.renderType = renderType; - view.spritesToDraw.push_back(spr); + view.SpritesToDraw.push_back(spr); } void Renderer11::AddSpriteBillboardConstrained(RendererSprite* sprite, const Vector3& pos, const Vector4 &color, float orient2D, @@ -69,7 +69,7 @@ namespace TEN::Renderer spr.color = color; spr.renderType = renderType; - view.spritesToDraw.push_back(spr); + view.SpritesToDraw.push_back(spr); } void Renderer11::AddSpriteBillboardConstrainedLookAt(RendererSprite* sprite, const Vector3& pos, const Vector4& color, float orient2D, @@ -104,7 +104,7 @@ namespace TEN::Renderer spr.color = color; spr.renderType = renderType; - view.spritesToDraw.push_back(spr); + view.SpritesToDraw.push_back(spr); } void Renderer11::AddQuad(RendererSprite* sprite, const Vector3& vertex0, const Vector3& vertex1, const Vector3& vertex2, const Vector3& vertex3, @@ -148,7 +148,7 @@ namespace TEN::Renderer spr.SoftParticle = isSoftParticle; spr.renderType = renderType; - view.spritesToDraw.push_back(spr); + view.SpritesToDraw.push_back(spr); } void Renderer11::AddColoredQuad(const Vector3& vertex0, const Vector3& vertex1, const Vector3& vertex2, const Vector3& vertex3, @@ -181,7 +181,7 @@ namespace TEN::Renderer sprite.SoftParticle = false; sprite.renderType = renderType; - view.spritesToDraw.push_back(sprite); + view.SpritesToDraw.push_back(sprite); } } diff --git a/TombEngine/Renderer/Structures/RendererFogBulb.h b/TombEngine/Renderer/Structures/RendererFogBulb.h new file mode 100644 index 000000000..d23ba5037 --- /dev/null +++ b/TombEngine/Renderer/Structures/RendererFogBulb.h @@ -0,0 +1,15 @@ +#pragma once +#include + +namespace TEN::Renderer +{ + struct RendererFogBulb + { + Vector3 Position; + float Density; + Vector3 Color; + float Radius; + float Distance; + Vector3 FogBulbToCameraVector; + }; +} \ No newline at end of file diff --git a/TombEngine/Renderer/Structures/RendererRoom.h b/TombEngine/Renderer/Structures/RendererRoom.h index 1cf55cc80..96e06f0eb 100644 --- a/TombEngine/Renderer/Structures/RendererRoom.h +++ b/TombEngine/Renderer/Structures/RendererRoom.h @@ -1,37 +1,37 @@ -#pragma once -#include -#include - -#include "Renderer/RendererRectangle.h" - -struct MESH_INFO; - -namespace TEN::Renderer -{ - struct RendererItem; - struct RendererBucket; - struct RendererLight; - struct RendererEffect; - struct RendererTransparentFace; - struct RendererDoor; - - struct RendererRoom - { - bool Visited; - short RoomNumber; - Vector4 AmbientLight; - Vector4 ViewPort; - std::vector Buckets; - std::vector Lights; - std::vector Statics; - std::vector ItemsToDraw; - std::vector EffectsToDraw; - std::vector StaticsToDraw; - std::vector TransparentFacesToDraw; - std::vector LightsToDraw; - std::vector Doors; - BoundingBox BoundingBox; - RendererRectangle ClipBounds; - std::vector Neighbors; - }; -} +#pragma once +#include +#include + +#include "Renderer/RendererRectangle.h" + +struct MESH_INFO; + +namespace TEN::Renderer +{ + struct RendererItem; + struct RendererBucket; + struct RendererLight; + struct RendererEffect; + struct RendererTransparentFace; + struct RendererDoor; + + struct RendererRoom + { + bool Visited; + short RoomNumber; + Vector4 AmbientLight; + Vector4 ViewPort; + std::vector Buckets; + std::vector Lights; + std::vector Statics; + std::vector ItemsToDraw; + std::vector EffectsToDraw; + std::vector StaticsToDraw; + std::vector TransparentFacesToDraw; + std::vector LightsToDraw; + std::vector Doors; + BoundingBox BoundingBox; + RendererRectangle ClipBounds; + std::vector Neighbors; + }; +} diff --git a/TombEngine/Shaders/Blending.hlsli b/TombEngine/Shaders/Blending.hlsli index 9f31f806b..aaeb09be4 100644 --- a/TombEngine/Shaders/Blending.hlsli +++ b/TombEngine/Shaders/Blending.hlsli @@ -1,175 +1,206 @@ -#ifndef BLENDINGSHADER -#define BLENDINGSHADER - -#include "./Math.hlsli" - -#define ALPHA_TEST_NONE 0 -#define ALPHA_TEST_GREATER_THAN 1 -#define ALPHA_TEST_LESS_THAN 2 - -#define BLENDMODE_OPAQUE 0, -#define BLENDMODE_ALPHATEST 1 -#define BLENDMODE_ADDITIVE 2 -#define BLENDMODE_NOZTEST 4 -#define BLENDMODE_SUBTRACTIVE 5 -#define BLENDMODE_WIREFRAME 6 -#define BLENDMODE_EXCLUDE 8 -#define BLENDMODE_SCREEN 9 -#define BLENDMODE_LIGHTEN 10 -#define BLENDMODE_ALPHABLEND 11 - -#define ZERO float3(0.0f, 0.0f, 0.0f) -#define EIGHT_FIVE float3( 0.85f, 0.85f, 0.85f) -#define BLENDING 0.707f - -cbuffer BlendingBuffer : register(b12) -{ - uint BlendMode; - int AlphaTest; - float AlphaThreshold; -}; - -void DoAlphaTest(float4 inputColor) -{ - if (AlphaTest == ALPHA_TEST_GREATER_THAN && inputColor.w < AlphaThreshold) - { - discard; - } - else if (AlphaTest == ALPHA_TEST_LESS_THAN && inputColor.w > AlphaThreshold) - { - discard; - } - else - { - return; - } -} - -float4 DoFog(float4 sourceColor, float4 fogColor, float value) -{ - if (FogMaxDistance == 0) - return sourceColor; - - switch (BlendMode) - { - case BLENDMODE_ADDITIVE: - case BLENDMODE_SCREEN: - case BLENDMODE_LIGHTEN: - fogColor.xyz *= Luma(sourceColor.xyz); - break; - - case BLENDMODE_SUBTRACTIVE: - case BLENDMODE_EXCLUDE: - fogColor.xyz *= 1.0f - Luma(sourceColor.xyz); - break; - - case BLENDMODE_ALPHABLEND: - fogColor.w = sourceColor.w; - break; - - default: - break; - } - - if (fogColor.w > sourceColor.w) - fogColor.w = sourceColor.w; - - float4 result = lerp(sourceColor, fogColor, value); - return result; -} - -float4 DoLaserBarrierEffect(float3 input, float4 output, float2 uv, float faceFactor, float timeUniform) -{ - float2 noiseTexture = input.xy / uv; - noiseTexture *= uv.x / uv.y; - float noiseValue = FractalNoise(noiseTexture * 8.0f - timeUniform); - - float4 color = output; - float gradL = smoothstep(0.0, 1.0, uv.x); - float gradR = smoothstep(1.0, 0.0, uv.x); - float gradT = smoothstep(0.0, 0.25, uv.y); - float gradB = 1.0 - smoothstep(0.75, 1.0, uv.y); - - float distortion = timeUniform / 1024; - - float3 noisix = SimplexNoise - ( - SimplexNoise(float3(input.r * distortion, input.g, input.b)) - ); - float3 shadowx = SimplexNoise - ( - cos(SimplexNoise(sin(timeUniform + input.rgb * 400))) - ); - - noisix.x = noisix.x > 0.9 ? 0.7 : noisix.x; - noisix.y = noisix.y > 0.9 ? 0.7 : noisix.y; - noisix.z = noisix.z > 0.9 ? 0.7 : noisix.z; - color.rgb *= noisix + 1.3f; - color.rgb -= noisix + 0.2f; - - float frequency = 0.1; - float amplitude = 0.8; - float persistence = 0.5; - float noiseValue2 = 0; - float noiseValue3 = 0; - - float2 uv84 = (uv * 2.4); - uv84.y = (uv84.y - 1.3); - uv84.x = (uv84.x / 1.3); - float2 uv85 = (uv / 2.4); - - noiseValue2 = AnimatedNebula(uv84, timeUniform * 0.1f); - - frequency = 2.5; - amplitude = 0.2; - persistence = 4.7; - - float2 uv83 = uv * 8; - uv83.y = (uv.y + (timeUniform * 0.02)); - noiseValue3 = NebularNoise(uv83, frequency, amplitude, persistence); - - noiseValue2 += AnimatedNebula(uv/2, timeUniform * 0.05f); - - color.rgb -= noiseValue - 0.7f; - color.rgb *= noiseValue2 + 1.0f; - color.rgb += noiseValue3; - color.a *= noiseValue + 0.01f; - - color.rgb -= shadowx + 0.1f; - - color.a *= noiseValue2 + 0.9f; - color.a *= noiseValue3 + 2.0f; - - float fade0 = faceFactor * max(0.0, 1.0 - dot(float2(BLENDING, BLENDING), float2(gradL, gradT))); - float fade1 = faceFactor * max(0.0, 1.0 - dot(float2(BLENDING, BLENDING), float2(gradL, gradB))); - float fade2 = faceFactor * max(0.0, 1.0 - dot(float2(BLENDING, BLENDING), float2(gradR, gradB))); - float fade3 = faceFactor * max(0.0, 1.0 - dot(float2(BLENDING, BLENDING), float2(gradR, gradT))); - - float fadeL = 1.40f * faceFactor * faceFactor * (1.0 - gradL); - float fadeB = 2.75f * faceFactor * faceFactor * (1.0 - gradB); - float fadeR = 1.40f * faceFactor * faceFactor * (1.0 - gradR); - float fadeT = 2.75f * faceFactor * faceFactor * (1.0 - gradT); - - float fade = max( - max(max(fade0, fade1), max(fade2, fade3)), - max(max(fadeL, fadeR), max(fadeB, fadeT))); - - float scale = 1.0 - fade; - - color *= scale; - float decayFactor = 1.0f; - if (uv.y > 0.5f && uv.y < 1.0f) - { - decayFactor = uv.y / 2; - } - if (uv.y < 0.5f && uv.y > 0.0f) - { - decayFactor = (1.0f - uv.y) / 2; - } - color *= decayFactor; - - color.rgb = smoothstep(ZERO, EIGHT_FIVE, color.rgb); - return color; -} - -#endif // BLENDINGSHADER +#ifndef BLENDINGSHADER +#define BLENDINGSHADER + +#include "./Math.hlsli" + +#define ALPHA_TEST_NONE 0 +#define ALPHA_TEST_GREATER_THAN 1 +#define ALPHA_TEST_LESS_THAN 2 + +#define BLENDMODE_OPAQUE 0, +#define BLENDMODE_ALPHATEST 1 +#define BLENDMODE_ADDITIVE 2 +#define BLENDMODE_NOZTEST 4 +#define BLENDMODE_SUBTRACTIVE 5 +#define BLENDMODE_WIREFRAME 6 +#define BLENDMODE_EXCLUDE 8 +#define BLENDMODE_SCREEN 9 +#define BLENDMODE_LIGHTEN 10 +#define BLENDMODE_ALPHABLEND 11 + +#define ZERO float3(0.0f, 0.0f, 0.0f) +#define EIGHT_FIVE float3( 0.85f, 0.85f, 0.85f) +#define BLENDING 0.707f + +cbuffer BlendingBuffer : register(b12) +{ + uint BlendMode; + int AlphaTest; + float AlphaThreshold; +}; + +void DoAlphaTest(float4 inputColor) +{ + if (AlphaTest == ALPHA_TEST_GREATER_THAN && inputColor.w < AlphaThreshold) + { + discard; + } + else if (AlphaTest == ALPHA_TEST_LESS_THAN && inputColor.w > AlphaThreshold) + { + discard; + } + else + { + return; + } +} + +float4 DoDistanceFogForPixel(float4 sourceColor, float4 fogColor, float value) +{ + switch (BlendMode) + { + case BLENDMODE_ADDITIVE: + case BLENDMODE_SCREEN: + case BLENDMODE_LIGHTEN: + fogColor.xyz *= Luma(sourceColor.xyz); + break; + + case BLENDMODE_SUBTRACTIVE: + case BLENDMODE_EXCLUDE: + fogColor.xyz *= 1.0f - Luma(sourceColor.xyz); + break; + + case BLENDMODE_ALPHABLEND: + fogColor.w = sourceColor.w; + break; + + default: + break; + } + + if (fogColor.w > sourceColor.w) + fogColor.w = sourceColor.w; + + float4 result = lerp(sourceColor, fogColor, value); + return result; +} + +float4 DoFogBulbsForPixel(float4 sourceColor, float4 fogColor) +{ + switch (BlendMode) + { + case BLENDMODE_ADDITIVE: + case BLENDMODE_SCREEN: + case BLENDMODE_LIGHTEN: + fogColor.xyz *= Luma(sourceColor); + break; + + case BLENDMODE_SUBTRACTIVE: + case BLENDMODE_EXCLUDE: + fogColor.xyz *= 1.0f - Luma(sourceColor.xyz); + break; + + case BLENDMODE_ALPHABLEND: + fogColor.w = sourceColor.w; + break; + + default: + break; + + } + + if (fogColor.w > sourceColor.w) + fogColor.w = sourceColor.w; + + float4 result = sourceColor; + + result.xyz += saturate(fogColor.xyz); + + return result; +} + +float4 DoLaserBarrierEffect(float3 input, float4 output, float2 uv, float faceFactor, float timeUniform) +{ + float2 noiseTexture = input.xy / uv; + noiseTexture *= uv.x / uv.y; + float noiseValue = FractalNoise(noiseTexture * 8.0f - timeUniform); + + float4 color = output; + float gradL = smoothstep(0.0, 1.0, uv.x); + float gradR = smoothstep(1.0, 0.0, uv.x); + float gradT = smoothstep(0.0, 0.25, uv.y); + float gradB = 1.0 - smoothstep(0.75, 1.0, uv.y); + + float distortion = timeUniform / 1024; + + float3 noisix = SimplexNoise + ( + SimplexNoise(float3(input.r * distortion, input.g, input.b)) + ); + float3 shadowx = SimplexNoise + ( + cos(SimplexNoise(sin(timeUniform + input.rgb * 400))) + ); + + noisix.x = noisix.x > 0.9 ? 0.7 : noisix.x; + noisix.y = noisix.y > 0.9 ? 0.7 : noisix.y; + noisix.z = noisix.z > 0.9 ? 0.7 : noisix.z; + color.rgb *= noisix + 1.3f; + color.rgb -= noisix + 0.2f; + + float frequency = 0.1; + float amplitude = 0.8; + float persistence = 0.5; + float noiseValue2 = 0; + float noiseValue3 = 0; + + float2 uv84 = (uv * 2.4); + uv84.y = (uv84.y - 1.3); + uv84.x = (uv84.x / 1.3); + float2 uv85 = (uv / 2.4); + + noiseValue2 = AnimatedNebula(uv84, timeUniform * 0.1f); + + frequency = 2.5; + amplitude = 0.2; + persistence = 4.7; + + float2 uv83 = uv * 8; + uv83.y = (uv.y + (timeUniform * 0.02)); + noiseValue3 = NebularNoise(uv83, frequency, amplitude, persistence); + + noiseValue2 += AnimatedNebula(uv/2, timeUniform * 0.05f); + + color.rgb -= noiseValue - 0.7f; + color.rgb *= noiseValue2 + 1.0f; + color.rgb += noiseValue3; + color.a *= noiseValue + 0.01f; + + color.rgb -= shadowx + 0.1f; + + color.a *= noiseValue2 + 0.9f; + color.a *= noiseValue3 + 2.0f; + + float fade0 = faceFactor * max(0.0, 1.0 - dot(float2(BLENDING, BLENDING), float2(gradL, gradT))); + float fade1 = faceFactor * max(0.0, 1.0 - dot(float2(BLENDING, BLENDING), float2(gradL, gradB))); + float fade2 = faceFactor * max(0.0, 1.0 - dot(float2(BLENDING, BLENDING), float2(gradR, gradB))); + float fade3 = faceFactor * max(0.0, 1.0 - dot(float2(BLENDING, BLENDING), float2(gradR, gradT))); + + float fadeL = 1.40f * faceFactor * faceFactor * (1.0 - gradL); + float fadeB = 2.75f * faceFactor * faceFactor * (1.0 - gradB); + float fadeR = 1.40f * faceFactor * faceFactor * (1.0 - gradR); + float fadeT = 2.75f * faceFactor * faceFactor * (1.0 - gradT); + + float fade = max( + max(max(fade0, fade1), max(fade2, fade3)), + max(max(fadeL, fadeR), max(fadeB, fadeT))); + + float scale = 1.0 - fade; + + color *= scale; + float decayFactor = 1.0f; + if (uv.y > 0.5f && uv.y < 1.0f) + { + decayFactor = uv.y / 2; + } + if (uv.y < 0.5f && uv.y > 0.0f) + { + decayFactor = (1.0f - uv.y) / 2; + } + color *= decayFactor; + + color.rgb = smoothstep(ZERO, EIGHT_FIVE, color.rgb); + return color; +} + +#endif // BLENDINGSHADER diff --git a/TombEngine/Shaders/CameraMatrixBuffer.hlsli b/TombEngine/Shaders/CameraMatrixBuffer.hlsli index 4934cf56b..76d288233 100644 --- a/TombEngine/Shaders/CameraMatrixBuffer.hlsli +++ b/TombEngine/Shaders/CameraMatrixBuffer.hlsli @@ -1,3 +1,5 @@ +#include "./Math.hlsli" + cbuffer CameraMatrixBuffer : register(b0) { float4x4 ViewProjection; @@ -15,5 +17,7 @@ cbuffer CameraMatrixBuffer : register(b0) int FogMinDistance; int FogMaxDistance; float NearPlane; - float FarPlane; + float FarPlane; + int NumFogBulbs; + ShaderFogBulb FogBulbs[MAX_FOG_BULBS]; }; \ No newline at end of file diff --git a/TombEngine/Shaders/DX11_InstancedSprites.fx b/TombEngine/Shaders/DX11_InstancedSprites.fx index e92d6acbf..58b8b1e15 100644 --- a/TombEngine/Shaders/DX11_InstancedSprites.fx +++ b/TombEngine/Shaders/DX11_InstancedSprites.fx @@ -1,111 +1,113 @@ -#include "./CameraMatrixBuffer.hlsli" -#include "./Blending.hlsli" -#include "./VertexInput.hlsli" -#include "./Math.hlsli" - -// NOTE: This shader is used for all opaque or not sorted transparent sprites, that can be instanced for a faster drawing - -#define INSTANCED_SPRITES_BUCKET_SIZE 512 - -struct PixelShaderInput -{ - float4 Position: SV_POSITION; - float2 UV: TEXCOORD1; - float4 Color: COLOR; - float Fog : FOG; - float4 PositionCopy: TEXCOORD2; -}; - -struct InstancedSprite -{ - float4x4 World; - float4 UV[2]; - float4 Color; - float IsBillboard; - float IsSoftParticle; -}; - -cbuffer InstancedSpriteBuffer : register(b13) -{ - InstancedSprite Sprites[INSTANCED_SPRITES_BUCKET_SIZE]; -}; - -Texture2D Texture : register(t0); -SamplerState Sampler : register(s0); - -Texture2D DepthMap : register(t6); -SamplerState DepthMapSampler : register(s6); - -PixelShaderInput VS(VertexShaderInput input, uint InstanceID : SV_InstanceID) -{ - PixelShaderInput output; - - float4 worldPosition; - - if (Sprites[InstanceID].IsBillboard == 1) - { - worldPosition = mul(float4(input.Position, 1.0f), Sprites[InstanceID].World); - output.Position = mul(mul(float4(input.Position, 1.0f), Sprites[InstanceID].World), ViewProjection); - } - else - { - worldPosition = float4(input.Position, 1.0f); - output.Position = mul(float4(input.Position, 1.0f), ViewProjection); - } - - output.PositionCopy = output.Position; - output.Color = Sprites[InstanceID].Color; - output.UV = float2(Sprites[InstanceID].UV[0][input.PolyIndex], Sprites[InstanceID].UV[1][input.PolyIndex]); - - float4 d = length(CamPositionWS - worldPosition); - if (FogMaxDistance == 0) - output.Fog = 1; - else - output.Fog = clamp((d - FogMinDistance * 1024) / (FogMaxDistance * 1024 - FogMinDistance * 1024), 0, 1); - - return output; -} - -// TODO: From NVIDIA SDK, check if it can be useful instead of linear ramp -float Contrast(float Input, float ContrastPower) -{ -#if 1 - //piecewise contrast function - bool IsAboveHalf = Input > 0.5; - float ToRaise = saturate(2 * (IsAboveHalf ? 1 - Input : Input)); - float Output = 0.5 * pow(ToRaise, ContrastPower); - Output = IsAboveHalf ? 1 - Output : Output; - return Output; -#else - // another solution to create a kind of contrast function - return 1.0 - exp2(-2 * pow(2.0 * saturate(Input), ContrastPower)); -#endif -} - -float4 PS(PixelShaderInput input, uint InstanceID : SV_InstanceID) : SV_TARGET -{ - float4 output = Texture.Sample(Sampler, input.UV) * input.Color; - - //DoAlphaTest(output); - - if (Sprites[InstanceID].IsSoftParticle == 1) - { - float particleDepth = input.PositionCopy.z / input.PositionCopy.w; - input.PositionCopy.xy /= input.PositionCopy.w; - float2 texCoord = 0.5f * (float2(input.PositionCopy.x, -input.PositionCopy.y) + 1); - float sceneDepth = DepthMap.Sample(DepthMapSampler, texCoord).r; - - sceneDepth = LinearizeDepth(sceneDepth, NearPlane, FarPlane); - particleDepth = LinearizeDepth(particleDepth, NearPlane, FarPlane); - - if (particleDepth - sceneDepth > 0.01f) - discard; - - float fade = (sceneDepth - particleDepth) * 1024.0f; - output.w = min(output.w, fade); - } - - output = DoFog(output, float4(0.0f, 0.0f, 0.0f, 0.0f), input.Fog); - - return output; +#include "./CameraMatrixBuffer.hlsli" +#include "./Blending.hlsli" +#include "./VertexInput.hlsli" +#include "./Math.hlsli" +#include "./ShaderLight.hlsli" + +// NOTE: This shader is used for all opaque or not sorted transparent sprites, that can be instanced for a faster drawing + +#define INSTANCED_SPRITES_BUCKET_SIZE 512 + +struct PixelShaderInput +{ + float4 Position: SV_POSITION; + float2 UV: TEXCOORD1; + float4 Color: COLOR; + float4 PositionCopy: TEXCOORD2; + float4 FogBulbs : TEXCOORD3; + float DistanceFog : FOG; +}; + +struct InstancedSprite +{ + float4x4 World; + float4 UV[2]; + float4 Color; + float IsBillboard; + float IsSoftParticle; +}; + +cbuffer InstancedSpriteBuffer : register(b13) +{ + InstancedSprite Sprites[INSTANCED_SPRITES_BUCKET_SIZE]; +}; + +Texture2D Texture : register(t0); +SamplerState Sampler : register(s0); + +Texture2D DepthMap : register(t6); +SamplerState DepthMapSampler : register(s6); + +PixelShaderInput VS(VertexShaderInput input, uint InstanceID : SV_InstanceID) +{ + PixelShaderInput output; + + float4 worldPosition; + + if (Sprites[InstanceID].IsBillboard == 1) + { + worldPosition = mul(float4(input.Position, 1.0f), Sprites[InstanceID].World); + output.Position = mul(mul(float4(input.Position, 1.0f), Sprites[InstanceID].World), ViewProjection); + } + else + { + worldPosition = float4(input.Position, 1.0f); + output.Position = mul(float4(input.Position, 1.0f), ViewProjection); + } + + output.PositionCopy = output.Position; + output.Color = Sprites[InstanceID].Color; + output.UV = float2(Sprites[InstanceID].UV[0][input.PolyIndex], Sprites[InstanceID].UV[1][input.PolyIndex]); + + output.FogBulbs = DoFogBulbsForVertex(worldPosition); + output.DistanceFog = DoDistanceFogForVertex(worldPosition); + + return output; +} + +// TODO: From NVIDIA SDK, check if it can be useful instead of linear ramp +float Contrast(float Input, float ContrastPower) +{ +#if 1 + //piecewise contrast function + bool IsAboveHalf = Input > 0.5; + float ToRaise = saturate(2 * (IsAboveHalf ? 1 - Input : Input)); + float Output = 0.5 * pow(ToRaise, ContrastPower); + Output = IsAboveHalf ? 1 - Output : Output; + return Output; +#else + // another solution to create a kind of contrast function + return 1.0 - exp2(-2 * pow(2.0 * saturate(Input), ContrastPower)); +#endif +} + +float4 PS(PixelShaderInput input, uint InstanceID : SV_InstanceID) : SV_TARGET +{ + float4 output = Texture.Sample(Sampler, input.UV) * input.Color; + + //DoAlphaTest(output); + + if (Sprites[InstanceID].IsSoftParticle == 1) + { + float particleDepth = input.PositionCopy.z / input.PositionCopy.w; + input.PositionCopy.xy /= input.PositionCopy.w; + float2 texCoord = 0.5f * (float2(input.PositionCopy.x, -input.PositionCopy.y) + 1); + float sceneDepth = DepthMap.Sample(DepthMapSampler, texCoord).r; + + sceneDepth = LinearizeDepth(sceneDepth, NearPlane, FarPlane); + particleDepth = LinearizeDepth(particleDepth, NearPlane, FarPlane); + + if (particleDepth - sceneDepth > 0.01f) + discard; + + float fade = (sceneDepth - particleDepth) * 1024.0f; + output.w = min(output.w, fade); + } + + output.xyz -= float3(input.FogBulbs.w, input.FogBulbs.w, input.FogBulbs.w); + output.xyz = saturate(output.xyz); + + output = DoDistanceFogForPixel(output, float4(0.0f, 0.0f, 0.0f, 0.0f), input.DistanceFog); + + return output; } \ No newline at end of file diff --git a/TombEngine/Shaders/DX11_InstancedStatics.fx b/TombEngine/Shaders/DX11_InstancedStatics.fx index 2c342b521..99ee5a8f7 100644 --- a/TombEngine/Shaders/DX11_InstancedStatics.fx +++ b/TombEngine/Shaders/DX11_InstancedStatics.fx @@ -1,109 +1,106 @@ -#include "./Math.hlsli" -#include "./CameraMatrixBuffer.hlsli" -#include "./ShaderLight.hlsli" -#include "./VertexEffects.hlsli" -#include "./VertexInput.hlsli" -#include "./Blending.hlsli" - -#define INSTANCED_STATIC_MESH_BUCKET_SIZE 100 - -struct InstancedStaticMesh -{ - float4x4 World; - float4 Color; - float4 AmbientLight; - ShaderLight InstancedStaticLights[MAX_LIGHTS_PER_ITEM]; - uint4 LightInfo; -}; - -cbuffer InstancedStaticMeshBuffer : register(b3) -{ - InstancedStaticMesh StaticMeshes[INSTANCED_STATIC_MESH_BUCKET_SIZE]; -}; - -struct PixelShaderInput -{ - float4 Position: SV_POSITION; - float3 Normal: NORMAL; - float3 WorldPosition: POSITION; - float2 UV: TEXCOORD1; - float4 Color: COLOR; - float Sheen : SHEEN; - float Fog : FOG; - float4 PositionCopy: TEXCOORD2; - uint InstanceID : SV_InstanceID; -}; - -struct PixelShaderOutput -{ - float4 Color: SV_TARGET0; - float4 Depth: SV_TARGET1; -}; - -Texture2D Texture : register(t0); -SamplerState Sampler : register(s0); - -PixelShaderInput VS(VertexShaderInput input, uint InstanceID : SV_InstanceID) -{ - PixelShaderInput output; - - float4 worldPosition = (mul(float4(input.Position, 1.0f), StaticMeshes[InstanceID].World)); - float3 normal = (mul(float4(input.Normal, 0.0f), StaticMeshes[InstanceID].World).xyz); - - output.Normal = normal; - output.UV = input.UV; - output.WorldPosition = worldPosition; - - float3 pos = Move(input.Position, input.Effects.xyz, input.Hash); - float3 col = Glow(input.Color.xyz, input.Effects.xyz, input.Hash); - - output.Position = mul(worldPosition, ViewProjection); - output.Color = float4(col, input.Color.w); - output.Color *= StaticMeshes[InstanceID].Color; - - // Apply distance fog - float4 d = length(CamPositionWS - worldPosition); - if (FogMaxDistance == 0) - output.Fog = 1; - else - output.Fog = clamp((d - FogMinDistance * 1024) / (FogMaxDistance * 1024 - FogMinDistance * 1024), 0, 1); - - output.PositionCopy = output.Position; - output.Sheen = input.Effects.w; - output.InstanceID = InstanceID; - - return output; -} - -PixelShaderOutput PS(PixelShaderInput input) -{ - PixelShaderOutput output; - - float4 tex = Texture.Sample(Sampler, input.UV); - DoAlphaTest(tex); - - uint mode = StaticMeshes[input.InstanceID].LightInfo.y; - uint numLights = StaticMeshes[input.InstanceID].LightInfo.x; - - float3 color = (mode == 0) ? - CombineLights( - StaticMeshes[input.InstanceID].AmbientLight.xyz, - input.Color.xyz, - tex.xyz, - input.WorldPosition, - normalize(input.Normal), - input.Sheen, - StaticMeshes[input.InstanceID].InstancedStaticLights, - numLights) : - StaticLight(input.Color.xyz, tex.xyz); - - output.Color = float4(color, tex.w); - - output.Depth = tex.w > 0.0f ? - float4(input.PositionCopy.z / input.PositionCopy.w, 0.0f, 0.0f, 1.0f) : - float4(0.0f, 0.0f, 0.0f, 0.0f); - - output.Color = DoFog(output.Color, FogColor, input.Fog); - - return output; +#include "./Math.hlsli" +#include "./CameraMatrixBuffer.hlsli" +#include "./ShaderLight.hlsli" +#include "./VertexEffects.hlsli" +#include "./VertexInput.hlsli" +#include "./Blending.hlsli" + +#define INSTANCED_STATIC_MESH_BUCKET_SIZE 100 + +struct InstancedStaticMesh +{ + float4x4 World; + float4 Color; + float4 AmbientLight; + ShaderLight InstancedStaticLights[MAX_LIGHTS_PER_ITEM]; + uint4 LightInfo; +}; + +cbuffer InstancedStaticMeshBuffer : register(b3) +{ + InstancedStaticMesh StaticMeshes[INSTANCED_STATIC_MESH_BUCKET_SIZE]; +}; + +struct PixelShaderInput +{ + float4 Position: SV_POSITION; + float3 Normal: NORMAL; + float3 WorldPosition: POSITION; + float2 UV: TEXCOORD1; + float4 Color: COLOR; + float Sheen : SHEEN; + float4 PositionCopy: TEXCOORD2; + float4 FogBulbs : TEXCOORD3; + float DistanceFog : FOG; + uint InstanceID : SV_InstanceID; +}; + +struct PixelShaderOutput +{ + float4 Color: SV_TARGET0; + float4 Depth: SV_TARGET1; +}; + +Texture2D Texture : register(t0); +SamplerState Sampler : register(s0); + +PixelShaderInput VS(VertexShaderInput input, uint InstanceID : SV_InstanceID) +{ + PixelShaderInput output; + + float4 worldPosition = (mul(float4(input.Position, 1.0f), StaticMeshes[InstanceID].World)); + float3 normal = (mul(float4(input.Normal, 0.0f), StaticMeshes[InstanceID].World).xyz); + + output.Normal = normal; + output.UV = input.UV; + output.WorldPosition = worldPosition; + + float3 pos = Move(input.Position, input.Effects.xyz, input.Hash); + float3 col = Glow(input.Color.xyz, input.Effects.xyz, input.Hash); + + output.Position = mul(worldPosition, ViewProjection); + output.Color = float4(col, input.Color.w); + output.Color *= StaticMeshes[InstanceID].Color; + output.PositionCopy = output.Position; + output.Sheen = input.Effects.w; + output.InstanceID = InstanceID; + + output.FogBulbs = DoFogBulbsForVertex(worldPosition); + output.DistanceFog = DoDistanceFogForVertex(worldPosition); + + return output; +} + +PixelShaderOutput PS(PixelShaderInput input) +{ + PixelShaderOutput output; + + float4 tex = Texture.Sample(Sampler, input.UV); + DoAlphaTest(tex); + + uint mode = StaticMeshes[input.InstanceID].LightInfo.y; + uint numLights = StaticMeshes[input.InstanceID].LightInfo.x; + + float3 color = (mode == 0) ? + CombineLights( + StaticMeshes[input.InstanceID].AmbientLight.xyz, + input.Color.xyz, + tex.xyz, + input.WorldPosition, + normalize(input.Normal), + input.Sheen, + StaticMeshes[input.InstanceID].InstancedStaticLights, + numLights, + input.FogBulbs.w) : + StaticLight(input.Color.xyz, tex.xyz, input.FogBulbs.w); + + output.Color = float4(color, tex.w); + output.Color = DoFogBulbsForPixel(output.Color, float4(input.FogBulbs.xyz, 1.0f)); + output.Color = DoDistanceFogForPixel(output.Color, FogColor, input.DistanceFog); + + output.Depth = tex.w > 0.0f ? + float4(input.PositionCopy.z / input.PositionCopy.w, 0.0f, 0.0f, 1.0f) : + float4(0.0f, 0.0f, 0.0f, 0.0f); + + return output; } \ No newline at end of file diff --git a/TombEngine/Shaders/DX11_Items.fx b/TombEngine/Shaders/DX11_Items.fx index c927f287e..c4441c9d2 100644 --- a/TombEngine/Shaders/DX11_Items.fx +++ b/TombEngine/Shaders/DX11_Items.fx @@ -1,126 +1,124 @@ -#include "./Math.hlsli" -#include "./CameraMatrixBuffer.hlsli" -#include "./ShaderLight.hlsli" -#include "./VertexEffects.hlsli" -#include "./VertexInput.hlsli" -#include "./Blending.hlsli" -#include "./AnimatedTextures.hlsli" -#include "./Shadows.hlsli" - -#define MAX_BONES 32 - -cbuffer ItemBuffer : register(b1) -{ - float4x4 World; - float4x4 Bones[MAX_BONES]; - float4 Color; - float4 AmbientLight; - int4 BoneLightModes[MAX_BONES / 4]; - ShaderLight ItemLights[MAX_LIGHTS_PER_ITEM]; - int NumItemLights; -}; - -struct PixelShaderInput -{ - float4 Position: SV_POSITION; - float3 Normal: NORMAL; - float3 WorldPosition: POSITION; - float2 UV: TEXCOORD; - float4 Color: COLOR; - float Sheen: SHEEN; - float3x3 TBN: TBN; - float Fog: FOG; - float4 PositionCopy: TEXCOORD2; - unsigned int Bone: BONE; -}; - -struct PixelShaderOutput -{ - float4 Color: SV_TARGET0; - float4 Depth: SV_TARGET1; -}; - -Texture2D Texture : register(t0); -SamplerState Sampler : register(s0); - -Texture2D NormalTexture : register(t1); - -//TextureCube Reflection : register (t4); - -PixelShaderInput VS(VertexShaderInput input) -{ - PixelShaderInput output; - - float4x4 world = mul(Bones[input.Bone], World); - - float3 normal = (mul(float4(input.Normal, 0.0f), world).xyz); - float3 worldPosition = (mul(float4(input.Position, 1.0f), world).xyz); - - output.Normal = normal; - output.UV = input.UV; - output.WorldPosition = worldPosition; - - float3 Tangent = mul(float4(input.Tangent, 0), world).xyz; - float3 Bitangent = cross(normal, Tangent); - float3x3 TBN = float3x3(Tangent, Bitangent, normal); - - output.TBN = transpose(TBN); - - // Calculate vertex effects - float wibble = Wibble(input.Effects.xyz, input.Hash); - float3 pos = Move(input.Position, input.Effects.xyz, wibble); - float3 col = Glow(input.Color.xyz, input.Effects.xyz, wibble); - - output.Position = mul(mul(float4(pos, 1.0f), world), ViewProjection); - output.Color = float4(col, input.Color.w); - output.Color *= Color; - - // Apply distance fog - float d = distance(CamPositionWS.xyz, worldPosition); - if (FogMaxDistance == 0) - output.Fog = 1; - else - output.Fog = clamp((d - FogMinDistance * 1024) / (FogMaxDistance * 1024 - FogMinDistance * 1024), 0, 1); - - output.PositionCopy = output.Position; - output.Sheen = input.Effects.w; - output.Bone = input.Bone; - return output; -} - -PixelShaderOutput PS(PixelShaderInput input) -{ - PixelShaderOutput output; - - if (Type == 1) - input.UV = CalculateUVRotate(input.UV, 0); - - float4 tex = Texture.Sample(Sampler, input.UV); - DoAlphaTest(tex); - - float3 normal = NormalTexture.Sample(Sampler, input.UV).rgb; - normal = normal * 2 - 1; - normal = normalize(mul(input.TBN, normal)); - - float3 color = (BoneLightModes[input.Bone / 4][input.Bone % 4] == 0) ? - CombineLights( - AmbientLight.xyz, - input.Color.xyz, - tex.xyz, - input.WorldPosition, - normal, - input.Sheen, - ItemLights, - NumItemLights) : - StaticLight(input.Color.xyz, tex.xyz); - - output.Color = saturate(float4(color, tex.w)); - - output.Depth = tex.w > 0.0f ? - float4(input.PositionCopy.z / input.PositionCopy.w, 0.0f, 0.0f, 1.0f) : - float4(0.0f, 0.0f, 0.0f, 0.0f); - - output.Color = DoFog(output.Color, FogColor, input.Fog); - - return output; +#include "./Math.hlsli" +#include "./CameraMatrixBuffer.hlsli" +#include "./ShaderLight.hlsli" +#include "./VertexEffects.hlsli" +#include "./VertexInput.hlsli" +#include "./Blending.hlsli" +#include "./AnimatedTextures.hlsli" +//#include "./Shadows.hlsli" + +#define MAX_BONES 32 + +cbuffer ItemBuffer : register(b1) +{ + float4x4 World; + float4x4 Bones[MAX_BONES]; + float4 Color; + float4 AmbientLight; + int4 BoneLightModes[MAX_BONES / 4]; + ShaderLight ItemLights[MAX_LIGHTS_PER_ITEM]; + int NumItemLights; +}; + +struct PixelShaderInput +{ + float4 Position: SV_POSITION; + float3 Normal: NORMAL; + float3 WorldPosition: POSITION; + float2 UV: TEXCOORD1; + float4 Color: COLOR; + float Sheen: SHEEN; + float3x3 TBN: TBN; + float4 PositionCopy: TEXCOORD2; + float4 FogBulbs : TEXCOORD3; + float DistanceFog : FOG; + unsigned int Bone: BONE; +}; + +struct PixelShaderOutput +{ + float4 Color: SV_TARGET0; + float4 Depth: SV_TARGET1; +}; + +Texture2D Texture : register(t0); +SamplerState Sampler : register(s0); + +Texture2D NormalTexture : register(t1); + +//TextureCube Reflection : register (t4); + +PixelShaderInput VS(VertexShaderInput input) +{ + PixelShaderInput output; + + float4x4 world = mul(Bones[input.Bone], World); + + float3 normal = (mul(float4(input.Normal, 0.0f), world).xyz); + float3 worldPosition = (mul(float4(input.Position, 1.0f), world).xyz); + + output.Normal = normal; + output.UV = input.UV; + output.WorldPosition = worldPosition; + + float3 Tangent = mul(float4(input.Tangent, 0), world).xyz; + float3 Bitangent = cross(normal, Tangent); + float3x3 TBN = float3x3(Tangent, Bitangent, normal); + + output.TBN = transpose(TBN); + + // Calculate vertex effects + float wibble = Wibble(input.Effects.xyz, input.Hash); + float3 pos = Move(input.Position, input.Effects.xyz, wibble); + float3 col = Glow(input.Color.xyz, input.Effects.xyz, wibble); + + output.Position = mul(mul(float4(pos, 1.0f), world), ViewProjection); + output.Color = float4(col, input.Color.w); + output.Color *= Color; + output.PositionCopy = output.Position; + output.Sheen = input.Effects.w; + output.Bone = input.Bone; + + output.FogBulbs = DoFogBulbsForVertex(worldPosition); + output.DistanceFog = DoDistanceFogForVertex(worldPosition); + + return output; +} + +PixelShaderOutput PS(PixelShaderInput input) +{ + PixelShaderOutput output; + + if (Type == 1) + input.UV = CalculateUVRotate(input.UV, 0); + + float4 tex = Texture.Sample(Sampler, input.UV); + DoAlphaTest(tex); + + float3 normal = NormalTexture.Sample(Sampler, input.UV).rgb; + normal = normal * 2 - 1; + normal = normalize(mul(input.TBN, normal)); + + float3 color = (BoneLightModes[input.Bone / 4][input.Bone % 4] == 0) ? + CombineLights( + AmbientLight.xyz, + input.Color.xyz, + tex.xyz, + input.WorldPosition, + normal, + input.Sheen, + ItemLights, + NumItemLights, + input.FogBulbs.w) : + StaticLight(input.Color.xyz, tex.xyz, input.FogBulbs.w); + + output.Color = saturate(float4(color, tex.w)); + output.Color = DoFogBulbsForPixel(output.Color, float4(input.FogBulbs.xyz, 1.0f)); + output.Color = DoDistanceFogForPixel(output.Color, FogColor, input.DistanceFog); + + output.Depth = tex.w > 0.0f ? + float4(input.PositionCopy.z / input.PositionCopy.w, 0.0f, 0.0f, 1.0f) : + float4(0.0f, 0.0f, 0.0f, 0.0f); + + return output; } \ No newline at end of file diff --git a/TombEngine/Shaders/DX11_Rooms.fx b/TombEngine/Shaders/DX11_Rooms.fx index e064292c7..9a2b288e0 100644 --- a/TombEngine/Shaders/DX11_Rooms.fx +++ b/TombEngine/Shaders/DX11_Rooms.fx @@ -1,197 +1,197 @@ -#include "./CameraMatrixBuffer.hlsli" -#include "./VertexInput.hlsli" -#include "./VertexEffects.hlsli" -#include "./Blending.hlsli" -#include "./Math.hlsli" -#include "./ShaderLight.hlsli" -#include "./AnimatedTextures.hlsli" -#include "./Shadows.hlsli" - -cbuffer RoomBuffer : register(b5) -{ - float2 CausticsStartUV; - float2 CausticsScale; - float4 AmbientColor; - ShaderLight RoomLights[MAX_LIGHTS_PER_ROOM]; - int NumRoomLights; - int Water; - int Caustics; - int Padding; -}; - -struct PixelShaderInput -{ - float4 Position: SV_POSITION; - float3 WorldPosition: POSITION0; - float3 Normal: NORMAL; - float2 UV: TEXCOORD0; - float4 Color: COLOR; - float3x3 TBN : TBN; - float Fog : FOG; - float4 PositionCopy : TEXCOORD1; -}; - -Texture2D Texture : register(t0); -SamplerState Sampler : register(s0); - -Texture2D NormalTexture : register(t1); - -Texture2D CausticsTexture : register(t2); - -struct PixelShaderOutput -{ - float4 Color: SV_TARGET0; - float4 Depth: SV_TARGET1; -}; - -PixelShaderInput VS(VertexShaderInput input) -{ - PixelShaderInput output; - - // Setting effect weight on TE side prevents portal vertices from moving. - // Here we just read weight and decide if we should apply refraction or movement effect. - float weight = input.Effects.z; - - // Calculate vertex effects - float wibble = Wibble(input.Effects.xyz, input.Hash); - float3 pos = Move(input.Position, input.Effects.xyz * weight, wibble); - float3 col = Glow(input.Color.xyz, input.Effects.xyz, wibble); - - // Refraction - float4 screenPos = mul(float4(pos, 1.0f), ViewProjection); - float2 clipPos = screenPos.xy / screenPos.w; - - if (CameraUnderwater != Water) - { - float factor = (Frame + clipPos.x * 320); - float xOffset = (sin(factor * PI / 20.0f)) * (screenPos.z / 1024) * 4; - float yOffset = (cos(factor * PI / 20.0f)) * (screenPos.z / 1024) * 4; - screenPos.x += xOffset * weight; - screenPos.y += yOffset * weight; - } - - output.Position = screenPos; - output.Normal = input.Normal; - output.Color = float4(col, input.Color.w); - output.PositionCopy = screenPos; - -#ifdef ANIMATED - - if (Type == 0) - output.UV = GetFrame(input.PolyIndex, input.AnimationFrameOffset); - else - output.UV = input.UV; // TODO: true UVRotate in future? -#else - output.UV = input.UV; -#endif - - output.WorldPosition = input.Position.xyz; - - float3x3 TBN = float3x3(input.Tangent, cross(input.Normal,input.Tangent), input.Normal); - output.TBN = TBN; - - // Apply distance fog - float d = length(CamPositionWS.xyz - output.WorldPosition); - if (FogMaxDistance == 0) - output.Fog = 1; - else - output.Fog = clamp((d - FogMinDistance * 1024) / (FogMaxDistance * 1024 - FogMinDistance * 1024), 0, 1); - - return output; -} - -float3 UnpackNormalMap(float3 compressedNormalMap) -{ - float2 normalXY = compressedNormalMap.rg; - - normalXY = normalXY * float2(2.0f, 2.0f) - float2(1.0f, 1.0f); - float normalZ = sqrt(saturate(1.0f - dot(normalXY, normalXY))); - return float3(normalXY.xy, normalZ); -} - -PixelShaderOutput PS(PixelShaderInput input) -{ - PixelShaderOutput output; - - output.Color = Texture.Sample(Sampler, input.UV); - - DoAlphaTest(output.Color); - - float3 normal = UnpackNormalMap(NormalTexture.Sample(Sampler, input.UV).rgb); - normal = normalize(mul(normal, input.TBN)); - - float3 lighting = input.Color.xyz; - bool doLights = true; - - if (CastShadows) - { - if (Light.Type == LT_POINT) - { - DoPointLightShadow(input.WorldPosition, lighting); - - } - else if (Light.Type == LT_SPOT) - { - DoSpotLightShadow(input.WorldPosition, lighting); - } - } - - DoBlobShadows(input.WorldPosition, lighting); - - if (doLights) - { - for (int i = 0; i < NumRoomLights; i++) - { - float3 lightPos = RoomLights[i].Position.xyz; - float3 color = RoomLights[i].Color.xyz; - float radius = RoomLights[i].Out; - - float3 lightVec = (lightPos - input.WorldPosition); - float distance = length(lightVec); - if (distance > radius) - continue; - - lightVec = normalize(lightVec); - float d = saturate(dot(normal, -lightVec )); - if (d < 0) - continue; - - float attenuation = pow(((radius - distance) / radius), 2); - - lighting += color * attenuation * d; - } - } - - if (Caustics) - { - float3 position = input.WorldPosition.xyz; - - float fracX = position.x - floor(position.x / 2048.0f) * 2048.0f; - float fracY = position.y - floor(position.y / 2048.0f) * 2048.0f; - float fracZ = position.z - floor(position.z / 2048.0f) * 2048.0f; - - float attenuation = saturate(dot(float3(0.0f, 1.0f, 0.0f), normal)); - - float3 blending = abs(normal); - blending = normalize(max(blending, 0.00001f)); - float b = (blending.x + blending.y + blending.z); - blending /= float3(b, b, b); - - float3 p = float3(fracX, fracY, fracZ) / 2048.0f; - float3 xaxis = CausticsTexture.Sample(Sampler, CausticsStartUV + float2(p.y * CausticsScale.x, p.z * CausticsScale.y)).xyz; - float3 yaxis = CausticsTexture.Sample(Sampler, CausticsStartUV + float2(p.x * CausticsScale.x, p.z * CausticsScale.y)).xyz; - float3 zaxis = CausticsTexture.Sample(Sampler, CausticsStartUV + float2(p.x * CausticsScale.x, p.y * CausticsScale.y)).xyz; - - lighting += float3((xaxis * blending.x + yaxis * blending.y + zaxis * blending.z).xyz) * attenuation * 2.0f; - } - - output.Color.xyz = saturate(output.Color.xyz * lighting); - - output.Depth = output.Color.w > 0.0f ? - float4(input.PositionCopy.z / input.PositionCopy.w, 0.0f, 0.0f, 1.0f) : - float4(0.0f, 0.0f, 0.0f, 0.0f); - - output.Color = DoFog(output.Color, FogColor, input.Fog); - - return output; -} +#include "./CameraMatrixBuffer.hlsli" +#include "./VertexInput.hlsli" +#include "./VertexEffects.hlsli" +#include "./Blending.hlsli" +#include "./Math.hlsli" +#include "./AnimatedTextures.hlsli" +#include "./Shadows.hlsli" +#include "./ShaderLight.hlsli" + +cbuffer RoomBuffer : register(b5) +{ + float2 CausticsStartUV; + float2 CausticsScale; + float4 AmbientColor; + ShaderLight RoomLights[MAX_LIGHTS_PER_ROOM]; + int NumRoomLights; + int Water; + int Caustics; + int Padding; +}; + +struct PixelShaderInput +{ + float4 Position: SV_POSITION; + float3 WorldPosition: POSITION0; + float3 Normal: NORMAL; + float2 UV: TEXCOORD0; + float4 Color: COLOR; + float3x3 TBN : TBN; + float4 PositionCopy : TEXCOORD1; + float4 FogBulbs : TEXCOORD2; + float DistanceFog : FOG; +}; + +Texture2D Texture : register(t0); +SamplerState Sampler : register(s0); + +Texture2D NormalTexture : register(t1); + +Texture2D CausticsTexture : register(t2); + +struct PixelShaderOutput +{ + float4 Color: SV_TARGET0; + float4 Depth: SV_TARGET1; +}; + +PixelShaderInput VS(VertexShaderInput input) +{ + PixelShaderInput output; + + // Setting effect weight on TE side prevents portal vertices from moving. + // Here we just read weight and decide if we should apply refraction or movement effect. + float weight = input.Effects.z; + + // Calculate vertex effects + float wibble = Wibble(input.Effects.xyz, input.Hash); + float3 pos = Move(input.Position, input.Effects.xyz * weight, wibble); + float3 col = Glow(input.Color.xyz, input.Effects.xyz, wibble); + + // Refraction + float4 screenPos = mul(float4(pos, 1.0f), ViewProjection); + float2 clipPos = screenPos.xy / screenPos.w; + + if (CameraUnderwater != Water) + { + float factor = (Frame + clipPos.x * 320); + float xOffset = (sin(factor * PI / 20.0f)) * (screenPos.z / 1024) * 4; + float yOffset = (cos(factor * PI / 20.0f)) * (screenPos.z / 1024) * 4; + screenPos.x += xOffset * weight; + screenPos.y += yOffset * weight; + } + + output.Position = screenPos; + output.Normal = input.Normal; + output.Color = float4(col, input.Color.w); + output.PositionCopy = screenPos; + +#ifdef ANIMATED + + if (Type == 0) + output.UV = GetFrame(input.PolyIndex, input.AnimationFrameOffset); + else + output.UV = input.UV; // TODO: true UVRotate in future? +#else + output.UV = input.UV; +#endif + + output.WorldPosition = input.Position.xyz; + + float3x3 TBN = float3x3(input.Tangent, cross(input.Normal,input.Tangent), input.Normal); + output.TBN = TBN; + + output.FogBulbs = DoFogBulbsForVertex(output.WorldPosition); + output.DistanceFog = DoDistanceFogForVertex(output.WorldPosition); + + return output; +} + +float3 UnpackNormalMap(float3 compressedNormalMap) +{ + float2 normalXY = compressedNormalMap.rg; + + normalXY = normalXY * float2(2.0f, 2.0f) - float2(1.0f, 1.0f); + float normalZ = sqrt(saturate(1.0f - dot(normalXY, normalXY))); + return float3(normalXY.xy, normalZ); +} + +PixelShaderOutput PS(PixelShaderInput input) +{ + PixelShaderOutput output; + + output.Color = Texture.Sample(Sampler, input.UV); + + DoAlphaTest(output.Color); + + float3 normal = UnpackNormalMap(NormalTexture.Sample(Sampler, input.UV).rgb); + normal = normalize(mul(normal, input.TBN)); + + float3 lighting = input.Color.xyz; + bool doLights = true; + + if (CastShadows) + { + if (Light.Type == LT_POINT) + { + DoPointLightShadow(input.WorldPosition, lighting); + + } + else if (Light.Type == LT_SPOT) + { + DoSpotLightShadow(input.WorldPosition, lighting); + } + } + + DoBlobShadows(input.WorldPosition, lighting); + + if (doLights) + { + for (int i = 0; i < NumRoomLights; i++) + { + float3 lightPos = RoomLights[i].Position.xyz; + float3 color = RoomLights[i].Color.xyz; + float radius = RoomLights[i].Out; + + float3 lightVec = (lightPos - input.WorldPosition); + float distance = length(lightVec); + if (distance > radius) + continue; + + lightVec = normalize(lightVec); + float d = saturate(dot(normal, -lightVec )); + if (d < 0) + continue; + + float attenuation = pow(((radius - distance) / radius), 2); + + lighting += color * attenuation * d; + } + } + + if (Caustics) + { + float3 position = input.WorldPosition.xyz; + + float fracX = position.x - floor(position.x / 2048.0f) * 2048.0f; + float fracY = position.y - floor(position.y / 2048.0f) * 2048.0f; + float fracZ = position.z - floor(position.z / 2048.0f) * 2048.0f; + + float attenuation = saturate(dot(float3(0.0f, 1.0f, 0.0f), normal)); + + float3 blending = abs(normal); + blending = normalize(max(blending, 0.00001f)); + float b = (blending.x + blending.y + blending.z); + blending /= float3(b, b, b); + + float3 p = float3(fracX, fracY, fracZ) / 2048.0f; + float3 xaxis = CausticsTexture.Sample(Sampler, CausticsStartUV + float2(p.y * CausticsScale.x, p.z * CausticsScale.y)).xyz; + float3 yaxis = CausticsTexture.Sample(Sampler, CausticsStartUV + float2(p.x * CausticsScale.x, p.z * CausticsScale.y)).xyz; + float3 zaxis = CausticsTexture.Sample(Sampler, CausticsStartUV + float2(p.x * CausticsScale.x, p.y * CausticsScale.y)).xyz; + + lighting += float3((xaxis * blending.x + yaxis * blending.y + zaxis * blending.z).xyz) * attenuation * 2.0f; + } + + output.Depth = output.Color.w > 0.0f ? + float4(input.PositionCopy.z / input.PositionCopy.w, 0.0f, 0.0f, 1.0f) : + float4(0.0f, 0.0f, 0.0f, 0.0f); + + lighting -= float3(input.FogBulbs.w, input.FogBulbs.w, input.FogBulbs.w); + lighting = saturate(lighting); + output.Color.xyz = output.Color.xyz * lighting; + + output.Color = DoFogBulbsForPixel(output.Color, float4(input.FogBulbs.xyz, 1.0f)); + output.Color = DoDistanceFogForPixel(output.Color, FogColor, input.DistanceFog); + + return output; +} diff --git a/TombEngine/Shaders/DX11_Sky.fx b/TombEngine/Shaders/DX11_Sky.fx index ee6e70976..c2a8e6bcd 100644 --- a/TombEngine/Shaders/DX11_Sky.fx +++ b/TombEngine/Shaders/DX11_Sky.fx @@ -1,45 +1,54 @@ -#include "./CameraMatrixBuffer.hlsli" -#include "./Blending.hlsli" -#include "./VertexInput.hlsli" - -cbuffer StaticMatrixBuffer : register(b8) -{ - float4x4 World; - float4 Color; - float4 AmbientLight; - int LightType; -}; - -struct PixelShaderInput -{ - float4 Position: SV_POSITION; - float3 Normal: NORMAL; - float2 UV: TEXCOORD; - float4 Color: COLOR; -}; - -Texture2D Texture : register(t0); -SamplerState Sampler : register(s0); - -PixelShaderInput VS(VertexShaderInput input) -{ - PixelShaderInput output; - - output.Position = mul(mul(float4(input.Position, 1.0f), World), ViewProjection); - output.Normal = input.Normal; - output.Color = input.Color; - output.UV = input.UV; - - return output; -} - -float4 PS(PixelShaderInput input) : SV_TARGET -{ - float4 output = Texture.Sample(Sampler, input.UV); - - DoAlphaTest(output); - - output.xyz = output.xyz * Color; - - return output; +#include "./CameraMatrixBuffer.hlsli" +#include "./Blending.hlsli" +#include "./VertexInput.hlsli" +#include "./Math.hlsli" +#include "./ShaderLight.hlsli" + +cbuffer StaticMatrixBuffer : register(b8) +{ + float4x4 World; + float4 Color; + float4 AmbientLight; + int LightType; +}; + +struct PixelShaderInput +{ + float4 Position: SV_POSITION; + float3 Normal: NORMAL; + float2 UV: TEXCOORD; + float4 Color: COLOR; + float4 FogBulbs : TEXCOORD3; +}; + +Texture2D Texture : register(t0); +SamplerState Sampler : register(s0); + +PixelShaderInput VS(VertexShaderInput input) +{ + PixelShaderInput output; + + float4 worldPosition = mul(float4(input.Position, 1.0f), World); + + output.Position = mul(worldPosition, ViewProjection); + output.Normal = input.Normal; + output.Color = input.Color; + output.UV = input.UV; + output.FogBulbs = DoFogBulbsForSky(worldPosition); + + return output; +} + +float4 PS(PixelShaderInput input) : SV_TARGET +{ + float4 output = Texture.Sample(Sampler, input.UV); + + DoAlphaTest(output); + + output.xyz = output.xyz * Color; + output.xyz -= float3(input.FogBulbs.w, input.FogBulbs.w, input.FogBulbs.w) * 2.0f; + output.xyz = saturate(output.xyz); + output.xyz += saturate(input.FogBulbs.xyz); + + return output; } \ No newline at end of file diff --git a/TombEngine/Shaders/DX11_Sprites.fx b/TombEngine/Shaders/DX11_Sprites.fx index 34a66a1a1..154b7756b 100644 --- a/TombEngine/Shaders/DX11_Sprites.fx +++ b/TombEngine/Shaders/DX11_Sprites.fx @@ -1,85 +1,87 @@ -#include "./CameraMatrixBuffer.hlsli" -#include "./Blending.hlsli" -#include "./VertexInput.hlsli" -#include "./Math.hlsli" - -// NOTE: This shader is used for all 3D and alpha blended sprites, because we send aleady transformed vertices to the GPU -// instead of instances - -#define FADE_FACTOR .789f - -cbuffer SpriteBuffer : register(b9) -{ - float IsSoftParticle; - int RenderType; -}; - -struct PixelShaderInput -{ - float4 Position: SV_POSITION; - float3 Normal: NORMAL; - float2 UV: TEXCOORD1; - float4 Color: COLOR; - float Fog : FOG; - float4 PositionCopy: TEXCOORD2; -}; - -Texture2D Texture : register(t0); -SamplerState Sampler : register(s0); - -Texture2D DepthMap : register(t6); -SamplerState DepthMapSampler : register(s6); - -PixelShaderInput VS(VertexShaderInput input) -{ - PixelShaderInput output; - - float4 worldPosition = float4(input.Position, 1.0f); - - output.Position = mul(worldPosition, ViewProjection); - output.PositionCopy = output.Position; - output.Normal = input.Normal; - output.Color = input.Color; - output.UV = input.UV; - - float4 d = length(CamPositionWS - worldPosition); - if (FogMaxDistance == 0) - output.Fog = 1; - else - output.Fog = clamp((d - FogMinDistance * 1024) / (FogMaxDistance * 1024 - FogMinDistance * 1024), 0, 1); - - return output; -} - -float4 PS(PixelShaderInput input) : SV_TARGET -{ - float4 output = Texture.Sample(Sampler, input.UV) * input.Color; - - DoAlphaTest(output); - - if (IsSoftParticle == 1) - { - float particleDepth = input.PositionCopy.z / input.PositionCopy.w; - input.PositionCopy.xy /= input.PositionCopy.w; - float2 texCoord = 0.5f * (float2(input.PositionCopy.x, -input.PositionCopy.y) + 1); - float sceneDepth = DepthMap.Sample(DepthMapSampler, texCoord).r; - - sceneDepth = LinearizeDepth(sceneDepth, NearPlane, FarPlane); - particleDepth = LinearizeDepth(particleDepth, NearPlane, FarPlane); - - if (particleDepth - sceneDepth > 0.01f) - discard; - - float fade = (sceneDepth - particleDepth) * 1024.0f; - output.w = min(output.w, fade); - } - - if (RenderType == 1) - { - output = DoLaserBarrierEffect(input.Position, output, input.UV, FADE_FACTOR, Frame); - } - - output = DoFog(output, float4(0.0f, 0.0f, 0.0f, 0.0f), input.Fog); - - return output; -} +#include "./CameraMatrixBuffer.hlsli" +#include "./Blending.hlsli" +#include "./VertexInput.hlsli" +#include "./Math.hlsli" +#include "./ShaderLight.hlsli" + +// NOTE: This shader is used for all 3D and alpha blended sprites, because we send aleady transformed vertices to the GPU +// instead of instances + +#define FADE_FACTOR .789f + +cbuffer SpriteBuffer : register(b9) +{ + float IsSoftParticle; + int RenderType; +}; + +struct PixelShaderInput +{ + float4 Position: SV_POSITION; + float3 Normal: NORMAL; + float2 UV: TEXCOORD1; + float4 Color: COLOR; + float4 PositionCopy: TEXCOORD2; + float4 FogBulbs : TEXCOORD3; + float DistanceFog : FOG; +}; + +Texture2D Texture : register(t0); +SamplerState Sampler : register(s0); + +Texture2D DepthMap : register(t6); +SamplerState DepthMapSampler : register(s6); + +PixelShaderInput VS(VertexShaderInput input) +{ + PixelShaderInput output; + + float4 worldPosition = float4(input.Position, 1.0f); + + output.Position = mul(worldPosition, ViewProjection); + output.PositionCopy = output.Position; + output.Normal = input.Normal; + output.Color = input.Color; + output.UV = input.UV; + + output.FogBulbs = DoFogBulbsForVertex(worldPosition); + output.DistanceFog = DoDistanceFogForVertex(worldPosition); + + return output; +} + +float4 PS(PixelShaderInput input) : SV_TARGET +{ + float4 output = Texture.Sample(Sampler, input.UV) * input.Color; + + DoAlphaTest(output); + + if (IsSoftParticle == 1) + { + float particleDepth = input.PositionCopy.z / input.PositionCopy.w; + input.PositionCopy.xy /= input.PositionCopy.w; + float2 texCoord = 0.5f * (float2(input.PositionCopy.x, -input.PositionCopy.y) + 1); + float sceneDepth = DepthMap.Sample(DepthMapSampler, texCoord).r; + + sceneDepth = LinearizeDepth(sceneDepth, NearPlane, FarPlane); + particleDepth = LinearizeDepth(particleDepth, NearPlane, FarPlane); + + if (particleDepth - sceneDepth > 0.01f) + discard; + + float fade = (sceneDepth - particleDepth) * 1024.0f; + output.w = min(output.w, fade); + } + + if (RenderType == 1) + { + output = DoLaserBarrierEffect(input.Position, output, input.UV, FADE_FACTOR, Frame); + } + + output.xyz -= float3(input.FogBulbs.w, input.FogBulbs.w, input.FogBulbs.w); + output.xyz = saturate(output.xyz); + + output = DoDistanceFogForPixel(output, float4(0.0f, 0.0f, 0.0f, 0.0f), input.DistanceFog); + + return output; +} diff --git a/TombEngine/Shaders/DX11_Statics.fx b/TombEngine/Shaders/DX11_Statics.fx index ba60b3023..95a5c8d81 100644 --- a/TombEngine/Shaders/DX11_Statics.fx +++ b/TombEngine/Shaders/DX11_Statics.fx @@ -1,97 +1,96 @@ -#include "./Math.hlsli" -#include "./CameraMatrixBuffer.hlsli" -#include "./ShaderLight.hlsli" -#include "./VertexEffects.hlsli" -#include "./VertexInput.hlsli" -#include "./Blending.hlsli" - -cbuffer StaticMatrixBuffer : register(b8) -{ - float4x4 World; - float4 Color; - float4 AmbientLight; - ShaderLight StaticLights[MAX_LIGHTS_PER_ITEM]; - int NumStaticLights; - int LightType; -}; - -struct PixelShaderInput -{ - float4 Position: SV_POSITION; - float3 Normal: NORMAL; - float3 WorldPosition: POSITION; - float2 UV: TEXCOORD1; - float4 Color: COLOR; - float Sheen: SHEEN; - float Fog: FOG; - float4 PositionCopy: TEXCOORD2; -}; - -struct PixelShaderOutput -{ - float4 Color: SV_TARGET0; - float4 Depth: SV_TARGET1; -}; - -Texture2D Texture : register(t0); -SamplerState Sampler : register(s0); - -PixelShaderInput VS(VertexShaderInput input) -{ - PixelShaderInput output; - - float4 worldPosition = (mul(float4(input.Position, 1.0f), World)); - float3 normal = (mul(float4(input.Normal, 0.0f), World).xyz); - - output.Normal = normal; - output.UV = input.UV; - output.WorldPosition = worldPosition; - - float3 pos = Move(input.Position, input.Effects.xyz, input.Hash); - float3 col = Glow(input.Color.xyz, input.Effects.xyz, input.Hash); - - output.Position = mul(worldPosition, ViewProjection); - output.Color = float4(col, input.Color.w); - output.Color *= Color; - - // Apply distance fog - float4 d = length(CamPositionWS - worldPosition); - if (FogMaxDistance == 0) - output.Fog = 1; - else - output.Fog = clamp((d - FogMinDistance * 1024) / (FogMaxDistance * 1024 - FogMinDistance * 1024), 0, 1); - - output.PositionCopy = output.Position; - output.Sheen = input.Effects.w; - return output; -} - -PixelShaderOutput PS(PixelShaderInput input) -{ - PixelShaderOutput output; - - float4 tex = Texture.Sample(Sampler, input.UV); - DoAlphaTest(tex); - - float3 color = (LightType == 0) ? - CombineLights( - AmbientLight.xyz, - input.Color.xyz, - tex.xyz, - input.WorldPosition, - normalize(input.Normal), - input.Sheen, - StaticLights, - NumStaticLights) : - StaticLight(input.Color.xyz, tex.xyz); - - output.Color = float4(color, tex.w); - - output.Depth = tex.w > 0.0f ? - float4(input.PositionCopy.z / input.PositionCopy.w, 0.0f, 0.0f, 1.0f) : - float4(0.0f, 0.0f, 0.0f, 0.0f); - - output.Color = DoFog(output.Color, FogColor, input.Fog); - - return output; +#include "./Math.hlsli" +#include "./CameraMatrixBuffer.hlsli" +#include "./ShaderLight.hlsli" +#include "./VertexEffects.hlsli" +#include "./VertexInput.hlsli" +#include "./Blending.hlsli" + +cbuffer StaticMatrixBuffer : register(b8) +{ + float4x4 World; + float4 Color; + float4 AmbientLight; + ShaderLight StaticLights[MAX_LIGHTS_PER_ITEM]; + int NumStaticLights; + int LightType; +}; + +struct PixelShaderInput +{ + float4 Position: SV_POSITION; + float3 Normal: NORMAL; + float3 WorldPosition: POSITION; + float2 UV: TEXCOORD1; + float4 Color: COLOR; + float Sheen: SHEEN; + float4 PositionCopy: TEXCOORD2; + float4 FogBulbs : TEXCOORD3; + float DistanceFog : FOG; +}; + +struct PixelShaderOutput +{ + float4 Color: SV_TARGET0; + float4 Depth: SV_TARGET1; +}; + +Texture2D Texture : register(t0); +SamplerState Sampler : register(s0); + +PixelShaderInput VS(VertexShaderInput input) +{ + PixelShaderInput output; + + float4 worldPosition = (mul(float4(input.Position, 1.0f), World)); + float3 normal = (mul(float4(input.Normal, 0.0f), World).xyz); + + output.Normal = normal; + output.UV = input.UV; + output.WorldPosition = worldPosition; + + float3 pos = Move(input.Position, input.Effects.xyz, input.Hash); + float3 col = Glow(input.Color.xyz, input.Effects.xyz, input.Hash); + + output.Position = mul(worldPosition, ViewProjection); + output.Color = float4(col, input.Color.w); + output.Color *= Color; + + output.FogBulbs = DoFogBulbsForVertex(worldPosition); + output.DistanceFog = DoDistanceFogForVertex(worldPosition); + + output.PositionCopy = output.Position; + output.Sheen = input.Effects.w; + + return output; +} + +PixelShaderOutput PS(PixelShaderInput input) +{ + PixelShaderOutput output; + + float4 tex = Texture.Sample(Sampler, input.UV); + DoAlphaTest(tex); + + float3 color = (LightType == 0) ? + CombineLights( + AmbientLight.xyz, + input.Color.xyz, + tex.xyz, + input.WorldPosition, + normalize(input.Normal), + input.Sheen, + StaticLights, + NumStaticLights, + input.FogBulbs.w) : + StaticLight(input.Color.xyz, tex.xyz, input.FogBulbs.w); + + output.Color = float4(color, tex.w); + output.Color = DoFogBulbsForPixel(output.Color, float4(input.FogBulbs.xyz, 1.0f)); + output.Color = DoDistanceFogForPixel(output.Color, FogColor, input.DistanceFog); + + output.Depth = tex.w > 0.0f ? + float4(input.PositionCopy.z / input.PositionCopy.w, 0.0f, 0.0f, 1.0f) : + float4(0.0f, 0.0f, 0.0f, 0.0f); + + return output; } \ No newline at end of file diff --git a/TombEngine/Shaders/Math.hlsli b/TombEngine/Shaders/Math.hlsli index 95daf2bbc..a1962d45e 100644 --- a/TombEngine/Shaders/Math.hlsli +++ b/TombEngine/Shaders/Math.hlsli @@ -5,6 +5,41 @@ #define PI2 6.2831853071795864769252867665590057683943387987502116419498891846 #define OCTAVES 6 +#define LT_SUN 0 +#define LT_POINT 1 +#define LT_SPOT 2 +#define LT_SHADOW 3 + +#define MAX_LIGHTS_PER_ROOM 48 +#define MAX_LIGHTS_PER_ITEM 8 +#define MAX_FOG_BULBS 32 +#define SPEC_FACTOR 64 + +struct ShaderLight +{ + float3 Position; + unsigned int Type; + float3 Color; + float Intensity; + float3 Direction; + float In; + float Out; + float InRange; + float OutRange; + float Padding; +}; + +struct ShaderFogBulb +{ + float3 Position; + float Density; + float3 Color; + float SquaredRadius; + float3 FogBulbToCameraVector; + float SquaredCameraToFogBulbDistance; + float4 Padding2; +}; + float Luma(float3 color) { // Use Rec.709 trichromat formula to get perceptive luma value. diff --git a/TombEngine/Shaders/ShaderLight.hlsli b/TombEngine/Shaders/ShaderLight.hlsli index ff908aaa7..3aab7fe50 100644 --- a/TombEngine/Shaders/ShaderLight.hlsli +++ b/TombEngine/Shaders/ShaderLight.hlsli @@ -1,28 +1,5 @@ #include "./Math.hlsli" -#define LT_SUN 0 -#define LT_POINT 1 -#define LT_SPOT 2 -#define LT_SHADOW 3 - -#define MAX_LIGHTS_PER_ROOM 48 -#define MAX_LIGHTS_PER_ITEM 8 -#define SPEC_FACTOR 64 - -struct ShaderLight -{ - float3 Position; - unsigned int Type; - float3 Color; - float Intensity; - float3 Direction; - float In; - float Out; - float InRange; - float OutRange; - float Padding; -}; - float3 DoSpecularPoint(float3 pos, float3 n, ShaderLight light, float strength) { if ((strength <= 0.0)) @@ -210,7 +187,215 @@ float3 DoDirectionalLight(float3 pos, float3 n, ShaderLight light) return float3(0, 0, 0); } -float3 CombineLights(float3 ambient, float3 vertex, float3 tex, float3 pos, float3 normal, float sheen, const ShaderLight lights[MAX_LIGHTS_PER_ITEM], int numLights) +float DoFogBulb(float3 pos, ShaderFogBulb bulb) +{ + // We find the intersection points p0 and p1 between the sphere of the fog bulb and the ray from camera to vertex. + // The magnitude of (p2 - p1) is used as the fog factor. + // We need to consider different cases for getting the correct points. + // We use the geometric solution as in legacy engines. An analytic solution also exists. + + float3 p0; + float3 p1; + + p0 = p1 = float3(0, 0, 0); + + float3 bulbToVertex = pos - bulb.Position; + float bulbToVertexSquaredDistance = pow(pos.x - bulb.Position.x, 2) + pow(pos.y - bulb.Position.y, 2) + pow(pos.z - bulb.Position.z, 2); + float3 cameraToVertexDirection = normalize(pos - CamPositionWS); + float cameraToVertexSquaredDistance = pow(pos.x - CamPositionWS.x, 2) + pow(pos.y - CamPositionWS.y, 2) + pow(pos.z - CamPositionWS.z, 2); + + if (bulb.SquaredCameraToFogBulbDistance < bulb.SquaredRadius) + { + // Camera is INSIDE the bulb + + if (bulbToVertexSquaredDistance < bulb.SquaredRadius) + { + // Vertex is INSIDE the bulb + + p0 = CamPositionWS; + p1 = pos; + } + else + { + // Vertex is OUTSIDE the bulb + + float Tca = dot(bulb.FogBulbToCameraVector, cameraToVertexDirection); + float d2 = bulb.SquaredCameraToFogBulbDistance - Tca * Tca; + float Thc = sqrt(bulb.SquaredRadius - d2); + float t1 = Tca + Thc; + + p0 = CamPositionWS; + p1 = CamPositionWS + cameraToVertexDirection * t1; + } + } + else + { + // Camera is OUTSIDE the bulb + + if (bulbToVertexSquaredDistance < bulb.SquaredRadius) + { + // Vertex is INSIDE the bulb + + float Tca = dot(bulb.FogBulbToCameraVector, cameraToVertexDirection); + float d2 = bulb.SquaredCameraToFogBulbDistance - Tca * Tca; + float Thc = sqrt(bulb.SquaredRadius - d2); + float t0 = Tca - Thc; + + p0 = CamPositionWS + cameraToVertexDirection * t0; + p1 = pos; + } + else + { + // Vertex is OUTSIDE the bulb + + float Tca = dot(bulb.FogBulbToCameraVector, cameraToVertexDirection); + + if (Tca > 0 && cameraToVertexSquaredDistance > Tca * Tca) + { + float d2 = bulb.SquaredCameraToFogBulbDistance - Tca * Tca; + if (d2 < bulb.SquaredRadius) + { + float Thc = sqrt(bulb.SquaredRadius - d2); + + float t0 = Tca - Thc; + float t1 = Tca + Thc; + + p0 = CamPositionWS + cameraToVertexDirection * t0; + p1 = CamPositionWS + cameraToVertexDirection * t1; + } + else + { + return 0; + } + } + else + { + return 0; + } + } + } + + float fog = length(p1 - p0) * bulb.Density / 255.0f; + + return fog; +} + +float DoFogBulbForSky(float3 pos, ShaderFogBulb bulb) +{ + // We find the intersection points p0 and p1 between the sphere of the fog bulb and the ray from camera to vertex. + // The magnitude of (p2 - p1) is used as the fog factor. + // We need to consider different cases for getting the correct points. + // We use the geometric solution as in legacy engines. An analytic solution also exists. + + float3 p0; + float3 p1; + + p0 = p1 = float3(0, 0, 0); + + float3 cameraToVertexDirection = normalize(pos - CamPositionWS); + + if (bulb.SquaredCameraToFogBulbDistance < bulb.SquaredRadius) + { + // Camera is INSIDE the bulb + + // Vertex is ALWAYS OUTSIDE the bulb + + float Tca = dot(bulb.FogBulbToCameraVector, cameraToVertexDirection); + float d2 = bulb.SquaredCameraToFogBulbDistance - Tca * Tca; + float Thc = sqrt(bulb.SquaredRadius - d2); + float t1 = Tca + Thc; + + p0 = CamPositionWS; + p1 = CamPositionWS + cameraToVertexDirection * t1; + } + else + { + // Camera is OUTSIDE the bulb + + // Vertex is ALWAYS OUTSIDE the bulb + + float Tca = dot(bulb.FogBulbToCameraVector, cameraToVertexDirection); + + if (Tca > 0) + { + float d2 = bulb.SquaredCameraToFogBulbDistance - Tca * Tca; + if (d2 < bulb.SquaredRadius) + { + float Thc = sqrt(bulb.SquaredRadius - d2); + + float t0 = Tca - Thc; + float t1 = Tca + Thc; + + p0 = CamPositionWS + cameraToVertexDirection * t0; + p1 = CamPositionWS + cameraToVertexDirection * t1; + } + else + { + return 0; + } + } + else + { + return 0; + } + } + + float fog = length(p1 - p0) * bulb.Density / 255.0f; + + return fog; +} + +float DoDistanceFogForVertex(float3 pos) +{ + float fog = 0.0f; + + if (FogMaxDistance > 0.0f) + { + float d = length(CamPositionWS.xyz - pos); + fog = clamp((d - FogMinDistance * 1024) / (FogMaxDistance * 1024 - FogMinDistance * 1024), 0, 1); + } + + return fog; +} + +float4 DoFogBulbsForVertex(float3 pos) +{ + float4 fog = float4(0.0f, 0.0f, 0.0f, 0.0f); + + for (int i = 0; i < NumFogBulbs; i++) + { + float fogFactor = DoFogBulb(pos, FogBulbs[i]); + fog.xyz += FogBulbs[i].Color.xyz * fogFactor; + fog.w += fogFactor; + if (fog.w >= 1.0f) + { + break; + } + } + + return fog; +} + +float4 DoFogBulbsForSky(float3 pos) +{ + float4 fog = float4(0.0f, 0.0f, 0.0f, 0.0f); + + for (int i = 0; i < NumFogBulbs; i++) + { + float fogFactor = DoFogBulbForSky(pos, FogBulbs[i]); + fog.xyz += FogBulbs[i].Color.xyz * fogFactor; + fog.w += fogFactor; + if (fog.w >= 1.0f) + { + break; + } + } + + return fog; +} + +float3 CombineLights(float3 ambient, float3 vertex, float3 tex, float3 pos, float3 normal, float sheen, + const ShaderLight lights[MAX_LIGHTS_PER_ITEM], int numLights, float fogBulbsDensity) { float3 diffuse = 0; float3 shadow = 0; @@ -247,10 +432,16 @@ float3 CombineLights(float3 ambient, float3 vertex, float3 tex, float3 pos, floa float3 ambTex = saturate(ambient - shadow) * tex; float3 combined = ambTex + diffuse + spec; - return (combined * vertex); + combined -= float3(fogBulbsDensity, fogBulbsDensity, fogBulbsDensity); + + return saturate(combined * vertex); } -float3 StaticLight(float3 vertex, float3 tex) +float3 StaticLight(float3 vertex, float3 tex, float fogBulbsDensity) { - return saturate(tex * vertex); -} + float3 result = tex * vertex; + + result -= float3(fogBulbsDensity, fogBulbsDensity, fogBulbsDensity); + + return saturate(result); +} \ No newline at end of file diff --git a/TombEngine/Specific/savegame/flatbuffers/ten_itemdata_generated.h b/TombEngine/Specific/savegame/flatbuffers/ten_itemdata_generated.h index 40b2c8b29..2de5e5a85 100644 --- a/TombEngine/Specific/savegame/flatbuffers/ten_itemdata_generated.h +++ b/TombEngine/Specific/savegame/flatbuffers/ten_itemdata_generated.h @@ -1,3979 +1,3979 @@ -// automatically generated by the FlatBuffers compiler, do not modify - - -#ifndef FLATBUFFERS_GENERATED_TENITEMDATA_TEN_SAVE_H_ -#define FLATBUFFERS_GENERATED_TENITEMDATA_TEN_SAVE_H_ - -#include "flatbuffers/flatbuffers.h" - -namespace TEN { -namespace Save { - -struct Position; - -struct CreatureTarget; -struct CreatureTargetBuilder; -struct CreatureTargetT; - -struct Creature; -struct CreatureBuilder; -struct CreatureT; - -struct LaserHead; -struct LaserHeadBuilder; -struct LaserHeadT; - -struct QuadBike; -struct QuadBikeBuilder; -struct QuadBikeT; - -struct BigGun; -struct BigGunBuilder; -struct BigGunT; - -struct Motorbike; -struct MotorbikeBuilder; -struct MotorbikeT; - -struct Jeep; -struct JeepBuilder; -struct JeepT; - -struct Kayak; -struct KayakBuilder; -struct KayakT; - -struct Door; -struct DoorBuilder; -struct DoorT; - -struct Skidoo; -struct SkidooBuilder; -struct SkidooT; - -struct UPV; -struct UPVBuilder; -struct UPVT; - -struct Motorboat; -struct MotorboatBuilder; -struct MotorboatT; - -struct GameVector; -struct GameVectorBuilder; -struct GameVectorT; - -struct Wraith; -struct WraithBuilder; -struct WraithT; - -struct Rubberboat; -struct RubberboatBuilder; -struct RubberboatT; - -struct Pushable; -struct PushableBuilder; -struct PushableT; - -struct Minecart; -struct MinecartBuilder; -struct MinecartT; - -struct LaraInfo; -struct LaraInfoBuilder; -struct LaraInfoT; - -struct ItemNumber; -struct ItemNumberBuilder; -struct ItemNumberT; - -struct Short; -struct ShortBuilder; -struct ShortT; - -struct Int; -struct IntBuilder; -struct IntT; - -struct Float; -struct FloatBuilder; -struct FloatT; - -struct ShortArray; -struct ShortArrayBuilder; -struct ShortArrayT; - -struct Vector2; - -struct Vector3; - -struct Vector4; - -enum class ItemData : uint8_t { - NONE = 0, - Int = 1, - Short = 2, - Float = 3, - ShortArray = 4, - ItemNumber = 5, - Creature = 6, - LaserHead = 7, - QuadBike = 8, - BigGun = 9, - Motorbike = 10, - Jeep = 11, - LaraInfo = 12, - Kayak = 13, - Door = 14, - Skidoo = 15, - UPV = 16, - Motorboat = 17, - GameVector = 18, - Wraith = 19, - Rubberboat = 20, - Pushable = 21, - Minecart = 22, - MIN = NONE, - MAX = Minecart -}; - -inline const ItemData (&EnumValuesItemData())[23] { - static const ItemData values[] = { - ItemData::NONE, - ItemData::Int, - ItemData::Short, - ItemData::Float, - ItemData::ShortArray, - ItemData::ItemNumber, - ItemData::Creature, - ItemData::LaserHead, - ItemData::QuadBike, - ItemData::BigGun, - ItemData::Motorbike, - ItemData::Jeep, - ItemData::LaraInfo, - ItemData::Kayak, - ItemData::Door, - ItemData::Skidoo, - ItemData::UPV, - ItemData::Motorboat, - ItemData::GameVector, - ItemData::Wraith, - ItemData::Rubberboat, - ItemData::Pushable, - ItemData::Minecart - }; - return values; -} - -inline const char * const *EnumNamesItemData() { - static const char * const names[24] = { - "NONE", - "Int", - "Short", - "Float", - "ShortArray", - "ItemNumber", - "Creature", - "LaserHead", - "QuadBike", - "BigGun", - "Motorbike", - "Jeep", - "LaraInfo", - "Kayak", - "Door", - "Skidoo", - "UPV", - "Motorboat", - "GameVector", - "Wraith", - "Rubberboat", - "Pushable", - "Minecart", - nullptr - }; - return names; -} - -inline const char *EnumNameItemData(ItemData e) { - if (flatbuffers::IsOutRange(e, ItemData::NONE, ItemData::Minecart)) return ""; - const size_t index = static_cast(e); - return EnumNamesItemData()[index]; -} - -template struct ItemDataTraits { - static const ItemData enum_value = ItemData::NONE; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Int; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Short; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Float; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::ShortArray; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::ItemNumber; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Creature; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::LaserHead; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::QuadBike; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::BigGun; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Motorbike; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Jeep; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::LaraInfo; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Kayak; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Door; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Skidoo; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::UPV; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Motorboat; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::GameVector; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Wraith; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Rubberboat; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Pushable; -}; - -template<> struct ItemDataTraits { - static const ItemData enum_value = ItemData::Minecart; -}; - -struct ItemDataUnion { - ItemData type; - void *value; - - ItemDataUnion() : type(ItemData::NONE), value(nullptr) {} - ItemDataUnion(ItemDataUnion&& u) FLATBUFFERS_NOEXCEPT : - type(ItemData::NONE), value(nullptr) - { std::swap(type, u.type); std::swap(value, u.value); } - ItemDataUnion(const ItemDataUnion &); - ItemDataUnion &operator=(const ItemDataUnion &u) - { ItemDataUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; } - ItemDataUnion &operator=(ItemDataUnion &&u) FLATBUFFERS_NOEXCEPT - { std::swap(type, u.type); std::swap(value, u.value); return *this; } - ~ItemDataUnion() { Reset(); } - - void Reset(); - -#ifndef FLATBUFFERS_CPP98_STL - template - void Set(T&& val) { - using RT = typename std::remove_reference::type; - Reset(); - type = ItemDataTraits::enum_value; - if (type != ItemData::NONE) { - value = new RT(std::forward(val)); - } - } -#endif // FLATBUFFERS_CPP98_STL - - static void *UnPack(const void *obj, ItemData type, const flatbuffers::resolver_function_t *resolver); - flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const; - - TEN::Save::IntT *AsInt() { - return type == ItemData::Int ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::IntT *AsInt() const { - return type == ItemData::Int ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::ShortT *AsShort() { - return type == ItemData::Short ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::ShortT *AsShort() const { - return type == ItemData::Short ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::FloatT *AsFloat() { - return type == ItemData::Float ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::FloatT *AsFloat() const { - return type == ItemData::Float ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::ShortArrayT *AsShortArray() { - return type == ItemData::ShortArray ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::ShortArrayT *AsShortArray() const { - return type == ItemData::ShortArray ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::ItemNumberT *AsItemNumber() { - return type == ItemData::ItemNumber ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::ItemNumberT *AsItemNumber() const { - return type == ItemData::ItemNumber ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::CreatureT *AsCreature() { - return type == ItemData::Creature ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::CreatureT *AsCreature() const { - return type == ItemData::Creature ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::LaserHeadT *AsLaserHead() { - return type == ItemData::LaserHead ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::LaserHeadT *AsLaserHead() const { - return type == ItemData::LaserHead ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::QuadBikeT *AsQuadBike() { - return type == ItemData::QuadBike ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::QuadBikeT *AsQuadBike() const { - return type == ItemData::QuadBike ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::BigGunT *AsBigGun() { - return type == ItemData::BigGun ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::BigGunT *AsBigGun() const { - return type == ItemData::BigGun ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::MotorbikeT *AsMotorbike() { - return type == ItemData::Motorbike ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::MotorbikeT *AsMotorbike() const { - return type == ItemData::Motorbike ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::JeepT *AsJeep() { - return type == ItemData::Jeep ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::JeepT *AsJeep() const { - return type == ItemData::Jeep ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::LaraInfoT *AsLaraInfo() { - return type == ItemData::LaraInfo ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::LaraInfoT *AsLaraInfo() const { - return type == ItemData::LaraInfo ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::KayakT *AsKayak() { - return type == ItemData::Kayak ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::KayakT *AsKayak() const { - return type == ItemData::Kayak ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::DoorT *AsDoor() { - return type == ItemData::Door ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::DoorT *AsDoor() const { - return type == ItemData::Door ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::SkidooT *AsSkidoo() { - return type == ItemData::Skidoo ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::SkidooT *AsSkidoo() const { - return type == ItemData::Skidoo ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::UPVT *AsUPV() { - return type == ItemData::UPV ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::UPVT *AsUPV() const { - return type == ItemData::UPV ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::MotorboatT *AsMotorboat() { - return type == ItemData::Motorboat ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::MotorboatT *AsMotorboat() const { - return type == ItemData::Motorboat ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::GameVectorT *AsGameVector() { - return type == ItemData::GameVector ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::GameVectorT *AsGameVector() const { - return type == ItemData::GameVector ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::WraithT *AsWraith() { - return type == ItemData::Wraith ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::WraithT *AsWraith() const { - return type == ItemData::Wraith ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::RubberboatT *AsRubberboat() { - return type == ItemData::Rubberboat ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::RubberboatT *AsRubberboat() const { - return type == ItemData::Rubberboat ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::PushableT *AsPushable() { - return type == ItemData::Pushable ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::PushableT *AsPushable() const { - return type == ItemData::Pushable ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::MinecartT *AsMinecart() { - return type == ItemData::Minecart ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::MinecartT *AsMinecart() const { - return type == ItemData::Minecart ? - reinterpret_cast(value) : nullptr; - } -}; - -bool VerifyItemData(flatbuffers::Verifier &verifier, const void *obj, ItemData type); -bool VerifyItemDataVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types); - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Position FLATBUFFERS_FINAL_CLASS { - private: - int32_t x_pos_; - int32_t y_pos_; - int32_t z_pos_; - int32_t x_rot_; - int32_t y_rot_; - int32_t z_rot_; - - public: - struct Traits; - Position() - : x_pos_(0), - y_pos_(0), - z_pos_(0), - x_rot_(0), - y_rot_(0), - z_rot_(0) { - } - Position(int32_t _x_pos, int32_t _y_pos, int32_t _z_pos, int32_t _x_rot, int32_t _y_rot, int32_t _z_rot) - : x_pos_(flatbuffers::EndianScalar(_x_pos)), - y_pos_(flatbuffers::EndianScalar(_y_pos)), - z_pos_(flatbuffers::EndianScalar(_z_pos)), - x_rot_(flatbuffers::EndianScalar(_x_rot)), - y_rot_(flatbuffers::EndianScalar(_y_rot)), - z_rot_(flatbuffers::EndianScalar(_z_rot)) { - } - int32_t x_pos() const { - return flatbuffers::EndianScalar(x_pos_); - } - int32_t y_pos() const { - return flatbuffers::EndianScalar(y_pos_); - } - int32_t z_pos() const { - return flatbuffers::EndianScalar(z_pos_); - } - int32_t x_rot() const { - return flatbuffers::EndianScalar(x_rot_); - } - int32_t y_rot() const { - return flatbuffers::EndianScalar(y_rot_); - } - int32_t z_rot() const { - return flatbuffers::EndianScalar(z_rot_); - } -}; -FLATBUFFERS_STRUCT_END(Position, 24); - -struct Position::Traits { - using type = Position; -}; - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Vector2 FLATBUFFERS_FINAL_CLASS { - private: - float x_; - float y_; - - public: - struct Traits; - Vector2() - : x_(0), - y_(0) { - } - Vector2(float _x, float _y) - : x_(flatbuffers::EndianScalar(_x)), - y_(flatbuffers::EndianScalar(_y)) { - } - float x() const { - return flatbuffers::EndianScalar(x_); - } - float y() const { - return flatbuffers::EndianScalar(y_); - } -}; -FLATBUFFERS_STRUCT_END(Vector2, 8); - -struct Vector2::Traits { - using type = Vector2; -}; - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Vector3 FLATBUFFERS_FINAL_CLASS { - private: - float x_; - float y_; - float z_; - - public: - struct Traits; - Vector3() - : x_(0), - y_(0), - z_(0) { - } - Vector3(float _x, float _y, float _z) - : x_(flatbuffers::EndianScalar(_x)), - y_(flatbuffers::EndianScalar(_y)), - z_(flatbuffers::EndianScalar(_z)) { - } - float x() const { - return flatbuffers::EndianScalar(x_); - } - float y() const { - return flatbuffers::EndianScalar(y_); - } - float z() const { - return flatbuffers::EndianScalar(z_); - } -}; -FLATBUFFERS_STRUCT_END(Vector3, 12); - -struct Vector3::Traits { - using type = Vector3; -}; - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Vector4 FLATBUFFERS_FINAL_CLASS { - private: - float x_; - float y_; - float z_; - float w_; - - public: - struct Traits; - Vector4() - : x_(0), - y_(0), - z_(0), - w_(0) { - } - Vector4(float _x, float _y, float _z, float _w) - : x_(flatbuffers::EndianScalar(_x)), - y_(flatbuffers::EndianScalar(_y)), - z_(flatbuffers::EndianScalar(_z)), - w_(flatbuffers::EndianScalar(_w)) { - } - float x() const { - return flatbuffers::EndianScalar(x_); - } - float y() const { - return flatbuffers::EndianScalar(y_); - } - float z() const { - return flatbuffers::EndianScalar(z_); - } - float w() const { - return flatbuffers::EndianScalar(w_); - } -}; -FLATBUFFERS_STRUCT_END(Vector4, 16); - -struct Vector4::Traits { - using type = Vector4; -}; - -struct CreatureTargetT : public flatbuffers::NativeTable { - typedef CreatureTarget TableType; - int32_t object_number = 0; - int32_t room_number = 0; - int32_t box_number = 0; - int32_t flags = 0; - int32_t trigger_flags = 0; - std::unique_ptr position{}; -}; - -struct CreatureTarget FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef CreatureTargetT NativeTableType; - typedef CreatureTargetBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_OBJECT_NUMBER = 4, - VT_ROOM_NUMBER = 6, - VT_BOX_NUMBER = 8, - VT_FLAGS = 10, - VT_TRIGGER_FLAGS = 12, - VT_POSITION = 14 - }; - int32_t object_number() const { - return GetField(VT_OBJECT_NUMBER, 0); - } - int32_t room_number() const { - return GetField(VT_ROOM_NUMBER, 0); - } - int32_t box_number() const { - return GetField(VT_BOX_NUMBER, 0); - } - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - int32_t trigger_flags() const { - return GetField(VT_TRIGGER_FLAGS, 0); - } - const TEN::Save::Position *position() const { - return GetStruct(VT_POSITION); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_OBJECT_NUMBER) && - VerifyField(verifier, VT_ROOM_NUMBER) && - VerifyField(verifier, VT_BOX_NUMBER) && - VerifyField(verifier, VT_FLAGS) && - VerifyField(verifier, VT_TRIGGER_FLAGS) && - VerifyField(verifier, VT_POSITION) && - verifier.EndTable(); - } - CreatureTargetT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(CreatureTargetT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const CreatureTargetT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct CreatureTargetBuilder { - typedef CreatureTarget Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_object_number(int32_t object_number) { - fbb_.AddElement(CreatureTarget::VT_OBJECT_NUMBER, object_number, 0); - } - void add_room_number(int32_t room_number) { - fbb_.AddElement(CreatureTarget::VT_ROOM_NUMBER, room_number, 0); - } - void add_box_number(int32_t box_number) { - fbb_.AddElement(CreatureTarget::VT_BOX_NUMBER, box_number, 0); - } - void add_flags(int32_t flags) { - fbb_.AddElement(CreatureTarget::VT_FLAGS, flags, 0); - } - void add_trigger_flags(int32_t trigger_flags) { - fbb_.AddElement(CreatureTarget::VT_TRIGGER_FLAGS, trigger_flags, 0); - } - void add_position(const TEN::Save::Position *position) { - fbb_.AddStruct(CreatureTarget::VT_POSITION, position); - } - explicit CreatureTargetBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateCreatureTarget( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t object_number = 0, - int32_t room_number = 0, - int32_t box_number = 0, - int32_t flags = 0, - int32_t trigger_flags = 0, - const TEN::Save::Position *position = 0) { - CreatureTargetBuilder builder_(_fbb); - builder_.add_position(position); - builder_.add_trigger_flags(trigger_flags); - builder_.add_flags(flags); - builder_.add_box_number(box_number); - builder_.add_room_number(room_number); - builder_.add_object_number(object_number); - return builder_.Finish(); -} - -struct CreatureTarget::Traits { - using type = CreatureTarget; - static auto constexpr Create = CreateCreatureTarget; -}; - -flatbuffers::Offset CreateCreatureTarget(flatbuffers::FlatBufferBuilder &_fbb, const CreatureTargetT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct CreatureT : public flatbuffers::NativeTable { - typedef Creature TableType; - int32_t maximum_turn = 0; - std::vector joint_rotation{}; - bool head_left = false; - bool head_right = false; - bool patrol = false; - bool alerted = false; - bool reached_goal = false; - bool jump_ahead = false; - bool monkey_swing_ahead = false; - bool friendly = false; - bool poisoned = false; - bool hurt_by_lara = false; - int32_t tosspad = 0; - int32_t location_ai = 0; - int32_t weapon_delay1 = 0; - int32_t weapon_delay2 = 0; - int32_t mood = 0; - int32_t enemy = 0; - int32_t ai_target_number = 0; - int32_t flags = 0; - bool can_jump = false; - bool can_monkey = false; - bool is_amphibious = false; - bool is_jumping = false; - bool is_monkeying = false; -}; - -struct Creature FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef CreatureT NativeTableType; - typedef CreatureBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_MAXIMUM_TURN = 4, - VT_JOINT_ROTATION = 6, - VT_HEAD_LEFT = 8, - VT_HEAD_RIGHT = 10, - VT_PATROL = 12, - VT_ALERTED = 14, - VT_REACHED_GOAL = 16, - VT_JUMP_AHEAD = 18, - VT_MONKEY_SWING_AHEAD = 20, - VT_FRIENDLY = 22, - VT_POISONED = 24, - VT_HURT_BY_LARA = 26, - VT_TOSSPAD = 28, - VT_LOCATION_AI = 30, - VT_WEAPON_DELAY1 = 32, - VT_WEAPON_DELAY2 = 34, - VT_MOOD = 36, - VT_ENEMY = 38, - VT_AI_TARGET_NUMBER = 40, - VT_FLAGS = 42, - VT_CAN_JUMP = 44, - VT_CAN_MONKEY = 46, - VT_IS_AMPHIBIOUS = 48, - VT_IS_JUMPING = 50, - VT_IS_MONKEYING = 52 - }; - int32_t maximum_turn() const { - return GetField(VT_MAXIMUM_TURN, 0); - } - const flatbuffers::Vector *joint_rotation() const { - return GetPointer *>(VT_JOINT_ROTATION); - } - bool head_left() const { - return GetField(VT_HEAD_LEFT, 0) != 0; - } - bool head_right() const { - return GetField(VT_HEAD_RIGHT, 0) != 0; - } - bool patrol() const { - return GetField(VT_PATROL, 0) != 0; - } - bool alerted() const { - return GetField(VT_ALERTED, 0) != 0; - } - bool reached_goal() const { - return GetField(VT_REACHED_GOAL, 0) != 0; - } - bool jump_ahead() const { - return GetField(VT_JUMP_AHEAD, 0) != 0; - } - bool monkey_swing_ahead() const { - return GetField(VT_MONKEY_SWING_AHEAD, 0) != 0; - } - bool friendly() const { - return GetField(VT_FRIENDLY, 0) != 0; - } - bool poisoned() const { - return GetField(VT_POISONED, 0) != 0; - } - bool hurt_by_lara() const { - return GetField(VT_HURT_BY_LARA, 0) != 0; - } - int32_t tosspad() const { - return GetField(VT_TOSSPAD, 0); - } - int32_t location_ai() const { - return GetField(VT_LOCATION_AI, 0); - } - int32_t weapon_delay1() const { - return GetField(VT_WEAPON_DELAY1, 0); - } - int32_t weapon_delay2() const { - return GetField(VT_WEAPON_DELAY2, 0); - } - int32_t mood() const { - return GetField(VT_MOOD, 0); - } - int32_t enemy() const { - return GetField(VT_ENEMY, 0); - } - int32_t ai_target_number() const { - return GetField(VT_AI_TARGET_NUMBER, 0); - } - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - bool can_jump() const { - return GetField(VT_CAN_JUMP, 0) != 0; - } - bool can_monkey() const { - return GetField(VT_CAN_MONKEY, 0) != 0; - } - bool is_amphibious() const { - return GetField(VT_IS_AMPHIBIOUS, 0) != 0; - } - bool is_jumping() const { - return GetField(VT_IS_JUMPING, 0) != 0; - } - bool is_monkeying() const { - return GetField(VT_IS_MONKEYING, 0) != 0; - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_MAXIMUM_TURN) && - VerifyOffset(verifier, VT_JOINT_ROTATION) && - verifier.VerifyVector(joint_rotation()) && - VerifyField(verifier, VT_HEAD_LEFT) && - VerifyField(verifier, VT_HEAD_RIGHT) && - VerifyField(verifier, VT_PATROL) && - VerifyField(verifier, VT_ALERTED) && - VerifyField(verifier, VT_REACHED_GOAL) && - VerifyField(verifier, VT_JUMP_AHEAD) && - VerifyField(verifier, VT_MONKEY_SWING_AHEAD) && - VerifyField(verifier, VT_FRIENDLY) && - VerifyField(verifier, VT_POISONED) && - VerifyField(verifier, VT_HURT_BY_LARA) && - VerifyField(verifier, VT_TOSSPAD) && - VerifyField(verifier, VT_LOCATION_AI) && - VerifyField(verifier, VT_WEAPON_DELAY1) && - VerifyField(verifier, VT_WEAPON_DELAY2) && - VerifyField(verifier, VT_MOOD) && - VerifyField(verifier, VT_ENEMY) && - VerifyField(verifier, VT_AI_TARGET_NUMBER) && - VerifyField(verifier, VT_FLAGS) && - VerifyField(verifier, VT_CAN_JUMP) && - VerifyField(verifier, VT_CAN_MONKEY) && - VerifyField(verifier, VT_IS_AMPHIBIOUS) && - VerifyField(verifier, VT_IS_JUMPING) && - VerifyField(verifier, VT_IS_MONKEYING) && - verifier.EndTable(); - } - CreatureT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(CreatureT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const CreatureT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct CreatureBuilder { - typedef Creature Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_maximum_turn(int32_t maximum_turn) { - fbb_.AddElement(Creature::VT_MAXIMUM_TURN, maximum_turn, 0); - } - void add_joint_rotation(flatbuffers::Offset> joint_rotation) { - fbb_.AddOffset(Creature::VT_JOINT_ROTATION, joint_rotation); - } - void add_head_left(bool head_left) { - fbb_.AddElement(Creature::VT_HEAD_LEFT, static_cast(head_left), 0); - } - void add_head_right(bool head_right) { - fbb_.AddElement(Creature::VT_HEAD_RIGHT, static_cast(head_right), 0); - } - void add_patrol(bool patrol) { - fbb_.AddElement(Creature::VT_PATROL, static_cast(patrol), 0); - } - void add_alerted(bool alerted) { - fbb_.AddElement(Creature::VT_ALERTED, static_cast(alerted), 0); - } - void add_reached_goal(bool reached_goal) { - fbb_.AddElement(Creature::VT_REACHED_GOAL, static_cast(reached_goal), 0); - } - void add_jump_ahead(bool jump_ahead) { - fbb_.AddElement(Creature::VT_JUMP_AHEAD, static_cast(jump_ahead), 0); - } - void add_monkey_swing_ahead(bool monkey_swing_ahead) { - fbb_.AddElement(Creature::VT_MONKEY_SWING_AHEAD, static_cast(monkey_swing_ahead), 0); - } - void add_friendly(bool friendly) { - fbb_.AddElement(Creature::VT_FRIENDLY, static_cast(friendly), 0); - } - void add_poisoned(bool poisoned) { - fbb_.AddElement(Creature::VT_POISONED, static_cast(poisoned), 0); - } - void add_hurt_by_lara(bool hurt_by_lara) { - fbb_.AddElement(Creature::VT_HURT_BY_LARA, static_cast(hurt_by_lara), 0); - } - void add_tosspad(int32_t tosspad) { - fbb_.AddElement(Creature::VT_TOSSPAD, tosspad, 0); - } - void add_location_ai(int32_t location_ai) { - fbb_.AddElement(Creature::VT_LOCATION_AI, location_ai, 0); - } - void add_weapon_delay1(int32_t weapon_delay1) { - fbb_.AddElement(Creature::VT_WEAPON_DELAY1, weapon_delay1, 0); - } - void add_weapon_delay2(int32_t weapon_delay2) { - fbb_.AddElement(Creature::VT_WEAPON_DELAY2, weapon_delay2, 0); - } - void add_mood(int32_t mood) { - fbb_.AddElement(Creature::VT_MOOD, mood, 0); - } - void add_enemy(int32_t enemy) { - fbb_.AddElement(Creature::VT_ENEMY, enemy, 0); - } - void add_ai_target_number(int32_t ai_target_number) { - fbb_.AddElement(Creature::VT_AI_TARGET_NUMBER, ai_target_number, 0); - } - void add_flags(int32_t flags) { - fbb_.AddElement(Creature::VT_FLAGS, flags, 0); - } - void add_can_jump(bool can_jump) { - fbb_.AddElement(Creature::VT_CAN_JUMP, static_cast(can_jump), 0); - } - void add_can_monkey(bool can_monkey) { - fbb_.AddElement(Creature::VT_CAN_MONKEY, static_cast(can_monkey), 0); - } - void add_is_amphibious(bool is_amphibious) { - fbb_.AddElement(Creature::VT_IS_AMPHIBIOUS, static_cast(is_amphibious), 0); - } - void add_is_jumping(bool is_jumping) { - fbb_.AddElement(Creature::VT_IS_JUMPING, static_cast(is_jumping), 0); - } - void add_is_monkeying(bool is_monkeying) { - fbb_.AddElement(Creature::VT_IS_MONKEYING, static_cast(is_monkeying), 0); - } - explicit CreatureBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateCreature( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t maximum_turn = 0, - flatbuffers::Offset> joint_rotation = 0, - bool head_left = false, - bool head_right = false, - bool patrol = false, - bool alerted = false, - bool reached_goal = false, - bool jump_ahead = false, - bool monkey_swing_ahead = false, - bool friendly = false, - bool poisoned = false, - bool hurt_by_lara = false, - int32_t tosspad = 0, - int32_t location_ai = 0, - int32_t weapon_delay1 = 0, - int32_t weapon_delay2 = 0, - int32_t mood = 0, - int32_t enemy = 0, - int32_t ai_target_number = 0, - int32_t flags = 0, - bool can_jump = false, - bool can_monkey = false, - bool is_amphibious = false, - bool is_jumping = false, - bool is_monkeying = false) { - CreatureBuilder builder_(_fbb); - builder_.add_flags(flags); - builder_.add_ai_target_number(ai_target_number); - builder_.add_enemy(enemy); - builder_.add_mood(mood); - builder_.add_weapon_delay2(weapon_delay2); - builder_.add_weapon_delay1(weapon_delay1); - builder_.add_location_ai(location_ai); - builder_.add_tosspad(tosspad); - builder_.add_joint_rotation(joint_rotation); - builder_.add_maximum_turn(maximum_turn); - builder_.add_is_monkeying(is_monkeying); - builder_.add_is_jumping(is_jumping); - builder_.add_is_amphibious(is_amphibious); - builder_.add_can_monkey(can_monkey); - builder_.add_can_jump(can_jump); - builder_.add_hurt_by_lara(hurt_by_lara); - builder_.add_poisoned(poisoned); - builder_.add_friendly(friendly); - builder_.add_monkey_swing_ahead(monkey_swing_ahead); - builder_.add_jump_ahead(jump_ahead); - builder_.add_reached_goal(reached_goal); - builder_.add_alerted(alerted); - builder_.add_patrol(patrol); - builder_.add_head_right(head_right); - builder_.add_head_left(head_left); - return builder_.Finish(); -} - -struct Creature::Traits { - using type = Creature; - static auto constexpr Create = CreateCreature; -}; - -inline flatbuffers::Offset CreateCreatureDirect( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t maximum_turn = 0, - const std::vector *joint_rotation = nullptr, - bool head_left = false, - bool head_right = false, - bool patrol = false, - bool alerted = false, - bool reached_goal = false, - bool jump_ahead = false, - bool monkey_swing_ahead = false, - bool friendly = false, - bool poisoned = false, - bool hurt_by_lara = false, - int32_t tosspad = 0, - int32_t location_ai = 0, - int32_t weapon_delay1 = 0, - int32_t weapon_delay2 = 0, - int32_t mood = 0, - int32_t enemy = 0, - int32_t ai_target_number = 0, - int32_t flags = 0, - bool can_jump = false, - bool can_monkey = false, - bool is_amphibious = false, - bool is_jumping = false, - bool is_monkeying = false) { - auto joint_rotation__ = joint_rotation ? _fbb.CreateVector(*joint_rotation) : 0; - return TEN::Save::CreateCreature( - _fbb, - maximum_turn, - joint_rotation__, - head_left, - head_right, - patrol, - alerted, - reached_goal, - jump_ahead, - monkey_swing_ahead, - friendly, - poisoned, - hurt_by_lara, - tosspad, - location_ai, - weapon_delay1, - weapon_delay2, - mood, - enemy, - ai_target_number, - flags, - can_jump, - can_monkey, - is_amphibious, - is_jumping, - is_monkeying); -} - -flatbuffers::Offset CreateCreature(flatbuffers::FlatBufferBuilder &_fbb, const CreatureT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct LaserHeadT : public flatbuffers::NativeTable { - typedef LaserHead TableType; -}; - -struct LaserHead FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef LaserHeadT NativeTableType; - typedef LaserHeadBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - LaserHeadT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(LaserHeadT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaserHeadT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct LaserHeadBuilder { - typedef LaserHead Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit LaserHeadBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateLaserHead( - flatbuffers::FlatBufferBuilder &_fbb) { - LaserHeadBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct LaserHead::Traits { - using type = LaserHead; - static auto constexpr Create = CreateLaserHead; -}; - -flatbuffers::Offset CreateLaserHead(flatbuffers::FlatBufferBuilder &_fbb, const LaserHeadT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct QuadBikeT : public flatbuffers::NativeTable { - typedef QuadBike TableType; - int32_t turn_rate = 0; - int32_t front_rot = 0; - int32_t rear_rot = 0; - int32_t momentum_angle = 0; - int32_t extra_rotation = 0; - int32_t velocity = 0; - int32_t left_vertical_velocity = 0; - int32_t right_vertical_velocity = 0; - int32_t revs = 0; - int32_t engine_revs = 0; - int32_t pitch = 0; - int32_t smoke_start = 0; - bool can_start_drift = false; - bool drift_starting = false; - bool no_dismount = false; - int32_t flags = 0; -}; - -struct QuadBike FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef QuadBikeT NativeTableType; - typedef QuadBikeBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_TURN_RATE = 4, - VT_FRONT_ROT = 6, - VT_REAR_ROT = 8, - VT_MOMENTUM_ANGLE = 10, - VT_EXTRA_ROTATION = 12, - VT_VELOCITY = 14, - VT_LEFT_VERTICAL_VELOCITY = 16, - VT_RIGHT_VERTICAL_VELOCITY = 18, - VT_REVS = 20, - VT_ENGINE_REVS = 22, - VT_PITCH = 24, - VT_SMOKE_START = 26, - VT_CAN_START_DRIFT = 28, - VT_DRIFT_STARTING = 30, - VT_NO_DISMOUNT = 32, - VT_FLAGS = 34 - }; - int32_t turn_rate() const { - return GetField(VT_TURN_RATE, 0); - } - int32_t front_rot() const { - return GetField(VT_FRONT_ROT, 0); - } - int32_t rear_rot() const { - return GetField(VT_REAR_ROT, 0); - } - int32_t momentum_angle() const { - return GetField(VT_MOMENTUM_ANGLE, 0); - } - int32_t extra_rotation() const { - return GetField(VT_EXTRA_ROTATION, 0); - } - int32_t velocity() const { - return GetField(VT_VELOCITY, 0); - } - int32_t left_vertical_velocity() const { - return GetField(VT_LEFT_VERTICAL_VELOCITY, 0); - } - int32_t right_vertical_velocity() const { - return GetField(VT_RIGHT_VERTICAL_VELOCITY, 0); - } - int32_t revs() const { - return GetField(VT_REVS, 0); - } - int32_t engine_revs() const { - return GetField(VT_ENGINE_REVS, 0); - } - int32_t pitch() const { - return GetField(VT_PITCH, 0); - } - int32_t smoke_start() const { - return GetField(VT_SMOKE_START, 0); - } - bool can_start_drift() const { - return GetField(VT_CAN_START_DRIFT, 0) != 0; - } - bool drift_starting() const { - return GetField(VT_DRIFT_STARTING, 0) != 0; - } - bool no_dismount() const { - return GetField(VT_NO_DISMOUNT, 0) != 0; - } - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_TURN_RATE) && - VerifyField(verifier, VT_FRONT_ROT) && - VerifyField(verifier, VT_REAR_ROT) && - VerifyField(verifier, VT_MOMENTUM_ANGLE) && - VerifyField(verifier, VT_EXTRA_ROTATION) && - VerifyField(verifier, VT_VELOCITY) && - VerifyField(verifier, VT_LEFT_VERTICAL_VELOCITY) && - VerifyField(verifier, VT_RIGHT_VERTICAL_VELOCITY) && - VerifyField(verifier, VT_REVS) && - VerifyField(verifier, VT_ENGINE_REVS) && - VerifyField(verifier, VT_PITCH) && - VerifyField(verifier, VT_SMOKE_START) && - VerifyField(verifier, VT_CAN_START_DRIFT) && - VerifyField(verifier, VT_DRIFT_STARTING) && - VerifyField(verifier, VT_NO_DISMOUNT) && - VerifyField(verifier, VT_FLAGS) && - verifier.EndTable(); - } - QuadBikeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(QuadBikeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const QuadBikeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct QuadBikeBuilder { - typedef QuadBike Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_turn_rate(int32_t turn_rate) { - fbb_.AddElement(QuadBike::VT_TURN_RATE, turn_rate, 0); - } - void add_front_rot(int32_t front_rot) { - fbb_.AddElement(QuadBike::VT_FRONT_ROT, front_rot, 0); - } - void add_rear_rot(int32_t rear_rot) { - fbb_.AddElement(QuadBike::VT_REAR_ROT, rear_rot, 0); - } - void add_momentum_angle(int32_t momentum_angle) { - fbb_.AddElement(QuadBike::VT_MOMENTUM_ANGLE, momentum_angle, 0); - } - void add_extra_rotation(int32_t extra_rotation) { - fbb_.AddElement(QuadBike::VT_EXTRA_ROTATION, extra_rotation, 0); - } - void add_velocity(int32_t velocity) { - fbb_.AddElement(QuadBike::VT_VELOCITY, velocity, 0); - } - void add_left_vertical_velocity(int32_t left_vertical_velocity) { - fbb_.AddElement(QuadBike::VT_LEFT_VERTICAL_VELOCITY, left_vertical_velocity, 0); - } - void add_right_vertical_velocity(int32_t right_vertical_velocity) { - fbb_.AddElement(QuadBike::VT_RIGHT_VERTICAL_VELOCITY, right_vertical_velocity, 0); - } - void add_revs(int32_t revs) { - fbb_.AddElement(QuadBike::VT_REVS, revs, 0); - } - void add_engine_revs(int32_t engine_revs) { - fbb_.AddElement(QuadBike::VT_ENGINE_REVS, engine_revs, 0); - } - void add_pitch(int32_t pitch) { - fbb_.AddElement(QuadBike::VT_PITCH, pitch, 0); - } - void add_smoke_start(int32_t smoke_start) { - fbb_.AddElement(QuadBike::VT_SMOKE_START, smoke_start, 0); - } - void add_can_start_drift(bool can_start_drift) { - fbb_.AddElement(QuadBike::VT_CAN_START_DRIFT, static_cast(can_start_drift), 0); - } - void add_drift_starting(bool drift_starting) { - fbb_.AddElement(QuadBike::VT_DRIFT_STARTING, static_cast(drift_starting), 0); - } - void add_no_dismount(bool no_dismount) { - fbb_.AddElement(QuadBike::VT_NO_DISMOUNT, static_cast(no_dismount), 0); - } - void add_flags(int32_t flags) { - fbb_.AddElement(QuadBike::VT_FLAGS, flags, 0); - } - explicit QuadBikeBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateQuadBike( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t turn_rate = 0, - int32_t front_rot = 0, - int32_t rear_rot = 0, - int32_t momentum_angle = 0, - int32_t extra_rotation = 0, - int32_t velocity = 0, - int32_t left_vertical_velocity = 0, - int32_t right_vertical_velocity = 0, - int32_t revs = 0, - int32_t engine_revs = 0, - int32_t pitch = 0, - int32_t smoke_start = 0, - bool can_start_drift = false, - bool drift_starting = false, - bool no_dismount = false, - int32_t flags = 0) { - QuadBikeBuilder builder_(_fbb); - builder_.add_flags(flags); - builder_.add_smoke_start(smoke_start); - builder_.add_pitch(pitch); - builder_.add_engine_revs(engine_revs); - builder_.add_revs(revs); - builder_.add_right_vertical_velocity(right_vertical_velocity); - builder_.add_left_vertical_velocity(left_vertical_velocity); - builder_.add_velocity(velocity); - builder_.add_extra_rotation(extra_rotation); - builder_.add_momentum_angle(momentum_angle); - builder_.add_rear_rot(rear_rot); - builder_.add_front_rot(front_rot); - builder_.add_turn_rate(turn_rate); - builder_.add_no_dismount(no_dismount); - builder_.add_drift_starting(drift_starting); - builder_.add_can_start_drift(can_start_drift); - return builder_.Finish(); -} - -struct QuadBike::Traits { - using type = QuadBike; - static auto constexpr Create = CreateQuadBike; -}; - -flatbuffers::Offset CreateQuadBike(flatbuffers::FlatBufferBuilder &_fbb, const QuadBikeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct BigGunT : public flatbuffers::NativeTable { - typedef BigGun TableType; -}; - -struct BigGun FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef BigGunT NativeTableType; - typedef BigGunBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - BigGunT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(BigGunT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const BigGunT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct BigGunBuilder { - typedef BigGun Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit BigGunBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateBigGun( - flatbuffers::FlatBufferBuilder &_fbb) { - BigGunBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct BigGun::Traits { - using type = BigGun; - static auto constexpr Create = CreateBigGun; -}; - -flatbuffers::Offset CreateBigGun(flatbuffers::FlatBufferBuilder &_fbb, const BigGunT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct MotorbikeT : public flatbuffers::NativeTable { - typedef Motorbike TableType; -}; - -struct Motorbike FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef MotorbikeT NativeTableType; - typedef MotorbikeBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - MotorbikeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MotorbikeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MotorbikeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct MotorbikeBuilder { - typedef Motorbike Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit MotorbikeBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateMotorbike( - flatbuffers::FlatBufferBuilder &_fbb) { - MotorbikeBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct Motorbike::Traits { - using type = Motorbike; - static auto constexpr Create = CreateMotorbike; -}; - -flatbuffers::Offset CreateMotorbike(flatbuffers::FlatBufferBuilder &_fbb, const MotorbikeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct JeepT : public flatbuffers::NativeTable { - typedef Jeep TableType; -}; - -struct Jeep FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef JeepT NativeTableType; - typedef JeepBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - JeepT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(JeepT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const JeepT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct JeepBuilder { - typedef Jeep Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit JeepBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateJeep( - flatbuffers::FlatBufferBuilder &_fbb) { - JeepBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct Jeep::Traits { - using type = Jeep; - static auto constexpr Create = CreateJeep; -}; - -flatbuffers::Offset CreateJeep(flatbuffers::FlatBufferBuilder &_fbb, const JeepT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct KayakT : public flatbuffers::NativeTable { - typedef Kayak TableType; - int32_t turn_rate = 0; - int32_t velocity = 0; - int32_t front_vertical_velocity = 0; - int32_t left_vertical_velocity = 0; - int32_t right_vertical_velocity = 0; - int32_t left_right_count = 0; - int32_t water_height = 0; - std::unique_ptr old_pos{}; - bool turn = false; - bool forward = false; - bool true_water = false; - int32_t flags = 0; -}; - -struct Kayak FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef KayakT NativeTableType; - typedef KayakBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_TURN_RATE = 4, - VT_VELOCITY = 6, - VT_FRONT_VERTICAL_VELOCITY = 8, - VT_LEFT_VERTICAL_VELOCITY = 10, - VT_RIGHT_VERTICAL_VELOCITY = 12, - VT_LEFT_RIGHT_COUNT = 14, - VT_WATER_HEIGHT = 16, - VT_OLD_POS = 18, - VT_TURN = 20, - VT_FORWARD = 22, - VT_TRUE_WATER = 24, - VT_FLAGS = 26 - }; - int32_t turn_rate() const { - return GetField(VT_TURN_RATE, 0); - } - int32_t velocity() const { - return GetField(VT_VELOCITY, 0); - } - int32_t front_vertical_velocity() const { - return GetField(VT_FRONT_VERTICAL_VELOCITY, 0); - } - int32_t left_vertical_velocity() const { - return GetField(VT_LEFT_VERTICAL_VELOCITY, 0); - } - int32_t right_vertical_velocity() const { - return GetField(VT_RIGHT_VERTICAL_VELOCITY, 0); - } - int32_t left_right_count() const { - return GetField(VT_LEFT_RIGHT_COUNT, 0); - } - int32_t water_height() const { - return GetField(VT_WATER_HEIGHT, 0); - } - const TEN::Save::Position *old_pos() const { - return GetStruct(VT_OLD_POS); - } - bool turn() const { - return GetField(VT_TURN, 0) != 0; - } - bool forward() const { - return GetField(VT_FORWARD, 0) != 0; - } - bool true_water() const { - return GetField(VT_TRUE_WATER, 0) != 0; - } - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_TURN_RATE) && - VerifyField(verifier, VT_VELOCITY) && - VerifyField(verifier, VT_FRONT_VERTICAL_VELOCITY) && - VerifyField(verifier, VT_LEFT_VERTICAL_VELOCITY) && - VerifyField(verifier, VT_RIGHT_VERTICAL_VELOCITY) && - VerifyField(verifier, VT_LEFT_RIGHT_COUNT) && - VerifyField(verifier, VT_WATER_HEIGHT) && - VerifyField(verifier, VT_OLD_POS) && - VerifyField(verifier, VT_TURN) && - VerifyField(verifier, VT_FORWARD) && - VerifyField(verifier, VT_TRUE_WATER) && - VerifyField(verifier, VT_FLAGS) && - verifier.EndTable(); - } - KayakT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(KayakT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const KayakT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct KayakBuilder { - typedef Kayak Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_turn_rate(int32_t turn_rate) { - fbb_.AddElement(Kayak::VT_TURN_RATE, turn_rate, 0); - } - void add_velocity(int32_t velocity) { - fbb_.AddElement(Kayak::VT_VELOCITY, velocity, 0); - } - void add_front_vertical_velocity(int32_t front_vertical_velocity) { - fbb_.AddElement(Kayak::VT_FRONT_VERTICAL_VELOCITY, front_vertical_velocity, 0); - } - void add_left_vertical_velocity(int32_t left_vertical_velocity) { - fbb_.AddElement(Kayak::VT_LEFT_VERTICAL_VELOCITY, left_vertical_velocity, 0); - } - void add_right_vertical_velocity(int32_t right_vertical_velocity) { - fbb_.AddElement(Kayak::VT_RIGHT_VERTICAL_VELOCITY, right_vertical_velocity, 0); - } - void add_left_right_count(int32_t left_right_count) { - fbb_.AddElement(Kayak::VT_LEFT_RIGHT_COUNT, left_right_count, 0); - } - void add_water_height(int32_t water_height) { - fbb_.AddElement(Kayak::VT_WATER_HEIGHT, water_height, 0); - } - void add_old_pos(const TEN::Save::Position *old_pos) { - fbb_.AddStruct(Kayak::VT_OLD_POS, old_pos); - } - void add_turn(bool turn) { - fbb_.AddElement(Kayak::VT_TURN, static_cast(turn), 0); - } - void add_forward(bool forward) { - fbb_.AddElement(Kayak::VT_FORWARD, static_cast(forward), 0); - } - void add_true_water(bool true_water) { - fbb_.AddElement(Kayak::VT_TRUE_WATER, static_cast(true_water), 0); - } - void add_flags(int32_t flags) { - fbb_.AddElement(Kayak::VT_FLAGS, flags, 0); - } - explicit KayakBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateKayak( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t turn_rate = 0, - int32_t velocity = 0, - int32_t front_vertical_velocity = 0, - int32_t left_vertical_velocity = 0, - int32_t right_vertical_velocity = 0, - int32_t left_right_count = 0, - int32_t water_height = 0, - const TEN::Save::Position *old_pos = 0, - bool turn = false, - bool forward = false, - bool true_water = false, - int32_t flags = 0) { - KayakBuilder builder_(_fbb); - builder_.add_flags(flags); - builder_.add_old_pos(old_pos); - builder_.add_water_height(water_height); - builder_.add_left_right_count(left_right_count); - builder_.add_right_vertical_velocity(right_vertical_velocity); - builder_.add_left_vertical_velocity(left_vertical_velocity); - builder_.add_front_vertical_velocity(front_vertical_velocity); - builder_.add_velocity(velocity); - builder_.add_turn_rate(turn_rate); - builder_.add_true_water(true_water); - builder_.add_forward(forward); - builder_.add_turn(turn); - return builder_.Finish(); -} - -struct Kayak::Traits { - using type = Kayak; - static auto constexpr Create = CreateKayak; -}; - -flatbuffers::Offset CreateKayak(flatbuffers::FlatBufferBuilder &_fbb, const KayakT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct DoorT : public flatbuffers::NativeTable { - typedef Door TableType; -}; - -struct Door FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef DoorT NativeTableType; - typedef DoorBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - DoorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(DoorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const DoorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct DoorBuilder { - typedef Door Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit DoorBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateDoor( - flatbuffers::FlatBufferBuilder &_fbb) { - DoorBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct Door::Traits { - using type = Door; - static auto constexpr Create = CreateDoor; -}; - -flatbuffers::Offset CreateDoor(flatbuffers::FlatBufferBuilder &_fbb, const DoorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct SkidooT : public flatbuffers::NativeTable { - typedef Skidoo TableType; -}; - -struct Skidoo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef SkidooT NativeTableType; - typedef SkidooBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - SkidooT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(SkidooT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SkidooT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct SkidooBuilder { - typedef Skidoo Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit SkidooBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateSkidoo( - flatbuffers::FlatBufferBuilder &_fbb) { - SkidooBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct Skidoo::Traits { - using type = Skidoo; - static auto constexpr Create = CreateSkidoo; -}; - -flatbuffers::Offset CreateSkidoo(flatbuffers::FlatBufferBuilder &_fbb, const SkidooT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct UPVT : public flatbuffers::NativeTable { - typedef UPV TableType; - int32_t velocity = 0; - int32_t rot = 0; - int32_t x_rot = 0; - int32_t fan_rot = 0; - int32_t harpoon_timer = 0; - bool harpoon_left = false; - int32_t flags = 0; -}; - -struct UPV FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef UPVT NativeTableType; - typedef UPVBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_VELOCITY = 4, - VT_ROT = 6, - VT_X_ROT = 8, - VT_FAN_ROT = 10, - VT_HARPOON_TIMER = 12, - VT_HARPOON_LEFT = 14, - VT_FLAGS = 16 - }; - int32_t velocity() const { - return GetField(VT_VELOCITY, 0); - } - int32_t rot() const { - return GetField(VT_ROT, 0); - } - int32_t x_rot() const { - return GetField(VT_X_ROT, 0); - } - int32_t fan_rot() const { - return GetField(VT_FAN_ROT, 0); - } - int32_t harpoon_timer() const { - return GetField(VT_HARPOON_TIMER, 0); - } - bool harpoon_left() const { - return GetField(VT_HARPOON_LEFT, 0) != 0; - } - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_VELOCITY) && - VerifyField(verifier, VT_ROT) && - VerifyField(verifier, VT_X_ROT) && - VerifyField(verifier, VT_FAN_ROT) && - VerifyField(verifier, VT_HARPOON_TIMER) && - VerifyField(verifier, VT_HARPOON_LEFT) && - VerifyField(verifier, VT_FLAGS) && - verifier.EndTable(); - } - UPVT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(UPVT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const UPVT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct UPVBuilder { - typedef UPV Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_velocity(int32_t velocity) { - fbb_.AddElement(UPV::VT_VELOCITY, velocity, 0); - } - void add_rot(int32_t rot) { - fbb_.AddElement(UPV::VT_ROT, rot, 0); - } - void add_x_rot(int32_t x_rot) { - fbb_.AddElement(UPV::VT_X_ROT, x_rot, 0); - } - void add_fan_rot(int32_t fan_rot) { - fbb_.AddElement(UPV::VT_FAN_ROT, fan_rot, 0); - } - void add_harpoon_timer(int32_t harpoon_timer) { - fbb_.AddElement(UPV::VT_HARPOON_TIMER, harpoon_timer, 0); - } - void add_harpoon_left(bool harpoon_left) { - fbb_.AddElement(UPV::VT_HARPOON_LEFT, static_cast(harpoon_left), 0); - } - void add_flags(int32_t flags) { - fbb_.AddElement(UPV::VT_FLAGS, flags, 0); - } - explicit UPVBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateUPV( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t velocity = 0, - int32_t rot = 0, - int32_t x_rot = 0, - int32_t fan_rot = 0, - int32_t harpoon_timer = 0, - bool harpoon_left = false, - int32_t flags = 0) { - UPVBuilder builder_(_fbb); - builder_.add_flags(flags); - builder_.add_harpoon_timer(harpoon_timer); - builder_.add_fan_rot(fan_rot); - builder_.add_x_rot(x_rot); - builder_.add_rot(rot); - builder_.add_velocity(velocity); - builder_.add_harpoon_left(harpoon_left); - return builder_.Finish(); -} - -struct UPV::Traits { - using type = UPV; - static auto constexpr Create = CreateUPV; -}; - -flatbuffers::Offset CreateUPV(flatbuffers::FlatBufferBuilder &_fbb, const UPVT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct MotorboatT : public flatbuffers::NativeTable { - typedef Motorboat TableType; -}; - -struct Motorboat FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef MotorboatT NativeTableType; - typedef MotorboatBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - MotorboatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MotorboatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MotorboatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct MotorboatBuilder { - typedef Motorboat Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit MotorboatBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateMotorboat( - flatbuffers::FlatBufferBuilder &_fbb) { - MotorboatBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct Motorboat::Traits { - using type = Motorboat; - static auto constexpr Create = CreateMotorboat; -}; - -flatbuffers::Offset CreateMotorboat(flatbuffers::FlatBufferBuilder &_fbb, const MotorboatT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct GameVectorT : public flatbuffers::NativeTable { - typedef GameVector TableType; -}; - -struct GameVector FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef GameVectorT NativeTableType; - typedef GameVectorBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - GameVectorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(GameVectorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const GameVectorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct GameVectorBuilder { - typedef GameVector Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit GameVectorBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateGameVector( - flatbuffers::FlatBufferBuilder &_fbb) { - GameVectorBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct GameVector::Traits { - using type = GameVector; - static auto constexpr Create = CreateGameVector; -}; - -flatbuffers::Offset CreateGameVector(flatbuffers::FlatBufferBuilder &_fbb, const GameVectorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct WraithT : public flatbuffers::NativeTable { - typedef Wraith TableType; -}; - -struct Wraith FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef WraithT NativeTableType; - typedef WraithBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - WraithT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(WraithT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const WraithT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct WraithBuilder { - typedef Wraith Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit WraithBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateWraith( - flatbuffers::FlatBufferBuilder &_fbb) { - WraithBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct Wraith::Traits { - using type = Wraith; - static auto constexpr Create = CreateWraith; -}; - -flatbuffers::Offset CreateWraith(flatbuffers::FlatBufferBuilder &_fbb, const WraithT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct RubberboatT : public flatbuffers::NativeTable { - typedef Rubberboat TableType; -}; - -struct Rubberboat FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef RubberboatT NativeTableType; - typedef RubberboatBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - RubberboatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(RubberboatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const RubberboatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct RubberboatBuilder { - typedef Rubberboat Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit RubberboatBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateRubberboat( - flatbuffers::FlatBufferBuilder &_fbb) { - RubberboatBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct Rubberboat::Traits { - using type = Rubberboat; - static auto constexpr Create = CreateRubberboat; -}; - -flatbuffers::Offset CreateRubberboat(flatbuffers::FlatBufferBuilder &_fbb, const RubberboatT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct PushableT : public flatbuffers::NativeTable { - typedef Pushable TableType; -}; - -struct Pushable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef PushableT NativeTableType; - typedef PushableBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - PushableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(PushableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const PushableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct PushableBuilder { - typedef Pushable Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit PushableBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreatePushable( - flatbuffers::FlatBufferBuilder &_fbb) { - PushableBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct Pushable::Traits { - using type = Pushable; - static auto constexpr Create = CreatePushable; -}; - -flatbuffers::Offset CreatePushable(flatbuffers::FlatBufferBuilder &_fbb, const PushableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct MinecartT : public flatbuffers::NativeTable { - typedef Minecart TableType; - int32_t turn_rot = 0; - int32_t turn_x = 0; - int32_t turn_z = 0; - int32_t turn_len = 0; - int32_t velocity = 0; - int32_t vertical_velocity = 0; - int32_t gradient = 0; - int32_t stop_delay = 0; - int32_t floor_height_middle = 0; - int32_t floor_height_front = 0; - int32_t flags = 0; -}; - -struct Minecart FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef MinecartT NativeTableType; - typedef MinecartBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_TURN_ROT = 4, - VT_TURN_X = 6, - VT_TURN_Z = 8, - VT_TURN_LEN = 10, - VT_VELOCITY = 12, - VT_VERTICAL_VELOCITY = 14, - VT_GRADIENT = 16, - VT_STOP_DELAY = 18, - VT_FLOOR_HEIGHT_MIDDLE = 20, - VT_FLOOR_HEIGHT_FRONT = 22, - VT_FLAGS = 24 - }; - int32_t turn_rot() const { - return GetField(VT_TURN_ROT, 0); - } - int32_t turn_x() const { - return GetField(VT_TURN_X, 0); - } - int32_t turn_z() const { - return GetField(VT_TURN_Z, 0); - } - int32_t turn_len() const { - return GetField(VT_TURN_LEN, 0); - } - int32_t velocity() const { - return GetField(VT_VELOCITY, 0); - } - int32_t vertical_velocity() const { - return GetField(VT_VERTICAL_VELOCITY, 0); - } - int32_t gradient() const { - return GetField(VT_GRADIENT, 0); - } - int32_t stop_delay() const { - return GetField(VT_STOP_DELAY, 0); - } - int32_t floor_height_middle() const { - return GetField(VT_FLOOR_HEIGHT_MIDDLE, 0); - } - int32_t floor_height_front() const { - return GetField(VT_FLOOR_HEIGHT_FRONT, 0); - } - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_TURN_ROT) && - VerifyField(verifier, VT_TURN_X) && - VerifyField(verifier, VT_TURN_Z) && - VerifyField(verifier, VT_TURN_LEN) && - VerifyField(verifier, VT_VELOCITY) && - VerifyField(verifier, VT_VERTICAL_VELOCITY) && - VerifyField(verifier, VT_GRADIENT) && - VerifyField(verifier, VT_STOP_DELAY) && - VerifyField(verifier, VT_FLOOR_HEIGHT_MIDDLE) && - VerifyField(verifier, VT_FLOOR_HEIGHT_FRONT) && - VerifyField(verifier, VT_FLAGS) && - verifier.EndTable(); - } - MinecartT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(MinecartT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MinecartT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct MinecartBuilder { - typedef Minecart Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_turn_rot(int32_t turn_rot) { - fbb_.AddElement(Minecart::VT_TURN_ROT, turn_rot, 0); - } - void add_turn_x(int32_t turn_x) { - fbb_.AddElement(Minecart::VT_TURN_X, turn_x, 0); - } - void add_turn_z(int32_t turn_z) { - fbb_.AddElement(Minecart::VT_TURN_Z, turn_z, 0); - } - void add_turn_len(int32_t turn_len) { - fbb_.AddElement(Minecart::VT_TURN_LEN, turn_len, 0); - } - void add_velocity(int32_t velocity) { - fbb_.AddElement(Minecart::VT_VELOCITY, velocity, 0); - } - void add_vertical_velocity(int32_t vertical_velocity) { - fbb_.AddElement(Minecart::VT_VERTICAL_VELOCITY, vertical_velocity, 0); - } - void add_gradient(int32_t gradient) { - fbb_.AddElement(Minecart::VT_GRADIENT, gradient, 0); - } - void add_stop_delay(int32_t stop_delay) { - fbb_.AddElement(Minecart::VT_STOP_DELAY, stop_delay, 0); - } - void add_floor_height_middle(int32_t floor_height_middle) { - fbb_.AddElement(Minecart::VT_FLOOR_HEIGHT_MIDDLE, floor_height_middle, 0); - } - void add_floor_height_front(int32_t floor_height_front) { - fbb_.AddElement(Minecart::VT_FLOOR_HEIGHT_FRONT, floor_height_front, 0); - } - void add_flags(int32_t flags) { - fbb_.AddElement(Minecart::VT_FLAGS, flags, 0); - } - explicit MinecartBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateMinecart( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t turn_rot = 0, - int32_t turn_x = 0, - int32_t turn_z = 0, - int32_t turn_len = 0, - int32_t velocity = 0, - int32_t vertical_velocity = 0, - int32_t gradient = 0, - int32_t stop_delay = 0, - int32_t floor_height_middle = 0, - int32_t floor_height_front = 0, - int32_t flags = 0) { - MinecartBuilder builder_(_fbb); - builder_.add_flags(flags); - builder_.add_floor_height_front(floor_height_front); - builder_.add_floor_height_middle(floor_height_middle); - builder_.add_stop_delay(stop_delay); - builder_.add_gradient(gradient); - builder_.add_vertical_velocity(vertical_velocity); - builder_.add_velocity(velocity); - builder_.add_turn_len(turn_len); - builder_.add_turn_z(turn_z); - builder_.add_turn_x(turn_x); - builder_.add_turn_rot(turn_rot); - return builder_.Finish(); -} - -struct Minecart::Traits { - using type = Minecart; - static auto constexpr Create = CreateMinecart; -}; - -flatbuffers::Offset CreateMinecart(flatbuffers::FlatBufferBuilder &_fbb, const MinecartT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct LaraInfoT : public flatbuffers::NativeTable { - typedef LaraInfo TableType; -}; - -struct LaraInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef LaraInfoT NativeTableType; - typedef LaraInfoBuilder Builder; - struct Traits; - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - verifier.EndTable(); - } - LaraInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(LaraInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct LaraInfoBuilder { - typedef LaraInfo Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - explicit LaraInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateLaraInfo( - flatbuffers::FlatBufferBuilder &_fbb) { - LaraInfoBuilder builder_(_fbb); - return builder_.Finish(); -} - -struct LaraInfo::Traits { - using type = LaraInfo; - static auto constexpr Create = CreateLaraInfo; -}; - -flatbuffers::Offset CreateLaraInfo(flatbuffers::FlatBufferBuilder &_fbb, const LaraInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct ItemNumberT : public flatbuffers::NativeTable { - typedef ItemNumber TableType; - int16_t num = 0; -}; - -struct ItemNumber FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef ItemNumberT NativeTableType; - typedef ItemNumberBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_NUM = 4 - }; - int16_t num() const { - return GetField(VT_NUM, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_NUM) && - verifier.EndTable(); - } - ItemNumberT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ItemNumberT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ItemNumberT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct ItemNumberBuilder { - typedef ItemNumber Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_num(int16_t num) { - fbb_.AddElement(ItemNumber::VT_NUM, num, 0); - } - explicit ItemNumberBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateItemNumber( - flatbuffers::FlatBufferBuilder &_fbb, - int16_t num = 0) { - ItemNumberBuilder builder_(_fbb); - builder_.add_num(num); - return builder_.Finish(); -} - -struct ItemNumber::Traits { - using type = ItemNumber; - static auto constexpr Create = CreateItemNumber; -}; - -flatbuffers::Offset CreateItemNumber(flatbuffers::FlatBufferBuilder &_fbb, const ItemNumberT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct ShortT : public flatbuffers::NativeTable { - typedef Short TableType; - int16_t scalar = 0; -}; - -struct Short FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef ShortT NativeTableType; - typedef ShortBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_SCALAR = 4 - }; - int16_t scalar() const { - return GetField(VT_SCALAR, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_SCALAR) && - verifier.EndTable(); - } - ShortT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ShortT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShortT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct ShortBuilder { - typedef Short Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_scalar(int16_t scalar) { - fbb_.AddElement(Short::VT_SCALAR, scalar, 0); - } - explicit ShortBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateShort( - flatbuffers::FlatBufferBuilder &_fbb, - int16_t scalar = 0) { - ShortBuilder builder_(_fbb); - builder_.add_scalar(scalar); - return builder_.Finish(); -} - -struct Short::Traits { - using type = Short; - static auto constexpr Create = CreateShort; -}; - -flatbuffers::Offset CreateShort(flatbuffers::FlatBufferBuilder &_fbb, const ShortT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct IntT : public flatbuffers::NativeTable { - typedef Int TableType; - int32_t scalar = 0; -}; - -struct Int FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef IntT NativeTableType; - typedef IntBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_SCALAR = 4 - }; - int32_t scalar() const { - return GetField(VT_SCALAR, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_SCALAR) && - verifier.EndTable(); - } - IntT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(IntT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const IntT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct IntBuilder { - typedef Int Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_scalar(int32_t scalar) { - fbb_.AddElement(Int::VT_SCALAR, scalar, 0); - } - explicit IntBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateInt( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t scalar = 0) { - IntBuilder builder_(_fbb); - builder_.add_scalar(scalar); - return builder_.Finish(); -} - -struct Int::Traits { - using type = Int; - static auto constexpr Create = CreateInt; -}; - -flatbuffers::Offset CreateInt(flatbuffers::FlatBufferBuilder &_fbb, const IntT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct FloatT : public flatbuffers::NativeTable { - typedef Float TableType; - double scalar = 0.0; -}; - -struct Float FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef FloatT NativeTableType; - typedef FloatBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_SCALAR = 4 - }; - double scalar() const { - return GetField(VT_SCALAR, 0.0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_SCALAR) && - verifier.EndTable(); - } - FloatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(FloatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct FloatBuilder { - typedef Float Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_scalar(double scalar) { - fbb_.AddElement(Float::VT_SCALAR, scalar, 0.0); - } - explicit FloatBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateFloat( - flatbuffers::FlatBufferBuilder &_fbb, - double scalar = 0.0) { - FloatBuilder builder_(_fbb); - builder_.add_scalar(scalar); - return builder_.Finish(); -} - -struct Float::Traits { - using type = Float; - static auto constexpr Create = CreateFloat; -}; - -flatbuffers::Offset CreateFloat(flatbuffers::FlatBufferBuilder &_fbb, const FloatT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct ShortArrayT : public flatbuffers::NativeTable { - typedef ShortArray TableType; - std::vector arr{}; -}; - -struct ShortArray FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef ShortArrayT NativeTableType; - typedef ShortArrayBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_ARR = 4 - }; - const flatbuffers::Vector *arr() const { - return GetPointer *>(VT_ARR); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_ARR) && - verifier.VerifyVector(arr()) && - verifier.EndTable(); - } - ShortArrayT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ShortArrayT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShortArrayT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct ShortArrayBuilder { - typedef ShortArray Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_arr(flatbuffers::Offset> arr) { - fbb_.AddOffset(ShortArray::VT_ARR, arr); - } - explicit ShortArrayBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateShortArray( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset> arr = 0) { - ShortArrayBuilder builder_(_fbb); - builder_.add_arr(arr); - return builder_.Finish(); -} - -struct ShortArray::Traits { - using type = ShortArray; - static auto constexpr Create = CreateShortArray; -}; - -inline flatbuffers::Offset CreateShortArrayDirect( - flatbuffers::FlatBufferBuilder &_fbb, - const std::vector *arr = nullptr) { - auto arr__ = arr ? _fbb.CreateVector(*arr) : 0; - return TEN::Save::CreateShortArray( - _fbb, - arr__); -} - -flatbuffers::Offset CreateShortArray(flatbuffers::FlatBufferBuilder &_fbb, const ShortArrayT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -inline CreatureTargetT *CreatureTarget::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void CreatureTarget::UnPackTo(CreatureTargetT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = object_number(); _o->object_number = _e; } - { auto _e = room_number(); _o->room_number = _e; } - { auto _e = box_number(); _o->box_number = _e; } - { auto _e = flags(); _o->flags = _e; } - { auto _e = trigger_flags(); _o->trigger_flags = _e; } - { auto _e = position(); if (_e) _o->position = std::unique_ptr(new TEN::Save::Position(*_e)); } -} - -inline flatbuffers::Offset CreatureTarget::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CreatureTargetT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateCreatureTarget(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateCreatureTarget(flatbuffers::FlatBufferBuilder &_fbb, const CreatureTargetT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CreatureTargetT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _object_number = _o->object_number; - auto _room_number = _o->room_number; - auto _box_number = _o->box_number; - auto _flags = _o->flags; - auto _trigger_flags = _o->trigger_flags; - auto _position = _o->position ? _o->position.get() : 0; - return TEN::Save::CreateCreatureTarget( - _fbb, - _object_number, - _room_number, - _box_number, - _flags, - _trigger_flags, - _position); -} - -inline CreatureT *Creature::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Creature::UnPackTo(CreatureT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = maximum_turn(); _o->maximum_turn = _e; } - { auto _e = joint_rotation(); if (_e) { _o->joint_rotation.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->joint_rotation[_i] = _e->Get(_i); } } } - { auto _e = head_left(); _o->head_left = _e; } - { auto _e = head_right(); _o->head_right = _e; } - { auto _e = patrol(); _o->patrol = _e; } - { auto _e = alerted(); _o->alerted = _e; } - { auto _e = reached_goal(); _o->reached_goal = _e; } - { auto _e = jump_ahead(); _o->jump_ahead = _e; } - { auto _e = monkey_swing_ahead(); _o->monkey_swing_ahead = _e; } - { auto _e = friendly(); _o->friendly = _e; } - { auto _e = poisoned(); _o->poisoned = _e; } - { auto _e = hurt_by_lara(); _o->hurt_by_lara = _e; } - { auto _e = tosspad(); _o->tosspad = _e; } - { auto _e = location_ai(); _o->location_ai = _e; } - { auto _e = weapon_delay1(); _o->weapon_delay1 = _e; } - { auto _e = weapon_delay2(); _o->weapon_delay2 = _e; } - { auto _e = mood(); _o->mood = _e; } - { auto _e = enemy(); _o->enemy = _e; } - { auto _e = ai_target_number(); _o->ai_target_number = _e; } - { auto _e = flags(); _o->flags = _e; } - { auto _e = can_jump(); _o->can_jump = _e; } - { auto _e = can_monkey(); _o->can_monkey = _e; } - { auto _e = is_amphibious(); _o->is_amphibious = _e; } - { auto _e = is_jumping(); _o->is_jumping = _e; } - { auto _e = is_monkeying(); _o->is_monkeying = _e; } -} - -inline flatbuffers::Offset Creature::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CreatureT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateCreature(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateCreature(flatbuffers::FlatBufferBuilder &_fbb, const CreatureT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CreatureT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _maximum_turn = _o->maximum_turn; - auto _joint_rotation = _fbb.CreateVector(_o->joint_rotation); - auto _head_left = _o->head_left; - auto _head_right = _o->head_right; - auto _patrol = _o->patrol; - auto _alerted = _o->alerted; - auto _reached_goal = _o->reached_goal; - auto _jump_ahead = _o->jump_ahead; - auto _monkey_swing_ahead = _o->monkey_swing_ahead; - auto _friendly = _o->friendly; - auto _poisoned = _o->poisoned; - auto _hurt_by_lara = _o->hurt_by_lara; - auto _tosspad = _o->tosspad; - auto _location_ai = _o->location_ai; - auto _weapon_delay1 = _o->weapon_delay1; - auto _weapon_delay2 = _o->weapon_delay2; - auto _mood = _o->mood; - auto _enemy = _o->enemy; - auto _ai_target_number = _o->ai_target_number; - auto _flags = _o->flags; - auto _can_jump = _o->can_jump; - auto _can_monkey = _o->can_monkey; - auto _is_amphibious = _o->is_amphibious; - auto _is_jumping = _o->is_jumping; - auto _is_monkeying = _o->is_monkeying; - return TEN::Save::CreateCreature( - _fbb, - _maximum_turn, - _joint_rotation, - _head_left, - _head_right, - _patrol, - _alerted, - _reached_goal, - _jump_ahead, - _monkey_swing_ahead, - _friendly, - _poisoned, - _hurt_by_lara, - _tosspad, - _location_ai, - _weapon_delay1, - _weapon_delay2, - _mood, - _enemy, - _ai_target_number, - _flags, - _can_jump, - _can_monkey, - _is_amphibious, - _is_jumping, - _is_monkeying); -} - -inline LaserHeadT *LaserHead::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void LaserHead::UnPackTo(LaserHeadT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset LaserHead::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaserHeadT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateLaserHead(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateLaserHead(flatbuffers::FlatBufferBuilder &_fbb, const LaserHeadT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaserHeadT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreateLaserHead( - _fbb); -} - -inline QuadBikeT *QuadBike::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void QuadBike::UnPackTo(QuadBikeT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = turn_rate(); _o->turn_rate = _e; } - { auto _e = front_rot(); _o->front_rot = _e; } - { auto _e = rear_rot(); _o->rear_rot = _e; } - { auto _e = momentum_angle(); _o->momentum_angle = _e; } - { auto _e = extra_rotation(); _o->extra_rotation = _e; } - { auto _e = velocity(); _o->velocity = _e; } - { auto _e = left_vertical_velocity(); _o->left_vertical_velocity = _e; } - { auto _e = right_vertical_velocity(); _o->right_vertical_velocity = _e; } - { auto _e = revs(); _o->revs = _e; } - { auto _e = engine_revs(); _o->engine_revs = _e; } - { auto _e = pitch(); _o->pitch = _e; } - { auto _e = smoke_start(); _o->smoke_start = _e; } - { auto _e = can_start_drift(); _o->can_start_drift = _e; } - { auto _e = drift_starting(); _o->drift_starting = _e; } - { auto _e = no_dismount(); _o->no_dismount = _e; } - { auto _e = flags(); _o->flags = _e; } -} - -inline flatbuffers::Offset QuadBike::Pack(flatbuffers::FlatBufferBuilder &_fbb, const QuadBikeT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateQuadBike(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateQuadBike(flatbuffers::FlatBufferBuilder &_fbb, const QuadBikeT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const QuadBikeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _turn_rate = _o->turn_rate; - auto _front_rot = _o->front_rot; - auto _rear_rot = _o->rear_rot; - auto _momentum_angle = _o->momentum_angle; - auto _extra_rotation = _o->extra_rotation; - auto _velocity = _o->velocity; - auto _left_vertical_velocity = _o->left_vertical_velocity; - auto _right_vertical_velocity = _o->right_vertical_velocity; - auto _revs = _o->revs; - auto _engine_revs = _o->engine_revs; - auto _pitch = _o->pitch; - auto _smoke_start = _o->smoke_start; - auto _can_start_drift = _o->can_start_drift; - auto _drift_starting = _o->drift_starting; - auto _no_dismount = _o->no_dismount; - auto _flags = _o->flags; - return TEN::Save::CreateQuadBike( - _fbb, - _turn_rate, - _front_rot, - _rear_rot, - _momentum_angle, - _extra_rotation, - _velocity, - _left_vertical_velocity, - _right_vertical_velocity, - _revs, - _engine_revs, - _pitch, - _smoke_start, - _can_start_drift, - _drift_starting, - _no_dismount, - _flags); -} - -inline BigGunT *BigGun::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void BigGun::UnPackTo(BigGunT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset BigGun::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BigGunT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateBigGun(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateBigGun(flatbuffers::FlatBufferBuilder &_fbb, const BigGunT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BigGunT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreateBigGun( - _fbb); -} - -inline MotorbikeT *Motorbike::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Motorbike::UnPackTo(MotorbikeT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset Motorbike::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MotorbikeT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateMotorbike(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateMotorbike(flatbuffers::FlatBufferBuilder &_fbb, const MotorbikeT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MotorbikeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreateMotorbike( - _fbb); -} - -inline JeepT *Jeep::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Jeep::UnPackTo(JeepT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset Jeep::Pack(flatbuffers::FlatBufferBuilder &_fbb, const JeepT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateJeep(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateJeep(flatbuffers::FlatBufferBuilder &_fbb, const JeepT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const JeepT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreateJeep( - _fbb); -} - -inline KayakT *Kayak::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Kayak::UnPackTo(KayakT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = turn_rate(); _o->turn_rate = _e; } - { auto _e = velocity(); _o->velocity = _e; } - { auto _e = front_vertical_velocity(); _o->front_vertical_velocity = _e; } - { auto _e = left_vertical_velocity(); _o->left_vertical_velocity = _e; } - { auto _e = right_vertical_velocity(); _o->right_vertical_velocity = _e; } - { auto _e = left_right_count(); _o->left_right_count = _e; } - { auto _e = water_height(); _o->water_height = _e; } - { auto _e = old_pos(); if (_e) _o->old_pos = std::unique_ptr(new TEN::Save::Position(*_e)); } - { auto _e = turn(); _o->turn = _e; } - { auto _e = forward(); _o->forward = _e; } - { auto _e = true_water(); _o->true_water = _e; } - { auto _e = flags(); _o->flags = _e; } -} - -inline flatbuffers::Offset Kayak::Pack(flatbuffers::FlatBufferBuilder &_fbb, const KayakT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateKayak(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateKayak(flatbuffers::FlatBufferBuilder &_fbb, const KayakT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const KayakT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _turn_rate = _o->turn_rate; - auto _velocity = _o->velocity; - auto _front_vertical_velocity = _o->front_vertical_velocity; - auto _left_vertical_velocity = _o->left_vertical_velocity; - auto _right_vertical_velocity = _o->right_vertical_velocity; - auto _left_right_count = _o->left_right_count; - auto _water_height = _o->water_height; - auto _old_pos = _o->old_pos ? _o->old_pos.get() : 0; - auto _turn = _o->turn; - auto _forward = _o->forward; - auto _true_water = _o->true_water; - auto _flags = _o->flags; - return TEN::Save::CreateKayak( - _fbb, - _turn_rate, - _velocity, - _front_vertical_velocity, - _left_vertical_velocity, - _right_vertical_velocity, - _left_right_count, - _water_height, - _old_pos, - _turn, - _forward, - _true_water, - _flags); -} - -inline DoorT *Door::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Door::UnPackTo(DoorT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset Door::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DoorT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateDoor(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateDoor(flatbuffers::FlatBufferBuilder &_fbb, const DoorT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DoorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreateDoor( - _fbb); -} - -inline SkidooT *Skidoo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Skidoo::UnPackTo(SkidooT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset Skidoo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SkidooT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateSkidoo(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateSkidoo(flatbuffers::FlatBufferBuilder &_fbb, const SkidooT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SkidooT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreateSkidoo( - _fbb); -} - -inline UPVT *UPV::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void UPV::UnPackTo(UPVT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = velocity(); _o->velocity = _e; } - { auto _e = rot(); _o->rot = _e; } - { auto _e = x_rot(); _o->x_rot = _e; } - { auto _e = fan_rot(); _o->fan_rot = _e; } - { auto _e = harpoon_timer(); _o->harpoon_timer = _e; } - { auto _e = harpoon_left(); _o->harpoon_left = _e; } - { auto _e = flags(); _o->flags = _e; } -} - -inline flatbuffers::Offset UPV::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UPVT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateUPV(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateUPV(flatbuffers::FlatBufferBuilder &_fbb, const UPVT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UPVT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _velocity = _o->velocity; - auto _rot = _o->rot; - auto _x_rot = _o->x_rot; - auto _fan_rot = _o->fan_rot; - auto _harpoon_timer = _o->harpoon_timer; - auto _harpoon_left = _o->harpoon_left; - auto _flags = _o->flags; - return TEN::Save::CreateUPV( - _fbb, - _velocity, - _rot, - _x_rot, - _fan_rot, - _harpoon_timer, - _harpoon_left, - _flags); -} - -inline MotorboatT *Motorboat::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Motorboat::UnPackTo(MotorboatT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset Motorboat::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MotorboatT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateMotorboat(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateMotorboat(flatbuffers::FlatBufferBuilder &_fbb, const MotorboatT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MotorboatT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreateMotorboat( - _fbb); -} - -inline GameVectorT *GameVector::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void GameVector::UnPackTo(GameVectorT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset GameVector::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GameVectorT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateGameVector(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateGameVector(flatbuffers::FlatBufferBuilder &_fbb, const GameVectorT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GameVectorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreateGameVector( - _fbb); -} - -inline WraithT *Wraith::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Wraith::UnPackTo(WraithT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset Wraith::Pack(flatbuffers::FlatBufferBuilder &_fbb, const WraithT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateWraith(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateWraith(flatbuffers::FlatBufferBuilder &_fbb, const WraithT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const WraithT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreateWraith( - _fbb); -} - -inline RubberboatT *Rubberboat::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Rubberboat::UnPackTo(RubberboatT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset Rubberboat::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RubberboatT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateRubberboat(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateRubberboat(flatbuffers::FlatBufferBuilder &_fbb, const RubberboatT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RubberboatT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreateRubberboat( - _fbb); -} - -inline PushableT *Pushable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Pushable::UnPackTo(PushableT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset Pushable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PushableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreatePushable(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreatePushable(flatbuffers::FlatBufferBuilder &_fbb, const PushableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PushableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreatePushable( - _fbb); -} - -inline MinecartT *Minecart::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Minecart::UnPackTo(MinecartT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = turn_rot(); _o->turn_rot = _e; } - { auto _e = turn_x(); _o->turn_x = _e; } - { auto _e = turn_z(); _o->turn_z = _e; } - { auto _e = turn_len(); _o->turn_len = _e; } - { auto _e = velocity(); _o->velocity = _e; } - { auto _e = vertical_velocity(); _o->vertical_velocity = _e; } - { auto _e = gradient(); _o->gradient = _e; } - { auto _e = stop_delay(); _o->stop_delay = _e; } - { auto _e = floor_height_middle(); _o->floor_height_middle = _e; } - { auto _e = floor_height_front(); _o->floor_height_front = _e; } - { auto _e = flags(); _o->flags = _e; } -} - -inline flatbuffers::Offset Minecart::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MinecartT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateMinecart(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateMinecart(flatbuffers::FlatBufferBuilder &_fbb, const MinecartT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MinecartT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _turn_rot = _o->turn_rot; - auto _turn_x = _o->turn_x; - auto _turn_z = _o->turn_z; - auto _turn_len = _o->turn_len; - auto _velocity = _o->velocity; - auto _vertical_velocity = _o->vertical_velocity; - auto _gradient = _o->gradient; - auto _stop_delay = _o->stop_delay; - auto _floor_height_middle = _o->floor_height_middle; - auto _floor_height_front = _o->floor_height_front; - auto _flags = _o->flags; - return TEN::Save::CreateMinecart( - _fbb, - _turn_rot, - _turn_x, - _turn_z, - _turn_len, - _velocity, - _vertical_velocity, - _gradient, - _stop_delay, - _floor_height_middle, - _floor_height_front, - _flags); -} - -inline LaraInfoT *LaraInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void LaraInfo::UnPackTo(LaraInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; -} - -inline flatbuffers::Offset LaraInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateLaraInfo(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateLaraInfo(flatbuffers::FlatBufferBuilder &_fbb, const LaraInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaraInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - return TEN::Save::CreateLaraInfo( - _fbb); -} - -inline ItemNumberT *ItemNumber::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void ItemNumber::UnPackTo(ItemNumberT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = num(); _o->num = _e; } -} - -inline flatbuffers::Offset ItemNumber::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ItemNumberT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateItemNumber(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateItemNumber(flatbuffers::FlatBufferBuilder &_fbb, const ItemNumberT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ItemNumberT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _num = _o->num; - return TEN::Save::CreateItemNumber( - _fbb, - _num); -} - -inline ShortT *Short::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Short::UnPackTo(ShortT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = scalar(); _o->scalar = _e; } -} - -inline flatbuffers::Offset Short::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShortT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateShort(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateShort(flatbuffers::FlatBufferBuilder &_fbb, const ShortT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ShortT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _scalar = _o->scalar; - return TEN::Save::CreateShort( - _fbb, - _scalar); -} - -inline IntT *Int::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Int::UnPackTo(IntT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = scalar(); _o->scalar = _e; } -} - -inline flatbuffers::Offset Int::Pack(flatbuffers::FlatBufferBuilder &_fbb, const IntT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateInt(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateInt(flatbuffers::FlatBufferBuilder &_fbb, const IntT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const IntT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _scalar = _o->scalar; - return TEN::Save::CreateInt( - _fbb, - _scalar); -} - -inline FloatT *Float::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Float::UnPackTo(FloatT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = scalar(); _o->scalar = _e; } -} - -inline flatbuffers::Offset Float::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloatT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateFloat(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateFloat(flatbuffers::FlatBufferBuilder &_fbb, const FloatT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FloatT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _scalar = _o->scalar; - return TEN::Save::CreateFloat( - _fbb, - _scalar); -} - -inline ShortArrayT *ShortArray::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void ShortArray::UnPackTo(ShortArrayT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = arr(); if (_e) { _o->arr.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->arr[_i] = _e->Get(_i); } } } -} - -inline flatbuffers::Offset ShortArray::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShortArrayT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateShortArray(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateShortArray(flatbuffers::FlatBufferBuilder &_fbb, const ShortArrayT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ShortArrayT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _arr = _fbb.CreateVector(_o->arr); - return TEN::Save::CreateShortArray( - _fbb, - _arr); -} - -inline bool VerifyItemData(flatbuffers::Verifier &verifier, const void *obj, ItemData type) { - switch (type) { - case ItemData::NONE: { - return true; - } - case ItemData::Int: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Short: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Float: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::ShortArray: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::ItemNumber: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Creature: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::LaserHead: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::QuadBike: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::BigGun: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Motorbike: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Jeep: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::LaraInfo: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Kayak: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Door: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Skidoo: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::UPV: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Motorboat: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::GameVector: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Wraith: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Rubberboat: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Pushable: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case ItemData::Minecart: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - default: return true; - } -} - -inline bool VerifyItemDataVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types) { - if (!values || !types) return !values && !types; - if (values->size() != types->size()) return false; - for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { - if (!VerifyItemData( - verifier, values->Get(i), types->GetEnum(i))) { - return false; - } - } - return true; -} - -inline void *ItemDataUnion::UnPack(const void *obj, ItemData type, const flatbuffers::resolver_function_t *resolver) { - switch (type) { - case ItemData::Int: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Short: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Float: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::ShortArray: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::ItemNumber: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Creature: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::LaserHead: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::QuadBike: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::BigGun: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Motorbike: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Jeep: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::LaraInfo: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Kayak: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Door: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Skidoo: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::UPV: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Motorboat: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::GameVector: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Wraith: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Rubberboat: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Pushable: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case ItemData::Minecart: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - default: return nullptr; - } -} - -inline flatbuffers::Offset ItemDataUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const { - switch (type) { - case ItemData::Int: { - auto ptr = reinterpret_cast(value); - return CreateInt(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Short: { - auto ptr = reinterpret_cast(value); - return CreateShort(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Float: { - auto ptr = reinterpret_cast(value); - return CreateFloat(_fbb, ptr, _rehasher).Union(); - } - case ItemData::ShortArray: { - auto ptr = reinterpret_cast(value); - return CreateShortArray(_fbb, ptr, _rehasher).Union(); - } - case ItemData::ItemNumber: { - auto ptr = reinterpret_cast(value); - return CreateItemNumber(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Creature: { - auto ptr = reinterpret_cast(value); - return CreateCreature(_fbb, ptr, _rehasher).Union(); - } - case ItemData::LaserHead: { - auto ptr = reinterpret_cast(value); - return CreateLaserHead(_fbb, ptr, _rehasher).Union(); - } - case ItemData::QuadBike: { - auto ptr = reinterpret_cast(value); - return CreateQuadBike(_fbb, ptr, _rehasher).Union(); - } - case ItemData::BigGun: { - auto ptr = reinterpret_cast(value); - return CreateBigGun(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Motorbike: { - auto ptr = reinterpret_cast(value); - return CreateMotorbike(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Jeep: { - auto ptr = reinterpret_cast(value); - return CreateJeep(_fbb, ptr, _rehasher).Union(); - } - case ItemData::LaraInfo: { - auto ptr = reinterpret_cast(value); - return CreateLaraInfo(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Kayak: { - auto ptr = reinterpret_cast(value); - return CreateKayak(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Door: { - auto ptr = reinterpret_cast(value); - return CreateDoor(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Skidoo: { - auto ptr = reinterpret_cast(value); - return CreateSkidoo(_fbb, ptr, _rehasher).Union(); - } - case ItemData::UPV: { - auto ptr = reinterpret_cast(value); - return CreateUPV(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Motorboat: { - auto ptr = reinterpret_cast(value); - return CreateMotorboat(_fbb, ptr, _rehasher).Union(); - } - case ItemData::GameVector: { - auto ptr = reinterpret_cast(value); - return CreateGameVector(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Wraith: { - auto ptr = reinterpret_cast(value); - return CreateWraith(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Rubberboat: { - auto ptr = reinterpret_cast(value); - return CreateRubberboat(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Pushable: { - auto ptr = reinterpret_cast(value); - return CreatePushable(_fbb, ptr, _rehasher).Union(); - } - case ItemData::Minecart: { - auto ptr = reinterpret_cast(value); - return CreateMinecart(_fbb, ptr, _rehasher).Union(); - } - default: return 0; - } -} - -inline ItemDataUnion::ItemDataUnion(const ItemDataUnion &u) : type(u.type), value(nullptr) { - switch (type) { - case ItemData::Int: { - value = new TEN::Save::IntT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Short: { - value = new TEN::Save::ShortT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Float: { - value = new TEN::Save::FloatT(*reinterpret_cast(u.value)); - break; - } - case ItemData::ShortArray: { - value = new TEN::Save::ShortArrayT(*reinterpret_cast(u.value)); - break; - } - case ItemData::ItemNumber: { - value = new TEN::Save::ItemNumberT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Creature: { - value = new TEN::Save::CreatureT(*reinterpret_cast(u.value)); - break; - } - case ItemData::LaserHead: { - value = new TEN::Save::LaserHeadT(*reinterpret_cast(u.value)); - break; - } - case ItemData::QuadBike: { - value = new TEN::Save::QuadBikeT(*reinterpret_cast(u.value)); - break; - } - case ItemData::BigGun: { - value = new TEN::Save::BigGunT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Motorbike: { - value = new TEN::Save::MotorbikeT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Jeep: { - value = new TEN::Save::JeepT(*reinterpret_cast(u.value)); - break; - } - case ItemData::LaraInfo: { - value = new TEN::Save::LaraInfoT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Kayak: { - FLATBUFFERS_ASSERT(false); // TEN::Save::KayakT not copyable. - break; - } - case ItemData::Door: { - value = new TEN::Save::DoorT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Skidoo: { - value = new TEN::Save::SkidooT(*reinterpret_cast(u.value)); - break; - } - case ItemData::UPV: { - value = new TEN::Save::UPVT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Motorboat: { - value = new TEN::Save::MotorboatT(*reinterpret_cast(u.value)); - break; - } - case ItemData::GameVector: { - value = new TEN::Save::GameVectorT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Wraith: { - value = new TEN::Save::WraithT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Rubberboat: { - value = new TEN::Save::RubberboatT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Pushable: { - value = new TEN::Save::PushableT(*reinterpret_cast(u.value)); - break; - } - case ItemData::Minecart: { - value = new TEN::Save::MinecartT(*reinterpret_cast(u.value)); - break; - } - default: - break; - } -} - -inline void ItemDataUnion::Reset() { - switch (type) { - case ItemData::Int: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Short: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Float: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::ShortArray: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::ItemNumber: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Creature: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::LaserHead: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::QuadBike: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::BigGun: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Motorbike: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Jeep: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::LaraInfo: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Kayak: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Door: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Skidoo: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::UPV: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Motorboat: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::GameVector: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Wraith: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Rubberboat: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Pushable: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case ItemData::Minecart: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - default: break; - } - value = nullptr; - type = ItemData::NONE; -} - -} // namespace Save -} // namespace TEN - -#endif // FLATBUFFERS_GENERATED_TENITEMDATA_TEN_SAVE_H_ +// automatically generated by the FlatBuffers compiler, do not modify + + +#ifndef FLATBUFFERS_GENERATED_TENITEMDATA_TEN_SAVE_H_ +#define FLATBUFFERS_GENERATED_TENITEMDATA_TEN_SAVE_H_ + +#include "flatbuffers/flatbuffers.h" + +namespace TEN { +namespace Save { + +struct Position; + +struct CreatureTarget; +struct CreatureTargetBuilder; +struct CreatureTargetT; + +struct Creature; +struct CreatureBuilder; +struct CreatureT; + +struct LaserHead; +struct LaserHeadBuilder; +struct LaserHeadT; + +struct QuadBike; +struct QuadBikeBuilder; +struct QuadBikeT; + +struct BigGun; +struct BigGunBuilder; +struct BigGunT; + +struct Motorbike; +struct MotorbikeBuilder; +struct MotorbikeT; + +struct Jeep; +struct JeepBuilder; +struct JeepT; + +struct Kayak; +struct KayakBuilder; +struct KayakT; + +struct Door; +struct DoorBuilder; +struct DoorT; + +struct Skidoo; +struct SkidooBuilder; +struct SkidooT; + +struct UPV; +struct UPVBuilder; +struct UPVT; + +struct Motorboat; +struct MotorboatBuilder; +struct MotorboatT; + +struct GameVector; +struct GameVectorBuilder; +struct GameVectorT; + +struct Wraith; +struct WraithBuilder; +struct WraithT; + +struct Rubberboat; +struct RubberboatBuilder; +struct RubberboatT; + +struct Pushable; +struct PushableBuilder; +struct PushableT; + +struct Minecart; +struct MinecartBuilder; +struct MinecartT; + +struct LaraInfo; +struct LaraInfoBuilder; +struct LaraInfoT; + +struct ItemNumber; +struct ItemNumberBuilder; +struct ItemNumberT; + +struct Short; +struct ShortBuilder; +struct ShortT; + +struct Int; +struct IntBuilder; +struct IntT; + +struct Float; +struct FloatBuilder; +struct FloatT; + +struct ShortArray; +struct ShortArrayBuilder; +struct ShortArrayT; + +struct Vector2; + +struct Vector3; + +struct Vector4; + +enum class ItemData : uint8_t { + NONE = 0, + Int = 1, + Short = 2, + Float = 3, + ShortArray = 4, + ItemNumber = 5, + Creature = 6, + LaserHead = 7, + QuadBike = 8, + BigGun = 9, + Motorbike = 10, + Jeep = 11, + LaraInfo = 12, + Kayak = 13, + Door = 14, + Skidoo = 15, + UPV = 16, + Motorboat = 17, + GameVector = 18, + Wraith = 19, + Rubberboat = 20, + Pushable = 21, + Minecart = 22, + MIN = NONE, + MAX = Minecart +}; + +inline const ItemData (&EnumValuesItemData())[23] { + static const ItemData values[] = { + ItemData::NONE, + ItemData::Int, + ItemData::Short, + ItemData::Float, + ItemData::ShortArray, + ItemData::ItemNumber, + ItemData::Creature, + ItemData::LaserHead, + ItemData::QuadBike, + ItemData::BigGun, + ItemData::Motorbike, + ItemData::Jeep, + ItemData::LaraInfo, + ItemData::Kayak, + ItemData::Door, + ItemData::Skidoo, + ItemData::UPV, + ItemData::Motorboat, + ItemData::GameVector, + ItemData::Wraith, + ItemData::Rubberboat, + ItemData::Pushable, + ItemData::Minecart + }; + return values; +} + +inline const char * const *EnumNamesItemData() { + static const char * const names[24] = { + "NONE", + "Int", + "Short", + "Float", + "ShortArray", + "ItemNumber", + "Creature", + "LaserHead", + "QuadBike", + "BigGun", + "Motorbike", + "Jeep", + "LaraInfo", + "Kayak", + "Door", + "Skidoo", + "UPV", + "Motorboat", + "GameVector", + "Wraith", + "Rubberboat", + "Pushable", + "Minecart", + nullptr + }; + return names; +} + +inline const char *EnumNameItemData(ItemData e) { + if (flatbuffers::IsOutRange(e, ItemData::NONE, ItemData::Minecart)) return ""; + const size_t index = static_cast(e); + return EnumNamesItemData()[index]; +} + +template struct ItemDataTraits { + static const ItemData enum_value = ItemData::NONE; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Int; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Short; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Float; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::ShortArray; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::ItemNumber; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Creature; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::LaserHead; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::QuadBike; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::BigGun; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Motorbike; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Jeep; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::LaraInfo; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Kayak; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Door; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Skidoo; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::UPV; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Motorboat; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::GameVector; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Wraith; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Rubberboat; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Pushable; +}; + +template<> struct ItemDataTraits { + static const ItemData enum_value = ItemData::Minecart; +}; + +struct ItemDataUnion { + ItemData type; + void *value; + + ItemDataUnion() : type(ItemData::NONE), value(nullptr) {} + ItemDataUnion(ItemDataUnion&& u) FLATBUFFERS_NOEXCEPT : + type(ItemData::NONE), value(nullptr) + { std::swap(type, u.type); std::swap(value, u.value); } + ItemDataUnion(const ItemDataUnion &); + ItemDataUnion &operator=(const ItemDataUnion &u) + { ItemDataUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; } + ItemDataUnion &operator=(ItemDataUnion &&u) FLATBUFFERS_NOEXCEPT + { std::swap(type, u.type); std::swap(value, u.value); return *this; } + ~ItemDataUnion() { Reset(); } + + void Reset(); + +#ifndef FLATBUFFERS_CPP98_STL + template + void Set(T&& val) { + using RT = typename std::remove_reference::type; + Reset(); + type = ItemDataTraits::enum_value; + if (type != ItemData::NONE) { + value = new RT(std::forward(val)); + } + } +#endif // FLATBUFFERS_CPP98_STL + + static void *UnPack(const void *obj, ItemData type, const flatbuffers::resolver_function_t *resolver); + flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const; + + TEN::Save::IntT *AsInt() { + return type == ItemData::Int ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::IntT *AsInt() const { + return type == ItemData::Int ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::ShortT *AsShort() { + return type == ItemData::Short ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::ShortT *AsShort() const { + return type == ItemData::Short ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::FloatT *AsFloat() { + return type == ItemData::Float ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::FloatT *AsFloat() const { + return type == ItemData::Float ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::ShortArrayT *AsShortArray() { + return type == ItemData::ShortArray ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::ShortArrayT *AsShortArray() const { + return type == ItemData::ShortArray ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::ItemNumberT *AsItemNumber() { + return type == ItemData::ItemNumber ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::ItemNumberT *AsItemNumber() const { + return type == ItemData::ItemNumber ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::CreatureT *AsCreature() { + return type == ItemData::Creature ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::CreatureT *AsCreature() const { + return type == ItemData::Creature ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::LaserHeadT *AsLaserHead() { + return type == ItemData::LaserHead ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::LaserHeadT *AsLaserHead() const { + return type == ItemData::LaserHead ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::QuadBikeT *AsQuadBike() { + return type == ItemData::QuadBike ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::QuadBikeT *AsQuadBike() const { + return type == ItemData::QuadBike ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::BigGunT *AsBigGun() { + return type == ItemData::BigGun ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::BigGunT *AsBigGun() const { + return type == ItemData::BigGun ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::MotorbikeT *AsMotorbike() { + return type == ItemData::Motorbike ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::MotorbikeT *AsMotorbike() const { + return type == ItemData::Motorbike ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::JeepT *AsJeep() { + return type == ItemData::Jeep ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::JeepT *AsJeep() const { + return type == ItemData::Jeep ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::LaraInfoT *AsLaraInfo() { + return type == ItemData::LaraInfo ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::LaraInfoT *AsLaraInfo() const { + return type == ItemData::LaraInfo ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::KayakT *AsKayak() { + return type == ItemData::Kayak ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::KayakT *AsKayak() const { + return type == ItemData::Kayak ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::DoorT *AsDoor() { + return type == ItemData::Door ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::DoorT *AsDoor() const { + return type == ItemData::Door ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::SkidooT *AsSkidoo() { + return type == ItemData::Skidoo ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::SkidooT *AsSkidoo() const { + return type == ItemData::Skidoo ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::UPVT *AsUPV() { + return type == ItemData::UPV ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::UPVT *AsUPV() const { + return type == ItemData::UPV ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::MotorboatT *AsMotorboat() { + return type == ItemData::Motorboat ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::MotorboatT *AsMotorboat() const { + return type == ItemData::Motorboat ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::GameVectorT *AsGameVector() { + return type == ItemData::GameVector ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::GameVectorT *AsGameVector() const { + return type == ItemData::GameVector ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::WraithT *AsWraith() { + return type == ItemData::Wraith ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::WraithT *AsWraith() const { + return type == ItemData::Wraith ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::RubberboatT *AsRubberboat() { + return type == ItemData::Rubberboat ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::RubberboatT *AsRubberboat() const { + return type == ItemData::Rubberboat ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::PushableT *AsPushable() { + return type == ItemData::Pushable ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::PushableT *AsPushable() const { + return type == ItemData::Pushable ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::MinecartT *AsMinecart() { + return type == ItemData::Minecart ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::MinecartT *AsMinecart() const { + return type == ItemData::Minecart ? + reinterpret_cast(value) : nullptr; + } +}; + +bool VerifyItemData(flatbuffers::Verifier &verifier, const void *obj, ItemData type); +bool VerifyItemDataVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types); + +FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Position FLATBUFFERS_FINAL_CLASS { + private: + int32_t x_pos_; + int32_t y_pos_; + int32_t z_pos_; + int32_t x_rot_; + int32_t y_rot_; + int32_t z_rot_; + + public: + struct Traits; + Position() + : x_pos_(0), + y_pos_(0), + z_pos_(0), + x_rot_(0), + y_rot_(0), + z_rot_(0) { + } + Position(int32_t _x_pos, int32_t _y_pos, int32_t _z_pos, int32_t _x_rot, int32_t _y_rot, int32_t _z_rot) + : x_pos_(flatbuffers::EndianScalar(_x_pos)), + y_pos_(flatbuffers::EndianScalar(_y_pos)), + z_pos_(flatbuffers::EndianScalar(_z_pos)), + x_rot_(flatbuffers::EndianScalar(_x_rot)), + y_rot_(flatbuffers::EndianScalar(_y_rot)), + z_rot_(flatbuffers::EndianScalar(_z_rot)) { + } + int32_t x_pos() const { + return flatbuffers::EndianScalar(x_pos_); + } + int32_t y_pos() const { + return flatbuffers::EndianScalar(y_pos_); + } + int32_t z_pos() const { + return flatbuffers::EndianScalar(z_pos_); + } + int32_t x_rot() const { + return flatbuffers::EndianScalar(x_rot_); + } + int32_t y_rot() const { + return flatbuffers::EndianScalar(y_rot_); + } + int32_t z_rot() const { + return flatbuffers::EndianScalar(z_rot_); + } +}; +FLATBUFFERS_STRUCT_END(Position, 24); + +struct Position::Traits { + using type = Position; +}; + +FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Vector2 FLATBUFFERS_FINAL_CLASS { + private: + float x_; + float y_; + + public: + struct Traits; + Vector2() + : x_(0), + y_(0) { + } + Vector2(float _x, float _y) + : x_(flatbuffers::EndianScalar(_x)), + y_(flatbuffers::EndianScalar(_y)) { + } + float x() const { + return flatbuffers::EndianScalar(x_); + } + float y() const { + return flatbuffers::EndianScalar(y_); + } +}; +FLATBUFFERS_STRUCT_END(Vector2, 8); + +struct Vector2::Traits { + using type = Vector2; +}; + +FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Vector3 FLATBUFFERS_FINAL_CLASS { + private: + float x_; + float y_; + float z_; + + public: + struct Traits; + Vector3() + : x_(0), + y_(0), + z_(0) { + } + Vector3(float _x, float _y, float _z) + : x_(flatbuffers::EndianScalar(_x)), + y_(flatbuffers::EndianScalar(_y)), + z_(flatbuffers::EndianScalar(_z)) { + } + float x() const { + return flatbuffers::EndianScalar(x_); + } + float y() const { + return flatbuffers::EndianScalar(y_); + } + float z() const { + return flatbuffers::EndianScalar(z_); + } +}; +FLATBUFFERS_STRUCT_END(Vector3, 12); + +struct Vector3::Traits { + using type = Vector3; +}; + +FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Vector4 FLATBUFFERS_FINAL_CLASS { + private: + float x_; + float y_; + float z_; + float w_; + + public: + struct Traits; + Vector4() + : x_(0), + y_(0), + z_(0), + w_(0) { + } + Vector4(float _x, float _y, float _z, float _w) + : x_(flatbuffers::EndianScalar(_x)), + y_(flatbuffers::EndianScalar(_y)), + z_(flatbuffers::EndianScalar(_z)), + w_(flatbuffers::EndianScalar(_w)) { + } + float x() const { + return flatbuffers::EndianScalar(x_); + } + float y() const { + return flatbuffers::EndianScalar(y_); + } + float z() const { + return flatbuffers::EndianScalar(z_); + } + float w() const { + return flatbuffers::EndianScalar(w_); + } +}; +FLATBUFFERS_STRUCT_END(Vector4, 16); + +struct Vector4::Traits { + using type = Vector4; +}; + +struct CreatureTargetT : public flatbuffers::NativeTable { + typedef CreatureTarget TableType; + int32_t object_number = 0; + int32_t room_number = 0; + int32_t box_number = 0; + int32_t flags = 0; + int32_t trigger_flags = 0; + std::unique_ptr position{}; +}; + +struct CreatureTarget FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef CreatureTargetT NativeTableType; + typedef CreatureTargetBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_OBJECT_NUMBER = 4, + VT_ROOM_NUMBER = 6, + VT_BOX_NUMBER = 8, + VT_FLAGS = 10, + VT_TRIGGER_FLAGS = 12, + VT_POSITION = 14 + }; + int32_t object_number() const { + return GetField(VT_OBJECT_NUMBER, 0); + } + int32_t room_number() const { + return GetField(VT_ROOM_NUMBER, 0); + } + int32_t box_number() const { + return GetField(VT_BOX_NUMBER, 0); + } + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + int32_t trigger_flags() const { + return GetField(VT_TRIGGER_FLAGS, 0); + } + const TEN::Save::Position *position() const { + return GetStruct(VT_POSITION); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_OBJECT_NUMBER) && + VerifyField(verifier, VT_ROOM_NUMBER) && + VerifyField(verifier, VT_BOX_NUMBER) && + VerifyField(verifier, VT_FLAGS) && + VerifyField(verifier, VT_TRIGGER_FLAGS) && + VerifyField(verifier, VT_POSITION) && + verifier.EndTable(); + } + CreatureTargetT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(CreatureTargetT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const CreatureTargetT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct CreatureTargetBuilder { + typedef CreatureTarget Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_object_number(int32_t object_number) { + fbb_.AddElement(CreatureTarget::VT_OBJECT_NUMBER, object_number, 0); + } + void add_room_number(int32_t room_number) { + fbb_.AddElement(CreatureTarget::VT_ROOM_NUMBER, room_number, 0); + } + void add_box_number(int32_t box_number) { + fbb_.AddElement(CreatureTarget::VT_BOX_NUMBER, box_number, 0); + } + void add_flags(int32_t flags) { + fbb_.AddElement(CreatureTarget::VT_FLAGS, flags, 0); + } + void add_trigger_flags(int32_t trigger_flags) { + fbb_.AddElement(CreatureTarget::VT_TRIGGER_FLAGS, trigger_flags, 0); + } + void add_position(const TEN::Save::Position *position) { + fbb_.AddStruct(CreatureTarget::VT_POSITION, position); + } + explicit CreatureTargetBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateCreatureTarget( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t object_number = 0, + int32_t room_number = 0, + int32_t box_number = 0, + int32_t flags = 0, + int32_t trigger_flags = 0, + const TEN::Save::Position *position = 0) { + CreatureTargetBuilder builder_(_fbb); + builder_.add_position(position); + builder_.add_trigger_flags(trigger_flags); + builder_.add_flags(flags); + builder_.add_box_number(box_number); + builder_.add_room_number(room_number); + builder_.add_object_number(object_number); + return builder_.Finish(); +} + +struct CreatureTarget::Traits { + using type = CreatureTarget; + static auto constexpr Create = CreateCreatureTarget; +}; + +flatbuffers::Offset CreateCreatureTarget(flatbuffers::FlatBufferBuilder &_fbb, const CreatureTargetT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct CreatureT : public flatbuffers::NativeTable { + typedef Creature TableType; + int32_t maximum_turn = 0; + std::vector joint_rotation{}; + bool head_left = false; + bool head_right = false; + bool patrol = false; + bool alerted = false; + bool reached_goal = false; + bool jump_ahead = false; + bool monkey_swing_ahead = false; + bool friendly = false; + bool poisoned = false; + bool hurt_by_lara = false; + int32_t tosspad = 0; + int32_t location_ai = 0; + int32_t weapon_delay1 = 0; + int32_t weapon_delay2 = 0; + int32_t mood = 0; + int32_t enemy = 0; + int32_t ai_target_number = 0; + int32_t flags = 0; + bool can_jump = false; + bool can_monkey = false; + bool is_amphibious = false; + bool is_jumping = false; + bool is_monkeying = false; +}; + +struct Creature FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef CreatureT NativeTableType; + typedef CreatureBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_MAXIMUM_TURN = 4, + VT_JOINT_ROTATION = 6, + VT_HEAD_LEFT = 8, + VT_HEAD_RIGHT = 10, + VT_PATROL = 12, + VT_ALERTED = 14, + VT_REACHED_GOAL = 16, + VT_JUMP_AHEAD = 18, + VT_MONKEY_SWING_AHEAD = 20, + VT_FRIENDLY = 22, + VT_POISONED = 24, + VT_HURT_BY_LARA = 26, + VT_TOSSPAD = 28, + VT_LOCATION_AI = 30, + VT_WEAPON_DELAY1 = 32, + VT_WEAPON_DELAY2 = 34, + VT_MOOD = 36, + VT_ENEMY = 38, + VT_AI_TARGET_NUMBER = 40, + VT_FLAGS = 42, + VT_CAN_JUMP = 44, + VT_CAN_MONKEY = 46, + VT_IS_AMPHIBIOUS = 48, + VT_IS_JUMPING = 50, + VT_IS_MONKEYING = 52 + }; + int32_t maximum_turn() const { + return GetField(VT_MAXIMUM_TURN, 0); + } + const flatbuffers::Vector *joint_rotation() const { + return GetPointer *>(VT_JOINT_ROTATION); + } + bool head_left() const { + return GetField(VT_HEAD_LEFT, 0) != 0; + } + bool head_right() const { + return GetField(VT_HEAD_RIGHT, 0) != 0; + } + bool patrol() const { + return GetField(VT_PATROL, 0) != 0; + } + bool alerted() const { + return GetField(VT_ALERTED, 0) != 0; + } + bool reached_goal() const { + return GetField(VT_REACHED_GOAL, 0) != 0; + } + bool jump_ahead() const { + return GetField(VT_JUMP_AHEAD, 0) != 0; + } + bool monkey_swing_ahead() const { + return GetField(VT_MONKEY_SWING_AHEAD, 0) != 0; + } + bool friendly() const { + return GetField(VT_FRIENDLY, 0) != 0; + } + bool poisoned() const { + return GetField(VT_POISONED, 0) != 0; + } + bool hurt_by_lara() const { + return GetField(VT_HURT_BY_LARA, 0) != 0; + } + int32_t tosspad() const { + return GetField(VT_TOSSPAD, 0); + } + int32_t location_ai() const { + return GetField(VT_LOCATION_AI, 0); + } + int32_t weapon_delay1() const { + return GetField(VT_WEAPON_DELAY1, 0); + } + int32_t weapon_delay2() const { + return GetField(VT_WEAPON_DELAY2, 0); + } + int32_t mood() const { + return GetField(VT_MOOD, 0); + } + int32_t enemy() const { + return GetField(VT_ENEMY, 0); + } + int32_t ai_target_number() const { + return GetField(VT_AI_TARGET_NUMBER, 0); + } + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + bool can_jump() const { + return GetField(VT_CAN_JUMP, 0) != 0; + } + bool can_monkey() const { + return GetField(VT_CAN_MONKEY, 0) != 0; + } + bool is_amphibious() const { + return GetField(VT_IS_AMPHIBIOUS, 0) != 0; + } + bool is_jumping() const { + return GetField(VT_IS_JUMPING, 0) != 0; + } + bool is_monkeying() const { + return GetField(VT_IS_MONKEYING, 0) != 0; + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_MAXIMUM_TURN) && + VerifyOffset(verifier, VT_JOINT_ROTATION) && + verifier.VerifyVector(joint_rotation()) && + VerifyField(verifier, VT_HEAD_LEFT) && + VerifyField(verifier, VT_HEAD_RIGHT) && + VerifyField(verifier, VT_PATROL) && + VerifyField(verifier, VT_ALERTED) && + VerifyField(verifier, VT_REACHED_GOAL) && + VerifyField(verifier, VT_JUMP_AHEAD) && + VerifyField(verifier, VT_MONKEY_SWING_AHEAD) && + VerifyField(verifier, VT_FRIENDLY) && + VerifyField(verifier, VT_POISONED) && + VerifyField(verifier, VT_HURT_BY_LARA) && + VerifyField(verifier, VT_TOSSPAD) && + VerifyField(verifier, VT_LOCATION_AI) && + VerifyField(verifier, VT_WEAPON_DELAY1) && + VerifyField(verifier, VT_WEAPON_DELAY2) && + VerifyField(verifier, VT_MOOD) && + VerifyField(verifier, VT_ENEMY) && + VerifyField(verifier, VT_AI_TARGET_NUMBER) && + VerifyField(verifier, VT_FLAGS) && + VerifyField(verifier, VT_CAN_JUMP) && + VerifyField(verifier, VT_CAN_MONKEY) && + VerifyField(verifier, VT_IS_AMPHIBIOUS) && + VerifyField(verifier, VT_IS_JUMPING) && + VerifyField(verifier, VT_IS_MONKEYING) && + verifier.EndTable(); + } + CreatureT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(CreatureT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const CreatureT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct CreatureBuilder { + typedef Creature Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_maximum_turn(int32_t maximum_turn) { + fbb_.AddElement(Creature::VT_MAXIMUM_TURN, maximum_turn, 0); + } + void add_joint_rotation(flatbuffers::Offset> joint_rotation) { + fbb_.AddOffset(Creature::VT_JOINT_ROTATION, joint_rotation); + } + void add_head_left(bool head_left) { + fbb_.AddElement(Creature::VT_HEAD_LEFT, static_cast(head_left), 0); + } + void add_head_right(bool head_right) { + fbb_.AddElement(Creature::VT_HEAD_RIGHT, static_cast(head_right), 0); + } + void add_patrol(bool patrol) { + fbb_.AddElement(Creature::VT_PATROL, static_cast(patrol), 0); + } + void add_alerted(bool alerted) { + fbb_.AddElement(Creature::VT_ALERTED, static_cast(alerted), 0); + } + void add_reached_goal(bool reached_goal) { + fbb_.AddElement(Creature::VT_REACHED_GOAL, static_cast(reached_goal), 0); + } + void add_jump_ahead(bool jump_ahead) { + fbb_.AddElement(Creature::VT_JUMP_AHEAD, static_cast(jump_ahead), 0); + } + void add_monkey_swing_ahead(bool monkey_swing_ahead) { + fbb_.AddElement(Creature::VT_MONKEY_SWING_AHEAD, static_cast(monkey_swing_ahead), 0); + } + void add_friendly(bool friendly) { + fbb_.AddElement(Creature::VT_FRIENDLY, static_cast(friendly), 0); + } + void add_poisoned(bool poisoned) { + fbb_.AddElement(Creature::VT_POISONED, static_cast(poisoned), 0); + } + void add_hurt_by_lara(bool hurt_by_lara) { + fbb_.AddElement(Creature::VT_HURT_BY_LARA, static_cast(hurt_by_lara), 0); + } + void add_tosspad(int32_t tosspad) { + fbb_.AddElement(Creature::VT_TOSSPAD, tosspad, 0); + } + void add_location_ai(int32_t location_ai) { + fbb_.AddElement(Creature::VT_LOCATION_AI, location_ai, 0); + } + void add_weapon_delay1(int32_t weapon_delay1) { + fbb_.AddElement(Creature::VT_WEAPON_DELAY1, weapon_delay1, 0); + } + void add_weapon_delay2(int32_t weapon_delay2) { + fbb_.AddElement(Creature::VT_WEAPON_DELAY2, weapon_delay2, 0); + } + void add_mood(int32_t mood) { + fbb_.AddElement(Creature::VT_MOOD, mood, 0); + } + void add_enemy(int32_t enemy) { + fbb_.AddElement(Creature::VT_ENEMY, enemy, 0); + } + void add_ai_target_number(int32_t ai_target_number) { + fbb_.AddElement(Creature::VT_AI_TARGET_NUMBER, ai_target_number, 0); + } + void add_flags(int32_t flags) { + fbb_.AddElement(Creature::VT_FLAGS, flags, 0); + } + void add_can_jump(bool can_jump) { + fbb_.AddElement(Creature::VT_CAN_JUMP, static_cast(can_jump), 0); + } + void add_can_monkey(bool can_monkey) { + fbb_.AddElement(Creature::VT_CAN_MONKEY, static_cast(can_monkey), 0); + } + void add_is_amphibious(bool is_amphibious) { + fbb_.AddElement(Creature::VT_IS_AMPHIBIOUS, static_cast(is_amphibious), 0); + } + void add_is_jumping(bool is_jumping) { + fbb_.AddElement(Creature::VT_IS_JUMPING, static_cast(is_jumping), 0); + } + void add_is_monkeying(bool is_monkeying) { + fbb_.AddElement(Creature::VT_IS_MONKEYING, static_cast(is_monkeying), 0); + } + explicit CreatureBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateCreature( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t maximum_turn = 0, + flatbuffers::Offset> joint_rotation = 0, + bool head_left = false, + bool head_right = false, + bool patrol = false, + bool alerted = false, + bool reached_goal = false, + bool jump_ahead = false, + bool monkey_swing_ahead = false, + bool friendly = false, + bool poisoned = false, + bool hurt_by_lara = false, + int32_t tosspad = 0, + int32_t location_ai = 0, + int32_t weapon_delay1 = 0, + int32_t weapon_delay2 = 0, + int32_t mood = 0, + int32_t enemy = 0, + int32_t ai_target_number = 0, + int32_t flags = 0, + bool can_jump = false, + bool can_monkey = false, + bool is_amphibious = false, + bool is_jumping = false, + bool is_monkeying = false) { + CreatureBuilder builder_(_fbb); + builder_.add_flags(flags); + builder_.add_ai_target_number(ai_target_number); + builder_.add_enemy(enemy); + builder_.add_mood(mood); + builder_.add_weapon_delay2(weapon_delay2); + builder_.add_weapon_delay1(weapon_delay1); + builder_.add_location_ai(location_ai); + builder_.add_tosspad(tosspad); + builder_.add_joint_rotation(joint_rotation); + builder_.add_maximum_turn(maximum_turn); + builder_.add_is_monkeying(is_monkeying); + builder_.add_is_jumping(is_jumping); + builder_.add_is_amphibious(is_amphibious); + builder_.add_can_monkey(can_monkey); + builder_.add_can_jump(can_jump); + builder_.add_hurt_by_lara(hurt_by_lara); + builder_.add_poisoned(poisoned); + builder_.add_friendly(friendly); + builder_.add_monkey_swing_ahead(monkey_swing_ahead); + builder_.add_jump_ahead(jump_ahead); + builder_.add_reached_goal(reached_goal); + builder_.add_alerted(alerted); + builder_.add_patrol(patrol); + builder_.add_head_right(head_right); + builder_.add_head_left(head_left); + return builder_.Finish(); +} + +struct Creature::Traits { + using type = Creature; + static auto constexpr Create = CreateCreature; +}; + +inline flatbuffers::Offset CreateCreatureDirect( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t maximum_turn = 0, + const std::vector *joint_rotation = nullptr, + bool head_left = false, + bool head_right = false, + bool patrol = false, + bool alerted = false, + bool reached_goal = false, + bool jump_ahead = false, + bool monkey_swing_ahead = false, + bool friendly = false, + bool poisoned = false, + bool hurt_by_lara = false, + int32_t tosspad = 0, + int32_t location_ai = 0, + int32_t weapon_delay1 = 0, + int32_t weapon_delay2 = 0, + int32_t mood = 0, + int32_t enemy = 0, + int32_t ai_target_number = 0, + int32_t flags = 0, + bool can_jump = false, + bool can_monkey = false, + bool is_amphibious = false, + bool is_jumping = false, + bool is_monkeying = false) { + auto joint_rotation__ = joint_rotation ? _fbb.CreateVector(*joint_rotation) : 0; + return TEN::Save::CreateCreature( + _fbb, + maximum_turn, + joint_rotation__, + head_left, + head_right, + patrol, + alerted, + reached_goal, + jump_ahead, + monkey_swing_ahead, + friendly, + poisoned, + hurt_by_lara, + tosspad, + location_ai, + weapon_delay1, + weapon_delay2, + mood, + enemy, + ai_target_number, + flags, + can_jump, + can_monkey, + is_amphibious, + is_jumping, + is_monkeying); +} + +flatbuffers::Offset CreateCreature(flatbuffers::FlatBufferBuilder &_fbb, const CreatureT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct LaserHeadT : public flatbuffers::NativeTable { + typedef LaserHead TableType; +}; + +struct LaserHead FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef LaserHeadT NativeTableType; + typedef LaserHeadBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + LaserHeadT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(LaserHeadT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaserHeadT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct LaserHeadBuilder { + typedef LaserHead Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit LaserHeadBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateLaserHead( + flatbuffers::FlatBufferBuilder &_fbb) { + LaserHeadBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct LaserHead::Traits { + using type = LaserHead; + static auto constexpr Create = CreateLaserHead; +}; + +flatbuffers::Offset CreateLaserHead(flatbuffers::FlatBufferBuilder &_fbb, const LaserHeadT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct QuadBikeT : public flatbuffers::NativeTable { + typedef QuadBike TableType; + int32_t turn_rate = 0; + int32_t front_rot = 0; + int32_t rear_rot = 0; + int32_t momentum_angle = 0; + int32_t extra_rotation = 0; + int32_t velocity = 0; + int32_t left_vertical_velocity = 0; + int32_t right_vertical_velocity = 0; + int32_t revs = 0; + int32_t engine_revs = 0; + int32_t pitch = 0; + int32_t smoke_start = 0; + bool can_start_drift = false; + bool drift_starting = false; + bool no_dismount = false; + int32_t flags = 0; +}; + +struct QuadBike FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef QuadBikeT NativeTableType; + typedef QuadBikeBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_TURN_RATE = 4, + VT_FRONT_ROT = 6, + VT_REAR_ROT = 8, + VT_MOMENTUM_ANGLE = 10, + VT_EXTRA_ROTATION = 12, + VT_VELOCITY = 14, + VT_LEFT_VERTICAL_VELOCITY = 16, + VT_RIGHT_VERTICAL_VELOCITY = 18, + VT_REVS = 20, + VT_ENGINE_REVS = 22, + VT_PITCH = 24, + VT_SMOKE_START = 26, + VT_CAN_START_DRIFT = 28, + VT_DRIFT_STARTING = 30, + VT_NO_DISMOUNT = 32, + VT_FLAGS = 34 + }; + int32_t turn_rate() const { + return GetField(VT_TURN_RATE, 0); + } + int32_t front_rot() const { + return GetField(VT_FRONT_ROT, 0); + } + int32_t rear_rot() const { + return GetField(VT_REAR_ROT, 0); + } + int32_t momentum_angle() const { + return GetField(VT_MOMENTUM_ANGLE, 0); + } + int32_t extra_rotation() const { + return GetField(VT_EXTRA_ROTATION, 0); + } + int32_t velocity() const { + return GetField(VT_VELOCITY, 0); + } + int32_t left_vertical_velocity() const { + return GetField(VT_LEFT_VERTICAL_VELOCITY, 0); + } + int32_t right_vertical_velocity() const { + return GetField(VT_RIGHT_VERTICAL_VELOCITY, 0); + } + int32_t revs() const { + return GetField(VT_REVS, 0); + } + int32_t engine_revs() const { + return GetField(VT_ENGINE_REVS, 0); + } + int32_t pitch() const { + return GetField(VT_PITCH, 0); + } + int32_t smoke_start() const { + return GetField(VT_SMOKE_START, 0); + } + bool can_start_drift() const { + return GetField(VT_CAN_START_DRIFT, 0) != 0; + } + bool drift_starting() const { + return GetField(VT_DRIFT_STARTING, 0) != 0; + } + bool no_dismount() const { + return GetField(VT_NO_DISMOUNT, 0) != 0; + } + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_TURN_RATE) && + VerifyField(verifier, VT_FRONT_ROT) && + VerifyField(verifier, VT_REAR_ROT) && + VerifyField(verifier, VT_MOMENTUM_ANGLE) && + VerifyField(verifier, VT_EXTRA_ROTATION) && + VerifyField(verifier, VT_VELOCITY) && + VerifyField(verifier, VT_LEFT_VERTICAL_VELOCITY) && + VerifyField(verifier, VT_RIGHT_VERTICAL_VELOCITY) && + VerifyField(verifier, VT_REVS) && + VerifyField(verifier, VT_ENGINE_REVS) && + VerifyField(verifier, VT_PITCH) && + VerifyField(verifier, VT_SMOKE_START) && + VerifyField(verifier, VT_CAN_START_DRIFT) && + VerifyField(verifier, VT_DRIFT_STARTING) && + VerifyField(verifier, VT_NO_DISMOUNT) && + VerifyField(verifier, VT_FLAGS) && + verifier.EndTable(); + } + QuadBikeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(QuadBikeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const QuadBikeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct QuadBikeBuilder { + typedef QuadBike Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_turn_rate(int32_t turn_rate) { + fbb_.AddElement(QuadBike::VT_TURN_RATE, turn_rate, 0); + } + void add_front_rot(int32_t front_rot) { + fbb_.AddElement(QuadBike::VT_FRONT_ROT, front_rot, 0); + } + void add_rear_rot(int32_t rear_rot) { + fbb_.AddElement(QuadBike::VT_REAR_ROT, rear_rot, 0); + } + void add_momentum_angle(int32_t momentum_angle) { + fbb_.AddElement(QuadBike::VT_MOMENTUM_ANGLE, momentum_angle, 0); + } + void add_extra_rotation(int32_t extra_rotation) { + fbb_.AddElement(QuadBike::VT_EXTRA_ROTATION, extra_rotation, 0); + } + void add_velocity(int32_t velocity) { + fbb_.AddElement(QuadBike::VT_VELOCITY, velocity, 0); + } + void add_left_vertical_velocity(int32_t left_vertical_velocity) { + fbb_.AddElement(QuadBike::VT_LEFT_VERTICAL_VELOCITY, left_vertical_velocity, 0); + } + void add_right_vertical_velocity(int32_t right_vertical_velocity) { + fbb_.AddElement(QuadBike::VT_RIGHT_VERTICAL_VELOCITY, right_vertical_velocity, 0); + } + void add_revs(int32_t revs) { + fbb_.AddElement(QuadBike::VT_REVS, revs, 0); + } + void add_engine_revs(int32_t engine_revs) { + fbb_.AddElement(QuadBike::VT_ENGINE_REVS, engine_revs, 0); + } + void add_pitch(int32_t pitch) { + fbb_.AddElement(QuadBike::VT_PITCH, pitch, 0); + } + void add_smoke_start(int32_t smoke_start) { + fbb_.AddElement(QuadBike::VT_SMOKE_START, smoke_start, 0); + } + void add_can_start_drift(bool can_start_drift) { + fbb_.AddElement(QuadBike::VT_CAN_START_DRIFT, static_cast(can_start_drift), 0); + } + void add_drift_starting(bool drift_starting) { + fbb_.AddElement(QuadBike::VT_DRIFT_STARTING, static_cast(drift_starting), 0); + } + void add_no_dismount(bool no_dismount) { + fbb_.AddElement(QuadBike::VT_NO_DISMOUNT, static_cast(no_dismount), 0); + } + void add_flags(int32_t flags) { + fbb_.AddElement(QuadBike::VT_FLAGS, flags, 0); + } + explicit QuadBikeBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateQuadBike( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t turn_rate = 0, + int32_t front_rot = 0, + int32_t rear_rot = 0, + int32_t momentum_angle = 0, + int32_t extra_rotation = 0, + int32_t velocity = 0, + int32_t left_vertical_velocity = 0, + int32_t right_vertical_velocity = 0, + int32_t revs = 0, + int32_t engine_revs = 0, + int32_t pitch = 0, + int32_t smoke_start = 0, + bool can_start_drift = false, + bool drift_starting = false, + bool no_dismount = false, + int32_t flags = 0) { + QuadBikeBuilder builder_(_fbb); + builder_.add_flags(flags); + builder_.add_smoke_start(smoke_start); + builder_.add_pitch(pitch); + builder_.add_engine_revs(engine_revs); + builder_.add_revs(revs); + builder_.add_right_vertical_velocity(right_vertical_velocity); + builder_.add_left_vertical_velocity(left_vertical_velocity); + builder_.add_velocity(velocity); + builder_.add_extra_rotation(extra_rotation); + builder_.add_momentum_angle(momentum_angle); + builder_.add_rear_rot(rear_rot); + builder_.add_front_rot(front_rot); + builder_.add_turn_rate(turn_rate); + builder_.add_no_dismount(no_dismount); + builder_.add_drift_starting(drift_starting); + builder_.add_can_start_drift(can_start_drift); + return builder_.Finish(); +} + +struct QuadBike::Traits { + using type = QuadBike; + static auto constexpr Create = CreateQuadBike; +}; + +flatbuffers::Offset CreateQuadBike(flatbuffers::FlatBufferBuilder &_fbb, const QuadBikeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct BigGunT : public flatbuffers::NativeTable { + typedef BigGun TableType; +}; + +struct BigGun FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef BigGunT NativeTableType; + typedef BigGunBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + BigGunT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(BigGunT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const BigGunT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct BigGunBuilder { + typedef BigGun Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit BigGunBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateBigGun( + flatbuffers::FlatBufferBuilder &_fbb) { + BigGunBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct BigGun::Traits { + using type = BigGun; + static auto constexpr Create = CreateBigGun; +}; + +flatbuffers::Offset CreateBigGun(flatbuffers::FlatBufferBuilder &_fbb, const BigGunT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct MotorbikeT : public flatbuffers::NativeTable { + typedef Motorbike TableType; +}; + +struct Motorbike FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef MotorbikeT NativeTableType; + typedef MotorbikeBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + MotorbikeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MotorbikeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MotorbikeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct MotorbikeBuilder { + typedef Motorbike Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit MotorbikeBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateMotorbike( + flatbuffers::FlatBufferBuilder &_fbb) { + MotorbikeBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct Motorbike::Traits { + using type = Motorbike; + static auto constexpr Create = CreateMotorbike; +}; + +flatbuffers::Offset CreateMotorbike(flatbuffers::FlatBufferBuilder &_fbb, const MotorbikeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct JeepT : public flatbuffers::NativeTable { + typedef Jeep TableType; +}; + +struct Jeep FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef JeepT NativeTableType; + typedef JeepBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + JeepT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(JeepT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const JeepT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct JeepBuilder { + typedef Jeep Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit JeepBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateJeep( + flatbuffers::FlatBufferBuilder &_fbb) { + JeepBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct Jeep::Traits { + using type = Jeep; + static auto constexpr Create = CreateJeep; +}; + +flatbuffers::Offset CreateJeep(flatbuffers::FlatBufferBuilder &_fbb, const JeepT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct KayakT : public flatbuffers::NativeTable { + typedef Kayak TableType; + int32_t turn_rate = 0; + int32_t velocity = 0; + int32_t front_vertical_velocity = 0; + int32_t left_vertical_velocity = 0; + int32_t right_vertical_velocity = 0; + int32_t left_right_count = 0; + int32_t water_height = 0; + std::unique_ptr old_pos{}; + bool turn = false; + bool forward = false; + bool true_water = false; + int32_t flags = 0; +}; + +struct Kayak FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef KayakT NativeTableType; + typedef KayakBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_TURN_RATE = 4, + VT_VELOCITY = 6, + VT_FRONT_VERTICAL_VELOCITY = 8, + VT_LEFT_VERTICAL_VELOCITY = 10, + VT_RIGHT_VERTICAL_VELOCITY = 12, + VT_LEFT_RIGHT_COUNT = 14, + VT_WATER_HEIGHT = 16, + VT_OLD_POS = 18, + VT_TURN = 20, + VT_FORWARD = 22, + VT_TRUE_WATER = 24, + VT_FLAGS = 26 + }; + int32_t turn_rate() const { + return GetField(VT_TURN_RATE, 0); + } + int32_t velocity() const { + return GetField(VT_VELOCITY, 0); + } + int32_t front_vertical_velocity() const { + return GetField(VT_FRONT_VERTICAL_VELOCITY, 0); + } + int32_t left_vertical_velocity() const { + return GetField(VT_LEFT_VERTICAL_VELOCITY, 0); + } + int32_t right_vertical_velocity() const { + return GetField(VT_RIGHT_VERTICAL_VELOCITY, 0); + } + int32_t left_right_count() const { + return GetField(VT_LEFT_RIGHT_COUNT, 0); + } + int32_t water_height() const { + return GetField(VT_WATER_HEIGHT, 0); + } + const TEN::Save::Position *old_pos() const { + return GetStruct(VT_OLD_POS); + } + bool turn() const { + return GetField(VT_TURN, 0) != 0; + } + bool forward() const { + return GetField(VT_FORWARD, 0) != 0; + } + bool true_water() const { + return GetField(VT_TRUE_WATER, 0) != 0; + } + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_TURN_RATE) && + VerifyField(verifier, VT_VELOCITY) && + VerifyField(verifier, VT_FRONT_VERTICAL_VELOCITY) && + VerifyField(verifier, VT_LEFT_VERTICAL_VELOCITY) && + VerifyField(verifier, VT_RIGHT_VERTICAL_VELOCITY) && + VerifyField(verifier, VT_LEFT_RIGHT_COUNT) && + VerifyField(verifier, VT_WATER_HEIGHT) && + VerifyField(verifier, VT_OLD_POS) && + VerifyField(verifier, VT_TURN) && + VerifyField(verifier, VT_FORWARD) && + VerifyField(verifier, VT_TRUE_WATER) && + VerifyField(verifier, VT_FLAGS) && + verifier.EndTable(); + } + KayakT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(KayakT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const KayakT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct KayakBuilder { + typedef Kayak Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_turn_rate(int32_t turn_rate) { + fbb_.AddElement(Kayak::VT_TURN_RATE, turn_rate, 0); + } + void add_velocity(int32_t velocity) { + fbb_.AddElement(Kayak::VT_VELOCITY, velocity, 0); + } + void add_front_vertical_velocity(int32_t front_vertical_velocity) { + fbb_.AddElement(Kayak::VT_FRONT_VERTICAL_VELOCITY, front_vertical_velocity, 0); + } + void add_left_vertical_velocity(int32_t left_vertical_velocity) { + fbb_.AddElement(Kayak::VT_LEFT_VERTICAL_VELOCITY, left_vertical_velocity, 0); + } + void add_right_vertical_velocity(int32_t right_vertical_velocity) { + fbb_.AddElement(Kayak::VT_RIGHT_VERTICAL_VELOCITY, right_vertical_velocity, 0); + } + void add_left_right_count(int32_t left_right_count) { + fbb_.AddElement(Kayak::VT_LEFT_RIGHT_COUNT, left_right_count, 0); + } + void add_water_height(int32_t water_height) { + fbb_.AddElement(Kayak::VT_WATER_HEIGHT, water_height, 0); + } + void add_old_pos(const TEN::Save::Position *old_pos) { + fbb_.AddStruct(Kayak::VT_OLD_POS, old_pos); + } + void add_turn(bool turn) { + fbb_.AddElement(Kayak::VT_TURN, static_cast(turn), 0); + } + void add_forward(bool forward) { + fbb_.AddElement(Kayak::VT_FORWARD, static_cast(forward), 0); + } + void add_true_water(bool true_water) { + fbb_.AddElement(Kayak::VT_TRUE_WATER, static_cast(true_water), 0); + } + void add_flags(int32_t flags) { + fbb_.AddElement(Kayak::VT_FLAGS, flags, 0); + } + explicit KayakBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateKayak( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t turn_rate = 0, + int32_t velocity = 0, + int32_t front_vertical_velocity = 0, + int32_t left_vertical_velocity = 0, + int32_t right_vertical_velocity = 0, + int32_t left_right_count = 0, + int32_t water_height = 0, + const TEN::Save::Position *old_pos = 0, + bool turn = false, + bool forward = false, + bool true_water = false, + int32_t flags = 0) { + KayakBuilder builder_(_fbb); + builder_.add_flags(flags); + builder_.add_old_pos(old_pos); + builder_.add_water_height(water_height); + builder_.add_left_right_count(left_right_count); + builder_.add_right_vertical_velocity(right_vertical_velocity); + builder_.add_left_vertical_velocity(left_vertical_velocity); + builder_.add_front_vertical_velocity(front_vertical_velocity); + builder_.add_velocity(velocity); + builder_.add_turn_rate(turn_rate); + builder_.add_true_water(true_water); + builder_.add_forward(forward); + builder_.add_turn(turn); + return builder_.Finish(); +} + +struct Kayak::Traits { + using type = Kayak; + static auto constexpr Create = CreateKayak; +}; + +flatbuffers::Offset CreateKayak(flatbuffers::FlatBufferBuilder &_fbb, const KayakT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct DoorT : public flatbuffers::NativeTable { + typedef Door TableType; +}; + +struct Door FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef DoorT NativeTableType; + typedef DoorBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + DoorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(DoorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const DoorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct DoorBuilder { + typedef Door Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit DoorBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateDoor( + flatbuffers::FlatBufferBuilder &_fbb) { + DoorBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct Door::Traits { + using type = Door; + static auto constexpr Create = CreateDoor; +}; + +flatbuffers::Offset CreateDoor(flatbuffers::FlatBufferBuilder &_fbb, const DoorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct SkidooT : public flatbuffers::NativeTable { + typedef Skidoo TableType; +}; + +struct Skidoo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef SkidooT NativeTableType; + typedef SkidooBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + SkidooT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(SkidooT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SkidooT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct SkidooBuilder { + typedef Skidoo Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit SkidooBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateSkidoo( + flatbuffers::FlatBufferBuilder &_fbb) { + SkidooBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct Skidoo::Traits { + using type = Skidoo; + static auto constexpr Create = CreateSkidoo; +}; + +flatbuffers::Offset CreateSkidoo(flatbuffers::FlatBufferBuilder &_fbb, const SkidooT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct UPVT : public flatbuffers::NativeTable { + typedef UPV TableType; + int32_t velocity = 0; + int32_t rot = 0; + int32_t x_rot = 0; + int32_t fan_rot = 0; + int32_t harpoon_timer = 0; + bool harpoon_left = false; + int32_t flags = 0; +}; + +struct UPV FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef UPVT NativeTableType; + typedef UPVBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_VELOCITY = 4, + VT_ROT = 6, + VT_X_ROT = 8, + VT_FAN_ROT = 10, + VT_HARPOON_TIMER = 12, + VT_HARPOON_LEFT = 14, + VT_FLAGS = 16 + }; + int32_t velocity() const { + return GetField(VT_VELOCITY, 0); + } + int32_t rot() const { + return GetField(VT_ROT, 0); + } + int32_t x_rot() const { + return GetField(VT_X_ROT, 0); + } + int32_t fan_rot() const { + return GetField(VT_FAN_ROT, 0); + } + int32_t harpoon_timer() const { + return GetField(VT_HARPOON_TIMER, 0); + } + bool harpoon_left() const { + return GetField(VT_HARPOON_LEFT, 0) != 0; + } + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_VELOCITY) && + VerifyField(verifier, VT_ROT) && + VerifyField(verifier, VT_X_ROT) && + VerifyField(verifier, VT_FAN_ROT) && + VerifyField(verifier, VT_HARPOON_TIMER) && + VerifyField(verifier, VT_HARPOON_LEFT) && + VerifyField(verifier, VT_FLAGS) && + verifier.EndTable(); + } + UPVT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(UPVT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const UPVT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct UPVBuilder { + typedef UPV Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_velocity(int32_t velocity) { + fbb_.AddElement(UPV::VT_VELOCITY, velocity, 0); + } + void add_rot(int32_t rot) { + fbb_.AddElement(UPV::VT_ROT, rot, 0); + } + void add_x_rot(int32_t x_rot) { + fbb_.AddElement(UPV::VT_X_ROT, x_rot, 0); + } + void add_fan_rot(int32_t fan_rot) { + fbb_.AddElement(UPV::VT_FAN_ROT, fan_rot, 0); + } + void add_harpoon_timer(int32_t harpoon_timer) { + fbb_.AddElement(UPV::VT_HARPOON_TIMER, harpoon_timer, 0); + } + void add_harpoon_left(bool harpoon_left) { + fbb_.AddElement(UPV::VT_HARPOON_LEFT, static_cast(harpoon_left), 0); + } + void add_flags(int32_t flags) { + fbb_.AddElement(UPV::VT_FLAGS, flags, 0); + } + explicit UPVBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateUPV( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t velocity = 0, + int32_t rot = 0, + int32_t x_rot = 0, + int32_t fan_rot = 0, + int32_t harpoon_timer = 0, + bool harpoon_left = false, + int32_t flags = 0) { + UPVBuilder builder_(_fbb); + builder_.add_flags(flags); + builder_.add_harpoon_timer(harpoon_timer); + builder_.add_fan_rot(fan_rot); + builder_.add_x_rot(x_rot); + builder_.add_rot(rot); + builder_.add_velocity(velocity); + builder_.add_harpoon_left(harpoon_left); + return builder_.Finish(); +} + +struct UPV::Traits { + using type = UPV; + static auto constexpr Create = CreateUPV; +}; + +flatbuffers::Offset CreateUPV(flatbuffers::FlatBufferBuilder &_fbb, const UPVT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct MotorboatT : public flatbuffers::NativeTable { + typedef Motorboat TableType; +}; + +struct Motorboat FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef MotorboatT NativeTableType; + typedef MotorboatBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + MotorboatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MotorboatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MotorboatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct MotorboatBuilder { + typedef Motorboat Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit MotorboatBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateMotorboat( + flatbuffers::FlatBufferBuilder &_fbb) { + MotorboatBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct Motorboat::Traits { + using type = Motorboat; + static auto constexpr Create = CreateMotorboat; +}; + +flatbuffers::Offset CreateMotorboat(flatbuffers::FlatBufferBuilder &_fbb, const MotorboatT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct GameVectorT : public flatbuffers::NativeTable { + typedef GameVector TableType; +}; + +struct GameVector FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef GameVectorT NativeTableType; + typedef GameVectorBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + GameVectorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(GameVectorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const GameVectorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct GameVectorBuilder { + typedef GameVector Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit GameVectorBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateGameVector( + flatbuffers::FlatBufferBuilder &_fbb) { + GameVectorBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct GameVector::Traits { + using type = GameVector; + static auto constexpr Create = CreateGameVector; +}; + +flatbuffers::Offset CreateGameVector(flatbuffers::FlatBufferBuilder &_fbb, const GameVectorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct WraithT : public flatbuffers::NativeTable { + typedef Wraith TableType; +}; + +struct Wraith FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef WraithT NativeTableType; + typedef WraithBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + WraithT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(WraithT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const WraithT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct WraithBuilder { + typedef Wraith Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit WraithBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateWraith( + flatbuffers::FlatBufferBuilder &_fbb) { + WraithBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct Wraith::Traits { + using type = Wraith; + static auto constexpr Create = CreateWraith; +}; + +flatbuffers::Offset CreateWraith(flatbuffers::FlatBufferBuilder &_fbb, const WraithT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct RubberboatT : public flatbuffers::NativeTable { + typedef Rubberboat TableType; +}; + +struct Rubberboat FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef RubberboatT NativeTableType; + typedef RubberboatBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + RubberboatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(RubberboatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const RubberboatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct RubberboatBuilder { + typedef Rubberboat Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit RubberboatBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateRubberboat( + flatbuffers::FlatBufferBuilder &_fbb) { + RubberboatBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct Rubberboat::Traits { + using type = Rubberboat; + static auto constexpr Create = CreateRubberboat; +}; + +flatbuffers::Offset CreateRubberboat(flatbuffers::FlatBufferBuilder &_fbb, const RubberboatT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct PushableT : public flatbuffers::NativeTable { + typedef Pushable TableType; +}; + +struct Pushable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef PushableT NativeTableType; + typedef PushableBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + PushableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(PushableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const PushableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct PushableBuilder { + typedef Pushable Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit PushableBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreatePushable( + flatbuffers::FlatBufferBuilder &_fbb) { + PushableBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct Pushable::Traits { + using type = Pushable; + static auto constexpr Create = CreatePushable; +}; + +flatbuffers::Offset CreatePushable(flatbuffers::FlatBufferBuilder &_fbb, const PushableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct MinecartT : public flatbuffers::NativeTable { + typedef Minecart TableType; + int32_t turn_rot = 0; + int32_t turn_x = 0; + int32_t turn_z = 0; + int32_t turn_len = 0; + int32_t velocity = 0; + int32_t vertical_velocity = 0; + int32_t gradient = 0; + int32_t stop_delay = 0; + int32_t floor_height_middle = 0; + int32_t floor_height_front = 0; + int32_t flags = 0; +}; + +struct Minecart FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef MinecartT NativeTableType; + typedef MinecartBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_TURN_ROT = 4, + VT_TURN_X = 6, + VT_TURN_Z = 8, + VT_TURN_LEN = 10, + VT_VELOCITY = 12, + VT_VERTICAL_VELOCITY = 14, + VT_GRADIENT = 16, + VT_STOP_DELAY = 18, + VT_FLOOR_HEIGHT_MIDDLE = 20, + VT_FLOOR_HEIGHT_FRONT = 22, + VT_FLAGS = 24 + }; + int32_t turn_rot() const { + return GetField(VT_TURN_ROT, 0); + } + int32_t turn_x() const { + return GetField(VT_TURN_X, 0); + } + int32_t turn_z() const { + return GetField(VT_TURN_Z, 0); + } + int32_t turn_len() const { + return GetField(VT_TURN_LEN, 0); + } + int32_t velocity() const { + return GetField(VT_VELOCITY, 0); + } + int32_t vertical_velocity() const { + return GetField(VT_VERTICAL_VELOCITY, 0); + } + int32_t gradient() const { + return GetField(VT_GRADIENT, 0); + } + int32_t stop_delay() const { + return GetField(VT_STOP_DELAY, 0); + } + int32_t floor_height_middle() const { + return GetField(VT_FLOOR_HEIGHT_MIDDLE, 0); + } + int32_t floor_height_front() const { + return GetField(VT_FLOOR_HEIGHT_FRONT, 0); + } + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_TURN_ROT) && + VerifyField(verifier, VT_TURN_X) && + VerifyField(verifier, VT_TURN_Z) && + VerifyField(verifier, VT_TURN_LEN) && + VerifyField(verifier, VT_VELOCITY) && + VerifyField(verifier, VT_VERTICAL_VELOCITY) && + VerifyField(verifier, VT_GRADIENT) && + VerifyField(verifier, VT_STOP_DELAY) && + VerifyField(verifier, VT_FLOOR_HEIGHT_MIDDLE) && + VerifyField(verifier, VT_FLOOR_HEIGHT_FRONT) && + VerifyField(verifier, VT_FLAGS) && + verifier.EndTable(); + } + MinecartT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(MinecartT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const MinecartT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct MinecartBuilder { + typedef Minecart Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_turn_rot(int32_t turn_rot) { + fbb_.AddElement(Minecart::VT_TURN_ROT, turn_rot, 0); + } + void add_turn_x(int32_t turn_x) { + fbb_.AddElement(Minecart::VT_TURN_X, turn_x, 0); + } + void add_turn_z(int32_t turn_z) { + fbb_.AddElement(Minecart::VT_TURN_Z, turn_z, 0); + } + void add_turn_len(int32_t turn_len) { + fbb_.AddElement(Minecart::VT_TURN_LEN, turn_len, 0); + } + void add_velocity(int32_t velocity) { + fbb_.AddElement(Minecart::VT_VELOCITY, velocity, 0); + } + void add_vertical_velocity(int32_t vertical_velocity) { + fbb_.AddElement(Minecart::VT_VERTICAL_VELOCITY, vertical_velocity, 0); + } + void add_gradient(int32_t gradient) { + fbb_.AddElement(Minecart::VT_GRADIENT, gradient, 0); + } + void add_stop_delay(int32_t stop_delay) { + fbb_.AddElement(Minecart::VT_STOP_DELAY, stop_delay, 0); + } + void add_floor_height_middle(int32_t floor_height_middle) { + fbb_.AddElement(Minecart::VT_FLOOR_HEIGHT_MIDDLE, floor_height_middle, 0); + } + void add_floor_height_front(int32_t floor_height_front) { + fbb_.AddElement(Minecart::VT_FLOOR_HEIGHT_FRONT, floor_height_front, 0); + } + void add_flags(int32_t flags) { + fbb_.AddElement(Minecart::VT_FLAGS, flags, 0); + } + explicit MinecartBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateMinecart( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t turn_rot = 0, + int32_t turn_x = 0, + int32_t turn_z = 0, + int32_t turn_len = 0, + int32_t velocity = 0, + int32_t vertical_velocity = 0, + int32_t gradient = 0, + int32_t stop_delay = 0, + int32_t floor_height_middle = 0, + int32_t floor_height_front = 0, + int32_t flags = 0) { + MinecartBuilder builder_(_fbb); + builder_.add_flags(flags); + builder_.add_floor_height_front(floor_height_front); + builder_.add_floor_height_middle(floor_height_middle); + builder_.add_stop_delay(stop_delay); + builder_.add_gradient(gradient); + builder_.add_vertical_velocity(vertical_velocity); + builder_.add_velocity(velocity); + builder_.add_turn_len(turn_len); + builder_.add_turn_z(turn_z); + builder_.add_turn_x(turn_x); + builder_.add_turn_rot(turn_rot); + return builder_.Finish(); +} + +struct Minecart::Traits { + using type = Minecart; + static auto constexpr Create = CreateMinecart; +}; + +flatbuffers::Offset CreateMinecart(flatbuffers::FlatBufferBuilder &_fbb, const MinecartT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct LaraInfoT : public flatbuffers::NativeTable { + typedef LaraInfo TableType; +}; + +struct LaraInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef LaraInfoT NativeTableType; + typedef LaraInfoBuilder Builder; + struct Traits; + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + verifier.EndTable(); + } + LaraInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(LaraInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct LaraInfoBuilder { + typedef LaraInfo Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + explicit LaraInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateLaraInfo( + flatbuffers::FlatBufferBuilder &_fbb) { + LaraInfoBuilder builder_(_fbb); + return builder_.Finish(); +} + +struct LaraInfo::Traits { + using type = LaraInfo; + static auto constexpr Create = CreateLaraInfo; +}; + +flatbuffers::Offset CreateLaraInfo(flatbuffers::FlatBufferBuilder &_fbb, const LaraInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct ItemNumberT : public flatbuffers::NativeTable { + typedef ItemNumber TableType; + int16_t num = 0; +}; + +struct ItemNumber FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef ItemNumberT NativeTableType; + typedef ItemNumberBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_NUM = 4 + }; + int16_t num() const { + return GetField(VT_NUM, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_NUM) && + verifier.EndTable(); + } + ItemNumberT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ItemNumberT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ItemNumberT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct ItemNumberBuilder { + typedef ItemNumber Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_num(int16_t num) { + fbb_.AddElement(ItemNumber::VT_NUM, num, 0); + } + explicit ItemNumberBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateItemNumber( + flatbuffers::FlatBufferBuilder &_fbb, + int16_t num = 0) { + ItemNumberBuilder builder_(_fbb); + builder_.add_num(num); + return builder_.Finish(); +} + +struct ItemNumber::Traits { + using type = ItemNumber; + static auto constexpr Create = CreateItemNumber; +}; + +flatbuffers::Offset CreateItemNumber(flatbuffers::FlatBufferBuilder &_fbb, const ItemNumberT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct ShortT : public flatbuffers::NativeTable { + typedef Short TableType; + int16_t scalar = 0; +}; + +struct Short FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef ShortT NativeTableType; + typedef ShortBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_SCALAR = 4 + }; + int16_t scalar() const { + return GetField(VT_SCALAR, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_SCALAR) && + verifier.EndTable(); + } + ShortT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ShortT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShortT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct ShortBuilder { + typedef Short Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_scalar(int16_t scalar) { + fbb_.AddElement(Short::VT_SCALAR, scalar, 0); + } + explicit ShortBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateShort( + flatbuffers::FlatBufferBuilder &_fbb, + int16_t scalar = 0) { + ShortBuilder builder_(_fbb); + builder_.add_scalar(scalar); + return builder_.Finish(); +} + +struct Short::Traits { + using type = Short; + static auto constexpr Create = CreateShort; +}; + +flatbuffers::Offset CreateShort(flatbuffers::FlatBufferBuilder &_fbb, const ShortT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct IntT : public flatbuffers::NativeTable { + typedef Int TableType; + int32_t scalar = 0; +}; + +struct Int FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef IntT NativeTableType; + typedef IntBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_SCALAR = 4 + }; + int32_t scalar() const { + return GetField(VT_SCALAR, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_SCALAR) && + verifier.EndTable(); + } + IntT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(IntT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const IntT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct IntBuilder { + typedef Int Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_scalar(int32_t scalar) { + fbb_.AddElement(Int::VT_SCALAR, scalar, 0); + } + explicit IntBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateInt( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t scalar = 0) { + IntBuilder builder_(_fbb); + builder_.add_scalar(scalar); + return builder_.Finish(); +} + +struct Int::Traits { + using type = Int; + static auto constexpr Create = CreateInt; +}; + +flatbuffers::Offset CreateInt(flatbuffers::FlatBufferBuilder &_fbb, const IntT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct FloatT : public flatbuffers::NativeTable { + typedef Float TableType; + double scalar = 0.0; +}; + +struct Float FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef FloatT NativeTableType; + typedef FloatBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_SCALAR = 4 + }; + double scalar() const { + return GetField(VT_SCALAR, 0.0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_SCALAR) && + verifier.EndTable(); + } + FloatT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(FloatT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloatT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct FloatBuilder { + typedef Float Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_scalar(double scalar) { + fbb_.AddElement(Float::VT_SCALAR, scalar, 0.0); + } + explicit FloatBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateFloat( + flatbuffers::FlatBufferBuilder &_fbb, + double scalar = 0.0) { + FloatBuilder builder_(_fbb); + builder_.add_scalar(scalar); + return builder_.Finish(); +} + +struct Float::Traits { + using type = Float; + static auto constexpr Create = CreateFloat; +}; + +flatbuffers::Offset CreateFloat(flatbuffers::FlatBufferBuilder &_fbb, const FloatT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct ShortArrayT : public flatbuffers::NativeTable { + typedef ShortArray TableType; + std::vector arr{}; +}; + +struct ShortArray FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef ShortArrayT NativeTableType; + typedef ShortArrayBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_ARR = 4 + }; + const flatbuffers::Vector *arr() const { + return GetPointer *>(VT_ARR); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_ARR) && + verifier.VerifyVector(arr()) && + verifier.EndTable(); + } + ShortArrayT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ShortArrayT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShortArrayT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct ShortArrayBuilder { + typedef ShortArray Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_arr(flatbuffers::Offset> arr) { + fbb_.AddOffset(ShortArray::VT_ARR, arr); + } + explicit ShortArrayBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateShortArray( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset> arr = 0) { + ShortArrayBuilder builder_(_fbb); + builder_.add_arr(arr); + return builder_.Finish(); +} + +struct ShortArray::Traits { + using type = ShortArray; + static auto constexpr Create = CreateShortArray; +}; + +inline flatbuffers::Offset CreateShortArrayDirect( + flatbuffers::FlatBufferBuilder &_fbb, + const std::vector *arr = nullptr) { + auto arr__ = arr ? _fbb.CreateVector(*arr) : 0; + return TEN::Save::CreateShortArray( + _fbb, + arr__); +} + +flatbuffers::Offset CreateShortArray(flatbuffers::FlatBufferBuilder &_fbb, const ShortArrayT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +inline CreatureTargetT *CreatureTarget::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void CreatureTarget::UnPackTo(CreatureTargetT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = object_number(); _o->object_number = _e; } + { auto _e = room_number(); _o->room_number = _e; } + { auto _e = box_number(); _o->box_number = _e; } + { auto _e = flags(); _o->flags = _e; } + { auto _e = trigger_flags(); _o->trigger_flags = _e; } + { auto _e = position(); if (_e) _o->position = std::unique_ptr(new TEN::Save::Position(*_e)); } +} + +inline flatbuffers::Offset CreatureTarget::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CreatureTargetT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateCreatureTarget(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateCreatureTarget(flatbuffers::FlatBufferBuilder &_fbb, const CreatureTargetT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CreatureTargetT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _object_number = _o->object_number; + auto _room_number = _o->room_number; + auto _box_number = _o->box_number; + auto _flags = _o->flags; + auto _trigger_flags = _o->trigger_flags; + auto _position = _o->position ? _o->position.get() : 0; + return TEN::Save::CreateCreatureTarget( + _fbb, + _object_number, + _room_number, + _box_number, + _flags, + _trigger_flags, + _position); +} + +inline CreatureT *Creature::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Creature::UnPackTo(CreatureT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = maximum_turn(); _o->maximum_turn = _e; } + { auto _e = joint_rotation(); if (_e) { _o->joint_rotation.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->joint_rotation[_i] = _e->Get(_i); } } } + { auto _e = head_left(); _o->head_left = _e; } + { auto _e = head_right(); _o->head_right = _e; } + { auto _e = patrol(); _o->patrol = _e; } + { auto _e = alerted(); _o->alerted = _e; } + { auto _e = reached_goal(); _o->reached_goal = _e; } + { auto _e = jump_ahead(); _o->jump_ahead = _e; } + { auto _e = monkey_swing_ahead(); _o->monkey_swing_ahead = _e; } + { auto _e = friendly(); _o->friendly = _e; } + { auto _e = poisoned(); _o->poisoned = _e; } + { auto _e = hurt_by_lara(); _o->hurt_by_lara = _e; } + { auto _e = tosspad(); _o->tosspad = _e; } + { auto _e = location_ai(); _o->location_ai = _e; } + { auto _e = weapon_delay1(); _o->weapon_delay1 = _e; } + { auto _e = weapon_delay2(); _o->weapon_delay2 = _e; } + { auto _e = mood(); _o->mood = _e; } + { auto _e = enemy(); _o->enemy = _e; } + { auto _e = ai_target_number(); _o->ai_target_number = _e; } + { auto _e = flags(); _o->flags = _e; } + { auto _e = can_jump(); _o->can_jump = _e; } + { auto _e = can_monkey(); _o->can_monkey = _e; } + { auto _e = is_amphibious(); _o->is_amphibious = _e; } + { auto _e = is_jumping(); _o->is_jumping = _e; } + { auto _e = is_monkeying(); _o->is_monkeying = _e; } +} + +inline flatbuffers::Offset Creature::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CreatureT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateCreature(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateCreature(flatbuffers::FlatBufferBuilder &_fbb, const CreatureT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CreatureT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _maximum_turn = _o->maximum_turn; + auto _joint_rotation = _fbb.CreateVector(_o->joint_rotation); + auto _head_left = _o->head_left; + auto _head_right = _o->head_right; + auto _patrol = _o->patrol; + auto _alerted = _o->alerted; + auto _reached_goal = _o->reached_goal; + auto _jump_ahead = _o->jump_ahead; + auto _monkey_swing_ahead = _o->monkey_swing_ahead; + auto _friendly = _o->friendly; + auto _poisoned = _o->poisoned; + auto _hurt_by_lara = _o->hurt_by_lara; + auto _tosspad = _o->tosspad; + auto _location_ai = _o->location_ai; + auto _weapon_delay1 = _o->weapon_delay1; + auto _weapon_delay2 = _o->weapon_delay2; + auto _mood = _o->mood; + auto _enemy = _o->enemy; + auto _ai_target_number = _o->ai_target_number; + auto _flags = _o->flags; + auto _can_jump = _o->can_jump; + auto _can_monkey = _o->can_monkey; + auto _is_amphibious = _o->is_amphibious; + auto _is_jumping = _o->is_jumping; + auto _is_monkeying = _o->is_monkeying; + return TEN::Save::CreateCreature( + _fbb, + _maximum_turn, + _joint_rotation, + _head_left, + _head_right, + _patrol, + _alerted, + _reached_goal, + _jump_ahead, + _monkey_swing_ahead, + _friendly, + _poisoned, + _hurt_by_lara, + _tosspad, + _location_ai, + _weapon_delay1, + _weapon_delay2, + _mood, + _enemy, + _ai_target_number, + _flags, + _can_jump, + _can_monkey, + _is_amphibious, + _is_jumping, + _is_monkeying); +} + +inline LaserHeadT *LaserHead::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void LaserHead::UnPackTo(LaserHeadT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset LaserHead::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaserHeadT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateLaserHead(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateLaserHead(flatbuffers::FlatBufferBuilder &_fbb, const LaserHeadT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaserHeadT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreateLaserHead( + _fbb); +} + +inline QuadBikeT *QuadBike::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void QuadBike::UnPackTo(QuadBikeT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = turn_rate(); _o->turn_rate = _e; } + { auto _e = front_rot(); _o->front_rot = _e; } + { auto _e = rear_rot(); _o->rear_rot = _e; } + { auto _e = momentum_angle(); _o->momentum_angle = _e; } + { auto _e = extra_rotation(); _o->extra_rotation = _e; } + { auto _e = velocity(); _o->velocity = _e; } + { auto _e = left_vertical_velocity(); _o->left_vertical_velocity = _e; } + { auto _e = right_vertical_velocity(); _o->right_vertical_velocity = _e; } + { auto _e = revs(); _o->revs = _e; } + { auto _e = engine_revs(); _o->engine_revs = _e; } + { auto _e = pitch(); _o->pitch = _e; } + { auto _e = smoke_start(); _o->smoke_start = _e; } + { auto _e = can_start_drift(); _o->can_start_drift = _e; } + { auto _e = drift_starting(); _o->drift_starting = _e; } + { auto _e = no_dismount(); _o->no_dismount = _e; } + { auto _e = flags(); _o->flags = _e; } +} + +inline flatbuffers::Offset QuadBike::Pack(flatbuffers::FlatBufferBuilder &_fbb, const QuadBikeT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateQuadBike(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateQuadBike(flatbuffers::FlatBufferBuilder &_fbb, const QuadBikeT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const QuadBikeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _turn_rate = _o->turn_rate; + auto _front_rot = _o->front_rot; + auto _rear_rot = _o->rear_rot; + auto _momentum_angle = _o->momentum_angle; + auto _extra_rotation = _o->extra_rotation; + auto _velocity = _o->velocity; + auto _left_vertical_velocity = _o->left_vertical_velocity; + auto _right_vertical_velocity = _o->right_vertical_velocity; + auto _revs = _o->revs; + auto _engine_revs = _o->engine_revs; + auto _pitch = _o->pitch; + auto _smoke_start = _o->smoke_start; + auto _can_start_drift = _o->can_start_drift; + auto _drift_starting = _o->drift_starting; + auto _no_dismount = _o->no_dismount; + auto _flags = _o->flags; + return TEN::Save::CreateQuadBike( + _fbb, + _turn_rate, + _front_rot, + _rear_rot, + _momentum_angle, + _extra_rotation, + _velocity, + _left_vertical_velocity, + _right_vertical_velocity, + _revs, + _engine_revs, + _pitch, + _smoke_start, + _can_start_drift, + _drift_starting, + _no_dismount, + _flags); +} + +inline BigGunT *BigGun::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void BigGun::UnPackTo(BigGunT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset BigGun::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BigGunT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateBigGun(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateBigGun(flatbuffers::FlatBufferBuilder &_fbb, const BigGunT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BigGunT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreateBigGun( + _fbb); +} + +inline MotorbikeT *Motorbike::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Motorbike::UnPackTo(MotorbikeT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset Motorbike::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MotorbikeT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateMotorbike(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateMotorbike(flatbuffers::FlatBufferBuilder &_fbb, const MotorbikeT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MotorbikeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreateMotorbike( + _fbb); +} + +inline JeepT *Jeep::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Jeep::UnPackTo(JeepT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset Jeep::Pack(flatbuffers::FlatBufferBuilder &_fbb, const JeepT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateJeep(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateJeep(flatbuffers::FlatBufferBuilder &_fbb, const JeepT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const JeepT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreateJeep( + _fbb); +} + +inline KayakT *Kayak::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Kayak::UnPackTo(KayakT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = turn_rate(); _o->turn_rate = _e; } + { auto _e = velocity(); _o->velocity = _e; } + { auto _e = front_vertical_velocity(); _o->front_vertical_velocity = _e; } + { auto _e = left_vertical_velocity(); _o->left_vertical_velocity = _e; } + { auto _e = right_vertical_velocity(); _o->right_vertical_velocity = _e; } + { auto _e = left_right_count(); _o->left_right_count = _e; } + { auto _e = water_height(); _o->water_height = _e; } + { auto _e = old_pos(); if (_e) _o->old_pos = std::unique_ptr(new TEN::Save::Position(*_e)); } + { auto _e = turn(); _o->turn = _e; } + { auto _e = forward(); _o->forward = _e; } + { auto _e = true_water(); _o->true_water = _e; } + { auto _e = flags(); _o->flags = _e; } +} + +inline flatbuffers::Offset Kayak::Pack(flatbuffers::FlatBufferBuilder &_fbb, const KayakT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateKayak(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateKayak(flatbuffers::FlatBufferBuilder &_fbb, const KayakT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const KayakT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _turn_rate = _o->turn_rate; + auto _velocity = _o->velocity; + auto _front_vertical_velocity = _o->front_vertical_velocity; + auto _left_vertical_velocity = _o->left_vertical_velocity; + auto _right_vertical_velocity = _o->right_vertical_velocity; + auto _left_right_count = _o->left_right_count; + auto _water_height = _o->water_height; + auto _old_pos = _o->old_pos ? _o->old_pos.get() : 0; + auto _turn = _o->turn; + auto _forward = _o->forward; + auto _true_water = _o->true_water; + auto _flags = _o->flags; + return TEN::Save::CreateKayak( + _fbb, + _turn_rate, + _velocity, + _front_vertical_velocity, + _left_vertical_velocity, + _right_vertical_velocity, + _left_right_count, + _water_height, + _old_pos, + _turn, + _forward, + _true_water, + _flags); +} + +inline DoorT *Door::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Door::UnPackTo(DoorT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset Door::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DoorT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateDoor(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateDoor(flatbuffers::FlatBufferBuilder &_fbb, const DoorT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DoorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreateDoor( + _fbb); +} + +inline SkidooT *Skidoo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Skidoo::UnPackTo(SkidooT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset Skidoo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SkidooT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateSkidoo(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateSkidoo(flatbuffers::FlatBufferBuilder &_fbb, const SkidooT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SkidooT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreateSkidoo( + _fbb); +} + +inline UPVT *UPV::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void UPV::UnPackTo(UPVT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = velocity(); _o->velocity = _e; } + { auto _e = rot(); _o->rot = _e; } + { auto _e = x_rot(); _o->x_rot = _e; } + { auto _e = fan_rot(); _o->fan_rot = _e; } + { auto _e = harpoon_timer(); _o->harpoon_timer = _e; } + { auto _e = harpoon_left(); _o->harpoon_left = _e; } + { auto _e = flags(); _o->flags = _e; } +} + +inline flatbuffers::Offset UPV::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UPVT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateUPV(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateUPV(flatbuffers::FlatBufferBuilder &_fbb, const UPVT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UPVT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _velocity = _o->velocity; + auto _rot = _o->rot; + auto _x_rot = _o->x_rot; + auto _fan_rot = _o->fan_rot; + auto _harpoon_timer = _o->harpoon_timer; + auto _harpoon_left = _o->harpoon_left; + auto _flags = _o->flags; + return TEN::Save::CreateUPV( + _fbb, + _velocity, + _rot, + _x_rot, + _fan_rot, + _harpoon_timer, + _harpoon_left, + _flags); +} + +inline MotorboatT *Motorboat::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Motorboat::UnPackTo(MotorboatT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset Motorboat::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MotorboatT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateMotorboat(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateMotorboat(flatbuffers::FlatBufferBuilder &_fbb, const MotorboatT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MotorboatT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreateMotorboat( + _fbb); +} + +inline GameVectorT *GameVector::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void GameVector::UnPackTo(GameVectorT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset GameVector::Pack(flatbuffers::FlatBufferBuilder &_fbb, const GameVectorT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateGameVector(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateGameVector(flatbuffers::FlatBufferBuilder &_fbb, const GameVectorT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const GameVectorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreateGameVector( + _fbb); +} + +inline WraithT *Wraith::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Wraith::UnPackTo(WraithT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset Wraith::Pack(flatbuffers::FlatBufferBuilder &_fbb, const WraithT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateWraith(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateWraith(flatbuffers::FlatBufferBuilder &_fbb, const WraithT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const WraithT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreateWraith( + _fbb); +} + +inline RubberboatT *Rubberboat::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Rubberboat::UnPackTo(RubberboatT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset Rubberboat::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RubberboatT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateRubberboat(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateRubberboat(flatbuffers::FlatBufferBuilder &_fbb, const RubberboatT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RubberboatT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreateRubberboat( + _fbb); +} + +inline PushableT *Pushable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Pushable::UnPackTo(PushableT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset Pushable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PushableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreatePushable(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreatePushable(flatbuffers::FlatBufferBuilder &_fbb, const PushableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PushableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreatePushable( + _fbb); +} + +inline MinecartT *Minecart::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Minecart::UnPackTo(MinecartT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = turn_rot(); _o->turn_rot = _e; } + { auto _e = turn_x(); _o->turn_x = _e; } + { auto _e = turn_z(); _o->turn_z = _e; } + { auto _e = turn_len(); _o->turn_len = _e; } + { auto _e = velocity(); _o->velocity = _e; } + { auto _e = vertical_velocity(); _o->vertical_velocity = _e; } + { auto _e = gradient(); _o->gradient = _e; } + { auto _e = stop_delay(); _o->stop_delay = _e; } + { auto _e = floor_height_middle(); _o->floor_height_middle = _e; } + { auto _e = floor_height_front(); _o->floor_height_front = _e; } + { auto _e = flags(); _o->flags = _e; } +} + +inline flatbuffers::Offset Minecart::Pack(flatbuffers::FlatBufferBuilder &_fbb, const MinecartT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateMinecart(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateMinecart(flatbuffers::FlatBufferBuilder &_fbb, const MinecartT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const MinecartT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _turn_rot = _o->turn_rot; + auto _turn_x = _o->turn_x; + auto _turn_z = _o->turn_z; + auto _turn_len = _o->turn_len; + auto _velocity = _o->velocity; + auto _vertical_velocity = _o->vertical_velocity; + auto _gradient = _o->gradient; + auto _stop_delay = _o->stop_delay; + auto _floor_height_middle = _o->floor_height_middle; + auto _floor_height_front = _o->floor_height_front; + auto _flags = _o->flags; + return TEN::Save::CreateMinecart( + _fbb, + _turn_rot, + _turn_x, + _turn_z, + _turn_len, + _velocity, + _vertical_velocity, + _gradient, + _stop_delay, + _floor_height_middle, + _floor_height_front, + _flags); +} + +inline LaraInfoT *LaraInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void LaraInfo::UnPackTo(LaraInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; +} + +inline flatbuffers::Offset LaraInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateLaraInfo(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateLaraInfo(flatbuffers::FlatBufferBuilder &_fbb, const LaraInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaraInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + return TEN::Save::CreateLaraInfo( + _fbb); +} + +inline ItemNumberT *ItemNumber::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void ItemNumber::UnPackTo(ItemNumberT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = num(); _o->num = _e; } +} + +inline flatbuffers::Offset ItemNumber::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ItemNumberT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateItemNumber(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateItemNumber(flatbuffers::FlatBufferBuilder &_fbb, const ItemNumberT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ItemNumberT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _num = _o->num; + return TEN::Save::CreateItemNumber( + _fbb, + _num); +} + +inline ShortT *Short::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Short::UnPackTo(ShortT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = scalar(); _o->scalar = _e; } +} + +inline flatbuffers::Offset Short::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShortT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateShort(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateShort(flatbuffers::FlatBufferBuilder &_fbb, const ShortT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ShortT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _scalar = _o->scalar; + return TEN::Save::CreateShort( + _fbb, + _scalar); +} + +inline IntT *Int::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Int::UnPackTo(IntT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = scalar(); _o->scalar = _e; } +} + +inline flatbuffers::Offset Int::Pack(flatbuffers::FlatBufferBuilder &_fbb, const IntT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateInt(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateInt(flatbuffers::FlatBufferBuilder &_fbb, const IntT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const IntT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _scalar = _o->scalar; + return TEN::Save::CreateInt( + _fbb, + _scalar); +} + +inline FloatT *Float::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Float::UnPackTo(FloatT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = scalar(); _o->scalar = _e; } +} + +inline flatbuffers::Offset Float::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FloatT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateFloat(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateFloat(flatbuffers::FlatBufferBuilder &_fbb, const FloatT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FloatT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _scalar = _o->scalar; + return TEN::Save::CreateFloat( + _fbb, + _scalar); +} + +inline ShortArrayT *ShortArray::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void ShortArray::UnPackTo(ShortArrayT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = arr(); if (_e) { _o->arr.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->arr[_i] = _e->Get(_i); } } } +} + +inline flatbuffers::Offset ShortArray::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ShortArrayT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateShortArray(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateShortArray(flatbuffers::FlatBufferBuilder &_fbb, const ShortArrayT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ShortArrayT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _arr = _fbb.CreateVector(_o->arr); + return TEN::Save::CreateShortArray( + _fbb, + _arr); +} + +inline bool VerifyItemData(flatbuffers::Verifier &verifier, const void *obj, ItemData type) { + switch (type) { + case ItemData::NONE: { + return true; + } + case ItemData::Int: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Short: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Float: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::ShortArray: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::ItemNumber: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Creature: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::LaserHead: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::QuadBike: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::BigGun: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Motorbike: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Jeep: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::LaraInfo: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Kayak: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Door: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Skidoo: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::UPV: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Motorboat: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::GameVector: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Wraith: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Rubberboat: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Pushable: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case ItemData::Minecart: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + default: return true; + } +} + +inline bool VerifyItemDataVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types) { + if (!values || !types) return !values && !types; + if (values->size() != types->size()) return false; + for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { + if (!VerifyItemData( + verifier, values->Get(i), types->GetEnum(i))) { + return false; + } + } + return true; +} + +inline void *ItemDataUnion::UnPack(const void *obj, ItemData type, const flatbuffers::resolver_function_t *resolver) { + switch (type) { + case ItemData::Int: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Short: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Float: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::ShortArray: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::ItemNumber: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Creature: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::LaserHead: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::QuadBike: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::BigGun: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Motorbike: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Jeep: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::LaraInfo: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Kayak: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Door: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Skidoo: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::UPV: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Motorboat: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::GameVector: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Wraith: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Rubberboat: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Pushable: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case ItemData::Minecart: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + default: return nullptr; + } +} + +inline flatbuffers::Offset ItemDataUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const { + switch (type) { + case ItemData::Int: { + auto ptr = reinterpret_cast(value); + return CreateInt(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Short: { + auto ptr = reinterpret_cast(value); + return CreateShort(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Float: { + auto ptr = reinterpret_cast(value); + return CreateFloat(_fbb, ptr, _rehasher).Union(); + } + case ItemData::ShortArray: { + auto ptr = reinterpret_cast(value); + return CreateShortArray(_fbb, ptr, _rehasher).Union(); + } + case ItemData::ItemNumber: { + auto ptr = reinterpret_cast(value); + return CreateItemNumber(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Creature: { + auto ptr = reinterpret_cast(value); + return CreateCreature(_fbb, ptr, _rehasher).Union(); + } + case ItemData::LaserHead: { + auto ptr = reinterpret_cast(value); + return CreateLaserHead(_fbb, ptr, _rehasher).Union(); + } + case ItemData::QuadBike: { + auto ptr = reinterpret_cast(value); + return CreateQuadBike(_fbb, ptr, _rehasher).Union(); + } + case ItemData::BigGun: { + auto ptr = reinterpret_cast(value); + return CreateBigGun(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Motorbike: { + auto ptr = reinterpret_cast(value); + return CreateMotorbike(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Jeep: { + auto ptr = reinterpret_cast(value); + return CreateJeep(_fbb, ptr, _rehasher).Union(); + } + case ItemData::LaraInfo: { + auto ptr = reinterpret_cast(value); + return CreateLaraInfo(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Kayak: { + auto ptr = reinterpret_cast(value); + return CreateKayak(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Door: { + auto ptr = reinterpret_cast(value); + return CreateDoor(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Skidoo: { + auto ptr = reinterpret_cast(value); + return CreateSkidoo(_fbb, ptr, _rehasher).Union(); + } + case ItemData::UPV: { + auto ptr = reinterpret_cast(value); + return CreateUPV(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Motorboat: { + auto ptr = reinterpret_cast(value); + return CreateMotorboat(_fbb, ptr, _rehasher).Union(); + } + case ItemData::GameVector: { + auto ptr = reinterpret_cast(value); + return CreateGameVector(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Wraith: { + auto ptr = reinterpret_cast(value); + return CreateWraith(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Rubberboat: { + auto ptr = reinterpret_cast(value); + return CreateRubberboat(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Pushable: { + auto ptr = reinterpret_cast(value); + return CreatePushable(_fbb, ptr, _rehasher).Union(); + } + case ItemData::Minecart: { + auto ptr = reinterpret_cast(value); + return CreateMinecart(_fbb, ptr, _rehasher).Union(); + } + default: return 0; + } +} + +inline ItemDataUnion::ItemDataUnion(const ItemDataUnion &u) : type(u.type), value(nullptr) { + switch (type) { + case ItemData::Int: { + value = new TEN::Save::IntT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Short: { + value = new TEN::Save::ShortT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Float: { + value = new TEN::Save::FloatT(*reinterpret_cast(u.value)); + break; + } + case ItemData::ShortArray: { + value = new TEN::Save::ShortArrayT(*reinterpret_cast(u.value)); + break; + } + case ItemData::ItemNumber: { + value = new TEN::Save::ItemNumberT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Creature: { + value = new TEN::Save::CreatureT(*reinterpret_cast(u.value)); + break; + } + case ItemData::LaserHead: { + value = new TEN::Save::LaserHeadT(*reinterpret_cast(u.value)); + break; + } + case ItemData::QuadBike: { + value = new TEN::Save::QuadBikeT(*reinterpret_cast(u.value)); + break; + } + case ItemData::BigGun: { + value = new TEN::Save::BigGunT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Motorbike: { + value = new TEN::Save::MotorbikeT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Jeep: { + value = new TEN::Save::JeepT(*reinterpret_cast(u.value)); + break; + } + case ItemData::LaraInfo: { + value = new TEN::Save::LaraInfoT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Kayak: { + FLATBUFFERS_ASSERT(false); // TEN::Save::KayakT not copyable. + break; + } + case ItemData::Door: { + value = new TEN::Save::DoorT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Skidoo: { + value = new TEN::Save::SkidooT(*reinterpret_cast(u.value)); + break; + } + case ItemData::UPV: { + value = new TEN::Save::UPVT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Motorboat: { + value = new TEN::Save::MotorboatT(*reinterpret_cast(u.value)); + break; + } + case ItemData::GameVector: { + value = new TEN::Save::GameVectorT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Wraith: { + value = new TEN::Save::WraithT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Rubberboat: { + value = new TEN::Save::RubberboatT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Pushable: { + value = new TEN::Save::PushableT(*reinterpret_cast(u.value)); + break; + } + case ItemData::Minecart: { + value = new TEN::Save::MinecartT(*reinterpret_cast(u.value)); + break; + } + default: + break; + } +} + +inline void ItemDataUnion::Reset() { + switch (type) { + case ItemData::Int: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Short: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Float: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::ShortArray: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::ItemNumber: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Creature: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::LaserHead: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::QuadBike: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::BigGun: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Motorbike: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Jeep: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::LaraInfo: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Kayak: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Door: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Skidoo: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::UPV: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Motorboat: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::GameVector: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Wraith: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Rubberboat: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Pushable: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case ItemData::Minecart: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + default: break; + } + value = nullptr; + type = ItemData::NONE; +} + +} // namespace Save +} // namespace TEN + +#endif // FLATBUFFERS_GENERATED_TENITEMDATA_TEN_SAVE_H_ diff --git a/TombEngine/Specific/savegame/flatbuffers/ten_savegame_generated.h b/TombEngine/Specific/savegame/flatbuffers/ten_savegame_generated.h index 94b21729d..63cac31c9 100644 --- a/TombEngine/Specific/savegame/flatbuffers/ten_savegame_generated.h +++ b/TombEngine/Specific/savegame/flatbuffers/ten_savegame_generated.h @@ -1,9930 +1,9930 @@ -// automatically generated by the FlatBuffers compiler, do not modify - - -#ifndef FLATBUFFERS_GENERATED_TENSAVEGAME_TEN_SAVE_H_ -#define FLATBUFFERS_GENERATED_TENSAVEGAME_TEN_SAVE_H_ - -#include "flatbuffers/flatbuffers.h" - -#include "ten_itemdata_generated.h" - -namespace TEN { -namespace Save { - -struct RoomVector; - -struct Room; -struct RoomBuilder; -struct RoomT; - -struct Item; -struct ItemBuilder; -struct ItemT; - -struct FXInfo; -struct FXInfoBuilder; -struct FXInfoT; - -struct AmmoInfo; -struct AmmoInfoBuilder; -struct AmmoInfoT; - -struct HolsterInfo; -struct HolsterInfoBuilder; -struct HolsterInfoT; - -struct CarriedWeaponInfo; -struct CarriedWeaponInfoBuilder; -struct CarriedWeaponInfoT; - -struct WeaponInfo; -struct WeaponInfoBuilder; -struct WeaponInfoT; - -struct ArmInfo; -struct ArmInfoBuilder; -struct ArmInfoT; - -struct FlareData; -struct FlareDataBuilder; -struct FlareDataT; - -struct TorchData; -struct TorchDataBuilder; -struct TorchDataT; - -struct LaraInventoryData; -struct LaraInventoryDataBuilder; -struct LaraInventoryDataT; - -struct LaraCountData; -struct LaraCountDataBuilder; -struct LaraCountDataT; - -struct WeaponControlData; -struct WeaponControlDataBuilder; -struct WeaponControlDataT; - -struct RopeControlData; -struct RopeControlDataBuilder; -struct RopeControlDataT; - -struct TightropeControlData; -struct TightropeControlDataBuilder; -struct TightropeControlDataT; - -struct SubsuitControlData; -struct SubsuitControlDataBuilder; -struct SubsuitControlDataT; - -struct LaraControlData; -struct LaraControlDataBuilder; -struct LaraControlDataT; - -struct PlayerEffectData; -struct PlayerEffectDataBuilder; -struct PlayerEffectDataT; - -struct PlayerStatusData; -struct PlayerStatusDataBuilder; -struct PlayerStatusDataT; - -struct Lara; -struct LaraBuilder; -struct LaraT; - -struct FixedCamera; -struct FixedCameraBuilder; -struct FixedCameraT; - -struct FlyByCamera; -struct FlyByCameraBuilder; -struct FlyByCameraT; - -struct Sink; -struct SinkBuilder; -struct SinkT; - -struct StaticMeshInfo; -struct StaticMeshInfoBuilder; -struct StaticMeshInfoT; - -struct ParticleInfo; -struct ParticleInfoBuilder; -struct ParticleInfoT; - -struct SwarmObjectInfo; -struct SwarmObjectInfoBuilder; -struct SwarmObjectInfoT; - -struct Rope; -struct RopeBuilder; -struct RopeT; - -struct Pendulum; -struct PendulumBuilder; -struct PendulumT; - -struct EventSetCallCounters; -struct EventSetCallCountersBuilder; -struct EventSetCallCountersT; - -struct VolumeState; -struct VolumeStateBuilder; -struct VolumeStateT; - -struct Volume; -struct VolumeBuilder; -struct VolumeT; - -struct KeyValPair; - -struct ScriptTable; -struct ScriptTableBuilder; -struct ScriptTableT; - -struct stringTable; -struct stringTableBuilder; -struct stringTableT; - -struct doubleTable; -struct doubleTableBuilder; -struct doubleTableT; - -struct boolTable; -struct boolTableBuilder; -struct boolTableT; - -struct vec2Table; -struct vec2TableBuilder; -struct vec2TableT; - -struct vec3Table; -struct vec3TableBuilder; -struct vec3TableT; - -struct rotationTable; -struct rotationTableBuilder; -struct rotationTableT; - -struct colorTable; -struct colorTableBuilder; -struct colorTableT; - -struct funcNameTable; -struct funcNameTableBuilder; -struct funcNameTableT; - -struct UnionTable; -struct UnionTableBuilder; -struct UnionTableT; - -struct UnionVec; -struct UnionVecBuilder; -struct UnionVecT; - -struct SaveGameHeader; -struct SaveGameHeaderBuilder; -struct SaveGameHeaderT; - -struct SaveGameStatistics; -struct SaveGameStatisticsBuilder; -struct SaveGameStatisticsT; - -struct SaveGame; -struct SaveGameBuilder; -struct SaveGameT; - -enum class TorchState : int32_t { - holding = 0, - throwing = 1, - dropping = 2, - just_lit = 3, - MIN = holding, - MAX = just_lit -}; - -inline const TorchState (&EnumValuesTorchState())[4] { - static const TorchState values[] = { - TorchState::holding, - TorchState::throwing, - TorchState::dropping, - TorchState::just_lit - }; - return values; -} - -inline const char * const *EnumNamesTorchState() { - static const char * const names[5] = { - "holding", - "throwing", - "dropping", - "just_lit", - nullptr - }; - return names; -} - -inline const char *EnumNameTorchState(TorchState e) { - if (flatbuffers::IsOutRange(e, TorchState::holding, TorchState::just_lit)) return ""; - const size_t index = static_cast(e); - return EnumNamesTorchState()[index]; -} - -enum class VarUnion : uint8_t { - NONE = 0, - str = 1, - tab = 2, - num = 3, - boolean = 4, - vec2 = 5, - vec3 = 6, - rotation = 7, - color = 8, - funcName = 9, - MIN = NONE, - MAX = funcName -}; - -inline const VarUnion (&EnumValuesVarUnion())[10] { - static const VarUnion values[] = { - VarUnion::NONE, - VarUnion::str, - VarUnion::tab, - VarUnion::num, - VarUnion::boolean, - VarUnion::vec2, - VarUnion::vec3, - VarUnion::rotation, - VarUnion::color, - VarUnion::funcName - }; - return values; -} - -inline const char * const *EnumNamesVarUnion() { - static const char * const names[11] = { - "NONE", - "str", - "tab", - "num", - "boolean", - "vec2", - "vec3", - "rotation", - "color", - "funcName", - nullptr - }; - return names; -} - -inline const char *EnumNameVarUnion(VarUnion e) { - if (flatbuffers::IsOutRange(e, VarUnion::NONE, VarUnion::funcName)) return ""; - const size_t index = static_cast(e); - return EnumNamesVarUnion()[index]; -} - -template struct VarUnionTraits { - static const VarUnion enum_value = VarUnion::NONE; -}; - -template<> struct VarUnionTraits { - static const VarUnion enum_value = VarUnion::str; -}; - -template<> struct VarUnionTraits { - static const VarUnion enum_value = VarUnion::tab; -}; - -template<> struct VarUnionTraits { - static const VarUnion enum_value = VarUnion::num; -}; - -template<> struct VarUnionTraits { - static const VarUnion enum_value = VarUnion::boolean; -}; - -template<> struct VarUnionTraits { - static const VarUnion enum_value = VarUnion::vec2; -}; - -template<> struct VarUnionTraits { - static const VarUnion enum_value = VarUnion::vec3; -}; - -template<> struct VarUnionTraits { - static const VarUnion enum_value = VarUnion::rotation; -}; - -template<> struct VarUnionTraits { - static const VarUnion enum_value = VarUnion::color; -}; - -template<> struct VarUnionTraits { - static const VarUnion enum_value = VarUnion::funcName; -}; - -struct VarUnionUnion { - VarUnion type; - void *value; - - VarUnionUnion() : type(VarUnion::NONE), value(nullptr) {} - VarUnionUnion(VarUnionUnion&& u) FLATBUFFERS_NOEXCEPT : - type(VarUnion::NONE), value(nullptr) - { std::swap(type, u.type); std::swap(value, u.value); } - VarUnionUnion(const VarUnionUnion &); - VarUnionUnion &operator=(const VarUnionUnion &u) - { VarUnionUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; } - VarUnionUnion &operator=(VarUnionUnion &&u) FLATBUFFERS_NOEXCEPT - { std::swap(type, u.type); std::swap(value, u.value); return *this; } - ~VarUnionUnion() { Reset(); } - - void Reset(); - -#ifndef FLATBUFFERS_CPP98_STL - template - void Set(T&& val) { - using RT = typename std::remove_reference::type; - Reset(); - type = VarUnionTraits::enum_value; - if (type != VarUnion::NONE) { - value = new RT(std::forward(val)); - } - } -#endif // FLATBUFFERS_CPP98_STL - - static void *UnPack(const void *obj, VarUnion type, const flatbuffers::resolver_function_t *resolver); - flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const; - - TEN::Save::stringTableT *Asstr() { - return type == VarUnion::str ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::stringTableT *Asstr() const { - return type == VarUnion::str ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::ScriptTableT *Astab() { - return type == VarUnion::tab ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::ScriptTableT *Astab() const { - return type == VarUnion::tab ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::doubleTableT *Asnum() { - return type == VarUnion::num ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::doubleTableT *Asnum() const { - return type == VarUnion::num ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::boolTableT *Asboolean() { - return type == VarUnion::boolean ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::boolTableT *Asboolean() const { - return type == VarUnion::boolean ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::vec2TableT *Asvec2() { - return type == VarUnion::vec2 ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::vec2TableT *Asvec2() const { - return type == VarUnion::vec2 ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::vec3TableT *Asvec3() { - return type == VarUnion::vec3 ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::vec3TableT *Asvec3() const { - return type == VarUnion::vec3 ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::rotationTableT *Asrotation() { - return type == VarUnion::rotation ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::rotationTableT *Asrotation() const { - return type == VarUnion::rotation ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::colorTableT *Ascolor() { - return type == VarUnion::color ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::colorTableT *Ascolor() const { - return type == VarUnion::color ? - reinterpret_cast(value) : nullptr; - } - TEN::Save::funcNameTableT *AsfuncName() { - return type == VarUnion::funcName ? - reinterpret_cast(value) : nullptr; - } - const TEN::Save::funcNameTableT *AsfuncName() const { - return type == VarUnion::funcName ? - reinterpret_cast(value) : nullptr; - } -}; - -bool VerifyVarUnion(flatbuffers::Verifier &verifier, const void *obj, VarUnion type); -bool VerifyVarUnionVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types); - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) RoomVector FLATBUFFERS_FINAL_CLASS { - private: - uint32_t room_; - uint32_t y_location_; - - public: - struct Traits; - RoomVector() - : room_(0), - y_location_(0) { - } - RoomVector(uint32_t _room, uint32_t _y_location) - : room_(flatbuffers::EndianScalar(_room)), - y_location_(flatbuffers::EndianScalar(_y_location)) { - } - uint32_t room() const { - return flatbuffers::EndianScalar(room_); - } - uint32_t y_location() const { - return flatbuffers::EndianScalar(y_location_); - } -}; -FLATBUFFERS_STRUCT_END(RoomVector, 8); - -struct RoomVector::Traits { - using type = RoomVector; -}; - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) KeyValPair FLATBUFFERS_FINAL_CLASS { - private: - uint32_t key_; - uint32_t val_; - - public: - struct Traits; - KeyValPair() - : key_(0), - val_(0) { - } - KeyValPair(uint32_t _key, uint32_t _val) - : key_(flatbuffers::EndianScalar(_key)), - val_(flatbuffers::EndianScalar(_val)) { - } - uint32_t key() const { - return flatbuffers::EndianScalar(key_); - } - uint32_t val() const { - return flatbuffers::EndianScalar(val_); - } -}; -FLATBUFFERS_STRUCT_END(KeyValPair, 8); - -struct KeyValPair::Traits { - using type = KeyValPair; -}; - -struct RoomT : public flatbuffers::NativeTable { - typedef Room TableType; - int32_t index = 0; - std::string name{}; - int32_t flags = 0; - int32_t reverb_type = 0; -}; - -struct Room FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef RoomT NativeTableType; - typedef RoomBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_INDEX = 4, - VT_NAME = 6, - VT_FLAGS = 8, - VT_REVERB_TYPE = 10 - }; - int32_t index() const { - return GetField(VT_INDEX, 0); - } - const flatbuffers::String *name() const { - return GetPointer(VT_NAME); - } - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - int32_t reverb_type() const { - return GetField(VT_REVERB_TYPE, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_INDEX) && - VerifyOffset(verifier, VT_NAME) && - verifier.VerifyString(name()) && - VerifyField(verifier, VT_FLAGS) && - VerifyField(verifier, VT_REVERB_TYPE) && - verifier.EndTable(); - } - RoomT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(RoomT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const RoomT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct RoomBuilder { - typedef Room Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_index(int32_t index) { - fbb_.AddElement(Room::VT_INDEX, index, 0); - } - void add_name(flatbuffers::Offset name) { - fbb_.AddOffset(Room::VT_NAME, name); - } - void add_flags(int32_t flags) { - fbb_.AddElement(Room::VT_FLAGS, flags, 0); - } - void add_reverb_type(int32_t reverb_type) { - fbb_.AddElement(Room::VT_REVERB_TYPE, reverb_type, 0); - } - explicit RoomBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateRoom( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t index = 0, - flatbuffers::Offset name = 0, - int32_t flags = 0, - int32_t reverb_type = 0) { - RoomBuilder builder_(_fbb); - builder_.add_reverb_type(reverb_type); - builder_.add_flags(flags); - builder_.add_name(name); - builder_.add_index(index); - return builder_.Finish(); -} - -struct Room::Traits { - using type = Room; - static auto constexpr Create = CreateRoom; -}; - -inline flatbuffers::Offset CreateRoomDirect( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t index = 0, - const char *name = nullptr, - int32_t flags = 0, - int32_t reverb_type = 0) { - auto name__ = name ? _fbb.CreateString(name) : 0; - return TEN::Save::CreateRoom( - _fbb, - index, - name__, - flags, - reverb_type); -} - -flatbuffers::Offset CreateRoom(flatbuffers::FlatBufferBuilder &_fbb, const RoomT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct ItemT : public flatbuffers::NativeTable { - typedef Item TableType; - int32_t active_state = 0; - int32_t anim_number = 0; - int32_t frame_number = 0; - bool is_airborne = false; - int32_t required_state = 0; - int32_t target_state = 0; - std::unique_ptr velocity{}; - int32_t floor = 0; - int32_t touch_bits = 0; - int32_t mesh_bits = 0; - int32_t object_id = 0; - int32_t room_number = 0; - int32_t hit_points = 0; - int32_t box_number = 0; - int32_t timer = 0; - std::unique_ptr color{}; - int32_t flags = 0; - int32_t trigger_flags = 0; - int32_t carried_item = 0; - int32_t after_death = 0; - std::vector item_flags{}; - std::unique_ptr pose{}; - int32_t next_item = 0; - int32_t next_item_active = 0; - bool active = false; - int32_t status = 0; - bool hit_stauts = false; - bool collidable = false; - bool looked_at = false; - int32_t ai_bits = 0; - TEN::Save::ItemDataUnion data{}; - int32_t base_mesh = 0; - std::vector mesh_pointers{}; - int32_t effect_type = 0; - std::unique_ptr effect_light_colour{}; - std::unique_ptr effect_primary_colour{}; - std::unique_ptr effect_secondary_colour{}; - int32_t effect_count = 0; - std::string lua_name{}; - std::string lua_on_killed_name{}; - std::string lua_on_hit_name{}; - std::string lua_on_collided_with_object_name{}; - std::string lua_on_collided_with_room_name{}; -}; - -struct Item FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef ItemT NativeTableType; - typedef ItemBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_ACTIVE_STATE = 4, - VT_ANIM_NUMBER = 6, - VT_FRAME_NUMBER = 8, - VT_IS_AIRBORNE = 10, - VT_REQUIRED_STATE = 12, - VT_TARGET_STATE = 14, - VT_VELOCITY = 16, - VT_FLOOR = 18, - VT_TOUCH_BITS = 20, - VT_MESH_BITS = 22, - VT_OBJECT_ID = 24, - VT_ROOM_NUMBER = 26, - VT_HIT_POINTS = 28, - VT_BOX_NUMBER = 30, - VT_TIMER = 32, - VT_COLOR = 34, - VT_FLAGS = 36, - VT_TRIGGER_FLAGS = 38, - VT_CARRIED_ITEM = 40, - VT_AFTER_DEATH = 42, - VT_ITEM_FLAGS = 44, - VT_POSE = 46, - VT_NEXT_ITEM = 48, - VT_NEXT_ITEM_ACTIVE = 50, - VT_ACTIVE = 52, - VT_STATUS = 54, - VT_HIT_STAUTS = 56, - VT_COLLIDABLE = 58, - VT_LOOKED_AT = 60, - VT_AI_BITS = 62, - VT_DATA_TYPE = 64, - VT_DATA = 66, - VT_BASE_MESH = 68, - VT_MESH_POINTERS = 70, - VT_EFFECT_TYPE = 72, - VT_EFFECT_LIGHT_COLOUR = 74, - VT_EFFECT_PRIMARY_COLOUR = 76, - VT_EFFECT_SECONDARY_COLOUR = 78, - VT_EFFECT_COUNT = 80, - VT_LUA_NAME = 82, - VT_LUA_ON_KILLED_NAME = 84, - VT_LUA_ON_HIT_NAME = 86, - VT_LUA_ON_COLLIDED_WITH_OBJECT_NAME = 88, - VT_LUA_ON_COLLIDED_WITH_ROOM_NAME = 90 - }; - int32_t active_state() const { - return GetField(VT_ACTIVE_STATE, 0); - } - int32_t anim_number() const { - return GetField(VT_ANIM_NUMBER, 0); - } - int32_t frame_number() const { - return GetField(VT_FRAME_NUMBER, 0); - } - bool is_airborne() const { - return GetField(VT_IS_AIRBORNE, 0) != 0; - } - int32_t required_state() const { - return GetField(VT_REQUIRED_STATE, 0); - } - int32_t target_state() const { - return GetField(VT_TARGET_STATE, 0); - } - const TEN::Save::Vector3 *velocity() const { - return GetStruct(VT_VELOCITY); - } - int32_t floor() const { - return GetField(VT_FLOOR, 0); - } - int32_t touch_bits() const { - return GetField(VT_TOUCH_BITS, 0); - } - int32_t mesh_bits() const { - return GetField(VT_MESH_BITS, 0); - } - int32_t object_id() const { - return GetField(VT_OBJECT_ID, 0); - } - int32_t room_number() const { - return GetField(VT_ROOM_NUMBER, 0); - } - int32_t hit_points() const { - return GetField(VT_HIT_POINTS, 0); - } - int32_t box_number() const { - return GetField(VT_BOX_NUMBER, 0); - } - int32_t timer() const { - return GetField(VT_TIMER, 0); - } - const TEN::Save::Vector4 *color() const { - return GetStruct(VT_COLOR); - } - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - int32_t trigger_flags() const { - return GetField(VT_TRIGGER_FLAGS, 0); - } - int32_t carried_item() const { - return GetField(VT_CARRIED_ITEM, 0); - } - int32_t after_death() const { - return GetField(VT_AFTER_DEATH, 0); - } - const flatbuffers::Vector *item_flags() const { - return GetPointer *>(VT_ITEM_FLAGS); - } - const TEN::Save::Position *pose() const { - return GetStruct(VT_POSE); - } - int32_t next_item() const { - return GetField(VT_NEXT_ITEM, 0); - } - int32_t next_item_active() const { - return GetField(VT_NEXT_ITEM_ACTIVE, 0); - } - bool active() const { - return GetField(VT_ACTIVE, 0) != 0; - } - int32_t status() const { - return GetField(VT_STATUS, 0); - } - bool hit_stauts() const { - return GetField(VT_HIT_STAUTS, 0) != 0; - } - bool collidable() const { - return GetField(VT_COLLIDABLE, 0) != 0; - } - bool looked_at() const { - return GetField(VT_LOOKED_AT, 0) != 0; - } - int32_t ai_bits() const { - return GetField(VT_AI_BITS, 0); - } - TEN::Save::ItemData data_type() const { - return static_cast(GetField(VT_DATA_TYPE, 0)); - } - const void *data() const { - return GetPointer(VT_DATA); - } - template const T *data_as() const; - const TEN::Save::Int *data_as_Int() const { - return data_type() == TEN::Save::ItemData::Int ? static_cast(data()) : nullptr; - } - const TEN::Save::Short *data_as_Short() const { - return data_type() == TEN::Save::ItemData::Short ? static_cast(data()) : nullptr; - } - const TEN::Save::Float *data_as_Float() const { - return data_type() == TEN::Save::ItemData::Float ? static_cast(data()) : nullptr; - } - const TEN::Save::ShortArray *data_as_ShortArray() const { - return data_type() == TEN::Save::ItemData::ShortArray ? static_cast(data()) : nullptr; - } - const TEN::Save::ItemNumber *data_as_ItemNumber() const { - return data_type() == TEN::Save::ItemData::ItemNumber ? static_cast(data()) : nullptr; - } - const TEN::Save::Creature *data_as_Creature() const { - return data_type() == TEN::Save::ItemData::Creature ? static_cast(data()) : nullptr; - } - const TEN::Save::LaserHead *data_as_LaserHead() const { - return data_type() == TEN::Save::ItemData::LaserHead ? static_cast(data()) : nullptr; - } - const TEN::Save::QuadBike *data_as_QuadBike() const { - return data_type() == TEN::Save::ItemData::QuadBike ? static_cast(data()) : nullptr; - } - const TEN::Save::BigGun *data_as_BigGun() const { - return data_type() == TEN::Save::ItemData::BigGun ? static_cast(data()) : nullptr; - } - const TEN::Save::Motorbike *data_as_Motorbike() const { - return data_type() == TEN::Save::ItemData::Motorbike ? static_cast(data()) : nullptr; - } - const TEN::Save::Jeep *data_as_Jeep() const { - return data_type() == TEN::Save::ItemData::Jeep ? static_cast(data()) : nullptr; - } - const TEN::Save::LaraInfo *data_as_LaraInfo() const { - return data_type() == TEN::Save::ItemData::LaraInfo ? static_cast(data()) : nullptr; - } - const TEN::Save::Kayak *data_as_Kayak() const { - return data_type() == TEN::Save::ItemData::Kayak ? static_cast(data()) : nullptr; - } - const TEN::Save::Door *data_as_Door() const { - return data_type() == TEN::Save::ItemData::Door ? static_cast(data()) : nullptr; - } - const TEN::Save::Skidoo *data_as_Skidoo() const { - return data_type() == TEN::Save::ItemData::Skidoo ? static_cast(data()) : nullptr; - } - const TEN::Save::UPV *data_as_UPV() const { - return data_type() == TEN::Save::ItemData::UPV ? static_cast(data()) : nullptr; - } - const TEN::Save::Motorboat *data_as_Motorboat() const { - return data_type() == TEN::Save::ItemData::Motorboat ? static_cast(data()) : nullptr; - } - const TEN::Save::GameVector *data_as_GameVector() const { - return data_type() == TEN::Save::ItemData::GameVector ? static_cast(data()) : nullptr; - } - const TEN::Save::Wraith *data_as_Wraith() const { - return data_type() == TEN::Save::ItemData::Wraith ? static_cast(data()) : nullptr; - } - const TEN::Save::Rubberboat *data_as_Rubberboat() const { - return data_type() == TEN::Save::ItemData::Rubberboat ? static_cast(data()) : nullptr; - } - const TEN::Save::Pushable *data_as_Pushable() const { - return data_type() == TEN::Save::ItemData::Pushable ? static_cast(data()) : nullptr; - } - const TEN::Save::Minecart *data_as_Minecart() const { - return data_type() == TEN::Save::ItemData::Minecart ? static_cast(data()) : nullptr; - } - int32_t base_mesh() const { - return GetField(VT_BASE_MESH, 0); - } - const flatbuffers::Vector *mesh_pointers() const { - return GetPointer *>(VT_MESH_POINTERS); - } - int32_t effect_type() const { - return GetField(VT_EFFECT_TYPE, 0); - } - const TEN::Save::Vector3 *effect_light_colour() const { - return GetStruct(VT_EFFECT_LIGHT_COLOUR); - } - const TEN::Save::Vector3 *effect_primary_colour() const { - return GetStruct(VT_EFFECT_PRIMARY_COLOUR); - } - const TEN::Save::Vector3 *effect_secondary_colour() const { - return GetStruct(VT_EFFECT_SECONDARY_COLOUR); - } - int32_t effect_count() const { - return GetField(VT_EFFECT_COUNT, 0); - } - const flatbuffers::String *lua_name() const { - return GetPointer(VT_LUA_NAME); - } - const flatbuffers::String *lua_on_killed_name() const { - return GetPointer(VT_LUA_ON_KILLED_NAME); - } - const flatbuffers::String *lua_on_hit_name() const { - return GetPointer(VT_LUA_ON_HIT_NAME); - } - const flatbuffers::String *lua_on_collided_with_object_name() const { - return GetPointer(VT_LUA_ON_COLLIDED_WITH_OBJECT_NAME); - } - const flatbuffers::String *lua_on_collided_with_room_name() const { - return GetPointer(VT_LUA_ON_COLLIDED_WITH_ROOM_NAME); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_ACTIVE_STATE) && - VerifyField(verifier, VT_ANIM_NUMBER) && - VerifyField(verifier, VT_FRAME_NUMBER) && - VerifyField(verifier, VT_IS_AIRBORNE) && - VerifyField(verifier, VT_REQUIRED_STATE) && - VerifyField(verifier, VT_TARGET_STATE) && - VerifyField(verifier, VT_VELOCITY) && - VerifyField(verifier, VT_FLOOR) && - VerifyField(verifier, VT_TOUCH_BITS) && - VerifyField(verifier, VT_MESH_BITS) && - VerifyField(verifier, VT_OBJECT_ID) && - VerifyField(verifier, VT_ROOM_NUMBER) && - VerifyField(verifier, VT_HIT_POINTS) && - VerifyField(verifier, VT_BOX_NUMBER) && - VerifyField(verifier, VT_TIMER) && - VerifyField(verifier, VT_COLOR) && - VerifyField(verifier, VT_FLAGS) && - VerifyField(verifier, VT_TRIGGER_FLAGS) && - VerifyField(verifier, VT_CARRIED_ITEM) && - VerifyField(verifier, VT_AFTER_DEATH) && - VerifyOffset(verifier, VT_ITEM_FLAGS) && - verifier.VerifyVector(item_flags()) && - VerifyField(verifier, VT_POSE) && - VerifyField(verifier, VT_NEXT_ITEM) && - VerifyField(verifier, VT_NEXT_ITEM_ACTIVE) && - VerifyField(verifier, VT_ACTIVE) && - VerifyField(verifier, VT_STATUS) && - VerifyField(verifier, VT_HIT_STAUTS) && - VerifyField(verifier, VT_COLLIDABLE) && - VerifyField(verifier, VT_LOOKED_AT) && - VerifyField(verifier, VT_AI_BITS) && - VerifyField(verifier, VT_DATA_TYPE) && - VerifyOffset(verifier, VT_DATA) && - VerifyItemData(verifier, data(), data_type()) && - VerifyField(verifier, VT_BASE_MESH) && - VerifyOffset(verifier, VT_MESH_POINTERS) && - verifier.VerifyVector(mesh_pointers()) && - VerifyField(verifier, VT_EFFECT_TYPE) && - VerifyField(verifier, VT_EFFECT_LIGHT_COLOUR) && - VerifyField(verifier, VT_EFFECT_PRIMARY_COLOUR) && - VerifyField(verifier, VT_EFFECT_SECONDARY_COLOUR) && - VerifyField(verifier, VT_EFFECT_COUNT) && - VerifyOffset(verifier, VT_LUA_NAME) && - verifier.VerifyString(lua_name()) && - VerifyOffset(verifier, VT_LUA_ON_KILLED_NAME) && - verifier.VerifyString(lua_on_killed_name()) && - VerifyOffset(verifier, VT_LUA_ON_HIT_NAME) && - verifier.VerifyString(lua_on_hit_name()) && - VerifyOffset(verifier, VT_LUA_ON_COLLIDED_WITH_OBJECT_NAME) && - verifier.VerifyString(lua_on_collided_with_object_name()) && - VerifyOffset(verifier, VT_LUA_ON_COLLIDED_WITH_ROOM_NAME) && - verifier.VerifyString(lua_on_collided_with_room_name()) && - verifier.EndTable(); - } - ItemT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ItemT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ItemT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -template<> inline const TEN::Save::Int *Item::data_as() const { - return data_as_Int(); -} - -template<> inline const TEN::Save::Short *Item::data_as() const { - return data_as_Short(); -} - -template<> inline const TEN::Save::Float *Item::data_as() const { - return data_as_Float(); -} - -template<> inline const TEN::Save::ShortArray *Item::data_as() const { - return data_as_ShortArray(); -} - -template<> inline const TEN::Save::ItemNumber *Item::data_as() const { - return data_as_ItemNumber(); -} - -template<> inline const TEN::Save::Creature *Item::data_as() const { - return data_as_Creature(); -} - -template<> inline const TEN::Save::LaserHead *Item::data_as() const { - return data_as_LaserHead(); -} - -template<> inline const TEN::Save::QuadBike *Item::data_as() const { - return data_as_QuadBike(); -} - -template<> inline const TEN::Save::BigGun *Item::data_as() const { - return data_as_BigGun(); -} - -template<> inline const TEN::Save::Motorbike *Item::data_as() const { - return data_as_Motorbike(); -} - -template<> inline const TEN::Save::Jeep *Item::data_as() const { - return data_as_Jeep(); -} - -template<> inline const TEN::Save::LaraInfo *Item::data_as() const { - return data_as_LaraInfo(); -} - -template<> inline const TEN::Save::Kayak *Item::data_as() const { - return data_as_Kayak(); -} - -template<> inline const TEN::Save::Door *Item::data_as() const { - return data_as_Door(); -} - -template<> inline const TEN::Save::Skidoo *Item::data_as() const { - return data_as_Skidoo(); -} - -template<> inline const TEN::Save::UPV *Item::data_as() const { - return data_as_UPV(); -} - -template<> inline const TEN::Save::Motorboat *Item::data_as() const { - return data_as_Motorboat(); -} - -template<> inline const TEN::Save::GameVector *Item::data_as() const { - return data_as_GameVector(); -} - -template<> inline const TEN::Save::Wraith *Item::data_as() const { - return data_as_Wraith(); -} - -template<> inline const TEN::Save::Rubberboat *Item::data_as() const { - return data_as_Rubberboat(); -} - -template<> inline const TEN::Save::Pushable *Item::data_as() const { - return data_as_Pushable(); -} - -template<> inline const TEN::Save::Minecart *Item::data_as() const { - return data_as_Minecart(); -} - -struct ItemBuilder { - typedef Item Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_active_state(int32_t active_state) { - fbb_.AddElement(Item::VT_ACTIVE_STATE, active_state, 0); - } - void add_anim_number(int32_t anim_number) { - fbb_.AddElement(Item::VT_ANIM_NUMBER, anim_number, 0); - } - void add_frame_number(int32_t frame_number) { - fbb_.AddElement(Item::VT_FRAME_NUMBER, frame_number, 0); - } - void add_is_airborne(bool is_airborne) { - fbb_.AddElement(Item::VT_IS_AIRBORNE, static_cast(is_airborne), 0); - } - void add_required_state(int32_t required_state) { - fbb_.AddElement(Item::VT_REQUIRED_STATE, required_state, 0); - } - void add_target_state(int32_t target_state) { - fbb_.AddElement(Item::VT_TARGET_STATE, target_state, 0); - } - void add_velocity(const TEN::Save::Vector3 *velocity) { - fbb_.AddStruct(Item::VT_VELOCITY, velocity); - } - void add_floor(int32_t floor) { - fbb_.AddElement(Item::VT_FLOOR, floor, 0); - } - void add_touch_bits(int32_t touch_bits) { - fbb_.AddElement(Item::VT_TOUCH_BITS, touch_bits, 0); - } - void add_mesh_bits(int32_t mesh_bits) { - fbb_.AddElement(Item::VT_MESH_BITS, mesh_bits, 0); - } - void add_object_id(int32_t object_id) { - fbb_.AddElement(Item::VT_OBJECT_ID, object_id, 0); - } - void add_room_number(int32_t room_number) { - fbb_.AddElement(Item::VT_ROOM_NUMBER, room_number, 0); - } - void add_hit_points(int32_t hit_points) { - fbb_.AddElement(Item::VT_HIT_POINTS, hit_points, 0); - } - void add_box_number(int32_t box_number) { - fbb_.AddElement(Item::VT_BOX_NUMBER, box_number, 0); - } - void add_timer(int32_t timer) { - fbb_.AddElement(Item::VT_TIMER, timer, 0); - } - void add_color(const TEN::Save::Vector4 *color) { - fbb_.AddStruct(Item::VT_COLOR, color); - } - void add_flags(int32_t flags) { - fbb_.AddElement(Item::VT_FLAGS, flags, 0); - } - void add_trigger_flags(int32_t trigger_flags) { - fbb_.AddElement(Item::VT_TRIGGER_FLAGS, trigger_flags, 0); - } - void add_carried_item(int32_t carried_item) { - fbb_.AddElement(Item::VT_CARRIED_ITEM, carried_item, 0); - } - void add_after_death(int32_t after_death) { - fbb_.AddElement(Item::VT_AFTER_DEATH, after_death, 0); - } - void add_item_flags(flatbuffers::Offset> item_flags) { - fbb_.AddOffset(Item::VT_ITEM_FLAGS, item_flags); - } - void add_pose(const TEN::Save::Position *pose) { - fbb_.AddStruct(Item::VT_POSE, pose); - } - void add_next_item(int32_t next_item) { - fbb_.AddElement(Item::VT_NEXT_ITEM, next_item, 0); - } - void add_next_item_active(int32_t next_item_active) { - fbb_.AddElement(Item::VT_NEXT_ITEM_ACTIVE, next_item_active, 0); - } - void add_active(bool active) { - fbb_.AddElement(Item::VT_ACTIVE, static_cast(active), 0); - } - void add_status(int32_t status) { - fbb_.AddElement(Item::VT_STATUS, status, 0); - } - void add_hit_stauts(bool hit_stauts) { - fbb_.AddElement(Item::VT_HIT_STAUTS, static_cast(hit_stauts), 0); - } - void add_collidable(bool collidable) { - fbb_.AddElement(Item::VT_COLLIDABLE, static_cast(collidable), 0); - } - void add_looked_at(bool looked_at) { - fbb_.AddElement(Item::VT_LOOKED_AT, static_cast(looked_at), 0); - } - void add_ai_bits(int32_t ai_bits) { - fbb_.AddElement(Item::VT_AI_BITS, ai_bits, 0); - } - void add_data_type(TEN::Save::ItemData data_type) { - fbb_.AddElement(Item::VT_DATA_TYPE, static_cast(data_type), 0); - } - void add_data(flatbuffers::Offset data) { - fbb_.AddOffset(Item::VT_DATA, data); - } - void add_base_mesh(int32_t base_mesh) { - fbb_.AddElement(Item::VT_BASE_MESH, base_mesh, 0); - } - void add_mesh_pointers(flatbuffers::Offset> mesh_pointers) { - fbb_.AddOffset(Item::VT_MESH_POINTERS, mesh_pointers); - } - void add_effect_type(int32_t effect_type) { - fbb_.AddElement(Item::VT_EFFECT_TYPE, effect_type, 0); - } - void add_effect_light_colour(const TEN::Save::Vector3 *effect_light_colour) { - fbb_.AddStruct(Item::VT_EFFECT_LIGHT_COLOUR, effect_light_colour); - } - void add_effect_primary_colour(const TEN::Save::Vector3 *effect_primary_colour) { - fbb_.AddStruct(Item::VT_EFFECT_PRIMARY_COLOUR, effect_primary_colour); - } - void add_effect_secondary_colour(const TEN::Save::Vector3 *effect_secondary_colour) { - fbb_.AddStruct(Item::VT_EFFECT_SECONDARY_COLOUR, effect_secondary_colour); - } - void add_effect_count(int32_t effect_count) { - fbb_.AddElement(Item::VT_EFFECT_COUNT, effect_count, 0); - } - void add_lua_name(flatbuffers::Offset lua_name) { - fbb_.AddOffset(Item::VT_LUA_NAME, lua_name); - } - void add_lua_on_killed_name(flatbuffers::Offset lua_on_killed_name) { - fbb_.AddOffset(Item::VT_LUA_ON_KILLED_NAME, lua_on_killed_name); - } - void add_lua_on_hit_name(flatbuffers::Offset lua_on_hit_name) { - fbb_.AddOffset(Item::VT_LUA_ON_HIT_NAME, lua_on_hit_name); - } - void add_lua_on_collided_with_object_name(flatbuffers::Offset lua_on_collided_with_object_name) { - fbb_.AddOffset(Item::VT_LUA_ON_COLLIDED_WITH_OBJECT_NAME, lua_on_collided_with_object_name); - } - void add_lua_on_collided_with_room_name(flatbuffers::Offset lua_on_collided_with_room_name) { - fbb_.AddOffset(Item::VT_LUA_ON_COLLIDED_WITH_ROOM_NAME, lua_on_collided_with_room_name); - } - explicit ItemBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateItem( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t active_state = 0, - int32_t anim_number = 0, - int32_t frame_number = 0, - bool is_airborne = false, - int32_t required_state = 0, - int32_t target_state = 0, - const TEN::Save::Vector3 *velocity = 0, - int32_t floor = 0, - int32_t touch_bits = 0, - int32_t mesh_bits = 0, - int32_t object_id = 0, - int32_t room_number = 0, - int32_t hit_points = 0, - int32_t box_number = 0, - int32_t timer = 0, - const TEN::Save::Vector4 *color = 0, - int32_t flags = 0, - int32_t trigger_flags = 0, - int32_t carried_item = 0, - int32_t after_death = 0, - flatbuffers::Offset> item_flags = 0, - const TEN::Save::Position *pose = 0, - int32_t next_item = 0, - int32_t next_item_active = 0, - bool active = false, - int32_t status = 0, - bool hit_stauts = false, - bool collidable = false, - bool looked_at = false, - int32_t ai_bits = 0, - TEN::Save::ItemData data_type = TEN::Save::ItemData::NONE, - flatbuffers::Offset data = 0, - int32_t base_mesh = 0, - flatbuffers::Offset> mesh_pointers = 0, - int32_t effect_type = 0, - const TEN::Save::Vector3 *effect_light_colour = 0, - const TEN::Save::Vector3 *effect_primary_colour = 0, - const TEN::Save::Vector3 *effect_secondary_colour = 0, - int32_t effect_count = 0, - flatbuffers::Offset lua_name = 0, - flatbuffers::Offset lua_on_killed_name = 0, - flatbuffers::Offset lua_on_hit_name = 0, - flatbuffers::Offset lua_on_collided_with_object_name = 0, - flatbuffers::Offset lua_on_collided_with_room_name = 0) { - ItemBuilder builder_(_fbb); - builder_.add_lua_on_collided_with_room_name(lua_on_collided_with_room_name); - builder_.add_lua_on_collided_with_object_name(lua_on_collided_with_object_name); - builder_.add_lua_on_hit_name(lua_on_hit_name); - builder_.add_lua_on_killed_name(lua_on_killed_name); - builder_.add_lua_name(lua_name); - builder_.add_effect_count(effect_count); - builder_.add_effect_secondary_colour(effect_secondary_colour); - builder_.add_effect_primary_colour(effect_primary_colour); - builder_.add_effect_light_colour(effect_light_colour); - builder_.add_effect_type(effect_type); - builder_.add_mesh_pointers(mesh_pointers); - builder_.add_base_mesh(base_mesh); - builder_.add_data(data); - builder_.add_ai_bits(ai_bits); - builder_.add_status(status); - builder_.add_next_item_active(next_item_active); - builder_.add_next_item(next_item); - builder_.add_pose(pose); - builder_.add_item_flags(item_flags); - builder_.add_after_death(after_death); - builder_.add_carried_item(carried_item); - builder_.add_trigger_flags(trigger_flags); - builder_.add_flags(flags); - builder_.add_color(color); - builder_.add_timer(timer); - builder_.add_box_number(box_number); - builder_.add_hit_points(hit_points); - builder_.add_room_number(room_number); - builder_.add_object_id(object_id); - builder_.add_mesh_bits(mesh_bits); - builder_.add_touch_bits(touch_bits); - builder_.add_floor(floor); - builder_.add_velocity(velocity); - builder_.add_target_state(target_state); - builder_.add_required_state(required_state); - builder_.add_frame_number(frame_number); - builder_.add_anim_number(anim_number); - builder_.add_active_state(active_state); - builder_.add_data_type(data_type); - builder_.add_looked_at(looked_at); - builder_.add_collidable(collidable); - builder_.add_hit_stauts(hit_stauts); - builder_.add_active(active); - builder_.add_is_airborne(is_airborne); - return builder_.Finish(); -} - -struct Item::Traits { - using type = Item; - static auto constexpr Create = CreateItem; -}; - -inline flatbuffers::Offset CreateItemDirect( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t active_state = 0, - int32_t anim_number = 0, - int32_t frame_number = 0, - bool is_airborne = false, - int32_t required_state = 0, - int32_t target_state = 0, - const TEN::Save::Vector3 *velocity = 0, - int32_t floor = 0, - int32_t touch_bits = 0, - int32_t mesh_bits = 0, - int32_t object_id = 0, - int32_t room_number = 0, - int32_t hit_points = 0, - int32_t box_number = 0, - int32_t timer = 0, - const TEN::Save::Vector4 *color = 0, - int32_t flags = 0, - int32_t trigger_flags = 0, - int32_t carried_item = 0, - int32_t after_death = 0, - const std::vector *item_flags = nullptr, - const TEN::Save::Position *pose = 0, - int32_t next_item = 0, - int32_t next_item_active = 0, - bool active = false, - int32_t status = 0, - bool hit_stauts = false, - bool collidable = false, - bool looked_at = false, - int32_t ai_bits = 0, - TEN::Save::ItemData data_type = TEN::Save::ItemData::NONE, - flatbuffers::Offset data = 0, - int32_t base_mesh = 0, - const std::vector *mesh_pointers = nullptr, - int32_t effect_type = 0, - const TEN::Save::Vector3 *effect_light_colour = 0, - const TEN::Save::Vector3 *effect_primary_colour = 0, - const TEN::Save::Vector3 *effect_secondary_colour = 0, - int32_t effect_count = 0, - const char *lua_name = nullptr, - const char *lua_on_killed_name = nullptr, - const char *lua_on_hit_name = nullptr, - const char *lua_on_collided_with_object_name = nullptr, - const char *lua_on_collided_with_room_name = nullptr) { - auto item_flags__ = item_flags ? _fbb.CreateVector(*item_flags) : 0; - auto mesh_pointers__ = mesh_pointers ? _fbb.CreateVector(*mesh_pointers) : 0; - auto lua_name__ = lua_name ? _fbb.CreateString(lua_name) : 0; - auto lua_on_killed_name__ = lua_on_killed_name ? _fbb.CreateString(lua_on_killed_name) : 0; - auto lua_on_hit_name__ = lua_on_hit_name ? _fbb.CreateString(lua_on_hit_name) : 0; - auto lua_on_collided_with_object_name__ = lua_on_collided_with_object_name ? _fbb.CreateString(lua_on_collided_with_object_name) : 0; - auto lua_on_collided_with_room_name__ = lua_on_collided_with_room_name ? _fbb.CreateString(lua_on_collided_with_room_name) : 0; - return TEN::Save::CreateItem( - _fbb, - active_state, - anim_number, - frame_number, - is_airborne, - required_state, - target_state, - velocity, - floor, - touch_bits, - mesh_bits, - object_id, - room_number, - hit_points, - box_number, - timer, - color, - flags, - trigger_flags, - carried_item, - after_death, - item_flags__, - pose, - next_item, - next_item_active, - active, - status, - hit_stauts, - collidable, - looked_at, - ai_bits, - data_type, - data, - base_mesh, - mesh_pointers__, - effect_type, - effect_light_colour, - effect_primary_colour, - effect_secondary_colour, - effect_count, - lua_name__, - lua_on_killed_name__, - lua_on_hit_name__, - lua_on_collided_with_object_name__, - lua_on_collided_with_room_name__); -} - -flatbuffers::Offset CreateItem(flatbuffers::FlatBufferBuilder &_fbb, const ItemT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct FXInfoT : public flatbuffers::NativeTable { - typedef FXInfo TableType; - std::unique_ptr pose{}; - int32_t room_number = 0; - int32_t object_number = 0; - int32_t next_fx = 0; - int32_t next_active = 0; - int32_t speed = 0; - int32_t fall_speed = 0; - int32_t frame_number = 0; - int32_t counter = 0; - std::unique_ptr color{}; - int32_t flag1 = 0; - int32_t flag2 = 0; -}; - -struct FXInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef FXInfoT NativeTableType; - typedef FXInfoBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_POSE = 4, - VT_ROOM_NUMBER = 6, - VT_OBJECT_NUMBER = 8, - VT_NEXT_FX = 10, - VT_NEXT_ACTIVE = 12, - VT_SPEED = 14, - VT_FALL_SPEED = 16, - VT_FRAME_NUMBER = 18, - VT_COUNTER = 20, - VT_COLOR = 22, - VT_FLAG1 = 24, - VT_FLAG2 = 26 - }; - const TEN::Save::Position *pose() const { - return GetStruct(VT_POSE); - } - int32_t room_number() const { - return GetField(VT_ROOM_NUMBER, 0); - } - int32_t object_number() const { - return GetField(VT_OBJECT_NUMBER, 0); - } - int32_t next_fx() const { - return GetField(VT_NEXT_FX, 0); - } - int32_t next_active() const { - return GetField(VT_NEXT_ACTIVE, 0); - } - int32_t speed() const { - return GetField(VT_SPEED, 0); - } - int32_t fall_speed() const { - return GetField(VT_FALL_SPEED, 0); - } - int32_t frame_number() const { - return GetField(VT_FRAME_NUMBER, 0); - } - int32_t counter() const { - return GetField(VT_COUNTER, 0); - } - const TEN::Save::Vector4 *color() const { - return GetStruct(VT_COLOR); - } - int32_t flag1() const { - return GetField(VT_FLAG1, 0); - } - int32_t flag2() const { - return GetField(VT_FLAG2, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_POSE) && - VerifyField(verifier, VT_ROOM_NUMBER) && - VerifyField(verifier, VT_OBJECT_NUMBER) && - VerifyField(verifier, VT_NEXT_FX) && - VerifyField(verifier, VT_NEXT_ACTIVE) && - VerifyField(verifier, VT_SPEED) && - VerifyField(verifier, VT_FALL_SPEED) && - VerifyField(verifier, VT_FRAME_NUMBER) && - VerifyField(verifier, VT_COUNTER) && - VerifyField(verifier, VT_COLOR) && - VerifyField(verifier, VT_FLAG1) && - VerifyField(verifier, VT_FLAG2) && - verifier.EndTable(); - } - FXInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(FXInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const FXInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct FXInfoBuilder { - typedef FXInfo Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_pose(const TEN::Save::Position *pose) { - fbb_.AddStruct(FXInfo::VT_POSE, pose); - } - void add_room_number(int32_t room_number) { - fbb_.AddElement(FXInfo::VT_ROOM_NUMBER, room_number, 0); - } - void add_object_number(int32_t object_number) { - fbb_.AddElement(FXInfo::VT_OBJECT_NUMBER, object_number, 0); - } - void add_next_fx(int32_t next_fx) { - fbb_.AddElement(FXInfo::VT_NEXT_FX, next_fx, 0); - } - void add_next_active(int32_t next_active) { - fbb_.AddElement(FXInfo::VT_NEXT_ACTIVE, next_active, 0); - } - void add_speed(int32_t speed) { - fbb_.AddElement(FXInfo::VT_SPEED, speed, 0); - } - void add_fall_speed(int32_t fall_speed) { - fbb_.AddElement(FXInfo::VT_FALL_SPEED, fall_speed, 0); - } - void add_frame_number(int32_t frame_number) { - fbb_.AddElement(FXInfo::VT_FRAME_NUMBER, frame_number, 0); - } - void add_counter(int32_t counter) { - fbb_.AddElement(FXInfo::VT_COUNTER, counter, 0); - } - void add_color(const TEN::Save::Vector4 *color) { - fbb_.AddStruct(FXInfo::VT_COLOR, color); - } - void add_flag1(int32_t flag1) { - fbb_.AddElement(FXInfo::VT_FLAG1, flag1, 0); - } - void add_flag2(int32_t flag2) { - fbb_.AddElement(FXInfo::VT_FLAG2, flag2, 0); - } - explicit FXInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateFXInfo( - flatbuffers::FlatBufferBuilder &_fbb, - const TEN::Save::Position *pose = 0, - int32_t room_number = 0, - int32_t object_number = 0, - int32_t next_fx = 0, - int32_t next_active = 0, - int32_t speed = 0, - int32_t fall_speed = 0, - int32_t frame_number = 0, - int32_t counter = 0, - const TEN::Save::Vector4 *color = 0, - int32_t flag1 = 0, - int32_t flag2 = 0) { - FXInfoBuilder builder_(_fbb); - builder_.add_flag2(flag2); - builder_.add_flag1(flag1); - builder_.add_color(color); - builder_.add_counter(counter); - builder_.add_frame_number(frame_number); - builder_.add_fall_speed(fall_speed); - builder_.add_speed(speed); - builder_.add_next_active(next_active); - builder_.add_next_fx(next_fx); - builder_.add_object_number(object_number); - builder_.add_room_number(room_number); - builder_.add_pose(pose); - return builder_.Finish(); -} - -struct FXInfo::Traits { - using type = FXInfo; - static auto constexpr Create = CreateFXInfo; -}; - -flatbuffers::Offset CreateFXInfo(flatbuffers::FlatBufferBuilder &_fbb, const FXInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct AmmoInfoT : public flatbuffers::NativeTable { - typedef AmmoInfo TableType; - int32_t count = 0; - bool is_infinite = false; -}; - -struct AmmoInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef AmmoInfoT NativeTableType; - typedef AmmoInfoBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_COUNT = 4, - VT_IS_INFINITE = 6 - }; - int32_t count() const { - return GetField(VT_COUNT, 0); - } - bool is_infinite() const { - return GetField(VT_IS_INFINITE, 0) != 0; - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_COUNT) && - VerifyField(verifier, VT_IS_INFINITE) && - verifier.EndTable(); - } - AmmoInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(AmmoInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const AmmoInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct AmmoInfoBuilder { - typedef AmmoInfo Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_count(int32_t count) { - fbb_.AddElement(AmmoInfo::VT_COUNT, count, 0); - } - void add_is_infinite(bool is_infinite) { - fbb_.AddElement(AmmoInfo::VT_IS_INFINITE, static_cast(is_infinite), 0); - } - explicit AmmoInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateAmmoInfo( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t count = 0, - bool is_infinite = false) { - AmmoInfoBuilder builder_(_fbb); - builder_.add_count(count); - builder_.add_is_infinite(is_infinite); - return builder_.Finish(); -} - -struct AmmoInfo::Traits { - using type = AmmoInfo; - static auto constexpr Create = CreateAmmoInfo; -}; - -flatbuffers::Offset CreateAmmoInfo(flatbuffers::FlatBufferBuilder &_fbb, const AmmoInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct HolsterInfoT : public flatbuffers::NativeTable { - typedef HolsterInfo TableType; - int32_t left_holster = 0; - int32_t right_holster = 0; - int32_t back_holster = 0; -}; - -struct HolsterInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef HolsterInfoT NativeTableType; - typedef HolsterInfoBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_LEFT_HOLSTER = 4, - VT_RIGHT_HOLSTER = 6, - VT_BACK_HOLSTER = 8 - }; - int32_t left_holster() const { - return GetField(VT_LEFT_HOLSTER, 0); - } - int32_t right_holster() const { - return GetField(VT_RIGHT_HOLSTER, 0); - } - int32_t back_holster() const { - return GetField(VT_BACK_HOLSTER, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_LEFT_HOLSTER) && - VerifyField(verifier, VT_RIGHT_HOLSTER) && - VerifyField(verifier, VT_BACK_HOLSTER) && - verifier.EndTable(); - } - HolsterInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(HolsterInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const HolsterInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct HolsterInfoBuilder { - typedef HolsterInfo Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_left_holster(int32_t left_holster) { - fbb_.AddElement(HolsterInfo::VT_LEFT_HOLSTER, left_holster, 0); - } - void add_right_holster(int32_t right_holster) { - fbb_.AddElement(HolsterInfo::VT_RIGHT_HOLSTER, right_holster, 0); - } - void add_back_holster(int32_t back_holster) { - fbb_.AddElement(HolsterInfo::VT_BACK_HOLSTER, back_holster, 0); - } - explicit HolsterInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateHolsterInfo( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t left_holster = 0, - int32_t right_holster = 0, - int32_t back_holster = 0) { - HolsterInfoBuilder builder_(_fbb); - builder_.add_back_holster(back_holster); - builder_.add_right_holster(right_holster); - builder_.add_left_holster(left_holster); - return builder_.Finish(); -} - -struct HolsterInfo::Traits { - using type = HolsterInfo; - static auto constexpr Create = CreateHolsterInfo; -}; - -flatbuffers::Offset CreateHolsterInfo(flatbuffers::FlatBufferBuilder &_fbb, const HolsterInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct CarriedWeaponInfoT : public flatbuffers::NativeTable { - typedef CarriedWeaponInfo TableType; - bool present = false; - bool has_lasersight = false; - bool has_silencer = false; - std::vector> ammo{}; - int32_t selected_ammo = 0; - int32_t weapon_mode = 0; -}; - -struct CarriedWeaponInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef CarriedWeaponInfoT NativeTableType; - typedef CarriedWeaponInfoBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_PRESENT = 4, - VT_HAS_LASERSIGHT = 6, - VT_HAS_SILENCER = 8, - VT_AMMO = 10, - VT_SELECTED_AMMO = 12, - VT_WEAPON_MODE = 14 - }; - bool present() const { - return GetField(VT_PRESENT, 0) != 0; - } - bool has_lasersight() const { - return GetField(VT_HAS_LASERSIGHT, 0) != 0; - } - bool has_silencer() const { - return GetField(VT_HAS_SILENCER, 0) != 0; - } - const flatbuffers::Vector> *ammo() const { - return GetPointer> *>(VT_AMMO); - } - int32_t selected_ammo() const { - return GetField(VT_SELECTED_AMMO, 0); - } - int32_t weapon_mode() const { - return GetField(VT_WEAPON_MODE, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_PRESENT) && - VerifyField(verifier, VT_HAS_LASERSIGHT) && - VerifyField(verifier, VT_HAS_SILENCER) && - VerifyOffset(verifier, VT_AMMO) && - verifier.VerifyVector(ammo()) && - verifier.VerifyVectorOfTables(ammo()) && - VerifyField(verifier, VT_SELECTED_AMMO) && - VerifyField(verifier, VT_WEAPON_MODE) && - verifier.EndTable(); - } - CarriedWeaponInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(CarriedWeaponInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const CarriedWeaponInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct CarriedWeaponInfoBuilder { - typedef CarriedWeaponInfo Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_present(bool present) { - fbb_.AddElement(CarriedWeaponInfo::VT_PRESENT, static_cast(present), 0); - } - void add_has_lasersight(bool has_lasersight) { - fbb_.AddElement(CarriedWeaponInfo::VT_HAS_LASERSIGHT, static_cast(has_lasersight), 0); - } - void add_has_silencer(bool has_silencer) { - fbb_.AddElement(CarriedWeaponInfo::VT_HAS_SILENCER, static_cast(has_silencer), 0); - } - void add_ammo(flatbuffers::Offset>> ammo) { - fbb_.AddOffset(CarriedWeaponInfo::VT_AMMO, ammo); - } - void add_selected_ammo(int32_t selected_ammo) { - fbb_.AddElement(CarriedWeaponInfo::VT_SELECTED_AMMO, selected_ammo, 0); - } - void add_weapon_mode(int32_t weapon_mode) { - fbb_.AddElement(CarriedWeaponInfo::VT_WEAPON_MODE, weapon_mode, 0); - } - explicit CarriedWeaponInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateCarriedWeaponInfo( - flatbuffers::FlatBufferBuilder &_fbb, - bool present = false, - bool has_lasersight = false, - bool has_silencer = false, - flatbuffers::Offset>> ammo = 0, - int32_t selected_ammo = 0, - int32_t weapon_mode = 0) { - CarriedWeaponInfoBuilder builder_(_fbb); - builder_.add_weapon_mode(weapon_mode); - builder_.add_selected_ammo(selected_ammo); - builder_.add_ammo(ammo); - builder_.add_has_silencer(has_silencer); - builder_.add_has_lasersight(has_lasersight); - builder_.add_present(present); - return builder_.Finish(); -} - -struct CarriedWeaponInfo::Traits { - using type = CarriedWeaponInfo; - static auto constexpr Create = CreateCarriedWeaponInfo; -}; - -inline flatbuffers::Offset CreateCarriedWeaponInfoDirect( - flatbuffers::FlatBufferBuilder &_fbb, - bool present = false, - bool has_lasersight = false, - bool has_silencer = false, - const std::vector> *ammo = nullptr, - int32_t selected_ammo = 0, - int32_t weapon_mode = 0) { - auto ammo__ = ammo ? _fbb.CreateVector>(*ammo) : 0; - return TEN::Save::CreateCarriedWeaponInfo( - _fbb, - present, - has_lasersight, - has_silencer, - ammo__, - selected_ammo, - weapon_mode); -} - -flatbuffers::Offset CreateCarriedWeaponInfo(flatbuffers::FlatBufferBuilder &_fbb, const CarriedWeaponInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct WeaponInfoT : public flatbuffers::NativeTable { - typedef WeaponInfo TableType; - uint32_t object_number = 0; - uint32_t anim_number = 0; - uint32_t frame_number = 0; - uint32_t active_state = 0; - uint32_t target_state = 0; -}; - -struct WeaponInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef WeaponInfoT NativeTableType; - typedef WeaponInfoBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_OBJECT_NUMBER = 4, - VT_ANIM_NUMBER = 6, - VT_FRAME_NUMBER = 8, - VT_ACTIVE_STATE = 10, - VT_TARGET_STATE = 12 - }; - uint32_t object_number() const { - return GetField(VT_OBJECT_NUMBER, 0); - } - uint32_t anim_number() const { - return GetField(VT_ANIM_NUMBER, 0); - } - uint32_t frame_number() const { - return GetField(VT_FRAME_NUMBER, 0); - } - uint32_t active_state() const { - return GetField(VT_ACTIVE_STATE, 0); - } - uint32_t target_state() const { - return GetField(VT_TARGET_STATE, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_OBJECT_NUMBER) && - VerifyField(verifier, VT_ANIM_NUMBER) && - VerifyField(verifier, VT_FRAME_NUMBER) && - VerifyField(verifier, VT_ACTIVE_STATE) && - VerifyField(verifier, VT_TARGET_STATE) && - verifier.EndTable(); - } - WeaponInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(WeaponInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const WeaponInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct WeaponInfoBuilder { - typedef WeaponInfo Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_object_number(uint32_t object_number) { - fbb_.AddElement(WeaponInfo::VT_OBJECT_NUMBER, object_number, 0); - } - void add_anim_number(uint32_t anim_number) { - fbb_.AddElement(WeaponInfo::VT_ANIM_NUMBER, anim_number, 0); - } - void add_frame_number(uint32_t frame_number) { - fbb_.AddElement(WeaponInfo::VT_FRAME_NUMBER, frame_number, 0); - } - void add_active_state(uint32_t active_state) { - fbb_.AddElement(WeaponInfo::VT_ACTIVE_STATE, active_state, 0); - } - void add_target_state(uint32_t target_state) { - fbb_.AddElement(WeaponInfo::VT_TARGET_STATE, target_state, 0); - } - explicit WeaponInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateWeaponInfo( - flatbuffers::FlatBufferBuilder &_fbb, - uint32_t object_number = 0, - uint32_t anim_number = 0, - uint32_t frame_number = 0, - uint32_t active_state = 0, - uint32_t target_state = 0) { - WeaponInfoBuilder builder_(_fbb); - builder_.add_target_state(target_state); - builder_.add_active_state(active_state); - builder_.add_frame_number(frame_number); - builder_.add_anim_number(anim_number); - builder_.add_object_number(object_number); - return builder_.Finish(); -} - -struct WeaponInfo::Traits { - using type = WeaponInfo; - static auto constexpr Create = CreateWeaponInfo; -}; - -flatbuffers::Offset CreateWeaponInfo(flatbuffers::FlatBufferBuilder &_fbb, const WeaponInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct ArmInfoT : public flatbuffers::NativeTable { - typedef ArmInfo TableType; - int32_t anim_number = 0; - int32_t frame_number = 0; - int32_t frame_base = 0; - bool locked = false; - std::unique_ptr rotation{}; - int32_t gun_flash = 0; - int32_t gun_smoke = 0; -}; - -struct ArmInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef ArmInfoT NativeTableType; - typedef ArmInfoBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_ANIM_NUMBER = 4, - VT_FRAME_NUMBER = 6, - VT_FRAME_BASE = 8, - VT_LOCKED = 10, - VT_ROTATION = 12, - VT_GUN_FLASH = 14, - VT_GUN_SMOKE = 16 - }; - int32_t anim_number() const { - return GetField(VT_ANIM_NUMBER, 0); - } - int32_t frame_number() const { - return GetField(VT_FRAME_NUMBER, 0); - } - int32_t frame_base() const { - return GetField(VT_FRAME_BASE, 0); - } - bool locked() const { - return GetField(VT_LOCKED, 0) != 0; - } - const TEN::Save::Vector3 *rotation() const { - return GetStruct(VT_ROTATION); - } - int32_t gun_flash() const { - return GetField(VT_GUN_FLASH, 0); - } - int32_t gun_smoke() const { - return GetField(VT_GUN_SMOKE, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_ANIM_NUMBER) && - VerifyField(verifier, VT_FRAME_NUMBER) && - VerifyField(verifier, VT_FRAME_BASE) && - VerifyField(verifier, VT_LOCKED) && - VerifyField(verifier, VT_ROTATION) && - VerifyField(verifier, VT_GUN_FLASH) && - VerifyField(verifier, VT_GUN_SMOKE) && - verifier.EndTable(); - } - ArmInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ArmInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArmInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct ArmInfoBuilder { - typedef ArmInfo Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_anim_number(int32_t anim_number) { - fbb_.AddElement(ArmInfo::VT_ANIM_NUMBER, anim_number, 0); - } - void add_frame_number(int32_t frame_number) { - fbb_.AddElement(ArmInfo::VT_FRAME_NUMBER, frame_number, 0); - } - void add_frame_base(int32_t frame_base) { - fbb_.AddElement(ArmInfo::VT_FRAME_BASE, frame_base, 0); - } - void add_locked(bool locked) { - fbb_.AddElement(ArmInfo::VT_LOCKED, static_cast(locked), 0); - } - void add_rotation(const TEN::Save::Vector3 *rotation) { - fbb_.AddStruct(ArmInfo::VT_ROTATION, rotation); - } - void add_gun_flash(int32_t gun_flash) { - fbb_.AddElement(ArmInfo::VT_GUN_FLASH, gun_flash, 0); - } - void add_gun_smoke(int32_t gun_smoke) { - fbb_.AddElement(ArmInfo::VT_GUN_SMOKE, gun_smoke, 0); - } - explicit ArmInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateArmInfo( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t anim_number = 0, - int32_t frame_number = 0, - int32_t frame_base = 0, - bool locked = false, - const TEN::Save::Vector3 *rotation = 0, - int32_t gun_flash = 0, - int32_t gun_smoke = 0) { - ArmInfoBuilder builder_(_fbb); - builder_.add_gun_smoke(gun_smoke); - builder_.add_gun_flash(gun_flash); - builder_.add_rotation(rotation); - builder_.add_frame_base(frame_base); - builder_.add_frame_number(frame_number); - builder_.add_anim_number(anim_number); - builder_.add_locked(locked); - return builder_.Finish(); -} - -struct ArmInfo::Traits { - using type = ArmInfo; - static auto constexpr Create = CreateArmInfo; -}; - -flatbuffers::Offset CreateArmInfo(flatbuffers::FlatBufferBuilder &_fbb, const ArmInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct FlareDataT : public flatbuffers::NativeTable { - typedef FlareData TableType; - uint32_t life = 0; - int32_t frame = 0; - bool control_left = false; -}; - -struct FlareData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef FlareDataT NativeTableType; - typedef FlareDataBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_LIFE = 4, - VT_FRAME = 6, - VT_CONTROL_LEFT = 8 - }; - uint32_t life() const { - return GetField(VT_LIFE, 0); - } - int32_t frame() const { - return GetField(VT_FRAME, 0); - } - bool control_left() const { - return GetField(VT_CONTROL_LEFT, 0) != 0; - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_LIFE) && - VerifyField(verifier, VT_FRAME) && - VerifyField(verifier, VT_CONTROL_LEFT) && - verifier.EndTable(); - } - FlareDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(FlareDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const FlareDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct FlareDataBuilder { - typedef FlareData Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_life(uint32_t life) { - fbb_.AddElement(FlareData::VT_LIFE, life, 0); - } - void add_frame(int32_t frame) { - fbb_.AddElement(FlareData::VT_FRAME, frame, 0); - } - void add_control_left(bool control_left) { - fbb_.AddElement(FlareData::VT_CONTROL_LEFT, static_cast(control_left), 0); - } - explicit FlareDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateFlareData( - flatbuffers::FlatBufferBuilder &_fbb, - uint32_t life = 0, - int32_t frame = 0, - bool control_left = false) { - FlareDataBuilder builder_(_fbb); - builder_.add_frame(frame); - builder_.add_life(life); - builder_.add_control_left(control_left); - return builder_.Finish(); -} - -struct FlareData::Traits { - using type = FlareData; - static auto constexpr Create = CreateFlareData; -}; - -flatbuffers::Offset CreateFlareData(flatbuffers::FlatBufferBuilder &_fbb, const FlareDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct TorchDataT : public flatbuffers::NativeTable { - typedef TorchData TableType; - TEN::Save::TorchState state = TEN::Save::TorchState::holding; - bool is_lit = false; -}; - -struct TorchData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef TorchDataT NativeTableType; - typedef TorchDataBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_STATE = 4, - VT_IS_LIT = 6 - }; - TEN::Save::TorchState state() const { - return static_cast(GetField(VT_STATE, 0)); - } - bool is_lit() const { - return GetField(VT_IS_LIT, 0) != 0; - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_STATE) && - VerifyField(verifier, VT_IS_LIT) && - verifier.EndTable(); - } - TorchDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TorchDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TorchDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct TorchDataBuilder { - typedef TorchData Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_state(TEN::Save::TorchState state) { - fbb_.AddElement(TorchData::VT_STATE, static_cast(state), 0); - } - void add_is_lit(bool is_lit) { - fbb_.AddElement(TorchData::VT_IS_LIT, static_cast(is_lit), 0); - } - explicit TorchDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateTorchData( - flatbuffers::FlatBufferBuilder &_fbb, - TEN::Save::TorchState state = TEN::Save::TorchState::holding, - bool is_lit = false) { - TorchDataBuilder builder_(_fbb); - builder_.add_state(state); - builder_.add_is_lit(is_lit); - return builder_.Finish(); -} - -struct TorchData::Traits { - using type = TorchData; - static auto constexpr Create = CreateTorchData; -}; - -flatbuffers::Offset CreateTorchData(flatbuffers::FlatBufferBuilder &_fbb, const TorchDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct LaraInventoryDataT : public flatbuffers::NativeTable { - typedef LaraInventoryData TableType; - bool is_busy = false; - bool old_busy = false; - int32_t beetle_life = 0; - int32_t beetle_components = 0; - int32_t small_waterskin = 0; - int32_t big_waterskin = 0; - bool has_binoculars = false; - bool has_crowbar = false; - bool has_torch = false; - bool has_lasersight = false; - bool has_silencer = false; - int32_t total_small_medipacks = 0; - int32_t total_large_medipacks = 0; - int32_t total_flares = 0; - uint32_t total_secrets = 0; - std::vector puzzles{}; - std::vector keys{}; - std::vector pickups{}; - std::vector examines{}; - std::vector puzzles_combo{}; - std::vector keys_combo{}; - std::vector pickups_combo{}; - std::vector examines_combo{}; -}; - -struct LaraInventoryData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef LaraInventoryDataT NativeTableType; - typedef LaraInventoryDataBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_IS_BUSY = 4, - VT_OLD_BUSY = 6, - VT_BEETLE_LIFE = 8, - VT_BEETLE_COMPONENTS = 10, - VT_SMALL_WATERSKIN = 12, - VT_BIG_WATERSKIN = 14, - VT_HAS_BINOCULARS = 16, - VT_HAS_CROWBAR = 18, - VT_HAS_TORCH = 20, - VT_HAS_LASERSIGHT = 22, - VT_HAS_SILENCER = 24, - VT_TOTAL_SMALL_MEDIPACKS = 26, - VT_TOTAL_LARGE_MEDIPACKS = 28, - VT_TOTAL_FLARES = 30, - VT_TOTAL_SECRETS = 32, - VT_PUZZLES = 34, - VT_KEYS = 36, - VT_PICKUPS = 38, - VT_EXAMINES = 40, - VT_PUZZLES_COMBO = 42, - VT_KEYS_COMBO = 44, - VT_PICKUPS_COMBO = 46, - VT_EXAMINES_COMBO = 48 - }; - bool is_busy() const { - return GetField(VT_IS_BUSY, 0) != 0; - } - bool old_busy() const { - return GetField(VT_OLD_BUSY, 0) != 0; - } - int32_t beetle_life() const { - return GetField(VT_BEETLE_LIFE, 0); - } - int32_t beetle_components() const { - return GetField(VT_BEETLE_COMPONENTS, 0); - } - int32_t small_waterskin() const { - return GetField(VT_SMALL_WATERSKIN, 0); - } - int32_t big_waterskin() const { - return GetField(VT_BIG_WATERSKIN, 0); - } - bool has_binoculars() const { - return GetField(VT_HAS_BINOCULARS, 0) != 0; - } - bool has_crowbar() const { - return GetField(VT_HAS_CROWBAR, 0) != 0; - } - bool has_torch() const { - return GetField(VT_HAS_TORCH, 0) != 0; - } - bool has_lasersight() const { - return GetField(VT_HAS_LASERSIGHT, 0) != 0; - } - bool has_silencer() const { - return GetField(VT_HAS_SILENCER, 0) != 0; - } - int32_t total_small_medipacks() const { - return GetField(VT_TOTAL_SMALL_MEDIPACKS, 0); - } - int32_t total_large_medipacks() const { - return GetField(VT_TOTAL_LARGE_MEDIPACKS, 0); - } - int32_t total_flares() const { - return GetField(VT_TOTAL_FLARES, 0); - } - uint32_t total_secrets() const { - return GetField(VT_TOTAL_SECRETS, 0); - } - const flatbuffers::Vector *puzzles() const { - return GetPointer *>(VT_PUZZLES); - } - const flatbuffers::Vector *keys() const { - return GetPointer *>(VT_KEYS); - } - const flatbuffers::Vector *pickups() const { - return GetPointer *>(VT_PICKUPS); - } - const flatbuffers::Vector *examines() const { - return GetPointer *>(VT_EXAMINES); - } - const flatbuffers::Vector *puzzles_combo() const { - return GetPointer *>(VT_PUZZLES_COMBO); - } - const flatbuffers::Vector *keys_combo() const { - return GetPointer *>(VT_KEYS_COMBO); - } - const flatbuffers::Vector *pickups_combo() const { - return GetPointer *>(VT_PICKUPS_COMBO); - } - const flatbuffers::Vector *examines_combo() const { - return GetPointer *>(VT_EXAMINES_COMBO); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_IS_BUSY) && - VerifyField(verifier, VT_OLD_BUSY) && - VerifyField(verifier, VT_BEETLE_LIFE) && - VerifyField(verifier, VT_BEETLE_COMPONENTS) && - VerifyField(verifier, VT_SMALL_WATERSKIN) && - VerifyField(verifier, VT_BIG_WATERSKIN) && - VerifyField(verifier, VT_HAS_BINOCULARS) && - VerifyField(verifier, VT_HAS_CROWBAR) && - VerifyField(verifier, VT_HAS_TORCH) && - VerifyField(verifier, VT_HAS_LASERSIGHT) && - VerifyField(verifier, VT_HAS_SILENCER) && - VerifyField(verifier, VT_TOTAL_SMALL_MEDIPACKS) && - VerifyField(verifier, VT_TOTAL_LARGE_MEDIPACKS) && - VerifyField(verifier, VT_TOTAL_FLARES) && - VerifyField(verifier, VT_TOTAL_SECRETS) && - VerifyOffset(verifier, VT_PUZZLES) && - verifier.VerifyVector(puzzles()) && - VerifyOffset(verifier, VT_KEYS) && - verifier.VerifyVector(keys()) && - VerifyOffset(verifier, VT_PICKUPS) && - verifier.VerifyVector(pickups()) && - VerifyOffset(verifier, VT_EXAMINES) && - verifier.VerifyVector(examines()) && - VerifyOffset(verifier, VT_PUZZLES_COMBO) && - verifier.VerifyVector(puzzles_combo()) && - VerifyOffset(verifier, VT_KEYS_COMBO) && - verifier.VerifyVector(keys_combo()) && - VerifyOffset(verifier, VT_PICKUPS_COMBO) && - verifier.VerifyVector(pickups_combo()) && - VerifyOffset(verifier, VT_EXAMINES_COMBO) && - verifier.VerifyVector(examines_combo()) && - verifier.EndTable(); - } - LaraInventoryDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(LaraInventoryDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraInventoryDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct LaraInventoryDataBuilder { - typedef LaraInventoryData Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_is_busy(bool is_busy) { - fbb_.AddElement(LaraInventoryData::VT_IS_BUSY, static_cast(is_busy), 0); - } - void add_old_busy(bool old_busy) { - fbb_.AddElement(LaraInventoryData::VT_OLD_BUSY, static_cast(old_busy), 0); - } - void add_beetle_life(int32_t beetle_life) { - fbb_.AddElement(LaraInventoryData::VT_BEETLE_LIFE, beetle_life, 0); - } - void add_beetle_components(int32_t beetle_components) { - fbb_.AddElement(LaraInventoryData::VT_BEETLE_COMPONENTS, beetle_components, 0); - } - void add_small_waterskin(int32_t small_waterskin) { - fbb_.AddElement(LaraInventoryData::VT_SMALL_WATERSKIN, small_waterskin, 0); - } - void add_big_waterskin(int32_t big_waterskin) { - fbb_.AddElement(LaraInventoryData::VT_BIG_WATERSKIN, big_waterskin, 0); - } - void add_has_binoculars(bool has_binoculars) { - fbb_.AddElement(LaraInventoryData::VT_HAS_BINOCULARS, static_cast(has_binoculars), 0); - } - void add_has_crowbar(bool has_crowbar) { - fbb_.AddElement(LaraInventoryData::VT_HAS_CROWBAR, static_cast(has_crowbar), 0); - } - void add_has_torch(bool has_torch) { - fbb_.AddElement(LaraInventoryData::VT_HAS_TORCH, static_cast(has_torch), 0); - } - void add_has_lasersight(bool has_lasersight) { - fbb_.AddElement(LaraInventoryData::VT_HAS_LASERSIGHT, static_cast(has_lasersight), 0); - } - void add_has_silencer(bool has_silencer) { - fbb_.AddElement(LaraInventoryData::VT_HAS_SILENCER, static_cast(has_silencer), 0); - } - void add_total_small_medipacks(int32_t total_small_medipacks) { - fbb_.AddElement(LaraInventoryData::VT_TOTAL_SMALL_MEDIPACKS, total_small_medipacks, 0); - } - void add_total_large_medipacks(int32_t total_large_medipacks) { - fbb_.AddElement(LaraInventoryData::VT_TOTAL_LARGE_MEDIPACKS, total_large_medipacks, 0); - } - void add_total_flares(int32_t total_flares) { - fbb_.AddElement(LaraInventoryData::VT_TOTAL_FLARES, total_flares, 0); - } - void add_total_secrets(uint32_t total_secrets) { - fbb_.AddElement(LaraInventoryData::VT_TOTAL_SECRETS, total_secrets, 0); - } - void add_puzzles(flatbuffers::Offset> puzzles) { - fbb_.AddOffset(LaraInventoryData::VT_PUZZLES, puzzles); - } - void add_keys(flatbuffers::Offset> keys) { - fbb_.AddOffset(LaraInventoryData::VT_KEYS, keys); - } - void add_pickups(flatbuffers::Offset> pickups) { - fbb_.AddOffset(LaraInventoryData::VT_PICKUPS, pickups); - } - void add_examines(flatbuffers::Offset> examines) { - fbb_.AddOffset(LaraInventoryData::VT_EXAMINES, examines); - } - void add_puzzles_combo(flatbuffers::Offset> puzzles_combo) { - fbb_.AddOffset(LaraInventoryData::VT_PUZZLES_COMBO, puzzles_combo); - } - void add_keys_combo(flatbuffers::Offset> keys_combo) { - fbb_.AddOffset(LaraInventoryData::VT_KEYS_COMBO, keys_combo); - } - void add_pickups_combo(flatbuffers::Offset> pickups_combo) { - fbb_.AddOffset(LaraInventoryData::VT_PICKUPS_COMBO, pickups_combo); - } - void add_examines_combo(flatbuffers::Offset> examines_combo) { - fbb_.AddOffset(LaraInventoryData::VT_EXAMINES_COMBO, examines_combo); - } - explicit LaraInventoryDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateLaraInventoryData( - flatbuffers::FlatBufferBuilder &_fbb, - bool is_busy = false, - bool old_busy = false, - int32_t beetle_life = 0, - int32_t beetle_components = 0, - int32_t small_waterskin = 0, - int32_t big_waterskin = 0, - bool has_binoculars = false, - bool has_crowbar = false, - bool has_torch = false, - bool has_lasersight = false, - bool has_silencer = false, - int32_t total_small_medipacks = 0, - int32_t total_large_medipacks = 0, - int32_t total_flares = 0, - uint32_t total_secrets = 0, - flatbuffers::Offset> puzzles = 0, - flatbuffers::Offset> keys = 0, - flatbuffers::Offset> pickups = 0, - flatbuffers::Offset> examines = 0, - flatbuffers::Offset> puzzles_combo = 0, - flatbuffers::Offset> keys_combo = 0, - flatbuffers::Offset> pickups_combo = 0, - flatbuffers::Offset> examines_combo = 0) { - LaraInventoryDataBuilder builder_(_fbb); - builder_.add_examines_combo(examines_combo); - builder_.add_pickups_combo(pickups_combo); - builder_.add_keys_combo(keys_combo); - builder_.add_puzzles_combo(puzzles_combo); - builder_.add_examines(examines); - builder_.add_pickups(pickups); - builder_.add_keys(keys); - builder_.add_puzzles(puzzles); - builder_.add_total_secrets(total_secrets); - builder_.add_total_flares(total_flares); - builder_.add_total_large_medipacks(total_large_medipacks); - builder_.add_total_small_medipacks(total_small_medipacks); - builder_.add_big_waterskin(big_waterskin); - builder_.add_small_waterskin(small_waterskin); - builder_.add_beetle_components(beetle_components); - builder_.add_beetle_life(beetle_life); - builder_.add_has_silencer(has_silencer); - builder_.add_has_lasersight(has_lasersight); - builder_.add_has_torch(has_torch); - builder_.add_has_crowbar(has_crowbar); - builder_.add_has_binoculars(has_binoculars); - builder_.add_old_busy(old_busy); - builder_.add_is_busy(is_busy); - return builder_.Finish(); -} - -struct LaraInventoryData::Traits { - using type = LaraInventoryData; - static auto constexpr Create = CreateLaraInventoryData; -}; - -inline flatbuffers::Offset CreateLaraInventoryDataDirect( - flatbuffers::FlatBufferBuilder &_fbb, - bool is_busy = false, - bool old_busy = false, - int32_t beetle_life = 0, - int32_t beetle_components = 0, - int32_t small_waterskin = 0, - int32_t big_waterskin = 0, - bool has_binoculars = false, - bool has_crowbar = false, - bool has_torch = false, - bool has_lasersight = false, - bool has_silencer = false, - int32_t total_small_medipacks = 0, - int32_t total_large_medipacks = 0, - int32_t total_flares = 0, - uint32_t total_secrets = 0, - const std::vector *puzzles = nullptr, - const std::vector *keys = nullptr, - const std::vector *pickups = nullptr, - const std::vector *examines = nullptr, - const std::vector *puzzles_combo = nullptr, - const std::vector *keys_combo = nullptr, - const std::vector *pickups_combo = nullptr, - const std::vector *examines_combo = nullptr) { - auto puzzles__ = puzzles ? _fbb.CreateVector(*puzzles) : 0; - auto keys__ = keys ? _fbb.CreateVector(*keys) : 0; - auto pickups__ = pickups ? _fbb.CreateVector(*pickups) : 0; - auto examines__ = examines ? _fbb.CreateVector(*examines) : 0; - auto puzzles_combo__ = puzzles_combo ? _fbb.CreateVector(*puzzles_combo) : 0; - auto keys_combo__ = keys_combo ? _fbb.CreateVector(*keys_combo) : 0; - auto pickups_combo__ = pickups_combo ? _fbb.CreateVector(*pickups_combo) : 0; - auto examines_combo__ = examines_combo ? _fbb.CreateVector(*examines_combo) : 0; - return TEN::Save::CreateLaraInventoryData( - _fbb, - is_busy, - old_busy, - beetle_life, - beetle_components, - small_waterskin, - big_waterskin, - has_binoculars, - has_crowbar, - has_torch, - has_lasersight, - has_silencer, - total_small_medipacks, - total_large_medipacks, - total_flares, - total_secrets, - puzzles__, - keys__, - pickups__, - examines__, - puzzles_combo__, - keys_combo__, - pickups_combo__, - examines_combo__); -} - -flatbuffers::Offset CreateLaraInventoryData(flatbuffers::FlatBufferBuilder &_fbb, const LaraInventoryDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct LaraCountDataT : public flatbuffers::NativeTable { - typedef LaraCountData TableType; - uint32_t run_jump = 0; - uint32_t position_adjust = 0; - uint32_t pose = 0; - uint32_t death = 0; - uint32_t no_cheat = 0; -}; - -struct LaraCountData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef LaraCountDataT NativeTableType; - typedef LaraCountDataBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_RUN_JUMP = 4, - VT_POSITION_ADJUST = 6, - VT_POSE = 8, - VT_DEATH = 10, - VT_NO_CHEAT = 12 - }; - uint32_t run_jump() const { - return GetField(VT_RUN_JUMP, 0); - } - uint32_t position_adjust() const { - return GetField(VT_POSITION_ADJUST, 0); - } - uint32_t pose() const { - return GetField(VT_POSE, 0); - } - uint32_t death() const { - return GetField(VT_DEATH, 0); - } - uint32_t no_cheat() const { - return GetField(VT_NO_CHEAT, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_RUN_JUMP) && - VerifyField(verifier, VT_POSITION_ADJUST) && - VerifyField(verifier, VT_POSE) && - VerifyField(verifier, VT_DEATH) && - VerifyField(verifier, VT_NO_CHEAT) && - verifier.EndTable(); - } - LaraCountDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(LaraCountDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraCountDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct LaraCountDataBuilder { - typedef LaraCountData Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_run_jump(uint32_t run_jump) { - fbb_.AddElement(LaraCountData::VT_RUN_JUMP, run_jump, 0); - } - void add_position_adjust(uint32_t position_adjust) { - fbb_.AddElement(LaraCountData::VT_POSITION_ADJUST, position_adjust, 0); - } - void add_pose(uint32_t pose) { - fbb_.AddElement(LaraCountData::VT_POSE, pose, 0); - } - void add_death(uint32_t death) { - fbb_.AddElement(LaraCountData::VT_DEATH, death, 0); - } - void add_no_cheat(uint32_t no_cheat) { - fbb_.AddElement(LaraCountData::VT_NO_CHEAT, no_cheat, 0); - } - explicit LaraCountDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateLaraCountData( - flatbuffers::FlatBufferBuilder &_fbb, - uint32_t run_jump = 0, - uint32_t position_adjust = 0, - uint32_t pose = 0, - uint32_t death = 0, - uint32_t no_cheat = 0) { - LaraCountDataBuilder builder_(_fbb); - builder_.add_no_cheat(no_cheat); - builder_.add_death(death); - builder_.add_pose(pose); - builder_.add_position_adjust(position_adjust); - builder_.add_run_jump(run_jump); - return builder_.Finish(); -} - -struct LaraCountData::Traits { - using type = LaraCountData; - static auto constexpr Create = CreateLaraCountData; -}; - -flatbuffers::Offset CreateLaraCountData(flatbuffers::FlatBufferBuilder &_fbb, const LaraCountDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct WeaponControlDataT : public flatbuffers::NativeTable { - typedef WeaponControlData TableType; - int32_t weapon_item = 0; - bool has_fired = false; - bool fired = false; - bool uzi_left = false; - bool uzi_right = false; - int32_t gun_type = 0; - int32_t request_gun_type = 0; - int32_t last_gun_type = 0; - std::unique_ptr holster_info{}; - uint32_t num_shots_fired = 0; - float interval = 0.0f; - float timer = 0.0f; -}; - -struct WeaponControlData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef WeaponControlDataT NativeTableType; - typedef WeaponControlDataBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_WEAPON_ITEM = 4, - VT_HAS_FIRED = 6, - VT_FIRED = 8, - VT_UZI_LEFT = 10, - VT_UZI_RIGHT = 12, - VT_GUN_TYPE = 14, - VT_REQUEST_GUN_TYPE = 16, - VT_LAST_GUN_TYPE = 18, - VT_HOLSTER_INFO = 20, - VT_NUM_SHOTS_FIRED = 22, - VT_INTERVAL = 24, - VT_TIMER = 26 - }; - int32_t weapon_item() const { - return GetField(VT_WEAPON_ITEM, 0); - } - bool has_fired() const { - return GetField(VT_HAS_FIRED, 0) != 0; - } - bool fired() const { - return GetField(VT_FIRED, 0) != 0; - } - bool uzi_left() const { - return GetField(VT_UZI_LEFT, 0) != 0; - } - bool uzi_right() const { - return GetField(VT_UZI_RIGHT, 0) != 0; - } - int32_t gun_type() const { - return GetField(VT_GUN_TYPE, 0); - } - int32_t request_gun_type() const { - return GetField(VT_REQUEST_GUN_TYPE, 0); - } - int32_t last_gun_type() const { - return GetField(VT_LAST_GUN_TYPE, 0); - } - const TEN::Save::HolsterInfo *holster_info() const { - return GetPointer(VT_HOLSTER_INFO); - } - uint32_t num_shots_fired() const { - return GetField(VT_NUM_SHOTS_FIRED, 0); - } - float interval() const { - return GetField(VT_INTERVAL, 0.0f); - } - float timer() const { - return GetField(VT_TIMER, 0.0f); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_WEAPON_ITEM) && - VerifyField(verifier, VT_HAS_FIRED) && - VerifyField(verifier, VT_FIRED) && - VerifyField(verifier, VT_UZI_LEFT) && - VerifyField(verifier, VT_UZI_RIGHT) && - VerifyField(verifier, VT_GUN_TYPE) && - VerifyField(verifier, VT_REQUEST_GUN_TYPE) && - VerifyField(verifier, VT_LAST_GUN_TYPE) && - VerifyOffset(verifier, VT_HOLSTER_INFO) && - verifier.VerifyTable(holster_info()) && - VerifyField(verifier, VT_NUM_SHOTS_FIRED) && - VerifyField(verifier, VT_INTERVAL) && - VerifyField(verifier, VT_TIMER) && - verifier.EndTable(); - } - WeaponControlDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(WeaponControlDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const WeaponControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct WeaponControlDataBuilder { - typedef WeaponControlData Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_weapon_item(int32_t weapon_item) { - fbb_.AddElement(WeaponControlData::VT_WEAPON_ITEM, weapon_item, 0); - } - void add_has_fired(bool has_fired) { - fbb_.AddElement(WeaponControlData::VT_HAS_FIRED, static_cast(has_fired), 0); - } - void add_fired(bool fired) { - fbb_.AddElement(WeaponControlData::VT_FIRED, static_cast(fired), 0); - } - void add_uzi_left(bool uzi_left) { - fbb_.AddElement(WeaponControlData::VT_UZI_LEFT, static_cast(uzi_left), 0); - } - void add_uzi_right(bool uzi_right) { - fbb_.AddElement(WeaponControlData::VT_UZI_RIGHT, static_cast(uzi_right), 0); - } - void add_gun_type(int32_t gun_type) { - fbb_.AddElement(WeaponControlData::VT_GUN_TYPE, gun_type, 0); - } - void add_request_gun_type(int32_t request_gun_type) { - fbb_.AddElement(WeaponControlData::VT_REQUEST_GUN_TYPE, request_gun_type, 0); - } - void add_last_gun_type(int32_t last_gun_type) { - fbb_.AddElement(WeaponControlData::VT_LAST_GUN_TYPE, last_gun_type, 0); - } - void add_holster_info(flatbuffers::Offset holster_info) { - fbb_.AddOffset(WeaponControlData::VT_HOLSTER_INFO, holster_info); - } - void add_num_shots_fired(uint32_t num_shots_fired) { - fbb_.AddElement(WeaponControlData::VT_NUM_SHOTS_FIRED, num_shots_fired, 0); - } - void add_interval(float interval) { - fbb_.AddElement(WeaponControlData::VT_INTERVAL, interval, 0.0f); - } - void add_timer(float timer) { - fbb_.AddElement(WeaponControlData::VT_TIMER, timer, 0.0f); - } - explicit WeaponControlDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateWeaponControlData( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t weapon_item = 0, - bool has_fired = false, - bool fired = false, - bool uzi_left = false, - bool uzi_right = false, - int32_t gun_type = 0, - int32_t request_gun_type = 0, - int32_t last_gun_type = 0, - flatbuffers::Offset holster_info = 0, - uint32_t num_shots_fired = 0, - float interval = 0.0f, - float timer = 0.0f) { - WeaponControlDataBuilder builder_(_fbb); - builder_.add_timer(timer); - builder_.add_interval(interval); - builder_.add_num_shots_fired(num_shots_fired); - builder_.add_holster_info(holster_info); - builder_.add_last_gun_type(last_gun_type); - builder_.add_request_gun_type(request_gun_type); - builder_.add_gun_type(gun_type); - builder_.add_weapon_item(weapon_item); - builder_.add_uzi_right(uzi_right); - builder_.add_uzi_left(uzi_left); - builder_.add_fired(fired); - builder_.add_has_fired(has_fired); - return builder_.Finish(); -} - -struct WeaponControlData::Traits { - using type = WeaponControlData; - static auto constexpr Create = CreateWeaponControlData; -}; - -flatbuffers::Offset CreateWeaponControlData(flatbuffers::FlatBufferBuilder &_fbb, const WeaponControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct RopeControlDataT : public flatbuffers::NativeTable { - typedef RopeControlData TableType; - int32_t segment = 0; - int32_t direction = 0; - int32_t arc_front = 0; - int32_t arc_back = 0; - int32_t last_x = 0; - int32_t max_x_forward = 0; - int32_t max_x_backward = 0; - int32_t dframe = 0; - int32_t frame = 0; - int32_t frame_rate = 0; - int32_t y = 0; - int32_t ptr = 0; - int32_t offset = 0; - int32_t down_vel = 0; - int32_t flag = 0; - int32_t count = 0; -}; - -struct RopeControlData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef RopeControlDataT NativeTableType; - typedef RopeControlDataBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_SEGMENT = 4, - VT_DIRECTION = 6, - VT_ARC_FRONT = 8, - VT_ARC_BACK = 10, - VT_LAST_X = 12, - VT_MAX_X_FORWARD = 14, - VT_MAX_X_BACKWARD = 16, - VT_DFRAME = 18, - VT_FRAME = 20, - VT_FRAME_RATE = 22, - VT_Y = 24, - VT_PTR = 26, - VT_OFFSET = 28, - VT_DOWN_VEL = 30, - VT_FLAG = 32, - VT_COUNT = 34 - }; - int32_t segment() const { - return GetField(VT_SEGMENT, 0); - } - int32_t direction() const { - return GetField(VT_DIRECTION, 0); - } - int32_t arc_front() const { - return GetField(VT_ARC_FRONT, 0); - } - int32_t arc_back() const { - return GetField(VT_ARC_BACK, 0); - } - int32_t last_x() const { - return GetField(VT_LAST_X, 0); - } - int32_t max_x_forward() const { - return GetField(VT_MAX_X_FORWARD, 0); - } - int32_t max_x_backward() const { - return GetField(VT_MAX_X_BACKWARD, 0); - } - int32_t dframe() const { - return GetField(VT_DFRAME, 0); - } - int32_t frame() const { - return GetField(VT_FRAME, 0); - } - int32_t frame_rate() const { - return GetField(VT_FRAME_RATE, 0); - } - int32_t y() const { - return GetField(VT_Y, 0); - } - int32_t ptr() const { - return GetField(VT_PTR, 0); - } - int32_t offset() const { - return GetField(VT_OFFSET, 0); - } - int32_t down_vel() const { - return GetField(VT_DOWN_VEL, 0); - } - int32_t flag() const { - return GetField(VT_FLAG, 0); - } - int32_t count() const { - return GetField(VT_COUNT, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_SEGMENT) && - VerifyField(verifier, VT_DIRECTION) && - VerifyField(verifier, VT_ARC_FRONT) && - VerifyField(verifier, VT_ARC_BACK) && - VerifyField(verifier, VT_LAST_X) && - VerifyField(verifier, VT_MAX_X_FORWARD) && - VerifyField(verifier, VT_MAX_X_BACKWARD) && - VerifyField(verifier, VT_DFRAME) && - VerifyField(verifier, VT_FRAME) && - VerifyField(verifier, VT_FRAME_RATE) && - VerifyField(verifier, VT_Y) && - VerifyField(verifier, VT_PTR) && - VerifyField(verifier, VT_OFFSET) && - VerifyField(verifier, VT_DOWN_VEL) && - VerifyField(verifier, VT_FLAG) && - VerifyField(verifier, VT_COUNT) && - verifier.EndTable(); - } - RopeControlDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(RopeControlDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const RopeControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct RopeControlDataBuilder { - typedef RopeControlData Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_segment(int32_t segment) { - fbb_.AddElement(RopeControlData::VT_SEGMENT, segment, 0); - } - void add_direction(int32_t direction) { - fbb_.AddElement(RopeControlData::VT_DIRECTION, direction, 0); - } - void add_arc_front(int32_t arc_front) { - fbb_.AddElement(RopeControlData::VT_ARC_FRONT, arc_front, 0); - } - void add_arc_back(int32_t arc_back) { - fbb_.AddElement(RopeControlData::VT_ARC_BACK, arc_back, 0); - } - void add_last_x(int32_t last_x) { - fbb_.AddElement(RopeControlData::VT_LAST_X, last_x, 0); - } - void add_max_x_forward(int32_t max_x_forward) { - fbb_.AddElement(RopeControlData::VT_MAX_X_FORWARD, max_x_forward, 0); - } - void add_max_x_backward(int32_t max_x_backward) { - fbb_.AddElement(RopeControlData::VT_MAX_X_BACKWARD, max_x_backward, 0); - } - void add_dframe(int32_t dframe) { - fbb_.AddElement(RopeControlData::VT_DFRAME, dframe, 0); - } - void add_frame(int32_t frame) { - fbb_.AddElement(RopeControlData::VT_FRAME, frame, 0); - } - void add_frame_rate(int32_t frame_rate) { - fbb_.AddElement(RopeControlData::VT_FRAME_RATE, frame_rate, 0); - } - void add_y(int32_t y) { - fbb_.AddElement(RopeControlData::VT_Y, y, 0); - } - void add_ptr(int32_t ptr) { - fbb_.AddElement(RopeControlData::VT_PTR, ptr, 0); - } - void add_offset(int32_t offset) { - fbb_.AddElement(RopeControlData::VT_OFFSET, offset, 0); - } - void add_down_vel(int32_t down_vel) { - fbb_.AddElement(RopeControlData::VT_DOWN_VEL, down_vel, 0); - } - void add_flag(int32_t flag) { - fbb_.AddElement(RopeControlData::VT_FLAG, flag, 0); - } - void add_count(int32_t count) { - fbb_.AddElement(RopeControlData::VT_COUNT, count, 0); - } - explicit RopeControlDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateRopeControlData( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t segment = 0, - int32_t direction = 0, - int32_t arc_front = 0, - int32_t arc_back = 0, - int32_t last_x = 0, - int32_t max_x_forward = 0, - int32_t max_x_backward = 0, - int32_t dframe = 0, - int32_t frame = 0, - int32_t frame_rate = 0, - int32_t y = 0, - int32_t ptr = 0, - int32_t offset = 0, - int32_t down_vel = 0, - int32_t flag = 0, - int32_t count = 0) { - RopeControlDataBuilder builder_(_fbb); - builder_.add_count(count); - builder_.add_flag(flag); - builder_.add_down_vel(down_vel); - builder_.add_offset(offset); - builder_.add_ptr(ptr); - builder_.add_y(y); - builder_.add_frame_rate(frame_rate); - builder_.add_frame(frame); - builder_.add_dframe(dframe); - builder_.add_max_x_backward(max_x_backward); - builder_.add_max_x_forward(max_x_forward); - builder_.add_last_x(last_x); - builder_.add_arc_back(arc_back); - builder_.add_arc_front(arc_front); - builder_.add_direction(direction); - builder_.add_segment(segment); - return builder_.Finish(); -} - -struct RopeControlData::Traits { - using type = RopeControlData; - static auto constexpr Create = CreateRopeControlData; -}; - -flatbuffers::Offset CreateRopeControlData(flatbuffers::FlatBufferBuilder &_fbb, const RopeControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct TightropeControlDataT : public flatbuffers::NativeTable { - typedef TightropeControlData TableType; - float balance = 0.0f; - uint32_t time_on_tightrope = 0; - bool can_dismount = false; - int32_t tightrope_item = 0; -}; - -struct TightropeControlData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef TightropeControlDataT NativeTableType; - typedef TightropeControlDataBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_BALANCE = 4, - VT_TIME_ON_TIGHTROPE = 6, - VT_CAN_DISMOUNT = 8, - VT_TIGHTROPE_ITEM = 10 - }; - float balance() const { - return GetField(VT_BALANCE, 0.0f); - } - uint32_t time_on_tightrope() const { - return GetField(VT_TIME_ON_TIGHTROPE, 0); - } - bool can_dismount() const { - return GetField(VT_CAN_DISMOUNT, 0) != 0; - } - int32_t tightrope_item() const { - return GetField(VT_TIGHTROPE_ITEM, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_BALANCE) && - VerifyField(verifier, VT_TIME_ON_TIGHTROPE) && - VerifyField(verifier, VT_CAN_DISMOUNT) && - VerifyField(verifier, VT_TIGHTROPE_ITEM) && - verifier.EndTable(); - } - TightropeControlDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(TightropeControlDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TightropeControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct TightropeControlDataBuilder { - typedef TightropeControlData Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_balance(float balance) { - fbb_.AddElement(TightropeControlData::VT_BALANCE, balance, 0.0f); - } - void add_time_on_tightrope(uint32_t time_on_tightrope) { - fbb_.AddElement(TightropeControlData::VT_TIME_ON_TIGHTROPE, time_on_tightrope, 0); - } - void add_can_dismount(bool can_dismount) { - fbb_.AddElement(TightropeControlData::VT_CAN_DISMOUNT, static_cast(can_dismount), 0); - } - void add_tightrope_item(int32_t tightrope_item) { - fbb_.AddElement(TightropeControlData::VT_TIGHTROPE_ITEM, tightrope_item, 0); - } - explicit TightropeControlDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateTightropeControlData( - flatbuffers::FlatBufferBuilder &_fbb, - float balance = 0.0f, - uint32_t time_on_tightrope = 0, - bool can_dismount = false, - int32_t tightrope_item = 0) { - TightropeControlDataBuilder builder_(_fbb); - builder_.add_tightrope_item(tightrope_item); - builder_.add_time_on_tightrope(time_on_tightrope); - builder_.add_balance(balance); - builder_.add_can_dismount(can_dismount); - return builder_.Finish(); -} - -struct TightropeControlData::Traits { - using type = TightropeControlData; - static auto constexpr Create = CreateTightropeControlData; -}; - -flatbuffers::Offset CreateTightropeControlData(flatbuffers::FlatBufferBuilder &_fbb, const TightropeControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct SubsuitControlDataT : public flatbuffers::NativeTable { - typedef SubsuitControlData TableType; - int32_t x_rot = 0; - int32_t d_x_rot = 0; - std::vector velocity{}; - int32_t vertical_velocity = 0; - int32_t x_rot_vel = 0; - uint32_t hit_count = 0; -}; - -struct SubsuitControlData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef SubsuitControlDataT NativeTableType; - typedef SubsuitControlDataBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_X_ROT = 4, - VT_D_X_ROT = 6, - VT_VELOCITY = 8, - VT_VERTICAL_VELOCITY = 10, - VT_X_ROT_VEL = 12, - VT_HIT_COUNT = 14 - }; - int32_t x_rot() const { - return GetField(VT_X_ROT, 0); - } - int32_t d_x_rot() const { - return GetField(VT_D_X_ROT, 0); - } - const flatbuffers::Vector *velocity() const { - return GetPointer *>(VT_VELOCITY); - } - int32_t vertical_velocity() const { - return GetField(VT_VERTICAL_VELOCITY, 0); - } - int32_t x_rot_vel() const { - return GetField(VT_X_ROT_VEL, 0); - } - uint32_t hit_count() const { - return GetField(VT_HIT_COUNT, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_X_ROT) && - VerifyField(verifier, VT_D_X_ROT) && - VerifyOffset(verifier, VT_VELOCITY) && - verifier.VerifyVector(velocity()) && - VerifyField(verifier, VT_VERTICAL_VELOCITY) && - VerifyField(verifier, VT_X_ROT_VEL) && - VerifyField(verifier, VT_HIT_COUNT) && - verifier.EndTable(); - } - SubsuitControlDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(SubsuitControlDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubsuitControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct SubsuitControlDataBuilder { - typedef SubsuitControlData Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_x_rot(int32_t x_rot) { - fbb_.AddElement(SubsuitControlData::VT_X_ROT, x_rot, 0); - } - void add_d_x_rot(int32_t d_x_rot) { - fbb_.AddElement(SubsuitControlData::VT_D_X_ROT, d_x_rot, 0); - } - void add_velocity(flatbuffers::Offset> velocity) { - fbb_.AddOffset(SubsuitControlData::VT_VELOCITY, velocity); - } - void add_vertical_velocity(int32_t vertical_velocity) { - fbb_.AddElement(SubsuitControlData::VT_VERTICAL_VELOCITY, vertical_velocity, 0); - } - void add_x_rot_vel(int32_t x_rot_vel) { - fbb_.AddElement(SubsuitControlData::VT_X_ROT_VEL, x_rot_vel, 0); - } - void add_hit_count(uint32_t hit_count) { - fbb_.AddElement(SubsuitControlData::VT_HIT_COUNT, hit_count, 0); - } - explicit SubsuitControlDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateSubsuitControlData( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t x_rot = 0, - int32_t d_x_rot = 0, - flatbuffers::Offset> velocity = 0, - int32_t vertical_velocity = 0, - int32_t x_rot_vel = 0, - uint32_t hit_count = 0) { - SubsuitControlDataBuilder builder_(_fbb); - builder_.add_hit_count(hit_count); - builder_.add_x_rot_vel(x_rot_vel); - builder_.add_vertical_velocity(vertical_velocity); - builder_.add_velocity(velocity); - builder_.add_d_x_rot(d_x_rot); - builder_.add_x_rot(x_rot); - return builder_.Finish(); -} - -struct SubsuitControlData::Traits { - using type = SubsuitControlData; - static auto constexpr Create = CreateSubsuitControlData; -}; - -inline flatbuffers::Offset CreateSubsuitControlDataDirect( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t x_rot = 0, - int32_t d_x_rot = 0, - const std::vector *velocity = nullptr, - int32_t vertical_velocity = 0, - int32_t x_rot_vel = 0, - uint32_t hit_count = 0) { - auto velocity__ = velocity ? _fbb.CreateVector(*velocity) : 0; - return TEN::Save::CreateSubsuitControlData( - _fbb, - x_rot, - d_x_rot, - velocity__, - vertical_velocity, - x_rot_vel, - hit_count); -} - -flatbuffers::Offset CreateSubsuitControlData(flatbuffers::FlatBufferBuilder &_fbb, const SubsuitControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct LaraControlDataT : public flatbuffers::NativeTable { - typedef LaraControlData TableType; - int32_t move_angle = 0; - int32_t turn_rate = 0; - int32_t calculated_jump_velocity = 0; - int32_t jump_direction = 0; - int32_t hand_status = 0; - int32_t water_status = 0; - std::unique_ptr count{}; - bool can_look = false; - bool is_moving = false; - bool keep_low = false; - bool is_low = false; - bool can_climb_ladder = false; - bool is_climbing_ladder = false; - bool can_monkey_swing = false; - bool run_jump_queued = false; - bool locked = false; - std::unique_ptr weapon{}; - std::unique_ptr rope{}; - std::unique_ptr tightrope{}; - std::unique_ptr subsuit{}; -}; - -struct LaraControlData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef LaraControlDataT NativeTableType; - typedef LaraControlDataBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_MOVE_ANGLE = 4, - VT_TURN_RATE = 6, - VT_CALCULATED_JUMP_VELOCITY = 8, - VT_JUMP_DIRECTION = 10, - VT_HAND_STATUS = 12, - VT_WATER_STATUS = 14, - VT_COUNT = 16, - VT_CAN_LOOK = 18, - VT_IS_MOVING = 20, - VT_KEEP_LOW = 22, - VT_IS_LOW = 24, - VT_CAN_CLIMB_LADDER = 26, - VT_IS_CLIMBING_LADDER = 28, - VT_CAN_MONKEY_SWING = 30, - VT_RUN_JUMP_QUEUED = 32, - VT_LOCKED = 34, - VT_WEAPON = 36, - VT_ROPE = 38, - VT_TIGHTROPE = 40, - VT_SUBSUIT = 42 - }; - int32_t move_angle() const { - return GetField(VT_MOVE_ANGLE, 0); - } - int32_t turn_rate() const { - return GetField(VT_TURN_RATE, 0); - } - int32_t calculated_jump_velocity() const { - return GetField(VT_CALCULATED_JUMP_VELOCITY, 0); - } - int32_t jump_direction() const { - return GetField(VT_JUMP_DIRECTION, 0); - } - int32_t hand_status() const { - return GetField(VT_HAND_STATUS, 0); - } - int32_t water_status() const { - return GetField(VT_WATER_STATUS, 0); - } - const TEN::Save::LaraCountData *count() const { - return GetPointer(VT_COUNT); - } - bool can_look() const { - return GetField(VT_CAN_LOOK, 0) != 0; - } - bool is_moving() const { - return GetField(VT_IS_MOVING, 0) != 0; - } - bool keep_low() const { - return GetField(VT_KEEP_LOW, 0) != 0; - } - bool is_low() const { - return GetField(VT_IS_LOW, 0) != 0; - } - bool can_climb_ladder() const { - return GetField(VT_CAN_CLIMB_LADDER, 0) != 0; - } - bool is_climbing_ladder() const { - return GetField(VT_IS_CLIMBING_LADDER, 0) != 0; - } - bool can_monkey_swing() const { - return GetField(VT_CAN_MONKEY_SWING, 0) != 0; - } - bool run_jump_queued() const { - return GetField(VT_RUN_JUMP_QUEUED, 0) != 0; - } - bool locked() const { - return GetField(VT_LOCKED, 0) != 0; - } - const TEN::Save::WeaponControlData *weapon() const { - return GetPointer(VT_WEAPON); - } - const TEN::Save::RopeControlData *rope() const { - return GetPointer(VT_ROPE); - } - const TEN::Save::TightropeControlData *tightrope() const { - return GetPointer(VT_TIGHTROPE); - } - const TEN::Save::SubsuitControlData *subsuit() const { - return GetPointer(VT_SUBSUIT); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_MOVE_ANGLE) && - VerifyField(verifier, VT_TURN_RATE) && - VerifyField(verifier, VT_CALCULATED_JUMP_VELOCITY) && - VerifyField(verifier, VT_JUMP_DIRECTION) && - VerifyField(verifier, VT_HAND_STATUS) && - VerifyField(verifier, VT_WATER_STATUS) && - VerifyOffset(verifier, VT_COUNT) && - verifier.VerifyTable(count()) && - VerifyField(verifier, VT_CAN_LOOK) && - VerifyField(verifier, VT_IS_MOVING) && - VerifyField(verifier, VT_KEEP_LOW) && - VerifyField(verifier, VT_IS_LOW) && - VerifyField(verifier, VT_CAN_CLIMB_LADDER) && - VerifyField(verifier, VT_IS_CLIMBING_LADDER) && - VerifyField(verifier, VT_CAN_MONKEY_SWING) && - VerifyField(verifier, VT_RUN_JUMP_QUEUED) && - VerifyField(verifier, VT_LOCKED) && - VerifyOffset(verifier, VT_WEAPON) && - verifier.VerifyTable(weapon()) && - VerifyOffset(verifier, VT_ROPE) && - verifier.VerifyTable(rope()) && - VerifyOffset(verifier, VT_TIGHTROPE) && - verifier.VerifyTable(tightrope()) && - VerifyOffset(verifier, VT_SUBSUIT) && - verifier.VerifyTable(subsuit()) && - verifier.EndTable(); - } - LaraControlDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(LaraControlDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct LaraControlDataBuilder { - typedef LaraControlData Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_move_angle(int32_t move_angle) { - fbb_.AddElement(LaraControlData::VT_MOVE_ANGLE, move_angle, 0); - } - void add_turn_rate(int32_t turn_rate) { - fbb_.AddElement(LaraControlData::VT_TURN_RATE, turn_rate, 0); - } - void add_calculated_jump_velocity(int32_t calculated_jump_velocity) { - fbb_.AddElement(LaraControlData::VT_CALCULATED_JUMP_VELOCITY, calculated_jump_velocity, 0); - } - void add_jump_direction(int32_t jump_direction) { - fbb_.AddElement(LaraControlData::VT_JUMP_DIRECTION, jump_direction, 0); - } - void add_hand_status(int32_t hand_status) { - fbb_.AddElement(LaraControlData::VT_HAND_STATUS, hand_status, 0); - } - void add_water_status(int32_t water_status) { - fbb_.AddElement(LaraControlData::VT_WATER_STATUS, water_status, 0); - } - void add_count(flatbuffers::Offset count) { - fbb_.AddOffset(LaraControlData::VT_COUNT, count); - } - void add_can_look(bool can_look) { - fbb_.AddElement(LaraControlData::VT_CAN_LOOK, static_cast(can_look), 0); - } - void add_is_moving(bool is_moving) { - fbb_.AddElement(LaraControlData::VT_IS_MOVING, static_cast(is_moving), 0); - } - void add_keep_low(bool keep_low) { - fbb_.AddElement(LaraControlData::VT_KEEP_LOW, static_cast(keep_low), 0); - } - void add_is_low(bool is_low) { - fbb_.AddElement(LaraControlData::VT_IS_LOW, static_cast(is_low), 0); - } - void add_can_climb_ladder(bool can_climb_ladder) { - fbb_.AddElement(LaraControlData::VT_CAN_CLIMB_LADDER, static_cast(can_climb_ladder), 0); - } - void add_is_climbing_ladder(bool is_climbing_ladder) { - fbb_.AddElement(LaraControlData::VT_IS_CLIMBING_LADDER, static_cast(is_climbing_ladder), 0); - } - void add_can_monkey_swing(bool can_monkey_swing) { - fbb_.AddElement(LaraControlData::VT_CAN_MONKEY_SWING, static_cast(can_monkey_swing), 0); - } - void add_run_jump_queued(bool run_jump_queued) { - fbb_.AddElement(LaraControlData::VT_RUN_JUMP_QUEUED, static_cast(run_jump_queued), 0); - } - void add_locked(bool locked) { - fbb_.AddElement(LaraControlData::VT_LOCKED, static_cast(locked), 0); - } - void add_weapon(flatbuffers::Offset weapon) { - fbb_.AddOffset(LaraControlData::VT_WEAPON, weapon); - } - void add_rope(flatbuffers::Offset rope) { - fbb_.AddOffset(LaraControlData::VT_ROPE, rope); - } - void add_tightrope(flatbuffers::Offset tightrope) { - fbb_.AddOffset(LaraControlData::VT_TIGHTROPE, tightrope); - } - void add_subsuit(flatbuffers::Offset subsuit) { - fbb_.AddOffset(LaraControlData::VT_SUBSUIT, subsuit); - } - explicit LaraControlDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateLaraControlData( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t move_angle = 0, - int32_t turn_rate = 0, - int32_t calculated_jump_velocity = 0, - int32_t jump_direction = 0, - int32_t hand_status = 0, - int32_t water_status = 0, - flatbuffers::Offset count = 0, - bool can_look = false, - bool is_moving = false, - bool keep_low = false, - bool is_low = false, - bool can_climb_ladder = false, - bool is_climbing_ladder = false, - bool can_monkey_swing = false, - bool run_jump_queued = false, - bool locked = false, - flatbuffers::Offset weapon = 0, - flatbuffers::Offset rope = 0, - flatbuffers::Offset tightrope = 0, - flatbuffers::Offset subsuit = 0) { - LaraControlDataBuilder builder_(_fbb); - builder_.add_subsuit(subsuit); - builder_.add_tightrope(tightrope); - builder_.add_rope(rope); - builder_.add_weapon(weapon); - builder_.add_count(count); - builder_.add_water_status(water_status); - builder_.add_hand_status(hand_status); - builder_.add_jump_direction(jump_direction); - builder_.add_calculated_jump_velocity(calculated_jump_velocity); - builder_.add_turn_rate(turn_rate); - builder_.add_move_angle(move_angle); - builder_.add_locked(locked); - builder_.add_run_jump_queued(run_jump_queued); - builder_.add_can_monkey_swing(can_monkey_swing); - builder_.add_is_climbing_ladder(is_climbing_ladder); - builder_.add_can_climb_ladder(can_climb_ladder); - builder_.add_is_low(is_low); - builder_.add_keep_low(keep_low); - builder_.add_is_moving(is_moving); - builder_.add_can_look(can_look); - return builder_.Finish(); -} - -struct LaraControlData::Traits { - using type = LaraControlData; - static auto constexpr Create = CreateLaraControlData; -}; - -flatbuffers::Offset CreateLaraControlData(flatbuffers::FlatBufferBuilder &_fbb, const LaraControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct PlayerEffectDataT : public flatbuffers::NativeTable { - typedef PlayerEffectData TableType; - std::vector bubble_nodes{}; - std::vector drip_nodes{}; -}; - -struct PlayerEffectData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef PlayerEffectDataT NativeTableType; - typedef PlayerEffectDataBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_BUBBLE_NODES = 4, - VT_DRIP_NODES = 6 - }; - const flatbuffers::Vector *bubble_nodes() const { - return GetPointer *>(VT_BUBBLE_NODES); - } - const flatbuffers::Vector *drip_nodes() const { - return GetPointer *>(VT_DRIP_NODES); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_BUBBLE_NODES) && - verifier.VerifyVector(bubble_nodes()) && - VerifyOffset(verifier, VT_DRIP_NODES) && - verifier.VerifyVector(drip_nodes()) && - verifier.EndTable(); - } - PlayerEffectDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(PlayerEffectDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const PlayerEffectDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct PlayerEffectDataBuilder { - typedef PlayerEffectData Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_bubble_nodes(flatbuffers::Offset> bubble_nodes) { - fbb_.AddOffset(PlayerEffectData::VT_BUBBLE_NODES, bubble_nodes); - } - void add_drip_nodes(flatbuffers::Offset> drip_nodes) { - fbb_.AddOffset(PlayerEffectData::VT_DRIP_NODES, drip_nodes); - } - explicit PlayerEffectDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreatePlayerEffectData( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset> bubble_nodes = 0, - flatbuffers::Offset> drip_nodes = 0) { - PlayerEffectDataBuilder builder_(_fbb); - builder_.add_drip_nodes(drip_nodes); - builder_.add_bubble_nodes(bubble_nodes); - return builder_.Finish(); -} - -struct PlayerEffectData::Traits { - using type = PlayerEffectData; - static auto constexpr Create = CreatePlayerEffectData; -}; - -inline flatbuffers::Offset CreatePlayerEffectDataDirect( - flatbuffers::FlatBufferBuilder &_fbb, - const std::vector *bubble_nodes = nullptr, - const std::vector *drip_nodes = nullptr) { - auto bubble_nodes__ = bubble_nodes ? _fbb.CreateVector(*bubble_nodes) : 0; - auto drip_nodes__ = drip_nodes ? _fbb.CreateVector(*drip_nodes) : 0; - return TEN::Save::CreatePlayerEffectData( - _fbb, - bubble_nodes__, - drip_nodes__); -} - -flatbuffers::Offset CreatePlayerEffectData(flatbuffers::FlatBufferBuilder &_fbb, const PlayerEffectDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct PlayerStatusDataT : public flatbuffers::NativeTable { - typedef PlayerStatusData TableType; - int32_t air = 0; - int32_t exposure = 0; - int32_t poison = 0; - int32_t stamina = 0; -}; - -struct PlayerStatusData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef PlayerStatusDataT NativeTableType; - typedef PlayerStatusDataBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_AIR = 4, - VT_EXPOSURE = 6, - VT_POISON = 8, - VT_STAMINA = 10 - }; - int32_t air() const { - return GetField(VT_AIR, 0); - } - int32_t exposure() const { - return GetField(VT_EXPOSURE, 0); - } - int32_t poison() const { - return GetField(VT_POISON, 0); - } - int32_t stamina() const { - return GetField(VT_STAMINA, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_AIR) && - VerifyField(verifier, VT_EXPOSURE) && - VerifyField(verifier, VT_POISON) && - VerifyField(verifier, VT_STAMINA) && - verifier.EndTable(); - } - PlayerStatusDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(PlayerStatusDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const PlayerStatusDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct PlayerStatusDataBuilder { - typedef PlayerStatusData Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_air(int32_t air) { - fbb_.AddElement(PlayerStatusData::VT_AIR, air, 0); - } - void add_exposure(int32_t exposure) { - fbb_.AddElement(PlayerStatusData::VT_EXPOSURE, exposure, 0); - } - void add_poison(int32_t poison) { - fbb_.AddElement(PlayerStatusData::VT_POISON, poison, 0); - } - void add_stamina(int32_t stamina) { - fbb_.AddElement(PlayerStatusData::VT_STAMINA, stamina, 0); - } - explicit PlayerStatusDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreatePlayerStatusData( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t air = 0, - int32_t exposure = 0, - int32_t poison = 0, - int32_t stamina = 0) { - PlayerStatusDataBuilder builder_(_fbb); - builder_.add_stamina(stamina); - builder_.add_poison(poison); - builder_.add_exposure(exposure); - builder_.add_air(air); - return builder_.Finish(); -} - -struct PlayerStatusData::Traits { - using type = PlayerStatusData; - static auto constexpr Create = CreatePlayerStatusData; -}; - -flatbuffers::Offset CreatePlayerStatusData(flatbuffers::FlatBufferBuilder &_fbb, const PlayerStatusDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct LaraT : public flatbuffers::NativeTable { - typedef Lara TableType; - std::unique_ptr effect{}; - std::unique_ptr status{}; - int32_t item_number = 0; - std::unique_ptr control{}; - std::unique_ptr inventory{}; - std::vector> weapons{}; - std::unique_ptr flare{}; - std::unique_ptr torch{}; - std::unique_ptr extra_head_rot{}; - std::unique_ptr extra_torso_rot{}; - int32_t water_current_active = 0; - std::unique_ptr water_current_pull{}; - std::unique_ptr left_arm{}; - std::unique_ptr right_arm{}; - std::vector target_arm_angles{}; - int32_t target_entity_number = 0; - int32_t vehicle = 0; - int32_t extra_anim = 0; - int32_t hit_frame = 0; - int32_t hit_direction = 0; - int32_t projected_floor_height = 0; - int32_t target_facing_angle = 0; - int32_t water_surface_dist = 0; - int32_t interacted_item = 0; - std::unique_ptr next_corner_pose{}; - int32_t burn_type = 0; - uint32_t burn_count = 0; - bool burn = false; - int32_t burn_blue = 0; - bool burn_smoke = false; - int32_t location = 0; - int32_t highest_location = 0; - int32_t location_pad = 0; -}; - -struct Lara FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef LaraT NativeTableType; - typedef LaraBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_EFFECT = 4, - VT_STATUS = 6, - VT_ITEM_NUMBER = 8, - VT_CONTROL = 10, - VT_INVENTORY = 12, - VT_WEAPONS = 14, - VT_FLARE = 16, - VT_TORCH = 18, - VT_EXTRA_HEAD_ROT = 20, - VT_EXTRA_TORSO_ROT = 22, - VT_WATER_CURRENT_ACTIVE = 24, - VT_WATER_CURRENT_PULL = 26, - VT_LEFT_ARM = 28, - VT_RIGHT_ARM = 30, - VT_TARGET_ARM_ANGLES = 32, - VT_TARGET_ENTITY_NUMBER = 34, - VT_VEHICLE = 36, - VT_EXTRA_ANIM = 38, - VT_HIT_FRAME = 40, - VT_HIT_DIRECTION = 42, - VT_PROJECTED_FLOOR_HEIGHT = 44, - VT_TARGET_FACING_ANGLE = 46, - VT_WATER_SURFACE_DIST = 48, - VT_INTERACTED_ITEM = 50, - VT_NEXT_CORNER_POSE = 52, - VT_BURN_TYPE = 54, - VT_BURN_COUNT = 56, - VT_BURN = 58, - VT_BURN_BLUE = 60, - VT_BURN_SMOKE = 62, - VT_LOCATION = 64, - VT_HIGHEST_LOCATION = 66, - VT_LOCATION_PAD = 68 - }; - const TEN::Save::PlayerEffectData *effect() const { - return GetPointer(VT_EFFECT); - } - const TEN::Save::PlayerStatusData *status() const { - return GetPointer(VT_STATUS); - } - int32_t item_number() const { - return GetField(VT_ITEM_NUMBER, 0); - } - const TEN::Save::LaraControlData *control() const { - return GetPointer(VT_CONTROL); - } - const TEN::Save::LaraInventoryData *inventory() const { - return GetPointer(VT_INVENTORY); - } - const flatbuffers::Vector> *weapons() const { - return GetPointer> *>(VT_WEAPONS); - } - const TEN::Save::FlareData *flare() const { - return GetPointer(VT_FLARE); - } - const TEN::Save::TorchData *torch() const { - return GetPointer(VT_TORCH); - } - const TEN::Save::Vector3 *extra_head_rot() const { - return GetStruct(VT_EXTRA_HEAD_ROT); - } - const TEN::Save::Vector3 *extra_torso_rot() const { - return GetStruct(VT_EXTRA_TORSO_ROT); - } - int32_t water_current_active() const { - return GetField(VT_WATER_CURRENT_ACTIVE, 0); - } - const TEN::Save::Vector3 *water_current_pull() const { - return GetStruct(VT_WATER_CURRENT_PULL); - } - const TEN::Save::ArmInfo *left_arm() const { - return GetPointer(VT_LEFT_ARM); - } - const TEN::Save::ArmInfo *right_arm() const { - return GetPointer(VT_RIGHT_ARM); - } - const flatbuffers::Vector *target_arm_angles() const { - return GetPointer *>(VT_TARGET_ARM_ANGLES); - } - int32_t target_entity_number() const { - return GetField(VT_TARGET_ENTITY_NUMBER, 0); - } - int32_t vehicle() const { - return GetField(VT_VEHICLE, 0); - } - int32_t extra_anim() const { - return GetField(VT_EXTRA_ANIM, 0); - } - int32_t hit_frame() const { - return GetField(VT_HIT_FRAME, 0); - } - int32_t hit_direction() const { - return GetField(VT_HIT_DIRECTION, 0); - } - int32_t projected_floor_height() const { - return GetField(VT_PROJECTED_FLOOR_HEIGHT, 0); - } - int32_t target_facing_angle() const { - return GetField(VT_TARGET_FACING_ANGLE, 0); - } - int32_t water_surface_dist() const { - return GetField(VT_WATER_SURFACE_DIST, 0); - } - int32_t interacted_item() const { - return GetField(VT_INTERACTED_ITEM, 0); - } - const TEN::Save::Position *next_corner_pose() const { - return GetStruct(VT_NEXT_CORNER_POSE); - } - int32_t burn_type() const { - return GetField(VT_BURN_TYPE, 0); - } - uint32_t burn_count() const { - return GetField(VT_BURN_COUNT, 0); - } - bool burn() const { - return GetField(VT_BURN, 0) != 0; - } - int32_t burn_blue() const { - return GetField(VT_BURN_BLUE, 0); - } - bool burn_smoke() const { - return GetField(VT_BURN_SMOKE, 0) != 0; - } - int32_t location() const { - return GetField(VT_LOCATION, 0); - } - int32_t highest_location() const { - return GetField(VT_HIGHEST_LOCATION, 0); - } - int32_t location_pad() const { - return GetField(VT_LOCATION_PAD, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_EFFECT) && - verifier.VerifyTable(effect()) && - VerifyOffset(verifier, VT_STATUS) && - verifier.VerifyTable(status()) && - VerifyField(verifier, VT_ITEM_NUMBER) && - VerifyOffset(verifier, VT_CONTROL) && - verifier.VerifyTable(control()) && - VerifyOffset(verifier, VT_INVENTORY) && - verifier.VerifyTable(inventory()) && - VerifyOffset(verifier, VT_WEAPONS) && - verifier.VerifyVector(weapons()) && - verifier.VerifyVectorOfTables(weapons()) && - VerifyOffset(verifier, VT_FLARE) && - verifier.VerifyTable(flare()) && - VerifyOffset(verifier, VT_TORCH) && - verifier.VerifyTable(torch()) && - VerifyField(verifier, VT_EXTRA_HEAD_ROT) && - VerifyField(verifier, VT_EXTRA_TORSO_ROT) && - VerifyField(verifier, VT_WATER_CURRENT_ACTIVE) && - VerifyField(verifier, VT_WATER_CURRENT_PULL) && - VerifyOffset(verifier, VT_LEFT_ARM) && - verifier.VerifyTable(left_arm()) && - VerifyOffset(verifier, VT_RIGHT_ARM) && - verifier.VerifyTable(right_arm()) && - VerifyOffset(verifier, VT_TARGET_ARM_ANGLES) && - verifier.VerifyVector(target_arm_angles()) && - VerifyField(verifier, VT_TARGET_ENTITY_NUMBER) && - VerifyField(verifier, VT_VEHICLE) && - VerifyField(verifier, VT_EXTRA_ANIM) && - VerifyField(verifier, VT_HIT_FRAME) && - VerifyField(verifier, VT_HIT_DIRECTION) && - VerifyField(verifier, VT_PROJECTED_FLOOR_HEIGHT) && - VerifyField(verifier, VT_TARGET_FACING_ANGLE) && - VerifyField(verifier, VT_WATER_SURFACE_DIST) && - VerifyField(verifier, VT_INTERACTED_ITEM) && - VerifyField(verifier, VT_NEXT_CORNER_POSE) && - VerifyField(verifier, VT_BURN_TYPE) && - VerifyField(verifier, VT_BURN_COUNT) && - VerifyField(verifier, VT_BURN) && - VerifyField(verifier, VT_BURN_BLUE) && - VerifyField(verifier, VT_BURN_SMOKE) && - VerifyField(verifier, VT_LOCATION) && - VerifyField(verifier, VT_HIGHEST_LOCATION) && - VerifyField(verifier, VT_LOCATION_PAD) && - verifier.EndTable(); - } - LaraT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(LaraT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct LaraBuilder { - typedef Lara Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_effect(flatbuffers::Offset effect) { - fbb_.AddOffset(Lara::VT_EFFECT, effect); - } - void add_status(flatbuffers::Offset status) { - fbb_.AddOffset(Lara::VT_STATUS, status); - } - void add_item_number(int32_t item_number) { - fbb_.AddElement(Lara::VT_ITEM_NUMBER, item_number, 0); - } - void add_control(flatbuffers::Offset control) { - fbb_.AddOffset(Lara::VT_CONTROL, control); - } - void add_inventory(flatbuffers::Offset inventory) { - fbb_.AddOffset(Lara::VT_INVENTORY, inventory); - } - void add_weapons(flatbuffers::Offset>> weapons) { - fbb_.AddOffset(Lara::VT_WEAPONS, weapons); - } - void add_flare(flatbuffers::Offset flare) { - fbb_.AddOffset(Lara::VT_FLARE, flare); - } - void add_torch(flatbuffers::Offset torch) { - fbb_.AddOffset(Lara::VT_TORCH, torch); - } - void add_extra_head_rot(const TEN::Save::Vector3 *extra_head_rot) { - fbb_.AddStruct(Lara::VT_EXTRA_HEAD_ROT, extra_head_rot); - } - void add_extra_torso_rot(const TEN::Save::Vector3 *extra_torso_rot) { - fbb_.AddStruct(Lara::VT_EXTRA_TORSO_ROT, extra_torso_rot); - } - void add_water_current_active(int32_t water_current_active) { - fbb_.AddElement(Lara::VT_WATER_CURRENT_ACTIVE, water_current_active, 0); - } - void add_water_current_pull(const TEN::Save::Vector3 *water_current_pull) { - fbb_.AddStruct(Lara::VT_WATER_CURRENT_PULL, water_current_pull); - } - void add_left_arm(flatbuffers::Offset left_arm) { - fbb_.AddOffset(Lara::VT_LEFT_ARM, left_arm); - } - void add_right_arm(flatbuffers::Offset right_arm) { - fbb_.AddOffset(Lara::VT_RIGHT_ARM, right_arm); - } - void add_target_arm_angles(flatbuffers::Offset> target_arm_angles) { - fbb_.AddOffset(Lara::VT_TARGET_ARM_ANGLES, target_arm_angles); - } - void add_target_entity_number(int32_t target_entity_number) { - fbb_.AddElement(Lara::VT_TARGET_ENTITY_NUMBER, target_entity_number, 0); - } - void add_vehicle(int32_t vehicle) { - fbb_.AddElement(Lara::VT_VEHICLE, vehicle, 0); - } - void add_extra_anim(int32_t extra_anim) { - fbb_.AddElement(Lara::VT_EXTRA_ANIM, extra_anim, 0); - } - void add_hit_frame(int32_t hit_frame) { - fbb_.AddElement(Lara::VT_HIT_FRAME, hit_frame, 0); - } - void add_hit_direction(int32_t hit_direction) { - fbb_.AddElement(Lara::VT_HIT_DIRECTION, hit_direction, 0); - } - void add_projected_floor_height(int32_t projected_floor_height) { - fbb_.AddElement(Lara::VT_PROJECTED_FLOOR_HEIGHT, projected_floor_height, 0); - } - void add_target_facing_angle(int32_t target_facing_angle) { - fbb_.AddElement(Lara::VT_TARGET_FACING_ANGLE, target_facing_angle, 0); - } - void add_water_surface_dist(int32_t water_surface_dist) { - fbb_.AddElement(Lara::VT_WATER_SURFACE_DIST, water_surface_dist, 0); - } - void add_interacted_item(int32_t interacted_item) { - fbb_.AddElement(Lara::VT_INTERACTED_ITEM, interacted_item, 0); - } - void add_next_corner_pose(const TEN::Save::Position *next_corner_pose) { - fbb_.AddStruct(Lara::VT_NEXT_CORNER_POSE, next_corner_pose); - } - void add_burn_type(int32_t burn_type) { - fbb_.AddElement(Lara::VT_BURN_TYPE, burn_type, 0); - } - void add_burn_count(uint32_t burn_count) { - fbb_.AddElement(Lara::VT_BURN_COUNT, burn_count, 0); - } - void add_burn(bool burn) { - fbb_.AddElement(Lara::VT_BURN, static_cast(burn), 0); - } - void add_burn_blue(int32_t burn_blue) { - fbb_.AddElement(Lara::VT_BURN_BLUE, burn_blue, 0); - } - void add_burn_smoke(bool burn_smoke) { - fbb_.AddElement(Lara::VT_BURN_SMOKE, static_cast(burn_smoke), 0); - } - void add_location(int32_t location) { - fbb_.AddElement(Lara::VT_LOCATION, location, 0); - } - void add_highest_location(int32_t highest_location) { - fbb_.AddElement(Lara::VT_HIGHEST_LOCATION, highest_location, 0); - } - void add_location_pad(int32_t location_pad) { - fbb_.AddElement(Lara::VT_LOCATION_PAD, location_pad, 0); - } - explicit LaraBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateLara( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset effect = 0, - flatbuffers::Offset status = 0, - int32_t item_number = 0, - flatbuffers::Offset control = 0, - flatbuffers::Offset inventory = 0, - flatbuffers::Offset>> weapons = 0, - flatbuffers::Offset flare = 0, - flatbuffers::Offset torch = 0, - const TEN::Save::Vector3 *extra_head_rot = 0, - const TEN::Save::Vector3 *extra_torso_rot = 0, - int32_t water_current_active = 0, - const TEN::Save::Vector3 *water_current_pull = 0, - flatbuffers::Offset left_arm = 0, - flatbuffers::Offset right_arm = 0, - flatbuffers::Offset> target_arm_angles = 0, - int32_t target_entity_number = 0, - int32_t vehicle = 0, - int32_t extra_anim = 0, - int32_t hit_frame = 0, - int32_t hit_direction = 0, - int32_t projected_floor_height = 0, - int32_t target_facing_angle = 0, - int32_t water_surface_dist = 0, - int32_t interacted_item = 0, - const TEN::Save::Position *next_corner_pose = 0, - int32_t burn_type = 0, - uint32_t burn_count = 0, - bool burn = false, - int32_t burn_blue = 0, - bool burn_smoke = false, - int32_t location = 0, - int32_t highest_location = 0, - int32_t location_pad = 0) { - LaraBuilder builder_(_fbb); - builder_.add_location_pad(location_pad); - builder_.add_highest_location(highest_location); - builder_.add_location(location); - builder_.add_burn_blue(burn_blue); - builder_.add_burn_count(burn_count); - builder_.add_burn_type(burn_type); - builder_.add_next_corner_pose(next_corner_pose); - builder_.add_interacted_item(interacted_item); - builder_.add_water_surface_dist(water_surface_dist); - builder_.add_target_facing_angle(target_facing_angle); - builder_.add_projected_floor_height(projected_floor_height); - builder_.add_hit_direction(hit_direction); - builder_.add_hit_frame(hit_frame); - builder_.add_extra_anim(extra_anim); - builder_.add_vehicle(vehicle); - builder_.add_target_entity_number(target_entity_number); - builder_.add_target_arm_angles(target_arm_angles); - builder_.add_right_arm(right_arm); - builder_.add_left_arm(left_arm); - builder_.add_water_current_pull(water_current_pull); - builder_.add_water_current_active(water_current_active); - builder_.add_extra_torso_rot(extra_torso_rot); - builder_.add_extra_head_rot(extra_head_rot); - builder_.add_torch(torch); - builder_.add_flare(flare); - builder_.add_weapons(weapons); - builder_.add_inventory(inventory); - builder_.add_control(control); - builder_.add_item_number(item_number); - builder_.add_status(status); - builder_.add_effect(effect); - builder_.add_burn_smoke(burn_smoke); - builder_.add_burn(burn); - return builder_.Finish(); -} - -struct Lara::Traits { - using type = Lara; - static auto constexpr Create = CreateLara; -}; - -inline flatbuffers::Offset CreateLaraDirect( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset effect = 0, - flatbuffers::Offset status = 0, - int32_t item_number = 0, - flatbuffers::Offset control = 0, - flatbuffers::Offset inventory = 0, - const std::vector> *weapons = nullptr, - flatbuffers::Offset flare = 0, - flatbuffers::Offset torch = 0, - const TEN::Save::Vector3 *extra_head_rot = 0, - const TEN::Save::Vector3 *extra_torso_rot = 0, - int32_t water_current_active = 0, - const TEN::Save::Vector3 *water_current_pull = 0, - flatbuffers::Offset left_arm = 0, - flatbuffers::Offset right_arm = 0, - const std::vector *target_arm_angles = nullptr, - int32_t target_entity_number = 0, - int32_t vehicle = 0, - int32_t extra_anim = 0, - int32_t hit_frame = 0, - int32_t hit_direction = 0, - int32_t projected_floor_height = 0, - int32_t target_facing_angle = 0, - int32_t water_surface_dist = 0, - int32_t interacted_item = 0, - const TEN::Save::Position *next_corner_pose = 0, - int32_t burn_type = 0, - uint32_t burn_count = 0, - bool burn = false, - int32_t burn_blue = 0, - bool burn_smoke = false, - int32_t location = 0, - int32_t highest_location = 0, - int32_t location_pad = 0) { - auto weapons__ = weapons ? _fbb.CreateVector>(*weapons) : 0; - auto target_arm_angles__ = target_arm_angles ? _fbb.CreateVector(*target_arm_angles) : 0; - return TEN::Save::CreateLara( - _fbb, - effect, - status, - item_number, - control, - inventory, - weapons__, - flare, - torch, - extra_head_rot, - extra_torso_rot, - water_current_active, - water_current_pull, - left_arm, - right_arm, - target_arm_angles__, - target_entity_number, - vehicle, - extra_anim, - hit_frame, - hit_direction, - projected_floor_height, - target_facing_angle, - water_surface_dist, - interacted_item, - next_corner_pose, - burn_type, - burn_count, - burn, - burn_blue, - burn_smoke, - location, - highest_location, - location_pad); -} - -flatbuffers::Offset CreateLara(flatbuffers::FlatBufferBuilder &_fbb, const LaraT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct FixedCameraT : public flatbuffers::NativeTable { - typedef FixedCamera TableType; - int32_t flags = 0; -}; - -struct FixedCamera FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef FixedCameraT NativeTableType; - typedef FixedCameraBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_FLAGS = 4 - }; - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_FLAGS) && - verifier.EndTable(); - } - FixedCameraT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(FixedCameraT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const FixedCameraT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct FixedCameraBuilder { - typedef FixedCamera Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_flags(int32_t flags) { - fbb_.AddElement(FixedCamera::VT_FLAGS, flags, 0); - } - explicit FixedCameraBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateFixedCamera( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t flags = 0) { - FixedCameraBuilder builder_(_fbb); - builder_.add_flags(flags); - return builder_.Finish(); -} - -struct FixedCamera::Traits { - using type = FixedCamera; - static auto constexpr Create = CreateFixedCamera; -}; - -flatbuffers::Offset CreateFixedCamera(flatbuffers::FlatBufferBuilder &_fbb, const FixedCameraT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct FlyByCameraT : public flatbuffers::NativeTable { - typedef FlyByCamera TableType; - int32_t flags = 0; -}; - -struct FlyByCamera FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef FlyByCameraT NativeTableType; - typedef FlyByCameraBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_FLAGS = 4 - }; - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_FLAGS) && - verifier.EndTable(); - } - FlyByCameraT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(FlyByCameraT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const FlyByCameraT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct FlyByCameraBuilder { - typedef FlyByCamera Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_flags(int32_t flags) { - fbb_.AddElement(FlyByCamera::VT_FLAGS, flags, 0); - } - explicit FlyByCameraBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateFlyByCamera( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t flags = 0) { - FlyByCameraBuilder builder_(_fbb); - builder_.add_flags(flags); - return builder_.Finish(); -} - -struct FlyByCamera::Traits { - using type = FlyByCamera; - static auto constexpr Create = CreateFlyByCamera; -}; - -flatbuffers::Offset CreateFlyByCamera(flatbuffers::FlatBufferBuilder &_fbb, const FlyByCameraT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct SinkT : public flatbuffers::NativeTable { - typedef Sink TableType; - int32_t flags = 0; -}; - -struct Sink FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef SinkT NativeTableType; - typedef SinkBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_FLAGS = 4 - }; - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_FLAGS) && - verifier.EndTable(); - } - SinkT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(SinkT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SinkT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct SinkBuilder { - typedef Sink Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_flags(int32_t flags) { - fbb_.AddElement(Sink::VT_FLAGS, flags, 0); - } - explicit SinkBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateSink( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t flags = 0) { - SinkBuilder builder_(_fbb); - builder_.add_flags(flags); - return builder_.Finish(); -} - -struct Sink::Traits { - using type = Sink; - static auto constexpr Create = CreateSink; -}; - -flatbuffers::Offset CreateSink(flatbuffers::FlatBufferBuilder &_fbb, const SinkT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct StaticMeshInfoT : public flatbuffers::NativeTable { - typedef StaticMeshInfo TableType; - int32_t number = 0; - int32_t room_number = 0; - std::unique_ptr pose{}; - float scale = 0.0f; - std::unique_ptr color{}; - int32_t hit_points = 0; - int32_t flags = 0; -}; - -struct StaticMeshInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef StaticMeshInfoT NativeTableType; - typedef StaticMeshInfoBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_NUMBER = 4, - VT_ROOM_NUMBER = 6, - VT_POSE = 8, - VT_SCALE = 10, - VT_COLOR = 12, - VT_HIT_POINTS = 14, - VT_FLAGS = 16 - }; - int32_t number() const { - return GetField(VT_NUMBER, 0); - } - int32_t room_number() const { - return GetField(VT_ROOM_NUMBER, 0); - } - const TEN::Save::Position *pose() const { - return GetStruct(VT_POSE); - } - float scale() const { - return GetField(VT_SCALE, 0.0f); - } - const TEN::Save::Vector4 *color() const { - return GetStruct(VT_COLOR); - } - int32_t hit_points() const { - return GetField(VT_HIT_POINTS, 0); - } - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_NUMBER) && - VerifyField(verifier, VT_ROOM_NUMBER) && - VerifyField(verifier, VT_POSE) && - VerifyField(verifier, VT_SCALE) && - VerifyField(verifier, VT_COLOR) && - VerifyField(verifier, VT_HIT_POINTS) && - VerifyField(verifier, VT_FLAGS) && - verifier.EndTable(); - } - StaticMeshInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(StaticMeshInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const StaticMeshInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct StaticMeshInfoBuilder { - typedef StaticMeshInfo Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_number(int32_t number) { - fbb_.AddElement(StaticMeshInfo::VT_NUMBER, number, 0); - } - void add_room_number(int32_t room_number) { - fbb_.AddElement(StaticMeshInfo::VT_ROOM_NUMBER, room_number, 0); - } - void add_pose(const TEN::Save::Position *pose) { - fbb_.AddStruct(StaticMeshInfo::VT_POSE, pose); - } - void add_scale(float scale) { - fbb_.AddElement(StaticMeshInfo::VT_SCALE, scale, 0.0f); - } - void add_color(const TEN::Save::Vector4 *color) { - fbb_.AddStruct(StaticMeshInfo::VT_COLOR, color); - } - void add_hit_points(int32_t hit_points) { - fbb_.AddElement(StaticMeshInfo::VT_HIT_POINTS, hit_points, 0); - } - void add_flags(int32_t flags) { - fbb_.AddElement(StaticMeshInfo::VT_FLAGS, flags, 0); - } - explicit StaticMeshInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateStaticMeshInfo( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t number = 0, - int32_t room_number = 0, - const TEN::Save::Position *pose = 0, - float scale = 0.0f, - const TEN::Save::Vector4 *color = 0, - int32_t hit_points = 0, - int32_t flags = 0) { - StaticMeshInfoBuilder builder_(_fbb); - builder_.add_flags(flags); - builder_.add_hit_points(hit_points); - builder_.add_color(color); - builder_.add_scale(scale); - builder_.add_pose(pose); - builder_.add_room_number(room_number); - builder_.add_number(number); - return builder_.Finish(); -} - -struct StaticMeshInfo::Traits { - using type = StaticMeshInfo; - static auto constexpr Create = CreateStaticMeshInfo; -}; - -flatbuffers::Offset CreateStaticMeshInfo(flatbuffers::FlatBufferBuilder &_fbb, const StaticMeshInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct ParticleInfoT : public flatbuffers::NativeTable { - typedef ParticleInfo TableType; - int32_t x = 0; - int32_t y = 0; - int32_t z = 0; - int32_t x_vel = 0; - int32_t y_vel = 0; - int32_t z_vel = 0; - int32_t gravity = 0; - int32_t rot_ang = 0; - int32_t flags = 0; - float s_size = 0.0f; - float d_size = 0.0f; - float size = 0.0f; - int32_t friction = 0; - int32_t scalar = 0; - int32_t sprite_index = 0; - int32_t rot_add = 0; - int32_t max_y_vel = 0; - bool on = false; - int32_t s_r = 0; - int32_t s_g = 0; - int32_t s_b = 0; - int32_t d_r = 0; - int32_t d_g = 0; - int32_t d_b = 0; - int32_t r = 0; - int32_t g = 0; - int32_t b = 0; - int32_t col_fade_speed = 0; - int32_t fade_to_black = 0; - int32_t s_life = 0; - int32_t life = 0; - int32_t blend_mode = 0; - int32_t extras = 0; - int32_t dynamic = 0; - int32_t fx_obj = 0; - int32_t room_number = 0; - int32_t node_number = 0; -}; - -struct ParticleInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef ParticleInfoT NativeTableType; - typedef ParticleInfoBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_X = 4, - VT_Y = 6, - VT_Z = 8, - VT_X_VEL = 10, - VT_Y_VEL = 12, - VT_Z_VEL = 14, - VT_GRAVITY = 16, - VT_ROT_ANG = 18, - VT_FLAGS = 20, - VT_S_SIZE = 22, - VT_D_SIZE = 24, - VT_SIZE = 26, - VT_FRICTION = 28, - VT_SCALAR = 30, - VT_SPRITE_INDEX = 32, - VT_ROT_ADD = 34, - VT_MAX_Y_VEL = 36, - VT_ON = 38, - VT_S_R = 40, - VT_S_G = 42, - VT_S_B = 44, - VT_D_R = 46, - VT_D_G = 48, - VT_D_B = 50, - VT_R = 52, - VT_G = 54, - VT_B = 56, - VT_COL_FADE_SPEED = 58, - VT_FADE_TO_BLACK = 60, - VT_S_LIFE = 62, - VT_LIFE = 64, - VT_BLEND_MODE = 66, - VT_EXTRAS = 68, - VT_DYNAMIC = 70, - VT_FX_OBJ = 72, - VT_ROOM_NUMBER = 74, - VT_NODE_NUMBER = 76 - }; - int32_t x() const { - return GetField(VT_X, 0); - } - int32_t y() const { - return GetField(VT_Y, 0); - } - int32_t z() const { - return GetField(VT_Z, 0); - } - int32_t x_vel() const { - return GetField(VT_X_VEL, 0); - } - int32_t y_vel() const { - return GetField(VT_Y_VEL, 0); - } - int32_t z_vel() const { - return GetField(VT_Z_VEL, 0); - } - int32_t gravity() const { - return GetField(VT_GRAVITY, 0); - } - int32_t rot_ang() const { - return GetField(VT_ROT_ANG, 0); - } - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - float s_size() const { - return GetField(VT_S_SIZE, 0.0f); - } - float d_size() const { - return GetField(VT_D_SIZE, 0.0f); - } - float size() const { - return GetField(VT_SIZE, 0.0f); - } - int32_t friction() const { - return GetField(VT_FRICTION, 0); - } - int32_t scalar() const { - return GetField(VT_SCALAR, 0); - } - int32_t sprite_index() const { - return GetField(VT_SPRITE_INDEX, 0); - } - int32_t rot_add() const { - return GetField(VT_ROT_ADD, 0); - } - int32_t max_y_vel() const { - return GetField(VT_MAX_Y_VEL, 0); - } - bool on() const { - return GetField(VT_ON, 0) != 0; - } - int32_t s_r() const { - return GetField(VT_S_R, 0); - } - int32_t s_g() const { - return GetField(VT_S_G, 0); - } - int32_t s_b() const { - return GetField(VT_S_B, 0); - } - int32_t d_r() const { - return GetField(VT_D_R, 0); - } - int32_t d_g() const { - return GetField(VT_D_G, 0); - } - int32_t d_b() const { - return GetField(VT_D_B, 0); - } - int32_t r() const { - return GetField(VT_R, 0); - } - int32_t g() const { - return GetField(VT_G, 0); - } - int32_t b() const { - return GetField(VT_B, 0); - } - int32_t col_fade_speed() const { - return GetField(VT_COL_FADE_SPEED, 0); - } - int32_t fade_to_black() const { - return GetField(VT_FADE_TO_BLACK, 0); - } - int32_t s_life() const { - return GetField(VT_S_LIFE, 0); - } - int32_t life() const { - return GetField(VT_LIFE, 0); - } - int32_t blend_mode() const { - return GetField(VT_BLEND_MODE, 0); - } - int32_t extras() const { - return GetField(VT_EXTRAS, 0); - } - int32_t dynamic() const { - return GetField(VT_DYNAMIC, 0); - } - int32_t fx_obj() const { - return GetField(VT_FX_OBJ, 0); - } - int32_t room_number() const { - return GetField(VT_ROOM_NUMBER, 0); - } - int32_t node_number() const { - return GetField(VT_NODE_NUMBER, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_X) && - VerifyField(verifier, VT_Y) && - VerifyField(verifier, VT_Z) && - VerifyField(verifier, VT_X_VEL) && - VerifyField(verifier, VT_Y_VEL) && - VerifyField(verifier, VT_Z_VEL) && - VerifyField(verifier, VT_GRAVITY) && - VerifyField(verifier, VT_ROT_ANG) && - VerifyField(verifier, VT_FLAGS) && - VerifyField(verifier, VT_S_SIZE) && - VerifyField(verifier, VT_D_SIZE) && - VerifyField(verifier, VT_SIZE) && - VerifyField(verifier, VT_FRICTION) && - VerifyField(verifier, VT_SCALAR) && - VerifyField(verifier, VT_SPRITE_INDEX) && - VerifyField(verifier, VT_ROT_ADD) && - VerifyField(verifier, VT_MAX_Y_VEL) && - VerifyField(verifier, VT_ON) && - VerifyField(verifier, VT_S_R) && - VerifyField(verifier, VT_S_G) && - VerifyField(verifier, VT_S_B) && - VerifyField(verifier, VT_D_R) && - VerifyField(verifier, VT_D_G) && - VerifyField(verifier, VT_D_B) && - VerifyField(verifier, VT_R) && - VerifyField(verifier, VT_G) && - VerifyField(verifier, VT_B) && - VerifyField(verifier, VT_COL_FADE_SPEED) && - VerifyField(verifier, VT_FADE_TO_BLACK) && - VerifyField(verifier, VT_S_LIFE) && - VerifyField(verifier, VT_LIFE) && - VerifyField(verifier, VT_BLEND_MODE) && - VerifyField(verifier, VT_EXTRAS) && - VerifyField(verifier, VT_DYNAMIC) && - VerifyField(verifier, VT_FX_OBJ) && - VerifyField(verifier, VT_ROOM_NUMBER) && - VerifyField(verifier, VT_NODE_NUMBER) && - verifier.EndTable(); - } - ParticleInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ParticleInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ParticleInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct ParticleInfoBuilder { - typedef ParticleInfo Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_x(int32_t x) { - fbb_.AddElement(ParticleInfo::VT_X, x, 0); - } - void add_y(int32_t y) { - fbb_.AddElement(ParticleInfo::VT_Y, y, 0); - } - void add_z(int32_t z) { - fbb_.AddElement(ParticleInfo::VT_Z, z, 0); - } - void add_x_vel(int32_t x_vel) { - fbb_.AddElement(ParticleInfo::VT_X_VEL, x_vel, 0); - } - void add_y_vel(int32_t y_vel) { - fbb_.AddElement(ParticleInfo::VT_Y_VEL, y_vel, 0); - } - void add_z_vel(int32_t z_vel) { - fbb_.AddElement(ParticleInfo::VT_Z_VEL, z_vel, 0); - } - void add_gravity(int32_t gravity) { - fbb_.AddElement(ParticleInfo::VT_GRAVITY, gravity, 0); - } - void add_rot_ang(int32_t rot_ang) { - fbb_.AddElement(ParticleInfo::VT_ROT_ANG, rot_ang, 0); - } - void add_flags(int32_t flags) { - fbb_.AddElement(ParticleInfo::VT_FLAGS, flags, 0); - } - void add_s_size(float s_size) { - fbb_.AddElement(ParticleInfo::VT_S_SIZE, s_size, 0.0f); - } - void add_d_size(float d_size) { - fbb_.AddElement(ParticleInfo::VT_D_SIZE, d_size, 0.0f); - } - void add_size(float size) { - fbb_.AddElement(ParticleInfo::VT_SIZE, size, 0.0f); - } - void add_friction(int32_t friction) { - fbb_.AddElement(ParticleInfo::VT_FRICTION, friction, 0); - } - void add_scalar(int32_t scalar) { - fbb_.AddElement(ParticleInfo::VT_SCALAR, scalar, 0); - } - void add_sprite_index(int32_t sprite_index) { - fbb_.AddElement(ParticleInfo::VT_SPRITE_INDEX, sprite_index, 0); - } - void add_rot_add(int32_t rot_add) { - fbb_.AddElement(ParticleInfo::VT_ROT_ADD, rot_add, 0); - } - void add_max_y_vel(int32_t max_y_vel) { - fbb_.AddElement(ParticleInfo::VT_MAX_Y_VEL, max_y_vel, 0); - } - void add_on(bool on) { - fbb_.AddElement(ParticleInfo::VT_ON, static_cast(on), 0); - } - void add_s_r(int32_t s_r) { - fbb_.AddElement(ParticleInfo::VT_S_R, s_r, 0); - } - void add_s_g(int32_t s_g) { - fbb_.AddElement(ParticleInfo::VT_S_G, s_g, 0); - } - void add_s_b(int32_t s_b) { - fbb_.AddElement(ParticleInfo::VT_S_B, s_b, 0); - } - void add_d_r(int32_t d_r) { - fbb_.AddElement(ParticleInfo::VT_D_R, d_r, 0); - } - void add_d_g(int32_t d_g) { - fbb_.AddElement(ParticleInfo::VT_D_G, d_g, 0); - } - void add_d_b(int32_t d_b) { - fbb_.AddElement(ParticleInfo::VT_D_B, d_b, 0); - } - void add_r(int32_t r) { - fbb_.AddElement(ParticleInfo::VT_R, r, 0); - } - void add_g(int32_t g) { - fbb_.AddElement(ParticleInfo::VT_G, g, 0); - } - void add_b(int32_t b) { - fbb_.AddElement(ParticleInfo::VT_B, b, 0); - } - void add_col_fade_speed(int32_t col_fade_speed) { - fbb_.AddElement(ParticleInfo::VT_COL_FADE_SPEED, col_fade_speed, 0); - } - void add_fade_to_black(int32_t fade_to_black) { - fbb_.AddElement(ParticleInfo::VT_FADE_TO_BLACK, fade_to_black, 0); - } - void add_s_life(int32_t s_life) { - fbb_.AddElement(ParticleInfo::VT_S_LIFE, s_life, 0); - } - void add_life(int32_t life) { - fbb_.AddElement(ParticleInfo::VT_LIFE, life, 0); - } - void add_blend_mode(int32_t blend_mode) { - fbb_.AddElement(ParticleInfo::VT_BLEND_MODE, blend_mode, 0); - } - void add_extras(int32_t extras) { - fbb_.AddElement(ParticleInfo::VT_EXTRAS, extras, 0); - } - void add_dynamic(int32_t dynamic) { - fbb_.AddElement(ParticleInfo::VT_DYNAMIC, dynamic, 0); - } - void add_fx_obj(int32_t fx_obj) { - fbb_.AddElement(ParticleInfo::VT_FX_OBJ, fx_obj, 0); - } - void add_room_number(int32_t room_number) { - fbb_.AddElement(ParticleInfo::VT_ROOM_NUMBER, room_number, 0); - } - void add_node_number(int32_t node_number) { - fbb_.AddElement(ParticleInfo::VT_NODE_NUMBER, node_number, 0); - } - explicit ParticleInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateParticleInfo( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t x = 0, - int32_t y = 0, - int32_t z = 0, - int32_t x_vel = 0, - int32_t y_vel = 0, - int32_t z_vel = 0, - int32_t gravity = 0, - int32_t rot_ang = 0, - int32_t flags = 0, - float s_size = 0.0f, - float d_size = 0.0f, - float size = 0.0f, - int32_t friction = 0, - int32_t scalar = 0, - int32_t sprite_index = 0, - int32_t rot_add = 0, - int32_t max_y_vel = 0, - bool on = false, - int32_t s_r = 0, - int32_t s_g = 0, - int32_t s_b = 0, - int32_t d_r = 0, - int32_t d_g = 0, - int32_t d_b = 0, - int32_t r = 0, - int32_t g = 0, - int32_t b = 0, - int32_t col_fade_speed = 0, - int32_t fade_to_black = 0, - int32_t s_life = 0, - int32_t life = 0, - int32_t blend_mode = 0, - int32_t extras = 0, - int32_t dynamic = 0, - int32_t fx_obj = 0, - int32_t room_number = 0, - int32_t node_number = 0) { - ParticleInfoBuilder builder_(_fbb); - builder_.add_node_number(node_number); - builder_.add_room_number(room_number); - builder_.add_fx_obj(fx_obj); - builder_.add_dynamic(dynamic); - builder_.add_extras(extras); - builder_.add_blend_mode(blend_mode); - builder_.add_life(life); - builder_.add_s_life(s_life); - builder_.add_fade_to_black(fade_to_black); - builder_.add_col_fade_speed(col_fade_speed); - builder_.add_b(b); - builder_.add_g(g); - builder_.add_r(r); - builder_.add_d_b(d_b); - builder_.add_d_g(d_g); - builder_.add_d_r(d_r); - builder_.add_s_b(s_b); - builder_.add_s_g(s_g); - builder_.add_s_r(s_r); - builder_.add_max_y_vel(max_y_vel); - builder_.add_rot_add(rot_add); - builder_.add_sprite_index(sprite_index); - builder_.add_scalar(scalar); - builder_.add_friction(friction); - builder_.add_size(size); - builder_.add_d_size(d_size); - builder_.add_s_size(s_size); - builder_.add_flags(flags); - builder_.add_rot_ang(rot_ang); - builder_.add_gravity(gravity); - builder_.add_z_vel(z_vel); - builder_.add_y_vel(y_vel); - builder_.add_x_vel(x_vel); - builder_.add_z(z); - builder_.add_y(y); - builder_.add_x(x); - builder_.add_on(on); - return builder_.Finish(); -} - -struct ParticleInfo::Traits { - using type = ParticleInfo; - static auto constexpr Create = CreateParticleInfo; -}; - -flatbuffers::Offset CreateParticleInfo(flatbuffers::FlatBufferBuilder &_fbb, const ParticleInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct SwarmObjectInfoT : public flatbuffers::NativeTable { - typedef SwarmObjectInfo TableType; - bool on = false; - std::unique_ptr pose{}; - int32_t room_number = 0; - int32_t flags = 0; -}; - -struct SwarmObjectInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef SwarmObjectInfoT NativeTableType; - typedef SwarmObjectInfoBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_ON = 4, - VT_POSE = 6, - VT_ROOM_NUMBER = 8, - VT_FLAGS = 10 - }; - bool on() const { - return GetField(VT_ON, 0) != 0; - } - const TEN::Save::Position *pose() const { - return GetStruct(VT_POSE); - } - int32_t room_number() const { - return GetField(VT_ROOM_NUMBER, 0); - } - int32_t flags() const { - return GetField(VT_FLAGS, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_ON) && - VerifyField(verifier, VT_POSE) && - VerifyField(verifier, VT_ROOM_NUMBER) && - VerifyField(verifier, VT_FLAGS) && - verifier.EndTable(); - } - SwarmObjectInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(SwarmObjectInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SwarmObjectInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct SwarmObjectInfoBuilder { - typedef SwarmObjectInfo Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_on(bool on) { - fbb_.AddElement(SwarmObjectInfo::VT_ON, static_cast(on), 0); - } - void add_pose(const TEN::Save::Position *pose) { - fbb_.AddStruct(SwarmObjectInfo::VT_POSE, pose); - } - void add_room_number(int32_t room_number) { - fbb_.AddElement(SwarmObjectInfo::VT_ROOM_NUMBER, room_number, 0); - } - void add_flags(int32_t flags) { - fbb_.AddElement(SwarmObjectInfo::VT_FLAGS, flags, 0); - } - explicit SwarmObjectInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateSwarmObjectInfo( - flatbuffers::FlatBufferBuilder &_fbb, - bool on = false, - const TEN::Save::Position *pose = 0, - int32_t room_number = 0, - int32_t flags = 0) { - SwarmObjectInfoBuilder builder_(_fbb); - builder_.add_flags(flags); - builder_.add_room_number(room_number); - builder_.add_pose(pose); - builder_.add_on(on); - return builder_.Finish(); -} - -struct SwarmObjectInfo::Traits { - using type = SwarmObjectInfo; - static auto constexpr Create = CreateSwarmObjectInfo; -}; - -flatbuffers::Offset CreateSwarmObjectInfo(flatbuffers::FlatBufferBuilder &_fbb, const SwarmObjectInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct RopeT : public flatbuffers::NativeTable { - typedef Rope TableType; - std::vector segments{}; - std::vector velocities{}; - std::vector normalised_segments{}; - std::vector mesh_segments{}; - std::unique_ptr position{}; - std::vector coords{}; - int32_t segment_length = 0; - int32_t active = 0; - int32_t coiled = 0; -}; - -struct Rope FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef RopeT NativeTableType; - typedef RopeBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_SEGMENTS = 4, - VT_VELOCITIES = 6, - VT_NORMALISED_SEGMENTS = 8, - VT_MESH_SEGMENTS = 10, - VT_POSITION = 12, - VT_COORDS = 14, - VT_SEGMENT_LENGTH = 16, - VT_ACTIVE = 18, - VT_COILED = 20 - }; - const flatbuffers::Vector *segments() const { - return GetPointer *>(VT_SEGMENTS); - } - const flatbuffers::Vector *velocities() const { - return GetPointer *>(VT_VELOCITIES); - } - const flatbuffers::Vector *normalised_segments() const { - return GetPointer *>(VT_NORMALISED_SEGMENTS); - } - const flatbuffers::Vector *mesh_segments() const { - return GetPointer *>(VT_MESH_SEGMENTS); - } - const TEN::Save::Vector3 *position() const { - return GetStruct(VT_POSITION); - } - const flatbuffers::Vector *coords() const { - return GetPointer *>(VT_COORDS); - } - int32_t segment_length() const { - return GetField(VT_SEGMENT_LENGTH, 0); - } - int32_t active() const { - return GetField(VT_ACTIVE, 0); - } - int32_t coiled() const { - return GetField(VT_COILED, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_SEGMENTS) && - verifier.VerifyVector(segments()) && - VerifyOffset(verifier, VT_VELOCITIES) && - verifier.VerifyVector(velocities()) && - VerifyOffset(verifier, VT_NORMALISED_SEGMENTS) && - verifier.VerifyVector(normalised_segments()) && - VerifyOffset(verifier, VT_MESH_SEGMENTS) && - verifier.VerifyVector(mesh_segments()) && - VerifyField(verifier, VT_POSITION) && - VerifyOffset(verifier, VT_COORDS) && - verifier.VerifyVector(coords()) && - VerifyField(verifier, VT_SEGMENT_LENGTH) && - VerifyField(verifier, VT_ACTIVE) && - VerifyField(verifier, VT_COILED) && - verifier.EndTable(); - } - RopeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(RopeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const RopeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct RopeBuilder { - typedef Rope Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_segments(flatbuffers::Offset> segments) { - fbb_.AddOffset(Rope::VT_SEGMENTS, segments); - } - void add_velocities(flatbuffers::Offset> velocities) { - fbb_.AddOffset(Rope::VT_VELOCITIES, velocities); - } - void add_normalised_segments(flatbuffers::Offset> normalised_segments) { - fbb_.AddOffset(Rope::VT_NORMALISED_SEGMENTS, normalised_segments); - } - void add_mesh_segments(flatbuffers::Offset> mesh_segments) { - fbb_.AddOffset(Rope::VT_MESH_SEGMENTS, mesh_segments); - } - void add_position(const TEN::Save::Vector3 *position) { - fbb_.AddStruct(Rope::VT_POSITION, position); - } - void add_coords(flatbuffers::Offset> coords) { - fbb_.AddOffset(Rope::VT_COORDS, coords); - } - void add_segment_length(int32_t segment_length) { - fbb_.AddElement(Rope::VT_SEGMENT_LENGTH, segment_length, 0); - } - void add_active(int32_t active) { - fbb_.AddElement(Rope::VT_ACTIVE, active, 0); - } - void add_coiled(int32_t coiled) { - fbb_.AddElement(Rope::VT_COILED, coiled, 0); - } - explicit RopeBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateRope( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset> segments = 0, - flatbuffers::Offset> velocities = 0, - flatbuffers::Offset> normalised_segments = 0, - flatbuffers::Offset> mesh_segments = 0, - const TEN::Save::Vector3 *position = 0, - flatbuffers::Offset> coords = 0, - int32_t segment_length = 0, - int32_t active = 0, - int32_t coiled = 0) { - RopeBuilder builder_(_fbb); - builder_.add_coiled(coiled); - builder_.add_active(active); - builder_.add_segment_length(segment_length); - builder_.add_coords(coords); - builder_.add_position(position); - builder_.add_mesh_segments(mesh_segments); - builder_.add_normalised_segments(normalised_segments); - builder_.add_velocities(velocities); - builder_.add_segments(segments); - return builder_.Finish(); -} - -struct Rope::Traits { - using type = Rope; - static auto constexpr Create = CreateRope; -}; - -inline flatbuffers::Offset CreateRopeDirect( - flatbuffers::FlatBufferBuilder &_fbb, - const std::vector *segments = nullptr, - const std::vector *velocities = nullptr, - const std::vector *normalised_segments = nullptr, - const std::vector *mesh_segments = nullptr, - const TEN::Save::Vector3 *position = 0, - const std::vector *coords = nullptr, - int32_t segment_length = 0, - int32_t active = 0, - int32_t coiled = 0) { - auto segments__ = segments ? _fbb.CreateVectorOfStructs(*segments) : 0; - auto velocities__ = velocities ? _fbb.CreateVectorOfStructs(*velocities) : 0; - auto normalised_segments__ = normalised_segments ? _fbb.CreateVectorOfStructs(*normalised_segments) : 0; - auto mesh_segments__ = mesh_segments ? _fbb.CreateVectorOfStructs(*mesh_segments) : 0; - auto coords__ = coords ? _fbb.CreateVectorOfStructs(*coords) : 0; - return TEN::Save::CreateRope( - _fbb, - segments__, - velocities__, - normalised_segments__, - mesh_segments__, - position, - coords__, - segment_length, - active, - coiled); -} - -flatbuffers::Offset CreateRope(flatbuffers::FlatBufferBuilder &_fbb, const RopeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct PendulumT : public flatbuffers::NativeTable { - typedef Pendulum TableType; - std::unique_ptr position{}; - std::unique_ptr velocity{}; - int32_t node = 0; -}; - -struct Pendulum FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef PendulumT NativeTableType; - typedef PendulumBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_POSITION = 4, - VT_VELOCITY = 6, - VT_NODE = 8 - }; - const TEN::Save::Vector3 *position() const { - return GetStruct(VT_POSITION); - } - const TEN::Save::Vector3 *velocity() const { - return GetStruct(VT_VELOCITY); - } - int32_t node() const { - return GetField(VT_NODE, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_POSITION) && - VerifyField(verifier, VT_VELOCITY) && - VerifyField(verifier, VT_NODE) && - verifier.EndTable(); - } - PendulumT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(PendulumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const PendulumT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct PendulumBuilder { - typedef Pendulum Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_position(const TEN::Save::Vector3 *position) { - fbb_.AddStruct(Pendulum::VT_POSITION, position); - } - void add_velocity(const TEN::Save::Vector3 *velocity) { - fbb_.AddStruct(Pendulum::VT_VELOCITY, velocity); - } - void add_node(int32_t node) { - fbb_.AddElement(Pendulum::VT_NODE, node, 0); - } - explicit PendulumBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreatePendulum( - flatbuffers::FlatBufferBuilder &_fbb, - const TEN::Save::Vector3 *position = 0, - const TEN::Save::Vector3 *velocity = 0, - int32_t node = 0) { - PendulumBuilder builder_(_fbb); - builder_.add_node(node); - builder_.add_velocity(velocity); - builder_.add_position(position); - return builder_.Finish(); -} - -struct Pendulum::Traits { - using type = Pendulum; - static auto constexpr Create = CreatePendulum; -}; - -flatbuffers::Offset CreatePendulum(flatbuffers::FlatBufferBuilder &_fbb, const PendulumT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct EventSetCallCountersT : public flatbuffers::NativeTable { - typedef EventSetCallCounters TableType; - int32_t on_enter = 0; - int32_t on_inside = 0; - int32_t on_leave = 0; -}; - -struct EventSetCallCounters FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef EventSetCallCountersT NativeTableType; - typedef EventSetCallCountersBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_ON_ENTER = 4, - VT_ON_INSIDE = 6, - VT_ON_LEAVE = 8 - }; - int32_t on_enter() const { - return GetField(VT_ON_ENTER, 0); - } - int32_t on_inside() const { - return GetField(VT_ON_INSIDE, 0); - } - int32_t on_leave() const { - return GetField(VT_ON_LEAVE, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_ON_ENTER) && - VerifyField(verifier, VT_ON_INSIDE) && - VerifyField(verifier, VT_ON_LEAVE) && - verifier.EndTable(); - } - EventSetCallCountersT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(EventSetCallCountersT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const EventSetCallCountersT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct EventSetCallCountersBuilder { - typedef EventSetCallCounters Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_on_enter(int32_t on_enter) { - fbb_.AddElement(EventSetCallCounters::VT_ON_ENTER, on_enter, 0); - } - void add_on_inside(int32_t on_inside) { - fbb_.AddElement(EventSetCallCounters::VT_ON_INSIDE, on_inside, 0); - } - void add_on_leave(int32_t on_leave) { - fbb_.AddElement(EventSetCallCounters::VT_ON_LEAVE, on_leave, 0); - } - explicit EventSetCallCountersBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateEventSetCallCounters( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t on_enter = 0, - int32_t on_inside = 0, - int32_t on_leave = 0) { - EventSetCallCountersBuilder builder_(_fbb); - builder_.add_on_leave(on_leave); - builder_.add_on_inside(on_inside); - builder_.add_on_enter(on_enter); - return builder_.Finish(); -} - -struct EventSetCallCounters::Traits { - using type = EventSetCallCounters; - static auto constexpr Create = CreateEventSetCallCounters; -}; - -flatbuffers::Offset CreateEventSetCallCounters(flatbuffers::FlatBufferBuilder &_fbb, const EventSetCallCountersT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct VolumeStateT : public flatbuffers::NativeTable { - typedef VolumeState TableType; - int32_t status = 0; - int32_t activator = 0; - int32_t timestamp = 0; -}; - -struct VolumeState FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef VolumeStateT NativeTableType; - typedef VolumeStateBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_STATUS = 4, - VT_ACTIVATOR = 6, - VT_TIMESTAMP = 8 - }; - int32_t status() const { - return GetField(VT_STATUS, 0); - } - int32_t activator() const { - return GetField(VT_ACTIVATOR, 0); - } - int32_t timestamp() const { - return GetField(VT_TIMESTAMP, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_STATUS) && - VerifyField(verifier, VT_ACTIVATOR) && - VerifyField(verifier, VT_TIMESTAMP) && - verifier.EndTable(); - } - VolumeStateT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(VolumeStateT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const VolumeStateT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct VolumeStateBuilder { - typedef VolumeState Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_status(int32_t status) { - fbb_.AddElement(VolumeState::VT_STATUS, status, 0); - } - void add_activator(int32_t activator) { - fbb_.AddElement(VolumeState::VT_ACTIVATOR, activator, 0); - } - void add_timestamp(int32_t timestamp) { - fbb_.AddElement(VolumeState::VT_TIMESTAMP, timestamp, 0); - } - explicit VolumeStateBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateVolumeState( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t status = 0, - int32_t activator = 0, - int32_t timestamp = 0) { - VolumeStateBuilder builder_(_fbb); - builder_.add_timestamp(timestamp); - builder_.add_activator(activator); - builder_.add_status(status); - return builder_.Finish(); -} - -struct VolumeState::Traits { - using type = VolumeState; - static auto constexpr Create = CreateVolumeState; -}; - -flatbuffers::Offset CreateVolumeState(flatbuffers::FlatBufferBuilder &_fbb, const VolumeStateT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct VolumeT : public flatbuffers::NativeTable { - typedef Volume TableType; - std::string name{}; - int32_t number = 0; - int32_t room_number = 0; - bool enabled = false; - std::unique_ptr position{}; - std::unique_ptr rotation{}; - std::unique_ptr scale{}; - std::vector> queue{}; -}; - -struct Volume FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef VolumeT NativeTableType; - typedef VolumeBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_NAME = 4, - VT_NUMBER = 6, - VT_ROOM_NUMBER = 8, - VT_ENABLED = 10, - VT_POSITION = 12, - VT_ROTATION = 14, - VT_SCALE = 16, - VT_QUEUE = 18 - }; - const flatbuffers::String *name() const { - return GetPointer(VT_NAME); - } - int32_t number() const { - return GetField(VT_NUMBER, 0); - } - int32_t room_number() const { - return GetField(VT_ROOM_NUMBER, 0); - } - bool enabled() const { - return GetField(VT_ENABLED, 0) != 0; - } - const TEN::Save::Vector3 *position() const { - return GetStruct(VT_POSITION); - } - const TEN::Save::Vector4 *rotation() const { - return GetStruct(VT_ROTATION); - } - const TEN::Save::Vector3 *scale() const { - return GetStruct(VT_SCALE); - } - const flatbuffers::Vector> *queue() const { - return GetPointer> *>(VT_QUEUE); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_NAME) && - verifier.VerifyString(name()) && - VerifyField(verifier, VT_NUMBER) && - VerifyField(verifier, VT_ROOM_NUMBER) && - VerifyField(verifier, VT_ENABLED) && - VerifyField(verifier, VT_POSITION) && - VerifyField(verifier, VT_ROTATION) && - VerifyField(verifier, VT_SCALE) && - VerifyOffset(verifier, VT_QUEUE) && - verifier.VerifyVector(queue()) && - verifier.VerifyVectorOfTables(queue()) && - verifier.EndTable(); - } - VolumeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(VolumeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const VolumeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct VolumeBuilder { - typedef Volume Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_name(flatbuffers::Offset name) { - fbb_.AddOffset(Volume::VT_NAME, name); - } - void add_number(int32_t number) { - fbb_.AddElement(Volume::VT_NUMBER, number, 0); - } - void add_room_number(int32_t room_number) { - fbb_.AddElement(Volume::VT_ROOM_NUMBER, room_number, 0); - } - void add_enabled(bool enabled) { - fbb_.AddElement(Volume::VT_ENABLED, static_cast(enabled), 0); - } - void add_position(const TEN::Save::Vector3 *position) { - fbb_.AddStruct(Volume::VT_POSITION, position); - } - void add_rotation(const TEN::Save::Vector4 *rotation) { - fbb_.AddStruct(Volume::VT_ROTATION, rotation); - } - void add_scale(const TEN::Save::Vector3 *scale) { - fbb_.AddStruct(Volume::VT_SCALE, scale); - } - void add_queue(flatbuffers::Offset>> queue) { - fbb_.AddOffset(Volume::VT_QUEUE, queue); - } - explicit VolumeBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateVolume( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset name = 0, - int32_t number = 0, - int32_t room_number = 0, - bool enabled = false, - const TEN::Save::Vector3 *position = 0, - const TEN::Save::Vector4 *rotation = 0, - const TEN::Save::Vector3 *scale = 0, - flatbuffers::Offset>> queue = 0) { - VolumeBuilder builder_(_fbb); - builder_.add_queue(queue); - builder_.add_scale(scale); - builder_.add_rotation(rotation); - builder_.add_position(position); - builder_.add_room_number(room_number); - builder_.add_number(number); - builder_.add_name(name); - builder_.add_enabled(enabled); - return builder_.Finish(); -} - -struct Volume::Traits { - using type = Volume; - static auto constexpr Create = CreateVolume; -}; - -inline flatbuffers::Offset CreateVolumeDirect( - flatbuffers::FlatBufferBuilder &_fbb, - const char *name = nullptr, - int32_t number = 0, - int32_t room_number = 0, - bool enabled = false, - const TEN::Save::Vector3 *position = 0, - const TEN::Save::Vector4 *rotation = 0, - const TEN::Save::Vector3 *scale = 0, - const std::vector> *queue = nullptr) { - auto name__ = name ? _fbb.CreateString(name) : 0; - auto queue__ = queue ? _fbb.CreateVector>(*queue) : 0; - return TEN::Save::CreateVolume( - _fbb, - name__, - number, - room_number, - enabled, - position, - rotation, - scale, - queue__); -} - -flatbuffers::Offset CreateVolume(flatbuffers::FlatBufferBuilder &_fbb, const VolumeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct ScriptTableT : public flatbuffers::NativeTable { - typedef ScriptTable TableType; - std::vector keys_vals{}; -}; - -struct ScriptTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef ScriptTableT NativeTableType; - typedef ScriptTableBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_KEYS_VALS = 4 - }; - const flatbuffers::Vector *keys_vals() const { - return GetPointer *>(VT_KEYS_VALS); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_KEYS_VALS) && - verifier.VerifyVector(keys_vals()) && - verifier.EndTable(); - } - ScriptTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(ScriptTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ScriptTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct ScriptTableBuilder { - typedef ScriptTable Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_keys_vals(flatbuffers::Offset> keys_vals) { - fbb_.AddOffset(ScriptTable::VT_KEYS_VALS, keys_vals); - } - explicit ScriptTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateScriptTable( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset> keys_vals = 0) { - ScriptTableBuilder builder_(_fbb); - builder_.add_keys_vals(keys_vals); - return builder_.Finish(); -} - -struct ScriptTable::Traits { - using type = ScriptTable; - static auto constexpr Create = CreateScriptTable; -}; - -inline flatbuffers::Offset CreateScriptTableDirect( - flatbuffers::FlatBufferBuilder &_fbb, - const std::vector *keys_vals = nullptr) { - auto keys_vals__ = keys_vals ? _fbb.CreateVectorOfStructs(*keys_vals) : 0; - return TEN::Save::CreateScriptTable( - _fbb, - keys_vals__); -} - -flatbuffers::Offset CreateScriptTable(flatbuffers::FlatBufferBuilder &_fbb, const ScriptTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct stringTableT : public flatbuffers::NativeTable { - typedef stringTable TableType; - std::string str{}; -}; - -struct stringTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef stringTableT NativeTableType; - typedef stringTableBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_STR = 4 - }; - const flatbuffers::String *str() const { - return GetPointer(VT_STR); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_STR) && - verifier.VerifyString(str()) && - verifier.EndTable(); - } - stringTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(stringTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const stringTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct stringTableBuilder { - typedef stringTable Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_str(flatbuffers::Offset str) { - fbb_.AddOffset(stringTable::VT_STR, str); - } - explicit stringTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreatestringTable( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset str = 0) { - stringTableBuilder builder_(_fbb); - builder_.add_str(str); - return builder_.Finish(); -} - -struct stringTable::Traits { - using type = stringTable; - static auto constexpr Create = CreatestringTable; -}; - -inline flatbuffers::Offset CreatestringTableDirect( - flatbuffers::FlatBufferBuilder &_fbb, - const char *str = nullptr) { - auto str__ = str ? _fbb.CreateString(str) : 0; - return TEN::Save::CreatestringTable( - _fbb, - str__); -} - -flatbuffers::Offset CreatestringTable(flatbuffers::FlatBufferBuilder &_fbb, const stringTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct doubleTableT : public flatbuffers::NativeTable { - typedef doubleTable TableType; - double scalar = 0.0; -}; - -struct doubleTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef doubleTableT NativeTableType; - typedef doubleTableBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_SCALAR = 4 - }; - double scalar() const { - return GetField(VT_SCALAR, 0.0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_SCALAR) && - verifier.EndTable(); - } - doubleTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(doubleTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const doubleTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct doubleTableBuilder { - typedef doubleTable Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_scalar(double scalar) { - fbb_.AddElement(doubleTable::VT_SCALAR, scalar, 0.0); - } - explicit doubleTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreatedoubleTable( - flatbuffers::FlatBufferBuilder &_fbb, - double scalar = 0.0) { - doubleTableBuilder builder_(_fbb); - builder_.add_scalar(scalar); - return builder_.Finish(); -} - -struct doubleTable::Traits { - using type = doubleTable; - static auto constexpr Create = CreatedoubleTable; -}; - -flatbuffers::Offset CreatedoubleTable(flatbuffers::FlatBufferBuilder &_fbb, const doubleTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct boolTableT : public flatbuffers::NativeTable { - typedef boolTable TableType; - bool scalar = false; -}; - -struct boolTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef boolTableT NativeTableType; - typedef boolTableBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_SCALAR = 4 - }; - bool scalar() const { - return GetField(VT_SCALAR, 0) != 0; - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_SCALAR) && - verifier.EndTable(); - } - boolTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(boolTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const boolTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct boolTableBuilder { - typedef boolTable Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_scalar(bool scalar) { - fbb_.AddElement(boolTable::VT_SCALAR, static_cast(scalar), 0); - } - explicit boolTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateboolTable( - flatbuffers::FlatBufferBuilder &_fbb, - bool scalar = false) { - boolTableBuilder builder_(_fbb); - builder_.add_scalar(scalar); - return builder_.Finish(); -} - -struct boolTable::Traits { - using type = boolTable; - static auto constexpr Create = CreateboolTable; -}; - -flatbuffers::Offset CreateboolTable(flatbuffers::FlatBufferBuilder &_fbb, const boolTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct vec2TableT : public flatbuffers::NativeTable { - typedef vec2Table TableType; - std::unique_ptr vec{}; -}; - -struct vec2Table FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef vec2TableT NativeTableType; - typedef vec2TableBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_VEC = 4 - }; - const TEN::Save::Vector2 *vec() const { - return GetStruct(VT_VEC); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_VEC) && - verifier.EndTable(); - } - vec2TableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(vec2TableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const vec2TableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct vec2TableBuilder { - typedef vec2Table Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_vec(const TEN::Save::Vector2 *vec) { - fbb_.AddStruct(vec2Table::VT_VEC, vec); - } - explicit vec2TableBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset Createvec2Table( - flatbuffers::FlatBufferBuilder &_fbb, - const TEN::Save::Vector2 *vec = 0) { - vec2TableBuilder builder_(_fbb); - builder_.add_vec(vec); - return builder_.Finish(); -} - -struct vec2Table::Traits { - using type = vec2Table; - static auto constexpr Create = Createvec2Table; -}; - -flatbuffers::Offset Createvec2Table(flatbuffers::FlatBufferBuilder &_fbb, const vec2TableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct vec3TableT : public flatbuffers::NativeTable { - typedef vec3Table TableType; - std::unique_ptr vec{}; -}; - -struct vec3Table FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef vec3TableT NativeTableType; - typedef vec3TableBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_VEC = 4 - }; - const TEN::Save::Vector3 *vec() const { - return GetStruct(VT_VEC); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_VEC) && - verifier.EndTable(); - } - vec3TableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(vec3TableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const vec3TableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct vec3TableBuilder { - typedef vec3Table Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_vec(const TEN::Save::Vector3 *vec) { - fbb_.AddStruct(vec3Table::VT_VEC, vec); - } - explicit vec3TableBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset Createvec3Table( - flatbuffers::FlatBufferBuilder &_fbb, - const TEN::Save::Vector3 *vec = 0) { - vec3TableBuilder builder_(_fbb); - builder_.add_vec(vec); - return builder_.Finish(); -} - -struct vec3Table::Traits { - using type = vec3Table; - static auto constexpr Create = Createvec3Table; -}; - -flatbuffers::Offset Createvec3Table(flatbuffers::FlatBufferBuilder &_fbb, const vec3TableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct rotationTableT : public flatbuffers::NativeTable { - typedef rotationTable TableType; - std::unique_ptr vec{}; -}; - -struct rotationTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef rotationTableT NativeTableType; - typedef rotationTableBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_VEC = 4 - }; - const TEN::Save::Vector3 *vec() const { - return GetStruct(VT_VEC); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_VEC) && - verifier.EndTable(); - } - rotationTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(rotationTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const rotationTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct rotationTableBuilder { - typedef rotationTable Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_vec(const TEN::Save::Vector3 *vec) { - fbb_.AddStruct(rotationTable::VT_VEC, vec); - } - explicit rotationTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreaterotationTable( - flatbuffers::FlatBufferBuilder &_fbb, - const TEN::Save::Vector3 *vec = 0) { - rotationTableBuilder builder_(_fbb); - builder_.add_vec(vec); - return builder_.Finish(); -} - -struct rotationTable::Traits { - using type = rotationTable; - static auto constexpr Create = CreaterotationTable; -}; - -flatbuffers::Offset CreaterotationTable(flatbuffers::FlatBufferBuilder &_fbb, const rotationTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct colorTableT : public flatbuffers::NativeTable { - typedef colorTable TableType; - uint32_t color = 0; -}; - -struct colorTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef colorTableT NativeTableType; - typedef colorTableBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_COLOR = 4 - }; - uint32_t color() const { - return GetField(VT_COLOR, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_COLOR) && - verifier.EndTable(); - } - colorTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(colorTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const colorTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct colorTableBuilder { - typedef colorTable Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_color(uint32_t color) { - fbb_.AddElement(colorTable::VT_COLOR, color, 0); - } - explicit colorTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreatecolorTable( - flatbuffers::FlatBufferBuilder &_fbb, - uint32_t color = 0) { - colorTableBuilder builder_(_fbb); - builder_.add_color(color); - return builder_.Finish(); -} - -struct colorTable::Traits { - using type = colorTable; - static auto constexpr Create = CreatecolorTable; -}; - -flatbuffers::Offset CreatecolorTable(flatbuffers::FlatBufferBuilder &_fbb, const colorTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct funcNameTableT : public flatbuffers::NativeTable { - typedef funcNameTable TableType; - std::string str{}; -}; - -struct funcNameTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef funcNameTableT NativeTableType; - typedef funcNameTableBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_STR = 4 - }; - const flatbuffers::String *str() const { - return GetPointer(VT_STR); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_STR) && - verifier.VerifyString(str()) && - verifier.EndTable(); - } - funcNameTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(funcNameTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const funcNameTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct funcNameTableBuilder { - typedef funcNameTable Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_str(flatbuffers::Offset str) { - fbb_.AddOffset(funcNameTable::VT_STR, str); - } - explicit funcNameTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreatefuncNameTable( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset str = 0) { - funcNameTableBuilder builder_(_fbb); - builder_.add_str(str); - return builder_.Finish(); -} - -struct funcNameTable::Traits { - using type = funcNameTable; - static auto constexpr Create = CreatefuncNameTable; -}; - -inline flatbuffers::Offset CreatefuncNameTableDirect( - flatbuffers::FlatBufferBuilder &_fbb, - const char *str = nullptr) { - auto str__ = str ? _fbb.CreateString(str) : 0; - return TEN::Save::CreatefuncNameTable( - _fbb, - str__); -} - -flatbuffers::Offset CreatefuncNameTable(flatbuffers::FlatBufferBuilder &_fbb, const funcNameTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct UnionTableT : public flatbuffers::NativeTable { - typedef UnionTable TableType; - TEN::Save::VarUnionUnion u{}; -}; - -struct UnionTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef UnionTableT NativeTableType; - typedef UnionTableBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_U_TYPE = 4, - VT_U = 6 - }; - TEN::Save::VarUnion u_type() const { - return static_cast(GetField(VT_U_TYPE, 0)); - } - const void *u() const { - return GetPointer(VT_U); - } - template const T *u_as() const; - const TEN::Save::stringTable *u_as_str() const { - return u_type() == TEN::Save::VarUnion::str ? static_cast(u()) : nullptr; - } - const TEN::Save::ScriptTable *u_as_tab() const { - return u_type() == TEN::Save::VarUnion::tab ? static_cast(u()) : nullptr; - } - const TEN::Save::doubleTable *u_as_num() const { - return u_type() == TEN::Save::VarUnion::num ? static_cast(u()) : nullptr; - } - const TEN::Save::boolTable *u_as_boolean() const { - return u_type() == TEN::Save::VarUnion::boolean ? static_cast(u()) : nullptr; - } - const TEN::Save::vec2Table *u_as_vec2() const { - return u_type() == TEN::Save::VarUnion::vec2 ? static_cast(u()) : nullptr; - } - const TEN::Save::vec3Table *u_as_vec3() const { - return u_type() == TEN::Save::VarUnion::vec3 ? static_cast(u()) : nullptr; - } - const TEN::Save::rotationTable *u_as_rotation() const { - return u_type() == TEN::Save::VarUnion::rotation ? static_cast(u()) : nullptr; - } - const TEN::Save::colorTable *u_as_color() const { - return u_type() == TEN::Save::VarUnion::color ? static_cast(u()) : nullptr; - } - const TEN::Save::funcNameTable *u_as_funcName() const { - return u_type() == TEN::Save::VarUnion::funcName ? static_cast(u()) : nullptr; - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_U_TYPE) && - VerifyOffset(verifier, VT_U) && - VerifyVarUnion(verifier, u(), u_type()) && - verifier.EndTable(); - } - UnionTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(UnionTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnionTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -template<> inline const TEN::Save::stringTable *UnionTable::u_as() const { - return u_as_str(); -} - -template<> inline const TEN::Save::ScriptTable *UnionTable::u_as() const { - return u_as_tab(); -} - -template<> inline const TEN::Save::doubleTable *UnionTable::u_as() const { - return u_as_num(); -} - -template<> inline const TEN::Save::boolTable *UnionTable::u_as() const { - return u_as_boolean(); -} - -template<> inline const TEN::Save::vec2Table *UnionTable::u_as() const { - return u_as_vec2(); -} - -template<> inline const TEN::Save::vec3Table *UnionTable::u_as() const { - return u_as_vec3(); -} - -template<> inline const TEN::Save::rotationTable *UnionTable::u_as() const { - return u_as_rotation(); -} - -template<> inline const TEN::Save::colorTable *UnionTable::u_as() const { - return u_as_color(); -} - -template<> inline const TEN::Save::funcNameTable *UnionTable::u_as() const { - return u_as_funcName(); -} - -struct UnionTableBuilder { - typedef UnionTable Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_u_type(TEN::Save::VarUnion u_type) { - fbb_.AddElement(UnionTable::VT_U_TYPE, static_cast(u_type), 0); - } - void add_u(flatbuffers::Offset u) { - fbb_.AddOffset(UnionTable::VT_U, u); - } - explicit UnionTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateUnionTable( - flatbuffers::FlatBufferBuilder &_fbb, - TEN::Save::VarUnion u_type = TEN::Save::VarUnion::NONE, - flatbuffers::Offset u = 0) { - UnionTableBuilder builder_(_fbb); - builder_.add_u(u); - builder_.add_u_type(u_type); - return builder_.Finish(); -} - -struct UnionTable::Traits { - using type = UnionTable; - static auto constexpr Create = CreateUnionTable; -}; - -flatbuffers::Offset CreateUnionTable(flatbuffers::FlatBufferBuilder &_fbb, const UnionTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct UnionVecT : public flatbuffers::NativeTable { - typedef UnionVec TableType; - std::vector> members{}; -}; - -struct UnionVec FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef UnionVecT NativeTableType; - typedef UnionVecBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_MEMBERS = 4 - }; - const flatbuffers::Vector> *members() const { - return GetPointer> *>(VT_MEMBERS); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_MEMBERS) && - verifier.VerifyVector(members()) && - verifier.VerifyVectorOfTables(members()) && - verifier.EndTable(); - } - UnionVecT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(UnionVecT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnionVecT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct UnionVecBuilder { - typedef UnionVec Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_members(flatbuffers::Offset>> members) { - fbb_.AddOffset(UnionVec::VT_MEMBERS, members); - } - explicit UnionVecBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateUnionVec( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset>> members = 0) { - UnionVecBuilder builder_(_fbb); - builder_.add_members(members); - return builder_.Finish(); -} - -struct UnionVec::Traits { - using type = UnionVec; - static auto constexpr Create = CreateUnionVec; -}; - -inline flatbuffers::Offset CreateUnionVecDirect( - flatbuffers::FlatBufferBuilder &_fbb, - const std::vector> *members = nullptr) { - auto members__ = members ? _fbb.CreateVector>(*members) : 0; - return TEN::Save::CreateUnionVec( - _fbb, - members__); -} - -flatbuffers::Offset CreateUnionVec(flatbuffers::FlatBufferBuilder &_fbb, const UnionVecT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct SaveGameHeaderT : public flatbuffers::NativeTable { - typedef SaveGameHeader TableType; - std::string level_name{}; - int32_t days = 0; - int32_t hours = 0; - int32_t minutes = 0; - int32_t seconds = 0; - int32_t level = 0; - int32_t timer = 0; - int32_t count = 0; -}; - -struct SaveGameHeader FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef SaveGameHeaderT NativeTableType; - typedef SaveGameHeaderBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_LEVEL_NAME = 4, - VT_DAYS = 6, - VT_HOURS = 8, - VT_MINUTES = 10, - VT_SECONDS = 12, - VT_LEVEL = 14, - VT_TIMER = 16, - VT_COUNT = 18 - }; - const flatbuffers::String *level_name() const { - return GetPointer(VT_LEVEL_NAME); - } - int32_t days() const { - return GetField(VT_DAYS, 0); - } - int32_t hours() const { - return GetField(VT_HOURS, 0); - } - int32_t minutes() const { - return GetField(VT_MINUTES, 0); - } - int32_t seconds() const { - return GetField(VT_SECONDS, 0); - } - int32_t level() const { - return GetField(VT_LEVEL, 0); - } - int32_t timer() const { - return GetField(VT_TIMER, 0); - } - int32_t count() const { - return GetField(VT_COUNT, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_LEVEL_NAME) && - verifier.VerifyString(level_name()) && - VerifyField(verifier, VT_DAYS) && - VerifyField(verifier, VT_HOURS) && - VerifyField(verifier, VT_MINUTES) && - VerifyField(verifier, VT_SECONDS) && - VerifyField(verifier, VT_LEVEL) && - VerifyField(verifier, VT_TIMER) && - VerifyField(verifier, VT_COUNT) && - verifier.EndTable(); - } - SaveGameHeaderT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(SaveGameHeaderT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameHeaderT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct SaveGameHeaderBuilder { - typedef SaveGameHeader Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_level_name(flatbuffers::Offset level_name) { - fbb_.AddOffset(SaveGameHeader::VT_LEVEL_NAME, level_name); - } - void add_days(int32_t days) { - fbb_.AddElement(SaveGameHeader::VT_DAYS, days, 0); - } - void add_hours(int32_t hours) { - fbb_.AddElement(SaveGameHeader::VT_HOURS, hours, 0); - } - void add_minutes(int32_t minutes) { - fbb_.AddElement(SaveGameHeader::VT_MINUTES, minutes, 0); - } - void add_seconds(int32_t seconds) { - fbb_.AddElement(SaveGameHeader::VT_SECONDS, seconds, 0); - } - void add_level(int32_t level) { - fbb_.AddElement(SaveGameHeader::VT_LEVEL, level, 0); - } - void add_timer(int32_t timer) { - fbb_.AddElement(SaveGameHeader::VT_TIMER, timer, 0); - } - void add_count(int32_t count) { - fbb_.AddElement(SaveGameHeader::VT_COUNT, count, 0); - } - explicit SaveGameHeaderBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateSaveGameHeader( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset level_name = 0, - int32_t days = 0, - int32_t hours = 0, - int32_t minutes = 0, - int32_t seconds = 0, - int32_t level = 0, - int32_t timer = 0, - int32_t count = 0) { - SaveGameHeaderBuilder builder_(_fbb); - builder_.add_count(count); - builder_.add_timer(timer); - builder_.add_level(level); - builder_.add_seconds(seconds); - builder_.add_minutes(minutes); - builder_.add_hours(hours); - builder_.add_days(days); - builder_.add_level_name(level_name); - return builder_.Finish(); -} - -struct SaveGameHeader::Traits { - using type = SaveGameHeader; - static auto constexpr Create = CreateSaveGameHeader; -}; - -inline flatbuffers::Offset CreateSaveGameHeaderDirect( - flatbuffers::FlatBufferBuilder &_fbb, - const char *level_name = nullptr, - int32_t days = 0, - int32_t hours = 0, - int32_t minutes = 0, - int32_t seconds = 0, - int32_t level = 0, - int32_t timer = 0, - int32_t count = 0) { - auto level_name__ = level_name ? _fbb.CreateString(level_name) : 0; - return TEN::Save::CreateSaveGameHeader( - _fbb, - level_name__, - days, - hours, - minutes, - seconds, - level, - timer, - count); -} - -flatbuffers::Offset CreateSaveGameHeader(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameHeaderT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct SaveGameStatisticsT : public flatbuffers::NativeTable { - typedef SaveGameStatistics TableType; - int32_t ammo_hits = 0; - int32_t ammo_used = 0; - int32_t medipacks_used = 0; - int32_t distance = 0; - int32_t kills = 0; - int32_t secrets = 0; - int32_t timer = 0; -}; - -struct SaveGameStatistics FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef SaveGameStatisticsT NativeTableType; - typedef SaveGameStatisticsBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_AMMO_HITS = 4, - VT_AMMO_USED = 6, - VT_MEDIPACKS_USED = 8, - VT_DISTANCE = 10, - VT_KILLS = 12, - VT_SECRETS = 14, - VT_TIMER = 16 - }; - int32_t ammo_hits() const { - return GetField(VT_AMMO_HITS, 0); - } - int32_t ammo_used() const { - return GetField(VT_AMMO_USED, 0); - } - int32_t medipacks_used() const { - return GetField(VT_MEDIPACKS_USED, 0); - } - int32_t distance() const { - return GetField(VT_DISTANCE, 0); - } - int32_t kills() const { - return GetField(VT_KILLS, 0); - } - int32_t secrets() const { - return GetField(VT_SECRETS, 0); - } - int32_t timer() const { - return GetField(VT_TIMER, 0); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyField(verifier, VT_AMMO_HITS) && - VerifyField(verifier, VT_AMMO_USED) && - VerifyField(verifier, VT_MEDIPACKS_USED) && - VerifyField(verifier, VT_DISTANCE) && - VerifyField(verifier, VT_KILLS) && - VerifyField(verifier, VT_SECRETS) && - VerifyField(verifier, VT_TIMER) && - verifier.EndTable(); - } - SaveGameStatisticsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(SaveGameStatisticsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameStatisticsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct SaveGameStatisticsBuilder { - typedef SaveGameStatistics Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_ammo_hits(int32_t ammo_hits) { - fbb_.AddElement(SaveGameStatistics::VT_AMMO_HITS, ammo_hits, 0); - } - void add_ammo_used(int32_t ammo_used) { - fbb_.AddElement(SaveGameStatistics::VT_AMMO_USED, ammo_used, 0); - } - void add_medipacks_used(int32_t medipacks_used) { - fbb_.AddElement(SaveGameStatistics::VT_MEDIPACKS_USED, medipacks_used, 0); - } - void add_distance(int32_t distance) { - fbb_.AddElement(SaveGameStatistics::VT_DISTANCE, distance, 0); - } - void add_kills(int32_t kills) { - fbb_.AddElement(SaveGameStatistics::VT_KILLS, kills, 0); - } - void add_secrets(int32_t secrets) { - fbb_.AddElement(SaveGameStatistics::VT_SECRETS, secrets, 0); - } - void add_timer(int32_t timer) { - fbb_.AddElement(SaveGameStatistics::VT_TIMER, timer, 0); - } - explicit SaveGameStatisticsBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateSaveGameStatistics( - flatbuffers::FlatBufferBuilder &_fbb, - int32_t ammo_hits = 0, - int32_t ammo_used = 0, - int32_t medipacks_used = 0, - int32_t distance = 0, - int32_t kills = 0, - int32_t secrets = 0, - int32_t timer = 0) { - SaveGameStatisticsBuilder builder_(_fbb); - builder_.add_timer(timer); - builder_.add_secrets(secrets); - builder_.add_kills(kills); - builder_.add_distance(distance); - builder_.add_medipacks_used(medipacks_used); - builder_.add_ammo_used(ammo_used); - builder_.add_ammo_hits(ammo_hits); - return builder_.Finish(); -} - -struct SaveGameStatistics::Traits { - using type = SaveGameStatistics; - static auto constexpr Create = CreateSaveGameStatistics; -}; - -flatbuffers::Offset CreateSaveGameStatistics(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameStatisticsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -struct SaveGameT : public flatbuffers::NativeTable { - typedef SaveGame TableType; - std::unique_ptr header{}; - std::unique_ptr game{}; - std::unique_ptr level{}; - std::unique_ptr lara{}; - std::vector> rooms{}; - std::vector> items{}; - int32_t next_item_free = 0; - int32_t next_item_active = 0; - std::vector room_items{}; - std::vector> fxinfos{}; - int32_t next_fx_free = 0; - int32_t next_fx_active = 0; - std::vector> fixed_cameras{}; - std::vector> sinks{}; - std::vector> static_meshes{}; - std::vector> flyby_cameras{}; - std::vector> particles{}; - std::vector> rats{}; - std::vector> spiders{}; - std::vector> scarabs{}; - std::vector> bats{}; - std::vector flip_maps{}; - std::vector flip_stats{}; - int32_t flip_effect = 0; - int32_t flip_timer = 0; - int32_t flip_status = 0; - int16_t current_fov = 0; - std::vector action_queue{}; - std::string ambient_track{}; - uint64_t ambient_position = 0; - std::string oneshot_track{}; - uint64_t oneshot_position = 0; - std::vector cd_flags{}; - std::unique_ptr rope{}; - std::unique_ptr pendulum{}; - std::unique_ptr alternate_pendulum{}; - std::vector> volumes{}; - std::vector> call_counters{}; - std::unique_ptr script_vars{}; - std::vector callbacks_pre_start{}; - std::vector callbacks_post_start{}; - std::vector callbacks_pre_end{}; - std::vector callbacks_post_end{}; - std::vector callbacks_pre_save{}; - std::vector callbacks_post_save{}; - std::vector callbacks_pre_load{}; - std::vector callbacks_post_load{}; - std::vector callbacks_pre_control{}; - std::vector callbacks_post_control{}; -}; - -struct SaveGame FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { - typedef SaveGameT NativeTableType; - typedef SaveGameBuilder Builder; - struct Traits; - enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { - VT_HEADER = 4, - VT_GAME = 6, - VT_LEVEL = 8, - VT_LARA = 10, - VT_ROOMS = 12, - VT_ITEMS = 14, - VT_NEXT_ITEM_FREE = 16, - VT_NEXT_ITEM_ACTIVE = 18, - VT_ROOM_ITEMS = 20, - VT_FXINFOS = 22, - VT_NEXT_FX_FREE = 24, - VT_NEXT_FX_ACTIVE = 26, - VT_FIXED_CAMERAS = 28, - VT_SINKS = 30, - VT_STATIC_MESHES = 32, - VT_FLYBY_CAMERAS = 34, - VT_PARTICLES = 36, - VT_RATS = 38, - VT_SPIDERS = 40, - VT_SCARABS = 42, - VT_BATS = 44, - VT_FLIP_MAPS = 46, - VT_FLIP_STATS = 48, - VT_FLIP_EFFECT = 50, - VT_FLIP_TIMER = 52, - VT_FLIP_STATUS = 54, - VT_CURRENT_FOV = 56, - VT_ACTION_QUEUE = 58, - VT_AMBIENT_TRACK = 60, - VT_AMBIENT_POSITION = 62, - VT_ONESHOT_TRACK = 64, - VT_ONESHOT_POSITION = 66, - VT_CD_FLAGS = 68, - VT_ROPE = 70, - VT_PENDULUM = 72, - VT_ALTERNATE_PENDULUM = 74, - VT_VOLUMES = 76, - VT_CALL_COUNTERS = 78, - VT_SCRIPT_VARS = 80, - VT_CALLBACKS_PRE_START = 82, - VT_CALLBACKS_POST_START = 84, - VT_CALLBACKS_PRE_END = 86, - VT_CALLBACKS_POST_END = 88, - VT_CALLBACKS_PRE_SAVE = 90, - VT_CALLBACKS_POST_SAVE = 92, - VT_CALLBACKS_PRE_LOAD = 94, - VT_CALLBACKS_POST_LOAD = 96, - VT_CALLBACKS_PRE_CONTROL = 98, - VT_CALLBACKS_POST_CONTROL = 100 - }; - const TEN::Save::SaveGameHeader *header() const { - return GetPointer(VT_HEADER); - } - const TEN::Save::SaveGameStatistics *game() const { - return GetPointer(VT_GAME); - } - const TEN::Save::SaveGameStatistics *level() const { - return GetPointer(VT_LEVEL); - } - const TEN::Save::Lara *lara() const { - return GetPointer(VT_LARA); - } - const flatbuffers::Vector> *rooms() const { - return GetPointer> *>(VT_ROOMS); - } - const flatbuffers::Vector> *items() const { - return GetPointer> *>(VT_ITEMS); - } - int32_t next_item_free() const { - return GetField(VT_NEXT_ITEM_FREE, 0); - } - int32_t next_item_active() const { - return GetField(VT_NEXT_ITEM_ACTIVE, 0); - } - const flatbuffers::Vector *room_items() const { - return GetPointer *>(VT_ROOM_ITEMS); - } - const flatbuffers::Vector> *fxinfos() const { - return GetPointer> *>(VT_FXINFOS); - } - int32_t next_fx_free() const { - return GetField(VT_NEXT_FX_FREE, 0); - } - int32_t next_fx_active() const { - return GetField(VT_NEXT_FX_ACTIVE, 0); - } - const flatbuffers::Vector> *fixed_cameras() const { - return GetPointer> *>(VT_FIXED_CAMERAS); - } - const flatbuffers::Vector> *sinks() const { - return GetPointer> *>(VT_SINKS); - } - const flatbuffers::Vector> *static_meshes() const { - return GetPointer> *>(VT_STATIC_MESHES); - } - const flatbuffers::Vector> *flyby_cameras() const { - return GetPointer> *>(VT_FLYBY_CAMERAS); - } - const flatbuffers::Vector> *particles() const { - return GetPointer> *>(VT_PARTICLES); - } - const flatbuffers::Vector> *rats() const { - return GetPointer> *>(VT_RATS); - } - const flatbuffers::Vector> *spiders() const { - return GetPointer> *>(VT_SPIDERS); - } - const flatbuffers::Vector> *scarabs() const { - return GetPointer> *>(VT_SCARABS); - } - const flatbuffers::Vector> *bats() const { - return GetPointer> *>(VT_BATS); - } - const flatbuffers::Vector *flip_maps() const { - return GetPointer *>(VT_FLIP_MAPS); - } - const flatbuffers::Vector *flip_stats() const { - return GetPointer *>(VT_FLIP_STATS); - } - int32_t flip_effect() const { - return GetField(VT_FLIP_EFFECT, 0); - } - int32_t flip_timer() const { - return GetField(VT_FLIP_TIMER, 0); - } - int32_t flip_status() const { - return GetField(VT_FLIP_STATUS, 0); - } - int16_t current_fov() const { - return GetField(VT_CURRENT_FOV, 0); - } - const flatbuffers::Vector *action_queue() const { - return GetPointer *>(VT_ACTION_QUEUE); - } - const flatbuffers::String *ambient_track() const { - return GetPointer(VT_AMBIENT_TRACK); - } - uint64_t ambient_position() const { - return GetField(VT_AMBIENT_POSITION, 0); - } - const flatbuffers::String *oneshot_track() const { - return GetPointer(VT_ONESHOT_TRACK); - } - uint64_t oneshot_position() const { - return GetField(VT_ONESHOT_POSITION, 0); - } - const flatbuffers::Vector *cd_flags() const { - return GetPointer *>(VT_CD_FLAGS); - } - const TEN::Save::Rope *rope() const { - return GetPointer(VT_ROPE); - } - const TEN::Save::Pendulum *pendulum() const { - return GetPointer(VT_PENDULUM); - } - const TEN::Save::Pendulum *alternate_pendulum() const { - return GetPointer(VT_ALTERNATE_PENDULUM); - } - const flatbuffers::Vector> *volumes() const { - return GetPointer> *>(VT_VOLUMES); - } - const flatbuffers::Vector> *call_counters() const { - return GetPointer> *>(VT_CALL_COUNTERS); - } - const TEN::Save::UnionVec *script_vars() const { - return GetPointer(VT_SCRIPT_VARS); - } - const flatbuffers::Vector> *callbacks_pre_start() const { - return GetPointer> *>(VT_CALLBACKS_PRE_START); - } - const flatbuffers::Vector> *callbacks_post_start() const { - return GetPointer> *>(VT_CALLBACKS_POST_START); - } - const flatbuffers::Vector> *callbacks_pre_end() const { - return GetPointer> *>(VT_CALLBACKS_PRE_END); - } - const flatbuffers::Vector> *callbacks_post_end() const { - return GetPointer> *>(VT_CALLBACKS_POST_END); - } - const flatbuffers::Vector> *callbacks_pre_save() const { - return GetPointer> *>(VT_CALLBACKS_PRE_SAVE); - } - const flatbuffers::Vector> *callbacks_post_save() const { - return GetPointer> *>(VT_CALLBACKS_POST_SAVE); - } - const flatbuffers::Vector> *callbacks_pre_load() const { - return GetPointer> *>(VT_CALLBACKS_PRE_LOAD); - } - const flatbuffers::Vector> *callbacks_post_load() const { - return GetPointer> *>(VT_CALLBACKS_POST_LOAD); - } - const flatbuffers::Vector> *callbacks_pre_control() const { - return GetPointer> *>(VT_CALLBACKS_PRE_CONTROL); - } - const flatbuffers::Vector> *callbacks_post_control() const { - return GetPointer> *>(VT_CALLBACKS_POST_CONTROL); - } - bool Verify(flatbuffers::Verifier &verifier) const { - return VerifyTableStart(verifier) && - VerifyOffset(verifier, VT_HEADER) && - verifier.VerifyTable(header()) && - VerifyOffset(verifier, VT_GAME) && - verifier.VerifyTable(game()) && - VerifyOffset(verifier, VT_LEVEL) && - verifier.VerifyTable(level()) && - VerifyOffset(verifier, VT_LARA) && - verifier.VerifyTable(lara()) && - VerifyOffset(verifier, VT_ROOMS) && - verifier.VerifyVector(rooms()) && - verifier.VerifyVectorOfTables(rooms()) && - VerifyOffset(verifier, VT_ITEMS) && - verifier.VerifyVector(items()) && - verifier.VerifyVectorOfTables(items()) && - VerifyField(verifier, VT_NEXT_ITEM_FREE) && - VerifyField(verifier, VT_NEXT_ITEM_ACTIVE) && - VerifyOffset(verifier, VT_ROOM_ITEMS) && - verifier.VerifyVector(room_items()) && - VerifyOffset(verifier, VT_FXINFOS) && - verifier.VerifyVector(fxinfos()) && - verifier.VerifyVectorOfTables(fxinfos()) && - VerifyField(verifier, VT_NEXT_FX_FREE) && - VerifyField(verifier, VT_NEXT_FX_ACTIVE) && - VerifyOffset(verifier, VT_FIXED_CAMERAS) && - verifier.VerifyVector(fixed_cameras()) && - verifier.VerifyVectorOfTables(fixed_cameras()) && - VerifyOffset(verifier, VT_SINKS) && - verifier.VerifyVector(sinks()) && - verifier.VerifyVectorOfTables(sinks()) && - VerifyOffset(verifier, VT_STATIC_MESHES) && - verifier.VerifyVector(static_meshes()) && - verifier.VerifyVectorOfTables(static_meshes()) && - VerifyOffset(verifier, VT_FLYBY_CAMERAS) && - verifier.VerifyVector(flyby_cameras()) && - verifier.VerifyVectorOfTables(flyby_cameras()) && - VerifyOffset(verifier, VT_PARTICLES) && - verifier.VerifyVector(particles()) && - verifier.VerifyVectorOfTables(particles()) && - VerifyOffset(verifier, VT_RATS) && - verifier.VerifyVector(rats()) && - verifier.VerifyVectorOfTables(rats()) && - VerifyOffset(verifier, VT_SPIDERS) && - verifier.VerifyVector(spiders()) && - verifier.VerifyVectorOfTables(spiders()) && - VerifyOffset(verifier, VT_SCARABS) && - verifier.VerifyVector(scarabs()) && - verifier.VerifyVectorOfTables(scarabs()) && - VerifyOffset(verifier, VT_BATS) && - verifier.VerifyVector(bats()) && - verifier.VerifyVectorOfTables(bats()) && - VerifyOffset(verifier, VT_FLIP_MAPS) && - verifier.VerifyVector(flip_maps()) && - VerifyOffset(verifier, VT_FLIP_STATS) && - verifier.VerifyVector(flip_stats()) && - VerifyField(verifier, VT_FLIP_EFFECT) && - VerifyField(verifier, VT_FLIP_TIMER) && - VerifyField(verifier, VT_FLIP_STATUS) && - VerifyField(verifier, VT_CURRENT_FOV) && - VerifyOffset(verifier, VT_ACTION_QUEUE) && - verifier.VerifyVector(action_queue()) && - VerifyOffset(verifier, VT_AMBIENT_TRACK) && - verifier.VerifyString(ambient_track()) && - VerifyField(verifier, VT_AMBIENT_POSITION) && - VerifyOffset(verifier, VT_ONESHOT_TRACK) && - verifier.VerifyString(oneshot_track()) && - VerifyField(verifier, VT_ONESHOT_POSITION) && - VerifyOffset(verifier, VT_CD_FLAGS) && - verifier.VerifyVector(cd_flags()) && - VerifyOffset(verifier, VT_ROPE) && - verifier.VerifyTable(rope()) && - VerifyOffset(verifier, VT_PENDULUM) && - verifier.VerifyTable(pendulum()) && - VerifyOffset(verifier, VT_ALTERNATE_PENDULUM) && - verifier.VerifyTable(alternate_pendulum()) && - VerifyOffset(verifier, VT_VOLUMES) && - verifier.VerifyVector(volumes()) && - verifier.VerifyVectorOfTables(volumes()) && - VerifyOffset(verifier, VT_CALL_COUNTERS) && - verifier.VerifyVector(call_counters()) && - verifier.VerifyVectorOfTables(call_counters()) && - VerifyOffset(verifier, VT_SCRIPT_VARS) && - verifier.VerifyTable(script_vars()) && - VerifyOffset(verifier, VT_CALLBACKS_PRE_START) && - verifier.VerifyVector(callbacks_pre_start()) && - verifier.VerifyVectorOfStrings(callbacks_pre_start()) && - VerifyOffset(verifier, VT_CALLBACKS_POST_START) && - verifier.VerifyVector(callbacks_post_start()) && - verifier.VerifyVectorOfStrings(callbacks_post_start()) && - VerifyOffset(verifier, VT_CALLBACKS_PRE_END) && - verifier.VerifyVector(callbacks_pre_end()) && - verifier.VerifyVectorOfStrings(callbacks_pre_end()) && - VerifyOffset(verifier, VT_CALLBACKS_POST_END) && - verifier.VerifyVector(callbacks_post_end()) && - verifier.VerifyVectorOfStrings(callbacks_post_end()) && - VerifyOffset(verifier, VT_CALLBACKS_PRE_SAVE) && - verifier.VerifyVector(callbacks_pre_save()) && - verifier.VerifyVectorOfStrings(callbacks_pre_save()) && - VerifyOffset(verifier, VT_CALLBACKS_POST_SAVE) && - verifier.VerifyVector(callbacks_post_save()) && - verifier.VerifyVectorOfStrings(callbacks_post_save()) && - VerifyOffset(verifier, VT_CALLBACKS_PRE_LOAD) && - verifier.VerifyVector(callbacks_pre_load()) && - verifier.VerifyVectorOfStrings(callbacks_pre_load()) && - VerifyOffset(verifier, VT_CALLBACKS_POST_LOAD) && - verifier.VerifyVector(callbacks_post_load()) && - verifier.VerifyVectorOfStrings(callbacks_post_load()) && - VerifyOffset(verifier, VT_CALLBACKS_PRE_CONTROL) && - verifier.VerifyVector(callbacks_pre_control()) && - verifier.VerifyVectorOfStrings(callbacks_pre_control()) && - VerifyOffset(verifier, VT_CALLBACKS_POST_CONTROL) && - verifier.VerifyVector(callbacks_post_control()) && - verifier.VerifyVectorOfStrings(callbacks_post_control()) && - verifier.EndTable(); - } - SaveGameT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; - void UnPackTo(SaveGameT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; - static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); -}; - -struct SaveGameBuilder { - typedef SaveGame Table; - flatbuffers::FlatBufferBuilder &fbb_; - flatbuffers::uoffset_t start_; - void add_header(flatbuffers::Offset header) { - fbb_.AddOffset(SaveGame::VT_HEADER, header); - } - void add_game(flatbuffers::Offset game) { - fbb_.AddOffset(SaveGame::VT_GAME, game); - } - void add_level(flatbuffers::Offset level) { - fbb_.AddOffset(SaveGame::VT_LEVEL, level); - } - void add_lara(flatbuffers::Offset lara) { - fbb_.AddOffset(SaveGame::VT_LARA, lara); - } - void add_rooms(flatbuffers::Offset>> rooms) { - fbb_.AddOffset(SaveGame::VT_ROOMS, rooms); - } - void add_items(flatbuffers::Offset>> items) { - fbb_.AddOffset(SaveGame::VT_ITEMS, items); - } - void add_next_item_free(int32_t next_item_free) { - fbb_.AddElement(SaveGame::VT_NEXT_ITEM_FREE, next_item_free, 0); - } - void add_next_item_active(int32_t next_item_active) { - fbb_.AddElement(SaveGame::VT_NEXT_ITEM_ACTIVE, next_item_active, 0); - } - void add_room_items(flatbuffers::Offset> room_items) { - fbb_.AddOffset(SaveGame::VT_ROOM_ITEMS, room_items); - } - void add_fxinfos(flatbuffers::Offset>> fxinfos) { - fbb_.AddOffset(SaveGame::VT_FXINFOS, fxinfos); - } - void add_next_fx_free(int32_t next_fx_free) { - fbb_.AddElement(SaveGame::VT_NEXT_FX_FREE, next_fx_free, 0); - } - void add_next_fx_active(int32_t next_fx_active) { - fbb_.AddElement(SaveGame::VT_NEXT_FX_ACTIVE, next_fx_active, 0); - } - void add_fixed_cameras(flatbuffers::Offset>> fixed_cameras) { - fbb_.AddOffset(SaveGame::VT_FIXED_CAMERAS, fixed_cameras); - } - void add_sinks(flatbuffers::Offset>> sinks) { - fbb_.AddOffset(SaveGame::VT_SINKS, sinks); - } - void add_static_meshes(flatbuffers::Offset>> static_meshes) { - fbb_.AddOffset(SaveGame::VT_STATIC_MESHES, static_meshes); - } - void add_flyby_cameras(flatbuffers::Offset>> flyby_cameras) { - fbb_.AddOffset(SaveGame::VT_FLYBY_CAMERAS, flyby_cameras); - } - void add_particles(flatbuffers::Offset>> particles) { - fbb_.AddOffset(SaveGame::VT_PARTICLES, particles); - } - void add_rats(flatbuffers::Offset>> rats) { - fbb_.AddOffset(SaveGame::VT_RATS, rats); - } - void add_spiders(flatbuffers::Offset>> spiders) { - fbb_.AddOffset(SaveGame::VT_SPIDERS, spiders); - } - void add_scarabs(flatbuffers::Offset>> scarabs) { - fbb_.AddOffset(SaveGame::VT_SCARABS, scarabs); - } - void add_bats(flatbuffers::Offset>> bats) { - fbb_.AddOffset(SaveGame::VT_BATS, bats); - } - void add_flip_maps(flatbuffers::Offset> flip_maps) { - fbb_.AddOffset(SaveGame::VT_FLIP_MAPS, flip_maps); - } - void add_flip_stats(flatbuffers::Offset> flip_stats) { - fbb_.AddOffset(SaveGame::VT_FLIP_STATS, flip_stats); - } - void add_flip_effect(int32_t flip_effect) { - fbb_.AddElement(SaveGame::VT_FLIP_EFFECT, flip_effect, 0); - } - void add_flip_timer(int32_t flip_timer) { - fbb_.AddElement(SaveGame::VT_FLIP_TIMER, flip_timer, 0); - } - void add_flip_status(int32_t flip_status) { - fbb_.AddElement(SaveGame::VT_FLIP_STATUS, flip_status, 0); - } - void add_current_fov(int16_t current_fov) { - fbb_.AddElement(SaveGame::VT_CURRENT_FOV, current_fov, 0); - } - void add_action_queue(flatbuffers::Offset> action_queue) { - fbb_.AddOffset(SaveGame::VT_ACTION_QUEUE, action_queue); - } - void add_ambient_track(flatbuffers::Offset ambient_track) { - fbb_.AddOffset(SaveGame::VT_AMBIENT_TRACK, ambient_track); - } - void add_ambient_position(uint64_t ambient_position) { - fbb_.AddElement(SaveGame::VT_AMBIENT_POSITION, ambient_position, 0); - } - void add_oneshot_track(flatbuffers::Offset oneshot_track) { - fbb_.AddOffset(SaveGame::VT_ONESHOT_TRACK, oneshot_track); - } - void add_oneshot_position(uint64_t oneshot_position) { - fbb_.AddElement(SaveGame::VT_ONESHOT_POSITION, oneshot_position, 0); - } - void add_cd_flags(flatbuffers::Offset> cd_flags) { - fbb_.AddOffset(SaveGame::VT_CD_FLAGS, cd_flags); - } - void add_rope(flatbuffers::Offset rope) { - fbb_.AddOffset(SaveGame::VT_ROPE, rope); - } - void add_pendulum(flatbuffers::Offset pendulum) { - fbb_.AddOffset(SaveGame::VT_PENDULUM, pendulum); - } - void add_alternate_pendulum(flatbuffers::Offset alternate_pendulum) { - fbb_.AddOffset(SaveGame::VT_ALTERNATE_PENDULUM, alternate_pendulum); - } - void add_volumes(flatbuffers::Offset>> volumes) { - fbb_.AddOffset(SaveGame::VT_VOLUMES, volumes); - } - void add_call_counters(flatbuffers::Offset>> call_counters) { - fbb_.AddOffset(SaveGame::VT_CALL_COUNTERS, call_counters); - } - void add_script_vars(flatbuffers::Offset script_vars) { - fbb_.AddOffset(SaveGame::VT_SCRIPT_VARS, script_vars); - } - void add_callbacks_pre_start(flatbuffers::Offset>> callbacks_pre_start) { - fbb_.AddOffset(SaveGame::VT_CALLBACKS_PRE_START, callbacks_pre_start); - } - void add_callbacks_post_start(flatbuffers::Offset>> callbacks_post_start) { - fbb_.AddOffset(SaveGame::VT_CALLBACKS_POST_START, callbacks_post_start); - } - void add_callbacks_pre_end(flatbuffers::Offset>> callbacks_pre_end) { - fbb_.AddOffset(SaveGame::VT_CALLBACKS_PRE_END, callbacks_pre_end); - } - void add_callbacks_post_end(flatbuffers::Offset>> callbacks_post_end) { - fbb_.AddOffset(SaveGame::VT_CALLBACKS_POST_END, callbacks_post_end); - } - void add_callbacks_pre_save(flatbuffers::Offset>> callbacks_pre_save) { - fbb_.AddOffset(SaveGame::VT_CALLBACKS_PRE_SAVE, callbacks_pre_save); - } - void add_callbacks_post_save(flatbuffers::Offset>> callbacks_post_save) { - fbb_.AddOffset(SaveGame::VT_CALLBACKS_POST_SAVE, callbacks_post_save); - } - void add_callbacks_pre_load(flatbuffers::Offset>> callbacks_pre_load) { - fbb_.AddOffset(SaveGame::VT_CALLBACKS_PRE_LOAD, callbacks_pre_load); - } - void add_callbacks_post_load(flatbuffers::Offset>> callbacks_post_load) { - fbb_.AddOffset(SaveGame::VT_CALLBACKS_POST_LOAD, callbacks_post_load); - } - void add_callbacks_pre_control(flatbuffers::Offset>> callbacks_pre_control) { - fbb_.AddOffset(SaveGame::VT_CALLBACKS_PRE_CONTROL, callbacks_pre_control); - } - void add_callbacks_post_control(flatbuffers::Offset>> callbacks_post_control) { - fbb_.AddOffset(SaveGame::VT_CALLBACKS_POST_CONTROL, callbacks_post_control); - } - explicit SaveGameBuilder(flatbuffers::FlatBufferBuilder &_fbb) - : fbb_(_fbb) { - start_ = fbb_.StartTable(); - } - flatbuffers::Offset Finish() { - const auto end = fbb_.EndTable(start_); - auto o = flatbuffers::Offset(end); - return o; - } -}; - -inline flatbuffers::Offset CreateSaveGame( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset header = 0, - flatbuffers::Offset game = 0, - flatbuffers::Offset level = 0, - flatbuffers::Offset lara = 0, - flatbuffers::Offset>> rooms = 0, - flatbuffers::Offset>> items = 0, - int32_t next_item_free = 0, - int32_t next_item_active = 0, - flatbuffers::Offset> room_items = 0, - flatbuffers::Offset>> fxinfos = 0, - int32_t next_fx_free = 0, - int32_t next_fx_active = 0, - flatbuffers::Offset>> fixed_cameras = 0, - flatbuffers::Offset>> sinks = 0, - flatbuffers::Offset>> static_meshes = 0, - flatbuffers::Offset>> flyby_cameras = 0, - flatbuffers::Offset>> particles = 0, - flatbuffers::Offset>> rats = 0, - flatbuffers::Offset>> spiders = 0, - flatbuffers::Offset>> scarabs = 0, - flatbuffers::Offset>> bats = 0, - flatbuffers::Offset> flip_maps = 0, - flatbuffers::Offset> flip_stats = 0, - int32_t flip_effect = 0, - int32_t flip_timer = 0, - int32_t flip_status = 0, - int16_t current_fov = 0, - flatbuffers::Offset> action_queue = 0, - flatbuffers::Offset ambient_track = 0, - uint64_t ambient_position = 0, - flatbuffers::Offset oneshot_track = 0, - uint64_t oneshot_position = 0, - flatbuffers::Offset> cd_flags = 0, - flatbuffers::Offset rope = 0, - flatbuffers::Offset pendulum = 0, - flatbuffers::Offset alternate_pendulum = 0, - flatbuffers::Offset>> volumes = 0, - flatbuffers::Offset>> call_counters = 0, - flatbuffers::Offset script_vars = 0, - flatbuffers::Offset>> callbacks_pre_start = 0, - flatbuffers::Offset>> callbacks_post_start = 0, - flatbuffers::Offset>> callbacks_pre_end = 0, - flatbuffers::Offset>> callbacks_post_end = 0, - flatbuffers::Offset>> callbacks_pre_save = 0, - flatbuffers::Offset>> callbacks_post_save = 0, - flatbuffers::Offset>> callbacks_pre_load = 0, - flatbuffers::Offset>> callbacks_post_load = 0, - flatbuffers::Offset>> callbacks_pre_control = 0, - flatbuffers::Offset>> callbacks_post_control = 0) { - SaveGameBuilder builder_(_fbb); - builder_.add_oneshot_position(oneshot_position); - builder_.add_ambient_position(ambient_position); - builder_.add_callbacks_post_control(callbacks_post_control); - builder_.add_callbacks_pre_control(callbacks_pre_control); - builder_.add_callbacks_post_load(callbacks_post_load); - builder_.add_callbacks_pre_load(callbacks_pre_load); - builder_.add_callbacks_post_save(callbacks_post_save); - builder_.add_callbacks_pre_save(callbacks_pre_save); - builder_.add_callbacks_post_end(callbacks_post_end); - builder_.add_callbacks_pre_end(callbacks_pre_end); - builder_.add_callbacks_post_start(callbacks_post_start); - builder_.add_callbacks_pre_start(callbacks_pre_start); - builder_.add_script_vars(script_vars); - builder_.add_call_counters(call_counters); - builder_.add_volumes(volumes); - builder_.add_alternate_pendulum(alternate_pendulum); - builder_.add_pendulum(pendulum); - builder_.add_rope(rope); - builder_.add_cd_flags(cd_flags); - builder_.add_oneshot_track(oneshot_track); - builder_.add_ambient_track(ambient_track); - builder_.add_action_queue(action_queue); - builder_.add_flip_status(flip_status); - builder_.add_flip_timer(flip_timer); - builder_.add_flip_effect(flip_effect); - builder_.add_flip_stats(flip_stats); - builder_.add_flip_maps(flip_maps); - builder_.add_bats(bats); - builder_.add_scarabs(scarabs); - builder_.add_spiders(spiders); - builder_.add_rats(rats); - builder_.add_particles(particles); - builder_.add_flyby_cameras(flyby_cameras); - builder_.add_static_meshes(static_meshes); - builder_.add_sinks(sinks); - builder_.add_fixed_cameras(fixed_cameras); - builder_.add_next_fx_active(next_fx_active); - builder_.add_next_fx_free(next_fx_free); - builder_.add_fxinfos(fxinfos); - builder_.add_room_items(room_items); - builder_.add_next_item_active(next_item_active); - builder_.add_next_item_free(next_item_free); - builder_.add_items(items); - builder_.add_rooms(rooms); - builder_.add_lara(lara); - builder_.add_level(level); - builder_.add_game(game); - builder_.add_header(header); - builder_.add_current_fov(current_fov); - return builder_.Finish(); -} - -struct SaveGame::Traits { - using type = SaveGame; - static auto constexpr Create = CreateSaveGame; -}; - -inline flatbuffers::Offset CreateSaveGameDirect( - flatbuffers::FlatBufferBuilder &_fbb, - flatbuffers::Offset header = 0, - flatbuffers::Offset game = 0, - flatbuffers::Offset level = 0, - flatbuffers::Offset lara = 0, - const std::vector> *rooms = nullptr, - const std::vector> *items = nullptr, - int32_t next_item_free = 0, - int32_t next_item_active = 0, - const std::vector *room_items = nullptr, - const std::vector> *fxinfos = nullptr, - int32_t next_fx_free = 0, - int32_t next_fx_active = 0, - const std::vector> *fixed_cameras = nullptr, - const std::vector> *sinks = nullptr, - const std::vector> *static_meshes = nullptr, - const std::vector> *flyby_cameras = nullptr, - const std::vector> *particles = nullptr, - const std::vector> *rats = nullptr, - const std::vector> *spiders = nullptr, - const std::vector> *scarabs = nullptr, - const std::vector> *bats = nullptr, - const std::vector *flip_maps = nullptr, - const std::vector *flip_stats = nullptr, - int32_t flip_effect = 0, - int32_t flip_timer = 0, - int32_t flip_status = 0, - int16_t current_fov = 0, - const std::vector *action_queue = nullptr, - const char *ambient_track = nullptr, - uint64_t ambient_position = 0, - const char *oneshot_track = nullptr, - uint64_t oneshot_position = 0, - const std::vector *cd_flags = nullptr, - flatbuffers::Offset rope = 0, - flatbuffers::Offset pendulum = 0, - flatbuffers::Offset alternate_pendulum = 0, - const std::vector> *volumes = nullptr, - const std::vector> *call_counters = nullptr, - flatbuffers::Offset script_vars = 0, - const std::vector> *callbacks_pre_start = nullptr, - const std::vector> *callbacks_post_start = nullptr, - const std::vector> *callbacks_pre_end = nullptr, - const std::vector> *callbacks_post_end = nullptr, - const std::vector> *callbacks_pre_save = nullptr, - const std::vector> *callbacks_post_save = nullptr, - const std::vector> *callbacks_pre_load = nullptr, - const std::vector> *callbacks_post_load = nullptr, - const std::vector> *callbacks_pre_control = nullptr, - const std::vector> *callbacks_post_control = nullptr) { - auto rooms__ = rooms ? _fbb.CreateVector>(*rooms) : 0; - auto items__ = items ? _fbb.CreateVector>(*items) : 0; - auto room_items__ = room_items ? _fbb.CreateVector(*room_items) : 0; - auto fxinfos__ = fxinfos ? _fbb.CreateVector>(*fxinfos) : 0; - auto fixed_cameras__ = fixed_cameras ? _fbb.CreateVector>(*fixed_cameras) : 0; - auto sinks__ = sinks ? _fbb.CreateVector>(*sinks) : 0; - auto static_meshes__ = static_meshes ? _fbb.CreateVector>(*static_meshes) : 0; - auto flyby_cameras__ = flyby_cameras ? _fbb.CreateVector>(*flyby_cameras) : 0; - auto particles__ = particles ? _fbb.CreateVector>(*particles) : 0; - auto rats__ = rats ? _fbb.CreateVector>(*rats) : 0; - auto spiders__ = spiders ? _fbb.CreateVector>(*spiders) : 0; - auto scarabs__ = scarabs ? _fbb.CreateVector>(*scarabs) : 0; - auto bats__ = bats ? _fbb.CreateVector>(*bats) : 0; - auto flip_maps__ = flip_maps ? _fbb.CreateVector(*flip_maps) : 0; - auto flip_stats__ = flip_stats ? _fbb.CreateVector(*flip_stats) : 0; - auto action_queue__ = action_queue ? _fbb.CreateVector(*action_queue) : 0; - auto ambient_track__ = ambient_track ? _fbb.CreateString(ambient_track) : 0; - auto oneshot_track__ = oneshot_track ? _fbb.CreateString(oneshot_track) : 0; - auto cd_flags__ = cd_flags ? _fbb.CreateVector(*cd_flags) : 0; - auto volumes__ = volumes ? _fbb.CreateVector>(*volumes) : 0; - auto call_counters__ = call_counters ? _fbb.CreateVector>(*call_counters) : 0; - auto callbacks_pre_start__ = callbacks_pre_start ? _fbb.CreateVector>(*callbacks_pre_start) : 0; - auto callbacks_post_start__ = callbacks_post_start ? _fbb.CreateVector>(*callbacks_post_start) : 0; - auto callbacks_pre_end__ = callbacks_pre_end ? _fbb.CreateVector>(*callbacks_pre_end) : 0; - auto callbacks_post_end__ = callbacks_post_end ? _fbb.CreateVector>(*callbacks_post_end) : 0; - auto callbacks_pre_save__ = callbacks_pre_save ? _fbb.CreateVector>(*callbacks_pre_save) : 0; - auto callbacks_post_save__ = callbacks_post_save ? _fbb.CreateVector>(*callbacks_post_save) : 0; - auto callbacks_pre_load__ = callbacks_pre_load ? _fbb.CreateVector>(*callbacks_pre_load) : 0; - auto callbacks_post_load__ = callbacks_post_load ? _fbb.CreateVector>(*callbacks_post_load) : 0; - auto callbacks_pre_control__ = callbacks_pre_control ? _fbb.CreateVector>(*callbacks_pre_control) : 0; - auto callbacks_post_control__ = callbacks_post_control ? _fbb.CreateVector>(*callbacks_post_control) : 0; - return TEN::Save::CreateSaveGame( - _fbb, - header, - game, - level, - lara, - rooms__, - items__, - next_item_free, - next_item_active, - room_items__, - fxinfos__, - next_fx_free, - next_fx_active, - fixed_cameras__, - sinks__, - static_meshes__, - flyby_cameras__, - particles__, - rats__, - spiders__, - scarabs__, - bats__, - flip_maps__, - flip_stats__, - flip_effect, - flip_timer, - flip_status, - current_fov, - action_queue__, - ambient_track__, - ambient_position, - oneshot_track__, - oneshot_position, - cd_flags__, - rope, - pendulum, - alternate_pendulum, - volumes__, - call_counters__, - script_vars, - callbacks_pre_start__, - callbacks_post_start__, - callbacks_pre_end__, - callbacks_post_end__, - callbacks_pre_save__, - callbacks_post_save__, - callbacks_pre_load__, - callbacks_post_load__, - callbacks_pre_control__, - callbacks_post_control__); -} - -flatbuffers::Offset CreateSaveGame(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); - -inline RoomT *Room::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Room::UnPackTo(RoomT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = index(); _o->index = _e; } - { auto _e = name(); if (_e) _o->name = _e->str(); } - { auto _e = flags(); _o->flags = _e; } - { auto _e = reverb_type(); _o->reverb_type = _e; } -} - -inline flatbuffers::Offset Room::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RoomT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateRoom(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateRoom(flatbuffers::FlatBufferBuilder &_fbb, const RoomT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RoomT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _index = _o->index; - auto _name = _o->name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->name); - auto _flags = _o->flags; - auto _reverb_type = _o->reverb_type; - return TEN::Save::CreateRoom( - _fbb, - _index, - _name, - _flags, - _reverb_type); -} - -inline ItemT *Item::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Item::UnPackTo(ItemT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = active_state(); _o->active_state = _e; } - { auto _e = anim_number(); _o->anim_number = _e; } - { auto _e = frame_number(); _o->frame_number = _e; } - { auto _e = is_airborne(); _o->is_airborne = _e; } - { auto _e = required_state(); _o->required_state = _e; } - { auto _e = target_state(); _o->target_state = _e; } - { auto _e = velocity(); if (_e) _o->velocity = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = floor(); _o->floor = _e; } - { auto _e = touch_bits(); _o->touch_bits = _e; } - { auto _e = mesh_bits(); _o->mesh_bits = _e; } - { auto _e = object_id(); _o->object_id = _e; } - { auto _e = room_number(); _o->room_number = _e; } - { auto _e = hit_points(); _o->hit_points = _e; } - { auto _e = box_number(); _o->box_number = _e; } - { auto _e = timer(); _o->timer = _e; } - { auto _e = color(); if (_e) _o->color = std::unique_ptr(new TEN::Save::Vector4(*_e)); } - { auto _e = flags(); _o->flags = _e; } - { auto _e = trigger_flags(); _o->trigger_flags = _e; } - { auto _e = carried_item(); _o->carried_item = _e; } - { auto _e = after_death(); _o->after_death = _e; } - { auto _e = item_flags(); if (_e) { _o->item_flags.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->item_flags[_i] = _e->Get(_i); } } } - { auto _e = pose(); if (_e) _o->pose = std::unique_ptr(new TEN::Save::Position(*_e)); } - { auto _e = next_item(); _o->next_item = _e; } - { auto _e = next_item_active(); _o->next_item_active = _e; } - { auto _e = active(); _o->active = _e; } - { auto _e = status(); _o->status = _e; } - { auto _e = hit_stauts(); _o->hit_stauts = _e; } - { auto _e = collidable(); _o->collidable = _e; } - { auto _e = looked_at(); _o->looked_at = _e; } - { auto _e = ai_bits(); _o->ai_bits = _e; } - { auto _e = data_type(); _o->data.type = _e; } - { auto _e = data(); if (_e) _o->data.value = TEN::Save::ItemDataUnion::UnPack(_e, data_type(), _resolver); } - { auto _e = base_mesh(); _o->base_mesh = _e; } - { auto _e = mesh_pointers(); if (_e) { _o->mesh_pointers.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->mesh_pointers[_i] = _e->Get(_i); } } } - { auto _e = effect_type(); _o->effect_type = _e; } - { auto _e = effect_light_colour(); if (_e) _o->effect_light_colour = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = effect_primary_colour(); if (_e) _o->effect_primary_colour = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = effect_secondary_colour(); if (_e) _o->effect_secondary_colour = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = effect_count(); _o->effect_count = _e; } - { auto _e = lua_name(); if (_e) _o->lua_name = _e->str(); } - { auto _e = lua_on_killed_name(); if (_e) _o->lua_on_killed_name = _e->str(); } - { auto _e = lua_on_hit_name(); if (_e) _o->lua_on_hit_name = _e->str(); } - { auto _e = lua_on_collided_with_object_name(); if (_e) _o->lua_on_collided_with_object_name = _e->str(); } - { auto _e = lua_on_collided_with_room_name(); if (_e) _o->lua_on_collided_with_room_name = _e->str(); } -} - -inline flatbuffers::Offset Item::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ItemT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateItem(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateItem(flatbuffers::FlatBufferBuilder &_fbb, const ItemT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ItemT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _active_state = _o->active_state; - auto _anim_number = _o->anim_number; - auto _frame_number = _o->frame_number; - auto _is_airborne = _o->is_airborne; - auto _required_state = _o->required_state; - auto _target_state = _o->target_state; - auto _velocity = _o->velocity ? _o->velocity.get() : 0; - auto _floor = _o->floor; - auto _touch_bits = _o->touch_bits; - auto _mesh_bits = _o->mesh_bits; - auto _object_id = _o->object_id; - auto _room_number = _o->room_number; - auto _hit_points = _o->hit_points; - auto _box_number = _o->box_number; - auto _timer = _o->timer; - auto _color = _o->color ? _o->color.get() : 0; - auto _flags = _o->flags; - auto _trigger_flags = _o->trigger_flags; - auto _carried_item = _o->carried_item; - auto _after_death = _o->after_death; - auto _item_flags = _fbb.CreateVector(_o->item_flags); - auto _pose = _o->pose ? _o->pose.get() : 0; - auto _next_item = _o->next_item; - auto _next_item_active = _o->next_item_active; - auto _active = _o->active; - auto _status = _o->status; - auto _hit_stauts = _o->hit_stauts; - auto _collidable = _o->collidable; - auto _looked_at = _o->looked_at; - auto _ai_bits = _o->ai_bits; - auto _data_type = _o->data.type; - auto _data = _o->data.Pack(_fbb); - auto _base_mesh = _o->base_mesh; - auto _mesh_pointers = _fbb.CreateVector(_o->mesh_pointers); - auto _effect_type = _o->effect_type; - auto _effect_light_colour = _o->effect_light_colour ? _o->effect_light_colour.get() : 0; - auto _effect_primary_colour = _o->effect_primary_colour ? _o->effect_primary_colour.get() : 0; - auto _effect_secondary_colour = _o->effect_secondary_colour ? _o->effect_secondary_colour.get() : 0; - auto _effect_count = _o->effect_count; - auto _lua_name = _o->lua_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->lua_name); - auto _lua_on_killed_name = _o->lua_on_killed_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->lua_on_killed_name); - auto _lua_on_hit_name = _o->lua_on_hit_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->lua_on_hit_name); - auto _lua_on_collided_with_object_name = _o->lua_on_collided_with_object_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->lua_on_collided_with_object_name); - auto _lua_on_collided_with_room_name = _o->lua_on_collided_with_room_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->lua_on_collided_with_room_name); - return TEN::Save::CreateItem( - _fbb, - _active_state, - _anim_number, - _frame_number, - _is_airborne, - _required_state, - _target_state, - _velocity, - _floor, - _touch_bits, - _mesh_bits, - _object_id, - _room_number, - _hit_points, - _box_number, - _timer, - _color, - _flags, - _trigger_flags, - _carried_item, - _after_death, - _item_flags, - _pose, - _next_item, - _next_item_active, - _active, - _status, - _hit_stauts, - _collidable, - _looked_at, - _ai_bits, - _data_type, - _data, - _base_mesh, - _mesh_pointers, - _effect_type, - _effect_light_colour, - _effect_primary_colour, - _effect_secondary_colour, - _effect_count, - _lua_name, - _lua_on_killed_name, - _lua_on_hit_name, - _lua_on_collided_with_object_name, - _lua_on_collided_with_room_name); -} - -inline FXInfoT *FXInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void FXInfo::UnPackTo(FXInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = pose(); if (_e) _o->pose = std::unique_ptr(new TEN::Save::Position(*_e)); } - { auto _e = room_number(); _o->room_number = _e; } - { auto _e = object_number(); _o->object_number = _e; } - { auto _e = next_fx(); _o->next_fx = _e; } - { auto _e = next_active(); _o->next_active = _e; } - { auto _e = speed(); _o->speed = _e; } - { auto _e = fall_speed(); _o->fall_speed = _e; } - { auto _e = frame_number(); _o->frame_number = _e; } - { auto _e = counter(); _o->counter = _e; } - { auto _e = color(); if (_e) _o->color = std::unique_ptr(new TEN::Save::Vector4(*_e)); } - { auto _e = flag1(); _o->flag1 = _e; } - { auto _e = flag2(); _o->flag2 = _e; } -} - -inline flatbuffers::Offset FXInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FXInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateFXInfo(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateFXInfo(flatbuffers::FlatBufferBuilder &_fbb, const FXInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FXInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _pose = _o->pose ? _o->pose.get() : 0; - auto _room_number = _o->room_number; - auto _object_number = _o->object_number; - auto _next_fx = _o->next_fx; - auto _next_active = _o->next_active; - auto _speed = _o->speed; - auto _fall_speed = _o->fall_speed; - auto _frame_number = _o->frame_number; - auto _counter = _o->counter; - auto _color = _o->color ? _o->color.get() : 0; - auto _flag1 = _o->flag1; - auto _flag2 = _o->flag2; - return TEN::Save::CreateFXInfo( - _fbb, - _pose, - _room_number, - _object_number, - _next_fx, - _next_active, - _speed, - _fall_speed, - _frame_number, - _counter, - _color, - _flag1, - _flag2); -} - -inline AmmoInfoT *AmmoInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void AmmoInfo::UnPackTo(AmmoInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = count(); _o->count = _e; } - { auto _e = is_infinite(); _o->is_infinite = _e; } -} - -inline flatbuffers::Offset AmmoInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AmmoInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateAmmoInfo(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateAmmoInfo(flatbuffers::FlatBufferBuilder &_fbb, const AmmoInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AmmoInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _count = _o->count; - auto _is_infinite = _o->is_infinite; - return TEN::Save::CreateAmmoInfo( - _fbb, - _count, - _is_infinite); -} - -inline HolsterInfoT *HolsterInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void HolsterInfo::UnPackTo(HolsterInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = left_holster(); _o->left_holster = _e; } - { auto _e = right_holster(); _o->right_holster = _e; } - { auto _e = back_holster(); _o->back_holster = _e; } -} - -inline flatbuffers::Offset HolsterInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HolsterInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateHolsterInfo(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateHolsterInfo(flatbuffers::FlatBufferBuilder &_fbb, const HolsterInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HolsterInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _left_holster = _o->left_holster; - auto _right_holster = _o->right_holster; - auto _back_holster = _o->back_holster; - return TEN::Save::CreateHolsterInfo( - _fbb, - _left_holster, - _right_holster, - _back_holster); -} - -inline CarriedWeaponInfoT *CarriedWeaponInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void CarriedWeaponInfo::UnPackTo(CarriedWeaponInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = present(); _o->present = _e; } - { auto _e = has_lasersight(); _o->has_lasersight = _e; } - { auto _e = has_silencer(); _o->has_silencer = _e; } - { auto _e = ammo(); if (_e) { _o->ammo.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->ammo[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = selected_ammo(); _o->selected_ammo = _e; } - { auto _e = weapon_mode(); _o->weapon_mode = _e; } -} - -inline flatbuffers::Offset CarriedWeaponInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CarriedWeaponInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateCarriedWeaponInfo(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateCarriedWeaponInfo(flatbuffers::FlatBufferBuilder &_fbb, const CarriedWeaponInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CarriedWeaponInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _present = _o->present; - auto _has_lasersight = _o->has_lasersight; - auto _has_silencer = _o->has_silencer; - auto _ammo = _fbb.CreateVector> (_o->ammo.size(), [](size_t i, _VectorArgs *__va) { return CreateAmmoInfo(*__va->__fbb, __va->__o->ammo[i].get(), __va->__rehasher); }, &_va ); - auto _selected_ammo = _o->selected_ammo; - auto _weapon_mode = _o->weapon_mode; - return TEN::Save::CreateCarriedWeaponInfo( - _fbb, - _present, - _has_lasersight, - _has_silencer, - _ammo, - _selected_ammo, - _weapon_mode); -} - -inline WeaponInfoT *WeaponInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void WeaponInfo::UnPackTo(WeaponInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = object_number(); _o->object_number = _e; } - { auto _e = anim_number(); _o->anim_number = _e; } - { auto _e = frame_number(); _o->frame_number = _e; } - { auto _e = active_state(); _o->active_state = _e; } - { auto _e = target_state(); _o->target_state = _e; } -} - -inline flatbuffers::Offset WeaponInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const WeaponInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateWeaponInfo(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateWeaponInfo(flatbuffers::FlatBufferBuilder &_fbb, const WeaponInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const WeaponInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _object_number = _o->object_number; - auto _anim_number = _o->anim_number; - auto _frame_number = _o->frame_number; - auto _active_state = _o->active_state; - auto _target_state = _o->target_state; - return TEN::Save::CreateWeaponInfo( - _fbb, - _object_number, - _anim_number, - _frame_number, - _active_state, - _target_state); -} - -inline ArmInfoT *ArmInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void ArmInfo::UnPackTo(ArmInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = anim_number(); _o->anim_number = _e; } - { auto _e = frame_number(); _o->frame_number = _e; } - { auto _e = frame_base(); _o->frame_base = _e; } - { auto _e = locked(); _o->locked = _e; } - { auto _e = rotation(); if (_e) _o->rotation = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = gun_flash(); _o->gun_flash = _e; } - { auto _e = gun_smoke(); _o->gun_smoke = _e; } -} - -inline flatbuffers::Offset ArmInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArmInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateArmInfo(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateArmInfo(flatbuffers::FlatBufferBuilder &_fbb, const ArmInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ArmInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _anim_number = _o->anim_number; - auto _frame_number = _o->frame_number; - auto _frame_base = _o->frame_base; - auto _locked = _o->locked; - auto _rotation = _o->rotation ? _o->rotation.get() : 0; - auto _gun_flash = _o->gun_flash; - auto _gun_smoke = _o->gun_smoke; - return TEN::Save::CreateArmInfo( - _fbb, - _anim_number, - _frame_number, - _frame_base, - _locked, - _rotation, - _gun_flash, - _gun_smoke); -} - -inline FlareDataT *FlareData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void FlareData::UnPackTo(FlareDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = life(); _o->life = _e; } - { auto _e = frame(); _o->frame = _e; } - { auto _e = control_left(); _o->control_left = _e; } -} - -inline flatbuffers::Offset FlareData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FlareDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateFlareData(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateFlareData(flatbuffers::FlatBufferBuilder &_fbb, const FlareDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FlareDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _life = _o->life; - auto _frame = _o->frame; - auto _control_left = _o->control_left; - return TEN::Save::CreateFlareData( - _fbb, - _life, - _frame, - _control_left); -} - -inline TorchDataT *TorchData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void TorchData::UnPackTo(TorchDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = state(); _o->state = _e; } - { auto _e = is_lit(); _o->is_lit = _e; } -} - -inline flatbuffers::Offset TorchData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TorchDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateTorchData(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateTorchData(flatbuffers::FlatBufferBuilder &_fbb, const TorchDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TorchDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _state = _o->state; - auto _is_lit = _o->is_lit; - return TEN::Save::CreateTorchData( - _fbb, - _state, - _is_lit); -} - -inline LaraInventoryDataT *LaraInventoryData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void LaraInventoryData::UnPackTo(LaraInventoryDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = is_busy(); _o->is_busy = _e; } - { auto _e = old_busy(); _o->old_busy = _e; } - { auto _e = beetle_life(); _o->beetle_life = _e; } - { auto _e = beetle_components(); _o->beetle_components = _e; } - { auto _e = small_waterskin(); _o->small_waterskin = _e; } - { auto _e = big_waterskin(); _o->big_waterskin = _e; } - { auto _e = has_binoculars(); _o->has_binoculars = _e; } - { auto _e = has_crowbar(); _o->has_crowbar = _e; } - { auto _e = has_torch(); _o->has_torch = _e; } - { auto _e = has_lasersight(); _o->has_lasersight = _e; } - { auto _e = has_silencer(); _o->has_silencer = _e; } - { auto _e = total_small_medipacks(); _o->total_small_medipacks = _e; } - { auto _e = total_large_medipacks(); _o->total_large_medipacks = _e; } - { auto _e = total_flares(); _o->total_flares = _e; } - { auto _e = total_secrets(); _o->total_secrets = _e; } - { auto _e = puzzles(); if (_e) { _o->puzzles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->puzzles[_i] = _e->Get(_i); } } } - { auto _e = keys(); if (_e) { _o->keys.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->keys[_i] = _e->Get(_i); } } } - { auto _e = pickups(); if (_e) { _o->pickups.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->pickups[_i] = _e->Get(_i); } } } - { auto _e = examines(); if (_e) { _o->examines.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->examines[_i] = _e->Get(_i); } } } - { auto _e = puzzles_combo(); if (_e) { _o->puzzles_combo.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->puzzles_combo[_i] = _e->Get(_i); } } } - { auto _e = keys_combo(); if (_e) { _o->keys_combo.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->keys_combo[_i] = _e->Get(_i); } } } - { auto _e = pickups_combo(); if (_e) { _o->pickups_combo.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->pickups_combo[_i] = _e->Get(_i); } } } - { auto _e = examines_combo(); if (_e) { _o->examines_combo.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->examines_combo[_i] = _e->Get(_i); } } } -} - -inline flatbuffers::Offset LaraInventoryData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraInventoryDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateLaraInventoryData(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateLaraInventoryData(flatbuffers::FlatBufferBuilder &_fbb, const LaraInventoryDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaraInventoryDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _is_busy = _o->is_busy; - auto _old_busy = _o->old_busy; - auto _beetle_life = _o->beetle_life; - auto _beetle_components = _o->beetle_components; - auto _small_waterskin = _o->small_waterskin; - auto _big_waterskin = _o->big_waterskin; - auto _has_binoculars = _o->has_binoculars; - auto _has_crowbar = _o->has_crowbar; - auto _has_torch = _o->has_torch; - auto _has_lasersight = _o->has_lasersight; - auto _has_silencer = _o->has_silencer; - auto _total_small_medipacks = _o->total_small_medipacks; - auto _total_large_medipacks = _o->total_large_medipacks; - auto _total_flares = _o->total_flares; - auto _total_secrets = _o->total_secrets; - auto _puzzles = _fbb.CreateVector(_o->puzzles); - auto _keys = _fbb.CreateVector(_o->keys); - auto _pickups = _fbb.CreateVector(_o->pickups); - auto _examines = _fbb.CreateVector(_o->examines); - auto _puzzles_combo = _fbb.CreateVector(_o->puzzles_combo); - auto _keys_combo = _fbb.CreateVector(_o->keys_combo); - auto _pickups_combo = _fbb.CreateVector(_o->pickups_combo); - auto _examines_combo = _fbb.CreateVector(_o->examines_combo); - return TEN::Save::CreateLaraInventoryData( - _fbb, - _is_busy, - _old_busy, - _beetle_life, - _beetle_components, - _small_waterskin, - _big_waterskin, - _has_binoculars, - _has_crowbar, - _has_torch, - _has_lasersight, - _has_silencer, - _total_small_medipacks, - _total_large_medipacks, - _total_flares, - _total_secrets, - _puzzles, - _keys, - _pickups, - _examines, - _puzzles_combo, - _keys_combo, - _pickups_combo, - _examines_combo); -} - -inline LaraCountDataT *LaraCountData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void LaraCountData::UnPackTo(LaraCountDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = run_jump(); _o->run_jump = _e; } - { auto _e = position_adjust(); _o->position_adjust = _e; } - { auto _e = pose(); _o->pose = _e; } - { auto _e = death(); _o->death = _e; } - { auto _e = no_cheat(); _o->no_cheat = _e; } -} - -inline flatbuffers::Offset LaraCountData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraCountDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateLaraCountData(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateLaraCountData(flatbuffers::FlatBufferBuilder &_fbb, const LaraCountDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaraCountDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _run_jump = _o->run_jump; - auto _position_adjust = _o->position_adjust; - auto _pose = _o->pose; - auto _death = _o->death; - auto _no_cheat = _o->no_cheat; - return TEN::Save::CreateLaraCountData( - _fbb, - _run_jump, - _position_adjust, - _pose, - _death, - _no_cheat); -} - -inline WeaponControlDataT *WeaponControlData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void WeaponControlData::UnPackTo(WeaponControlDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = weapon_item(); _o->weapon_item = _e; } - { auto _e = has_fired(); _o->has_fired = _e; } - { auto _e = fired(); _o->fired = _e; } - { auto _e = uzi_left(); _o->uzi_left = _e; } - { auto _e = uzi_right(); _o->uzi_right = _e; } - { auto _e = gun_type(); _o->gun_type = _e; } - { auto _e = request_gun_type(); _o->request_gun_type = _e; } - { auto _e = last_gun_type(); _o->last_gun_type = _e; } - { auto _e = holster_info(); if (_e) _o->holster_info = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = num_shots_fired(); _o->num_shots_fired = _e; } - { auto _e = interval(); _o->interval = _e; } - { auto _e = timer(); _o->timer = _e; } -} - -inline flatbuffers::Offset WeaponControlData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const WeaponControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateWeaponControlData(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateWeaponControlData(flatbuffers::FlatBufferBuilder &_fbb, const WeaponControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const WeaponControlDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _weapon_item = _o->weapon_item; - auto _has_fired = _o->has_fired; - auto _fired = _o->fired; - auto _uzi_left = _o->uzi_left; - auto _uzi_right = _o->uzi_right; - auto _gun_type = _o->gun_type; - auto _request_gun_type = _o->request_gun_type; - auto _last_gun_type = _o->last_gun_type; - auto _holster_info = _o->holster_info ? CreateHolsterInfo(_fbb, _o->holster_info.get(), _rehasher) : 0; - auto _num_shots_fired = _o->num_shots_fired; - auto _interval = _o->interval; - auto _timer = _o->timer; - return TEN::Save::CreateWeaponControlData( - _fbb, - _weapon_item, - _has_fired, - _fired, - _uzi_left, - _uzi_right, - _gun_type, - _request_gun_type, - _last_gun_type, - _holster_info, - _num_shots_fired, - _interval, - _timer); -} - -inline RopeControlDataT *RopeControlData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void RopeControlData::UnPackTo(RopeControlDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = segment(); _o->segment = _e; } - { auto _e = direction(); _o->direction = _e; } - { auto _e = arc_front(); _o->arc_front = _e; } - { auto _e = arc_back(); _o->arc_back = _e; } - { auto _e = last_x(); _o->last_x = _e; } - { auto _e = max_x_forward(); _o->max_x_forward = _e; } - { auto _e = max_x_backward(); _o->max_x_backward = _e; } - { auto _e = dframe(); _o->dframe = _e; } - { auto _e = frame(); _o->frame = _e; } - { auto _e = frame_rate(); _o->frame_rate = _e; } - { auto _e = y(); _o->y = _e; } - { auto _e = ptr(); _o->ptr = _e; } - { auto _e = offset(); _o->offset = _e; } - { auto _e = down_vel(); _o->down_vel = _e; } - { auto _e = flag(); _o->flag = _e; } - { auto _e = count(); _o->count = _e; } -} - -inline flatbuffers::Offset RopeControlData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RopeControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateRopeControlData(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateRopeControlData(flatbuffers::FlatBufferBuilder &_fbb, const RopeControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RopeControlDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _segment = _o->segment; - auto _direction = _o->direction; - auto _arc_front = _o->arc_front; - auto _arc_back = _o->arc_back; - auto _last_x = _o->last_x; - auto _max_x_forward = _o->max_x_forward; - auto _max_x_backward = _o->max_x_backward; - auto _dframe = _o->dframe; - auto _frame = _o->frame; - auto _frame_rate = _o->frame_rate; - auto _y = _o->y; - auto _ptr = _o->ptr; - auto _offset = _o->offset; - auto _down_vel = _o->down_vel; - auto _flag = _o->flag; - auto _count = _o->count; - return TEN::Save::CreateRopeControlData( - _fbb, - _segment, - _direction, - _arc_front, - _arc_back, - _last_x, - _max_x_forward, - _max_x_backward, - _dframe, - _frame, - _frame_rate, - _y, - _ptr, - _offset, - _down_vel, - _flag, - _count); -} - -inline TightropeControlDataT *TightropeControlData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void TightropeControlData::UnPackTo(TightropeControlDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = balance(); _o->balance = _e; } - { auto _e = time_on_tightrope(); _o->time_on_tightrope = _e; } - { auto _e = can_dismount(); _o->can_dismount = _e; } - { auto _e = tightrope_item(); _o->tightrope_item = _e; } -} - -inline flatbuffers::Offset TightropeControlData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TightropeControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateTightropeControlData(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateTightropeControlData(flatbuffers::FlatBufferBuilder &_fbb, const TightropeControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TightropeControlDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _balance = _o->balance; - auto _time_on_tightrope = _o->time_on_tightrope; - auto _can_dismount = _o->can_dismount; - auto _tightrope_item = _o->tightrope_item; - return TEN::Save::CreateTightropeControlData( - _fbb, - _balance, - _time_on_tightrope, - _can_dismount, - _tightrope_item); -} - -inline SubsuitControlDataT *SubsuitControlData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void SubsuitControlData::UnPackTo(SubsuitControlDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = x_rot(); _o->x_rot = _e; } - { auto _e = d_x_rot(); _o->d_x_rot = _e; } - { auto _e = velocity(); if (_e) { _o->velocity.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->velocity[_i] = _e->Get(_i); } } } - { auto _e = vertical_velocity(); _o->vertical_velocity = _e; } - { auto _e = x_rot_vel(); _o->x_rot_vel = _e; } - { auto _e = hit_count(); _o->hit_count = _e; } -} - -inline flatbuffers::Offset SubsuitControlData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubsuitControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateSubsuitControlData(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateSubsuitControlData(flatbuffers::FlatBufferBuilder &_fbb, const SubsuitControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SubsuitControlDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _x_rot = _o->x_rot; - auto _d_x_rot = _o->d_x_rot; - auto _velocity = _fbb.CreateVector(_o->velocity); - auto _vertical_velocity = _o->vertical_velocity; - auto _x_rot_vel = _o->x_rot_vel; - auto _hit_count = _o->hit_count; - return TEN::Save::CreateSubsuitControlData( - _fbb, - _x_rot, - _d_x_rot, - _velocity, - _vertical_velocity, - _x_rot_vel, - _hit_count); -} - -inline LaraControlDataT *LaraControlData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void LaraControlData::UnPackTo(LaraControlDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = move_angle(); _o->move_angle = _e; } - { auto _e = turn_rate(); _o->turn_rate = _e; } - { auto _e = calculated_jump_velocity(); _o->calculated_jump_velocity = _e; } - { auto _e = jump_direction(); _o->jump_direction = _e; } - { auto _e = hand_status(); _o->hand_status = _e; } - { auto _e = water_status(); _o->water_status = _e; } - { auto _e = count(); if (_e) _o->count = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = can_look(); _o->can_look = _e; } - { auto _e = is_moving(); _o->is_moving = _e; } - { auto _e = keep_low(); _o->keep_low = _e; } - { auto _e = is_low(); _o->is_low = _e; } - { auto _e = can_climb_ladder(); _o->can_climb_ladder = _e; } - { auto _e = is_climbing_ladder(); _o->is_climbing_ladder = _e; } - { auto _e = can_monkey_swing(); _o->can_monkey_swing = _e; } - { auto _e = run_jump_queued(); _o->run_jump_queued = _e; } - { auto _e = locked(); _o->locked = _e; } - { auto _e = weapon(); if (_e) _o->weapon = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = rope(); if (_e) _o->rope = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = tightrope(); if (_e) _o->tightrope = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = subsuit(); if (_e) _o->subsuit = std::unique_ptr(_e->UnPack(_resolver)); } -} - -inline flatbuffers::Offset LaraControlData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateLaraControlData(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateLaraControlData(flatbuffers::FlatBufferBuilder &_fbb, const LaraControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaraControlDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _move_angle = _o->move_angle; - auto _turn_rate = _o->turn_rate; - auto _calculated_jump_velocity = _o->calculated_jump_velocity; - auto _jump_direction = _o->jump_direction; - auto _hand_status = _o->hand_status; - auto _water_status = _o->water_status; - auto _count = _o->count ? CreateLaraCountData(_fbb, _o->count.get(), _rehasher) : 0; - auto _can_look = _o->can_look; - auto _is_moving = _o->is_moving; - auto _keep_low = _o->keep_low; - auto _is_low = _o->is_low; - auto _can_climb_ladder = _o->can_climb_ladder; - auto _is_climbing_ladder = _o->is_climbing_ladder; - auto _can_monkey_swing = _o->can_monkey_swing; - auto _run_jump_queued = _o->run_jump_queued; - auto _locked = _o->locked; - auto _weapon = _o->weapon ? CreateWeaponControlData(_fbb, _o->weapon.get(), _rehasher) : 0; - auto _rope = _o->rope ? CreateRopeControlData(_fbb, _o->rope.get(), _rehasher) : 0; - auto _tightrope = _o->tightrope ? CreateTightropeControlData(_fbb, _o->tightrope.get(), _rehasher) : 0; - auto _subsuit = _o->subsuit ? CreateSubsuitControlData(_fbb, _o->subsuit.get(), _rehasher) : 0; - return TEN::Save::CreateLaraControlData( - _fbb, - _move_angle, - _turn_rate, - _calculated_jump_velocity, - _jump_direction, - _hand_status, - _water_status, - _count, - _can_look, - _is_moving, - _keep_low, - _is_low, - _can_climb_ladder, - _is_climbing_ladder, - _can_monkey_swing, - _run_jump_queued, - _locked, - _weapon, - _rope, - _tightrope, - _subsuit); -} - -inline PlayerEffectDataT *PlayerEffectData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void PlayerEffectData::UnPackTo(PlayerEffectDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = bubble_nodes(); if (_e) { _o->bubble_nodes.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->bubble_nodes[_i] = _e->Get(_i); } } } - { auto _e = drip_nodes(); if (_e) { _o->drip_nodes.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->drip_nodes[_i] = _e->Get(_i); } } } -} - -inline flatbuffers::Offset PlayerEffectData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PlayerEffectDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreatePlayerEffectData(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreatePlayerEffectData(flatbuffers::FlatBufferBuilder &_fbb, const PlayerEffectDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PlayerEffectDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _bubble_nodes = _fbb.CreateVector(_o->bubble_nodes); - auto _drip_nodes = _fbb.CreateVector(_o->drip_nodes); - return TEN::Save::CreatePlayerEffectData( - _fbb, - _bubble_nodes, - _drip_nodes); -} - -inline PlayerStatusDataT *PlayerStatusData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void PlayerStatusData::UnPackTo(PlayerStatusDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = air(); _o->air = _e; } - { auto _e = exposure(); _o->exposure = _e; } - { auto _e = poison(); _o->poison = _e; } - { auto _e = stamina(); _o->stamina = _e; } -} - -inline flatbuffers::Offset PlayerStatusData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PlayerStatusDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreatePlayerStatusData(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreatePlayerStatusData(flatbuffers::FlatBufferBuilder &_fbb, const PlayerStatusDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PlayerStatusDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _air = _o->air; - auto _exposure = _o->exposure; - auto _poison = _o->poison; - auto _stamina = _o->stamina; - return TEN::Save::CreatePlayerStatusData( - _fbb, - _air, - _exposure, - _poison, - _stamina); -} - -inline LaraT *Lara::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Lara::UnPackTo(LaraT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = effect(); if (_e) _o->effect = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = status(); if (_e) _o->status = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = item_number(); _o->item_number = _e; } - { auto _e = control(); if (_e) _o->control = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = inventory(); if (_e) _o->inventory = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = weapons(); if (_e) { _o->weapons.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->weapons[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = flare(); if (_e) _o->flare = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = torch(); if (_e) _o->torch = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = extra_head_rot(); if (_e) _o->extra_head_rot = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = extra_torso_rot(); if (_e) _o->extra_torso_rot = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = water_current_active(); _o->water_current_active = _e; } - { auto _e = water_current_pull(); if (_e) _o->water_current_pull = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = left_arm(); if (_e) _o->left_arm = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = right_arm(); if (_e) _o->right_arm = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = target_arm_angles(); if (_e) { _o->target_arm_angles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->target_arm_angles[_i] = _e->Get(_i); } } } - { auto _e = target_entity_number(); _o->target_entity_number = _e; } - { auto _e = vehicle(); _o->vehicle = _e; } - { auto _e = extra_anim(); _o->extra_anim = _e; } - { auto _e = hit_frame(); _o->hit_frame = _e; } - { auto _e = hit_direction(); _o->hit_direction = _e; } - { auto _e = projected_floor_height(); _o->projected_floor_height = _e; } - { auto _e = target_facing_angle(); _o->target_facing_angle = _e; } - { auto _e = water_surface_dist(); _o->water_surface_dist = _e; } - { auto _e = interacted_item(); _o->interacted_item = _e; } - { auto _e = next_corner_pose(); if (_e) _o->next_corner_pose = std::unique_ptr(new TEN::Save::Position(*_e)); } - { auto _e = burn_type(); _o->burn_type = _e; } - { auto _e = burn_count(); _o->burn_count = _e; } - { auto _e = burn(); _o->burn = _e; } - { auto _e = burn_blue(); _o->burn_blue = _e; } - { auto _e = burn_smoke(); _o->burn_smoke = _e; } - { auto _e = location(); _o->location = _e; } - { auto _e = highest_location(); _o->highest_location = _e; } - { auto _e = location_pad(); _o->location_pad = _e; } -} - -inline flatbuffers::Offset Lara::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateLara(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateLara(flatbuffers::FlatBufferBuilder &_fbb, const LaraT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaraT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _effect = _o->effect ? CreatePlayerEffectData(_fbb, _o->effect.get(), _rehasher) : 0; - auto _status = _o->status ? CreatePlayerStatusData(_fbb, _o->status.get(), _rehasher) : 0; - auto _item_number = _o->item_number; - auto _control = _o->control ? CreateLaraControlData(_fbb, _o->control.get(), _rehasher) : 0; - auto _inventory = _o->inventory ? CreateLaraInventoryData(_fbb, _o->inventory.get(), _rehasher) : 0; - auto _weapons = _fbb.CreateVector> (_o->weapons.size(), [](size_t i, _VectorArgs *__va) { return CreateCarriedWeaponInfo(*__va->__fbb, __va->__o->weapons[i].get(), __va->__rehasher); }, &_va ); - auto _flare = _o->flare ? CreateFlareData(_fbb, _o->flare.get(), _rehasher) : 0; - auto _torch = _o->torch ? CreateTorchData(_fbb, _o->torch.get(), _rehasher) : 0; - auto _extra_head_rot = _o->extra_head_rot ? _o->extra_head_rot.get() : 0; - auto _extra_torso_rot = _o->extra_torso_rot ? _o->extra_torso_rot.get() : 0; - auto _water_current_active = _o->water_current_active; - auto _water_current_pull = _o->water_current_pull ? _o->water_current_pull.get() : 0; - auto _left_arm = _o->left_arm ? CreateArmInfo(_fbb, _o->left_arm.get(), _rehasher) : 0; - auto _right_arm = _o->right_arm ? CreateArmInfo(_fbb, _o->right_arm.get(), _rehasher) : 0; - auto _target_arm_angles = _fbb.CreateVector(_o->target_arm_angles); - auto _target_entity_number = _o->target_entity_number; - auto _vehicle = _o->vehicle; - auto _extra_anim = _o->extra_anim; - auto _hit_frame = _o->hit_frame; - auto _hit_direction = _o->hit_direction; - auto _projected_floor_height = _o->projected_floor_height; - auto _target_facing_angle = _o->target_facing_angle; - auto _water_surface_dist = _o->water_surface_dist; - auto _interacted_item = _o->interacted_item; - auto _next_corner_pose = _o->next_corner_pose ? _o->next_corner_pose.get() : 0; - auto _burn_type = _o->burn_type; - auto _burn_count = _o->burn_count; - auto _burn = _o->burn; - auto _burn_blue = _o->burn_blue; - auto _burn_smoke = _o->burn_smoke; - auto _location = _o->location; - auto _highest_location = _o->highest_location; - auto _location_pad = _o->location_pad; - return TEN::Save::CreateLara( - _fbb, - _effect, - _status, - _item_number, - _control, - _inventory, - _weapons, - _flare, - _torch, - _extra_head_rot, - _extra_torso_rot, - _water_current_active, - _water_current_pull, - _left_arm, - _right_arm, - _target_arm_angles, - _target_entity_number, - _vehicle, - _extra_anim, - _hit_frame, - _hit_direction, - _projected_floor_height, - _target_facing_angle, - _water_surface_dist, - _interacted_item, - _next_corner_pose, - _burn_type, - _burn_count, - _burn, - _burn_blue, - _burn_smoke, - _location, - _highest_location, - _location_pad); -} - -inline FixedCameraT *FixedCamera::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void FixedCamera::UnPackTo(FixedCameraT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = flags(); _o->flags = _e; } -} - -inline flatbuffers::Offset FixedCamera::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FixedCameraT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateFixedCamera(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateFixedCamera(flatbuffers::FlatBufferBuilder &_fbb, const FixedCameraT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FixedCameraT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _flags = _o->flags; - return TEN::Save::CreateFixedCamera( - _fbb, - _flags); -} - -inline FlyByCameraT *FlyByCamera::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void FlyByCamera::UnPackTo(FlyByCameraT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = flags(); _o->flags = _e; } -} - -inline flatbuffers::Offset FlyByCamera::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FlyByCameraT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateFlyByCamera(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateFlyByCamera(flatbuffers::FlatBufferBuilder &_fbb, const FlyByCameraT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FlyByCameraT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _flags = _o->flags; - return TEN::Save::CreateFlyByCamera( - _fbb, - _flags); -} - -inline SinkT *Sink::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Sink::UnPackTo(SinkT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = flags(); _o->flags = _e; } -} - -inline flatbuffers::Offset Sink::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SinkT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateSink(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateSink(flatbuffers::FlatBufferBuilder &_fbb, const SinkT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SinkT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _flags = _o->flags; - return TEN::Save::CreateSink( - _fbb, - _flags); -} - -inline StaticMeshInfoT *StaticMeshInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void StaticMeshInfo::UnPackTo(StaticMeshInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = number(); _o->number = _e; } - { auto _e = room_number(); _o->room_number = _e; } - { auto _e = pose(); if (_e) _o->pose = std::unique_ptr(new TEN::Save::Position(*_e)); } - { auto _e = scale(); _o->scale = _e; } - { auto _e = color(); if (_e) _o->color = std::unique_ptr(new TEN::Save::Vector4(*_e)); } - { auto _e = hit_points(); _o->hit_points = _e; } - { auto _e = flags(); _o->flags = _e; } -} - -inline flatbuffers::Offset StaticMeshInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const StaticMeshInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateStaticMeshInfo(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateStaticMeshInfo(flatbuffers::FlatBufferBuilder &_fbb, const StaticMeshInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const StaticMeshInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _number = _o->number; - auto _room_number = _o->room_number; - auto _pose = _o->pose ? _o->pose.get() : 0; - auto _scale = _o->scale; - auto _color = _o->color ? _o->color.get() : 0; - auto _hit_points = _o->hit_points; - auto _flags = _o->flags; - return TEN::Save::CreateStaticMeshInfo( - _fbb, - _number, - _room_number, - _pose, - _scale, - _color, - _hit_points, - _flags); -} - -inline ParticleInfoT *ParticleInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void ParticleInfo::UnPackTo(ParticleInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = x(); _o->x = _e; } - { auto _e = y(); _o->y = _e; } - { auto _e = z(); _o->z = _e; } - { auto _e = x_vel(); _o->x_vel = _e; } - { auto _e = y_vel(); _o->y_vel = _e; } - { auto _e = z_vel(); _o->z_vel = _e; } - { auto _e = gravity(); _o->gravity = _e; } - { auto _e = rot_ang(); _o->rot_ang = _e; } - { auto _e = flags(); _o->flags = _e; } - { auto _e = s_size(); _o->s_size = _e; } - { auto _e = d_size(); _o->d_size = _e; } - { auto _e = size(); _o->size = _e; } - { auto _e = friction(); _o->friction = _e; } - { auto _e = scalar(); _o->scalar = _e; } - { auto _e = sprite_index(); _o->sprite_index = _e; } - { auto _e = rot_add(); _o->rot_add = _e; } - { auto _e = max_y_vel(); _o->max_y_vel = _e; } - { auto _e = on(); _o->on = _e; } - { auto _e = s_r(); _o->s_r = _e; } - { auto _e = s_g(); _o->s_g = _e; } - { auto _e = s_b(); _o->s_b = _e; } - { auto _e = d_r(); _o->d_r = _e; } - { auto _e = d_g(); _o->d_g = _e; } - { auto _e = d_b(); _o->d_b = _e; } - { auto _e = r(); _o->r = _e; } - { auto _e = g(); _o->g = _e; } - { auto _e = b(); _o->b = _e; } - { auto _e = col_fade_speed(); _o->col_fade_speed = _e; } - { auto _e = fade_to_black(); _o->fade_to_black = _e; } - { auto _e = s_life(); _o->s_life = _e; } - { auto _e = life(); _o->life = _e; } - { auto _e = blend_mode(); _o->blend_mode = _e; } - { auto _e = extras(); _o->extras = _e; } - { auto _e = dynamic(); _o->dynamic = _e; } - { auto _e = fx_obj(); _o->fx_obj = _e; } - { auto _e = room_number(); _o->room_number = _e; } - { auto _e = node_number(); _o->node_number = _e; } -} - -inline flatbuffers::Offset ParticleInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ParticleInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateParticleInfo(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateParticleInfo(flatbuffers::FlatBufferBuilder &_fbb, const ParticleInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ParticleInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _x = _o->x; - auto _y = _o->y; - auto _z = _o->z; - auto _x_vel = _o->x_vel; - auto _y_vel = _o->y_vel; - auto _z_vel = _o->z_vel; - auto _gravity = _o->gravity; - auto _rot_ang = _o->rot_ang; - auto _flags = _o->flags; - auto _s_size = _o->s_size; - auto _d_size = _o->d_size; - auto _size = _o->size; - auto _friction = _o->friction; - auto _scalar = _o->scalar; - auto _sprite_index = _o->sprite_index; - auto _rot_add = _o->rot_add; - auto _max_y_vel = _o->max_y_vel; - auto _on = _o->on; - auto _s_r = _o->s_r; - auto _s_g = _o->s_g; - auto _s_b = _o->s_b; - auto _d_r = _o->d_r; - auto _d_g = _o->d_g; - auto _d_b = _o->d_b; - auto _r = _o->r; - auto _g = _o->g; - auto _b = _o->b; - auto _col_fade_speed = _o->col_fade_speed; - auto _fade_to_black = _o->fade_to_black; - auto _s_life = _o->s_life; - auto _life = _o->life; - auto _blend_mode = _o->blend_mode; - auto _extras = _o->extras; - auto _dynamic = _o->dynamic; - auto _fx_obj = _o->fx_obj; - auto _room_number = _o->room_number; - auto _node_number = _o->node_number; - return TEN::Save::CreateParticleInfo( - _fbb, - _x, - _y, - _z, - _x_vel, - _y_vel, - _z_vel, - _gravity, - _rot_ang, - _flags, - _s_size, - _d_size, - _size, - _friction, - _scalar, - _sprite_index, - _rot_add, - _max_y_vel, - _on, - _s_r, - _s_g, - _s_b, - _d_r, - _d_g, - _d_b, - _r, - _g, - _b, - _col_fade_speed, - _fade_to_black, - _s_life, - _life, - _blend_mode, - _extras, - _dynamic, - _fx_obj, - _room_number, - _node_number); -} - -inline SwarmObjectInfoT *SwarmObjectInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void SwarmObjectInfo::UnPackTo(SwarmObjectInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = on(); _o->on = _e; } - { auto _e = pose(); if (_e) _o->pose = std::unique_ptr(new TEN::Save::Position(*_e)); } - { auto _e = room_number(); _o->room_number = _e; } - { auto _e = flags(); _o->flags = _e; } -} - -inline flatbuffers::Offset SwarmObjectInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SwarmObjectInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateSwarmObjectInfo(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateSwarmObjectInfo(flatbuffers::FlatBufferBuilder &_fbb, const SwarmObjectInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SwarmObjectInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _on = _o->on; - auto _pose = _o->pose ? _o->pose.get() : 0; - auto _room_number = _o->room_number; - auto _flags = _o->flags; - return TEN::Save::CreateSwarmObjectInfo( - _fbb, - _on, - _pose, - _room_number, - _flags); -} - -inline RopeT *Rope::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Rope::UnPackTo(RopeT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = segments(); if (_e) { _o->segments.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->segments[_i] = *_e->Get(_i); } } } - { auto _e = velocities(); if (_e) { _o->velocities.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->velocities[_i] = *_e->Get(_i); } } } - { auto _e = normalised_segments(); if (_e) { _o->normalised_segments.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->normalised_segments[_i] = *_e->Get(_i); } } } - { auto _e = mesh_segments(); if (_e) { _o->mesh_segments.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->mesh_segments[_i] = *_e->Get(_i); } } } - { auto _e = position(); if (_e) _o->position = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = coords(); if (_e) { _o->coords.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->coords[_i] = *_e->Get(_i); } } } - { auto _e = segment_length(); _o->segment_length = _e; } - { auto _e = active(); _o->active = _e; } - { auto _e = coiled(); _o->coiled = _e; } -} - -inline flatbuffers::Offset Rope::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RopeT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateRope(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateRope(flatbuffers::FlatBufferBuilder &_fbb, const RopeT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RopeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _segments = _fbb.CreateVectorOfStructs(_o->segments); - auto _velocities = _fbb.CreateVectorOfStructs(_o->velocities); - auto _normalised_segments = _fbb.CreateVectorOfStructs(_o->normalised_segments); - auto _mesh_segments = _fbb.CreateVectorOfStructs(_o->mesh_segments); - auto _position = _o->position ? _o->position.get() : 0; - auto _coords = _fbb.CreateVectorOfStructs(_o->coords); - auto _segment_length = _o->segment_length; - auto _active = _o->active; - auto _coiled = _o->coiled; - return TEN::Save::CreateRope( - _fbb, - _segments, - _velocities, - _normalised_segments, - _mesh_segments, - _position, - _coords, - _segment_length, - _active, - _coiled); -} - -inline PendulumT *Pendulum::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Pendulum::UnPackTo(PendulumT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = position(); if (_e) _o->position = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = velocity(); if (_e) _o->velocity = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = node(); _o->node = _e; } -} - -inline flatbuffers::Offset Pendulum::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PendulumT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreatePendulum(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreatePendulum(flatbuffers::FlatBufferBuilder &_fbb, const PendulumT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PendulumT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _position = _o->position ? _o->position.get() : 0; - auto _velocity = _o->velocity ? _o->velocity.get() : 0; - auto _node = _o->node; - return TEN::Save::CreatePendulum( - _fbb, - _position, - _velocity, - _node); -} - -inline EventSetCallCountersT *EventSetCallCounters::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void EventSetCallCounters::UnPackTo(EventSetCallCountersT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = on_enter(); _o->on_enter = _e; } - { auto _e = on_inside(); _o->on_inside = _e; } - { auto _e = on_leave(); _o->on_leave = _e; } -} - -inline flatbuffers::Offset EventSetCallCounters::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EventSetCallCountersT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateEventSetCallCounters(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateEventSetCallCounters(flatbuffers::FlatBufferBuilder &_fbb, const EventSetCallCountersT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EventSetCallCountersT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _on_enter = _o->on_enter; - auto _on_inside = _o->on_inside; - auto _on_leave = _o->on_leave; - return TEN::Save::CreateEventSetCallCounters( - _fbb, - _on_enter, - _on_inside, - _on_leave); -} - -inline VolumeStateT *VolumeState::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void VolumeState::UnPackTo(VolumeStateT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = status(); _o->status = _e; } - { auto _e = activator(); _o->activator = _e; } - { auto _e = timestamp(); _o->timestamp = _e; } -} - -inline flatbuffers::Offset VolumeState::Pack(flatbuffers::FlatBufferBuilder &_fbb, const VolumeStateT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateVolumeState(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateVolumeState(flatbuffers::FlatBufferBuilder &_fbb, const VolumeStateT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const VolumeStateT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _status = _o->status; - auto _activator = _o->activator; - auto _timestamp = _o->timestamp; - return TEN::Save::CreateVolumeState( - _fbb, - _status, - _activator, - _timestamp); -} - -inline VolumeT *Volume::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void Volume::UnPackTo(VolumeT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = name(); if (_e) _o->name = _e->str(); } - { auto _e = number(); _o->number = _e; } - { auto _e = room_number(); _o->room_number = _e; } - { auto _e = enabled(); _o->enabled = _e; } - { auto _e = position(); if (_e) _o->position = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = rotation(); if (_e) _o->rotation = std::unique_ptr(new TEN::Save::Vector4(*_e)); } - { auto _e = scale(); if (_e) _o->scale = std::unique_ptr(new TEN::Save::Vector3(*_e)); } - { auto _e = queue(); if (_e) { _o->queue.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->queue[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } -} - -inline flatbuffers::Offset Volume::Pack(flatbuffers::FlatBufferBuilder &_fbb, const VolumeT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateVolume(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateVolume(flatbuffers::FlatBufferBuilder &_fbb, const VolumeT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const VolumeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _name = _o->name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->name); - auto _number = _o->number; - auto _room_number = _o->room_number; - auto _enabled = _o->enabled; - auto _position = _o->position ? _o->position.get() : 0; - auto _rotation = _o->rotation ? _o->rotation.get() : 0; - auto _scale = _o->scale ? _o->scale.get() : 0; - auto _queue = _fbb.CreateVector> (_o->queue.size(), [](size_t i, _VectorArgs *__va) { return CreateVolumeState(*__va->__fbb, __va->__o->queue[i].get(), __va->__rehasher); }, &_va ); - return TEN::Save::CreateVolume( - _fbb, - _name, - _number, - _room_number, - _enabled, - _position, - _rotation, - _scale, - _queue); -} - -inline ScriptTableT *ScriptTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void ScriptTable::UnPackTo(ScriptTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = keys_vals(); if (_e) { _o->keys_vals.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->keys_vals[_i] = *_e->Get(_i); } } } -} - -inline flatbuffers::Offset ScriptTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ScriptTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateScriptTable(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateScriptTable(flatbuffers::FlatBufferBuilder &_fbb, const ScriptTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ScriptTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _keys_vals = _fbb.CreateVectorOfStructs(_o->keys_vals); - return TEN::Save::CreateScriptTable( - _fbb, - _keys_vals); -} - -inline stringTableT *stringTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void stringTable::UnPackTo(stringTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = str(); if (_e) _o->str = _e->str(); } -} - -inline flatbuffers::Offset stringTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const stringTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreatestringTable(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreatestringTable(flatbuffers::FlatBufferBuilder &_fbb, const stringTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const stringTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _str = _o->str.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->str); - return TEN::Save::CreatestringTable( - _fbb, - _str); -} - -inline doubleTableT *doubleTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void doubleTable::UnPackTo(doubleTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = scalar(); _o->scalar = _e; } -} - -inline flatbuffers::Offset doubleTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const doubleTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreatedoubleTable(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreatedoubleTable(flatbuffers::FlatBufferBuilder &_fbb, const doubleTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const doubleTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _scalar = _o->scalar; - return TEN::Save::CreatedoubleTable( - _fbb, - _scalar); -} - -inline boolTableT *boolTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void boolTable::UnPackTo(boolTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = scalar(); _o->scalar = _e; } -} - -inline flatbuffers::Offset boolTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const boolTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateboolTable(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateboolTable(flatbuffers::FlatBufferBuilder &_fbb, const boolTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const boolTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _scalar = _o->scalar; - return TEN::Save::CreateboolTable( - _fbb, - _scalar); -} - -inline vec2TableT *vec2Table::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void vec2Table::UnPackTo(vec2TableT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = vec(); if (_e) _o->vec = std::unique_ptr(new TEN::Save::Vector2(*_e)); } -} - -inline flatbuffers::Offset vec2Table::Pack(flatbuffers::FlatBufferBuilder &_fbb, const vec2TableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return Createvec2Table(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset Createvec2Table(flatbuffers::FlatBufferBuilder &_fbb, const vec2TableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const vec2TableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _vec = _o->vec ? _o->vec.get() : 0; - return TEN::Save::Createvec2Table( - _fbb, - _vec); -} - -inline vec3TableT *vec3Table::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void vec3Table::UnPackTo(vec3TableT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = vec(); if (_e) _o->vec = std::unique_ptr(new TEN::Save::Vector3(*_e)); } -} - -inline flatbuffers::Offset vec3Table::Pack(flatbuffers::FlatBufferBuilder &_fbb, const vec3TableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return Createvec3Table(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset Createvec3Table(flatbuffers::FlatBufferBuilder &_fbb, const vec3TableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const vec3TableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _vec = _o->vec ? _o->vec.get() : 0; - return TEN::Save::Createvec3Table( - _fbb, - _vec); -} - -inline rotationTableT *rotationTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void rotationTable::UnPackTo(rotationTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = vec(); if (_e) _o->vec = std::unique_ptr(new TEN::Save::Vector3(*_e)); } -} - -inline flatbuffers::Offset rotationTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const rotationTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreaterotationTable(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreaterotationTable(flatbuffers::FlatBufferBuilder &_fbb, const rotationTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const rotationTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _vec = _o->vec ? _o->vec.get() : 0; - return TEN::Save::CreaterotationTable( - _fbb, - _vec); -} - -inline colorTableT *colorTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void colorTable::UnPackTo(colorTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = color(); _o->color = _e; } -} - -inline flatbuffers::Offset colorTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const colorTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreatecolorTable(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreatecolorTable(flatbuffers::FlatBufferBuilder &_fbb, const colorTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const colorTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _color = _o->color; - return TEN::Save::CreatecolorTable( - _fbb, - _color); -} - -inline funcNameTableT *funcNameTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void funcNameTable::UnPackTo(funcNameTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = str(); if (_e) _o->str = _e->str(); } -} - -inline flatbuffers::Offset funcNameTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const funcNameTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreatefuncNameTable(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreatefuncNameTable(flatbuffers::FlatBufferBuilder &_fbb, const funcNameTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const funcNameTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _str = _o->str.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->str); - return TEN::Save::CreatefuncNameTable( - _fbb, - _str); -} - -inline UnionTableT *UnionTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void UnionTable::UnPackTo(UnionTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = u_type(); _o->u.type = _e; } - { auto _e = u(); if (_e) _o->u.value = TEN::Save::VarUnionUnion::UnPack(_e, u_type(), _resolver); } -} - -inline flatbuffers::Offset UnionTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnionTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateUnionTable(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateUnionTable(flatbuffers::FlatBufferBuilder &_fbb, const UnionTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnionTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _u_type = _o->u.type; - auto _u = _o->u.Pack(_fbb); - return TEN::Save::CreateUnionTable( - _fbb, - _u_type, - _u); -} - -inline UnionVecT *UnionVec::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void UnionVec::UnPackTo(UnionVecT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = members(); if (_e) { _o->members.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->members[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } -} - -inline flatbuffers::Offset UnionVec::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnionVecT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateUnionVec(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateUnionVec(flatbuffers::FlatBufferBuilder &_fbb, const UnionVecT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnionVecT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _members = _fbb.CreateVector> (_o->members.size(), [](size_t i, _VectorArgs *__va) { return CreateUnionTable(*__va->__fbb, __va->__o->members[i].get(), __va->__rehasher); }, &_va ); - return TEN::Save::CreateUnionVec( - _fbb, - _members); -} - -inline SaveGameHeaderT *SaveGameHeader::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void SaveGameHeader::UnPackTo(SaveGameHeaderT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = level_name(); if (_e) _o->level_name = _e->str(); } - { auto _e = days(); _o->days = _e; } - { auto _e = hours(); _o->hours = _e; } - { auto _e = minutes(); _o->minutes = _e; } - { auto _e = seconds(); _o->seconds = _e; } - { auto _e = level(); _o->level = _e; } - { auto _e = timer(); _o->timer = _e; } - { auto _e = count(); _o->count = _e; } -} - -inline flatbuffers::Offset SaveGameHeader::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameHeaderT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateSaveGameHeader(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateSaveGameHeader(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameHeaderT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SaveGameHeaderT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _level_name = _o->level_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->level_name); - auto _days = _o->days; - auto _hours = _o->hours; - auto _minutes = _o->minutes; - auto _seconds = _o->seconds; - auto _level = _o->level; - auto _timer = _o->timer; - auto _count = _o->count; - return TEN::Save::CreateSaveGameHeader( - _fbb, - _level_name, - _days, - _hours, - _minutes, - _seconds, - _level, - _timer, - _count); -} - -inline SaveGameStatisticsT *SaveGameStatistics::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void SaveGameStatistics::UnPackTo(SaveGameStatisticsT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = ammo_hits(); _o->ammo_hits = _e; } - { auto _e = ammo_used(); _o->ammo_used = _e; } - { auto _e = medipacks_used(); _o->medipacks_used = _e; } - { auto _e = distance(); _o->distance = _e; } - { auto _e = kills(); _o->kills = _e; } - { auto _e = secrets(); _o->secrets = _e; } - { auto _e = timer(); _o->timer = _e; } -} - -inline flatbuffers::Offset SaveGameStatistics::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameStatisticsT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateSaveGameStatistics(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateSaveGameStatistics(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameStatisticsT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SaveGameStatisticsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _ammo_hits = _o->ammo_hits; - auto _ammo_used = _o->ammo_used; - auto _medipacks_used = _o->medipacks_used; - auto _distance = _o->distance; - auto _kills = _o->kills; - auto _secrets = _o->secrets; - auto _timer = _o->timer; - return TEN::Save::CreateSaveGameStatistics( - _fbb, - _ammo_hits, - _ammo_used, - _medipacks_used, - _distance, - _kills, - _secrets, - _timer); -} - -inline SaveGameT *SaveGame::UnPack(const flatbuffers::resolver_function_t *_resolver) const { - auto _o = std::make_unique(); - UnPackTo(_o.get(), _resolver); - return _o.release(); -} - -inline void SaveGame::UnPackTo(SaveGameT *_o, const flatbuffers::resolver_function_t *_resolver) const { - (void)_o; - (void)_resolver; - { auto _e = header(); if (_e) _o->header = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = game(); if (_e) _o->game = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = level(); if (_e) _o->level = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = lara(); if (_e) _o->lara = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = rooms(); if (_e) { _o->rooms.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->rooms[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = items(); if (_e) { _o->items.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->items[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = next_item_free(); _o->next_item_free = _e; } - { auto _e = next_item_active(); _o->next_item_active = _e; } - { auto _e = room_items(); if (_e) { _o->room_items.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->room_items[_i] = _e->Get(_i); } } } - { auto _e = fxinfos(); if (_e) { _o->fxinfos.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->fxinfos[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = next_fx_free(); _o->next_fx_free = _e; } - { auto _e = next_fx_active(); _o->next_fx_active = _e; } - { auto _e = fixed_cameras(); if (_e) { _o->fixed_cameras.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->fixed_cameras[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = sinks(); if (_e) { _o->sinks.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->sinks[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = static_meshes(); if (_e) { _o->static_meshes.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->static_meshes[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = flyby_cameras(); if (_e) { _o->flyby_cameras.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->flyby_cameras[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = particles(); if (_e) { _o->particles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->particles[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = rats(); if (_e) { _o->rats.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->rats[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = spiders(); if (_e) { _o->spiders.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->spiders[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = scarabs(); if (_e) { _o->scarabs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->scarabs[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = bats(); if (_e) { _o->bats.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->bats[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = flip_maps(); if (_e) { _o->flip_maps.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->flip_maps[_i] = _e->Get(_i); } } } - { auto _e = flip_stats(); if (_e) { _o->flip_stats.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->flip_stats[_i] = _e->Get(_i); } } } - { auto _e = flip_effect(); _o->flip_effect = _e; } - { auto _e = flip_timer(); _o->flip_timer = _e; } - { auto _e = flip_status(); _o->flip_status = _e; } - { auto _e = current_fov(); _o->current_fov = _e; } - { auto _e = action_queue(); if (_e) { _o->action_queue.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->action_queue[_i] = _e->Get(_i); } } } - { auto _e = ambient_track(); if (_e) _o->ambient_track = _e->str(); } - { auto _e = ambient_position(); _o->ambient_position = _e; } - { auto _e = oneshot_track(); if (_e) _o->oneshot_track = _e->str(); } - { auto _e = oneshot_position(); _o->oneshot_position = _e; } - { auto _e = cd_flags(); if (_e) { _o->cd_flags.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->cd_flags[_i] = _e->Get(_i); } } } - { auto _e = rope(); if (_e) _o->rope = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = pendulum(); if (_e) _o->pendulum = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = alternate_pendulum(); if (_e) _o->alternate_pendulum = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = volumes(); if (_e) { _o->volumes.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->volumes[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = call_counters(); if (_e) { _o->call_counters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->call_counters[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } - { auto _e = script_vars(); if (_e) _o->script_vars = std::unique_ptr(_e->UnPack(_resolver)); } - { auto _e = callbacks_pre_start(); if (_e) { _o->callbacks_pre_start.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_pre_start[_i] = _e->Get(_i)->str(); } } } - { auto _e = callbacks_post_start(); if (_e) { _o->callbacks_post_start.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_post_start[_i] = _e->Get(_i)->str(); } } } - { auto _e = callbacks_pre_end(); if (_e) { _o->callbacks_pre_end.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_pre_end[_i] = _e->Get(_i)->str(); } } } - { auto _e = callbacks_post_end(); if (_e) { _o->callbacks_post_end.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_post_end[_i] = _e->Get(_i)->str(); } } } - { auto _e = callbacks_pre_save(); if (_e) { _o->callbacks_pre_save.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_pre_save[_i] = _e->Get(_i)->str(); } } } - { auto _e = callbacks_post_save(); if (_e) { _o->callbacks_post_save.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_post_save[_i] = _e->Get(_i)->str(); } } } - { auto _e = callbacks_pre_load(); if (_e) { _o->callbacks_pre_load.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_pre_load[_i] = _e->Get(_i)->str(); } } } - { auto _e = callbacks_post_load(); if (_e) { _o->callbacks_post_load.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_post_load[_i] = _e->Get(_i)->str(); } } } - { auto _e = callbacks_pre_control(); if (_e) { _o->callbacks_pre_control.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_pre_control[_i] = _e->Get(_i)->str(); } } } - { auto _e = callbacks_post_control(); if (_e) { _o->callbacks_post_control.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_post_control[_i] = _e->Get(_i)->str(); } } } -} - -inline flatbuffers::Offset SaveGame::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameT* _o, const flatbuffers::rehasher_function_t *_rehasher) { - return CreateSaveGame(_fbb, _o, _rehasher); -} - -inline flatbuffers::Offset CreateSaveGame(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameT *_o, const flatbuffers::rehasher_function_t *_rehasher) { - (void)_rehasher; - (void)_o; - struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SaveGameT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _header = _o->header ? CreateSaveGameHeader(_fbb, _o->header.get(), _rehasher) : 0; - auto _game = _o->game ? CreateSaveGameStatistics(_fbb, _o->game.get(), _rehasher) : 0; - auto _level = _o->level ? CreateSaveGameStatistics(_fbb, _o->level.get(), _rehasher) : 0; - auto _lara = _o->lara ? CreateLara(_fbb, _o->lara.get(), _rehasher) : 0; - auto _rooms = _fbb.CreateVector> (_o->rooms.size(), [](size_t i, _VectorArgs *__va) { return CreateRoom(*__va->__fbb, __va->__o->rooms[i].get(), __va->__rehasher); }, &_va ); - auto _items = _fbb.CreateVector> (_o->items.size(), [](size_t i, _VectorArgs *__va) { return CreateItem(*__va->__fbb, __va->__o->items[i].get(), __va->__rehasher); }, &_va ); - auto _next_item_free = _o->next_item_free; - auto _next_item_active = _o->next_item_active; - auto _room_items = _fbb.CreateVector(_o->room_items); - auto _fxinfos = _fbb.CreateVector> (_o->fxinfos.size(), [](size_t i, _VectorArgs *__va) { return CreateFXInfo(*__va->__fbb, __va->__o->fxinfos[i].get(), __va->__rehasher); }, &_va ); - auto _next_fx_free = _o->next_fx_free; - auto _next_fx_active = _o->next_fx_active; - auto _fixed_cameras = _fbb.CreateVector> (_o->fixed_cameras.size(), [](size_t i, _VectorArgs *__va) { return CreateFixedCamera(*__va->__fbb, __va->__o->fixed_cameras[i].get(), __va->__rehasher); }, &_va ); - auto _sinks = _fbb.CreateVector> (_o->sinks.size(), [](size_t i, _VectorArgs *__va) { return CreateSink(*__va->__fbb, __va->__o->sinks[i].get(), __va->__rehasher); }, &_va ); - auto _static_meshes = _fbb.CreateVector> (_o->static_meshes.size(), [](size_t i, _VectorArgs *__va) { return CreateStaticMeshInfo(*__va->__fbb, __va->__o->static_meshes[i].get(), __va->__rehasher); }, &_va ); - auto _flyby_cameras = _fbb.CreateVector> (_o->flyby_cameras.size(), [](size_t i, _VectorArgs *__va) { return CreateFlyByCamera(*__va->__fbb, __va->__o->flyby_cameras[i].get(), __va->__rehasher); }, &_va ); - auto _particles = _fbb.CreateVector> (_o->particles.size(), [](size_t i, _VectorArgs *__va) { return CreateParticleInfo(*__va->__fbb, __va->__o->particles[i].get(), __va->__rehasher); }, &_va ); - auto _rats = _fbb.CreateVector> (_o->rats.size(), [](size_t i, _VectorArgs *__va) { return CreateSwarmObjectInfo(*__va->__fbb, __va->__o->rats[i].get(), __va->__rehasher); }, &_va ); - auto _spiders = _fbb.CreateVector> (_o->spiders.size(), [](size_t i, _VectorArgs *__va) { return CreateSwarmObjectInfo(*__va->__fbb, __va->__o->spiders[i].get(), __va->__rehasher); }, &_va ); - auto _scarabs = _fbb.CreateVector> (_o->scarabs.size(), [](size_t i, _VectorArgs *__va) { return CreateSwarmObjectInfo(*__va->__fbb, __va->__o->scarabs[i].get(), __va->__rehasher); }, &_va ); - auto _bats = _fbb.CreateVector> (_o->bats.size(), [](size_t i, _VectorArgs *__va) { return CreateSwarmObjectInfo(*__va->__fbb, __va->__o->bats[i].get(), __va->__rehasher); }, &_va ); - auto _flip_maps = _fbb.CreateVector(_o->flip_maps); - auto _flip_stats = _fbb.CreateVector(_o->flip_stats); - auto _flip_effect = _o->flip_effect; - auto _flip_timer = _o->flip_timer; - auto _flip_status = _o->flip_status; - auto _current_fov = _o->current_fov; - auto _action_queue = _fbb.CreateVector(_o->action_queue); - auto _ambient_track = _o->ambient_track.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->ambient_track); - auto _ambient_position = _o->ambient_position; - auto _oneshot_track = _o->oneshot_track.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->oneshot_track); - auto _oneshot_position = _o->oneshot_position; - auto _cd_flags = _fbb.CreateVector(_o->cd_flags); - auto _rope = _o->rope ? CreateRope(_fbb, _o->rope.get(), _rehasher) : 0; - auto _pendulum = _o->pendulum ? CreatePendulum(_fbb, _o->pendulum.get(), _rehasher) : 0; - auto _alternate_pendulum = _o->alternate_pendulum ? CreatePendulum(_fbb, _o->alternate_pendulum.get(), _rehasher) : 0; - auto _volumes = _fbb.CreateVector> (_o->volumes.size(), [](size_t i, _VectorArgs *__va) { return CreateVolume(*__va->__fbb, __va->__o->volumes[i].get(), __va->__rehasher); }, &_va ); - auto _call_counters = _fbb.CreateVector> (_o->call_counters.size(), [](size_t i, _VectorArgs *__va) { return CreateEventSetCallCounters(*__va->__fbb, __va->__o->call_counters[i].get(), __va->__rehasher); }, &_va ); - auto _script_vars = _o->script_vars ? CreateUnionVec(_fbb, _o->script_vars.get(), _rehasher) : 0; - auto _callbacks_pre_start = _fbb.CreateVectorOfStrings(_o->callbacks_pre_start); - auto _callbacks_post_start = _fbb.CreateVectorOfStrings(_o->callbacks_post_start); - auto _callbacks_pre_end = _fbb.CreateVectorOfStrings(_o->callbacks_pre_end); - auto _callbacks_post_end = _fbb.CreateVectorOfStrings(_o->callbacks_post_end); - auto _callbacks_pre_save = _fbb.CreateVectorOfStrings(_o->callbacks_pre_save); - auto _callbacks_post_save = _fbb.CreateVectorOfStrings(_o->callbacks_post_save); - auto _callbacks_pre_load = _fbb.CreateVectorOfStrings(_o->callbacks_pre_load); - auto _callbacks_post_load = _fbb.CreateVectorOfStrings(_o->callbacks_post_load); - auto _callbacks_pre_control = _fbb.CreateVectorOfStrings(_o->callbacks_pre_control); - auto _callbacks_post_control = _fbb.CreateVectorOfStrings(_o->callbacks_post_control); - return TEN::Save::CreateSaveGame( - _fbb, - _header, - _game, - _level, - _lara, - _rooms, - _items, - _next_item_free, - _next_item_active, - _room_items, - _fxinfos, - _next_fx_free, - _next_fx_active, - _fixed_cameras, - _sinks, - _static_meshes, - _flyby_cameras, - _particles, - _rats, - _spiders, - _scarabs, - _bats, - _flip_maps, - _flip_stats, - _flip_effect, - _flip_timer, - _flip_status, - _current_fov, - _action_queue, - _ambient_track, - _ambient_position, - _oneshot_track, - _oneshot_position, - _cd_flags, - _rope, - _pendulum, - _alternate_pendulum, - _volumes, - _call_counters, - _script_vars, - _callbacks_pre_start, - _callbacks_post_start, - _callbacks_pre_end, - _callbacks_post_end, - _callbacks_pre_save, - _callbacks_post_save, - _callbacks_pre_load, - _callbacks_post_load, - _callbacks_pre_control, - _callbacks_post_control); -} - -inline bool VerifyVarUnion(flatbuffers::Verifier &verifier, const void *obj, VarUnion type) { - switch (type) { - case VarUnion::NONE: { - return true; - } - case VarUnion::str: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case VarUnion::tab: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case VarUnion::num: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case VarUnion::boolean: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case VarUnion::vec2: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case VarUnion::vec3: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case VarUnion::rotation: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case VarUnion::color: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - case VarUnion::funcName: { - auto ptr = reinterpret_cast(obj); - return verifier.VerifyTable(ptr); - } - default: return true; - } -} - -inline bool VerifyVarUnionVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types) { - if (!values || !types) return !values && !types; - if (values->size() != types->size()) return false; - for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { - if (!VerifyVarUnion( - verifier, values->Get(i), types->GetEnum(i))) { - return false; - } - } - return true; -} - -inline void *VarUnionUnion::UnPack(const void *obj, VarUnion type, const flatbuffers::resolver_function_t *resolver) { - switch (type) { - case VarUnion::str: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case VarUnion::tab: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case VarUnion::num: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case VarUnion::boolean: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case VarUnion::vec2: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case VarUnion::vec3: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case VarUnion::rotation: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case VarUnion::color: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - case VarUnion::funcName: { - auto ptr = reinterpret_cast(obj); - return ptr->UnPack(resolver); - } - default: return nullptr; - } -} - -inline flatbuffers::Offset VarUnionUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const { - switch (type) { - case VarUnion::str: { - auto ptr = reinterpret_cast(value); - return CreatestringTable(_fbb, ptr, _rehasher).Union(); - } - case VarUnion::tab: { - auto ptr = reinterpret_cast(value); - return CreateScriptTable(_fbb, ptr, _rehasher).Union(); - } - case VarUnion::num: { - auto ptr = reinterpret_cast(value); - return CreatedoubleTable(_fbb, ptr, _rehasher).Union(); - } - case VarUnion::boolean: { - auto ptr = reinterpret_cast(value); - return CreateboolTable(_fbb, ptr, _rehasher).Union(); - } - case VarUnion::vec2: { - auto ptr = reinterpret_cast(value); - return Createvec2Table(_fbb, ptr, _rehasher).Union(); - } - case VarUnion::vec3: { - auto ptr = reinterpret_cast(value); - return Createvec3Table(_fbb, ptr, _rehasher).Union(); - } - case VarUnion::rotation: { - auto ptr = reinterpret_cast(value); - return CreaterotationTable(_fbb, ptr, _rehasher).Union(); - } - case VarUnion::color: { - auto ptr = reinterpret_cast(value); - return CreatecolorTable(_fbb, ptr, _rehasher).Union(); - } - case VarUnion::funcName: { - auto ptr = reinterpret_cast(value); - return CreatefuncNameTable(_fbb, ptr, _rehasher).Union(); - } - default: return 0; - } -} - -inline VarUnionUnion::VarUnionUnion(const VarUnionUnion &u) : type(u.type), value(nullptr) { - switch (type) { - case VarUnion::str: { - value = new TEN::Save::stringTableT(*reinterpret_cast(u.value)); - break; - } - case VarUnion::tab: { - FLATBUFFERS_ASSERT(false); // TEN::Save::ScriptTableT not copyable. - break; - } - case VarUnion::num: { - value = new TEN::Save::doubleTableT(*reinterpret_cast(u.value)); - break; - } - case VarUnion::boolean: { - value = new TEN::Save::boolTableT(*reinterpret_cast(u.value)); - break; - } - case VarUnion::vec2: { - FLATBUFFERS_ASSERT(false); // TEN::Save::vec2TableT not copyable. - break; - } - case VarUnion::vec3: { - FLATBUFFERS_ASSERT(false); // TEN::Save::vec3TableT not copyable. - break; - } - case VarUnion::rotation: { - FLATBUFFERS_ASSERT(false); // TEN::Save::rotationTableT not copyable. - break; - } - case VarUnion::color: { - value = new TEN::Save::colorTableT(*reinterpret_cast(u.value)); - break; - } - case VarUnion::funcName: { - value = new TEN::Save::funcNameTableT(*reinterpret_cast(u.value)); - break; - } - default: - break; - } -} - -inline void VarUnionUnion::Reset() { - switch (type) { - case VarUnion::str: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case VarUnion::tab: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case VarUnion::num: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case VarUnion::boolean: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case VarUnion::vec2: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case VarUnion::vec3: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case VarUnion::rotation: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case VarUnion::color: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - case VarUnion::funcName: { - auto ptr = reinterpret_cast(value); - delete ptr; - break; - } - default: break; - } - value = nullptr; - type = VarUnion::NONE; -} - -inline const TEN::Save::SaveGame *GetSaveGame(const void *buf) { - return flatbuffers::GetRoot(buf); -} - -inline const TEN::Save::SaveGame *GetSizePrefixedSaveGame(const void *buf) { - return flatbuffers::GetSizePrefixedRoot(buf); -} - -inline bool VerifySaveGameBuffer( - flatbuffers::Verifier &verifier) { - return verifier.VerifyBuffer(nullptr); -} - -inline bool VerifySizePrefixedSaveGameBuffer( - flatbuffers::Verifier &verifier) { - return verifier.VerifySizePrefixedBuffer(nullptr); -} - -inline void FinishSaveGameBuffer( - flatbuffers::FlatBufferBuilder &fbb, - flatbuffers::Offset root) { - fbb.Finish(root); -} - -inline void FinishSizePrefixedSaveGameBuffer( - flatbuffers::FlatBufferBuilder &fbb, - flatbuffers::Offset root) { - fbb.FinishSizePrefixed(root); -} - -inline std::unique_ptr UnPackSaveGame( - const void *buf, - const flatbuffers::resolver_function_t *res = nullptr) { - return std::unique_ptr(GetSaveGame(buf)->UnPack(res)); -} - -inline std::unique_ptr UnPackSizePrefixedSaveGame( - const void *buf, - const flatbuffers::resolver_function_t *res = nullptr) { - return std::unique_ptr(GetSizePrefixedSaveGame(buf)->UnPack(res)); -} - -} // namespace Save -} // namespace TEN - -#endif // FLATBUFFERS_GENERATED_TENSAVEGAME_TEN_SAVE_H_ +// automatically generated by the FlatBuffers compiler, do not modify + + +#ifndef FLATBUFFERS_GENERATED_TENSAVEGAME_TEN_SAVE_H_ +#define FLATBUFFERS_GENERATED_TENSAVEGAME_TEN_SAVE_H_ + +#include "flatbuffers/flatbuffers.h" + +#include "ten_itemdata_generated.h" + +namespace TEN { +namespace Save { + +struct RoomVector; + +struct Room; +struct RoomBuilder; +struct RoomT; + +struct Item; +struct ItemBuilder; +struct ItemT; + +struct FXInfo; +struct FXInfoBuilder; +struct FXInfoT; + +struct AmmoInfo; +struct AmmoInfoBuilder; +struct AmmoInfoT; + +struct HolsterInfo; +struct HolsterInfoBuilder; +struct HolsterInfoT; + +struct CarriedWeaponInfo; +struct CarriedWeaponInfoBuilder; +struct CarriedWeaponInfoT; + +struct WeaponInfo; +struct WeaponInfoBuilder; +struct WeaponInfoT; + +struct ArmInfo; +struct ArmInfoBuilder; +struct ArmInfoT; + +struct FlareData; +struct FlareDataBuilder; +struct FlareDataT; + +struct TorchData; +struct TorchDataBuilder; +struct TorchDataT; + +struct LaraInventoryData; +struct LaraInventoryDataBuilder; +struct LaraInventoryDataT; + +struct LaraCountData; +struct LaraCountDataBuilder; +struct LaraCountDataT; + +struct WeaponControlData; +struct WeaponControlDataBuilder; +struct WeaponControlDataT; + +struct RopeControlData; +struct RopeControlDataBuilder; +struct RopeControlDataT; + +struct TightropeControlData; +struct TightropeControlDataBuilder; +struct TightropeControlDataT; + +struct SubsuitControlData; +struct SubsuitControlDataBuilder; +struct SubsuitControlDataT; + +struct LaraControlData; +struct LaraControlDataBuilder; +struct LaraControlDataT; + +struct PlayerEffectData; +struct PlayerEffectDataBuilder; +struct PlayerEffectDataT; + +struct PlayerStatusData; +struct PlayerStatusDataBuilder; +struct PlayerStatusDataT; + +struct Lara; +struct LaraBuilder; +struct LaraT; + +struct FixedCamera; +struct FixedCameraBuilder; +struct FixedCameraT; + +struct FlyByCamera; +struct FlyByCameraBuilder; +struct FlyByCameraT; + +struct Sink; +struct SinkBuilder; +struct SinkT; + +struct StaticMeshInfo; +struct StaticMeshInfoBuilder; +struct StaticMeshInfoT; + +struct ParticleInfo; +struct ParticleInfoBuilder; +struct ParticleInfoT; + +struct SwarmObjectInfo; +struct SwarmObjectInfoBuilder; +struct SwarmObjectInfoT; + +struct Rope; +struct RopeBuilder; +struct RopeT; + +struct Pendulum; +struct PendulumBuilder; +struct PendulumT; + +struct EventSetCallCounters; +struct EventSetCallCountersBuilder; +struct EventSetCallCountersT; + +struct VolumeState; +struct VolumeStateBuilder; +struct VolumeStateT; + +struct Volume; +struct VolumeBuilder; +struct VolumeT; + +struct KeyValPair; + +struct ScriptTable; +struct ScriptTableBuilder; +struct ScriptTableT; + +struct stringTable; +struct stringTableBuilder; +struct stringTableT; + +struct doubleTable; +struct doubleTableBuilder; +struct doubleTableT; + +struct boolTable; +struct boolTableBuilder; +struct boolTableT; + +struct vec2Table; +struct vec2TableBuilder; +struct vec2TableT; + +struct vec3Table; +struct vec3TableBuilder; +struct vec3TableT; + +struct rotationTable; +struct rotationTableBuilder; +struct rotationTableT; + +struct colorTable; +struct colorTableBuilder; +struct colorTableT; + +struct funcNameTable; +struct funcNameTableBuilder; +struct funcNameTableT; + +struct UnionTable; +struct UnionTableBuilder; +struct UnionTableT; + +struct UnionVec; +struct UnionVecBuilder; +struct UnionVecT; + +struct SaveGameHeader; +struct SaveGameHeaderBuilder; +struct SaveGameHeaderT; + +struct SaveGameStatistics; +struct SaveGameStatisticsBuilder; +struct SaveGameStatisticsT; + +struct SaveGame; +struct SaveGameBuilder; +struct SaveGameT; + +enum class TorchState : int32_t { + holding = 0, + throwing = 1, + dropping = 2, + just_lit = 3, + MIN = holding, + MAX = just_lit +}; + +inline const TorchState (&EnumValuesTorchState())[4] { + static const TorchState values[] = { + TorchState::holding, + TorchState::throwing, + TorchState::dropping, + TorchState::just_lit + }; + return values; +} + +inline const char * const *EnumNamesTorchState() { + static const char * const names[5] = { + "holding", + "throwing", + "dropping", + "just_lit", + nullptr + }; + return names; +} + +inline const char *EnumNameTorchState(TorchState e) { + if (flatbuffers::IsOutRange(e, TorchState::holding, TorchState::just_lit)) return ""; + const size_t index = static_cast(e); + return EnumNamesTorchState()[index]; +} + +enum class VarUnion : uint8_t { + NONE = 0, + str = 1, + tab = 2, + num = 3, + boolean = 4, + vec2 = 5, + vec3 = 6, + rotation = 7, + color = 8, + funcName = 9, + MIN = NONE, + MAX = funcName +}; + +inline const VarUnion (&EnumValuesVarUnion())[10] { + static const VarUnion values[] = { + VarUnion::NONE, + VarUnion::str, + VarUnion::tab, + VarUnion::num, + VarUnion::boolean, + VarUnion::vec2, + VarUnion::vec3, + VarUnion::rotation, + VarUnion::color, + VarUnion::funcName + }; + return values; +} + +inline const char * const *EnumNamesVarUnion() { + static const char * const names[11] = { + "NONE", + "str", + "tab", + "num", + "boolean", + "vec2", + "vec3", + "rotation", + "color", + "funcName", + nullptr + }; + return names; +} + +inline const char *EnumNameVarUnion(VarUnion e) { + if (flatbuffers::IsOutRange(e, VarUnion::NONE, VarUnion::funcName)) return ""; + const size_t index = static_cast(e); + return EnumNamesVarUnion()[index]; +} + +template struct VarUnionTraits { + static const VarUnion enum_value = VarUnion::NONE; +}; + +template<> struct VarUnionTraits { + static const VarUnion enum_value = VarUnion::str; +}; + +template<> struct VarUnionTraits { + static const VarUnion enum_value = VarUnion::tab; +}; + +template<> struct VarUnionTraits { + static const VarUnion enum_value = VarUnion::num; +}; + +template<> struct VarUnionTraits { + static const VarUnion enum_value = VarUnion::boolean; +}; + +template<> struct VarUnionTraits { + static const VarUnion enum_value = VarUnion::vec2; +}; + +template<> struct VarUnionTraits { + static const VarUnion enum_value = VarUnion::vec3; +}; + +template<> struct VarUnionTraits { + static const VarUnion enum_value = VarUnion::rotation; +}; + +template<> struct VarUnionTraits { + static const VarUnion enum_value = VarUnion::color; +}; + +template<> struct VarUnionTraits { + static const VarUnion enum_value = VarUnion::funcName; +}; + +struct VarUnionUnion { + VarUnion type; + void *value; + + VarUnionUnion() : type(VarUnion::NONE), value(nullptr) {} + VarUnionUnion(VarUnionUnion&& u) FLATBUFFERS_NOEXCEPT : + type(VarUnion::NONE), value(nullptr) + { std::swap(type, u.type); std::swap(value, u.value); } + VarUnionUnion(const VarUnionUnion &); + VarUnionUnion &operator=(const VarUnionUnion &u) + { VarUnionUnion t(u); std::swap(type, t.type); std::swap(value, t.value); return *this; } + VarUnionUnion &operator=(VarUnionUnion &&u) FLATBUFFERS_NOEXCEPT + { std::swap(type, u.type); std::swap(value, u.value); return *this; } + ~VarUnionUnion() { Reset(); } + + void Reset(); + +#ifndef FLATBUFFERS_CPP98_STL + template + void Set(T&& val) { + using RT = typename std::remove_reference::type; + Reset(); + type = VarUnionTraits::enum_value; + if (type != VarUnion::NONE) { + value = new RT(std::forward(val)); + } + } +#endif // FLATBUFFERS_CPP98_STL + + static void *UnPack(const void *obj, VarUnion type, const flatbuffers::resolver_function_t *resolver); + flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher = nullptr) const; + + TEN::Save::stringTableT *Asstr() { + return type == VarUnion::str ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::stringTableT *Asstr() const { + return type == VarUnion::str ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::ScriptTableT *Astab() { + return type == VarUnion::tab ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::ScriptTableT *Astab() const { + return type == VarUnion::tab ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::doubleTableT *Asnum() { + return type == VarUnion::num ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::doubleTableT *Asnum() const { + return type == VarUnion::num ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::boolTableT *Asboolean() { + return type == VarUnion::boolean ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::boolTableT *Asboolean() const { + return type == VarUnion::boolean ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::vec2TableT *Asvec2() { + return type == VarUnion::vec2 ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::vec2TableT *Asvec2() const { + return type == VarUnion::vec2 ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::vec3TableT *Asvec3() { + return type == VarUnion::vec3 ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::vec3TableT *Asvec3() const { + return type == VarUnion::vec3 ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::rotationTableT *Asrotation() { + return type == VarUnion::rotation ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::rotationTableT *Asrotation() const { + return type == VarUnion::rotation ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::colorTableT *Ascolor() { + return type == VarUnion::color ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::colorTableT *Ascolor() const { + return type == VarUnion::color ? + reinterpret_cast(value) : nullptr; + } + TEN::Save::funcNameTableT *AsfuncName() { + return type == VarUnion::funcName ? + reinterpret_cast(value) : nullptr; + } + const TEN::Save::funcNameTableT *AsfuncName() const { + return type == VarUnion::funcName ? + reinterpret_cast(value) : nullptr; + } +}; + +bool VerifyVarUnion(flatbuffers::Verifier &verifier, const void *obj, VarUnion type); +bool VerifyVarUnionVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types); + +FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) RoomVector FLATBUFFERS_FINAL_CLASS { + private: + uint32_t room_; + uint32_t y_location_; + + public: + struct Traits; + RoomVector() + : room_(0), + y_location_(0) { + } + RoomVector(uint32_t _room, uint32_t _y_location) + : room_(flatbuffers::EndianScalar(_room)), + y_location_(flatbuffers::EndianScalar(_y_location)) { + } + uint32_t room() const { + return flatbuffers::EndianScalar(room_); + } + uint32_t y_location() const { + return flatbuffers::EndianScalar(y_location_); + } +}; +FLATBUFFERS_STRUCT_END(RoomVector, 8); + +struct RoomVector::Traits { + using type = RoomVector; +}; + +FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) KeyValPair FLATBUFFERS_FINAL_CLASS { + private: + uint32_t key_; + uint32_t val_; + + public: + struct Traits; + KeyValPair() + : key_(0), + val_(0) { + } + KeyValPair(uint32_t _key, uint32_t _val) + : key_(flatbuffers::EndianScalar(_key)), + val_(flatbuffers::EndianScalar(_val)) { + } + uint32_t key() const { + return flatbuffers::EndianScalar(key_); + } + uint32_t val() const { + return flatbuffers::EndianScalar(val_); + } +}; +FLATBUFFERS_STRUCT_END(KeyValPair, 8); + +struct KeyValPair::Traits { + using type = KeyValPair; +}; + +struct RoomT : public flatbuffers::NativeTable { + typedef Room TableType; + int32_t index = 0; + std::string name{}; + int32_t flags = 0; + int32_t reverb_type = 0; +}; + +struct Room FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef RoomT NativeTableType; + typedef RoomBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_INDEX = 4, + VT_NAME = 6, + VT_FLAGS = 8, + VT_REVERB_TYPE = 10 + }; + int32_t index() const { + return GetField(VT_INDEX, 0); + } + const flatbuffers::String *name() const { + return GetPointer(VT_NAME); + } + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + int32_t reverb_type() const { + return GetField(VT_REVERB_TYPE, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_INDEX) && + VerifyOffset(verifier, VT_NAME) && + verifier.VerifyString(name()) && + VerifyField(verifier, VT_FLAGS) && + VerifyField(verifier, VT_REVERB_TYPE) && + verifier.EndTable(); + } + RoomT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(RoomT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const RoomT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct RoomBuilder { + typedef Room Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_index(int32_t index) { + fbb_.AddElement(Room::VT_INDEX, index, 0); + } + void add_name(flatbuffers::Offset name) { + fbb_.AddOffset(Room::VT_NAME, name); + } + void add_flags(int32_t flags) { + fbb_.AddElement(Room::VT_FLAGS, flags, 0); + } + void add_reverb_type(int32_t reverb_type) { + fbb_.AddElement(Room::VT_REVERB_TYPE, reverb_type, 0); + } + explicit RoomBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateRoom( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t index = 0, + flatbuffers::Offset name = 0, + int32_t flags = 0, + int32_t reverb_type = 0) { + RoomBuilder builder_(_fbb); + builder_.add_reverb_type(reverb_type); + builder_.add_flags(flags); + builder_.add_name(name); + builder_.add_index(index); + return builder_.Finish(); +} + +struct Room::Traits { + using type = Room; + static auto constexpr Create = CreateRoom; +}; + +inline flatbuffers::Offset CreateRoomDirect( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t index = 0, + const char *name = nullptr, + int32_t flags = 0, + int32_t reverb_type = 0) { + auto name__ = name ? _fbb.CreateString(name) : 0; + return TEN::Save::CreateRoom( + _fbb, + index, + name__, + flags, + reverb_type); +} + +flatbuffers::Offset CreateRoom(flatbuffers::FlatBufferBuilder &_fbb, const RoomT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct ItemT : public flatbuffers::NativeTable { + typedef Item TableType; + int32_t active_state = 0; + int32_t anim_number = 0; + int32_t frame_number = 0; + bool is_airborne = false; + int32_t required_state = 0; + int32_t target_state = 0; + std::unique_ptr velocity{}; + int32_t floor = 0; + int32_t touch_bits = 0; + int32_t mesh_bits = 0; + int32_t object_id = 0; + int32_t room_number = 0; + int32_t hit_points = 0; + int32_t box_number = 0; + int32_t timer = 0; + std::unique_ptr color{}; + int32_t flags = 0; + int32_t trigger_flags = 0; + int32_t carried_item = 0; + int32_t after_death = 0; + std::vector item_flags{}; + std::unique_ptr pose{}; + int32_t next_item = 0; + int32_t next_item_active = 0; + bool active = false; + int32_t status = 0; + bool hit_stauts = false; + bool collidable = false; + bool looked_at = false; + int32_t ai_bits = 0; + TEN::Save::ItemDataUnion data{}; + int32_t base_mesh = 0; + std::vector mesh_pointers{}; + int32_t effect_type = 0; + std::unique_ptr effect_light_colour{}; + std::unique_ptr effect_primary_colour{}; + std::unique_ptr effect_secondary_colour{}; + int32_t effect_count = 0; + std::string lua_name{}; + std::string lua_on_killed_name{}; + std::string lua_on_hit_name{}; + std::string lua_on_collided_with_object_name{}; + std::string lua_on_collided_with_room_name{}; +}; + +struct Item FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef ItemT NativeTableType; + typedef ItemBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_ACTIVE_STATE = 4, + VT_ANIM_NUMBER = 6, + VT_FRAME_NUMBER = 8, + VT_IS_AIRBORNE = 10, + VT_REQUIRED_STATE = 12, + VT_TARGET_STATE = 14, + VT_VELOCITY = 16, + VT_FLOOR = 18, + VT_TOUCH_BITS = 20, + VT_MESH_BITS = 22, + VT_OBJECT_ID = 24, + VT_ROOM_NUMBER = 26, + VT_HIT_POINTS = 28, + VT_BOX_NUMBER = 30, + VT_TIMER = 32, + VT_COLOR = 34, + VT_FLAGS = 36, + VT_TRIGGER_FLAGS = 38, + VT_CARRIED_ITEM = 40, + VT_AFTER_DEATH = 42, + VT_ITEM_FLAGS = 44, + VT_POSE = 46, + VT_NEXT_ITEM = 48, + VT_NEXT_ITEM_ACTIVE = 50, + VT_ACTIVE = 52, + VT_STATUS = 54, + VT_HIT_STAUTS = 56, + VT_COLLIDABLE = 58, + VT_LOOKED_AT = 60, + VT_AI_BITS = 62, + VT_DATA_TYPE = 64, + VT_DATA = 66, + VT_BASE_MESH = 68, + VT_MESH_POINTERS = 70, + VT_EFFECT_TYPE = 72, + VT_EFFECT_LIGHT_COLOUR = 74, + VT_EFFECT_PRIMARY_COLOUR = 76, + VT_EFFECT_SECONDARY_COLOUR = 78, + VT_EFFECT_COUNT = 80, + VT_LUA_NAME = 82, + VT_LUA_ON_KILLED_NAME = 84, + VT_LUA_ON_HIT_NAME = 86, + VT_LUA_ON_COLLIDED_WITH_OBJECT_NAME = 88, + VT_LUA_ON_COLLIDED_WITH_ROOM_NAME = 90 + }; + int32_t active_state() const { + return GetField(VT_ACTIVE_STATE, 0); + } + int32_t anim_number() const { + return GetField(VT_ANIM_NUMBER, 0); + } + int32_t frame_number() const { + return GetField(VT_FRAME_NUMBER, 0); + } + bool is_airborne() const { + return GetField(VT_IS_AIRBORNE, 0) != 0; + } + int32_t required_state() const { + return GetField(VT_REQUIRED_STATE, 0); + } + int32_t target_state() const { + return GetField(VT_TARGET_STATE, 0); + } + const TEN::Save::Vector3 *velocity() const { + return GetStruct(VT_VELOCITY); + } + int32_t floor() const { + return GetField(VT_FLOOR, 0); + } + int32_t touch_bits() const { + return GetField(VT_TOUCH_BITS, 0); + } + int32_t mesh_bits() const { + return GetField(VT_MESH_BITS, 0); + } + int32_t object_id() const { + return GetField(VT_OBJECT_ID, 0); + } + int32_t room_number() const { + return GetField(VT_ROOM_NUMBER, 0); + } + int32_t hit_points() const { + return GetField(VT_HIT_POINTS, 0); + } + int32_t box_number() const { + return GetField(VT_BOX_NUMBER, 0); + } + int32_t timer() const { + return GetField(VT_TIMER, 0); + } + const TEN::Save::Vector4 *color() const { + return GetStruct(VT_COLOR); + } + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + int32_t trigger_flags() const { + return GetField(VT_TRIGGER_FLAGS, 0); + } + int32_t carried_item() const { + return GetField(VT_CARRIED_ITEM, 0); + } + int32_t after_death() const { + return GetField(VT_AFTER_DEATH, 0); + } + const flatbuffers::Vector *item_flags() const { + return GetPointer *>(VT_ITEM_FLAGS); + } + const TEN::Save::Position *pose() const { + return GetStruct(VT_POSE); + } + int32_t next_item() const { + return GetField(VT_NEXT_ITEM, 0); + } + int32_t next_item_active() const { + return GetField(VT_NEXT_ITEM_ACTIVE, 0); + } + bool active() const { + return GetField(VT_ACTIVE, 0) != 0; + } + int32_t status() const { + return GetField(VT_STATUS, 0); + } + bool hit_stauts() const { + return GetField(VT_HIT_STAUTS, 0) != 0; + } + bool collidable() const { + return GetField(VT_COLLIDABLE, 0) != 0; + } + bool looked_at() const { + return GetField(VT_LOOKED_AT, 0) != 0; + } + int32_t ai_bits() const { + return GetField(VT_AI_BITS, 0); + } + TEN::Save::ItemData data_type() const { + return static_cast(GetField(VT_DATA_TYPE, 0)); + } + const void *data() const { + return GetPointer(VT_DATA); + } + template const T *data_as() const; + const TEN::Save::Int *data_as_Int() const { + return data_type() == TEN::Save::ItemData::Int ? static_cast(data()) : nullptr; + } + const TEN::Save::Short *data_as_Short() const { + return data_type() == TEN::Save::ItemData::Short ? static_cast(data()) : nullptr; + } + const TEN::Save::Float *data_as_Float() const { + return data_type() == TEN::Save::ItemData::Float ? static_cast(data()) : nullptr; + } + const TEN::Save::ShortArray *data_as_ShortArray() const { + return data_type() == TEN::Save::ItemData::ShortArray ? static_cast(data()) : nullptr; + } + const TEN::Save::ItemNumber *data_as_ItemNumber() const { + return data_type() == TEN::Save::ItemData::ItemNumber ? static_cast(data()) : nullptr; + } + const TEN::Save::Creature *data_as_Creature() const { + return data_type() == TEN::Save::ItemData::Creature ? static_cast(data()) : nullptr; + } + const TEN::Save::LaserHead *data_as_LaserHead() const { + return data_type() == TEN::Save::ItemData::LaserHead ? static_cast(data()) : nullptr; + } + const TEN::Save::QuadBike *data_as_QuadBike() const { + return data_type() == TEN::Save::ItemData::QuadBike ? static_cast(data()) : nullptr; + } + const TEN::Save::BigGun *data_as_BigGun() const { + return data_type() == TEN::Save::ItemData::BigGun ? static_cast(data()) : nullptr; + } + const TEN::Save::Motorbike *data_as_Motorbike() const { + return data_type() == TEN::Save::ItemData::Motorbike ? static_cast(data()) : nullptr; + } + const TEN::Save::Jeep *data_as_Jeep() const { + return data_type() == TEN::Save::ItemData::Jeep ? static_cast(data()) : nullptr; + } + const TEN::Save::LaraInfo *data_as_LaraInfo() const { + return data_type() == TEN::Save::ItemData::LaraInfo ? static_cast(data()) : nullptr; + } + const TEN::Save::Kayak *data_as_Kayak() const { + return data_type() == TEN::Save::ItemData::Kayak ? static_cast(data()) : nullptr; + } + const TEN::Save::Door *data_as_Door() const { + return data_type() == TEN::Save::ItemData::Door ? static_cast(data()) : nullptr; + } + const TEN::Save::Skidoo *data_as_Skidoo() const { + return data_type() == TEN::Save::ItemData::Skidoo ? static_cast(data()) : nullptr; + } + const TEN::Save::UPV *data_as_UPV() const { + return data_type() == TEN::Save::ItemData::UPV ? static_cast(data()) : nullptr; + } + const TEN::Save::Motorboat *data_as_Motorboat() const { + return data_type() == TEN::Save::ItemData::Motorboat ? static_cast(data()) : nullptr; + } + const TEN::Save::GameVector *data_as_GameVector() const { + return data_type() == TEN::Save::ItemData::GameVector ? static_cast(data()) : nullptr; + } + const TEN::Save::Wraith *data_as_Wraith() const { + return data_type() == TEN::Save::ItemData::Wraith ? static_cast(data()) : nullptr; + } + const TEN::Save::Rubberboat *data_as_Rubberboat() const { + return data_type() == TEN::Save::ItemData::Rubberboat ? static_cast(data()) : nullptr; + } + const TEN::Save::Pushable *data_as_Pushable() const { + return data_type() == TEN::Save::ItemData::Pushable ? static_cast(data()) : nullptr; + } + const TEN::Save::Minecart *data_as_Minecart() const { + return data_type() == TEN::Save::ItemData::Minecart ? static_cast(data()) : nullptr; + } + int32_t base_mesh() const { + return GetField(VT_BASE_MESH, 0); + } + const flatbuffers::Vector *mesh_pointers() const { + return GetPointer *>(VT_MESH_POINTERS); + } + int32_t effect_type() const { + return GetField(VT_EFFECT_TYPE, 0); + } + const TEN::Save::Vector3 *effect_light_colour() const { + return GetStruct(VT_EFFECT_LIGHT_COLOUR); + } + const TEN::Save::Vector3 *effect_primary_colour() const { + return GetStruct(VT_EFFECT_PRIMARY_COLOUR); + } + const TEN::Save::Vector3 *effect_secondary_colour() const { + return GetStruct(VT_EFFECT_SECONDARY_COLOUR); + } + int32_t effect_count() const { + return GetField(VT_EFFECT_COUNT, 0); + } + const flatbuffers::String *lua_name() const { + return GetPointer(VT_LUA_NAME); + } + const flatbuffers::String *lua_on_killed_name() const { + return GetPointer(VT_LUA_ON_KILLED_NAME); + } + const flatbuffers::String *lua_on_hit_name() const { + return GetPointer(VT_LUA_ON_HIT_NAME); + } + const flatbuffers::String *lua_on_collided_with_object_name() const { + return GetPointer(VT_LUA_ON_COLLIDED_WITH_OBJECT_NAME); + } + const flatbuffers::String *lua_on_collided_with_room_name() const { + return GetPointer(VT_LUA_ON_COLLIDED_WITH_ROOM_NAME); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_ACTIVE_STATE) && + VerifyField(verifier, VT_ANIM_NUMBER) && + VerifyField(verifier, VT_FRAME_NUMBER) && + VerifyField(verifier, VT_IS_AIRBORNE) && + VerifyField(verifier, VT_REQUIRED_STATE) && + VerifyField(verifier, VT_TARGET_STATE) && + VerifyField(verifier, VT_VELOCITY) && + VerifyField(verifier, VT_FLOOR) && + VerifyField(verifier, VT_TOUCH_BITS) && + VerifyField(verifier, VT_MESH_BITS) && + VerifyField(verifier, VT_OBJECT_ID) && + VerifyField(verifier, VT_ROOM_NUMBER) && + VerifyField(verifier, VT_HIT_POINTS) && + VerifyField(verifier, VT_BOX_NUMBER) && + VerifyField(verifier, VT_TIMER) && + VerifyField(verifier, VT_COLOR) && + VerifyField(verifier, VT_FLAGS) && + VerifyField(verifier, VT_TRIGGER_FLAGS) && + VerifyField(verifier, VT_CARRIED_ITEM) && + VerifyField(verifier, VT_AFTER_DEATH) && + VerifyOffset(verifier, VT_ITEM_FLAGS) && + verifier.VerifyVector(item_flags()) && + VerifyField(verifier, VT_POSE) && + VerifyField(verifier, VT_NEXT_ITEM) && + VerifyField(verifier, VT_NEXT_ITEM_ACTIVE) && + VerifyField(verifier, VT_ACTIVE) && + VerifyField(verifier, VT_STATUS) && + VerifyField(verifier, VT_HIT_STAUTS) && + VerifyField(verifier, VT_COLLIDABLE) && + VerifyField(verifier, VT_LOOKED_AT) && + VerifyField(verifier, VT_AI_BITS) && + VerifyField(verifier, VT_DATA_TYPE) && + VerifyOffset(verifier, VT_DATA) && + VerifyItemData(verifier, data(), data_type()) && + VerifyField(verifier, VT_BASE_MESH) && + VerifyOffset(verifier, VT_MESH_POINTERS) && + verifier.VerifyVector(mesh_pointers()) && + VerifyField(verifier, VT_EFFECT_TYPE) && + VerifyField(verifier, VT_EFFECT_LIGHT_COLOUR) && + VerifyField(verifier, VT_EFFECT_PRIMARY_COLOUR) && + VerifyField(verifier, VT_EFFECT_SECONDARY_COLOUR) && + VerifyField(verifier, VT_EFFECT_COUNT) && + VerifyOffset(verifier, VT_LUA_NAME) && + verifier.VerifyString(lua_name()) && + VerifyOffset(verifier, VT_LUA_ON_KILLED_NAME) && + verifier.VerifyString(lua_on_killed_name()) && + VerifyOffset(verifier, VT_LUA_ON_HIT_NAME) && + verifier.VerifyString(lua_on_hit_name()) && + VerifyOffset(verifier, VT_LUA_ON_COLLIDED_WITH_OBJECT_NAME) && + verifier.VerifyString(lua_on_collided_with_object_name()) && + VerifyOffset(verifier, VT_LUA_ON_COLLIDED_WITH_ROOM_NAME) && + verifier.VerifyString(lua_on_collided_with_room_name()) && + verifier.EndTable(); + } + ItemT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ItemT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ItemT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +template<> inline const TEN::Save::Int *Item::data_as() const { + return data_as_Int(); +} + +template<> inline const TEN::Save::Short *Item::data_as() const { + return data_as_Short(); +} + +template<> inline const TEN::Save::Float *Item::data_as() const { + return data_as_Float(); +} + +template<> inline const TEN::Save::ShortArray *Item::data_as() const { + return data_as_ShortArray(); +} + +template<> inline const TEN::Save::ItemNumber *Item::data_as() const { + return data_as_ItemNumber(); +} + +template<> inline const TEN::Save::Creature *Item::data_as() const { + return data_as_Creature(); +} + +template<> inline const TEN::Save::LaserHead *Item::data_as() const { + return data_as_LaserHead(); +} + +template<> inline const TEN::Save::QuadBike *Item::data_as() const { + return data_as_QuadBike(); +} + +template<> inline const TEN::Save::BigGun *Item::data_as() const { + return data_as_BigGun(); +} + +template<> inline const TEN::Save::Motorbike *Item::data_as() const { + return data_as_Motorbike(); +} + +template<> inline const TEN::Save::Jeep *Item::data_as() const { + return data_as_Jeep(); +} + +template<> inline const TEN::Save::LaraInfo *Item::data_as() const { + return data_as_LaraInfo(); +} + +template<> inline const TEN::Save::Kayak *Item::data_as() const { + return data_as_Kayak(); +} + +template<> inline const TEN::Save::Door *Item::data_as() const { + return data_as_Door(); +} + +template<> inline const TEN::Save::Skidoo *Item::data_as() const { + return data_as_Skidoo(); +} + +template<> inline const TEN::Save::UPV *Item::data_as() const { + return data_as_UPV(); +} + +template<> inline const TEN::Save::Motorboat *Item::data_as() const { + return data_as_Motorboat(); +} + +template<> inline const TEN::Save::GameVector *Item::data_as() const { + return data_as_GameVector(); +} + +template<> inline const TEN::Save::Wraith *Item::data_as() const { + return data_as_Wraith(); +} + +template<> inline const TEN::Save::Rubberboat *Item::data_as() const { + return data_as_Rubberboat(); +} + +template<> inline const TEN::Save::Pushable *Item::data_as() const { + return data_as_Pushable(); +} + +template<> inline const TEN::Save::Minecart *Item::data_as() const { + return data_as_Minecart(); +} + +struct ItemBuilder { + typedef Item Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_active_state(int32_t active_state) { + fbb_.AddElement(Item::VT_ACTIVE_STATE, active_state, 0); + } + void add_anim_number(int32_t anim_number) { + fbb_.AddElement(Item::VT_ANIM_NUMBER, anim_number, 0); + } + void add_frame_number(int32_t frame_number) { + fbb_.AddElement(Item::VT_FRAME_NUMBER, frame_number, 0); + } + void add_is_airborne(bool is_airborne) { + fbb_.AddElement(Item::VT_IS_AIRBORNE, static_cast(is_airborne), 0); + } + void add_required_state(int32_t required_state) { + fbb_.AddElement(Item::VT_REQUIRED_STATE, required_state, 0); + } + void add_target_state(int32_t target_state) { + fbb_.AddElement(Item::VT_TARGET_STATE, target_state, 0); + } + void add_velocity(const TEN::Save::Vector3 *velocity) { + fbb_.AddStruct(Item::VT_VELOCITY, velocity); + } + void add_floor(int32_t floor) { + fbb_.AddElement(Item::VT_FLOOR, floor, 0); + } + void add_touch_bits(int32_t touch_bits) { + fbb_.AddElement(Item::VT_TOUCH_BITS, touch_bits, 0); + } + void add_mesh_bits(int32_t mesh_bits) { + fbb_.AddElement(Item::VT_MESH_BITS, mesh_bits, 0); + } + void add_object_id(int32_t object_id) { + fbb_.AddElement(Item::VT_OBJECT_ID, object_id, 0); + } + void add_room_number(int32_t room_number) { + fbb_.AddElement(Item::VT_ROOM_NUMBER, room_number, 0); + } + void add_hit_points(int32_t hit_points) { + fbb_.AddElement(Item::VT_HIT_POINTS, hit_points, 0); + } + void add_box_number(int32_t box_number) { + fbb_.AddElement(Item::VT_BOX_NUMBER, box_number, 0); + } + void add_timer(int32_t timer) { + fbb_.AddElement(Item::VT_TIMER, timer, 0); + } + void add_color(const TEN::Save::Vector4 *color) { + fbb_.AddStruct(Item::VT_COLOR, color); + } + void add_flags(int32_t flags) { + fbb_.AddElement(Item::VT_FLAGS, flags, 0); + } + void add_trigger_flags(int32_t trigger_flags) { + fbb_.AddElement(Item::VT_TRIGGER_FLAGS, trigger_flags, 0); + } + void add_carried_item(int32_t carried_item) { + fbb_.AddElement(Item::VT_CARRIED_ITEM, carried_item, 0); + } + void add_after_death(int32_t after_death) { + fbb_.AddElement(Item::VT_AFTER_DEATH, after_death, 0); + } + void add_item_flags(flatbuffers::Offset> item_flags) { + fbb_.AddOffset(Item::VT_ITEM_FLAGS, item_flags); + } + void add_pose(const TEN::Save::Position *pose) { + fbb_.AddStruct(Item::VT_POSE, pose); + } + void add_next_item(int32_t next_item) { + fbb_.AddElement(Item::VT_NEXT_ITEM, next_item, 0); + } + void add_next_item_active(int32_t next_item_active) { + fbb_.AddElement(Item::VT_NEXT_ITEM_ACTIVE, next_item_active, 0); + } + void add_active(bool active) { + fbb_.AddElement(Item::VT_ACTIVE, static_cast(active), 0); + } + void add_status(int32_t status) { + fbb_.AddElement(Item::VT_STATUS, status, 0); + } + void add_hit_stauts(bool hit_stauts) { + fbb_.AddElement(Item::VT_HIT_STAUTS, static_cast(hit_stauts), 0); + } + void add_collidable(bool collidable) { + fbb_.AddElement(Item::VT_COLLIDABLE, static_cast(collidable), 0); + } + void add_looked_at(bool looked_at) { + fbb_.AddElement(Item::VT_LOOKED_AT, static_cast(looked_at), 0); + } + void add_ai_bits(int32_t ai_bits) { + fbb_.AddElement(Item::VT_AI_BITS, ai_bits, 0); + } + void add_data_type(TEN::Save::ItemData data_type) { + fbb_.AddElement(Item::VT_DATA_TYPE, static_cast(data_type), 0); + } + void add_data(flatbuffers::Offset data) { + fbb_.AddOffset(Item::VT_DATA, data); + } + void add_base_mesh(int32_t base_mesh) { + fbb_.AddElement(Item::VT_BASE_MESH, base_mesh, 0); + } + void add_mesh_pointers(flatbuffers::Offset> mesh_pointers) { + fbb_.AddOffset(Item::VT_MESH_POINTERS, mesh_pointers); + } + void add_effect_type(int32_t effect_type) { + fbb_.AddElement(Item::VT_EFFECT_TYPE, effect_type, 0); + } + void add_effect_light_colour(const TEN::Save::Vector3 *effect_light_colour) { + fbb_.AddStruct(Item::VT_EFFECT_LIGHT_COLOUR, effect_light_colour); + } + void add_effect_primary_colour(const TEN::Save::Vector3 *effect_primary_colour) { + fbb_.AddStruct(Item::VT_EFFECT_PRIMARY_COLOUR, effect_primary_colour); + } + void add_effect_secondary_colour(const TEN::Save::Vector3 *effect_secondary_colour) { + fbb_.AddStruct(Item::VT_EFFECT_SECONDARY_COLOUR, effect_secondary_colour); + } + void add_effect_count(int32_t effect_count) { + fbb_.AddElement(Item::VT_EFFECT_COUNT, effect_count, 0); + } + void add_lua_name(flatbuffers::Offset lua_name) { + fbb_.AddOffset(Item::VT_LUA_NAME, lua_name); + } + void add_lua_on_killed_name(flatbuffers::Offset lua_on_killed_name) { + fbb_.AddOffset(Item::VT_LUA_ON_KILLED_NAME, lua_on_killed_name); + } + void add_lua_on_hit_name(flatbuffers::Offset lua_on_hit_name) { + fbb_.AddOffset(Item::VT_LUA_ON_HIT_NAME, lua_on_hit_name); + } + void add_lua_on_collided_with_object_name(flatbuffers::Offset lua_on_collided_with_object_name) { + fbb_.AddOffset(Item::VT_LUA_ON_COLLIDED_WITH_OBJECT_NAME, lua_on_collided_with_object_name); + } + void add_lua_on_collided_with_room_name(flatbuffers::Offset lua_on_collided_with_room_name) { + fbb_.AddOffset(Item::VT_LUA_ON_COLLIDED_WITH_ROOM_NAME, lua_on_collided_with_room_name); + } + explicit ItemBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateItem( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t active_state = 0, + int32_t anim_number = 0, + int32_t frame_number = 0, + bool is_airborne = false, + int32_t required_state = 0, + int32_t target_state = 0, + const TEN::Save::Vector3 *velocity = 0, + int32_t floor = 0, + int32_t touch_bits = 0, + int32_t mesh_bits = 0, + int32_t object_id = 0, + int32_t room_number = 0, + int32_t hit_points = 0, + int32_t box_number = 0, + int32_t timer = 0, + const TEN::Save::Vector4 *color = 0, + int32_t flags = 0, + int32_t trigger_flags = 0, + int32_t carried_item = 0, + int32_t after_death = 0, + flatbuffers::Offset> item_flags = 0, + const TEN::Save::Position *pose = 0, + int32_t next_item = 0, + int32_t next_item_active = 0, + bool active = false, + int32_t status = 0, + bool hit_stauts = false, + bool collidable = false, + bool looked_at = false, + int32_t ai_bits = 0, + TEN::Save::ItemData data_type = TEN::Save::ItemData::NONE, + flatbuffers::Offset data = 0, + int32_t base_mesh = 0, + flatbuffers::Offset> mesh_pointers = 0, + int32_t effect_type = 0, + const TEN::Save::Vector3 *effect_light_colour = 0, + const TEN::Save::Vector3 *effect_primary_colour = 0, + const TEN::Save::Vector3 *effect_secondary_colour = 0, + int32_t effect_count = 0, + flatbuffers::Offset lua_name = 0, + flatbuffers::Offset lua_on_killed_name = 0, + flatbuffers::Offset lua_on_hit_name = 0, + flatbuffers::Offset lua_on_collided_with_object_name = 0, + flatbuffers::Offset lua_on_collided_with_room_name = 0) { + ItemBuilder builder_(_fbb); + builder_.add_lua_on_collided_with_room_name(lua_on_collided_with_room_name); + builder_.add_lua_on_collided_with_object_name(lua_on_collided_with_object_name); + builder_.add_lua_on_hit_name(lua_on_hit_name); + builder_.add_lua_on_killed_name(lua_on_killed_name); + builder_.add_lua_name(lua_name); + builder_.add_effect_count(effect_count); + builder_.add_effect_secondary_colour(effect_secondary_colour); + builder_.add_effect_primary_colour(effect_primary_colour); + builder_.add_effect_light_colour(effect_light_colour); + builder_.add_effect_type(effect_type); + builder_.add_mesh_pointers(mesh_pointers); + builder_.add_base_mesh(base_mesh); + builder_.add_data(data); + builder_.add_ai_bits(ai_bits); + builder_.add_status(status); + builder_.add_next_item_active(next_item_active); + builder_.add_next_item(next_item); + builder_.add_pose(pose); + builder_.add_item_flags(item_flags); + builder_.add_after_death(after_death); + builder_.add_carried_item(carried_item); + builder_.add_trigger_flags(trigger_flags); + builder_.add_flags(flags); + builder_.add_color(color); + builder_.add_timer(timer); + builder_.add_box_number(box_number); + builder_.add_hit_points(hit_points); + builder_.add_room_number(room_number); + builder_.add_object_id(object_id); + builder_.add_mesh_bits(mesh_bits); + builder_.add_touch_bits(touch_bits); + builder_.add_floor(floor); + builder_.add_velocity(velocity); + builder_.add_target_state(target_state); + builder_.add_required_state(required_state); + builder_.add_frame_number(frame_number); + builder_.add_anim_number(anim_number); + builder_.add_active_state(active_state); + builder_.add_data_type(data_type); + builder_.add_looked_at(looked_at); + builder_.add_collidable(collidable); + builder_.add_hit_stauts(hit_stauts); + builder_.add_active(active); + builder_.add_is_airborne(is_airborne); + return builder_.Finish(); +} + +struct Item::Traits { + using type = Item; + static auto constexpr Create = CreateItem; +}; + +inline flatbuffers::Offset CreateItemDirect( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t active_state = 0, + int32_t anim_number = 0, + int32_t frame_number = 0, + bool is_airborne = false, + int32_t required_state = 0, + int32_t target_state = 0, + const TEN::Save::Vector3 *velocity = 0, + int32_t floor = 0, + int32_t touch_bits = 0, + int32_t mesh_bits = 0, + int32_t object_id = 0, + int32_t room_number = 0, + int32_t hit_points = 0, + int32_t box_number = 0, + int32_t timer = 0, + const TEN::Save::Vector4 *color = 0, + int32_t flags = 0, + int32_t trigger_flags = 0, + int32_t carried_item = 0, + int32_t after_death = 0, + const std::vector *item_flags = nullptr, + const TEN::Save::Position *pose = 0, + int32_t next_item = 0, + int32_t next_item_active = 0, + bool active = false, + int32_t status = 0, + bool hit_stauts = false, + bool collidable = false, + bool looked_at = false, + int32_t ai_bits = 0, + TEN::Save::ItemData data_type = TEN::Save::ItemData::NONE, + flatbuffers::Offset data = 0, + int32_t base_mesh = 0, + const std::vector *mesh_pointers = nullptr, + int32_t effect_type = 0, + const TEN::Save::Vector3 *effect_light_colour = 0, + const TEN::Save::Vector3 *effect_primary_colour = 0, + const TEN::Save::Vector3 *effect_secondary_colour = 0, + int32_t effect_count = 0, + const char *lua_name = nullptr, + const char *lua_on_killed_name = nullptr, + const char *lua_on_hit_name = nullptr, + const char *lua_on_collided_with_object_name = nullptr, + const char *lua_on_collided_with_room_name = nullptr) { + auto item_flags__ = item_flags ? _fbb.CreateVector(*item_flags) : 0; + auto mesh_pointers__ = mesh_pointers ? _fbb.CreateVector(*mesh_pointers) : 0; + auto lua_name__ = lua_name ? _fbb.CreateString(lua_name) : 0; + auto lua_on_killed_name__ = lua_on_killed_name ? _fbb.CreateString(lua_on_killed_name) : 0; + auto lua_on_hit_name__ = lua_on_hit_name ? _fbb.CreateString(lua_on_hit_name) : 0; + auto lua_on_collided_with_object_name__ = lua_on_collided_with_object_name ? _fbb.CreateString(lua_on_collided_with_object_name) : 0; + auto lua_on_collided_with_room_name__ = lua_on_collided_with_room_name ? _fbb.CreateString(lua_on_collided_with_room_name) : 0; + return TEN::Save::CreateItem( + _fbb, + active_state, + anim_number, + frame_number, + is_airborne, + required_state, + target_state, + velocity, + floor, + touch_bits, + mesh_bits, + object_id, + room_number, + hit_points, + box_number, + timer, + color, + flags, + trigger_flags, + carried_item, + after_death, + item_flags__, + pose, + next_item, + next_item_active, + active, + status, + hit_stauts, + collidable, + looked_at, + ai_bits, + data_type, + data, + base_mesh, + mesh_pointers__, + effect_type, + effect_light_colour, + effect_primary_colour, + effect_secondary_colour, + effect_count, + lua_name__, + lua_on_killed_name__, + lua_on_hit_name__, + lua_on_collided_with_object_name__, + lua_on_collided_with_room_name__); +} + +flatbuffers::Offset CreateItem(flatbuffers::FlatBufferBuilder &_fbb, const ItemT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct FXInfoT : public flatbuffers::NativeTable { + typedef FXInfo TableType; + std::unique_ptr pose{}; + int32_t room_number = 0; + int32_t object_number = 0; + int32_t next_fx = 0; + int32_t next_active = 0; + int32_t speed = 0; + int32_t fall_speed = 0; + int32_t frame_number = 0; + int32_t counter = 0; + std::unique_ptr color{}; + int32_t flag1 = 0; + int32_t flag2 = 0; +}; + +struct FXInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef FXInfoT NativeTableType; + typedef FXInfoBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_POSE = 4, + VT_ROOM_NUMBER = 6, + VT_OBJECT_NUMBER = 8, + VT_NEXT_FX = 10, + VT_NEXT_ACTIVE = 12, + VT_SPEED = 14, + VT_FALL_SPEED = 16, + VT_FRAME_NUMBER = 18, + VT_COUNTER = 20, + VT_COLOR = 22, + VT_FLAG1 = 24, + VT_FLAG2 = 26 + }; + const TEN::Save::Position *pose() const { + return GetStruct(VT_POSE); + } + int32_t room_number() const { + return GetField(VT_ROOM_NUMBER, 0); + } + int32_t object_number() const { + return GetField(VT_OBJECT_NUMBER, 0); + } + int32_t next_fx() const { + return GetField(VT_NEXT_FX, 0); + } + int32_t next_active() const { + return GetField(VT_NEXT_ACTIVE, 0); + } + int32_t speed() const { + return GetField(VT_SPEED, 0); + } + int32_t fall_speed() const { + return GetField(VT_FALL_SPEED, 0); + } + int32_t frame_number() const { + return GetField(VT_FRAME_NUMBER, 0); + } + int32_t counter() const { + return GetField(VT_COUNTER, 0); + } + const TEN::Save::Vector4 *color() const { + return GetStruct(VT_COLOR); + } + int32_t flag1() const { + return GetField(VT_FLAG1, 0); + } + int32_t flag2() const { + return GetField(VT_FLAG2, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_POSE) && + VerifyField(verifier, VT_ROOM_NUMBER) && + VerifyField(verifier, VT_OBJECT_NUMBER) && + VerifyField(verifier, VT_NEXT_FX) && + VerifyField(verifier, VT_NEXT_ACTIVE) && + VerifyField(verifier, VT_SPEED) && + VerifyField(verifier, VT_FALL_SPEED) && + VerifyField(verifier, VT_FRAME_NUMBER) && + VerifyField(verifier, VT_COUNTER) && + VerifyField(verifier, VT_COLOR) && + VerifyField(verifier, VT_FLAG1) && + VerifyField(verifier, VT_FLAG2) && + verifier.EndTable(); + } + FXInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(FXInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const FXInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct FXInfoBuilder { + typedef FXInfo Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_pose(const TEN::Save::Position *pose) { + fbb_.AddStruct(FXInfo::VT_POSE, pose); + } + void add_room_number(int32_t room_number) { + fbb_.AddElement(FXInfo::VT_ROOM_NUMBER, room_number, 0); + } + void add_object_number(int32_t object_number) { + fbb_.AddElement(FXInfo::VT_OBJECT_NUMBER, object_number, 0); + } + void add_next_fx(int32_t next_fx) { + fbb_.AddElement(FXInfo::VT_NEXT_FX, next_fx, 0); + } + void add_next_active(int32_t next_active) { + fbb_.AddElement(FXInfo::VT_NEXT_ACTIVE, next_active, 0); + } + void add_speed(int32_t speed) { + fbb_.AddElement(FXInfo::VT_SPEED, speed, 0); + } + void add_fall_speed(int32_t fall_speed) { + fbb_.AddElement(FXInfo::VT_FALL_SPEED, fall_speed, 0); + } + void add_frame_number(int32_t frame_number) { + fbb_.AddElement(FXInfo::VT_FRAME_NUMBER, frame_number, 0); + } + void add_counter(int32_t counter) { + fbb_.AddElement(FXInfo::VT_COUNTER, counter, 0); + } + void add_color(const TEN::Save::Vector4 *color) { + fbb_.AddStruct(FXInfo::VT_COLOR, color); + } + void add_flag1(int32_t flag1) { + fbb_.AddElement(FXInfo::VT_FLAG1, flag1, 0); + } + void add_flag2(int32_t flag2) { + fbb_.AddElement(FXInfo::VT_FLAG2, flag2, 0); + } + explicit FXInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateFXInfo( + flatbuffers::FlatBufferBuilder &_fbb, + const TEN::Save::Position *pose = 0, + int32_t room_number = 0, + int32_t object_number = 0, + int32_t next_fx = 0, + int32_t next_active = 0, + int32_t speed = 0, + int32_t fall_speed = 0, + int32_t frame_number = 0, + int32_t counter = 0, + const TEN::Save::Vector4 *color = 0, + int32_t flag1 = 0, + int32_t flag2 = 0) { + FXInfoBuilder builder_(_fbb); + builder_.add_flag2(flag2); + builder_.add_flag1(flag1); + builder_.add_color(color); + builder_.add_counter(counter); + builder_.add_frame_number(frame_number); + builder_.add_fall_speed(fall_speed); + builder_.add_speed(speed); + builder_.add_next_active(next_active); + builder_.add_next_fx(next_fx); + builder_.add_object_number(object_number); + builder_.add_room_number(room_number); + builder_.add_pose(pose); + return builder_.Finish(); +} + +struct FXInfo::Traits { + using type = FXInfo; + static auto constexpr Create = CreateFXInfo; +}; + +flatbuffers::Offset CreateFXInfo(flatbuffers::FlatBufferBuilder &_fbb, const FXInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct AmmoInfoT : public flatbuffers::NativeTable { + typedef AmmoInfo TableType; + int32_t count = 0; + bool is_infinite = false; +}; + +struct AmmoInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef AmmoInfoT NativeTableType; + typedef AmmoInfoBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_COUNT = 4, + VT_IS_INFINITE = 6 + }; + int32_t count() const { + return GetField(VT_COUNT, 0); + } + bool is_infinite() const { + return GetField(VT_IS_INFINITE, 0) != 0; + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_COUNT) && + VerifyField(verifier, VT_IS_INFINITE) && + verifier.EndTable(); + } + AmmoInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(AmmoInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const AmmoInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct AmmoInfoBuilder { + typedef AmmoInfo Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_count(int32_t count) { + fbb_.AddElement(AmmoInfo::VT_COUNT, count, 0); + } + void add_is_infinite(bool is_infinite) { + fbb_.AddElement(AmmoInfo::VT_IS_INFINITE, static_cast(is_infinite), 0); + } + explicit AmmoInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateAmmoInfo( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t count = 0, + bool is_infinite = false) { + AmmoInfoBuilder builder_(_fbb); + builder_.add_count(count); + builder_.add_is_infinite(is_infinite); + return builder_.Finish(); +} + +struct AmmoInfo::Traits { + using type = AmmoInfo; + static auto constexpr Create = CreateAmmoInfo; +}; + +flatbuffers::Offset CreateAmmoInfo(flatbuffers::FlatBufferBuilder &_fbb, const AmmoInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct HolsterInfoT : public flatbuffers::NativeTable { + typedef HolsterInfo TableType; + int32_t left_holster = 0; + int32_t right_holster = 0; + int32_t back_holster = 0; +}; + +struct HolsterInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef HolsterInfoT NativeTableType; + typedef HolsterInfoBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_LEFT_HOLSTER = 4, + VT_RIGHT_HOLSTER = 6, + VT_BACK_HOLSTER = 8 + }; + int32_t left_holster() const { + return GetField(VT_LEFT_HOLSTER, 0); + } + int32_t right_holster() const { + return GetField(VT_RIGHT_HOLSTER, 0); + } + int32_t back_holster() const { + return GetField(VT_BACK_HOLSTER, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_LEFT_HOLSTER) && + VerifyField(verifier, VT_RIGHT_HOLSTER) && + VerifyField(verifier, VT_BACK_HOLSTER) && + verifier.EndTable(); + } + HolsterInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(HolsterInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const HolsterInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct HolsterInfoBuilder { + typedef HolsterInfo Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_left_holster(int32_t left_holster) { + fbb_.AddElement(HolsterInfo::VT_LEFT_HOLSTER, left_holster, 0); + } + void add_right_holster(int32_t right_holster) { + fbb_.AddElement(HolsterInfo::VT_RIGHT_HOLSTER, right_holster, 0); + } + void add_back_holster(int32_t back_holster) { + fbb_.AddElement(HolsterInfo::VT_BACK_HOLSTER, back_holster, 0); + } + explicit HolsterInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateHolsterInfo( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t left_holster = 0, + int32_t right_holster = 0, + int32_t back_holster = 0) { + HolsterInfoBuilder builder_(_fbb); + builder_.add_back_holster(back_holster); + builder_.add_right_holster(right_holster); + builder_.add_left_holster(left_holster); + return builder_.Finish(); +} + +struct HolsterInfo::Traits { + using type = HolsterInfo; + static auto constexpr Create = CreateHolsterInfo; +}; + +flatbuffers::Offset CreateHolsterInfo(flatbuffers::FlatBufferBuilder &_fbb, const HolsterInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct CarriedWeaponInfoT : public flatbuffers::NativeTable { + typedef CarriedWeaponInfo TableType; + bool present = false; + bool has_lasersight = false; + bool has_silencer = false; + std::vector> ammo{}; + int32_t selected_ammo = 0; + int32_t weapon_mode = 0; +}; + +struct CarriedWeaponInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef CarriedWeaponInfoT NativeTableType; + typedef CarriedWeaponInfoBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_PRESENT = 4, + VT_HAS_LASERSIGHT = 6, + VT_HAS_SILENCER = 8, + VT_AMMO = 10, + VT_SELECTED_AMMO = 12, + VT_WEAPON_MODE = 14 + }; + bool present() const { + return GetField(VT_PRESENT, 0) != 0; + } + bool has_lasersight() const { + return GetField(VT_HAS_LASERSIGHT, 0) != 0; + } + bool has_silencer() const { + return GetField(VT_HAS_SILENCER, 0) != 0; + } + const flatbuffers::Vector> *ammo() const { + return GetPointer> *>(VT_AMMO); + } + int32_t selected_ammo() const { + return GetField(VT_SELECTED_AMMO, 0); + } + int32_t weapon_mode() const { + return GetField(VT_WEAPON_MODE, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_PRESENT) && + VerifyField(verifier, VT_HAS_LASERSIGHT) && + VerifyField(verifier, VT_HAS_SILENCER) && + VerifyOffset(verifier, VT_AMMO) && + verifier.VerifyVector(ammo()) && + verifier.VerifyVectorOfTables(ammo()) && + VerifyField(verifier, VT_SELECTED_AMMO) && + VerifyField(verifier, VT_WEAPON_MODE) && + verifier.EndTable(); + } + CarriedWeaponInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(CarriedWeaponInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const CarriedWeaponInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct CarriedWeaponInfoBuilder { + typedef CarriedWeaponInfo Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_present(bool present) { + fbb_.AddElement(CarriedWeaponInfo::VT_PRESENT, static_cast(present), 0); + } + void add_has_lasersight(bool has_lasersight) { + fbb_.AddElement(CarriedWeaponInfo::VT_HAS_LASERSIGHT, static_cast(has_lasersight), 0); + } + void add_has_silencer(bool has_silencer) { + fbb_.AddElement(CarriedWeaponInfo::VT_HAS_SILENCER, static_cast(has_silencer), 0); + } + void add_ammo(flatbuffers::Offset>> ammo) { + fbb_.AddOffset(CarriedWeaponInfo::VT_AMMO, ammo); + } + void add_selected_ammo(int32_t selected_ammo) { + fbb_.AddElement(CarriedWeaponInfo::VT_SELECTED_AMMO, selected_ammo, 0); + } + void add_weapon_mode(int32_t weapon_mode) { + fbb_.AddElement(CarriedWeaponInfo::VT_WEAPON_MODE, weapon_mode, 0); + } + explicit CarriedWeaponInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateCarriedWeaponInfo( + flatbuffers::FlatBufferBuilder &_fbb, + bool present = false, + bool has_lasersight = false, + bool has_silencer = false, + flatbuffers::Offset>> ammo = 0, + int32_t selected_ammo = 0, + int32_t weapon_mode = 0) { + CarriedWeaponInfoBuilder builder_(_fbb); + builder_.add_weapon_mode(weapon_mode); + builder_.add_selected_ammo(selected_ammo); + builder_.add_ammo(ammo); + builder_.add_has_silencer(has_silencer); + builder_.add_has_lasersight(has_lasersight); + builder_.add_present(present); + return builder_.Finish(); +} + +struct CarriedWeaponInfo::Traits { + using type = CarriedWeaponInfo; + static auto constexpr Create = CreateCarriedWeaponInfo; +}; + +inline flatbuffers::Offset CreateCarriedWeaponInfoDirect( + flatbuffers::FlatBufferBuilder &_fbb, + bool present = false, + bool has_lasersight = false, + bool has_silencer = false, + const std::vector> *ammo = nullptr, + int32_t selected_ammo = 0, + int32_t weapon_mode = 0) { + auto ammo__ = ammo ? _fbb.CreateVector>(*ammo) : 0; + return TEN::Save::CreateCarriedWeaponInfo( + _fbb, + present, + has_lasersight, + has_silencer, + ammo__, + selected_ammo, + weapon_mode); +} + +flatbuffers::Offset CreateCarriedWeaponInfo(flatbuffers::FlatBufferBuilder &_fbb, const CarriedWeaponInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct WeaponInfoT : public flatbuffers::NativeTable { + typedef WeaponInfo TableType; + uint32_t object_number = 0; + uint32_t anim_number = 0; + uint32_t frame_number = 0; + uint32_t active_state = 0; + uint32_t target_state = 0; +}; + +struct WeaponInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef WeaponInfoT NativeTableType; + typedef WeaponInfoBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_OBJECT_NUMBER = 4, + VT_ANIM_NUMBER = 6, + VT_FRAME_NUMBER = 8, + VT_ACTIVE_STATE = 10, + VT_TARGET_STATE = 12 + }; + uint32_t object_number() const { + return GetField(VT_OBJECT_NUMBER, 0); + } + uint32_t anim_number() const { + return GetField(VT_ANIM_NUMBER, 0); + } + uint32_t frame_number() const { + return GetField(VT_FRAME_NUMBER, 0); + } + uint32_t active_state() const { + return GetField(VT_ACTIVE_STATE, 0); + } + uint32_t target_state() const { + return GetField(VT_TARGET_STATE, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_OBJECT_NUMBER) && + VerifyField(verifier, VT_ANIM_NUMBER) && + VerifyField(verifier, VT_FRAME_NUMBER) && + VerifyField(verifier, VT_ACTIVE_STATE) && + VerifyField(verifier, VT_TARGET_STATE) && + verifier.EndTable(); + } + WeaponInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(WeaponInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const WeaponInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct WeaponInfoBuilder { + typedef WeaponInfo Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_object_number(uint32_t object_number) { + fbb_.AddElement(WeaponInfo::VT_OBJECT_NUMBER, object_number, 0); + } + void add_anim_number(uint32_t anim_number) { + fbb_.AddElement(WeaponInfo::VT_ANIM_NUMBER, anim_number, 0); + } + void add_frame_number(uint32_t frame_number) { + fbb_.AddElement(WeaponInfo::VT_FRAME_NUMBER, frame_number, 0); + } + void add_active_state(uint32_t active_state) { + fbb_.AddElement(WeaponInfo::VT_ACTIVE_STATE, active_state, 0); + } + void add_target_state(uint32_t target_state) { + fbb_.AddElement(WeaponInfo::VT_TARGET_STATE, target_state, 0); + } + explicit WeaponInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateWeaponInfo( + flatbuffers::FlatBufferBuilder &_fbb, + uint32_t object_number = 0, + uint32_t anim_number = 0, + uint32_t frame_number = 0, + uint32_t active_state = 0, + uint32_t target_state = 0) { + WeaponInfoBuilder builder_(_fbb); + builder_.add_target_state(target_state); + builder_.add_active_state(active_state); + builder_.add_frame_number(frame_number); + builder_.add_anim_number(anim_number); + builder_.add_object_number(object_number); + return builder_.Finish(); +} + +struct WeaponInfo::Traits { + using type = WeaponInfo; + static auto constexpr Create = CreateWeaponInfo; +}; + +flatbuffers::Offset CreateWeaponInfo(flatbuffers::FlatBufferBuilder &_fbb, const WeaponInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct ArmInfoT : public flatbuffers::NativeTable { + typedef ArmInfo TableType; + int32_t anim_number = 0; + int32_t frame_number = 0; + int32_t frame_base = 0; + bool locked = false; + std::unique_ptr rotation{}; + int32_t gun_flash = 0; + int32_t gun_smoke = 0; +}; + +struct ArmInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef ArmInfoT NativeTableType; + typedef ArmInfoBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_ANIM_NUMBER = 4, + VT_FRAME_NUMBER = 6, + VT_FRAME_BASE = 8, + VT_LOCKED = 10, + VT_ROTATION = 12, + VT_GUN_FLASH = 14, + VT_GUN_SMOKE = 16 + }; + int32_t anim_number() const { + return GetField(VT_ANIM_NUMBER, 0); + } + int32_t frame_number() const { + return GetField(VT_FRAME_NUMBER, 0); + } + int32_t frame_base() const { + return GetField(VT_FRAME_BASE, 0); + } + bool locked() const { + return GetField(VT_LOCKED, 0) != 0; + } + const TEN::Save::Vector3 *rotation() const { + return GetStruct(VT_ROTATION); + } + int32_t gun_flash() const { + return GetField(VT_GUN_FLASH, 0); + } + int32_t gun_smoke() const { + return GetField(VT_GUN_SMOKE, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_ANIM_NUMBER) && + VerifyField(verifier, VT_FRAME_NUMBER) && + VerifyField(verifier, VT_FRAME_BASE) && + VerifyField(verifier, VT_LOCKED) && + VerifyField(verifier, VT_ROTATION) && + VerifyField(verifier, VT_GUN_FLASH) && + VerifyField(verifier, VT_GUN_SMOKE) && + verifier.EndTable(); + } + ArmInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ArmInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArmInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct ArmInfoBuilder { + typedef ArmInfo Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_anim_number(int32_t anim_number) { + fbb_.AddElement(ArmInfo::VT_ANIM_NUMBER, anim_number, 0); + } + void add_frame_number(int32_t frame_number) { + fbb_.AddElement(ArmInfo::VT_FRAME_NUMBER, frame_number, 0); + } + void add_frame_base(int32_t frame_base) { + fbb_.AddElement(ArmInfo::VT_FRAME_BASE, frame_base, 0); + } + void add_locked(bool locked) { + fbb_.AddElement(ArmInfo::VT_LOCKED, static_cast(locked), 0); + } + void add_rotation(const TEN::Save::Vector3 *rotation) { + fbb_.AddStruct(ArmInfo::VT_ROTATION, rotation); + } + void add_gun_flash(int32_t gun_flash) { + fbb_.AddElement(ArmInfo::VT_GUN_FLASH, gun_flash, 0); + } + void add_gun_smoke(int32_t gun_smoke) { + fbb_.AddElement(ArmInfo::VT_GUN_SMOKE, gun_smoke, 0); + } + explicit ArmInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateArmInfo( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t anim_number = 0, + int32_t frame_number = 0, + int32_t frame_base = 0, + bool locked = false, + const TEN::Save::Vector3 *rotation = 0, + int32_t gun_flash = 0, + int32_t gun_smoke = 0) { + ArmInfoBuilder builder_(_fbb); + builder_.add_gun_smoke(gun_smoke); + builder_.add_gun_flash(gun_flash); + builder_.add_rotation(rotation); + builder_.add_frame_base(frame_base); + builder_.add_frame_number(frame_number); + builder_.add_anim_number(anim_number); + builder_.add_locked(locked); + return builder_.Finish(); +} + +struct ArmInfo::Traits { + using type = ArmInfo; + static auto constexpr Create = CreateArmInfo; +}; + +flatbuffers::Offset CreateArmInfo(flatbuffers::FlatBufferBuilder &_fbb, const ArmInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct FlareDataT : public flatbuffers::NativeTable { + typedef FlareData TableType; + uint32_t life = 0; + int32_t frame = 0; + bool control_left = false; +}; + +struct FlareData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef FlareDataT NativeTableType; + typedef FlareDataBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_LIFE = 4, + VT_FRAME = 6, + VT_CONTROL_LEFT = 8 + }; + uint32_t life() const { + return GetField(VT_LIFE, 0); + } + int32_t frame() const { + return GetField(VT_FRAME, 0); + } + bool control_left() const { + return GetField(VT_CONTROL_LEFT, 0) != 0; + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_LIFE) && + VerifyField(verifier, VT_FRAME) && + VerifyField(verifier, VT_CONTROL_LEFT) && + verifier.EndTable(); + } + FlareDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(FlareDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const FlareDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct FlareDataBuilder { + typedef FlareData Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_life(uint32_t life) { + fbb_.AddElement(FlareData::VT_LIFE, life, 0); + } + void add_frame(int32_t frame) { + fbb_.AddElement(FlareData::VT_FRAME, frame, 0); + } + void add_control_left(bool control_left) { + fbb_.AddElement(FlareData::VT_CONTROL_LEFT, static_cast(control_left), 0); + } + explicit FlareDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateFlareData( + flatbuffers::FlatBufferBuilder &_fbb, + uint32_t life = 0, + int32_t frame = 0, + bool control_left = false) { + FlareDataBuilder builder_(_fbb); + builder_.add_frame(frame); + builder_.add_life(life); + builder_.add_control_left(control_left); + return builder_.Finish(); +} + +struct FlareData::Traits { + using type = FlareData; + static auto constexpr Create = CreateFlareData; +}; + +flatbuffers::Offset CreateFlareData(flatbuffers::FlatBufferBuilder &_fbb, const FlareDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct TorchDataT : public flatbuffers::NativeTable { + typedef TorchData TableType; + TEN::Save::TorchState state = TEN::Save::TorchState::holding; + bool is_lit = false; +}; + +struct TorchData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef TorchDataT NativeTableType; + typedef TorchDataBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_STATE = 4, + VT_IS_LIT = 6 + }; + TEN::Save::TorchState state() const { + return static_cast(GetField(VT_STATE, 0)); + } + bool is_lit() const { + return GetField(VT_IS_LIT, 0) != 0; + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_STATE) && + VerifyField(verifier, VT_IS_LIT) && + verifier.EndTable(); + } + TorchDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TorchDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TorchDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct TorchDataBuilder { + typedef TorchData Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_state(TEN::Save::TorchState state) { + fbb_.AddElement(TorchData::VT_STATE, static_cast(state), 0); + } + void add_is_lit(bool is_lit) { + fbb_.AddElement(TorchData::VT_IS_LIT, static_cast(is_lit), 0); + } + explicit TorchDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateTorchData( + flatbuffers::FlatBufferBuilder &_fbb, + TEN::Save::TorchState state = TEN::Save::TorchState::holding, + bool is_lit = false) { + TorchDataBuilder builder_(_fbb); + builder_.add_state(state); + builder_.add_is_lit(is_lit); + return builder_.Finish(); +} + +struct TorchData::Traits { + using type = TorchData; + static auto constexpr Create = CreateTorchData; +}; + +flatbuffers::Offset CreateTorchData(flatbuffers::FlatBufferBuilder &_fbb, const TorchDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct LaraInventoryDataT : public flatbuffers::NativeTable { + typedef LaraInventoryData TableType; + bool is_busy = false; + bool old_busy = false; + int32_t beetle_life = 0; + int32_t beetle_components = 0; + int32_t small_waterskin = 0; + int32_t big_waterskin = 0; + bool has_binoculars = false; + bool has_crowbar = false; + bool has_torch = false; + bool has_lasersight = false; + bool has_silencer = false; + int32_t total_small_medipacks = 0; + int32_t total_large_medipacks = 0; + int32_t total_flares = 0; + uint32_t total_secrets = 0; + std::vector puzzles{}; + std::vector keys{}; + std::vector pickups{}; + std::vector examines{}; + std::vector puzzles_combo{}; + std::vector keys_combo{}; + std::vector pickups_combo{}; + std::vector examines_combo{}; +}; + +struct LaraInventoryData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef LaraInventoryDataT NativeTableType; + typedef LaraInventoryDataBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_IS_BUSY = 4, + VT_OLD_BUSY = 6, + VT_BEETLE_LIFE = 8, + VT_BEETLE_COMPONENTS = 10, + VT_SMALL_WATERSKIN = 12, + VT_BIG_WATERSKIN = 14, + VT_HAS_BINOCULARS = 16, + VT_HAS_CROWBAR = 18, + VT_HAS_TORCH = 20, + VT_HAS_LASERSIGHT = 22, + VT_HAS_SILENCER = 24, + VT_TOTAL_SMALL_MEDIPACKS = 26, + VT_TOTAL_LARGE_MEDIPACKS = 28, + VT_TOTAL_FLARES = 30, + VT_TOTAL_SECRETS = 32, + VT_PUZZLES = 34, + VT_KEYS = 36, + VT_PICKUPS = 38, + VT_EXAMINES = 40, + VT_PUZZLES_COMBO = 42, + VT_KEYS_COMBO = 44, + VT_PICKUPS_COMBO = 46, + VT_EXAMINES_COMBO = 48 + }; + bool is_busy() const { + return GetField(VT_IS_BUSY, 0) != 0; + } + bool old_busy() const { + return GetField(VT_OLD_BUSY, 0) != 0; + } + int32_t beetle_life() const { + return GetField(VT_BEETLE_LIFE, 0); + } + int32_t beetle_components() const { + return GetField(VT_BEETLE_COMPONENTS, 0); + } + int32_t small_waterskin() const { + return GetField(VT_SMALL_WATERSKIN, 0); + } + int32_t big_waterskin() const { + return GetField(VT_BIG_WATERSKIN, 0); + } + bool has_binoculars() const { + return GetField(VT_HAS_BINOCULARS, 0) != 0; + } + bool has_crowbar() const { + return GetField(VT_HAS_CROWBAR, 0) != 0; + } + bool has_torch() const { + return GetField(VT_HAS_TORCH, 0) != 0; + } + bool has_lasersight() const { + return GetField(VT_HAS_LASERSIGHT, 0) != 0; + } + bool has_silencer() const { + return GetField(VT_HAS_SILENCER, 0) != 0; + } + int32_t total_small_medipacks() const { + return GetField(VT_TOTAL_SMALL_MEDIPACKS, 0); + } + int32_t total_large_medipacks() const { + return GetField(VT_TOTAL_LARGE_MEDIPACKS, 0); + } + int32_t total_flares() const { + return GetField(VT_TOTAL_FLARES, 0); + } + uint32_t total_secrets() const { + return GetField(VT_TOTAL_SECRETS, 0); + } + const flatbuffers::Vector *puzzles() const { + return GetPointer *>(VT_PUZZLES); + } + const flatbuffers::Vector *keys() const { + return GetPointer *>(VT_KEYS); + } + const flatbuffers::Vector *pickups() const { + return GetPointer *>(VT_PICKUPS); + } + const flatbuffers::Vector *examines() const { + return GetPointer *>(VT_EXAMINES); + } + const flatbuffers::Vector *puzzles_combo() const { + return GetPointer *>(VT_PUZZLES_COMBO); + } + const flatbuffers::Vector *keys_combo() const { + return GetPointer *>(VT_KEYS_COMBO); + } + const flatbuffers::Vector *pickups_combo() const { + return GetPointer *>(VT_PICKUPS_COMBO); + } + const flatbuffers::Vector *examines_combo() const { + return GetPointer *>(VT_EXAMINES_COMBO); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_IS_BUSY) && + VerifyField(verifier, VT_OLD_BUSY) && + VerifyField(verifier, VT_BEETLE_LIFE) && + VerifyField(verifier, VT_BEETLE_COMPONENTS) && + VerifyField(verifier, VT_SMALL_WATERSKIN) && + VerifyField(verifier, VT_BIG_WATERSKIN) && + VerifyField(verifier, VT_HAS_BINOCULARS) && + VerifyField(verifier, VT_HAS_CROWBAR) && + VerifyField(verifier, VT_HAS_TORCH) && + VerifyField(verifier, VT_HAS_LASERSIGHT) && + VerifyField(verifier, VT_HAS_SILENCER) && + VerifyField(verifier, VT_TOTAL_SMALL_MEDIPACKS) && + VerifyField(verifier, VT_TOTAL_LARGE_MEDIPACKS) && + VerifyField(verifier, VT_TOTAL_FLARES) && + VerifyField(verifier, VT_TOTAL_SECRETS) && + VerifyOffset(verifier, VT_PUZZLES) && + verifier.VerifyVector(puzzles()) && + VerifyOffset(verifier, VT_KEYS) && + verifier.VerifyVector(keys()) && + VerifyOffset(verifier, VT_PICKUPS) && + verifier.VerifyVector(pickups()) && + VerifyOffset(verifier, VT_EXAMINES) && + verifier.VerifyVector(examines()) && + VerifyOffset(verifier, VT_PUZZLES_COMBO) && + verifier.VerifyVector(puzzles_combo()) && + VerifyOffset(verifier, VT_KEYS_COMBO) && + verifier.VerifyVector(keys_combo()) && + VerifyOffset(verifier, VT_PICKUPS_COMBO) && + verifier.VerifyVector(pickups_combo()) && + VerifyOffset(verifier, VT_EXAMINES_COMBO) && + verifier.VerifyVector(examines_combo()) && + verifier.EndTable(); + } + LaraInventoryDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(LaraInventoryDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraInventoryDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct LaraInventoryDataBuilder { + typedef LaraInventoryData Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_is_busy(bool is_busy) { + fbb_.AddElement(LaraInventoryData::VT_IS_BUSY, static_cast(is_busy), 0); + } + void add_old_busy(bool old_busy) { + fbb_.AddElement(LaraInventoryData::VT_OLD_BUSY, static_cast(old_busy), 0); + } + void add_beetle_life(int32_t beetle_life) { + fbb_.AddElement(LaraInventoryData::VT_BEETLE_LIFE, beetle_life, 0); + } + void add_beetle_components(int32_t beetle_components) { + fbb_.AddElement(LaraInventoryData::VT_BEETLE_COMPONENTS, beetle_components, 0); + } + void add_small_waterskin(int32_t small_waterskin) { + fbb_.AddElement(LaraInventoryData::VT_SMALL_WATERSKIN, small_waterskin, 0); + } + void add_big_waterskin(int32_t big_waterskin) { + fbb_.AddElement(LaraInventoryData::VT_BIG_WATERSKIN, big_waterskin, 0); + } + void add_has_binoculars(bool has_binoculars) { + fbb_.AddElement(LaraInventoryData::VT_HAS_BINOCULARS, static_cast(has_binoculars), 0); + } + void add_has_crowbar(bool has_crowbar) { + fbb_.AddElement(LaraInventoryData::VT_HAS_CROWBAR, static_cast(has_crowbar), 0); + } + void add_has_torch(bool has_torch) { + fbb_.AddElement(LaraInventoryData::VT_HAS_TORCH, static_cast(has_torch), 0); + } + void add_has_lasersight(bool has_lasersight) { + fbb_.AddElement(LaraInventoryData::VT_HAS_LASERSIGHT, static_cast(has_lasersight), 0); + } + void add_has_silencer(bool has_silencer) { + fbb_.AddElement(LaraInventoryData::VT_HAS_SILENCER, static_cast(has_silencer), 0); + } + void add_total_small_medipacks(int32_t total_small_medipacks) { + fbb_.AddElement(LaraInventoryData::VT_TOTAL_SMALL_MEDIPACKS, total_small_medipacks, 0); + } + void add_total_large_medipacks(int32_t total_large_medipacks) { + fbb_.AddElement(LaraInventoryData::VT_TOTAL_LARGE_MEDIPACKS, total_large_medipacks, 0); + } + void add_total_flares(int32_t total_flares) { + fbb_.AddElement(LaraInventoryData::VT_TOTAL_FLARES, total_flares, 0); + } + void add_total_secrets(uint32_t total_secrets) { + fbb_.AddElement(LaraInventoryData::VT_TOTAL_SECRETS, total_secrets, 0); + } + void add_puzzles(flatbuffers::Offset> puzzles) { + fbb_.AddOffset(LaraInventoryData::VT_PUZZLES, puzzles); + } + void add_keys(flatbuffers::Offset> keys) { + fbb_.AddOffset(LaraInventoryData::VT_KEYS, keys); + } + void add_pickups(flatbuffers::Offset> pickups) { + fbb_.AddOffset(LaraInventoryData::VT_PICKUPS, pickups); + } + void add_examines(flatbuffers::Offset> examines) { + fbb_.AddOffset(LaraInventoryData::VT_EXAMINES, examines); + } + void add_puzzles_combo(flatbuffers::Offset> puzzles_combo) { + fbb_.AddOffset(LaraInventoryData::VT_PUZZLES_COMBO, puzzles_combo); + } + void add_keys_combo(flatbuffers::Offset> keys_combo) { + fbb_.AddOffset(LaraInventoryData::VT_KEYS_COMBO, keys_combo); + } + void add_pickups_combo(flatbuffers::Offset> pickups_combo) { + fbb_.AddOffset(LaraInventoryData::VT_PICKUPS_COMBO, pickups_combo); + } + void add_examines_combo(flatbuffers::Offset> examines_combo) { + fbb_.AddOffset(LaraInventoryData::VT_EXAMINES_COMBO, examines_combo); + } + explicit LaraInventoryDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateLaraInventoryData( + flatbuffers::FlatBufferBuilder &_fbb, + bool is_busy = false, + bool old_busy = false, + int32_t beetle_life = 0, + int32_t beetle_components = 0, + int32_t small_waterskin = 0, + int32_t big_waterskin = 0, + bool has_binoculars = false, + bool has_crowbar = false, + bool has_torch = false, + bool has_lasersight = false, + bool has_silencer = false, + int32_t total_small_medipacks = 0, + int32_t total_large_medipacks = 0, + int32_t total_flares = 0, + uint32_t total_secrets = 0, + flatbuffers::Offset> puzzles = 0, + flatbuffers::Offset> keys = 0, + flatbuffers::Offset> pickups = 0, + flatbuffers::Offset> examines = 0, + flatbuffers::Offset> puzzles_combo = 0, + flatbuffers::Offset> keys_combo = 0, + flatbuffers::Offset> pickups_combo = 0, + flatbuffers::Offset> examines_combo = 0) { + LaraInventoryDataBuilder builder_(_fbb); + builder_.add_examines_combo(examines_combo); + builder_.add_pickups_combo(pickups_combo); + builder_.add_keys_combo(keys_combo); + builder_.add_puzzles_combo(puzzles_combo); + builder_.add_examines(examines); + builder_.add_pickups(pickups); + builder_.add_keys(keys); + builder_.add_puzzles(puzzles); + builder_.add_total_secrets(total_secrets); + builder_.add_total_flares(total_flares); + builder_.add_total_large_medipacks(total_large_medipacks); + builder_.add_total_small_medipacks(total_small_medipacks); + builder_.add_big_waterskin(big_waterskin); + builder_.add_small_waterskin(small_waterskin); + builder_.add_beetle_components(beetle_components); + builder_.add_beetle_life(beetle_life); + builder_.add_has_silencer(has_silencer); + builder_.add_has_lasersight(has_lasersight); + builder_.add_has_torch(has_torch); + builder_.add_has_crowbar(has_crowbar); + builder_.add_has_binoculars(has_binoculars); + builder_.add_old_busy(old_busy); + builder_.add_is_busy(is_busy); + return builder_.Finish(); +} + +struct LaraInventoryData::Traits { + using type = LaraInventoryData; + static auto constexpr Create = CreateLaraInventoryData; +}; + +inline flatbuffers::Offset CreateLaraInventoryDataDirect( + flatbuffers::FlatBufferBuilder &_fbb, + bool is_busy = false, + bool old_busy = false, + int32_t beetle_life = 0, + int32_t beetle_components = 0, + int32_t small_waterskin = 0, + int32_t big_waterskin = 0, + bool has_binoculars = false, + bool has_crowbar = false, + bool has_torch = false, + bool has_lasersight = false, + bool has_silencer = false, + int32_t total_small_medipacks = 0, + int32_t total_large_medipacks = 0, + int32_t total_flares = 0, + uint32_t total_secrets = 0, + const std::vector *puzzles = nullptr, + const std::vector *keys = nullptr, + const std::vector *pickups = nullptr, + const std::vector *examines = nullptr, + const std::vector *puzzles_combo = nullptr, + const std::vector *keys_combo = nullptr, + const std::vector *pickups_combo = nullptr, + const std::vector *examines_combo = nullptr) { + auto puzzles__ = puzzles ? _fbb.CreateVector(*puzzles) : 0; + auto keys__ = keys ? _fbb.CreateVector(*keys) : 0; + auto pickups__ = pickups ? _fbb.CreateVector(*pickups) : 0; + auto examines__ = examines ? _fbb.CreateVector(*examines) : 0; + auto puzzles_combo__ = puzzles_combo ? _fbb.CreateVector(*puzzles_combo) : 0; + auto keys_combo__ = keys_combo ? _fbb.CreateVector(*keys_combo) : 0; + auto pickups_combo__ = pickups_combo ? _fbb.CreateVector(*pickups_combo) : 0; + auto examines_combo__ = examines_combo ? _fbb.CreateVector(*examines_combo) : 0; + return TEN::Save::CreateLaraInventoryData( + _fbb, + is_busy, + old_busy, + beetle_life, + beetle_components, + small_waterskin, + big_waterskin, + has_binoculars, + has_crowbar, + has_torch, + has_lasersight, + has_silencer, + total_small_medipacks, + total_large_medipacks, + total_flares, + total_secrets, + puzzles__, + keys__, + pickups__, + examines__, + puzzles_combo__, + keys_combo__, + pickups_combo__, + examines_combo__); +} + +flatbuffers::Offset CreateLaraInventoryData(flatbuffers::FlatBufferBuilder &_fbb, const LaraInventoryDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct LaraCountDataT : public flatbuffers::NativeTable { + typedef LaraCountData TableType; + uint32_t run_jump = 0; + uint32_t position_adjust = 0; + uint32_t pose = 0; + uint32_t death = 0; + uint32_t no_cheat = 0; +}; + +struct LaraCountData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef LaraCountDataT NativeTableType; + typedef LaraCountDataBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_RUN_JUMP = 4, + VT_POSITION_ADJUST = 6, + VT_POSE = 8, + VT_DEATH = 10, + VT_NO_CHEAT = 12 + }; + uint32_t run_jump() const { + return GetField(VT_RUN_JUMP, 0); + } + uint32_t position_adjust() const { + return GetField(VT_POSITION_ADJUST, 0); + } + uint32_t pose() const { + return GetField(VT_POSE, 0); + } + uint32_t death() const { + return GetField(VT_DEATH, 0); + } + uint32_t no_cheat() const { + return GetField(VT_NO_CHEAT, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_RUN_JUMP) && + VerifyField(verifier, VT_POSITION_ADJUST) && + VerifyField(verifier, VT_POSE) && + VerifyField(verifier, VT_DEATH) && + VerifyField(verifier, VT_NO_CHEAT) && + verifier.EndTable(); + } + LaraCountDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(LaraCountDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraCountDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct LaraCountDataBuilder { + typedef LaraCountData Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_run_jump(uint32_t run_jump) { + fbb_.AddElement(LaraCountData::VT_RUN_JUMP, run_jump, 0); + } + void add_position_adjust(uint32_t position_adjust) { + fbb_.AddElement(LaraCountData::VT_POSITION_ADJUST, position_adjust, 0); + } + void add_pose(uint32_t pose) { + fbb_.AddElement(LaraCountData::VT_POSE, pose, 0); + } + void add_death(uint32_t death) { + fbb_.AddElement(LaraCountData::VT_DEATH, death, 0); + } + void add_no_cheat(uint32_t no_cheat) { + fbb_.AddElement(LaraCountData::VT_NO_CHEAT, no_cheat, 0); + } + explicit LaraCountDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateLaraCountData( + flatbuffers::FlatBufferBuilder &_fbb, + uint32_t run_jump = 0, + uint32_t position_adjust = 0, + uint32_t pose = 0, + uint32_t death = 0, + uint32_t no_cheat = 0) { + LaraCountDataBuilder builder_(_fbb); + builder_.add_no_cheat(no_cheat); + builder_.add_death(death); + builder_.add_pose(pose); + builder_.add_position_adjust(position_adjust); + builder_.add_run_jump(run_jump); + return builder_.Finish(); +} + +struct LaraCountData::Traits { + using type = LaraCountData; + static auto constexpr Create = CreateLaraCountData; +}; + +flatbuffers::Offset CreateLaraCountData(flatbuffers::FlatBufferBuilder &_fbb, const LaraCountDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct WeaponControlDataT : public flatbuffers::NativeTable { + typedef WeaponControlData TableType; + int32_t weapon_item = 0; + bool has_fired = false; + bool fired = false; + bool uzi_left = false; + bool uzi_right = false; + int32_t gun_type = 0; + int32_t request_gun_type = 0; + int32_t last_gun_type = 0; + std::unique_ptr holster_info{}; + uint32_t num_shots_fired = 0; + float interval = 0.0f; + float timer = 0.0f; +}; + +struct WeaponControlData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef WeaponControlDataT NativeTableType; + typedef WeaponControlDataBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_WEAPON_ITEM = 4, + VT_HAS_FIRED = 6, + VT_FIRED = 8, + VT_UZI_LEFT = 10, + VT_UZI_RIGHT = 12, + VT_GUN_TYPE = 14, + VT_REQUEST_GUN_TYPE = 16, + VT_LAST_GUN_TYPE = 18, + VT_HOLSTER_INFO = 20, + VT_NUM_SHOTS_FIRED = 22, + VT_INTERVAL = 24, + VT_TIMER = 26 + }; + int32_t weapon_item() const { + return GetField(VT_WEAPON_ITEM, 0); + } + bool has_fired() const { + return GetField(VT_HAS_FIRED, 0) != 0; + } + bool fired() const { + return GetField(VT_FIRED, 0) != 0; + } + bool uzi_left() const { + return GetField(VT_UZI_LEFT, 0) != 0; + } + bool uzi_right() const { + return GetField(VT_UZI_RIGHT, 0) != 0; + } + int32_t gun_type() const { + return GetField(VT_GUN_TYPE, 0); + } + int32_t request_gun_type() const { + return GetField(VT_REQUEST_GUN_TYPE, 0); + } + int32_t last_gun_type() const { + return GetField(VT_LAST_GUN_TYPE, 0); + } + const TEN::Save::HolsterInfo *holster_info() const { + return GetPointer(VT_HOLSTER_INFO); + } + uint32_t num_shots_fired() const { + return GetField(VT_NUM_SHOTS_FIRED, 0); + } + float interval() const { + return GetField(VT_INTERVAL, 0.0f); + } + float timer() const { + return GetField(VT_TIMER, 0.0f); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_WEAPON_ITEM) && + VerifyField(verifier, VT_HAS_FIRED) && + VerifyField(verifier, VT_FIRED) && + VerifyField(verifier, VT_UZI_LEFT) && + VerifyField(verifier, VT_UZI_RIGHT) && + VerifyField(verifier, VT_GUN_TYPE) && + VerifyField(verifier, VT_REQUEST_GUN_TYPE) && + VerifyField(verifier, VT_LAST_GUN_TYPE) && + VerifyOffset(verifier, VT_HOLSTER_INFO) && + verifier.VerifyTable(holster_info()) && + VerifyField(verifier, VT_NUM_SHOTS_FIRED) && + VerifyField(verifier, VT_INTERVAL) && + VerifyField(verifier, VT_TIMER) && + verifier.EndTable(); + } + WeaponControlDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(WeaponControlDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const WeaponControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct WeaponControlDataBuilder { + typedef WeaponControlData Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_weapon_item(int32_t weapon_item) { + fbb_.AddElement(WeaponControlData::VT_WEAPON_ITEM, weapon_item, 0); + } + void add_has_fired(bool has_fired) { + fbb_.AddElement(WeaponControlData::VT_HAS_FIRED, static_cast(has_fired), 0); + } + void add_fired(bool fired) { + fbb_.AddElement(WeaponControlData::VT_FIRED, static_cast(fired), 0); + } + void add_uzi_left(bool uzi_left) { + fbb_.AddElement(WeaponControlData::VT_UZI_LEFT, static_cast(uzi_left), 0); + } + void add_uzi_right(bool uzi_right) { + fbb_.AddElement(WeaponControlData::VT_UZI_RIGHT, static_cast(uzi_right), 0); + } + void add_gun_type(int32_t gun_type) { + fbb_.AddElement(WeaponControlData::VT_GUN_TYPE, gun_type, 0); + } + void add_request_gun_type(int32_t request_gun_type) { + fbb_.AddElement(WeaponControlData::VT_REQUEST_GUN_TYPE, request_gun_type, 0); + } + void add_last_gun_type(int32_t last_gun_type) { + fbb_.AddElement(WeaponControlData::VT_LAST_GUN_TYPE, last_gun_type, 0); + } + void add_holster_info(flatbuffers::Offset holster_info) { + fbb_.AddOffset(WeaponControlData::VT_HOLSTER_INFO, holster_info); + } + void add_num_shots_fired(uint32_t num_shots_fired) { + fbb_.AddElement(WeaponControlData::VT_NUM_SHOTS_FIRED, num_shots_fired, 0); + } + void add_interval(float interval) { + fbb_.AddElement(WeaponControlData::VT_INTERVAL, interval, 0.0f); + } + void add_timer(float timer) { + fbb_.AddElement(WeaponControlData::VT_TIMER, timer, 0.0f); + } + explicit WeaponControlDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateWeaponControlData( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t weapon_item = 0, + bool has_fired = false, + bool fired = false, + bool uzi_left = false, + bool uzi_right = false, + int32_t gun_type = 0, + int32_t request_gun_type = 0, + int32_t last_gun_type = 0, + flatbuffers::Offset holster_info = 0, + uint32_t num_shots_fired = 0, + float interval = 0.0f, + float timer = 0.0f) { + WeaponControlDataBuilder builder_(_fbb); + builder_.add_timer(timer); + builder_.add_interval(interval); + builder_.add_num_shots_fired(num_shots_fired); + builder_.add_holster_info(holster_info); + builder_.add_last_gun_type(last_gun_type); + builder_.add_request_gun_type(request_gun_type); + builder_.add_gun_type(gun_type); + builder_.add_weapon_item(weapon_item); + builder_.add_uzi_right(uzi_right); + builder_.add_uzi_left(uzi_left); + builder_.add_fired(fired); + builder_.add_has_fired(has_fired); + return builder_.Finish(); +} + +struct WeaponControlData::Traits { + using type = WeaponControlData; + static auto constexpr Create = CreateWeaponControlData; +}; + +flatbuffers::Offset CreateWeaponControlData(flatbuffers::FlatBufferBuilder &_fbb, const WeaponControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct RopeControlDataT : public flatbuffers::NativeTable { + typedef RopeControlData TableType; + int32_t segment = 0; + int32_t direction = 0; + int32_t arc_front = 0; + int32_t arc_back = 0; + int32_t last_x = 0; + int32_t max_x_forward = 0; + int32_t max_x_backward = 0; + int32_t dframe = 0; + int32_t frame = 0; + int32_t frame_rate = 0; + int32_t y = 0; + int32_t ptr = 0; + int32_t offset = 0; + int32_t down_vel = 0; + int32_t flag = 0; + int32_t count = 0; +}; + +struct RopeControlData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef RopeControlDataT NativeTableType; + typedef RopeControlDataBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_SEGMENT = 4, + VT_DIRECTION = 6, + VT_ARC_FRONT = 8, + VT_ARC_BACK = 10, + VT_LAST_X = 12, + VT_MAX_X_FORWARD = 14, + VT_MAX_X_BACKWARD = 16, + VT_DFRAME = 18, + VT_FRAME = 20, + VT_FRAME_RATE = 22, + VT_Y = 24, + VT_PTR = 26, + VT_OFFSET = 28, + VT_DOWN_VEL = 30, + VT_FLAG = 32, + VT_COUNT = 34 + }; + int32_t segment() const { + return GetField(VT_SEGMENT, 0); + } + int32_t direction() const { + return GetField(VT_DIRECTION, 0); + } + int32_t arc_front() const { + return GetField(VT_ARC_FRONT, 0); + } + int32_t arc_back() const { + return GetField(VT_ARC_BACK, 0); + } + int32_t last_x() const { + return GetField(VT_LAST_X, 0); + } + int32_t max_x_forward() const { + return GetField(VT_MAX_X_FORWARD, 0); + } + int32_t max_x_backward() const { + return GetField(VT_MAX_X_BACKWARD, 0); + } + int32_t dframe() const { + return GetField(VT_DFRAME, 0); + } + int32_t frame() const { + return GetField(VT_FRAME, 0); + } + int32_t frame_rate() const { + return GetField(VT_FRAME_RATE, 0); + } + int32_t y() const { + return GetField(VT_Y, 0); + } + int32_t ptr() const { + return GetField(VT_PTR, 0); + } + int32_t offset() const { + return GetField(VT_OFFSET, 0); + } + int32_t down_vel() const { + return GetField(VT_DOWN_VEL, 0); + } + int32_t flag() const { + return GetField(VT_FLAG, 0); + } + int32_t count() const { + return GetField(VT_COUNT, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_SEGMENT) && + VerifyField(verifier, VT_DIRECTION) && + VerifyField(verifier, VT_ARC_FRONT) && + VerifyField(verifier, VT_ARC_BACK) && + VerifyField(verifier, VT_LAST_X) && + VerifyField(verifier, VT_MAX_X_FORWARD) && + VerifyField(verifier, VT_MAX_X_BACKWARD) && + VerifyField(verifier, VT_DFRAME) && + VerifyField(verifier, VT_FRAME) && + VerifyField(verifier, VT_FRAME_RATE) && + VerifyField(verifier, VT_Y) && + VerifyField(verifier, VT_PTR) && + VerifyField(verifier, VT_OFFSET) && + VerifyField(verifier, VT_DOWN_VEL) && + VerifyField(verifier, VT_FLAG) && + VerifyField(verifier, VT_COUNT) && + verifier.EndTable(); + } + RopeControlDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(RopeControlDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const RopeControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct RopeControlDataBuilder { + typedef RopeControlData Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_segment(int32_t segment) { + fbb_.AddElement(RopeControlData::VT_SEGMENT, segment, 0); + } + void add_direction(int32_t direction) { + fbb_.AddElement(RopeControlData::VT_DIRECTION, direction, 0); + } + void add_arc_front(int32_t arc_front) { + fbb_.AddElement(RopeControlData::VT_ARC_FRONT, arc_front, 0); + } + void add_arc_back(int32_t arc_back) { + fbb_.AddElement(RopeControlData::VT_ARC_BACK, arc_back, 0); + } + void add_last_x(int32_t last_x) { + fbb_.AddElement(RopeControlData::VT_LAST_X, last_x, 0); + } + void add_max_x_forward(int32_t max_x_forward) { + fbb_.AddElement(RopeControlData::VT_MAX_X_FORWARD, max_x_forward, 0); + } + void add_max_x_backward(int32_t max_x_backward) { + fbb_.AddElement(RopeControlData::VT_MAX_X_BACKWARD, max_x_backward, 0); + } + void add_dframe(int32_t dframe) { + fbb_.AddElement(RopeControlData::VT_DFRAME, dframe, 0); + } + void add_frame(int32_t frame) { + fbb_.AddElement(RopeControlData::VT_FRAME, frame, 0); + } + void add_frame_rate(int32_t frame_rate) { + fbb_.AddElement(RopeControlData::VT_FRAME_RATE, frame_rate, 0); + } + void add_y(int32_t y) { + fbb_.AddElement(RopeControlData::VT_Y, y, 0); + } + void add_ptr(int32_t ptr) { + fbb_.AddElement(RopeControlData::VT_PTR, ptr, 0); + } + void add_offset(int32_t offset) { + fbb_.AddElement(RopeControlData::VT_OFFSET, offset, 0); + } + void add_down_vel(int32_t down_vel) { + fbb_.AddElement(RopeControlData::VT_DOWN_VEL, down_vel, 0); + } + void add_flag(int32_t flag) { + fbb_.AddElement(RopeControlData::VT_FLAG, flag, 0); + } + void add_count(int32_t count) { + fbb_.AddElement(RopeControlData::VT_COUNT, count, 0); + } + explicit RopeControlDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateRopeControlData( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t segment = 0, + int32_t direction = 0, + int32_t arc_front = 0, + int32_t arc_back = 0, + int32_t last_x = 0, + int32_t max_x_forward = 0, + int32_t max_x_backward = 0, + int32_t dframe = 0, + int32_t frame = 0, + int32_t frame_rate = 0, + int32_t y = 0, + int32_t ptr = 0, + int32_t offset = 0, + int32_t down_vel = 0, + int32_t flag = 0, + int32_t count = 0) { + RopeControlDataBuilder builder_(_fbb); + builder_.add_count(count); + builder_.add_flag(flag); + builder_.add_down_vel(down_vel); + builder_.add_offset(offset); + builder_.add_ptr(ptr); + builder_.add_y(y); + builder_.add_frame_rate(frame_rate); + builder_.add_frame(frame); + builder_.add_dframe(dframe); + builder_.add_max_x_backward(max_x_backward); + builder_.add_max_x_forward(max_x_forward); + builder_.add_last_x(last_x); + builder_.add_arc_back(arc_back); + builder_.add_arc_front(arc_front); + builder_.add_direction(direction); + builder_.add_segment(segment); + return builder_.Finish(); +} + +struct RopeControlData::Traits { + using type = RopeControlData; + static auto constexpr Create = CreateRopeControlData; +}; + +flatbuffers::Offset CreateRopeControlData(flatbuffers::FlatBufferBuilder &_fbb, const RopeControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct TightropeControlDataT : public flatbuffers::NativeTable { + typedef TightropeControlData TableType; + float balance = 0.0f; + uint32_t time_on_tightrope = 0; + bool can_dismount = false; + int32_t tightrope_item = 0; +}; + +struct TightropeControlData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef TightropeControlDataT NativeTableType; + typedef TightropeControlDataBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_BALANCE = 4, + VT_TIME_ON_TIGHTROPE = 6, + VT_CAN_DISMOUNT = 8, + VT_TIGHTROPE_ITEM = 10 + }; + float balance() const { + return GetField(VT_BALANCE, 0.0f); + } + uint32_t time_on_tightrope() const { + return GetField(VT_TIME_ON_TIGHTROPE, 0); + } + bool can_dismount() const { + return GetField(VT_CAN_DISMOUNT, 0) != 0; + } + int32_t tightrope_item() const { + return GetField(VT_TIGHTROPE_ITEM, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_BALANCE) && + VerifyField(verifier, VT_TIME_ON_TIGHTROPE) && + VerifyField(verifier, VT_CAN_DISMOUNT) && + VerifyField(verifier, VT_TIGHTROPE_ITEM) && + verifier.EndTable(); + } + TightropeControlDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(TightropeControlDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const TightropeControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct TightropeControlDataBuilder { + typedef TightropeControlData Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_balance(float balance) { + fbb_.AddElement(TightropeControlData::VT_BALANCE, balance, 0.0f); + } + void add_time_on_tightrope(uint32_t time_on_tightrope) { + fbb_.AddElement(TightropeControlData::VT_TIME_ON_TIGHTROPE, time_on_tightrope, 0); + } + void add_can_dismount(bool can_dismount) { + fbb_.AddElement(TightropeControlData::VT_CAN_DISMOUNT, static_cast(can_dismount), 0); + } + void add_tightrope_item(int32_t tightrope_item) { + fbb_.AddElement(TightropeControlData::VT_TIGHTROPE_ITEM, tightrope_item, 0); + } + explicit TightropeControlDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateTightropeControlData( + flatbuffers::FlatBufferBuilder &_fbb, + float balance = 0.0f, + uint32_t time_on_tightrope = 0, + bool can_dismount = false, + int32_t tightrope_item = 0) { + TightropeControlDataBuilder builder_(_fbb); + builder_.add_tightrope_item(tightrope_item); + builder_.add_time_on_tightrope(time_on_tightrope); + builder_.add_balance(balance); + builder_.add_can_dismount(can_dismount); + return builder_.Finish(); +} + +struct TightropeControlData::Traits { + using type = TightropeControlData; + static auto constexpr Create = CreateTightropeControlData; +}; + +flatbuffers::Offset CreateTightropeControlData(flatbuffers::FlatBufferBuilder &_fbb, const TightropeControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct SubsuitControlDataT : public flatbuffers::NativeTable { + typedef SubsuitControlData TableType; + int32_t x_rot = 0; + int32_t d_x_rot = 0; + std::vector velocity{}; + int32_t vertical_velocity = 0; + int32_t x_rot_vel = 0; + uint32_t hit_count = 0; +}; + +struct SubsuitControlData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef SubsuitControlDataT NativeTableType; + typedef SubsuitControlDataBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_X_ROT = 4, + VT_D_X_ROT = 6, + VT_VELOCITY = 8, + VT_VERTICAL_VELOCITY = 10, + VT_X_ROT_VEL = 12, + VT_HIT_COUNT = 14 + }; + int32_t x_rot() const { + return GetField(VT_X_ROT, 0); + } + int32_t d_x_rot() const { + return GetField(VT_D_X_ROT, 0); + } + const flatbuffers::Vector *velocity() const { + return GetPointer *>(VT_VELOCITY); + } + int32_t vertical_velocity() const { + return GetField(VT_VERTICAL_VELOCITY, 0); + } + int32_t x_rot_vel() const { + return GetField(VT_X_ROT_VEL, 0); + } + uint32_t hit_count() const { + return GetField(VT_HIT_COUNT, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_X_ROT) && + VerifyField(verifier, VT_D_X_ROT) && + VerifyOffset(verifier, VT_VELOCITY) && + verifier.VerifyVector(velocity()) && + VerifyField(verifier, VT_VERTICAL_VELOCITY) && + VerifyField(verifier, VT_X_ROT_VEL) && + VerifyField(verifier, VT_HIT_COUNT) && + verifier.EndTable(); + } + SubsuitControlDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(SubsuitControlDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubsuitControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct SubsuitControlDataBuilder { + typedef SubsuitControlData Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_x_rot(int32_t x_rot) { + fbb_.AddElement(SubsuitControlData::VT_X_ROT, x_rot, 0); + } + void add_d_x_rot(int32_t d_x_rot) { + fbb_.AddElement(SubsuitControlData::VT_D_X_ROT, d_x_rot, 0); + } + void add_velocity(flatbuffers::Offset> velocity) { + fbb_.AddOffset(SubsuitControlData::VT_VELOCITY, velocity); + } + void add_vertical_velocity(int32_t vertical_velocity) { + fbb_.AddElement(SubsuitControlData::VT_VERTICAL_VELOCITY, vertical_velocity, 0); + } + void add_x_rot_vel(int32_t x_rot_vel) { + fbb_.AddElement(SubsuitControlData::VT_X_ROT_VEL, x_rot_vel, 0); + } + void add_hit_count(uint32_t hit_count) { + fbb_.AddElement(SubsuitControlData::VT_HIT_COUNT, hit_count, 0); + } + explicit SubsuitControlDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateSubsuitControlData( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t x_rot = 0, + int32_t d_x_rot = 0, + flatbuffers::Offset> velocity = 0, + int32_t vertical_velocity = 0, + int32_t x_rot_vel = 0, + uint32_t hit_count = 0) { + SubsuitControlDataBuilder builder_(_fbb); + builder_.add_hit_count(hit_count); + builder_.add_x_rot_vel(x_rot_vel); + builder_.add_vertical_velocity(vertical_velocity); + builder_.add_velocity(velocity); + builder_.add_d_x_rot(d_x_rot); + builder_.add_x_rot(x_rot); + return builder_.Finish(); +} + +struct SubsuitControlData::Traits { + using type = SubsuitControlData; + static auto constexpr Create = CreateSubsuitControlData; +}; + +inline flatbuffers::Offset CreateSubsuitControlDataDirect( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t x_rot = 0, + int32_t d_x_rot = 0, + const std::vector *velocity = nullptr, + int32_t vertical_velocity = 0, + int32_t x_rot_vel = 0, + uint32_t hit_count = 0) { + auto velocity__ = velocity ? _fbb.CreateVector(*velocity) : 0; + return TEN::Save::CreateSubsuitControlData( + _fbb, + x_rot, + d_x_rot, + velocity__, + vertical_velocity, + x_rot_vel, + hit_count); +} + +flatbuffers::Offset CreateSubsuitControlData(flatbuffers::FlatBufferBuilder &_fbb, const SubsuitControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct LaraControlDataT : public flatbuffers::NativeTable { + typedef LaraControlData TableType; + int32_t move_angle = 0; + int32_t turn_rate = 0; + int32_t calculated_jump_velocity = 0; + int32_t jump_direction = 0; + int32_t hand_status = 0; + int32_t water_status = 0; + std::unique_ptr count{}; + bool can_look = false; + bool is_moving = false; + bool keep_low = false; + bool is_low = false; + bool can_climb_ladder = false; + bool is_climbing_ladder = false; + bool can_monkey_swing = false; + bool run_jump_queued = false; + bool locked = false; + std::unique_ptr weapon{}; + std::unique_ptr rope{}; + std::unique_ptr tightrope{}; + std::unique_ptr subsuit{}; +}; + +struct LaraControlData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef LaraControlDataT NativeTableType; + typedef LaraControlDataBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_MOVE_ANGLE = 4, + VT_TURN_RATE = 6, + VT_CALCULATED_JUMP_VELOCITY = 8, + VT_JUMP_DIRECTION = 10, + VT_HAND_STATUS = 12, + VT_WATER_STATUS = 14, + VT_COUNT = 16, + VT_CAN_LOOK = 18, + VT_IS_MOVING = 20, + VT_KEEP_LOW = 22, + VT_IS_LOW = 24, + VT_CAN_CLIMB_LADDER = 26, + VT_IS_CLIMBING_LADDER = 28, + VT_CAN_MONKEY_SWING = 30, + VT_RUN_JUMP_QUEUED = 32, + VT_LOCKED = 34, + VT_WEAPON = 36, + VT_ROPE = 38, + VT_TIGHTROPE = 40, + VT_SUBSUIT = 42 + }; + int32_t move_angle() const { + return GetField(VT_MOVE_ANGLE, 0); + } + int32_t turn_rate() const { + return GetField(VT_TURN_RATE, 0); + } + int32_t calculated_jump_velocity() const { + return GetField(VT_CALCULATED_JUMP_VELOCITY, 0); + } + int32_t jump_direction() const { + return GetField(VT_JUMP_DIRECTION, 0); + } + int32_t hand_status() const { + return GetField(VT_HAND_STATUS, 0); + } + int32_t water_status() const { + return GetField(VT_WATER_STATUS, 0); + } + const TEN::Save::LaraCountData *count() const { + return GetPointer(VT_COUNT); + } + bool can_look() const { + return GetField(VT_CAN_LOOK, 0) != 0; + } + bool is_moving() const { + return GetField(VT_IS_MOVING, 0) != 0; + } + bool keep_low() const { + return GetField(VT_KEEP_LOW, 0) != 0; + } + bool is_low() const { + return GetField(VT_IS_LOW, 0) != 0; + } + bool can_climb_ladder() const { + return GetField(VT_CAN_CLIMB_LADDER, 0) != 0; + } + bool is_climbing_ladder() const { + return GetField(VT_IS_CLIMBING_LADDER, 0) != 0; + } + bool can_monkey_swing() const { + return GetField(VT_CAN_MONKEY_SWING, 0) != 0; + } + bool run_jump_queued() const { + return GetField(VT_RUN_JUMP_QUEUED, 0) != 0; + } + bool locked() const { + return GetField(VT_LOCKED, 0) != 0; + } + const TEN::Save::WeaponControlData *weapon() const { + return GetPointer(VT_WEAPON); + } + const TEN::Save::RopeControlData *rope() const { + return GetPointer(VT_ROPE); + } + const TEN::Save::TightropeControlData *tightrope() const { + return GetPointer(VT_TIGHTROPE); + } + const TEN::Save::SubsuitControlData *subsuit() const { + return GetPointer(VT_SUBSUIT); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_MOVE_ANGLE) && + VerifyField(verifier, VT_TURN_RATE) && + VerifyField(verifier, VT_CALCULATED_JUMP_VELOCITY) && + VerifyField(verifier, VT_JUMP_DIRECTION) && + VerifyField(verifier, VT_HAND_STATUS) && + VerifyField(verifier, VT_WATER_STATUS) && + VerifyOffset(verifier, VT_COUNT) && + verifier.VerifyTable(count()) && + VerifyField(verifier, VT_CAN_LOOK) && + VerifyField(verifier, VT_IS_MOVING) && + VerifyField(verifier, VT_KEEP_LOW) && + VerifyField(verifier, VT_IS_LOW) && + VerifyField(verifier, VT_CAN_CLIMB_LADDER) && + VerifyField(verifier, VT_IS_CLIMBING_LADDER) && + VerifyField(verifier, VT_CAN_MONKEY_SWING) && + VerifyField(verifier, VT_RUN_JUMP_QUEUED) && + VerifyField(verifier, VT_LOCKED) && + VerifyOffset(verifier, VT_WEAPON) && + verifier.VerifyTable(weapon()) && + VerifyOffset(verifier, VT_ROPE) && + verifier.VerifyTable(rope()) && + VerifyOffset(verifier, VT_TIGHTROPE) && + verifier.VerifyTable(tightrope()) && + VerifyOffset(verifier, VT_SUBSUIT) && + verifier.VerifyTable(subsuit()) && + verifier.EndTable(); + } + LaraControlDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(LaraControlDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct LaraControlDataBuilder { + typedef LaraControlData Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_move_angle(int32_t move_angle) { + fbb_.AddElement(LaraControlData::VT_MOVE_ANGLE, move_angle, 0); + } + void add_turn_rate(int32_t turn_rate) { + fbb_.AddElement(LaraControlData::VT_TURN_RATE, turn_rate, 0); + } + void add_calculated_jump_velocity(int32_t calculated_jump_velocity) { + fbb_.AddElement(LaraControlData::VT_CALCULATED_JUMP_VELOCITY, calculated_jump_velocity, 0); + } + void add_jump_direction(int32_t jump_direction) { + fbb_.AddElement(LaraControlData::VT_JUMP_DIRECTION, jump_direction, 0); + } + void add_hand_status(int32_t hand_status) { + fbb_.AddElement(LaraControlData::VT_HAND_STATUS, hand_status, 0); + } + void add_water_status(int32_t water_status) { + fbb_.AddElement(LaraControlData::VT_WATER_STATUS, water_status, 0); + } + void add_count(flatbuffers::Offset count) { + fbb_.AddOffset(LaraControlData::VT_COUNT, count); + } + void add_can_look(bool can_look) { + fbb_.AddElement(LaraControlData::VT_CAN_LOOK, static_cast(can_look), 0); + } + void add_is_moving(bool is_moving) { + fbb_.AddElement(LaraControlData::VT_IS_MOVING, static_cast(is_moving), 0); + } + void add_keep_low(bool keep_low) { + fbb_.AddElement(LaraControlData::VT_KEEP_LOW, static_cast(keep_low), 0); + } + void add_is_low(bool is_low) { + fbb_.AddElement(LaraControlData::VT_IS_LOW, static_cast(is_low), 0); + } + void add_can_climb_ladder(bool can_climb_ladder) { + fbb_.AddElement(LaraControlData::VT_CAN_CLIMB_LADDER, static_cast(can_climb_ladder), 0); + } + void add_is_climbing_ladder(bool is_climbing_ladder) { + fbb_.AddElement(LaraControlData::VT_IS_CLIMBING_LADDER, static_cast(is_climbing_ladder), 0); + } + void add_can_monkey_swing(bool can_monkey_swing) { + fbb_.AddElement(LaraControlData::VT_CAN_MONKEY_SWING, static_cast(can_monkey_swing), 0); + } + void add_run_jump_queued(bool run_jump_queued) { + fbb_.AddElement(LaraControlData::VT_RUN_JUMP_QUEUED, static_cast(run_jump_queued), 0); + } + void add_locked(bool locked) { + fbb_.AddElement(LaraControlData::VT_LOCKED, static_cast(locked), 0); + } + void add_weapon(flatbuffers::Offset weapon) { + fbb_.AddOffset(LaraControlData::VT_WEAPON, weapon); + } + void add_rope(flatbuffers::Offset rope) { + fbb_.AddOffset(LaraControlData::VT_ROPE, rope); + } + void add_tightrope(flatbuffers::Offset tightrope) { + fbb_.AddOffset(LaraControlData::VT_TIGHTROPE, tightrope); + } + void add_subsuit(flatbuffers::Offset subsuit) { + fbb_.AddOffset(LaraControlData::VT_SUBSUIT, subsuit); + } + explicit LaraControlDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateLaraControlData( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t move_angle = 0, + int32_t turn_rate = 0, + int32_t calculated_jump_velocity = 0, + int32_t jump_direction = 0, + int32_t hand_status = 0, + int32_t water_status = 0, + flatbuffers::Offset count = 0, + bool can_look = false, + bool is_moving = false, + bool keep_low = false, + bool is_low = false, + bool can_climb_ladder = false, + bool is_climbing_ladder = false, + bool can_monkey_swing = false, + bool run_jump_queued = false, + bool locked = false, + flatbuffers::Offset weapon = 0, + flatbuffers::Offset rope = 0, + flatbuffers::Offset tightrope = 0, + flatbuffers::Offset subsuit = 0) { + LaraControlDataBuilder builder_(_fbb); + builder_.add_subsuit(subsuit); + builder_.add_tightrope(tightrope); + builder_.add_rope(rope); + builder_.add_weapon(weapon); + builder_.add_count(count); + builder_.add_water_status(water_status); + builder_.add_hand_status(hand_status); + builder_.add_jump_direction(jump_direction); + builder_.add_calculated_jump_velocity(calculated_jump_velocity); + builder_.add_turn_rate(turn_rate); + builder_.add_move_angle(move_angle); + builder_.add_locked(locked); + builder_.add_run_jump_queued(run_jump_queued); + builder_.add_can_monkey_swing(can_monkey_swing); + builder_.add_is_climbing_ladder(is_climbing_ladder); + builder_.add_can_climb_ladder(can_climb_ladder); + builder_.add_is_low(is_low); + builder_.add_keep_low(keep_low); + builder_.add_is_moving(is_moving); + builder_.add_can_look(can_look); + return builder_.Finish(); +} + +struct LaraControlData::Traits { + using type = LaraControlData; + static auto constexpr Create = CreateLaraControlData; +}; + +flatbuffers::Offset CreateLaraControlData(flatbuffers::FlatBufferBuilder &_fbb, const LaraControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct PlayerEffectDataT : public flatbuffers::NativeTable { + typedef PlayerEffectData TableType; + std::vector bubble_nodes{}; + std::vector drip_nodes{}; +}; + +struct PlayerEffectData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef PlayerEffectDataT NativeTableType; + typedef PlayerEffectDataBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_BUBBLE_NODES = 4, + VT_DRIP_NODES = 6 + }; + const flatbuffers::Vector *bubble_nodes() const { + return GetPointer *>(VT_BUBBLE_NODES); + } + const flatbuffers::Vector *drip_nodes() const { + return GetPointer *>(VT_DRIP_NODES); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_BUBBLE_NODES) && + verifier.VerifyVector(bubble_nodes()) && + VerifyOffset(verifier, VT_DRIP_NODES) && + verifier.VerifyVector(drip_nodes()) && + verifier.EndTable(); + } + PlayerEffectDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(PlayerEffectDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const PlayerEffectDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct PlayerEffectDataBuilder { + typedef PlayerEffectData Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_bubble_nodes(flatbuffers::Offset> bubble_nodes) { + fbb_.AddOffset(PlayerEffectData::VT_BUBBLE_NODES, bubble_nodes); + } + void add_drip_nodes(flatbuffers::Offset> drip_nodes) { + fbb_.AddOffset(PlayerEffectData::VT_DRIP_NODES, drip_nodes); + } + explicit PlayerEffectDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreatePlayerEffectData( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset> bubble_nodes = 0, + flatbuffers::Offset> drip_nodes = 0) { + PlayerEffectDataBuilder builder_(_fbb); + builder_.add_drip_nodes(drip_nodes); + builder_.add_bubble_nodes(bubble_nodes); + return builder_.Finish(); +} + +struct PlayerEffectData::Traits { + using type = PlayerEffectData; + static auto constexpr Create = CreatePlayerEffectData; +}; + +inline flatbuffers::Offset CreatePlayerEffectDataDirect( + flatbuffers::FlatBufferBuilder &_fbb, + const std::vector *bubble_nodes = nullptr, + const std::vector *drip_nodes = nullptr) { + auto bubble_nodes__ = bubble_nodes ? _fbb.CreateVector(*bubble_nodes) : 0; + auto drip_nodes__ = drip_nodes ? _fbb.CreateVector(*drip_nodes) : 0; + return TEN::Save::CreatePlayerEffectData( + _fbb, + bubble_nodes__, + drip_nodes__); +} + +flatbuffers::Offset CreatePlayerEffectData(flatbuffers::FlatBufferBuilder &_fbb, const PlayerEffectDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct PlayerStatusDataT : public flatbuffers::NativeTable { + typedef PlayerStatusData TableType; + int32_t air = 0; + int32_t exposure = 0; + int32_t poison = 0; + int32_t stamina = 0; +}; + +struct PlayerStatusData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef PlayerStatusDataT NativeTableType; + typedef PlayerStatusDataBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_AIR = 4, + VT_EXPOSURE = 6, + VT_POISON = 8, + VT_STAMINA = 10 + }; + int32_t air() const { + return GetField(VT_AIR, 0); + } + int32_t exposure() const { + return GetField(VT_EXPOSURE, 0); + } + int32_t poison() const { + return GetField(VT_POISON, 0); + } + int32_t stamina() const { + return GetField(VT_STAMINA, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_AIR) && + VerifyField(verifier, VT_EXPOSURE) && + VerifyField(verifier, VT_POISON) && + VerifyField(verifier, VT_STAMINA) && + verifier.EndTable(); + } + PlayerStatusDataT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(PlayerStatusDataT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const PlayerStatusDataT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct PlayerStatusDataBuilder { + typedef PlayerStatusData Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_air(int32_t air) { + fbb_.AddElement(PlayerStatusData::VT_AIR, air, 0); + } + void add_exposure(int32_t exposure) { + fbb_.AddElement(PlayerStatusData::VT_EXPOSURE, exposure, 0); + } + void add_poison(int32_t poison) { + fbb_.AddElement(PlayerStatusData::VT_POISON, poison, 0); + } + void add_stamina(int32_t stamina) { + fbb_.AddElement(PlayerStatusData::VT_STAMINA, stamina, 0); + } + explicit PlayerStatusDataBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreatePlayerStatusData( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t air = 0, + int32_t exposure = 0, + int32_t poison = 0, + int32_t stamina = 0) { + PlayerStatusDataBuilder builder_(_fbb); + builder_.add_stamina(stamina); + builder_.add_poison(poison); + builder_.add_exposure(exposure); + builder_.add_air(air); + return builder_.Finish(); +} + +struct PlayerStatusData::Traits { + using type = PlayerStatusData; + static auto constexpr Create = CreatePlayerStatusData; +}; + +flatbuffers::Offset CreatePlayerStatusData(flatbuffers::FlatBufferBuilder &_fbb, const PlayerStatusDataT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct LaraT : public flatbuffers::NativeTable { + typedef Lara TableType; + std::unique_ptr effect{}; + std::unique_ptr status{}; + int32_t item_number = 0; + std::unique_ptr control{}; + std::unique_ptr inventory{}; + std::vector> weapons{}; + std::unique_ptr flare{}; + std::unique_ptr torch{}; + std::unique_ptr extra_head_rot{}; + std::unique_ptr extra_torso_rot{}; + int32_t water_current_active = 0; + std::unique_ptr water_current_pull{}; + std::unique_ptr left_arm{}; + std::unique_ptr right_arm{}; + std::vector target_arm_angles{}; + int32_t target_entity_number = 0; + int32_t vehicle = 0; + int32_t extra_anim = 0; + int32_t hit_frame = 0; + int32_t hit_direction = 0; + int32_t projected_floor_height = 0; + int32_t target_facing_angle = 0; + int32_t water_surface_dist = 0; + int32_t interacted_item = 0; + std::unique_ptr next_corner_pose{}; + int32_t burn_type = 0; + uint32_t burn_count = 0; + bool burn = false; + int32_t burn_blue = 0; + bool burn_smoke = false; + int32_t location = 0; + int32_t highest_location = 0; + int32_t location_pad = 0; +}; + +struct Lara FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef LaraT NativeTableType; + typedef LaraBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_EFFECT = 4, + VT_STATUS = 6, + VT_ITEM_NUMBER = 8, + VT_CONTROL = 10, + VT_INVENTORY = 12, + VT_WEAPONS = 14, + VT_FLARE = 16, + VT_TORCH = 18, + VT_EXTRA_HEAD_ROT = 20, + VT_EXTRA_TORSO_ROT = 22, + VT_WATER_CURRENT_ACTIVE = 24, + VT_WATER_CURRENT_PULL = 26, + VT_LEFT_ARM = 28, + VT_RIGHT_ARM = 30, + VT_TARGET_ARM_ANGLES = 32, + VT_TARGET_ENTITY_NUMBER = 34, + VT_VEHICLE = 36, + VT_EXTRA_ANIM = 38, + VT_HIT_FRAME = 40, + VT_HIT_DIRECTION = 42, + VT_PROJECTED_FLOOR_HEIGHT = 44, + VT_TARGET_FACING_ANGLE = 46, + VT_WATER_SURFACE_DIST = 48, + VT_INTERACTED_ITEM = 50, + VT_NEXT_CORNER_POSE = 52, + VT_BURN_TYPE = 54, + VT_BURN_COUNT = 56, + VT_BURN = 58, + VT_BURN_BLUE = 60, + VT_BURN_SMOKE = 62, + VT_LOCATION = 64, + VT_HIGHEST_LOCATION = 66, + VT_LOCATION_PAD = 68 + }; + const TEN::Save::PlayerEffectData *effect() const { + return GetPointer(VT_EFFECT); + } + const TEN::Save::PlayerStatusData *status() const { + return GetPointer(VT_STATUS); + } + int32_t item_number() const { + return GetField(VT_ITEM_NUMBER, 0); + } + const TEN::Save::LaraControlData *control() const { + return GetPointer(VT_CONTROL); + } + const TEN::Save::LaraInventoryData *inventory() const { + return GetPointer(VT_INVENTORY); + } + const flatbuffers::Vector> *weapons() const { + return GetPointer> *>(VT_WEAPONS); + } + const TEN::Save::FlareData *flare() const { + return GetPointer(VT_FLARE); + } + const TEN::Save::TorchData *torch() const { + return GetPointer(VT_TORCH); + } + const TEN::Save::Vector3 *extra_head_rot() const { + return GetStruct(VT_EXTRA_HEAD_ROT); + } + const TEN::Save::Vector3 *extra_torso_rot() const { + return GetStruct(VT_EXTRA_TORSO_ROT); + } + int32_t water_current_active() const { + return GetField(VT_WATER_CURRENT_ACTIVE, 0); + } + const TEN::Save::Vector3 *water_current_pull() const { + return GetStruct(VT_WATER_CURRENT_PULL); + } + const TEN::Save::ArmInfo *left_arm() const { + return GetPointer(VT_LEFT_ARM); + } + const TEN::Save::ArmInfo *right_arm() const { + return GetPointer(VT_RIGHT_ARM); + } + const flatbuffers::Vector *target_arm_angles() const { + return GetPointer *>(VT_TARGET_ARM_ANGLES); + } + int32_t target_entity_number() const { + return GetField(VT_TARGET_ENTITY_NUMBER, 0); + } + int32_t vehicle() const { + return GetField(VT_VEHICLE, 0); + } + int32_t extra_anim() const { + return GetField(VT_EXTRA_ANIM, 0); + } + int32_t hit_frame() const { + return GetField(VT_HIT_FRAME, 0); + } + int32_t hit_direction() const { + return GetField(VT_HIT_DIRECTION, 0); + } + int32_t projected_floor_height() const { + return GetField(VT_PROJECTED_FLOOR_HEIGHT, 0); + } + int32_t target_facing_angle() const { + return GetField(VT_TARGET_FACING_ANGLE, 0); + } + int32_t water_surface_dist() const { + return GetField(VT_WATER_SURFACE_DIST, 0); + } + int32_t interacted_item() const { + return GetField(VT_INTERACTED_ITEM, 0); + } + const TEN::Save::Position *next_corner_pose() const { + return GetStruct(VT_NEXT_CORNER_POSE); + } + int32_t burn_type() const { + return GetField(VT_BURN_TYPE, 0); + } + uint32_t burn_count() const { + return GetField(VT_BURN_COUNT, 0); + } + bool burn() const { + return GetField(VT_BURN, 0) != 0; + } + int32_t burn_blue() const { + return GetField(VT_BURN_BLUE, 0); + } + bool burn_smoke() const { + return GetField(VT_BURN_SMOKE, 0) != 0; + } + int32_t location() const { + return GetField(VT_LOCATION, 0); + } + int32_t highest_location() const { + return GetField(VT_HIGHEST_LOCATION, 0); + } + int32_t location_pad() const { + return GetField(VT_LOCATION_PAD, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_EFFECT) && + verifier.VerifyTable(effect()) && + VerifyOffset(verifier, VT_STATUS) && + verifier.VerifyTable(status()) && + VerifyField(verifier, VT_ITEM_NUMBER) && + VerifyOffset(verifier, VT_CONTROL) && + verifier.VerifyTable(control()) && + VerifyOffset(verifier, VT_INVENTORY) && + verifier.VerifyTable(inventory()) && + VerifyOffset(verifier, VT_WEAPONS) && + verifier.VerifyVector(weapons()) && + verifier.VerifyVectorOfTables(weapons()) && + VerifyOffset(verifier, VT_FLARE) && + verifier.VerifyTable(flare()) && + VerifyOffset(verifier, VT_TORCH) && + verifier.VerifyTable(torch()) && + VerifyField(verifier, VT_EXTRA_HEAD_ROT) && + VerifyField(verifier, VT_EXTRA_TORSO_ROT) && + VerifyField(verifier, VT_WATER_CURRENT_ACTIVE) && + VerifyField(verifier, VT_WATER_CURRENT_PULL) && + VerifyOffset(verifier, VT_LEFT_ARM) && + verifier.VerifyTable(left_arm()) && + VerifyOffset(verifier, VT_RIGHT_ARM) && + verifier.VerifyTable(right_arm()) && + VerifyOffset(verifier, VT_TARGET_ARM_ANGLES) && + verifier.VerifyVector(target_arm_angles()) && + VerifyField(verifier, VT_TARGET_ENTITY_NUMBER) && + VerifyField(verifier, VT_VEHICLE) && + VerifyField(verifier, VT_EXTRA_ANIM) && + VerifyField(verifier, VT_HIT_FRAME) && + VerifyField(verifier, VT_HIT_DIRECTION) && + VerifyField(verifier, VT_PROJECTED_FLOOR_HEIGHT) && + VerifyField(verifier, VT_TARGET_FACING_ANGLE) && + VerifyField(verifier, VT_WATER_SURFACE_DIST) && + VerifyField(verifier, VT_INTERACTED_ITEM) && + VerifyField(verifier, VT_NEXT_CORNER_POSE) && + VerifyField(verifier, VT_BURN_TYPE) && + VerifyField(verifier, VT_BURN_COUNT) && + VerifyField(verifier, VT_BURN) && + VerifyField(verifier, VT_BURN_BLUE) && + VerifyField(verifier, VT_BURN_SMOKE) && + VerifyField(verifier, VT_LOCATION) && + VerifyField(verifier, VT_HIGHEST_LOCATION) && + VerifyField(verifier, VT_LOCATION_PAD) && + verifier.EndTable(); + } + LaraT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(LaraT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct LaraBuilder { + typedef Lara Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_effect(flatbuffers::Offset effect) { + fbb_.AddOffset(Lara::VT_EFFECT, effect); + } + void add_status(flatbuffers::Offset status) { + fbb_.AddOffset(Lara::VT_STATUS, status); + } + void add_item_number(int32_t item_number) { + fbb_.AddElement(Lara::VT_ITEM_NUMBER, item_number, 0); + } + void add_control(flatbuffers::Offset control) { + fbb_.AddOffset(Lara::VT_CONTROL, control); + } + void add_inventory(flatbuffers::Offset inventory) { + fbb_.AddOffset(Lara::VT_INVENTORY, inventory); + } + void add_weapons(flatbuffers::Offset>> weapons) { + fbb_.AddOffset(Lara::VT_WEAPONS, weapons); + } + void add_flare(flatbuffers::Offset flare) { + fbb_.AddOffset(Lara::VT_FLARE, flare); + } + void add_torch(flatbuffers::Offset torch) { + fbb_.AddOffset(Lara::VT_TORCH, torch); + } + void add_extra_head_rot(const TEN::Save::Vector3 *extra_head_rot) { + fbb_.AddStruct(Lara::VT_EXTRA_HEAD_ROT, extra_head_rot); + } + void add_extra_torso_rot(const TEN::Save::Vector3 *extra_torso_rot) { + fbb_.AddStruct(Lara::VT_EXTRA_TORSO_ROT, extra_torso_rot); + } + void add_water_current_active(int32_t water_current_active) { + fbb_.AddElement(Lara::VT_WATER_CURRENT_ACTIVE, water_current_active, 0); + } + void add_water_current_pull(const TEN::Save::Vector3 *water_current_pull) { + fbb_.AddStruct(Lara::VT_WATER_CURRENT_PULL, water_current_pull); + } + void add_left_arm(flatbuffers::Offset left_arm) { + fbb_.AddOffset(Lara::VT_LEFT_ARM, left_arm); + } + void add_right_arm(flatbuffers::Offset right_arm) { + fbb_.AddOffset(Lara::VT_RIGHT_ARM, right_arm); + } + void add_target_arm_angles(flatbuffers::Offset> target_arm_angles) { + fbb_.AddOffset(Lara::VT_TARGET_ARM_ANGLES, target_arm_angles); + } + void add_target_entity_number(int32_t target_entity_number) { + fbb_.AddElement(Lara::VT_TARGET_ENTITY_NUMBER, target_entity_number, 0); + } + void add_vehicle(int32_t vehicle) { + fbb_.AddElement(Lara::VT_VEHICLE, vehicle, 0); + } + void add_extra_anim(int32_t extra_anim) { + fbb_.AddElement(Lara::VT_EXTRA_ANIM, extra_anim, 0); + } + void add_hit_frame(int32_t hit_frame) { + fbb_.AddElement(Lara::VT_HIT_FRAME, hit_frame, 0); + } + void add_hit_direction(int32_t hit_direction) { + fbb_.AddElement(Lara::VT_HIT_DIRECTION, hit_direction, 0); + } + void add_projected_floor_height(int32_t projected_floor_height) { + fbb_.AddElement(Lara::VT_PROJECTED_FLOOR_HEIGHT, projected_floor_height, 0); + } + void add_target_facing_angle(int32_t target_facing_angle) { + fbb_.AddElement(Lara::VT_TARGET_FACING_ANGLE, target_facing_angle, 0); + } + void add_water_surface_dist(int32_t water_surface_dist) { + fbb_.AddElement(Lara::VT_WATER_SURFACE_DIST, water_surface_dist, 0); + } + void add_interacted_item(int32_t interacted_item) { + fbb_.AddElement(Lara::VT_INTERACTED_ITEM, interacted_item, 0); + } + void add_next_corner_pose(const TEN::Save::Position *next_corner_pose) { + fbb_.AddStruct(Lara::VT_NEXT_CORNER_POSE, next_corner_pose); + } + void add_burn_type(int32_t burn_type) { + fbb_.AddElement(Lara::VT_BURN_TYPE, burn_type, 0); + } + void add_burn_count(uint32_t burn_count) { + fbb_.AddElement(Lara::VT_BURN_COUNT, burn_count, 0); + } + void add_burn(bool burn) { + fbb_.AddElement(Lara::VT_BURN, static_cast(burn), 0); + } + void add_burn_blue(int32_t burn_blue) { + fbb_.AddElement(Lara::VT_BURN_BLUE, burn_blue, 0); + } + void add_burn_smoke(bool burn_smoke) { + fbb_.AddElement(Lara::VT_BURN_SMOKE, static_cast(burn_smoke), 0); + } + void add_location(int32_t location) { + fbb_.AddElement(Lara::VT_LOCATION, location, 0); + } + void add_highest_location(int32_t highest_location) { + fbb_.AddElement(Lara::VT_HIGHEST_LOCATION, highest_location, 0); + } + void add_location_pad(int32_t location_pad) { + fbb_.AddElement(Lara::VT_LOCATION_PAD, location_pad, 0); + } + explicit LaraBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateLara( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset effect = 0, + flatbuffers::Offset status = 0, + int32_t item_number = 0, + flatbuffers::Offset control = 0, + flatbuffers::Offset inventory = 0, + flatbuffers::Offset>> weapons = 0, + flatbuffers::Offset flare = 0, + flatbuffers::Offset torch = 0, + const TEN::Save::Vector3 *extra_head_rot = 0, + const TEN::Save::Vector3 *extra_torso_rot = 0, + int32_t water_current_active = 0, + const TEN::Save::Vector3 *water_current_pull = 0, + flatbuffers::Offset left_arm = 0, + flatbuffers::Offset right_arm = 0, + flatbuffers::Offset> target_arm_angles = 0, + int32_t target_entity_number = 0, + int32_t vehicle = 0, + int32_t extra_anim = 0, + int32_t hit_frame = 0, + int32_t hit_direction = 0, + int32_t projected_floor_height = 0, + int32_t target_facing_angle = 0, + int32_t water_surface_dist = 0, + int32_t interacted_item = 0, + const TEN::Save::Position *next_corner_pose = 0, + int32_t burn_type = 0, + uint32_t burn_count = 0, + bool burn = false, + int32_t burn_blue = 0, + bool burn_smoke = false, + int32_t location = 0, + int32_t highest_location = 0, + int32_t location_pad = 0) { + LaraBuilder builder_(_fbb); + builder_.add_location_pad(location_pad); + builder_.add_highest_location(highest_location); + builder_.add_location(location); + builder_.add_burn_blue(burn_blue); + builder_.add_burn_count(burn_count); + builder_.add_burn_type(burn_type); + builder_.add_next_corner_pose(next_corner_pose); + builder_.add_interacted_item(interacted_item); + builder_.add_water_surface_dist(water_surface_dist); + builder_.add_target_facing_angle(target_facing_angle); + builder_.add_projected_floor_height(projected_floor_height); + builder_.add_hit_direction(hit_direction); + builder_.add_hit_frame(hit_frame); + builder_.add_extra_anim(extra_anim); + builder_.add_vehicle(vehicle); + builder_.add_target_entity_number(target_entity_number); + builder_.add_target_arm_angles(target_arm_angles); + builder_.add_right_arm(right_arm); + builder_.add_left_arm(left_arm); + builder_.add_water_current_pull(water_current_pull); + builder_.add_water_current_active(water_current_active); + builder_.add_extra_torso_rot(extra_torso_rot); + builder_.add_extra_head_rot(extra_head_rot); + builder_.add_torch(torch); + builder_.add_flare(flare); + builder_.add_weapons(weapons); + builder_.add_inventory(inventory); + builder_.add_control(control); + builder_.add_item_number(item_number); + builder_.add_status(status); + builder_.add_effect(effect); + builder_.add_burn_smoke(burn_smoke); + builder_.add_burn(burn); + return builder_.Finish(); +} + +struct Lara::Traits { + using type = Lara; + static auto constexpr Create = CreateLara; +}; + +inline flatbuffers::Offset CreateLaraDirect( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset effect = 0, + flatbuffers::Offset status = 0, + int32_t item_number = 0, + flatbuffers::Offset control = 0, + flatbuffers::Offset inventory = 0, + const std::vector> *weapons = nullptr, + flatbuffers::Offset flare = 0, + flatbuffers::Offset torch = 0, + const TEN::Save::Vector3 *extra_head_rot = 0, + const TEN::Save::Vector3 *extra_torso_rot = 0, + int32_t water_current_active = 0, + const TEN::Save::Vector3 *water_current_pull = 0, + flatbuffers::Offset left_arm = 0, + flatbuffers::Offset right_arm = 0, + const std::vector *target_arm_angles = nullptr, + int32_t target_entity_number = 0, + int32_t vehicle = 0, + int32_t extra_anim = 0, + int32_t hit_frame = 0, + int32_t hit_direction = 0, + int32_t projected_floor_height = 0, + int32_t target_facing_angle = 0, + int32_t water_surface_dist = 0, + int32_t interacted_item = 0, + const TEN::Save::Position *next_corner_pose = 0, + int32_t burn_type = 0, + uint32_t burn_count = 0, + bool burn = false, + int32_t burn_blue = 0, + bool burn_smoke = false, + int32_t location = 0, + int32_t highest_location = 0, + int32_t location_pad = 0) { + auto weapons__ = weapons ? _fbb.CreateVector>(*weapons) : 0; + auto target_arm_angles__ = target_arm_angles ? _fbb.CreateVector(*target_arm_angles) : 0; + return TEN::Save::CreateLara( + _fbb, + effect, + status, + item_number, + control, + inventory, + weapons__, + flare, + torch, + extra_head_rot, + extra_torso_rot, + water_current_active, + water_current_pull, + left_arm, + right_arm, + target_arm_angles__, + target_entity_number, + vehicle, + extra_anim, + hit_frame, + hit_direction, + projected_floor_height, + target_facing_angle, + water_surface_dist, + interacted_item, + next_corner_pose, + burn_type, + burn_count, + burn, + burn_blue, + burn_smoke, + location, + highest_location, + location_pad); +} + +flatbuffers::Offset CreateLara(flatbuffers::FlatBufferBuilder &_fbb, const LaraT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct FixedCameraT : public flatbuffers::NativeTable { + typedef FixedCamera TableType; + int32_t flags = 0; +}; + +struct FixedCamera FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef FixedCameraT NativeTableType; + typedef FixedCameraBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_FLAGS = 4 + }; + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_FLAGS) && + verifier.EndTable(); + } + FixedCameraT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(FixedCameraT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const FixedCameraT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct FixedCameraBuilder { + typedef FixedCamera Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_flags(int32_t flags) { + fbb_.AddElement(FixedCamera::VT_FLAGS, flags, 0); + } + explicit FixedCameraBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateFixedCamera( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t flags = 0) { + FixedCameraBuilder builder_(_fbb); + builder_.add_flags(flags); + return builder_.Finish(); +} + +struct FixedCamera::Traits { + using type = FixedCamera; + static auto constexpr Create = CreateFixedCamera; +}; + +flatbuffers::Offset CreateFixedCamera(flatbuffers::FlatBufferBuilder &_fbb, const FixedCameraT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct FlyByCameraT : public flatbuffers::NativeTable { + typedef FlyByCamera TableType; + int32_t flags = 0; +}; + +struct FlyByCamera FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef FlyByCameraT NativeTableType; + typedef FlyByCameraBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_FLAGS = 4 + }; + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_FLAGS) && + verifier.EndTable(); + } + FlyByCameraT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(FlyByCameraT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const FlyByCameraT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct FlyByCameraBuilder { + typedef FlyByCamera Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_flags(int32_t flags) { + fbb_.AddElement(FlyByCamera::VT_FLAGS, flags, 0); + } + explicit FlyByCameraBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateFlyByCamera( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t flags = 0) { + FlyByCameraBuilder builder_(_fbb); + builder_.add_flags(flags); + return builder_.Finish(); +} + +struct FlyByCamera::Traits { + using type = FlyByCamera; + static auto constexpr Create = CreateFlyByCamera; +}; + +flatbuffers::Offset CreateFlyByCamera(flatbuffers::FlatBufferBuilder &_fbb, const FlyByCameraT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct SinkT : public flatbuffers::NativeTable { + typedef Sink TableType; + int32_t flags = 0; +}; + +struct Sink FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef SinkT NativeTableType; + typedef SinkBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_FLAGS = 4 + }; + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_FLAGS) && + verifier.EndTable(); + } + SinkT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(SinkT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SinkT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct SinkBuilder { + typedef Sink Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_flags(int32_t flags) { + fbb_.AddElement(Sink::VT_FLAGS, flags, 0); + } + explicit SinkBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateSink( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t flags = 0) { + SinkBuilder builder_(_fbb); + builder_.add_flags(flags); + return builder_.Finish(); +} + +struct Sink::Traits { + using type = Sink; + static auto constexpr Create = CreateSink; +}; + +flatbuffers::Offset CreateSink(flatbuffers::FlatBufferBuilder &_fbb, const SinkT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct StaticMeshInfoT : public flatbuffers::NativeTable { + typedef StaticMeshInfo TableType; + int32_t number = 0; + int32_t room_number = 0; + std::unique_ptr pose{}; + float scale = 0.0f; + std::unique_ptr color{}; + int32_t hit_points = 0; + int32_t flags = 0; +}; + +struct StaticMeshInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef StaticMeshInfoT NativeTableType; + typedef StaticMeshInfoBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_NUMBER = 4, + VT_ROOM_NUMBER = 6, + VT_POSE = 8, + VT_SCALE = 10, + VT_COLOR = 12, + VT_HIT_POINTS = 14, + VT_FLAGS = 16 + }; + int32_t number() const { + return GetField(VT_NUMBER, 0); + } + int32_t room_number() const { + return GetField(VT_ROOM_NUMBER, 0); + } + const TEN::Save::Position *pose() const { + return GetStruct(VT_POSE); + } + float scale() const { + return GetField(VT_SCALE, 0.0f); + } + const TEN::Save::Vector4 *color() const { + return GetStruct(VT_COLOR); + } + int32_t hit_points() const { + return GetField(VT_HIT_POINTS, 0); + } + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_NUMBER) && + VerifyField(verifier, VT_ROOM_NUMBER) && + VerifyField(verifier, VT_POSE) && + VerifyField(verifier, VT_SCALE) && + VerifyField(verifier, VT_COLOR) && + VerifyField(verifier, VT_HIT_POINTS) && + VerifyField(verifier, VT_FLAGS) && + verifier.EndTable(); + } + StaticMeshInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(StaticMeshInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const StaticMeshInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct StaticMeshInfoBuilder { + typedef StaticMeshInfo Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_number(int32_t number) { + fbb_.AddElement(StaticMeshInfo::VT_NUMBER, number, 0); + } + void add_room_number(int32_t room_number) { + fbb_.AddElement(StaticMeshInfo::VT_ROOM_NUMBER, room_number, 0); + } + void add_pose(const TEN::Save::Position *pose) { + fbb_.AddStruct(StaticMeshInfo::VT_POSE, pose); + } + void add_scale(float scale) { + fbb_.AddElement(StaticMeshInfo::VT_SCALE, scale, 0.0f); + } + void add_color(const TEN::Save::Vector4 *color) { + fbb_.AddStruct(StaticMeshInfo::VT_COLOR, color); + } + void add_hit_points(int32_t hit_points) { + fbb_.AddElement(StaticMeshInfo::VT_HIT_POINTS, hit_points, 0); + } + void add_flags(int32_t flags) { + fbb_.AddElement(StaticMeshInfo::VT_FLAGS, flags, 0); + } + explicit StaticMeshInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateStaticMeshInfo( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t number = 0, + int32_t room_number = 0, + const TEN::Save::Position *pose = 0, + float scale = 0.0f, + const TEN::Save::Vector4 *color = 0, + int32_t hit_points = 0, + int32_t flags = 0) { + StaticMeshInfoBuilder builder_(_fbb); + builder_.add_flags(flags); + builder_.add_hit_points(hit_points); + builder_.add_color(color); + builder_.add_scale(scale); + builder_.add_pose(pose); + builder_.add_room_number(room_number); + builder_.add_number(number); + return builder_.Finish(); +} + +struct StaticMeshInfo::Traits { + using type = StaticMeshInfo; + static auto constexpr Create = CreateStaticMeshInfo; +}; + +flatbuffers::Offset CreateStaticMeshInfo(flatbuffers::FlatBufferBuilder &_fbb, const StaticMeshInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct ParticleInfoT : public flatbuffers::NativeTable { + typedef ParticleInfo TableType; + int32_t x = 0; + int32_t y = 0; + int32_t z = 0; + int32_t x_vel = 0; + int32_t y_vel = 0; + int32_t z_vel = 0; + int32_t gravity = 0; + int32_t rot_ang = 0; + int32_t flags = 0; + float s_size = 0.0f; + float d_size = 0.0f; + float size = 0.0f; + int32_t friction = 0; + int32_t scalar = 0; + int32_t sprite_index = 0; + int32_t rot_add = 0; + int32_t max_y_vel = 0; + bool on = false; + int32_t s_r = 0; + int32_t s_g = 0; + int32_t s_b = 0; + int32_t d_r = 0; + int32_t d_g = 0; + int32_t d_b = 0; + int32_t r = 0; + int32_t g = 0; + int32_t b = 0; + int32_t col_fade_speed = 0; + int32_t fade_to_black = 0; + int32_t s_life = 0; + int32_t life = 0; + int32_t blend_mode = 0; + int32_t extras = 0; + int32_t dynamic = 0; + int32_t fx_obj = 0; + int32_t room_number = 0; + int32_t node_number = 0; +}; + +struct ParticleInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef ParticleInfoT NativeTableType; + typedef ParticleInfoBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_X = 4, + VT_Y = 6, + VT_Z = 8, + VT_X_VEL = 10, + VT_Y_VEL = 12, + VT_Z_VEL = 14, + VT_GRAVITY = 16, + VT_ROT_ANG = 18, + VT_FLAGS = 20, + VT_S_SIZE = 22, + VT_D_SIZE = 24, + VT_SIZE = 26, + VT_FRICTION = 28, + VT_SCALAR = 30, + VT_SPRITE_INDEX = 32, + VT_ROT_ADD = 34, + VT_MAX_Y_VEL = 36, + VT_ON = 38, + VT_S_R = 40, + VT_S_G = 42, + VT_S_B = 44, + VT_D_R = 46, + VT_D_G = 48, + VT_D_B = 50, + VT_R = 52, + VT_G = 54, + VT_B = 56, + VT_COL_FADE_SPEED = 58, + VT_FADE_TO_BLACK = 60, + VT_S_LIFE = 62, + VT_LIFE = 64, + VT_BLEND_MODE = 66, + VT_EXTRAS = 68, + VT_DYNAMIC = 70, + VT_FX_OBJ = 72, + VT_ROOM_NUMBER = 74, + VT_NODE_NUMBER = 76 + }; + int32_t x() const { + return GetField(VT_X, 0); + } + int32_t y() const { + return GetField(VT_Y, 0); + } + int32_t z() const { + return GetField(VT_Z, 0); + } + int32_t x_vel() const { + return GetField(VT_X_VEL, 0); + } + int32_t y_vel() const { + return GetField(VT_Y_VEL, 0); + } + int32_t z_vel() const { + return GetField(VT_Z_VEL, 0); + } + int32_t gravity() const { + return GetField(VT_GRAVITY, 0); + } + int32_t rot_ang() const { + return GetField(VT_ROT_ANG, 0); + } + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + float s_size() const { + return GetField(VT_S_SIZE, 0.0f); + } + float d_size() const { + return GetField(VT_D_SIZE, 0.0f); + } + float size() const { + return GetField(VT_SIZE, 0.0f); + } + int32_t friction() const { + return GetField(VT_FRICTION, 0); + } + int32_t scalar() const { + return GetField(VT_SCALAR, 0); + } + int32_t sprite_index() const { + return GetField(VT_SPRITE_INDEX, 0); + } + int32_t rot_add() const { + return GetField(VT_ROT_ADD, 0); + } + int32_t max_y_vel() const { + return GetField(VT_MAX_Y_VEL, 0); + } + bool on() const { + return GetField(VT_ON, 0) != 0; + } + int32_t s_r() const { + return GetField(VT_S_R, 0); + } + int32_t s_g() const { + return GetField(VT_S_G, 0); + } + int32_t s_b() const { + return GetField(VT_S_B, 0); + } + int32_t d_r() const { + return GetField(VT_D_R, 0); + } + int32_t d_g() const { + return GetField(VT_D_G, 0); + } + int32_t d_b() const { + return GetField(VT_D_B, 0); + } + int32_t r() const { + return GetField(VT_R, 0); + } + int32_t g() const { + return GetField(VT_G, 0); + } + int32_t b() const { + return GetField(VT_B, 0); + } + int32_t col_fade_speed() const { + return GetField(VT_COL_FADE_SPEED, 0); + } + int32_t fade_to_black() const { + return GetField(VT_FADE_TO_BLACK, 0); + } + int32_t s_life() const { + return GetField(VT_S_LIFE, 0); + } + int32_t life() const { + return GetField(VT_LIFE, 0); + } + int32_t blend_mode() const { + return GetField(VT_BLEND_MODE, 0); + } + int32_t extras() const { + return GetField(VT_EXTRAS, 0); + } + int32_t dynamic() const { + return GetField(VT_DYNAMIC, 0); + } + int32_t fx_obj() const { + return GetField(VT_FX_OBJ, 0); + } + int32_t room_number() const { + return GetField(VT_ROOM_NUMBER, 0); + } + int32_t node_number() const { + return GetField(VT_NODE_NUMBER, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_X) && + VerifyField(verifier, VT_Y) && + VerifyField(verifier, VT_Z) && + VerifyField(verifier, VT_X_VEL) && + VerifyField(verifier, VT_Y_VEL) && + VerifyField(verifier, VT_Z_VEL) && + VerifyField(verifier, VT_GRAVITY) && + VerifyField(verifier, VT_ROT_ANG) && + VerifyField(verifier, VT_FLAGS) && + VerifyField(verifier, VT_S_SIZE) && + VerifyField(verifier, VT_D_SIZE) && + VerifyField(verifier, VT_SIZE) && + VerifyField(verifier, VT_FRICTION) && + VerifyField(verifier, VT_SCALAR) && + VerifyField(verifier, VT_SPRITE_INDEX) && + VerifyField(verifier, VT_ROT_ADD) && + VerifyField(verifier, VT_MAX_Y_VEL) && + VerifyField(verifier, VT_ON) && + VerifyField(verifier, VT_S_R) && + VerifyField(verifier, VT_S_G) && + VerifyField(verifier, VT_S_B) && + VerifyField(verifier, VT_D_R) && + VerifyField(verifier, VT_D_G) && + VerifyField(verifier, VT_D_B) && + VerifyField(verifier, VT_R) && + VerifyField(verifier, VT_G) && + VerifyField(verifier, VT_B) && + VerifyField(verifier, VT_COL_FADE_SPEED) && + VerifyField(verifier, VT_FADE_TO_BLACK) && + VerifyField(verifier, VT_S_LIFE) && + VerifyField(verifier, VT_LIFE) && + VerifyField(verifier, VT_BLEND_MODE) && + VerifyField(verifier, VT_EXTRAS) && + VerifyField(verifier, VT_DYNAMIC) && + VerifyField(verifier, VT_FX_OBJ) && + VerifyField(verifier, VT_ROOM_NUMBER) && + VerifyField(verifier, VT_NODE_NUMBER) && + verifier.EndTable(); + } + ParticleInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ParticleInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ParticleInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct ParticleInfoBuilder { + typedef ParticleInfo Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_x(int32_t x) { + fbb_.AddElement(ParticleInfo::VT_X, x, 0); + } + void add_y(int32_t y) { + fbb_.AddElement(ParticleInfo::VT_Y, y, 0); + } + void add_z(int32_t z) { + fbb_.AddElement(ParticleInfo::VT_Z, z, 0); + } + void add_x_vel(int32_t x_vel) { + fbb_.AddElement(ParticleInfo::VT_X_VEL, x_vel, 0); + } + void add_y_vel(int32_t y_vel) { + fbb_.AddElement(ParticleInfo::VT_Y_VEL, y_vel, 0); + } + void add_z_vel(int32_t z_vel) { + fbb_.AddElement(ParticleInfo::VT_Z_VEL, z_vel, 0); + } + void add_gravity(int32_t gravity) { + fbb_.AddElement(ParticleInfo::VT_GRAVITY, gravity, 0); + } + void add_rot_ang(int32_t rot_ang) { + fbb_.AddElement(ParticleInfo::VT_ROT_ANG, rot_ang, 0); + } + void add_flags(int32_t flags) { + fbb_.AddElement(ParticleInfo::VT_FLAGS, flags, 0); + } + void add_s_size(float s_size) { + fbb_.AddElement(ParticleInfo::VT_S_SIZE, s_size, 0.0f); + } + void add_d_size(float d_size) { + fbb_.AddElement(ParticleInfo::VT_D_SIZE, d_size, 0.0f); + } + void add_size(float size) { + fbb_.AddElement(ParticleInfo::VT_SIZE, size, 0.0f); + } + void add_friction(int32_t friction) { + fbb_.AddElement(ParticleInfo::VT_FRICTION, friction, 0); + } + void add_scalar(int32_t scalar) { + fbb_.AddElement(ParticleInfo::VT_SCALAR, scalar, 0); + } + void add_sprite_index(int32_t sprite_index) { + fbb_.AddElement(ParticleInfo::VT_SPRITE_INDEX, sprite_index, 0); + } + void add_rot_add(int32_t rot_add) { + fbb_.AddElement(ParticleInfo::VT_ROT_ADD, rot_add, 0); + } + void add_max_y_vel(int32_t max_y_vel) { + fbb_.AddElement(ParticleInfo::VT_MAX_Y_VEL, max_y_vel, 0); + } + void add_on(bool on) { + fbb_.AddElement(ParticleInfo::VT_ON, static_cast(on), 0); + } + void add_s_r(int32_t s_r) { + fbb_.AddElement(ParticleInfo::VT_S_R, s_r, 0); + } + void add_s_g(int32_t s_g) { + fbb_.AddElement(ParticleInfo::VT_S_G, s_g, 0); + } + void add_s_b(int32_t s_b) { + fbb_.AddElement(ParticleInfo::VT_S_B, s_b, 0); + } + void add_d_r(int32_t d_r) { + fbb_.AddElement(ParticleInfo::VT_D_R, d_r, 0); + } + void add_d_g(int32_t d_g) { + fbb_.AddElement(ParticleInfo::VT_D_G, d_g, 0); + } + void add_d_b(int32_t d_b) { + fbb_.AddElement(ParticleInfo::VT_D_B, d_b, 0); + } + void add_r(int32_t r) { + fbb_.AddElement(ParticleInfo::VT_R, r, 0); + } + void add_g(int32_t g) { + fbb_.AddElement(ParticleInfo::VT_G, g, 0); + } + void add_b(int32_t b) { + fbb_.AddElement(ParticleInfo::VT_B, b, 0); + } + void add_col_fade_speed(int32_t col_fade_speed) { + fbb_.AddElement(ParticleInfo::VT_COL_FADE_SPEED, col_fade_speed, 0); + } + void add_fade_to_black(int32_t fade_to_black) { + fbb_.AddElement(ParticleInfo::VT_FADE_TO_BLACK, fade_to_black, 0); + } + void add_s_life(int32_t s_life) { + fbb_.AddElement(ParticleInfo::VT_S_LIFE, s_life, 0); + } + void add_life(int32_t life) { + fbb_.AddElement(ParticleInfo::VT_LIFE, life, 0); + } + void add_blend_mode(int32_t blend_mode) { + fbb_.AddElement(ParticleInfo::VT_BLEND_MODE, blend_mode, 0); + } + void add_extras(int32_t extras) { + fbb_.AddElement(ParticleInfo::VT_EXTRAS, extras, 0); + } + void add_dynamic(int32_t dynamic) { + fbb_.AddElement(ParticleInfo::VT_DYNAMIC, dynamic, 0); + } + void add_fx_obj(int32_t fx_obj) { + fbb_.AddElement(ParticleInfo::VT_FX_OBJ, fx_obj, 0); + } + void add_room_number(int32_t room_number) { + fbb_.AddElement(ParticleInfo::VT_ROOM_NUMBER, room_number, 0); + } + void add_node_number(int32_t node_number) { + fbb_.AddElement(ParticleInfo::VT_NODE_NUMBER, node_number, 0); + } + explicit ParticleInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateParticleInfo( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t x = 0, + int32_t y = 0, + int32_t z = 0, + int32_t x_vel = 0, + int32_t y_vel = 0, + int32_t z_vel = 0, + int32_t gravity = 0, + int32_t rot_ang = 0, + int32_t flags = 0, + float s_size = 0.0f, + float d_size = 0.0f, + float size = 0.0f, + int32_t friction = 0, + int32_t scalar = 0, + int32_t sprite_index = 0, + int32_t rot_add = 0, + int32_t max_y_vel = 0, + bool on = false, + int32_t s_r = 0, + int32_t s_g = 0, + int32_t s_b = 0, + int32_t d_r = 0, + int32_t d_g = 0, + int32_t d_b = 0, + int32_t r = 0, + int32_t g = 0, + int32_t b = 0, + int32_t col_fade_speed = 0, + int32_t fade_to_black = 0, + int32_t s_life = 0, + int32_t life = 0, + int32_t blend_mode = 0, + int32_t extras = 0, + int32_t dynamic = 0, + int32_t fx_obj = 0, + int32_t room_number = 0, + int32_t node_number = 0) { + ParticleInfoBuilder builder_(_fbb); + builder_.add_node_number(node_number); + builder_.add_room_number(room_number); + builder_.add_fx_obj(fx_obj); + builder_.add_dynamic(dynamic); + builder_.add_extras(extras); + builder_.add_blend_mode(blend_mode); + builder_.add_life(life); + builder_.add_s_life(s_life); + builder_.add_fade_to_black(fade_to_black); + builder_.add_col_fade_speed(col_fade_speed); + builder_.add_b(b); + builder_.add_g(g); + builder_.add_r(r); + builder_.add_d_b(d_b); + builder_.add_d_g(d_g); + builder_.add_d_r(d_r); + builder_.add_s_b(s_b); + builder_.add_s_g(s_g); + builder_.add_s_r(s_r); + builder_.add_max_y_vel(max_y_vel); + builder_.add_rot_add(rot_add); + builder_.add_sprite_index(sprite_index); + builder_.add_scalar(scalar); + builder_.add_friction(friction); + builder_.add_size(size); + builder_.add_d_size(d_size); + builder_.add_s_size(s_size); + builder_.add_flags(flags); + builder_.add_rot_ang(rot_ang); + builder_.add_gravity(gravity); + builder_.add_z_vel(z_vel); + builder_.add_y_vel(y_vel); + builder_.add_x_vel(x_vel); + builder_.add_z(z); + builder_.add_y(y); + builder_.add_x(x); + builder_.add_on(on); + return builder_.Finish(); +} + +struct ParticleInfo::Traits { + using type = ParticleInfo; + static auto constexpr Create = CreateParticleInfo; +}; + +flatbuffers::Offset CreateParticleInfo(flatbuffers::FlatBufferBuilder &_fbb, const ParticleInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct SwarmObjectInfoT : public flatbuffers::NativeTable { + typedef SwarmObjectInfo TableType; + bool on = false; + std::unique_ptr pose{}; + int32_t room_number = 0; + int32_t flags = 0; +}; + +struct SwarmObjectInfo FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef SwarmObjectInfoT NativeTableType; + typedef SwarmObjectInfoBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_ON = 4, + VT_POSE = 6, + VT_ROOM_NUMBER = 8, + VT_FLAGS = 10 + }; + bool on() const { + return GetField(VT_ON, 0) != 0; + } + const TEN::Save::Position *pose() const { + return GetStruct(VT_POSE); + } + int32_t room_number() const { + return GetField(VT_ROOM_NUMBER, 0); + } + int32_t flags() const { + return GetField(VT_FLAGS, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_ON) && + VerifyField(verifier, VT_POSE) && + VerifyField(verifier, VT_ROOM_NUMBER) && + VerifyField(verifier, VT_FLAGS) && + verifier.EndTable(); + } + SwarmObjectInfoT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(SwarmObjectInfoT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SwarmObjectInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct SwarmObjectInfoBuilder { + typedef SwarmObjectInfo Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_on(bool on) { + fbb_.AddElement(SwarmObjectInfo::VT_ON, static_cast(on), 0); + } + void add_pose(const TEN::Save::Position *pose) { + fbb_.AddStruct(SwarmObjectInfo::VT_POSE, pose); + } + void add_room_number(int32_t room_number) { + fbb_.AddElement(SwarmObjectInfo::VT_ROOM_NUMBER, room_number, 0); + } + void add_flags(int32_t flags) { + fbb_.AddElement(SwarmObjectInfo::VT_FLAGS, flags, 0); + } + explicit SwarmObjectInfoBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateSwarmObjectInfo( + flatbuffers::FlatBufferBuilder &_fbb, + bool on = false, + const TEN::Save::Position *pose = 0, + int32_t room_number = 0, + int32_t flags = 0) { + SwarmObjectInfoBuilder builder_(_fbb); + builder_.add_flags(flags); + builder_.add_room_number(room_number); + builder_.add_pose(pose); + builder_.add_on(on); + return builder_.Finish(); +} + +struct SwarmObjectInfo::Traits { + using type = SwarmObjectInfo; + static auto constexpr Create = CreateSwarmObjectInfo; +}; + +flatbuffers::Offset CreateSwarmObjectInfo(flatbuffers::FlatBufferBuilder &_fbb, const SwarmObjectInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct RopeT : public flatbuffers::NativeTable { + typedef Rope TableType; + std::vector segments{}; + std::vector velocities{}; + std::vector normalised_segments{}; + std::vector mesh_segments{}; + std::unique_ptr position{}; + std::vector coords{}; + int32_t segment_length = 0; + int32_t active = 0; + int32_t coiled = 0; +}; + +struct Rope FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef RopeT NativeTableType; + typedef RopeBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_SEGMENTS = 4, + VT_VELOCITIES = 6, + VT_NORMALISED_SEGMENTS = 8, + VT_MESH_SEGMENTS = 10, + VT_POSITION = 12, + VT_COORDS = 14, + VT_SEGMENT_LENGTH = 16, + VT_ACTIVE = 18, + VT_COILED = 20 + }; + const flatbuffers::Vector *segments() const { + return GetPointer *>(VT_SEGMENTS); + } + const flatbuffers::Vector *velocities() const { + return GetPointer *>(VT_VELOCITIES); + } + const flatbuffers::Vector *normalised_segments() const { + return GetPointer *>(VT_NORMALISED_SEGMENTS); + } + const flatbuffers::Vector *mesh_segments() const { + return GetPointer *>(VT_MESH_SEGMENTS); + } + const TEN::Save::Vector3 *position() const { + return GetStruct(VT_POSITION); + } + const flatbuffers::Vector *coords() const { + return GetPointer *>(VT_COORDS); + } + int32_t segment_length() const { + return GetField(VT_SEGMENT_LENGTH, 0); + } + int32_t active() const { + return GetField(VT_ACTIVE, 0); + } + int32_t coiled() const { + return GetField(VT_COILED, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_SEGMENTS) && + verifier.VerifyVector(segments()) && + VerifyOffset(verifier, VT_VELOCITIES) && + verifier.VerifyVector(velocities()) && + VerifyOffset(verifier, VT_NORMALISED_SEGMENTS) && + verifier.VerifyVector(normalised_segments()) && + VerifyOffset(verifier, VT_MESH_SEGMENTS) && + verifier.VerifyVector(mesh_segments()) && + VerifyField(verifier, VT_POSITION) && + VerifyOffset(verifier, VT_COORDS) && + verifier.VerifyVector(coords()) && + VerifyField(verifier, VT_SEGMENT_LENGTH) && + VerifyField(verifier, VT_ACTIVE) && + VerifyField(verifier, VT_COILED) && + verifier.EndTable(); + } + RopeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(RopeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const RopeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct RopeBuilder { + typedef Rope Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_segments(flatbuffers::Offset> segments) { + fbb_.AddOffset(Rope::VT_SEGMENTS, segments); + } + void add_velocities(flatbuffers::Offset> velocities) { + fbb_.AddOffset(Rope::VT_VELOCITIES, velocities); + } + void add_normalised_segments(flatbuffers::Offset> normalised_segments) { + fbb_.AddOffset(Rope::VT_NORMALISED_SEGMENTS, normalised_segments); + } + void add_mesh_segments(flatbuffers::Offset> mesh_segments) { + fbb_.AddOffset(Rope::VT_MESH_SEGMENTS, mesh_segments); + } + void add_position(const TEN::Save::Vector3 *position) { + fbb_.AddStruct(Rope::VT_POSITION, position); + } + void add_coords(flatbuffers::Offset> coords) { + fbb_.AddOffset(Rope::VT_COORDS, coords); + } + void add_segment_length(int32_t segment_length) { + fbb_.AddElement(Rope::VT_SEGMENT_LENGTH, segment_length, 0); + } + void add_active(int32_t active) { + fbb_.AddElement(Rope::VT_ACTIVE, active, 0); + } + void add_coiled(int32_t coiled) { + fbb_.AddElement(Rope::VT_COILED, coiled, 0); + } + explicit RopeBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateRope( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset> segments = 0, + flatbuffers::Offset> velocities = 0, + flatbuffers::Offset> normalised_segments = 0, + flatbuffers::Offset> mesh_segments = 0, + const TEN::Save::Vector3 *position = 0, + flatbuffers::Offset> coords = 0, + int32_t segment_length = 0, + int32_t active = 0, + int32_t coiled = 0) { + RopeBuilder builder_(_fbb); + builder_.add_coiled(coiled); + builder_.add_active(active); + builder_.add_segment_length(segment_length); + builder_.add_coords(coords); + builder_.add_position(position); + builder_.add_mesh_segments(mesh_segments); + builder_.add_normalised_segments(normalised_segments); + builder_.add_velocities(velocities); + builder_.add_segments(segments); + return builder_.Finish(); +} + +struct Rope::Traits { + using type = Rope; + static auto constexpr Create = CreateRope; +}; + +inline flatbuffers::Offset CreateRopeDirect( + flatbuffers::FlatBufferBuilder &_fbb, + const std::vector *segments = nullptr, + const std::vector *velocities = nullptr, + const std::vector *normalised_segments = nullptr, + const std::vector *mesh_segments = nullptr, + const TEN::Save::Vector3 *position = 0, + const std::vector *coords = nullptr, + int32_t segment_length = 0, + int32_t active = 0, + int32_t coiled = 0) { + auto segments__ = segments ? _fbb.CreateVectorOfStructs(*segments) : 0; + auto velocities__ = velocities ? _fbb.CreateVectorOfStructs(*velocities) : 0; + auto normalised_segments__ = normalised_segments ? _fbb.CreateVectorOfStructs(*normalised_segments) : 0; + auto mesh_segments__ = mesh_segments ? _fbb.CreateVectorOfStructs(*mesh_segments) : 0; + auto coords__ = coords ? _fbb.CreateVectorOfStructs(*coords) : 0; + return TEN::Save::CreateRope( + _fbb, + segments__, + velocities__, + normalised_segments__, + mesh_segments__, + position, + coords__, + segment_length, + active, + coiled); +} + +flatbuffers::Offset CreateRope(flatbuffers::FlatBufferBuilder &_fbb, const RopeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct PendulumT : public flatbuffers::NativeTable { + typedef Pendulum TableType; + std::unique_ptr position{}; + std::unique_ptr velocity{}; + int32_t node = 0; +}; + +struct Pendulum FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef PendulumT NativeTableType; + typedef PendulumBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_POSITION = 4, + VT_VELOCITY = 6, + VT_NODE = 8 + }; + const TEN::Save::Vector3 *position() const { + return GetStruct(VT_POSITION); + } + const TEN::Save::Vector3 *velocity() const { + return GetStruct(VT_VELOCITY); + } + int32_t node() const { + return GetField(VT_NODE, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_POSITION) && + VerifyField(verifier, VT_VELOCITY) && + VerifyField(verifier, VT_NODE) && + verifier.EndTable(); + } + PendulumT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(PendulumT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const PendulumT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct PendulumBuilder { + typedef Pendulum Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_position(const TEN::Save::Vector3 *position) { + fbb_.AddStruct(Pendulum::VT_POSITION, position); + } + void add_velocity(const TEN::Save::Vector3 *velocity) { + fbb_.AddStruct(Pendulum::VT_VELOCITY, velocity); + } + void add_node(int32_t node) { + fbb_.AddElement(Pendulum::VT_NODE, node, 0); + } + explicit PendulumBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreatePendulum( + flatbuffers::FlatBufferBuilder &_fbb, + const TEN::Save::Vector3 *position = 0, + const TEN::Save::Vector3 *velocity = 0, + int32_t node = 0) { + PendulumBuilder builder_(_fbb); + builder_.add_node(node); + builder_.add_velocity(velocity); + builder_.add_position(position); + return builder_.Finish(); +} + +struct Pendulum::Traits { + using type = Pendulum; + static auto constexpr Create = CreatePendulum; +}; + +flatbuffers::Offset CreatePendulum(flatbuffers::FlatBufferBuilder &_fbb, const PendulumT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct EventSetCallCountersT : public flatbuffers::NativeTable { + typedef EventSetCallCounters TableType; + int32_t on_enter = 0; + int32_t on_inside = 0; + int32_t on_leave = 0; +}; + +struct EventSetCallCounters FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef EventSetCallCountersT NativeTableType; + typedef EventSetCallCountersBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_ON_ENTER = 4, + VT_ON_INSIDE = 6, + VT_ON_LEAVE = 8 + }; + int32_t on_enter() const { + return GetField(VT_ON_ENTER, 0); + } + int32_t on_inside() const { + return GetField(VT_ON_INSIDE, 0); + } + int32_t on_leave() const { + return GetField(VT_ON_LEAVE, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_ON_ENTER) && + VerifyField(verifier, VT_ON_INSIDE) && + VerifyField(verifier, VT_ON_LEAVE) && + verifier.EndTable(); + } + EventSetCallCountersT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(EventSetCallCountersT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const EventSetCallCountersT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct EventSetCallCountersBuilder { + typedef EventSetCallCounters Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_on_enter(int32_t on_enter) { + fbb_.AddElement(EventSetCallCounters::VT_ON_ENTER, on_enter, 0); + } + void add_on_inside(int32_t on_inside) { + fbb_.AddElement(EventSetCallCounters::VT_ON_INSIDE, on_inside, 0); + } + void add_on_leave(int32_t on_leave) { + fbb_.AddElement(EventSetCallCounters::VT_ON_LEAVE, on_leave, 0); + } + explicit EventSetCallCountersBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateEventSetCallCounters( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t on_enter = 0, + int32_t on_inside = 0, + int32_t on_leave = 0) { + EventSetCallCountersBuilder builder_(_fbb); + builder_.add_on_leave(on_leave); + builder_.add_on_inside(on_inside); + builder_.add_on_enter(on_enter); + return builder_.Finish(); +} + +struct EventSetCallCounters::Traits { + using type = EventSetCallCounters; + static auto constexpr Create = CreateEventSetCallCounters; +}; + +flatbuffers::Offset CreateEventSetCallCounters(flatbuffers::FlatBufferBuilder &_fbb, const EventSetCallCountersT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct VolumeStateT : public flatbuffers::NativeTable { + typedef VolumeState TableType; + int32_t status = 0; + int32_t activator = 0; + int32_t timestamp = 0; +}; + +struct VolumeState FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef VolumeStateT NativeTableType; + typedef VolumeStateBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_STATUS = 4, + VT_ACTIVATOR = 6, + VT_TIMESTAMP = 8 + }; + int32_t status() const { + return GetField(VT_STATUS, 0); + } + int32_t activator() const { + return GetField(VT_ACTIVATOR, 0); + } + int32_t timestamp() const { + return GetField(VT_TIMESTAMP, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_STATUS) && + VerifyField(verifier, VT_ACTIVATOR) && + VerifyField(verifier, VT_TIMESTAMP) && + verifier.EndTable(); + } + VolumeStateT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(VolumeStateT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const VolumeStateT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct VolumeStateBuilder { + typedef VolumeState Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_status(int32_t status) { + fbb_.AddElement(VolumeState::VT_STATUS, status, 0); + } + void add_activator(int32_t activator) { + fbb_.AddElement(VolumeState::VT_ACTIVATOR, activator, 0); + } + void add_timestamp(int32_t timestamp) { + fbb_.AddElement(VolumeState::VT_TIMESTAMP, timestamp, 0); + } + explicit VolumeStateBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateVolumeState( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t status = 0, + int32_t activator = 0, + int32_t timestamp = 0) { + VolumeStateBuilder builder_(_fbb); + builder_.add_timestamp(timestamp); + builder_.add_activator(activator); + builder_.add_status(status); + return builder_.Finish(); +} + +struct VolumeState::Traits { + using type = VolumeState; + static auto constexpr Create = CreateVolumeState; +}; + +flatbuffers::Offset CreateVolumeState(flatbuffers::FlatBufferBuilder &_fbb, const VolumeStateT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct VolumeT : public flatbuffers::NativeTable { + typedef Volume TableType; + std::string name{}; + int32_t number = 0; + int32_t room_number = 0; + bool enabled = false; + std::unique_ptr position{}; + std::unique_ptr rotation{}; + std::unique_ptr scale{}; + std::vector> queue{}; +}; + +struct Volume FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef VolumeT NativeTableType; + typedef VolumeBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_NAME = 4, + VT_NUMBER = 6, + VT_ROOM_NUMBER = 8, + VT_ENABLED = 10, + VT_POSITION = 12, + VT_ROTATION = 14, + VT_SCALE = 16, + VT_QUEUE = 18 + }; + const flatbuffers::String *name() const { + return GetPointer(VT_NAME); + } + int32_t number() const { + return GetField(VT_NUMBER, 0); + } + int32_t room_number() const { + return GetField(VT_ROOM_NUMBER, 0); + } + bool enabled() const { + return GetField(VT_ENABLED, 0) != 0; + } + const TEN::Save::Vector3 *position() const { + return GetStruct(VT_POSITION); + } + const TEN::Save::Vector4 *rotation() const { + return GetStruct(VT_ROTATION); + } + const TEN::Save::Vector3 *scale() const { + return GetStruct(VT_SCALE); + } + const flatbuffers::Vector> *queue() const { + return GetPointer> *>(VT_QUEUE); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_NAME) && + verifier.VerifyString(name()) && + VerifyField(verifier, VT_NUMBER) && + VerifyField(verifier, VT_ROOM_NUMBER) && + VerifyField(verifier, VT_ENABLED) && + VerifyField(verifier, VT_POSITION) && + VerifyField(verifier, VT_ROTATION) && + VerifyField(verifier, VT_SCALE) && + VerifyOffset(verifier, VT_QUEUE) && + verifier.VerifyVector(queue()) && + verifier.VerifyVectorOfTables(queue()) && + verifier.EndTable(); + } + VolumeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(VolumeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const VolumeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct VolumeBuilder { + typedef Volume Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_name(flatbuffers::Offset name) { + fbb_.AddOffset(Volume::VT_NAME, name); + } + void add_number(int32_t number) { + fbb_.AddElement(Volume::VT_NUMBER, number, 0); + } + void add_room_number(int32_t room_number) { + fbb_.AddElement(Volume::VT_ROOM_NUMBER, room_number, 0); + } + void add_enabled(bool enabled) { + fbb_.AddElement(Volume::VT_ENABLED, static_cast(enabled), 0); + } + void add_position(const TEN::Save::Vector3 *position) { + fbb_.AddStruct(Volume::VT_POSITION, position); + } + void add_rotation(const TEN::Save::Vector4 *rotation) { + fbb_.AddStruct(Volume::VT_ROTATION, rotation); + } + void add_scale(const TEN::Save::Vector3 *scale) { + fbb_.AddStruct(Volume::VT_SCALE, scale); + } + void add_queue(flatbuffers::Offset>> queue) { + fbb_.AddOffset(Volume::VT_QUEUE, queue); + } + explicit VolumeBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateVolume( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset name = 0, + int32_t number = 0, + int32_t room_number = 0, + bool enabled = false, + const TEN::Save::Vector3 *position = 0, + const TEN::Save::Vector4 *rotation = 0, + const TEN::Save::Vector3 *scale = 0, + flatbuffers::Offset>> queue = 0) { + VolumeBuilder builder_(_fbb); + builder_.add_queue(queue); + builder_.add_scale(scale); + builder_.add_rotation(rotation); + builder_.add_position(position); + builder_.add_room_number(room_number); + builder_.add_number(number); + builder_.add_name(name); + builder_.add_enabled(enabled); + return builder_.Finish(); +} + +struct Volume::Traits { + using type = Volume; + static auto constexpr Create = CreateVolume; +}; + +inline flatbuffers::Offset CreateVolumeDirect( + flatbuffers::FlatBufferBuilder &_fbb, + const char *name = nullptr, + int32_t number = 0, + int32_t room_number = 0, + bool enabled = false, + const TEN::Save::Vector3 *position = 0, + const TEN::Save::Vector4 *rotation = 0, + const TEN::Save::Vector3 *scale = 0, + const std::vector> *queue = nullptr) { + auto name__ = name ? _fbb.CreateString(name) : 0; + auto queue__ = queue ? _fbb.CreateVector>(*queue) : 0; + return TEN::Save::CreateVolume( + _fbb, + name__, + number, + room_number, + enabled, + position, + rotation, + scale, + queue__); +} + +flatbuffers::Offset CreateVolume(flatbuffers::FlatBufferBuilder &_fbb, const VolumeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct ScriptTableT : public flatbuffers::NativeTable { + typedef ScriptTable TableType; + std::vector keys_vals{}; +}; + +struct ScriptTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef ScriptTableT NativeTableType; + typedef ScriptTableBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_KEYS_VALS = 4 + }; + const flatbuffers::Vector *keys_vals() const { + return GetPointer *>(VT_KEYS_VALS); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_KEYS_VALS) && + verifier.VerifyVector(keys_vals()) && + verifier.EndTable(); + } + ScriptTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(ScriptTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const ScriptTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct ScriptTableBuilder { + typedef ScriptTable Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_keys_vals(flatbuffers::Offset> keys_vals) { + fbb_.AddOffset(ScriptTable::VT_KEYS_VALS, keys_vals); + } + explicit ScriptTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateScriptTable( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset> keys_vals = 0) { + ScriptTableBuilder builder_(_fbb); + builder_.add_keys_vals(keys_vals); + return builder_.Finish(); +} + +struct ScriptTable::Traits { + using type = ScriptTable; + static auto constexpr Create = CreateScriptTable; +}; + +inline flatbuffers::Offset CreateScriptTableDirect( + flatbuffers::FlatBufferBuilder &_fbb, + const std::vector *keys_vals = nullptr) { + auto keys_vals__ = keys_vals ? _fbb.CreateVectorOfStructs(*keys_vals) : 0; + return TEN::Save::CreateScriptTable( + _fbb, + keys_vals__); +} + +flatbuffers::Offset CreateScriptTable(flatbuffers::FlatBufferBuilder &_fbb, const ScriptTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct stringTableT : public flatbuffers::NativeTable { + typedef stringTable TableType; + std::string str{}; +}; + +struct stringTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef stringTableT NativeTableType; + typedef stringTableBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_STR = 4 + }; + const flatbuffers::String *str() const { + return GetPointer(VT_STR); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_STR) && + verifier.VerifyString(str()) && + verifier.EndTable(); + } + stringTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(stringTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const stringTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct stringTableBuilder { + typedef stringTable Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_str(flatbuffers::Offset str) { + fbb_.AddOffset(stringTable::VT_STR, str); + } + explicit stringTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreatestringTable( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset str = 0) { + stringTableBuilder builder_(_fbb); + builder_.add_str(str); + return builder_.Finish(); +} + +struct stringTable::Traits { + using type = stringTable; + static auto constexpr Create = CreatestringTable; +}; + +inline flatbuffers::Offset CreatestringTableDirect( + flatbuffers::FlatBufferBuilder &_fbb, + const char *str = nullptr) { + auto str__ = str ? _fbb.CreateString(str) : 0; + return TEN::Save::CreatestringTable( + _fbb, + str__); +} + +flatbuffers::Offset CreatestringTable(flatbuffers::FlatBufferBuilder &_fbb, const stringTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct doubleTableT : public flatbuffers::NativeTable { + typedef doubleTable TableType; + double scalar = 0.0; +}; + +struct doubleTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef doubleTableT NativeTableType; + typedef doubleTableBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_SCALAR = 4 + }; + double scalar() const { + return GetField(VT_SCALAR, 0.0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_SCALAR) && + verifier.EndTable(); + } + doubleTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(doubleTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const doubleTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct doubleTableBuilder { + typedef doubleTable Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_scalar(double scalar) { + fbb_.AddElement(doubleTable::VT_SCALAR, scalar, 0.0); + } + explicit doubleTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreatedoubleTable( + flatbuffers::FlatBufferBuilder &_fbb, + double scalar = 0.0) { + doubleTableBuilder builder_(_fbb); + builder_.add_scalar(scalar); + return builder_.Finish(); +} + +struct doubleTable::Traits { + using type = doubleTable; + static auto constexpr Create = CreatedoubleTable; +}; + +flatbuffers::Offset CreatedoubleTable(flatbuffers::FlatBufferBuilder &_fbb, const doubleTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct boolTableT : public flatbuffers::NativeTable { + typedef boolTable TableType; + bool scalar = false; +}; + +struct boolTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef boolTableT NativeTableType; + typedef boolTableBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_SCALAR = 4 + }; + bool scalar() const { + return GetField(VT_SCALAR, 0) != 0; + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_SCALAR) && + verifier.EndTable(); + } + boolTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(boolTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const boolTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct boolTableBuilder { + typedef boolTable Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_scalar(bool scalar) { + fbb_.AddElement(boolTable::VT_SCALAR, static_cast(scalar), 0); + } + explicit boolTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateboolTable( + flatbuffers::FlatBufferBuilder &_fbb, + bool scalar = false) { + boolTableBuilder builder_(_fbb); + builder_.add_scalar(scalar); + return builder_.Finish(); +} + +struct boolTable::Traits { + using type = boolTable; + static auto constexpr Create = CreateboolTable; +}; + +flatbuffers::Offset CreateboolTable(flatbuffers::FlatBufferBuilder &_fbb, const boolTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct vec2TableT : public flatbuffers::NativeTable { + typedef vec2Table TableType; + std::unique_ptr vec{}; +}; + +struct vec2Table FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef vec2TableT NativeTableType; + typedef vec2TableBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_VEC = 4 + }; + const TEN::Save::Vector2 *vec() const { + return GetStruct(VT_VEC); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_VEC) && + verifier.EndTable(); + } + vec2TableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(vec2TableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const vec2TableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct vec2TableBuilder { + typedef vec2Table Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_vec(const TEN::Save::Vector2 *vec) { + fbb_.AddStruct(vec2Table::VT_VEC, vec); + } + explicit vec2TableBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset Createvec2Table( + flatbuffers::FlatBufferBuilder &_fbb, + const TEN::Save::Vector2 *vec = 0) { + vec2TableBuilder builder_(_fbb); + builder_.add_vec(vec); + return builder_.Finish(); +} + +struct vec2Table::Traits { + using type = vec2Table; + static auto constexpr Create = Createvec2Table; +}; + +flatbuffers::Offset Createvec2Table(flatbuffers::FlatBufferBuilder &_fbb, const vec2TableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct vec3TableT : public flatbuffers::NativeTable { + typedef vec3Table TableType; + std::unique_ptr vec{}; +}; + +struct vec3Table FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef vec3TableT NativeTableType; + typedef vec3TableBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_VEC = 4 + }; + const TEN::Save::Vector3 *vec() const { + return GetStruct(VT_VEC); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_VEC) && + verifier.EndTable(); + } + vec3TableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(vec3TableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const vec3TableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct vec3TableBuilder { + typedef vec3Table Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_vec(const TEN::Save::Vector3 *vec) { + fbb_.AddStruct(vec3Table::VT_VEC, vec); + } + explicit vec3TableBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset Createvec3Table( + flatbuffers::FlatBufferBuilder &_fbb, + const TEN::Save::Vector3 *vec = 0) { + vec3TableBuilder builder_(_fbb); + builder_.add_vec(vec); + return builder_.Finish(); +} + +struct vec3Table::Traits { + using type = vec3Table; + static auto constexpr Create = Createvec3Table; +}; + +flatbuffers::Offset Createvec3Table(flatbuffers::FlatBufferBuilder &_fbb, const vec3TableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct rotationTableT : public flatbuffers::NativeTable { + typedef rotationTable TableType; + std::unique_ptr vec{}; +}; + +struct rotationTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef rotationTableT NativeTableType; + typedef rotationTableBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_VEC = 4 + }; + const TEN::Save::Vector3 *vec() const { + return GetStruct(VT_VEC); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_VEC) && + verifier.EndTable(); + } + rotationTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(rotationTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const rotationTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct rotationTableBuilder { + typedef rotationTable Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_vec(const TEN::Save::Vector3 *vec) { + fbb_.AddStruct(rotationTable::VT_VEC, vec); + } + explicit rotationTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreaterotationTable( + flatbuffers::FlatBufferBuilder &_fbb, + const TEN::Save::Vector3 *vec = 0) { + rotationTableBuilder builder_(_fbb); + builder_.add_vec(vec); + return builder_.Finish(); +} + +struct rotationTable::Traits { + using type = rotationTable; + static auto constexpr Create = CreaterotationTable; +}; + +flatbuffers::Offset CreaterotationTable(flatbuffers::FlatBufferBuilder &_fbb, const rotationTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct colorTableT : public flatbuffers::NativeTable { + typedef colorTable TableType; + uint32_t color = 0; +}; + +struct colorTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef colorTableT NativeTableType; + typedef colorTableBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_COLOR = 4 + }; + uint32_t color() const { + return GetField(VT_COLOR, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_COLOR) && + verifier.EndTable(); + } + colorTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(colorTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const colorTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct colorTableBuilder { + typedef colorTable Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_color(uint32_t color) { + fbb_.AddElement(colorTable::VT_COLOR, color, 0); + } + explicit colorTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreatecolorTable( + flatbuffers::FlatBufferBuilder &_fbb, + uint32_t color = 0) { + colorTableBuilder builder_(_fbb); + builder_.add_color(color); + return builder_.Finish(); +} + +struct colorTable::Traits { + using type = colorTable; + static auto constexpr Create = CreatecolorTable; +}; + +flatbuffers::Offset CreatecolorTable(flatbuffers::FlatBufferBuilder &_fbb, const colorTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct funcNameTableT : public flatbuffers::NativeTable { + typedef funcNameTable TableType; + std::string str{}; +}; + +struct funcNameTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef funcNameTableT NativeTableType; + typedef funcNameTableBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_STR = 4 + }; + const flatbuffers::String *str() const { + return GetPointer(VT_STR); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_STR) && + verifier.VerifyString(str()) && + verifier.EndTable(); + } + funcNameTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(funcNameTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const funcNameTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct funcNameTableBuilder { + typedef funcNameTable Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_str(flatbuffers::Offset str) { + fbb_.AddOffset(funcNameTable::VT_STR, str); + } + explicit funcNameTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreatefuncNameTable( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset str = 0) { + funcNameTableBuilder builder_(_fbb); + builder_.add_str(str); + return builder_.Finish(); +} + +struct funcNameTable::Traits { + using type = funcNameTable; + static auto constexpr Create = CreatefuncNameTable; +}; + +inline flatbuffers::Offset CreatefuncNameTableDirect( + flatbuffers::FlatBufferBuilder &_fbb, + const char *str = nullptr) { + auto str__ = str ? _fbb.CreateString(str) : 0; + return TEN::Save::CreatefuncNameTable( + _fbb, + str__); +} + +flatbuffers::Offset CreatefuncNameTable(flatbuffers::FlatBufferBuilder &_fbb, const funcNameTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct UnionTableT : public flatbuffers::NativeTable { + typedef UnionTable TableType; + TEN::Save::VarUnionUnion u{}; +}; + +struct UnionTable FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef UnionTableT NativeTableType; + typedef UnionTableBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_U_TYPE = 4, + VT_U = 6 + }; + TEN::Save::VarUnion u_type() const { + return static_cast(GetField(VT_U_TYPE, 0)); + } + const void *u() const { + return GetPointer(VT_U); + } + template const T *u_as() const; + const TEN::Save::stringTable *u_as_str() const { + return u_type() == TEN::Save::VarUnion::str ? static_cast(u()) : nullptr; + } + const TEN::Save::ScriptTable *u_as_tab() const { + return u_type() == TEN::Save::VarUnion::tab ? static_cast(u()) : nullptr; + } + const TEN::Save::doubleTable *u_as_num() const { + return u_type() == TEN::Save::VarUnion::num ? static_cast(u()) : nullptr; + } + const TEN::Save::boolTable *u_as_boolean() const { + return u_type() == TEN::Save::VarUnion::boolean ? static_cast(u()) : nullptr; + } + const TEN::Save::vec2Table *u_as_vec2() const { + return u_type() == TEN::Save::VarUnion::vec2 ? static_cast(u()) : nullptr; + } + const TEN::Save::vec3Table *u_as_vec3() const { + return u_type() == TEN::Save::VarUnion::vec3 ? static_cast(u()) : nullptr; + } + const TEN::Save::rotationTable *u_as_rotation() const { + return u_type() == TEN::Save::VarUnion::rotation ? static_cast(u()) : nullptr; + } + const TEN::Save::colorTable *u_as_color() const { + return u_type() == TEN::Save::VarUnion::color ? static_cast(u()) : nullptr; + } + const TEN::Save::funcNameTable *u_as_funcName() const { + return u_type() == TEN::Save::VarUnion::funcName ? static_cast(u()) : nullptr; + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_U_TYPE) && + VerifyOffset(verifier, VT_U) && + VerifyVarUnion(verifier, u(), u_type()) && + verifier.EndTable(); + } + UnionTableT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(UnionTableT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnionTableT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +template<> inline const TEN::Save::stringTable *UnionTable::u_as() const { + return u_as_str(); +} + +template<> inline const TEN::Save::ScriptTable *UnionTable::u_as() const { + return u_as_tab(); +} + +template<> inline const TEN::Save::doubleTable *UnionTable::u_as() const { + return u_as_num(); +} + +template<> inline const TEN::Save::boolTable *UnionTable::u_as() const { + return u_as_boolean(); +} + +template<> inline const TEN::Save::vec2Table *UnionTable::u_as() const { + return u_as_vec2(); +} + +template<> inline const TEN::Save::vec3Table *UnionTable::u_as() const { + return u_as_vec3(); +} + +template<> inline const TEN::Save::rotationTable *UnionTable::u_as() const { + return u_as_rotation(); +} + +template<> inline const TEN::Save::colorTable *UnionTable::u_as() const { + return u_as_color(); +} + +template<> inline const TEN::Save::funcNameTable *UnionTable::u_as() const { + return u_as_funcName(); +} + +struct UnionTableBuilder { + typedef UnionTable Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_u_type(TEN::Save::VarUnion u_type) { + fbb_.AddElement(UnionTable::VT_U_TYPE, static_cast(u_type), 0); + } + void add_u(flatbuffers::Offset u) { + fbb_.AddOffset(UnionTable::VT_U, u); + } + explicit UnionTableBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateUnionTable( + flatbuffers::FlatBufferBuilder &_fbb, + TEN::Save::VarUnion u_type = TEN::Save::VarUnion::NONE, + flatbuffers::Offset u = 0) { + UnionTableBuilder builder_(_fbb); + builder_.add_u(u); + builder_.add_u_type(u_type); + return builder_.Finish(); +} + +struct UnionTable::Traits { + using type = UnionTable; + static auto constexpr Create = CreateUnionTable; +}; + +flatbuffers::Offset CreateUnionTable(flatbuffers::FlatBufferBuilder &_fbb, const UnionTableT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct UnionVecT : public flatbuffers::NativeTable { + typedef UnionVec TableType; + std::vector> members{}; +}; + +struct UnionVec FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef UnionVecT NativeTableType; + typedef UnionVecBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_MEMBERS = 4 + }; + const flatbuffers::Vector> *members() const { + return GetPointer> *>(VT_MEMBERS); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_MEMBERS) && + verifier.VerifyVector(members()) && + verifier.VerifyVectorOfTables(members()) && + verifier.EndTable(); + } + UnionVecT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(UnionVecT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnionVecT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct UnionVecBuilder { + typedef UnionVec Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_members(flatbuffers::Offset>> members) { + fbb_.AddOffset(UnionVec::VT_MEMBERS, members); + } + explicit UnionVecBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateUnionVec( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset>> members = 0) { + UnionVecBuilder builder_(_fbb); + builder_.add_members(members); + return builder_.Finish(); +} + +struct UnionVec::Traits { + using type = UnionVec; + static auto constexpr Create = CreateUnionVec; +}; + +inline flatbuffers::Offset CreateUnionVecDirect( + flatbuffers::FlatBufferBuilder &_fbb, + const std::vector> *members = nullptr) { + auto members__ = members ? _fbb.CreateVector>(*members) : 0; + return TEN::Save::CreateUnionVec( + _fbb, + members__); +} + +flatbuffers::Offset CreateUnionVec(flatbuffers::FlatBufferBuilder &_fbb, const UnionVecT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct SaveGameHeaderT : public flatbuffers::NativeTable { + typedef SaveGameHeader TableType; + std::string level_name{}; + int32_t days = 0; + int32_t hours = 0; + int32_t minutes = 0; + int32_t seconds = 0; + int32_t level = 0; + int32_t timer = 0; + int32_t count = 0; +}; + +struct SaveGameHeader FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef SaveGameHeaderT NativeTableType; + typedef SaveGameHeaderBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_LEVEL_NAME = 4, + VT_DAYS = 6, + VT_HOURS = 8, + VT_MINUTES = 10, + VT_SECONDS = 12, + VT_LEVEL = 14, + VT_TIMER = 16, + VT_COUNT = 18 + }; + const flatbuffers::String *level_name() const { + return GetPointer(VT_LEVEL_NAME); + } + int32_t days() const { + return GetField(VT_DAYS, 0); + } + int32_t hours() const { + return GetField(VT_HOURS, 0); + } + int32_t minutes() const { + return GetField(VT_MINUTES, 0); + } + int32_t seconds() const { + return GetField(VT_SECONDS, 0); + } + int32_t level() const { + return GetField(VT_LEVEL, 0); + } + int32_t timer() const { + return GetField(VT_TIMER, 0); + } + int32_t count() const { + return GetField(VT_COUNT, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_LEVEL_NAME) && + verifier.VerifyString(level_name()) && + VerifyField(verifier, VT_DAYS) && + VerifyField(verifier, VT_HOURS) && + VerifyField(verifier, VT_MINUTES) && + VerifyField(verifier, VT_SECONDS) && + VerifyField(verifier, VT_LEVEL) && + VerifyField(verifier, VT_TIMER) && + VerifyField(verifier, VT_COUNT) && + verifier.EndTable(); + } + SaveGameHeaderT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(SaveGameHeaderT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameHeaderT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct SaveGameHeaderBuilder { + typedef SaveGameHeader Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_level_name(flatbuffers::Offset level_name) { + fbb_.AddOffset(SaveGameHeader::VT_LEVEL_NAME, level_name); + } + void add_days(int32_t days) { + fbb_.AddElement(SaveGameHeader::VT_DAYS, days, 0); + } + void add_hours(int32_t hours) { + fbb_.AddElement(SaveGameHeader::VT_HOURS, hours, 0); + } + void add_minutes(int32_t minutes) { + fbb_.AddElement(SaveGameHeader::VT_MINUTES, minutes, 0); + } + void add_seconds(int32_t seconds) { + fbb_.AddElement(SaveGameHeader::VT_SECONDS, seconds, 0); + } + void add_level(int32_t level) { + fbb_.AddElement(SaveGameHeader::VT_LEVEL, level, 0); + } + void add_timer(int32_t timer) { + fbb_.AddElement(SaveGameHeader::VT_TIMER, timer, 0); + } + void add_count(int32_t count) { + fbb_.AddElement(SaveGameHeader::VT_COUNT, count, 0); + } + explicit SaveGameHeaderBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateSaveGameHeader( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset level_name = 0, + int32_t days = 0, + int32_t hours = 0, + int32_t minutes = 0, + int32_t seconds = 0, + int32_t level = 0, + int32_t timer = 0, + int32_t count = 0) { + SaveGameHeaderBuilder builder_(_fbb); + builder_.add_count(count); + builder_.add_timer(timer); + builder_.add_level(level); + builder_.add_seconds(seconds); + builder_.add_minutes(minutes); + builder_.add_hours(hours); + builder_.add_days(days); + builder_.add_level_name(level_name); + return builder_.Finish(); +} + +struct SaveGameHeader::Traits { + using type = SaveGameHeader; + static auto constexpr Create = CreateSaveGameHeader; +}; + +inline flatbuffers::Offset CreateSaveGameHeaderDirect( + flatbuffers::FlatBufferBuilder &_fbb, + const char *level_name = nullptr, + int32_t days = 0, + int32_t hours = 0, + int32_t minutes = 0, + int32_t seconds = 0, + int32_t level = 0, + int32_t timer = 0, + int32_t count = 0) { + auto level_name__ = level_name ? _fbb.CreateString(level_name) : 0; + return TEN::Save::CreateSaveGameHeader( + _fbb, + level_name__, + days, + hours, + minutes, + seconds, + level, + timer, + count); +} + +flatbuffers::Offset CreateSaveGameHeader(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameHeaderT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct SaveGameStatisticsT : public flatbuffers::NativeTable { + typedef SaveGameStatistics TableType; + int32_t ammo_hits = 0; + int32_t ammo_used = 0; + int32_t medipacks_used = 0; + int32_t distance = 0; + int32_t kills = 0; + int32_t secrets = 0; + int32_t timer = 0; +}; + +struct SaveGameStatistics FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef SaveGameStatisticsT NativeTableType; + typedef SaveGameStatisticsBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_AMMO_HITS = 4, + VT_AMMO_USED = 6, + VT_MEDIPACKS_USED = 8, + VT_DISTANCE = 10, + VT_KILLS = 12, + VT_SECRETS = 14, + VT_TIMER = 16 + }; + int32_t ammo_hits() const { + return GetField(VT_AMMO_HITS, 0); + } + int32_t ammo_used() const { + return GetField(VT_AMMO_USED, 0); + } + int32_t medipacks_used() const { + return GetField(VT_MEDIPACKS_USED, 0); + } + int32_t distance() const { + return GetField(VT_DISTANCE, 0); + } + int32_t kills() const { + return GetField(VT_KILLS, 0); + } + int32_t secrets() const { + return GetField(VT_SECRETS, 0); + } + int32_t timer() const { + return GetField(VT_TIMER, 0); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_AMMO_HITS) && + VerifyField(verifier, VT_AMMO_USED) && + VerifyField(verifier, VT_MEDIPACKS_USED) && + VerifyField(verifier, VT_DISTANCE) && + VerifyField(verifier, VT_KILLS) && + VerifyField(verifier, VT_SECRETS) && + VerifyField(verifier, VT_TIMER) && + verifier.EndTable(); + } + SaveGameStatisticsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(SaveGameStatisticsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameStatisticsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct SaveGameStatisticsBuilder { + typedef SaveGameStatistics Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_ammo_hits(int32_t ammo_hits) { + fbb_.AddElement(SaveGameStatistics::VT_AMMO_HITS, ammo_hits, 0); + } + void add_ammo_used(int32_t ammo_used) { + fbb_.AddElement(SaveGameStatistics::VT_AMMO_USED, ammo_used, 0); + } + void add_medipacks_used(int32_t medipacks_used) { + fbb_.AddElement(SaveGameStatistics::VT_MEDIPACKS_USED, medipacks_used, 0); + } + void add_distance(int32_t distance) { + fbb_.AddElement(SaveGameStatistics::VT_DISTANCE, distance, 0); + } + void add_kills(int32_t kills) { + fbb_.AddElement(SaveGameStatistics::VT_KILLS, kills, 0); + } + void add_secrets(int32_t secrets) { + fbb_.AddElement(SaveGameStatistics::VT_SECRETS, secrets, 0); + } + void add_timer(int32_t timer) { + fbb_.AddElement(SaveGameStatistics::VT_TIMER, timer, 0); + } + explicit SaveGameStatisticsBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateSaveGameStatistics( + flatbuffers::FlatBufferBuilder &_fbb, + int32_t ammo_hits = 0, + int32_t ammo_used = 0, + int32_t medipacks_used = 0, + int32_t distance = 0, + int32_t kills = 0, + int32_t secrets = 0, + int32_t timer = 0) { + SaveGameStatisticsBuilder builder_(_fbb); + builder_.add_timer(timer); + builder_.add_secrets(secrets); + builder_.add_kills(kills); + builder_.add_distance(distance); + builder_.add_medipacks_used(medipacks_used); + builder_.add_ammo_used(ammo_used); + builder_.add_ammo_hits(ammo_hits); + return builder_.Finish(); +} + +struct SaveGameStatistics::Traits { + using type = SaveGameStatistics; + static auto constexpr Create = CreateSaveGameStatistics; +}; + +flatbuffers::Offset CreateSaveGameStatistics(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameStatisticsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct SaveGameT : public flatbuffers::NativeTable { + typedef SaveGame TableType; + std::unique_ptr header{}; + std::unique_ptr game{}; + std::unique_ptr level{}; + std::unique_ptr lara{}; + std::vector> rooms{}; + std::vector> items{}; + int32_t next_item_free = 0; + int32_t next_item_active = 0; + std::vector room_items{}; + std::vector> fxinfos{}; + int32_t next_fx_free = 0; + int32_t next_fx_active = 0; + std::vector> fixed_cameras{}; + std::vector> sinks{}; + std::vector> static_meshes{}; + std::vector> flyby_cameras{}; + std::vector> particles{}; + std::vector> rats{}; + std::vector> spiders{}; + std::vector> scarabs{}; + std::vector> bats{}; + std::vector flip_maps{}; + std::vector flip_stats{}; + int32_t flip_effect = 0; + int32_t flip_timer = 0; + int32_t flip_status = 0; + int16_t current_fov = 0; + std::vector action_queue{}; + std::string ambient_track{}; + uint64_t ambient_position = 0; + std::string oneshot_track{}; + uint64_t oneshot_position = 0; + std::vector cd_flags{}; + std::unique_ptr rope{}; + std::unique_ptr pendulum{}; + std::unique_ptr alternate_pendulum{}; + std::vector> volumes{}; + std::vector> call_counters{}; + std::unique_ptr script_vars{}; + std::vector callbacks_pre_start{}; + std::vector callbacks_post_start{}; + std::vector callbacks_pre_end{}; + std::vector callbacks_post_end{}; + std::vector callbacks_pre_save{}; + std::vector callbacks_post_save{}; + std::vector callbacks_pre_load{}; + std::vector callbacks_post_load{}; + std::vector callbacks_pre_control{}; + std::vector callbacks_post_control{}; +}; + +struct SaveGame FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { + typedef SaveGameT NativeTableType; + typedef SaveGameBuilder Builder; + struct Traits; + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_HEADER = 4, + VT_GAME = 6, + VT_LEVEL = 8, + VT_LARA = 10, + VT_ROOMS = 12, + VT_ITEMS = 14, + VT_NEXT_ITEM_FREE = 16, + VT_NEXT_ITEM_ACTIVE = 18, + VT_ROOM_ITEMS = 20, + VT_FXINFOS = 22, + VT_NEXT_FX_FREE = 24, + VT_NEXT_FX_ACTIVE = 26, + VT_FIXED_CAMERAS = 28, + VT_SINKS = 30, + VT_STATIC_MESHES = 32, + VT_FLYBY_CAMERAS = 34, + VT_PARTICLES = 36, + VT_RATS = 38, + VT_SPIDERS = 40, + VT_SCARABS = 42, + VT_BATS = 44, + VT_FLIP_MAPS = 46, + VT_FLIP_STATS = 48, + VT_FLIP_EFFECT = 50, + VT_FLIP_TIMER = 52, + VT_FLIP_STATUS = 54, + VT_CURRENT_FOV = 56, + VT_ACTION_QUEUE = 58, + VT_AMBIENT_TRACK = 60, + VT_AMBIENT_POSITION = 62, + VT_ONESHOT_TRACK = 64, + VT_ONESHOT_POSITION = 66, + VT_CD_FLAGS = 68, + VT_ROPE = 70, + VT_PENDULUM = 72, + VT_ALTERNATE_PENDULUM = 74, + VT_VOLUMES = 76, + VT_CALL_COUNTERS = 78, + VT_SCRIPT_VARS = 80, + VT_CALLBACKS_PRE_START = 82, + VT_CALLBACKS_POST_START = 84, + VT_CALLBACKS_PRE_END = 86, + VT_CALLBACKS_POST_END = 88, + VT_CALLBACKS_PRE_SAVE = 90, + VT_CALLBACKS_POST_SAVE = 92, + VT_CALLBACKS_PRE_LOAD = 94, + VT_CALLBACKS_POST_LOAD = 96, + VT_CALLBACKS_PRE_CONTROL = 98, + VT_CALLBACKS_POST_CONTROL = 100 + }; + const TEN::Save::SaveGameHeader *header() const { + return GetPointer(VT_HEADER); + } + const TEN::Save::SaveGameStatistics *game() const { + return GetPointer(VT_GAME); + } + const TEN::Save::SaveGameStatistics *level() const { + return GetPointer(VT_LEVEL); + } + const TEN::Save::Lara *lara() const { + return GetPointer(VT_LARA); + } + const flatbuffers::Vector> *rooms() const { + return GetPointer> *>(VT_ROOMS); + } + const flatbuffers::Vector> *items() const { + return GetPointer> *>(VT_ITEMS); + } + int32_t next_item_free() const { + return GetField(VT_NEXT_ITEM_FREE, 0); + } + int32_t next_item_active() const { + return GetField(VT_NEXT_ITEM_ACTIVE, 0); + } + const flatbuffers::Vector *room_items() const { + return GetPointer *>(VT_ROOM_ITEMS); + } + const flatbuffers::Vector> *fxinfos() const { + return GetPointer> *>(VT_FXINFOS); + } + int32_t next_fx_free() const { + return GetField(VT_NEXT_FX_FREE, 0); + } + int32_t next_fx_active() const { + return GetField(VT_NEXT_FX_ACTIVE, 0); + } + const flatbuffers::Vector> *fixed_cameras() const { + return GetPointer> *>(VT_FIXED_CAMERAS); + } + const flatbuffers::Vector> *sinks() const { + return GetPointer> *>(VT_SINKS); + } + const flatbuffers::Vector> *static_meshes() const { + return GetPointer> *>(VT_STATIC_MESHES); + } + const flatbuffers::Vector> *flyby_cameras() const { + return GetPointer> *>(VT_FLYBY_CAMERAS); + } + const flatbuffers::Vector> *particles() const { + return GetPointer> *>(VT_PARTICLES); + } + const flatbuffers::Vector> *rats() const { + return GetPointer> *>(VT_RATS); + } + const flatbuffers::Vector> *spiders() const { + return GetPointer> *>(VT_SPIDERS); + } + const flatbuffers::Vector> *scarabs() const { + return GetPointer> *>(VT_SCARABS); + } + const flatbuffers::Vector> *bats() const { + return GetPointer> *>(VT_BATS); + } + const flatbuffers::Vector *flip_maps() const { + return GetPointer *>(VT_FLIP_MAPS); + } + const flatbuffers::Vector *flip_stats() const { + return GetPointer *>(VT_FLIP_STATS); + } + int32_t flip_effect() const { + return GetField(VT_FLIP_EFFECT, 0); + } + int32_t flip_timer() const { + return GetField(VT_FLIP_TIMER, 0); + } + int32_t flip_status() const { + return GetField(VT_FLIP_STATUS, 0); + } + int16_t current_fov() const { + return GetField(VT_CURRENT_FOV, 0); + } + const flatbuffers::Vector *action_queue() const { + return GetPointer *>(VT_ACTION_QUEUE); + } + const flatbuffers::String *ambient_track() const { + return GetPointer(VT_AMBIENT_TRACK); + } + uint64_t ambient_position() const { + return GetField(VT_AMBIENT_POSITION, 0); + } + const flatbuffers::String *oneshot_track() const { + return GetPointer(VT_ONESHOT_TRACK); + } + uint64_t oneshot_position() const { + return GetField(VT_ONESHOT_POSITION, 0); + } + const flatbuffers::Vector *cd_flags() const { + return GetPointer *>(VT_CD_FLAGS); + } + const TEN::Save::Rope *rope() const { + return GetPointer(VT_ROPE); + } + const TEN::Save::Pendulum *pendulum() const { + return GetPointer(VT_PENDULUM); + } + const TEN::Save::Pendulum *alternate_pendulum() const { + return GetPointer(VT_ALTERNATE_PENDULUM); + } + const flatbuffers::Vector> *volumes() const { + return GetPointer> *>(VT_VOLUMES); + } + const flatbuffers::Vector> *call_counters() const { + return GetPointer> *>(VT_CALL_COUNTERS); + } + const TEN::Save::UnionVec *script_vars() const { + return GetPointer(VT_SCRIPT_VARS); + } + const flatbuffers::Vector> *callbacks_pre_start() const { + return GetPointer> *>(VT_CALLBACKS_PRE_START); + } + const flatbuffers::Vector> *callbacks_post_start() const { + return GetPointer> *>(VT_CALLBACKS_POST_START); + } + const flatbuffers::Vector> *callbacks_pre_end() const { + return GetPointer> *>(VT_CALLBACKS_PRE_END); + } + const flatbuffers::Vector> *callbacks_post_end() const { + return GetPointer> *>(VT_CALLBACKS_POST_END); + } + const flatbuffers::Vector> *callbacks_pre_save() const { + return GetPointer> *>(VT_CALLBACKS_PRE_SAVE); + } + const flatbuffers::Vector> *callbacks_post_save() const { + return GetPointer> *>(VT_CALLBACKS_POST_SAVE); + } + const flatbuffers::Vector> *callbacks_pre_load() const { + return GetPointer> *>(VT_CALLBACKS_PRE_LOAD); + } + const flatbuffers::Vector> *callbacks_post_load() const { + return GetPointer> *>(VT_CALLBACKS_POST_LOAD); + } + const flatbuffers::Vector> *callbacks_pre_control() const { + return GetPointer> *>(VT_CALLBACKS_PRE_CONTROL); + } + const flatbuffers::Vector> *callbacks_post_control() const { + return GetPointer> *>(VT_CALLBACKS_POST_CONTROL); + } + bool Verify(flatbuffers::Verifier &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffset(verifier, VT_HEADER) && + verifier.VerifyTable(header()) && + VerifyOffset(verifier, VT_GAME) && + verifier.VerifyTable(game()) && + VerifyOffset(verifier, VT_LEVEL) && + verifier.VerifyTable(level()) && + VerifyOffset(verifier, VT_LARA) && + verifier.VerifyTable(lara()) && + VerifyOffset(verifier, VT_ROOMS) && + verifier.VerifyVector(rooms()) && + verifier.VerifyVectorOfTables(rooms()) && + VerifyOffset(verifier, VT_ITEMS) && + verifier.VerifyVector(items()) && + verifier.VerifyVectorOfTables(items()) && + VerifyField(verifier, VT_NEXT_ITEM_FREE) && + VerifyField(verifier, VT_NEXT_ITEM_ACTIVE) && + VerifyOffset(verifier, VT_ROOM_ITEMS) && + verifier.VerifyVector(room_items()) && + VerifyOffset(verifier, VT_FXINFOS) && + verifier.VerifyVector(fxinfos()) && + verifier.VerifyVectorOfTables(fxinfos()) && + VerifyField(verifier, VT_NEXT_FX_FREE) && + VerifyField(verifier, VT_NEXT_FX_ACTIVE) && + VerifyOffset(verifier, VT_FIXED_CAMERAS) && + verifier.VerifyVector(fixed_cameras()) && + verifier.VerifyVectorOfTables(fixed_cameras()) && + VerifyOffset(verifier, VT_SINKS) && + verifier.VerifyVector(sinks()) && + verifier.VerifyVectorOfTables(sinks()) && + VerifyOffset(verifier, VT_STATIC_MESHES) && + verifier.VerifyVector(static_meshes()) && + verifier.VerifyVectorOfTables(static_meshes()) && + VerifyOffset(verifier, VT_FLYBY_CAMERAS) && + verifier.VerifyVector(flyby_cameras()) && + verifier.VerifyVectorOfTables(flyby_cameras()) && + VerifyOffset(verifier, VT_PARTICLES) && + verifier.VerifyVector(particles()) && + verifier.VerifyVectorOfTables(particles()) && + VerifyOffset(verifier, VT_RATS) && + verifier.VerifyVector(rats()) && + verifier.VerifyVectorOfTables(rats()) && + VerifyOffset(verifier, VT_SPIDERS) && + verifier.VerifyVector(spiders()) && + verifier.VerifyVectorOfTables(spiders()) && + VerifyOffset(verifier, VT_SCARABS) && + verifier.VerifyVector(scarabs()) && + verifier.VerifyVectorOfTables(scarabs()) && + VerifyOffset(verifier, VT_BATS) && + verifier.VerifyVector(bats()) && + verifier.VerifyVectorOfTables(bats()) && + VerifyOffset(verifier, VT_FLIP_MAPS) && + verifier.VerifyVector(flip_maps()) && + VerifyOffset(verifier, VT_FLIP_STATS) && + verifier.VerifyVector(flip_stats()) && + VerifyField(verifier, VT_FLIP_EFFECT) && + VerifyField(verifier, VT_FLIP_TIMER) && + VerifyField(verifier, VT_FLIP_STATUS) && + VerifyField(verifier, VT_CURRENT_FOV) && + VerifyOffset(verifier, VT_ACTION_QUEUE) && + verifier.VerifyVector(action_queue()) && + VerifyOffset(verifier, VT_AMBIENT_TRACK) && + verifier.VerifyString(ambient_track()) && + VerifyField(verifier, VT_AMBIENT_POSITION) && + VerifyOffset(verifier, VT_ONESHOT_TRACK) && + verifier.VerifyString(oneshot_track()) && + VerifyField(verifier, VT_ONESHOT_POSITION) && + VerifyOffset(verifier, VT_CD_FLAGS) && + verifier.VerifyVector(cd_flags()) && + VerifyOffset(verifier, VT_ROPE) && + verifier.VerifyTable(rope()) && + VerifyOffset(verifier, VT_PENDULUM) && + verifier.VerifyTable(pendulum()) && + VerifyOffset(verifier, VT_ALTERNATE_PENDULUM) && + verifier.VerifyTable(alternate_pendulum()) && + VerifyOffset(verifier, VT_VOLUMES) && + verifier.VerifyVector(volumes()) && + verifier.VerifyVectorOfTables(volumes()) && + VerifyOffset(verifier, VT_CALL_COUNTERS) && + verifier.VerifyVector(call_counters()) && + verifier.VerifyVectorOfTables(call_counters()) && + VerifyOffset(verifier, VT_SCRIPT_VARS) && + verifier.VerifyTable(script_vars()) && + VerifyOffset(verifier, VT_CALLBACKS_PRE_START) && + verifier.VerifyVector(callbacks_pre_start()) && + verifier.VerifyVectorOfStrings(callbacks_pre_start()) && + VerifyOffset(verifier, VT_CALLBACKS_POST_START) && + verifier.VerifyVector(callbacks_post_start()) && + verifier.VerifyVectorOfStrings(callbacks_post_start()) && + VerifyOffset(verifier, VT_CALLBACKS_PRE_END) && + verifier.VerifyVector(callbacks_pre_end()) && + verifier.VerifyVectorOfStrings(callbacks_pre_end()) && + VerifyOffset(verifier, VT_CALLBACKS_POST_END) && + verifier.VerifyVector(callbacks_post_end()) && + verifier.VerifyVectorOfStrings(callbacks_post_end()) && + VerifyOffset(verifier, VT_CALLBACKS_PRE_SAVE) && + verifier.VerifyVector(callbacks_pre_save()) && + verifier.VerifyVectorOfStrings(callbacks_pre_save()) && + VerifyOffset(verifier, VT_CALLBACKS_POST_SAVE) && + verifier.VerifyVector(callbacks_post_save()) && + verifier.VerifyVectorOfStrings(callbacks_post_save()) && + VerifyOffset(verifier, VT_CALLBACKS_PRE_LOAD) && + verifier.VerifyVector(callbacks_pre_load()) && + verifier.VerifyVectorOfStrings(callbacks_pre_load()) && + VerifyOffset(verifier, VT_CALLBACKS_POST_LOAD) && + verifier.VerifyVector(callbacks_post_load()) && + verifier.VerifyVectorOfStrings(callbacks_post_load()) && + VerifyOffset(verifier, VT_CALLBACKS_PRE_CONTROL) && + verifier.VerifyVector(callbacks_pre_control()) && + verifier.VerifyVectorOfStrings(callbacks_pre_control()) && + VerifyOffset(verifier, VT_CALLBACKS_POST_CONTROL) && + verifier.VerifyVector(callbacks_post_control()) && + verifier.VerifyVectorOfStrings(callbacks_post_control()) && + verifier.EndTable(); + } + SaveGameT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(SaveGameT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const; + static flatbuffers::Offset Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct SaveGameBuilder { + typedef SaveGame Table; + flatbuffers::FlatBufferBuilder &fbb_; + flatbuffers::uoffset_t start_; + void add_header(flatbuffers::Offset header) { + fbb_.AddOffset(SaveGame::VT_HEADER, header); + } + void add_game(flatbuffers::Offset game) { + fbb_.AddOffset(SaveGame::VT_GAME, game); + } + void add_level(flatbuffers::Offset level) { + fbb_.AddOffset(SaveGame::VT_LEVEL, level); + } + void add_lara(flatbuffers::Offset lara) { + fbb_.AddOffset(SaveGame::VT_LARA, lara); + } + void add_rooms(flatbuffers::Offset>> rooms) { + fbb_.AddOffset(SaveGame::VT_ROOMS, rooms); + } + void add_items(flatbuffers::Offset>> items) { + fbb_.AddOffset(SaveGame::VT_ITEMS, items); + } + void add_next_item_free(int32_t next_item_free) { + fbb_.AddElement(SaveGame::VT_NEXT_ITEM_FREE, next_item_free, 0); + } + void add_next_item_active(int32_t next_item_active) { + fbb_.AddElement(SaveGame::VT_NEXT_ITEM_ACTIVE, next_item_active, 0); + } + void add_room_items(flatbuffers::Offset> room_items) { + fbb_.AddOffset(SaveGame::VT_ROOM_ITEMS, room_items); + } + void add_fxinfos(flatbuffers::Offset>> fxinfos) { + fbb_.AddOffset(SaveGame::VT_FXINFOS, fxinfos); + } + void add_next_fx_free(int32_t next_fx_free) { + fbb_.AddElement(SaveGame::VT_NEXT_FX_FREE, next_fx_free, 0); + } + void add_next_fx_active(int32_t next_fx_active) { + fbb_.AddElement(SaveGame::VT_NEXT_FX_ACTIVE, next_fx_active, 0); + } + void add_fixed_cameras(flatbuffers::Offset>> fixed_cameras) { + fbb_.AddOffset(SaveGame::VT_FIXED_CAMERAS, fixed_cameras); + } + void add_sinks(flatbuffers::Offset>> sinks) { + fbb_.AddOffset(SaveGame::VT_SINKS, sinks); + } + void add_static_meshes(flatbuffers::Offset>> static_meshes) { + fbb_.AddOffset(SaveGame::VT_STATIC_MESHES, static_meshes); + } + void add_flyby_cameras(flatbuffers::Offset>> flyby_cameras) { + fbb_.AddOffset(SaveGame::VT_FLYBY_CAMERAS, flyby_cameras); + } + void add_particles(flatbuffers::Offset>> particles) { + fbb_.AddOffset(SaveGame::VT_PARTICLES, particles); + } + void add_rats(flatbuffers::Offset>> rats) { + fbb_.AddOffset(SaveGame::VT_RATS, rats); + } + void add_spiders(flatbuffers::Offset>> spiders) { + fbb_.AddOffset(SaveGame::VT_SPIDERS, spiders); + } + void add_scarabs(flatbuffers::Offset>> scarabs) { + fbb_.AddOffset(SaveGame::VT_SCARABS, scarabs); + } + void add_bats(flatbuffers::Offset>> bats) { + fbb_.AddOffset(SaveGame::VT_BATS, bats); + } + void add_flip_maps(flatbuffers::Offset> flip_maps) { + fbb_.AddOffset(SaveGame::VT_FLIP_MAPS, flip_maps); + } + void add_flip_stats(flatbuffers::Offset> flip_stats) { + fbb_.AddOffset(SaveGame::VT_FLIP_STATS, flip_stats); + } + void add_flip_effect(int32_t flip_effect) { + fbb_.AddElement(SaveGame::VT_FLIP_EFFECT, flip_effect, 0); + } + void add_flip_timer(int32_t flip_timer) { + fbb_.AddElement(SaveGame::VT_FLIP_TIMER, flip_timer, 0); + } + void add_flip_status(int32_t flip_status) { + fbb_.AddElement(SaveGame::VT_FLIP_STATUS, flip_status, 0); + } + void add_current_fov(int16_t current_fov) { + fbb_.AddElement(SaveGame::VT_CURRENT_FOV, current_fov, 0); + } + void add_action_queue(flatbuffers::Offset> action_queue) { + fbb_.AddOffset(SaveGame::VT_ACTION_QUEUE, action_queue); + } + void add_ambient_track(flatbuffers::Offset ambient_track) { + fbb_.AddOffset(SaveGame::VT_AMBIENT_TRACK, ambient_track); + } + void add_ambient_position(uint64_t ambient_position) { + fbb_.AddElement(SaveGame::VT_AMBIENT_POSITION, ambient_position, 0); + } + void add_oneshot_track(flatbuffers::Offset oneshot_track) { + fbb_.AddOffset(SaveGame::VT_ONESHOT_TRACK, oneshot_track); + } + void add_oneshot_position(uint64_t oneshot_position) { + fbb_.AddElement(SaveGame::VT_ONESHOT_POSITION, oneshot_position, 0); + } + void add_cd_flags(flatbuffers::Offset> cd_flags) { + fbb_.AddOffset(SaveGame::VT_CD_FLAGS, cd_flags); + } + void add_rope(flatbuffers::Offset rope) { + fbb_.AddOffset(SaveGame::VT_ROPE, rope); + } + void add_pendulum(flatbuffers::Offset pendulum) { + fbb_.AddOffset(SaveGame::VT_PENDULUM, pendulum); + } + void add_alternate_pendulum(flatbuffers::Offset alternate_pendulum) { + fbb_.AddOffset(SaveGame::VT_ALTERNATE_PENDULUM, alternate_pendulum); + } + void add_volumes(flatbuffers::Offset>> volumes) { + fbb_.AddOffset(SaveGame::VT_VOLUMES, volumes); + } + void add_call_counters(flatbuffers::Offset>> call_counters) { + fbb_.AddOffset(SaveGame::VT_CALL_COUNTERS, call_counters); + } + void add_script_vars(flatbuffers::Offset script_vars) { + fbb_.AddOffset(SaveGame::VT_SCRIPT_VARS, script_vars); + } + void add_callbacks_pre_start(flatbuffers::Offset>> callbacks_pre_start) { + fbb_.AddOffset(SaveGame::VT_CALLBACKS_PRE_START, callbacks_pre_start); + } + void add_callbacks_post_start(flatbuffers::Offset>> callbacks_post_start) { + fbb_.AddOffset(SaveGame::VT_CALLBACKS_POST_START, callbacks_post_start); + } + void add_callbacks_pre_end(flatbuffers::Offset>> callbacks_pre_end) { + fbb_.AddOffset(SaveGame::VT_CALLBACKS_PRE_END, callbacks_pre_end); + } + void add_callbacks_post_end(flatbuffers::Offset>> callbacks_post_end) { + fbb_.AddOffset(SaveGame::VT_CALLBACKS_POST_END, callbacks_post_end); + } + void add_callbacks_pre_save(flatbuffers::Offset>> callbacks_pre_save) { + fbb_.AddOffset(SaveGame::VT_CALLBACKS_PRE_SAVE, callbacks_pre_save); + } + void add_callbacks_post_save(flatbuffers::Offset>> callbacks_post_save) { + fbb_.AddOffset(SaveGame::VT_CALLBACKS_POST_SAVE, callbacks_post_save); + } + void add_callbacks_pre_load(flatbuffers::Offset>> callbacks_pre_load) { + fbb_.AddOffset(SaveGame::VT_CALLBACKS_PRE_LOAD, callbacks_pre_load); + } + void add_callbacks_post_load(flatbuffers::Offset>> callbacks_post_load) { + fbb_.AddOffset(SaveGame::VT_CALLBACKS_POST_LOAD, callbacks_post_load); + } + void add_callbacks_pre_control(flatbuffers::Offset>> callbacks_pre_control) { + fbb_.AddOffset(SaveGame::VT_CALLBACKS_PRE_CONTROL, callbacks_pre_control); + } + void add_callbacks_post_control(flatbuffers::Offset>> callbacks_post_control) { + fbb_.AddOffset(SaveGame::VT_CALLBACKS_POST_CONTROL, callbacks_post_control); + } + explicit SaveGameBuilder(flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = flatbuffers::Offset(end); + return o; + } +}; + +inline flatbuffers::Offset CreateSaveGame( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset header = 0, + flatbuffers::Offset game = 0, + flatbuffers::Offset level = 0, + flatbuffers::Offset lara = 0, + flatbuffers::Offset>> rooms = 0, + flatbuffers::Offset>> items = 0, + int32_t next_item_free = 0, + int32_t next_item_active = 0, + flatbuffers::Offset> room_items = 0, + flatbuffers::Offset>> fxinfos = 0, + int32_t next_fx_free = 0, + int32_t next_fx_active = 0, + flatbuffers::Offset>> fixed_cameras = 0, + flatbuffers::Offset>> sinks = 0, + flatbuffers::Offset>> static_meshes = 0, + flatbuffers::Offset>> flyby_cameras = 0, + flatbuffers::Offset>> particles = 0, + flatbuffers::Offset>> rats = 0, + flatbuffers::Offset>> spiders = 0, + flatbuffers::Offset>> scarabs = 0, + flatbuffers::Offset>> bats = 0, + flatbuffers::Offset> flip_maps = 0, + flatbuffers::Offset> flip_stats = 0, + int32_t flip_effect = 0, + int32_t flip_timer = 0, + int32_t flip_status = 0, + int16_t current_fov = 0, + flatbuffers::Offset> action_queue = 0, + flatbuffers::Offset ambient_track = 0, + uint64_t ambient_position = 0, + flatbuffers::Offset oneshot_track = 0, + uint64_t oneshot_position = 0, + flatbuffers::Offset> cd_flags = 0, + flatbuffers::Offset rope = 0, + flatbuffers::Offset pendulum = 0, + flatbuffers::Offset alternate_pendulum = 0, + flatbuffers::Offset>> volumes = 0, + flatbuffers::Offset>> call_counters = 0, + flatbuffers::Offset script_vars = 0, + flatbuffers::Offset>> callbacks_pre_start = 0, + flatbuffers::Offset>> callbacks_post_start = 0, + flatbuffers::Offset>> callbacks_pre_end = 0, + flatbuffers::Offset>> callbacks_post_end = 0, + flatbuffers::Offset>> callbacks_pre_save = 0, + flatbuffers::Offset>> callbacks_post_save = 0, + flatbuffers::Offset>> callbacks_pre_load = 0, + flatbuffers::Offset>> callbacks_post_load = 0, + flatbuffers::Offset>> callbacks_pre_control = 0, + flatbuffers::Offset>> callbacks_post_control = 0) { + SaveGameBuilder builder_(_fbb); + builder_.add_oneshot_position(oneshot_position); + builder_.add_ambient_position(ambient_position); + builder_.add_callbacks_post_control(callbacks_post_control); + builder_.add_callbacks_pre_control(callbacks_pre_control); + builder_.add_callbacks_post_load(callbacks_post_load); + builder_.add_callbacks_pre_load(callbacks_pre_load); + builder_.add_callbacks_post_save(callbacks_post_save); + builder_.add_callbacks_pre_save(callbacks_pre_save); + builder_.add_callbacks_post_end(callbacks_post_end); + builder_.add_callbacks_pre_end(callbacks_pre_end); + builder_.add_callbacks_post_start(callbacks_post_start); + builder_.add_callbacks_pre_start(callbacks_pre_start); + builder_.add_script_vars(script_vars); + builder_.add_call_counters(call_counters); + builder_.add_volumes(volumes); + builder_.add_alternate_pendulum(alternate_pendulum); + builder_.add_pendulum(pendulum); + builder_.add_rope(rope); + builder_.add_cd_flags(cd_flags); + builder_.add_oneshot_track(oneshot_track); + builder_.add_ambient_track(ambient_track); + builder_.add_action_queue(action_queue); + builder_.add_flip_status(flip_status); + builder_.add_flip_timer(flip_timer); + builder_.add_flip_effect(flip_effect); + builder_.add_flip_stats(flip_stats); + builder_.add_flip_maps(flip_maps); + builder_.add_bats(bats); + builder_.add_scarabs(scarabs); + builder_.add_spiders(spiders); + builder_.add_rats(rats); + builder_.add_particles(particles); + builder_.add_flyby_cameras(flyby_cameras); + builder_.add_static_meshes(static_meshes); + builder_.add_sinks(sinks); + builder_.add_fixed_cameras(fixed_cameras); + builder_.add_next_fx_active(next_fx_active); + builder_.add_next_fx_free(next_fx_free); + builder_.add_fxinfos(fxinfos); + builder_.add_room_items(room_items); + builder_.add_next_item_active(next_item_active); + builder_.add_next_item_free(next_item_free); + builder_.add_items(items); + builder_.add_rooms(rooms); + builder_.add_lara(lara); + builder_.add_level(level); + builder_.add_game(game); + builder_.add_header(header); + builder_.add_current_fov(current_fov); + return builder_.Finish(); +} + +struct SaveGame::Traits { + using type = SaveGame; + static auto constexpr Create = CreateSaveGame; +}; + +inline flatbuffers::Offset CreateSaveGameDirect( + flatbuffers::FlatBufferBuilder &_fbb, + flatbuffers::Offset header = 0, + flatbuffers::Offset game = 0, + flatbuffers::Offset level = 0, + flatbuffers::Offset lara = 0, + const std::vector> *rooms = nullptr, + const std::vector> *items = nullptr, + int32_t next_item_free = 0, + int32_t next_item_active = 0, + const std::vector *room_items = nullptr, + const std::vector> *fxinfos = nullptr, + int32_t next_fx_free = 0, + int32_t next_fx_active = 0, + const std::vector> *fixed_cameras = nullptr, + const std::vector> *sinks = nullptr, + const std::vector> *static_meshes = nullptr, + const std::vector> *flyby_cameras = nullptr, + const std::vector> *particles = nullptr, + const std::vector> *rats = nullptr, + const std::vector> *spiders = nullptr, + const std::vector> *scarabs = nullptr, + const std::vector> *bats = nullptr, + const std::vector *flip_maps = nullptr, + const std::vector *flip_stats = nullptr, + int32_t flip_effect = 0, + int32_t flip_timer = 0, + int32_t flip_status = 0, + int16_t current_fov = 0, + const std::vector *action_queue = nullptr, + const char *ambient_track = nullptr, + uint64_t ambient_position = 0, + const char *oneshot_track = nullptr, + uint64_t oneshot_position = 0, + const std::vector *cd_flags = nullptr, + flatbuffers::Offset rope = 0, + flatbuffers::Offset pendulum = 0, + flatbuffers::Offset alternate_pendulum = 0, + const std::vector> *volumes = nullptr, + const std::vector> *call_counters = nullptr, + flatbuffers::Offset script_vars = 0, + const std::vector> *callbacks_pre_start = nullptr, + const std::vector> *callbacks_post_start = nullptr, + const std::vector> *callbacks_pre_end = nullptr, + const std::vector> *callbacks_post_end = nullptr, + const std::vector> *callbacks_pre_save = nullptr, + const std::vector> *callbacks_post_save = nullptr, + const std::vector> *callbacks_pre_load = nullptr, + const std::vector> *callbacks_post_load = nullptr, + const std::vector> *callbacks_pre_control = nullptr, + const std::vector> *callbacks_post_control = nullptr) { + auto rooms__ = rooms ? _fbb.CreateVector>(*rooms) : 0; + auto items__ = items ? _fbb.CreateVector>(*items) : 0; + auto room_items__ = room_items ? _fbb.CreateVector(*room_items) : 0; + auto fxinfos__ = fxinfos ? _fbb.CreateVector>(*fxinfos) : 0; + auto fixed_cameras__ = fixed_cameras ? _fbb.CreateVector>(*fixed_cameras) : 0; + auto sinks__ = sinks ? _fbb.CreateVector>(*sinks) : 0; + auto static_meshes__ = static_meshes ? _fbb.CreateVector>(*static_meshes) : 0; + auto flyby_cameras__ = flyby_cameras ? _fbb.CreateVector>(*flyby_cameras) : 0; + auto particles__ = particles ? _fbb.CreateVector>(*particles) : 0; + auto rats__ = rats ? _fbb.CreateVector>(*rats) : 0; + auto spiders__ = spiders ? _fbb.CreateVector>(*spiders) : 0; + auto scarabs__ = scarabs ? _fbb.CreateVector>(*scarabs) : 0; + auto bats__ = bats ? _fbb.CreateVector>(*bats) : 0; + auto flip_maps__ = flip_maps ? _fbb.CreateVector(*flip_maps) : 0; + auto flip_stats__ = flip_stats ? _fbb.CreateVector(*flip_stats) : 0; + auto action_queue__ = action_queue ? _fbb.CreateVector(*action_queue) : 0; + auto ambient_track__ = ambient_track ? _fbb.CreateString(ambient_track) : 0; + auto oneshot_track__ = oneshot_track ? _fbb.CreateString(oneshot_track) : 0; + auto cd_flags__ = cd_flags ? _fbb.CreateVector(*cd_flags) : 0; + auto volumes__ = volumes ? _fbb.CreateVector>(*volumes) : 0; + auto call_counters__ = call_counters ? _fbb.CreateVector>(*call_counters) : 0; + auto callbacks_pre_start__ = callbacks_pre_start ? _fbb.CreateVector>(*callbacks_pre_start) : 0; + auto callbacks_post_start__ = callbacks_post_start ? _fbb.CreateVector>(*callbacks_post_start) : 0; + auto callbacks_pre_end__ = callbacks_pre_end ? _fbb.CreateVector>(*callbacks_pre_end) : 0; + auto callbacks_post_end__ = callbacks_post_end ? _fbb.CreateVector>(*callbacks_post_end) : 0; + auto callbacks_pre_save__ = callbacks_pre_save ? _fbb.CreateVector>(*callbacks_pre_save) : 0; + auto callbacks_post_save__ = callbacks_post_save ? _fbb.CreateVector>(*callbacks_post_save) : 0; + auto callbacks_pre_load__ = callbacks_pre_load ? _fbb.CreateVector>(*callbacks_pre_load) : 0; + auto callbacks_post_load__ = callbacks_post_load ? _fbb.CreateVector>(*callbacks_post_load) : 0; + auto callbacks_pre_control__ = callbacks_pre_control ? _fbb.CreateVector>(*callbacks_pre_control) : 0; + auto callbacks_post_control__ = callbacks_post_control ? _fbb.CreateVector>(*callbacks_post_control) : 0; + return TEN::Save::CreateSaveGame( + _fbb, + header, + game, + level, + lara, + rooms__, + items__, + next_item_free, + next_item_active, + room_items__, + fxinfos__, + next_fx_free, + next_fx_active, + fixed_cameras__, + sinks__, + static_meshes__, + flyby_cameras__, + particles__, + rats__, + spiders__, + scarabs__, + bats__, + flip_maps__, + flip_stats__, + flip_effect, + flip_timer, + flip_status, + current_fov, + action_queue__, + ambient_track__, + ambient_position, + oneshot_track__, + oneshot_position, + cd_flags__, + rope, + pendulum, + alternate_pendulum, + volumes__, + call_counters__, + script_vars, + callbacks_pre_start__, + callbacks_post_start__, + callbacks_pre_end__, + callbacks_post_end__, + callbacks_pre_save__, + callbacks_post_save__, + callbacks_pre_load__, + callbacks_post_load__, + callbacks_pre_control__, + callbacks_post_control__); +} + +flatbuffers::Offset CreateSaveGame(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr); + +inline RoomT *Room::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Room::UnPackTo(RoomT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = index(); _o->index = _e; } + { auto _e = name(); if (_e) _o->name = _e->str(); } + { auto _e = flags(); _o->flags = _e; } + { auto _e = reverb_type(); _o->reverb_type = _e; } +} + +inline flatbuffers::Offset Room::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RoomT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateRoom(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateRoom(flatbuffers::FlatBufferBuilder &_fbb, const RoomT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RoomT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _index = _o->index; + auto _name = _o->name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->name); + auto _flags = _o->flags; + auto _reverb_type = _o->reverb_type; + return TEN::Save::CreateRoom( + _fbb, + _index, + _name, + _flags, + _reverb_type); +} + +inline ItemT *Item::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Item::UnPackTo(ItemT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = active_state(); _o->active_state = _e; } + { auto _e = anim_number(); _o->anim_number = _e; } + { auto _e = frame_number(); _o->frame_number = _e; } + { auto _e = is_airborne(); _o->is_airborne = _e; } + { auto _e = required_state(); _o->required_state = _e; } + { auto _e = target_state(); _o->target_state = _e; } + { auto _e = velocity(); if (_e) _o->velocity = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = floor(); _o->floor = _e; } + { auto _e = touch_bits(); _o->touch_bits = _e; } + { auto _e = mesh_bits(); _o->mesh_bits = _e; } + { auto _e = object_id(); _o->object_id = _e; } + { auto _e = room_number(); _o->room_number = _e; } + { auto _e = hit_points(); _o->hit_points = _e; } + { auto _e = box_number(); _o->box_number = _e; } + { auto _e = timer(); _o->timer = _e; } + { auto _e = color(); if (_e) _o->color = std::unique_ptr(new TEN::Save::Vector4(*_e)); } + { auto _e = flags(); _o->flags = _e; } + { auto _e = trigger_flags(); _o->trigger_flags = _e; } + { auto _e = carried_item(); _o->carried_item = _e; } + { auto _e = after_death(); _o->after_death = _e; } + { auto _e = item_flags(); if (_e) { _o->item_flags.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->item_flags[_i] = _e->Get(_i); } } } + { auto _e = pose(); if (_e) _o->pose = std::unique_ptr(new TEN::Save::Position(*_e)); } + { auto _e = next_item(); _o->next_item = _e; } + { auto _e = next_item_active(); _o->next_item_active = _e; } + { auto _e = active(); _o->active = _e; } + { auto _e = status(); _o->status = _e; } + { auto _e = hit_stauts(); _o->hit_stauts = _e; } + { auto _e = collidable(); _o->collidable = _e; } + { auto _e = looked_at(); _o->looked_at = _e; } + { auto _e = ai_bits(); _o->ai_bits = _e; } + { auto _e = data_type(); _o->data.type = _e; } + { auto _e = data(); if (_e) _o->data.value = TEN::Save::ItemDataUnion::UnPack(_e, data_type(), _resolver); } + { auto _e = base_mesh(); _o->base_mesh = _e; } + { auto _e = mesh_pointers(); if (_e) { _o->mesh_pointers.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->mesh_pointers[_i] = _e->Get(_i); } } } + { auto _e = effect_type(); _o->effect_type = _e; } + { auto _e = effect_light_colour(); if (_e) _o->effect_light_colour = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = effect_primary_colour(); if (_e) _o->effect_primary_colour = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = effect_secondary_colour(); if (_e) _o->effect_secondary_colour = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = effect_count(); _o->effect_count = _e; } + { auto _e = lua_name(); if (_e) _o->lua_name = _e->str(); } + { auto _e = lua_on_killed_name(); if (_e) _o->lua_on_killed_name = _e->str(); } + { auto _e = lua_on_hit_name(); if (_e) _o->lua_on_hit_name = _e->str(); } + { auto _e = lua_on_collided_with_object_name(); if (_e) _o->lua_on_collided_with_object_name = _e->str(); } + { auto _e = lua_on_collided_with_room_name(); if (_e) _o->lua_on_collided_with_room_name = _e->str(); } +} + +inline flatbuffers::Offset Item::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ItemT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateItem(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateItem(flatbuffers::FlatBufferBuilder &_fbb, const ItemT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ItemT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _active_state = _o->active_state; + auto _anim_number = _o->anim_number; + auto _frame_number = _o->frame_number; + auto _is_airborne = _o->is_airborne; + auto _required_state = _o->required_state; + auto _target_state = _o->target_state; + auto _velocity = _o->velocity ? _o->velocity.get() : 0; + auto _floor = _o->floor; + auto _touch_bits = _o->touch_bits; + auto _mesh_bits = _o->mesh_bits; + auto _object_id = _o->object_id; + auto _room_number = _o->room_number; + auto _hit_points = _o->hit_points; + auto _box_number = _o->box_number; + auto _timer = _o->timer; + auto _color = _o->color ? _o->color.get() : 0; + auto _flags = _o->flags; + auto _trigger_flags = _o->trigger_flags; + auto _carried_item = _o->carried_item; + auto _after_death = _o->after_death; + auto _item_flags = _fbb.CreateVector(_o->item_flags); + auto _pose = _o->pose ? _o->pose.get() : 0; + auto _next_item = _o->next_item; + auto _next_item_active = _o->next_item_active; + auto _active = _o->active; + auto _status = _o->status; + auto _hit_stauts = _o->hit_stauts; + auto _collidable = _o->collidable; + auto _looked_at = _o->looked_at; + auto _ai_bits = _o->ai_bits; + auto _data_type = _o->data.type; + auto _data = _o->data.Pack(_fbb); + auto _base_mesh = _o->base_mesh; + auto _mesh_pointers = _fbb.CreateVector(_o->mesh_pointers); + auto _effect_type = _o->effect_type; + auto _effect_light_colour = _o->effect_light_colour ? _o->effect_light_colour.get() : 0; + auto _effect_primary_colour = _o->effect_primary_colour ? _o->effect_primary_colour.get() : 0; + auto _effect_secondary_colour = _o->effect_secondary_colour ? _o->effect_secondary_colour.get() : 0; + auto _effect_count = _o->effect_count; + auto _lua_name = _o->lua_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->lua_name); + auto _lua_on_killed_name = _o->lua_on_killed_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->lua_on_killed_name); + auto _lua_on_hit_name = _o->lua_on_hit_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->lua_on_hit_name); + auto _lua_on_collided_with_object_name = _o->lua_on_collided_with_object_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->lua_on_collided_with_object_name); + auto _lua_on_collided_with_room_name = _o->lua_on_collided_with_room_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->lua_on_collided_with_room_name); + return TEN::Save::CreateItem( + _fbb, + _active_state, + _anim_number, + _frame_number, + _is_airborne, + _required_state, + _target_state, + _velocity, + _floor, + _touch_bits, + _mesh_bits, + _object_id, + _room_number, + _hit_points, + _box_number, + _timer, + _color, + _flags, + _trigger_flags, + _carried_item, + _after_death, + _item_flags, + _pose, + _next_item, + _next_item_active, + _active, + _status, + _hit_stauts, + _collidable, + _looked_at, + _ai_bits, + _data_type, + _data, + _base_mesh, + _mesh_pointers, + _effect_type, + _effect_light_colour, + _effect_primary_colour, + _effect_secondary_colour, + _effect_count, + _lua_name, + _lua_on_killed_name, + _lua_on_hit_name, + _lua_on_collided_with_object_name, + _lua_on_collided_with_room_name); +} + +inline FXInfoT *FXInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void FXInfo::UnPackTo(FXInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = pose(); if (_e) _o->pose = std::unique_ptr(new TEN::Save::Position(*_e)); } + { auto _e = room_number(); _o->room_number = _e; } + { auto _e = object_number(); _o->object_number = _e; } + { auto _e = next_fx(); _o->next_fx = _e; } + { auto _e = next_active(); _o->next_active = _e; } + { auto _e = speed(); _o->speed = _e; } + { auto _e = fall_speed(); _o->fall_speed = _e; } + { auto _e = frame_number(); _o->frame_number = _e; } + { auto _e = counter(); _o->counter = _e; } + { auto _e = color(); if (_e) _o->color = std::unique_ptr(new TEN::Save::Vector4(*_e)); } + { auto _e = flag1(); _o->flag1 = _e; } + { auto _e = flag2(); _o->flag2 = _e; } +} + +inline flatbuffers::Offset FXInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FXInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateFXInfo(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateFXInfo(flatbuffers::FlatBufferBuilder &_fbb, const FXInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FXInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _pose = _o->pose ? _o->pose.get() : 0; + auto _room_number = _o->room_number; + auto _object_number = _o->object_number; + auto _next_fx = _o->next_fx; + auto _next_active = _o->next_active; + auto _speed = _o->speed; + auto _fall_speed = _o->fall_speed; + auto _frame_number = _o->frame_number; + auto _counter = _o->counter; + auto _color = _o->color ? _o->color.get() : 0; + auto _flag1 = _o->flag1; + auto _flag2 = _o->flag2; + return TEN::Save::CreateFXInfo( + _fbb, + _pose, + _room_number, + _object_number, + _next_fx, + _next_active, + _speed, + _fall_speed, + _frame_number, + _counter, + _color, + _flag1, + _flag2); +} + +inline AmmoInfoT *AmmoInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void AmmoInfo::UnPackTo(AmmoInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = count(); _o->count = _e; } + { auto _e = is_infinite(); _o->is_infinite = _e; } +} + +inline flatbuffers::Offset AmmoInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AmmoInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateAmmoInfo(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateAmmoInfo(flatbuffers::FlatBufferBuilder &_fbb, const AmmoInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AmmoInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _count = _o->count; + auto _is_infinite = _o->is_infinite; + return TEN::Save::CreateAmmoInfo( + _fbb, + _count, + _is_infinite); +} + +inline HolsterInfoT *HolsterInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void HolsterInfo::UnPackTo(HolsterInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = left_holster(); _o->left_holster = _e; } + { auto _e = right_holster(); _o->right_holster = _e; } + { auto _e = back_holster(); _o->back_holster = _e; } +} + +inline flatbuffers::Offset HolsterInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const HolsterInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateHolsterInfo(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateHolsterInfo(flatbuffers::FlatBufferBuilder &_fbb, const HolsterInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const HolsterInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _left_holster = _o->left_holster; + auto _right_holster = _o->right_holster; + auto _back_holster = _o->back_holster; + return TEN::Save::CreateHolsterInfo( + _fbb, + _left_holster, + _right_holster, + _back_holster); +} + +inline CarriedWeaponInfoT *CarriedWeaponInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void CarriedWeaponInfo::UnPackTo(CarriedWeaponInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = present(); _o->present = _e; } + { auto _e = has_lasersight(); _o->has_lasersight = _e; } + { auto _e = has_silencer(); _o->has_silencer = _e; } + { auto _e = ammo(); if (_e) { _o->ammo.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->ammo[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = selected_ammo(); _o->selected_ammo = _e; } + { auto _e = weapon_mode(); _o->weapon_mode = _e; } +} + +inline flatbuffers::Offset CarriedWeaponInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const CarriedWeaponInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateCarriedWeaponInfo(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateCarriedWeaponInfo(flatbuffers::FlatBufferBuilder &_fbb, const CarriedWeaponInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const CarriedWeaponInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _present = _o->present; + auto _has_lasersight = _o->has_lasersight; + auto _has_silencer = _o->has_silencer; + auto _ammo = _fbb.CreateVector> (_o->ammo.size(), [](size_t i, _VectorArgs *__va) { return CreateAmmoInfo(*__va->__fbb, __va->__o->ammo[i].get(), __va->__rehasher); }, &_va ); + auto _selected_ammo = _o->selected_ammo; + auto _weapon_mode = _o->weapon_mode; + return TEN::Save::CreateCarriedWeaponInfo( + _fbb, + _present, + _has_lasersight, + _has_silencer, + _ammo, + _selected_ammo, + _weapon_mode); +} + +inline WeaponInfoT *WeaponInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void WeaponInfo::UnPackTo(WeaponInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = object_number(); _o->object_number = _e; } + { auto _e = anim_number(); _o->anim_number = _e; } + { auto _e = frame_number(); _o->frame_number = _e; } + { auto _e = active_state(); _o->active_state = _e; } + { auto _e = target_state(); _o->target_state = _e; } +} + +inline flatbuffers::Offset WeaponInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const WeaponInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateWeaponInfo(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateWeaponInfo(flatbuffers::FlatBufferBuilder &_fbb, const WeaponInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const WeaponInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _object_number = _o->object_number; + auto _anim_number = _o->anim_number; + auto _frame_number = _o->frame_number; + auto _active_state = _o->active_state; + auto _target_state = _o->target_state; + return TEN::Save::CreateWeaponInfo( + _fbb, + _object_number, + _anim_number, + _frame_number, + _active_state, + _target_state); +} + +inline ArmInfoT *ArmInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void ArmInfo::UnPackTo(ArmInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = anim_number(); _o->anim_number = _e; } + { auto _e = frame_number(); _o->frame_number = _e; } + { auto _e = frame_base(); _o->frame_base = _e; } + { auto _e = locked(); _o->locked = _e; } + { auto _e = rotation(); if (_e) _o->rotation = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = gun_flash(); _o->gun_flash = _e; } + { auto _e = gun_smoke(); _o->gun_smoke = _e; } +} + +inline flatbuffers::Offset ArmInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ArmInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateArmInfo(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateArmInfo(flatbuffers::FlatBufferBuilder &_fbb, const ArmInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ArmInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _anim_number = _o->anim_number; + auto _frame_number = _o->frame_number; + auto _frame_base = _o->frame_base; + auto _locked = _o->locked; + auto _rotation = _o->rotation ? _o->rotation.get() : 0; + auto _gun_flash = _o->gun_flash; + auto _gun_smoke = _o->gun_smoke; + return TEN::Save::CreateArmInfo( + _fbb, + _anim_number, + _frame_number, + _frame_base, + _locked, + _rotation, + _gun_flash, + _gun_smoke); +} + +inline FlareDataT *FlareData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void FlareData::UnPackTo(FlareDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = life(); _o->life = _e; } + { auto _e = frame(); _o->frame = _e; } + { auto _e = control_left(); _o->control_left = _e; } +} + +inline flatbuffers::Offset FlareData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FlareDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateFlareData(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateFlareData(flatbuffers::FlatBufferBuilder &_fbb, const FlareDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FlareDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _life = _o->life; + auto _frame = _o->frame; + auto _control_left = _o->control_left; + return TEN::Save::CreateFlareData( + _fbb, + _life, + _frame, + _control_left); +} + +inline TorchDataT *TorchData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void TorchData::UnPackTo(TorchDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = state(); _o->state = _e; } + { auto _e = is_lit(); _o->is_lit = _e; } +} + +inline flatbuffers::Offset TorchData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TorchDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateTorchData(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateTorchData(flatbuffers::FlatBufferBuilder &_fbb, const TorchDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TorchDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _state = _o->state; + auto _is_lit = _o->is_lit; + return TEN::Save::CreateTorchData( + _fbb, + _state, + _is_lit); +} + +inline LaraInventoryDataT *LaraInventoryData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void LaraInventoryData::UnPackTo(LaraInventoryDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = is_busy(); _o->is_busy = _e; } + { auto _e = old_busy(); _o->old_busy = _e; } + { auto _e = beetle_life(); _o->beetle_life = _e; } + { auto _e = beetle_components(); _o->beetle_components = _e; } + { auto _e = small_waterskin(); _o->small_waterskin = _e; } + { auto _e = big_waterskin(); _o->big_waterskin = _e; } + { auto _e = has_binoculars(); _o->has_binoculars = _e; } + { auto _e = has_crowbar(); _o->has_crowbar = _e; } + { auto _e = has_torch(); _o->has_torch = _e; } + { auto _e = has_lasersight(); _o->has_lasersight = _e; } + { auto _e = has_silencer(); _o->has_silencer = _e; } + { auto _e = total_small_medipacks(); _o->total_small_medipacks = _e; } + { auto _e = total_large_medipacks(); _o->total_large_medipacks = _e; } + { auto _e = total_flares(); _o->total_flares = _e; } + { auto _e = total_secrets(); _o->total_secrets = _e; } + { auto _e = puzzles(); if (_e) { _o->puzzles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->puzzles[_i] = _e->Get(_i); } } } + { auto _e = keys(); if (_e) { _o->keys.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->keys[_i] = _e->Get(_i); } } } + { auto _e = pickups(); if (_e) { _o->pickups.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->pickups[_i] = _e->Get(_i); } } } + { auto _e = examines(); if (_e) { _o->examines.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->examines[_i] = _e->Get(_i); } } } + { auto _e = puzzles_combo(); if (_e) { _o->puzzles_combo.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->puzzles_combo[_i] = _e->Get(_i); } } } + { auto _e = keys_combo(); if (_e) { _o->keys_combo.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->keys_combo[_i] = _e->Get(_i); } } } + { auto _e = pickups_combo(); if (_e) { _o->pickups_combo.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->pickups_combo[_i] = _e->Get(_i); } } } + { auto _e = examines_combo(); if (_e) { _o->examines_combo.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->examines_combo[_i] = _e->Get(_i); } } } +} + +inline flatbuffers::Offset LaraInventoryData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraInventoryDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateLaraInventoryData(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateLaraInventoryData(flatbuffers::FlatBufferBuilder &_fbb, const LaraInventoryDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaraInventoryDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _is_busy = _o->is_busy; + auto _old_busy = _o->old_busy; + auto _beetle_life = _o->beetle_life; + auto _beetle_components = _o->beetle_components; + auto _small_waterskin = _o->small_waterskin; + auto _big_waterskin = _o->big_waterskin; + auto _has_binoculars = _o->has_binoculars; + auto _has_crowbar = _o->has_crowbar; + auto _has_torch = _o->has_torch; + auto _has_lasersight = _o->has_lasersight; + auto _has_silencer = _o->has_silencer; + auto _total_small_medipacks = _o->total_small_medipacks; + auto _total_large_medipacks = _o->total_large_medipacks; + auto _total_flares = _o->total_flares; + auto _total_secrets = _o->total_secrets; + auto _puzzles = _fbb.CreateVector(_o->puzzles); + auto _keys = _fbb.CreateVector(_o->keys); + auto _pickups = _fbb.CreateVector(_o->pickups); + auto _examines = _fbb.CreateVector(_o->examines); + auto _puzzles_combo = _fbb.CreateVector(_o->puzzles_combo); + auto _keys_combo = _fbb.CreateVector(_o->keys_combo); + auto _pickups_combo = _fbb.CreateVector(_o->pickups_combo); + auto _examines_combo = _fbb.CreateVector(_o->examines_combo); + return TEN::Save::CreateLaraInventoryData( + _fbb, + _is_busy, + _old_busy, + _beetle_life, + _beetle_components, + _small_waterskin, + _big_waterskin, + _has_binoculars, + _has_crowbar, + _has_torch, + _has_lasersight, + _has_silencer, + _total_small_medipacks, + _total_large_medipacks, + _total_flares, + _total_secrets, + _puzzles, + _keys, + _pickups, + _examines, + _puzzles_combo, + _keys_combo, + _pickups_combo, + _examines_combo); +} + +inline LaraCountDataT *LaraCountData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void LaraCountData::UnPackTo(LaraCountDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = run_jump(); _o->run_jump = _e; } + { auto _e = position_adjust(); _o->position_adjust = _e; } + { auto _e = pose(); _o->pose = _e; } + { auto _e = death(); _o->death = _e; } + { auto _e = no_cheat(); _o->no_cheat = _e; } +} + +inline flatbuffers::Offset LaraCountData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraCountDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateLaraCountData(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateLaraCountData(flatbuffers::FlatBufferBuilder &_fbb, const LaraCountDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaraCountDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _run_jump = _o->run_jump; + auto _position_adjust = _o->position_adjust; + auto _pose = _o->pose; + auto _death = _o->death; + auto _no_cheat = _o->no_cheat; + return TEN::Save::CreateLaraCountData( + _fbb, + _run_jump, + _position_adjust, + _pose, + _death, + _no_cheat); +} + +inline WeaponControlDataT *WeaponControlData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void WeaponControlData::UnPackTo(WeaponControlDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = weapon_item(); _o->weapon_item = _e; } + { auto _e = has_fired(); _o->has_fired = _e; } + { auto _e = fired(); _o->fired = _e; } + { auto _e = uzi_left(); _o->uzi_left = _e; } + { auto _e = uzi_right(); _o->uzi_right = _e; } + { auto _e = gun_type(); _o->gun_type = _e; } + { auto _e = request_gun_type(); _o->request_gun_type = _e; } + { auto _e = last_gun_type(); _o->last_gun_type = _e; } + { auto _e = holster_info(); if (_e) _o->holster_info = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = num_shots_fired(); _o->num_shots_fired = _e; } + { auto _e = interval(); _o->interval = _e; } + { auto _e = timer(); _o->timer = _e; } +} + +inline flatbuffers::Offset WeaponControlData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const WeaponControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateWeaponControlData(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateWeaponControlData(flatbuffers::FlatBufferBuilder &_fbb, const WeaponControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const WeaponControlDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _weapon_item = _o->weapon_item; + auto _has_fired = _o->has_fired; + auto _fired = _o->fired; + auto _uzi_left = _o->uzi_left; + auto _uzi_right = _o->uzi_right; + auto _gun_type = _o->gun_type; + auto _request_gun_type = _o->request_gun_type; + auto _last_gun_type = _o->last_gun_type; + auto _holster_info = _o->holster_info ? CreateHolsterInfo(_fbb, _o->holster_info.get(), _rehasher) : 0; + auto _num_shots_fired = _o->num_shots_fired; + auto _interval = _o->interval; + auto _timer = _o->timer; + return TEN::Save::CreateWeaponControlData( + _fbb, + _weapon_item, + _has_fired, + _fired, + _uzi_left, + _uzi_right, + _gun_type, + _request_gun_type, + _last_gun_type, + _holster_info, + _num_shots_fired, + _interval, + _timer); +} + +inline RopeControlDataT *RopeControlData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void RopeControlData::UnPackTo(RopeControlDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = segment(); _o->segment = _e; } + { auto _e = direction(); _o->direction = _e; } + { auto _e = arc_front(); _o->arc_front = _e; } + { auto _e = arc_back(); _o->arc_back = _e; } + { auto _e = last_x(); _o->last_x = _e; } + { auto _e = max_x_forward(); _o->max_x_forward = _e; } + { auto _e = max_x_backward(); _o->max_x_backward = _e; } + { auto _e = dframe(); _o->dframe = _e; } + { auto _e = frame(); _o->frame = _e; } + { auto _e = frame_rate(); _o->frame_rate = _e; } + { auto _e = y(); _o->y = _e; } + { auto _e = ptr(); _o->ptr = _e; } + { auto _e = offset(); _o->offset = _e; } + { auto _e = down_vel(); _o->down_vel = _e; } + { auto _e = flag(); _o->flag = _e; } + { auto _e = count(); _o->count = _e; } +} + +inline flatbuffers::Offset RopeControlData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RopeControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateRopeControlData(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateRopeControlData(flatbuffers::FlatBufferBuilder &_fbb, const RopeControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RopeControlDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _segment = _o->segment; + auto _direction = _o->direction; + auto _arc_front = _o->arc_front; + auto _arc_back = _o->arc_back; + auto _last_x = _o->last_x; + auto _max_x_forward = _o->max_x_forward; + auto _max_x_backward = _o->max_x_backward; + auto _dframe = _o->dframe; + auto _frame = _o->frame; + auto _frame_rate = _o->frame_rate; + auto _y = _o->y; + auto _ptr = _o->ptr; + auto _offset = _o->offset; + auto _down_vel = _o->down_vel; + auto _flag = _o->flag; + auto _count = _o->count; + return TEN::Save::CreateRopeControlData( + _fbb, + _segment, + _direction, + _arc_front, + _arc_back, + _last_x, + _max_x_forward, + _max_x_backward, + _dframe, + _frame, + _frame_rate, + _y, + _ptr, + _offset, + _down_vel, + _flag, + _count); +} + +inline TightropeControlDataT *TightropeControlData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void TightropeControlData::UnPackTo(TightropeControlDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = balance(); _o->balance = _e; } + { auto _e = time_on_tightrope(); _o->time_on_tightrope = _e; } + { auto _e = can_dismount(); _o->can_dismount = _e; } + { auto _e = tightrope_item(); _o->tightrope_item = _e; } +} + +inline flatbuffers::Offset TightropeControlData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TightropeControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateTightropeControlData(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateTightropeControlData(flatbuffers::FlatBufferBuilder &_fbb, const TightropeControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TightropeControlDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _balance = _o->balance; + auto _time_on_tightrope = _o->time_on_tightrope; + auto _can_dismount = _o->can_dismount; + auto _tightrope_item = _o->tightrope_item; + return TEN::Save::CreateTightropeControlData( + _fbb, + _balance, + _time_on_tightrope, + _can_dismount, + _tightrope_item); +} + +inline SubsuitControlDataT *SubsuitControlData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void SubsuitControlData::UnPackTo(SubsuitControlDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = x_rot(); _o->x_rot = _e; } + { auto _e = d_x_rot(); _o->d_x_rot = _e; } + { auto _e = velocity(); if (_e) { _o->velocity.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->velocity[_i] = _e->Get(_i); } } } + { auto _e = vertical_velocity(); _o->vertical_velocity = _e; } + { auto _e = x_rot_vel(); _o->x_rot_vel = _e; } + { auto _e = hit_count(); _o->hit_count = _e; } +} + +inline flatbuffers::Offset SubsuitControlData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SubsuitControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateSubsuitControlData(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateSubsuitControlData(flatbuffers::FlatBufferBuilder &_fbb, const SubsuitControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SubsuitControlDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _x_rot = _o->x_rot; + auto _d_x_rot = _o->d_x_rot; + auto _velocity = _fbb.CreateVector(_o->velocity); + auto _vertical_velocity = _o->vertical_velocity; + auto _x_rot_vel = _o->x_rot_vel; + auto _hit_count = _o->hit_count; + return TEN::Save::CreateSubsuitControlData( + _fbb, + _x_rot, + _d_x_rot, + _velocity, + _vertical_velocity, + _x_rot_vel, + _hit_count); +} + +inline LaraControlDataT *LaraControlData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void LaraControlData::UnPackTo(LaraControlDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = move_angle(); _o->move_angle = _e; } + { auto _e = turn_rate(); _o->turn_rate = _e; } + { auto _e = calculated_jump_velocity(); _o->calculated_jump_velocity = _e; } + { auto _e = jump_direction(); _o->jump_direction = _e; } + { auto _e = hand_status(); _o->hand_status = _e; } + { auto _e = water_status(); _o->water_status = _e; } + { auto _e = count(); if (_e) _o->count = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = can_look(); _o->can_look = _e; } + { auto _e = is_moving(); _o->is_moving = _e; } + { auto _e = keep_low(); _o->keep_low = _e; } + { auto _e = is_low(); _o->is_low = _e; } + { auto _e = can_climb_ladder(); _o->can_climb_ladder = _e; } + { auto _e = is_climbing_ladder(); _o->is_climbing_ladder = _e; } + { auto _e = can_monkey_swing(); _o->can_monkey_swing = _e; } + { auto _e = run_jump_queued(); _o->run_jump_queued = _e; } + { auto _e = locked(); _o->locked = _e; } + { auto _e = weapon(); if (_e) _o->weapon = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = rope(); if (_e) _o->rope = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = tightrope(); if (_e) _o->tightrope = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = subsuit(); if (_e) _o->subsuit = std::unique_ptr(_e->UnPack(_resolver)); } +} + +inline flatbuffers::Offset LaraControlData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraControlDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateLaraControlData(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateLaraControlData(flatbuffers::FlatBufferBuilder &_fbb, const LaraControlDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaraControlDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _move_angle = _o->move_angle; + auto _turn_rate = _o->turn_rate; + auto _calculated_jump_velocity = _o->calculated_jump_velocity; + auto _jump_direction = _o->jump_direction; + auto _hand_status = _o->hand_status; + auto _water_status = _o->water_status; + auto _count = _o->count ? CreateLaraCountData(_fbb, _o->count.get(), _rehasher) : 0; + auto _can_look = _o->can_look; + auto _is_moving = _o->is_moving; + auto _keep_low = _o->keep_low; + auto _is_low = _o->is_low; + auto _can_climb_ladder = _o->can_climb_ladder; + auto _is_climbing_ladder = _o->is_climbing_ladder; + auto _can_monkey_swing = _o->can_monkey_swing; + auto _run_jump_queued = _o->run_jump_queued; + auto _locked = _o->locked; + auto _weapon = _o->weapon ? CreateWeaponControlData(_fbb, _o->weapon.get(), _rehasher) : 0; + auto _rope = _o->rope ? CreateRopeControlData(_fbb, _o->rope.get(), _rehasher) : 0; + auto _tightrope = _o->tightrope ? CreateTightropeControlData(_fbb, _o->tightrope.get(), _rehasher) : 0; + auto _subsuit = _o->subsuit ? CreateSubsuitControlData(_fbb, _o->subsuit.get(), _rehasher) : 0; + return TEN::Save::CreateLaraControlData( + _fbb, + _move_angle, + _turn_rate, + _calculated_jump_velocity, + _jump_direction, + _hand_status, + _water_status, + _count, + _can_look, + _is_moving, + _keep_low, + _is_low, + _can_climb_ladder, + _is_climbing_ladder, + _can_monkey_swing, + _run_jump_queued, + _locked, + _weapon, + _rope, + _tightrope, + _subsuit); +} + +inline PlayerEffectDataT *PlayerEffectData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void PlayerEffectData::UnPackTo(PlayerEffectDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = bubble_nodes(); if (_e) { _o->bubble_nodes.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->bubble_nodes[_i] = _e->Get(_i); } } } + { auto _e = drip_nodes(); if (_e) { _o->drip_nodes.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->drip_nodes[_i] = _e->Get(_i); } } } +} + +inline flatbuffers::Offset PlayerEffectData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PlayerEffectDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreatePlayerEffectData(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreatePlayerEffectData(flatbuffers::FlatBufferBuilder &_fbb, const PlayerEffectDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PlayerEffectDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _bubble_nodes = _fbb.CreateVector(_o->bubble_nodes); + auto _drip_nodes = _fbb.CreateVector(_o->drip_nodes); + return TEN::Save::CreatePlayerEffectData( + _fbb, + _bubble_nodes, + _drip_nodes); +} + +inline PlayerStatusDataT *PlayerStatusData::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void PlayerStatusData::UnPackTo(PlayerStatusDataT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = air(); _o->air = _e; } + { auto _e = exposure(); _o->exposure = _e; } + { auto _e = poison(); _o->poison = _e; } + { auto _e = stamina(); _o->stamina = _e; } +} + +inline flatbuffers::Offset PlayerStatusData::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PlayerStatusDataT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreatePlayerStatusData(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreatePlayerStatusData(flatbuffers::FlatBufferBuilder &_fbb, const PlayerStatusDataT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PlayerStatusDataT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _air = _o->air; + auto _exposure = _o->exposure; + auto _poison = _o->poison; + auto _stamina = _o->stamina; + return TEN::Save::CreatePlayerStatusData( + _fbb, + _air, + _exposure, + _poison, + _stamina); +} + +inline LaraT *Lara::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Lara::UnPackTo(LaraT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = effect(); if (_e) _o->effect = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = status(); if (_e) _o->status = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = item_number(); _o->item_number = _e; } + { auto _e = control(); if (_e) _o->control = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = inventory(); if (_e) _o->inventory = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = weapons(); if (_e) { _o->weapons.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->weapons[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = flare(); if (_e) _o->flare = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = torch(); if (_e) _o->torch = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = extra_head_rot(); if (_e) _o->extra_head_rot = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = extra_torso_rot(); if (_e) _o->extra_torso_rot = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = water_current_active(); _o->water_current_active = _e; } + { auto _e = water_current_pull(); if (_e) _o->water_current_pull = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = left_arm(); if (_e) _o->left_arm = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = right_arm(); if (_e) _o->right_arm = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = target_arm_angles(); if (_e) { _o->target_arm_angles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->target_arm_angles[_i] = _e->Get(_i); } } } + { auto _e = target_entity_number(); _o->target_entity_number = _e; } + { auto _e = vehicle(); _o->vehicle = _e; } + { auto _e = extra_anim(); _o->extra_anim = _e; } + { auto _e = hit_frame(); _o->hit_frame = _e; } + { auto _e = hit_direction(); _o->hit_direction = _e; } + { auto _e = projected_floor_height(); _o->projected_floor_height = _e; } + { auto _e = target_facing_angle(); _o->target_facing_angle = _e; } + { auto _e = water_surface_dist(); _o->water_surface_dist = _e; } + { auto _e = interacted_item(); _o->interacted_item = _e; } + { auto _e = next_corner_pose(); if (_e) _o->next_corner_pose = std::unique_ptr(new TEN::Save::Position(*_e)); } + { auto _e = burn_type(); _o->burn_type = _e; } + { auto _e = burn_count(); _o->burn_count = _e; } + { auto _e = burn(); _o->burn = _e; } + { auto _e = burn_blue(); _o->burn_blue = _e; } + { auto _e = burn_smoke(); _o->burn_smoke = _e; } + { auto _e = location(); _o->location = _e; } + { auto _e = highest_location(); _o->highest_location = _e; } + { auto _e = location_pad(); _o->location_pad = _e; } +} + +inline flatbuffers::Offset Lara::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LaraT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateLara(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateLara(flatbuffers::FlatBufferBuilder &_fbb, const LaraT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LaraT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _effect = _o->effect ? CreatePlayerEffectData(_fbb, _o->effect.get(), _rehasher) : 0; + auto _status = _o->status ? CreatePlayerStatusData(_fbb, _o->status.get(), _rehasher) : 0; + auto _item_number = _o->item_number; + auto _control = _o->control ? CreateLaraControlData(_fbb, _o->control.get(), _rehasher) : 0; + auto _inventory = _o->inventory ? CreateLaraInventoryData(_fbb, _o->inventory.get(), _rehasher) : 0; + auto _weapons = _fbb.CreateVector> (_o->weapons.size(), [](size_t i, _VectorArgs *__va) { return CreateCarriedWeaponInfo(*__va->__fbb, __va->__o->weapons[i].get(), __va->__rehasher); }, &_va ); + auto _flare = _o->flare ? CreateFlareData(_fbb, _o->flare.get(), _rehasher) : 0; + auto _torch = _o->torch ? CreateTorchData(_fbb, _o->torch.get(), _rehasher) : 0; + auto _extra_head_rot = _o->extra_head_rot ? _o->extra_head_rot.get() : 0; + auto _extra_torso_rot = _o->extra_torso_rot ? _o->extra_torso_rot.get() : 0; + auto _water_current_active = _o->water_current_active; + auto _water_current_pull = _o->water_current_pull ? _o->water_current_pull.get() : 0; + auto _left_arm = _o->left_arm ? CreateArmInfo(_fbb, _o->left_arm.get(), _rehasher) : 0; + auto _right_arm = _o->right_arm ? CreateArmInfo(_fbb, _o->right_arm.get(), _rehasher) : 0; + auto _target_arm_angles = _fbb.CreateVector(_o->target_arm_angles); + auto _target_entity_number = _o->target_entity_number; + auto _vehicle = _o->vehicle; + auto _extra_anim = _o->extra_anim; + auto _hit_frame = _o->hit_frame; + auto _hit_direction = _o->hit_direction; + auto _projected_floor_height = _o->projected_floor_height; + auto _target_facing_angle = _o->target_facing_angle; + auto _water_surface_dist = _o->water_surface_dist; + auto _interacted_item = _o->interacted_item; + auto _next_corner_pose = _o->next_corner_pose ? _o->next_corner_pose.get() : 0; + auto _burn_type = _o->burn_type; + auto _burn_count = _o->burn_count; + auto _burn = _o->burn; + auto _burn_blue = _o->burn_blue; + auto _burn_smoke = _o->burn_smoke; + auto _location = _o->location; + auto _highest_location = _o->highest_location; + auto _location_pad = _o->location_pad; + return TEN::Save::CreateLara( + _fbb, + _effect, + _status, + _item_number, + _control, + _inventory, + _weapons, + _flare, + _torch, + _extra_head_rot, + _extra_torso_rot, + _water_current_active, + _water_current_pull, + _left_arm, + _right_arm, + _target_arm_angles, + _target_entity_number, + _vehicle, + _extra_anim, + _hit_frame, + _hit_direction, + _projected_floor_height, + _target_facing_angle, + _water_surface_dist, + _interacted_item, + _next_corner_pose, + _burn_type, + _burn_count, + _burn, + _burn_blue, + _burn_smoke, + _location, + _highest_location, + _location_pad); +} + +inline FixedCameraT *FixedCamera::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void FixedCamera::UnPackTo(FixedCameraT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = flags(); _o->flags = _e; } +} + +inline flatbuffers::Offset FixedCamera::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FixedCameraT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateFixedCamera(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateFixedCamera(flatbuffers::FlatBufferBuilder &_fbb, const FixedCameraT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FixedCameraT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _flags = _o->flags; + return TEN::Save::CreateFixedCamera( + _fbb, + _flags); +} + +inline FlyByCameraT *FlyByCamera::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void FlyByCamera::UnPackTo(FlyByCameraT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = flags(); _o->flags = _e; } +} + +inline flatbuffers::Offset FlyByCamera::Pack(flatbuffers::FlatBufferBuilder &_fbb, const FlyByCameraT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateFlyByCamera(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateFlyByCamera(flatbuffers::FlatBufferBuilder &_fbb, const FlyByCameraT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const FlyByCameraT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _flags = _o->flags; + return TEN::Save::CreateFlyByCamera( + _fbb, + _flags); +} + +inline SinkT *Sink::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Sink::UnPackTo(SinkT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = flags(); _o->flags = _e; } +} + +inline flatbuffers::Offset Sink::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SinkT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateSink(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateSink(flatbuffers::FlatBufferBuilder &_fbb, const SinkT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SinkT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _flags = _o->flags; + return TEN::Save::CreateSink( + _fbb, + _flags); +} + +inline StaticMeshInfoT *StaticMeshInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void StaticMeshInfo::UnPackTo(StaticMeshInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = number(); _o->number = _e; } + { auto _e = room_number(); _o->room_number = _e; } + { auto _e = pose(); if (_e) _o->pose = std::unique_ptr(new TEN::Save::Position(*_e)); } + { auto _e = scale(); _o->scale = _e; } + { auto _e = color(); if (_e) _o->color = std::unique_ptr(new TEN::Save::Vector4(*_e)); } + { auto _e = hit_points(); _o->hit_points = _e; } + { auto _e = flags(); _o->flags = _e; } +} + +inline flatbuffers::Offset StaticMeshInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const StaticMeshInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateStaticMeshInfo(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateStaticMeshInfo(flatbuffers::FlatBufferBuilder &_fbb, const StaticMeshInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const StaticMeshInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _number = _o->number; + auto _room_number = _o->room_number; + auto _pose = _o->pose ? _o->pose.get() : 0; + auto _scale = _o->scale; + auto _color = _o->color ? _o->color.get() : 0; + auto _hit_points = _o->hit_points; + auto _flags = _o->flags; + return TEN::Save::CreateStaticMeshInfo( + _fbb, + _number, + _room_number, + _pose, + _scale, + _color, + _hit_points, + _flags); +} + +inline ParticleInfoT *ParticleInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void ParticleInfo::UnPackTo(ParticleInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = x(); _o->x = _e; } + { auto _e = y(); _o->y = _e; } + { auto _e = z(); _o->z = _e; } + { auto _e = x_vel(); _o->x_vel = _e; } + { auto _e = y_vel(); _o->y_vel = _e; } + { auto _e = z_vel(); _o->z_vel = _e; } + { auto _e = gravity(); _o->gravity = _e; } + { auto _e = rot_ang(); _o->rot_ang = _e; } + { auto _e = flags(); _o->flags = _e; } + { auto _e = s_size(); _o->s_size = _e; } + { auto _e = d_size(); _o->d_size = _e; } + { auto _e = size(); _o->size = _e; } + { auto _e = friction(); _o->friction = _e; } + { auto _e = scalar(); _o->scalar = _e; } + { auto _e = sprite_index(); _o->sprite_index = _e; } + { auto _e = rot_add(); _o->rot_add = _e; } + { auto _e = max_y_vel(); _o->max_y_vel = _e; } + { auto _e = on(); _o->on = _e; } + { auto _e = s_r(); _o->s_r = _e; } + { auto _e = s_g(); _o->s_g = _e; } + { auto _e = s_b(); _o->s_b = _e; } + { auto _e = d_r(); _o->d_r = _e; } + { auto _e = d_g(); _o->d_g = _e; } + { auto _e = d_b(); _o->d_b = _e; } + { auto _e = r(); _o->r = _e; } + { auto _e = g(); _o->g = _e; } + { auto _e = b(); _o->b = _e; } + { auto _e = col_fade_speed(); _o->col_fade_speed = _e; } + { auto _e = fade_to_black(); _o->fade_to_black = _e; } + { auto _e = s_life(); _o->s_life = _e; } + { auto _e = life(); _o->life = _e; } + { auto _e = blend_mode(); _o->blend_mode = _e; } + { auto _e = extras(); _o->extras = _e; } + { auto _e = dynamic(); _o->dynamic = _e; } + { auto _e = fx_obj(); _o->fx_obj = _e; } + { auto _e = room_number(); _o->room_number = _e; } + { auto _e = node_number(); _o->node_number = _e; } +} + +inline flatbuffers::Offset ParticleInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ParticleInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateParticleInfo(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateParticleInfo(flatbuffers::FlatBufferBuilder &_fbb, const ParticleInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ParticleInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _x = _o->x; + auto _y = _o->y; + auto _z = _o->z; + auto _x_vel = _o->x_vel; + auto _y_vel = _o->y_vel; + auto _z_vel = _o->z_vel; + auto _gravity = _o->gravity; + auto _rot_ang = _o->rot_ang; + auto _flags = _o->flags; + auto _s_size = _o->s_size; + auto _d_size = _o->d_size; + auto _size = _o->size; + auto _friction = _o->friction; + auto _scalar = _o->scalar; + auto _sprite_index = _o->sprite_index; + auto _rot_add = _o->rot_add; + auto _max_y_vel = _o->max_y_vel; + auto _on = _o->on; + auto _s_r = _o->s_r; + auto _s_g = _o->s_g; + auto _s_b = _o->s_b; + auto _d_r = _o->d_r; + auto _d_g = _o->d_g; + auto _d_b = _o->d_b; + auto _r = _o->r; + auto _g = _o->g; + auto _b = _o->b; + auto _col_fade_speed = _o->col_fade_speed; + auto _fade_to_black = _o->fade_to_black; + auto _s_life = _o->s_life; + auto _life = _o->life; + auto _blend_mode = _o->blend_mode; + auto _extras = _o->extras; + auto _dynamic = _o->dynamic; + auto _fx_obj = _o->fx_obj; + auto _room_number = _o->room_number; + auto _node_number = _o->node_number; + return TEN::Save::CreateParticleInfo( + _fbb, + _x, + _y, + _z, + _x_vel, + _y_vel, + _z_vel, + _gravity, + _rot_ang, + _flags, + _s_size, + _d_size, + _size, + _friction, + _scalar, + _sprite_index, + _rot_add, + _max_y_vel, + _on, + _s_r, + _s_g, + _s_b, + _d_r, + _d_g, + _d_b, + _r, + _g, + _b, + _col_fade_speed, + _fade_to_black, + _s_life, + _life, + _blend_mode, + _extras, + _dynamic, + _fx_obj, + _room_number, + _node_number); +} + +inline SwarmObjectInfoT *SwarmObjectInfo::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void SwarmObjectInfo::UnPackTo(SwarmObjectInfoT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = on(); _o->on = _e; } + { auto _e = pose(); if (_e) _o->pose = std::unique_ptr(new TEN::Save::Position(*_e)); } + { auto _e = room_number(); _o->room_number = _e; } + { auto _e = flags(); _o->flags = _e; } +} + +inline flatbuffers::Offset SwarmObjectInfo::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SwarmObjectInfoT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateSwarmObjectInfo(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateSwarmObjectInfo(flatbuffers::FlatBufferBuilder &_fbb, const SwarmObjectInfoT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SwarmObjectInfoT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _on = _o->on; + auto _pose = _o->pose ? _o->pose.get() : 0; + auto _room_number = _o->room_number; + auto _flags = _o->flags; + return TEN::Save::CreateSwarmObjectInfo( + _fbb, + _on, + _pose, + _room_number, + _flags); +} + +inline RopeT *Rope::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Rope::UnPackTo(RopeT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = segments(); if (_e) { _o->segments.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->segments[_i] = *_e->Get(_i); } } } + { auto _e = velocities(); if (_e) { _o->velocities.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->velocities[_i] = *_e->Get(_i); } } } + { auto _e = normalised_segments(); if (_e) { _o->normalised_segments.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->normalised_segments[_i] = *_e->Get(_i); } } } + { auto _e = mesh_segments(); if (_e) { _o->mesh_segments.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->mesh_segments[_i] = *_e->Get(_i); } } } + { auto _e = position(); if (_e) _o->position = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = coords(); if (_e) { _o->coords.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->coords[_i] = *_e->Get(_i); } } } + { auto _e = segment_length(); _o->segment_length = _e; } + { auto _e = active(); _o->active = _e; } + { auto _e = coiled(); _o->coiled = _e; } +} + +inline flatbuffers::Offset Rope::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RopeT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateRope(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateRope(flatbuffers::FlatBufferBuilder &_fbb, const RopeT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RopeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _segments = _fbb.CreateVectorOfStructs(_o->segments); + auto _velocities = _fbb.CreateVectorOfStructs(_o->velocities); + auto _normalised_segments = _fbb.CreateVectorOfStructs(_o->normalised_segments); + auto _mesh_segments = _fbb.CreateVectorOfStructs(_o->mesh_segments); + auto _position = _o->position ? _o->position.get() : 0; + auto _coords = _fbb.CreateVectorOfStructs(_o->coords); + auto _segment_length = _o->segment_length; + auto _active = _o->active; + auto _coiled = _o->coiled; + return TEN::Save::CreateRope( + _fbb, + _segments, + _velocities, + _normalised_segments, + _mesh_segments, + _position, + _coords, + _segment_length, + _active, + _coiled); +} + +inline PendulumT *Pendulum::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Pendulum::UnPackTo(PendulumT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = position(); if (_e) _o->position = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = velocity(); if (_e) _o->velocity = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = node(); _o->node = _e; } +} + +inline flatbuffers::Offset Pendulum::Pack(flatbuffers::FlatBufferBuilder &_fbb, const PendulumT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreatePendulum(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreatePendulum(flatbuffers::FlatBufferBuilder &_fbb, const PendulumT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const PendulumT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _position = _o->position ? _o->position.get() : 0; + auto _velocity = _o->velocity ? _o->velocity.get() : 0; + auto _node = _o->node; + return TEN::Save::CreatePendulum( + _fbb, + _position, + _velocity, + _node); +} + +inline EventSetCallCountersT *EventSetCallCounters::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void EventSetCallCounters::UnPackTo(EventSetCallCountersT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = on_enter(); _o->on_enter = _e; } + { auto _e = on_inside(); _o->on_inside = _e; } + { auto _e = on_leave(); _o->on_leave = _e; } +} + +inline flatbuffers::Offset EventSetCallCounters::Pack(flatbuffers::FlatBufferBuilder &_fbb, const EventSetCallCountersT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateEventSetCallCounters(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateEventSetCallCounters(flatbuffers::FlatBufferBuilder &_fbb, const EventSetCallCountersT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const EventSetCallCountersT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _on_enter = _o->on_enter; + auto _on_inside = _o->on_inside; + auto _on_leave = _o->on_leave; + return TEN::Save::CreateEventSetCallCounters( + _fbb, + _on_enter, + _on_inside, + _on_leave); +} + +inline VolumeStateT *VolumeState::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void VolumeState::UnPackTo(VolumeStateT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = status(); _o->status = _e; } + { auto _e = activator(); _o->activator = _e; } + { auto _e = timestamp(); _o->timestamp = _e; } +} + +inline flatbuffers::Offset VolumeState::Pack(flatbuffers::FlatBufferBuilder &_fbb, const VolumeStateT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateVolumeState(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateVolumeState(flatbuffers::FlatBufferBuilder &_fbb, const VolumeStateT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const VolumeStateT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _status = _o->status; + auto _activator = _o->activator; + auto _timestamp = _o->timestamp; + return TEN::Save::CreateVolumeState( + _fbb, + _status, + _activator, + _timestamp); +} + +inline VolumeT *Volume::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void Volume::UnPackTo(VolumeT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = name(); if (_e) _o->name = _e->str(); } + { auto _e = number(); _o->number = _e; } + { auto _e = room_number(); _o->room_number = _e; } + { auto _e = enabled(); _o->enabled = _e; } + { auto _e = position(); if (_e) _o->position = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = rotation(); if (_e) _o->rotation = std::unique_ptr(new TEN::Save::Vector4(*_e)); } + { auto _e = scale(); if (_e) _o->scale = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = queue(); if (_e) { _o->queue.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->queue[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } +} + +inline flatbuffers::Offset Volume::Pack(flatbuffers::FlatBufferBuilder &_fbb, const VolumeT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateVolume(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateVolume(flatbuffers::FlatBufferBuilder &_fbb, const VolumeT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const VolumeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _name = _o->name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->name); + auto _number = _o->number; + auto _room_number = _o->room_number; + auto _enabled = _o->enabled; + auto _position = _o->position ? _o->position.get() : 0; + auto _rotation = _o->rotation ? _o->rotation.get() : 0; + auto _scale = _o->scale ? _o->scale.get() : 0; + auto _queue = _fbb.CreateVector> (_o->queue.size(), [](size_t i, _VectorArgs *__va) { return CreateVolumeState(*__va->__fbb, __va->__o->queue[i].get(), __va->__rehasher); }, &_va ); + return TEN::Save::CreateVolume( + _fbb, + _name, + _number, + _room_number, + _enabled, + _position, + _rotation, + _scale, + _queue); +} + +inline ScriptTableT *ScriptTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void ScriptTable::UnPackTo(ScriptTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = keys_vals(); if (_e) { _o->keys_vals.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->keys_vals[_i] = *_e->Get(_i); } } } +} + +inline flatbuffers::Offset ScriptTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const ScriptTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateScriptTable(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateScriptTable(flatbuffers::FlatBufferBuilder &_fbb, const ScriptTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const ScriptTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _keys_vals = _fbb.CreateVectorOfStructs(_o->keys_vals); + return TEN::Save::CreateScriptTable( + _fbb, + _keys_vals); +} + +inline stringTableT *stringTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void stringTable::UnPackTo(stringTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = str(); if (_e) _o->str = _e->str(); } +} + +inline flatbuffers::Offset stringTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const stringTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreatestringTable(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreatestringTable(flatbuffers::FlatBufferBuilder &_fbb, const stringTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const stringTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _str = _o->str.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->str); + return TEN::Save::CreatestringTable( + _fbb, + _str); +} + +inline doubleTableT *doubleTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void doubleTable::UnPackTo(doubleTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = scalar(); _o->scalar = _e; } +} + +inline flatbuffers::Offset doubleTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const doubleTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreatedoubleTable(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreatedoubleTable(flatbuffers::FlatBufferBuilder &_fbb, const doubleTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const doubleTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _scalar = _o->scalar; + return TEN::Save::CreatedoubleTable( + _fbb, + _scalar); +} + +inline boolTableT *boolTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void boolTable::UnPackTo(boolTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = scalar(); _o->scalar = _e; } +} + +inline flatbuffers::Offset boolTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const boolTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateboolTable(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateboolTable(flatbuffers::FlatBufferBuilder &_fbb, const boolTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const boolTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _scalar = _o->scalar; + return TEN::Save::CreateboolTable( + _fbb, + _scalar); +} + +inline vec2TableT *vec2Table::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void vec2Table::UnPackTo(vec2TableT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = vec(); if (_e) _o->vec = std::unique_ptr(new TEN::Save::Vector2(*_e)); } +} + +inline flatbuffers::Offset vec2Table::Pack(flatbuffers::FlatBufferBuilder &_fbb, const vec2TableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return Createvec2Table(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset Createvec2Table(flatbuffers::FlatBufferBuilder &_fbb, const vec2TableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const vec2TableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _vec = _o->vec ? _o->vec.get() : 0; + return TEN::Save::Createvec2Table( + _fbb, + _vec); +} + +inline vec3TableT *vec3Table::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void vec3Table::UnPackTo(vec3TableT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = vec(); if (_e) _o->vec = std::unique_ptr(new TEN::Save::Vector3(*_e)); } +} + +inline flatbuffers::Offset vec3Table::Pack(flatbuffers::FlatBufferBuilder &_fbb, const vec3TableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return Createvec3Table(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset Createvec3Table(flatbuffers::FlatBufferBuilder &_fbb, const vec3TableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const vec3TableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _vec = _o->vec ? _o->vec.get() : 0; + return TEN::Save::Createvec3Table( + _fbb, + _vec); +} + +inline rotationTableT *rotationTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void rotationTable::UnPackTo(rotationTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = vec(); if (_e) _o->vec = std::unique_ptr(new TEN::Save::Vector3(*_e)); } +} + +inline flatbuffers::Offset rotationTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const rotationTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreaterotationTable(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreaterotationTable(flatbuffers::FlatBufferBuilder &_fbb, const rotationTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const rotationTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _vec = _o->vec ? _o->vec.get() : 0; + return TEN::Save::CreaterotationTable( + _fbb, + _vec); +} + +inline colorTableT *colorTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void colorTable::UnPackTo(colorTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = color(); _o->color = _e; } +} + +inline flatbuffers::Offset colorTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const colorTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreatecolorTable(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreatecolorTable(flatbuffers::FlatBufferBuilder &_fbb, const colorTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const colorTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _color = _o->color; + return TEN::Save::CreatecolorTable( + _fbb, + _color); +} + +inline funcNameTableT *funcNameTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void funcNameTable::UnPackTo(funcNameTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = str(); if (_e) _o->str = _e->str(); } +} + +inline flatbuffers::Offset funcNameTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const funcNameTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreatefuncNameTable(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreatefuncNameTable(flatbuffers::FlatBufferBuilder &_fbb, const funcNameTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const funcNameTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _str = _o->str.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->str); + return TEN::Save::CreatefuncNameTable( + _fbb, + _str); +} + +inline UnionTableT *UnionTable::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void UnionTable::UnPackTo(UnionTableT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = u_type(); _o->u.type = _e; } + { auto _e = u(); if (_e) _o->u.value = TEN::Save::VarUnionUnion::UnPack(_e, u_type(), _resolver); } +} + +inline flatbuffers::Offset UnionTable::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnionTableT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateUnionTable(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateUnionTable(flatbuffers::FlatBufferBuilder &_fbb, const UnionTableT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnionTableT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _u_type = _o->u.type; + auto _u = _o->u.Pack(_fbb); + return TEN::Save::CreateUnionTable( + _fbb, + _u_type, + _u); +} + +inline UnionVecT *UnionVec::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void UnionVec::UnPackTo(UnionVecT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = members(); if (_e) { _o->members.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->members[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } +} + +inline flatbuffers::Offset UnionVec::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UnionVecT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateUnionVec(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateUnionVec(flatbuffers::FlatBufferBuilder &_fbb, const UnionVecT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UnionVecT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _members = _fbb.CreateVector> (_o->members.size(), [](size_t i, _VectorArgs *__va) { return CreateUnionTable(*__va->__fbb, __va->__o->members[i].get(), __va->__rehasher); }, &_va ); + return TEN::Save::CreateUnionVec( + _fbb, + _members); +} + +inline SaveGameHeaderT *SaveGameHeader::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void SaveGameHeader::UnPackTo(SaveGameHeaderT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = level_name(); if (_e) _o->level_name = _e->str(); } + { auto _e = days(); _o->days = _e; } + { auto _e = hours(); _o->hours = _e; } + { auto _e = minutes(); _o->minutes = _e; } + { auto _e = seconds(); _o->seconds = _e; } + { auto _e = level(); _o->level = _e; } + { auto _e = timer(); _o->timer = _e; } + { auto _e = count(); _o->count = _e; } +} + +inline flatbuffers::Offset SaveGameHeader::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameHeaderT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateSaveGameHeader(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateSaveGameHeader(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameHeaderT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SaveGameHeaderT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _level_name = _o->level_name.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->level_name); + auto _days = _o->days; + auto _hours = _o->hours; + auto _minutes = _o->minutes; + auto _seconds = _o->seconds; + auto _level = _o->level; + auto _timer = _o->timer; + auto _count = _o->count; + return TEN::Save::CreateSaveGameHeader( + _fbb, + _level_name, + _days, + _hours, + _minutes, + _seconds, + _level, + _timer, + _count); +} + +inline SaveGameStatisticsT *SaveGameStatistics::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void SaveGameStatistics::UnPackTo(SaveGameStatisticsT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = ammo_hits(); _o->ammo_hits = _e; } + { auto _e = ammo_used(); _o->ammo_used = _e; } + { auto _e = medipacks_used(); _o->medipacks_used = _e; } + { auto _e = distance(); _o->distance = _e; } + { auto _e = kills(); _o->kills = _e; } + { auto _e = secrets(); _o->secrets = _e; } + { auto _e = timer(); _o->timer = _e; } +} + +inline flatbuffers::Offset SaveGameStatistics::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameStatisticsT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateSaveGameStatistics(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateSaveGameStatistics(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameStatisticsT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SaveGameStatisticsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _ammo_hits = _o->ammo_hits; + auto _ammo_used = _o->ammo_used; + auto _medipacks_used = _o->medipacks_used; + auto _distance = _o->distance; + auto _kills = _o->kills; + auto _secrets = _o->secrets; + auto _timer = _o->timer; + return TEN::Save::CreateSaveGameStatistics( + _fbb, + _ammo_hits, + _ammo_used, + _medipacks_used, + _distance, + _kills, + _secrets, + _timer); +} + +inline SaveGameT *SaveGame::UnPack(const flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void SaveGame::UnPackTo(SaveGameT *_o, const flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = header(); if (_e) _o->header = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = game(); if (_e) _o->game = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = level(); if (_e) _o->level = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = lara(); if (_e) _o->lara = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = rooms(); if (_e) { _o->rooms.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->rooms[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = items(); if (_e) { _o->items.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->items[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = next_item_free(); _o->next_item_free = _e; } + { auto _e = next_item_active(); _o->next_item_active = _e; } + { auto _e = room_items(); if (_e) { _o->room_items.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->room_items[_i] = _e->Get(_i); } } } + { auto _e = fxinfos(); if (_e) { _o->fxinfos.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->fxinfos[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = next_fx_free(); _o->next_fx_free = _e; } + { auto _e = next_fx_active(); _o->next_fx_active = _e; } + { auto _e = fixed_cameras(); if (_e) { _o->fixed_cameras.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->fixed_cameras[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = sinks(); if (_e) { _o->sinks.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->sinks[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = static_meshes(); if (_e) { _o->static_meshes.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->static_meshes[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = flyby_cameras(); if (_e) { _o->flyby_cameras.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->flyby_cameras[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = particles(); if (_e) { _o->particles.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->particles[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = rats(); if (_e) { _o->rats.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->rats[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = spiders(); if (_e) { _o->spiders.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->spiders[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = scarabs(); if (_e) { _o->scarabs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->scarabs[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = bats(); if (_e) { _o->bats.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->bats[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = flip_maps(); if (_e) { _o->flip_maps.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->flip_maps[_i] = _e->Get(_i); } } } + { auto _e = flip_stats(); if (_e) { _o->flip_stats.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->flip_stats[_i] = _e->Get(_i); } } } + { auto _e = flip_effect(); _o->flip_effect = _e; } + { auto _e = flip_timer(); _o->flip_timer = _e; } + { auto _e = flip_status(); _o->flip_status = _e; } + { auto _e = current_fov(); _o->current_fov = _e; } + { auto _e = action_queue(); if (_e) { _o->action_queue.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->action_queue[_i] = _e->Get(_i); } } } + { auto _e = ambient_track(); if (_e) _o->ambient_track = _e->str(); } + { auto _e = ambient_position(); _o->ambient_position = _e; } + { auto _e = oneshot_track(); if (_e) _o->oneshot_track = _e->str(); } + { auto _e = oneshot_position(); _o->oneshot_position = _e; } + { auto _e = cd_flags(); if (_e) { _o->cd_flags.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->cd_flags[_i] = _e->Get(_i); } } } + { auto _e = rope(); if (_e) _o->rope = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = pendulum(); if (_e) _o->pendulum = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = alternate_pendulum(); if (_e) _o->alternate_pendulum = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = volumes(); if (_e) { _o->volumes.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->volumes[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = call_counters(); if (_e) { _o->call_counters.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->call_counters[_i] = std::unique_ptr(_e->Get(_i)->UnPack(_resolver)); } } } + { auto _e = script_vars(); if (_e) _o->script_vars = std::unique_ptr(_e->UnPack(_resolver)); } + { auto _e = callbacks_pre_start(); if (_e) { _o->callbacks_pre_start.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_pre_start[_i] = _e->Get(_i)->str(); } } } + { auto _e = callbacks_post_start(); if (_e) { _o->callbacks_post_start.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_post_start[_i] = _e->Get(_i)->str(); } } } + { auto _e = callbacks_pre_end(); if (_e) { _o->callbacks_pre_end.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_pre_end[_i] = _e->Get(_i)->str(); } } } + { auto _e = callbacks_post_end(); if (_e) { _o->callbacks_post_end.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_post_end[_i] = _e->Get(_i)->str(); } } } + { auto _e = callbacks_pre_save(); if (_e) { _o->callbacks_pre_save.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_pre_save[_i] = _e->Get(_i)->str(); } } } + { auto _e = callbacks_post_save(); if (_e) { _o->callbacks_post_save.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_post_save[_i] = _e->Get(_i)->str(); } } } + { auto _e = callbacks_pre_load(); if (_e) { _o->callbacks_pre_load.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_pre_load[_i] = _e->Get(_i)->str(); } } } + { auto _e = callbacks_post_load(); if (_e) { _o->callbacks_post_load.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_post_load[_i] = _e->Get(_i)->str(); } } } + { auto _e = callbacks_pre_control(); if (_e) { _o->callbacks_pre_control.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_pre_control[_i] = _e->Get(_i)->str(); } } } + { auto _e = callbacks_post_control(); if (_e) { _o->callbacks_post_control.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->callbacks_post_control[_i] = _e->Get(_i)->str(); } } } +} + +inline flatbuffers::Offset SaveGame::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameT* _o, const flatbuffers::rehasher_function_t *_rehasher) { + return CreateSaveGame(_fbb, _o, _rehasher); +} + +inline flatbuffers::Offset CreateSaveGame(flatbuffers::FlatBufferBuilder &_fbb, const SaveGameT *_o, const flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const SaveGameT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _header = _o->header ? CreateSaveGameHeader(_fbb, _o->header.get(), _rehasher) : 0; + auto _game = _o->game ? CreateSaveGameStatistics(_fbb, _o->game.get(), _rehasher) : 0; + auto _level = _o->level ? CreateSaveGameStatistics(_fbb, _o->level.get(), _rehasher) : 0; + auto _lara = _o->lara ? CreateLara(_fbb, _o->lara.get(), _rehasher) : 0; + auto _rooms = _fbb.CreateVector> (_o->rooms.size(), [](size_t i, _VectorArgs *__va) { return CreateRoom(*__va->__fbb, __va->__o->rooms[i].get(), __va->__rehasher); }, &_va ); + auto _items = _fbb.CreateVector> (_o->items.size(), [](size_t i, _VectorArgs *__va) { return CreateItem(*__va->__fbb, __va->__o->items[i].get(), __va->__rehasher); }, &_va ); + auto _next_item_free = _o->next_item_free; + auto _next_item_active = _o->next_item_active; + auto _room_items = _fbb.CreateVector(_o->room_items); + auto _fxinfos = _fbb.CreateVector> (_o->fxinfos.size(), [](size_t i, _VectorArgs *__va) { return CreateFXInfo(*__va->__fbb, __va->__o->fxinfos[i].get(), __va->__rehasher); }, &_va ); + auto _next_fx_free = _o->next_fx_free; + auto _next_fx_active = _o->next_fx_active; + auto _fixed_cameras = _fbb.CreateVector> (_o->fixed_cameras.size(), [](size_t i, _VectorArgs *__va) { return CreateFixedCamera(*__va->__fbb, __va->__o->fixed_cameras[i].get(), __va->__rehasher); }, &_va ); + auto _sinks = _fbb.CreateVector> (_o->sinks.size(), [](size_t i, _VectorArgs *__va) { return CreateSink(*__va->__fbb, __va->__o->sinks[i].get(), __va->__rehasher); }, &_va ); + auto _static_meshes = _fbb.CreateVector> (_o->static_meshes.size(), [](size_t i, _VectorArgs *__va) { return CreateStaticMeshInfo(*__va->__fbb, __va->__o->static_meshes[i].get(), __va->__rehasher); }, &_va ); + auto _flyby_cameras = _fbb.CreateVector> (_o->flyby_cameras.size(), [](size_t i, _VectorArgs *__va) { return CreateFlyByCamera(*__va->__fbb, __va->__o->flyby_cameras[i].get(), __va->__rehasher); }, &_va ); + auto _particles = _fbb.CreateVector> (_o->particles.size(), [](size_t i, _VectorArgs *__va) { return CreateParticleInfo(*__va->__fbb, __va->__o->particles[i].get(), __va->__rehasher); }, &_va ); + auto _rats = _fbb.CreateVector> (_o->rats.size(), [](size_t i, _VectorArgs *__va) { return CreateSwarmObjectInfo(*__va->__fbb, __va->__o->rats[i].get(), __va->__rehasher); }, &_va ); + auto _spiders = _fbb.CreateVector> (_o->spiders.size(), [](size_t i, _VectorArgs *__va) { return CreateSwarmObjectInfo(*__va->__fbb, __va->__o->spiders[i].get(), __va->__rehasher); }, &_va ); + auto _scarabs = _fbb.CreateVector> (_o->scarabs.size(), [](size_t i, _VectorArgs *__va) { return CreateSwarmObjectInfo(*__va->__fbb, __va->__o->scarabs[i].get(), __va->__rehasher); }, &_va ); + auto _bats = _fbb.CreateVector> (_o->bats.size(), [](size_t i, _VectorArgs *__va) { return CreateSwarmObjectInfo(*__va->__fbb, __va->__o->bats[i].get(), __va->__rehasher); }, &_va ); + auto _flip_maps = _fbb.CreateVector(_o->flip_maps); + auto _flip_stats = _fbb.CreateVector(_o->flip_stats); + auto _flip_effect = _o->flip_effect; + auto _flip_timer = _o->flip_timer; + auto _flip_status = _o->flip_status; + auto _current_fov = _o->current_fov; + auto _action_queue = _fbb.CreateVector(_o->action_queue); + auto _ambient_track = _o->ambient_track.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->ambient_track); + auto _ambient_position = _o->ambient_position; + auto _oneshot_track = _o->oneshot_track.empty() ? _fbb.CreateSharedString("") : _fbb.CreateString(_o->oneshot_track); + auto _oneshot_position = _o->oneshot_position; + auto _cd_flags = _fbb.CreateVector(_o->cd_flags); + auto _rope = _o->rope ? CreateRope(_fbb, _o->rope.get(), _rehasher) : 0; + auto _pendulum = _o->pendulum ? CreatePendulum(_fbb, _o->pendulum.get(), _rehasher) : 0; + auto _alternate_pendulum = _o->alternate_pendulum ? CreatePendulum(_fbb, _o->alternate_pendulum.get(), _rehasher) : 0; + auto _volumes = _fbb.CreateVector> (_o->volumes.size(), [](size_t i, _VectorArgs *__va) { return CreateVolume(*__va->__fbb, __va->__o->volumes[i].get(), __va->__rehasher); }, &_va ); + auto _call_counters = _fbb.CreateVector> (_o->call_counters.size(), [](size_t i, _VectorArgs *__va) { return CreateEventSetCallCounters(*__va->__fbb, __va->__o->call_counters[i].get(), __va->__rehasher); }, &_va ); + auto _script_vars = _o->script_vars ? CreateUnionVec(_fbb, _o->script_vars.get(), _rehasher) : 0; + auto _callbacks_pre_start = _fbb.CreateVectorOfStrings(_o->callbacks_pre_start); + auto _callbacks_post_start = _fbb.CreateVectorOfStrings(_o->callbacks_post_start); + auto _callbacks_pre_end = _fbb.CreateVectorOfStrings(_o->callbacks_pre_end); + auto _callbacks_post_end = _fbb.CreateVectorOfStrings(_o->callbacks_post_end); + auto _callbacks_pre_save = _fbb.CreateVectorOfStrings(_o->callbacks_pre_save); + auto _callbacks_post_save = _fbb.CreateVectorOfStrings(_o->callbacks_post_save); + auto _callbacks_pre_load = _fbb.CreateVectorOfStrings(_o->callbacks_pre_load); + auto _callbacks_post_load = _fbb.CreateVectorOfStrings(_o->callbacks_post_load); + auto _callbacks_pre_control = _fbb.CreateVectorOfStrings(_o->callbacks_pre_control); + auto _callbacks_post_control = _fbb.CreateVectorOfStrings(_o->callbacks_post_control); + return TEN::Save::CreateSaveGame( + _fbb, + _header, + _game, + _level, + _lara, + _rooms, + _items, + _next_item_free, + _next_item_active, + _room_items, + _fxinfos, + _next_fx_free, + _next_fx_active, + _fixed_cameras, + _sinks, + _static_meshes, + _flyby_cameras, + _particles, + _rats, + _spiders, + _scarabs, + _bats, + _flip_maps, + _flip_stats, + _flip_effect, + _flip_timer, + _flip_status, + _current_fov, + _action_queue, + _ambient_track, + _ambient_position, + _oneshot_track, + _oneshot_position, + _cd_flags, + _rope, + _pendulum, + _alternate_pendulum, + _volumes, + _call_counters, + _script_vars, + _callbacks_pre_start, + _callbacks_post_start, + _callbacks_pre_end, + _callbacks_post_end, + _callbacks_pre_save, + _callbacks_post_save, + _callbacks_pre_load, + _callbacks_post_load, + _callbacks_pre_control, + _callbacks_post_control); +} + +inline bool VerifyVarUnion(flatbuffers::Verifier &verifier, const void *obj, VarUnion type) { + switch (type) { + case VarUnion::NONE: { + return true; + } + case VarUnion::str: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case VarUnion::tab: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case VarUnion::num: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case VarUnion::boolean: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case VarUnion::vec2: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case VarUnion::vec3: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case VarUnion::rotation: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case VarUnion::color: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + case VarUnion::funcName: { + auto ptr = reinterpret_cast(obj); + return verifier.VerifyTable(ptr); + } + default: return true; + } +} + +inline bool VerifyVarUnionVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector> *values, const flatbuffers::Vector *types) { + if (!values || !types) return !values && !types; + if (values->size() != types->size()) return false; + for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) { + if (!VerifyVarUnion( + verifier, values->Get(i), types->GetEnum(i))) { + return false; + } + } + return true; +} + +inline void *VarUnionUnion::UnPack(const void *obj, VarUnion type, const flatbuffers::resolver_function_t *resolver) { + switch (type) { + case VarUnion::str: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case VarUnion::tab: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case VarUnion::num: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case VarUnion::boolean: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case VarUnion::vec2: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case VarUnion::vec3: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case VarUnion::rotation: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case VarUnion::color: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + case VarUnion::funcName: { + auto ptr = reinterpret_cast(obj); + return ptr->UnPack(resolver); + } + default: return nullptr; + } +} + +inline flatbuffers::Offset VarUnionUnion::Pack(flatbuffers::FlatBufferBuilder &_fbb, const flatbuffers::rehasher_function_t *_rehasher) const { + switch (type) { + case VarUnion::str: { + auto ptr = reinterpret_cast(value); + return CreatestringTable(_fbb, ptr, _rehasher).Union(); + } + case VarUnion::tab: { + auto ptr = reinterpret_cast(value); + return CreateScriptTable(_fbb, ptr, _rehasher).Union(); + } + case VarUnion::num: { + auto ptr = reinterpret_cast(value); + return CreatedoubleTable(_fbb, ptr, _rehasher).Union(); + } + case VarUnion::boolean: { + auto ptr = reinterpret_cast(value); + return CreateboolTable(_fbb, ptr, _rehasher).Union(); + } + case VarUnion::vec2: { + auto ptr = reinterpret_cast(value); + return Createvec2Table(_fbb, ptr, _rehasher).Union(); + } + case VarUnion::vec3: { + auto ptr = reinterpret_cast(value); + return Createvec3Table(_fbb, ptr, _rehasher).Union(); + } + case VarUnion::rotation: { + auto ptr = reinterpret_cast(value); + return CreaterotationTable(_fbb, ptr, _rehasher).Union(); + } + case VarUnion::color: { + auto ptr = reinterpret_cast(value); + return CreatecolorTable(_fbb, ptr, _rehasher).Union(); + } + case VarUnion::funcName: { + auto ptr = reinterpret_cast(value); + return CreatefuncNameTable(_fbb, ptr, _rehasher).Union(); + } + default: return 0; + } +} + +inline VarUnionUnion::VarUnionUnion(const VarUnionUnion &u) : type(u.type), value(nullptr) { + switch (type) { + case VarUnion::str: { + value = new TEN::Save::stringTableT(*reinterpret_cast(u.value)); + break; + } + case VarUnion::tab: { + FLATBUFFERS_ASSERT(false); // TEN::Save::ScriptTableT not copyable. + break; + } + case VarUnion::num: { + value = new TEN::Save::doubleTableT(*reinterpret_cast(u.value)); + break; + } + case VarUnion::boolean: { + value = new TEN::Save::boolTableT(*reinterpret_cast(u.value)); + break; + } + case VarUnion::vec2: { + FLATBUFFERS_ASSERT(false); // TEN::Save::vec2TableT not copyable. + break; + } + case VarUnion::vec3: { + FLATBUFFERS_ASSERT(false); // TEN::Save::vec3TableT not copyable. + break; + } + case VarUnion::rotation: { + FLATBUFFERS_ASSERT(false); // TEN::Save::rotationTableT not copyable. + break; + } + case VarUnion::color: { + value = new TEN::Save::colorTableT(*reinterpret_cast(u.value)); + break; + } + case VarUnion::funcName: { + value = new TEN::Save::funcNameTableT(*reinterpret_cast(u.value)); + break; + } + default: + break; + } +} + +inline void VarUnionUnion::Reset() { + switch (type) { + case VarUnion::str: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case VarUnion::tab: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case VarUnion::num: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case VarUnion::boolean: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case VarUnion::vec2: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case VarUnion::vec3: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case VarUnion::rotation: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case VarUnion::color: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + case VarUnion::funcName: { + auto ptr = reinterpret_cast(value); + delete ptr; + break; + } + default: break; + } + value = nullptr; + type = VarUnion::NONE; +} + +inline const TEN::Save::SaveGame *GetSaveGame(const void *buf) { + return flatbuffers::GetRoot(buf); +} + +inline const TEN::Save::SaveGame *GetSizePrefixedSaveGame(const void *buf) { + return flatbuffers::GetSizePrefixedRoot(buf); +} + +inline bool VerifySaveGameBuffer( + flatbuffers::Verifier &verifier) { + return verifier.VerifyBuffer(nullptr); +} + +inline bool VerifySizePrefixedSaveGameBuffer( + flatbuffers::Verifier &verifier) { + return verifier.VerifySizePrefixedBuffer(nullptr); +} + +inline void FinishSaveGameBuffer( + flatbuffers::FlatBufferBuilder &fbb, + flatbuffers::Offset root) { + fbb.Finish(root); +} + +inline void FinishSizePrefixedSaveGameBuffer( + flatbuffers::FlatBufferBuilder &fbb, + flatbuffers::Offset root) { + fbb.FinishSizePrefixed(root); +} + +inline std::unique_ptr UnPackSaveGame( + const void *buf, + const flatbuffers::resolver_function_t *res = nullptr) { + return std::unique_ptr(GetSaveGame(buf)->UnPack(res)); +} + +inline std::unique_ptr UnPackSizePrefixedSaveGame( + const void *buf, + const flatbuffers::resolver_function_t *res = nullptr) { + return std::unique_ptr(GetSizePrefixedSaveGame(buf)->UnPack(res)); +} + +} // namespace Save +} // namespace TEN + +#endif // FLATBUFFERS_GENERATED_TENSAVEGAME_TEN_SAVE_H_ diff --git a/TombEngine/TombEngine - Backup.vcxproj.user b/TombEngine/TombEngine - Backup.vcxproj.user new file mode 100644 index 000000000..216214194 --- /dev/null +++ b/TombEngine/TombEngine - Backup.vcxproj.user @@ -0,0 +1,41 @@ +<<<<<<< HEAD + + + + true + + + $(SolutionDir)Build\$(Configuration)\ + WindowsLocalDebugger + /debug + + + $(SolutionDir)Build\$(Configuration)\ + WindowsLocalDebugger + +======= + + + + true + + + $(SolutionDir)Build\$(Configuration)\Bin\x86 + WindowsLocalDebugger + /debug + + + $(SolutionDir)Build\$(Configuration)\Bin\x64 + WindowsLocalDebugger + /debug + + + $(SolutionDir)Build\$(Configuration)\Bin\x86 + WindowsLocalDebugger + + + $(SolutionDir)Build\$(Configuration)\Bin\x64 + WindowsLocalDebugger + +>>>>>>> develop + \ No newline at end of file diff --git a/TombEngine/TombEngine.vcxproj b/TombEngine/TombEngine.vcxproj index 3bdd6feca..3e22b17f7 100644 --- a/TombEngine/TombEngine.vcxproj +++ b/TombEngine/TombEngine.vcxproj @@ -645,6 +645,7 @@ xcopy /Y "$(SolutionDir)Libs\zlib\x64\*.dll" "$(TargetDir)" + @@ -681,6 +682,7 @@ xcopy /Y "$(SolutionDir)Libs\zlib\x64\*.dll" "$(TargetDir)" + diff --git a/TombEngine/TombEngine.vcxproj.user b/TombEngine/TombEngine.vcxproj.user index 52de36765..87f9785ad 100644 --- a/TombEngine/TombEngine.vcxproj.user +++ b/TombEngine/TombEngine.vcxproj.user @@ -1,24 +1,24 @@ - - - - true - - - $(SolutionDir)Build\$(Configuration)\Bin\x86 - WindowsLocalDebugger - /debug - - - $(SolutionDir)Build\$(Configuration)\Bin\x64 - WindowsLocalDebugger - /debug - - - $(SolutionDir)Build\$(Configuration)\Bin\x86 - WindowsLocalDebugger - - - $(SolutionDir)Build\$(Configuration)\Bin\x64 - WindowsLocalDebugger - + + + + /debug + $(SolutionDir)Build\$(Configuration)\Bin\x86 + WindowsLocalDebugger + + + /debug + $(SolutionDir)Build\$(Configuration)\Bin\x64 + WindowsLocalDebugger + + + $(SolutionDir)Build\$(Configuration)\Bin\x64 + WindowsLocalDebugger + + + $(SolutionDir)Build\$(Configuration)\Bin\x86 + WindowsLocalDebugger + + + true + \ No newline at end of file