From 11a95cd92c2d0adc419bc7321071660ae941b2a4 Mon Sep 17 00:00:00 2001 From: Lwmte <3331699+Lwmte@users.noreply.github.com> Date: Thu, 6 Mar 2025 21:17:19 +0100 Subject: [PATCH] Some fixes --- TombEngine/Game/savegame.cpp | 27 ++++--- .../Internal/TEN/Flow/LensFlare/LensFlare.cpp | 14 ++-- .../Internal/TEN/Flow/Starfield/Starfield.cpp | 10 +-- .../flatbuffers/ten_savegame_generated.h | 72 +++++++++---------- .../Specific/savegame/schema/ten_savegame.fbs | 8 +-- 5 files changed, 66 insertions(+), 65 deletions(-) diff --git a/TombEngine/Game/savegame.cpp b/TombEngine/Game/savegame.cpp index 72de3d017..cc084d7fe 100644 --- a/TombEngine/Game/savegame.cpp +++ b/TombEngine/Game/savegame.cpp @@ -1091,16 +1091,16 @@ const std::vector SaveGame::Build() auto* level = (Level*)g_GameFlow->GetLevel(CurrentLevel); Save::LevelDataBuilder levelData { fbb }; levelData.add_fog_enabled(level->Fog.Enabled); - levelData.add_fog_color(&Save::Vector3(level->Fog.R, level->Fog.G, level->Fog.B)); + levelData.add_fog_color(level->Fog.GetColor()); levelData.add_fog_min_distance(level->Fog.MinDistance); levelData.add_fog_max_distance(level->Fog.MaxDistance); - levelData.add_lensflare_color(&FromVector3(level->LensFlare.GetColor())); + levelData.add_lensflare_color(level->LensFlare.GetColor()); levelData.add_lensflare_pitch(level->LensFlare.GetPitch()); levelData.add_lensflare_yaw(level->LensFlare.GetYaw()); levelData.add_lensflare_sprite_id(level->LensFlare.GetSunSpriteID()); levelData.add_level_far_view(level->LevelFarView); - levelData.add_sky_layer_1_color(&FromVector3(level->GetSkyLayerColor(0))); - levelData.add_sky_layer_2_color(&FromVector3(level->GetSkyLayerColor(1))); + levelData.add_sky_layer_1_color(level->GetSkyLayerColor(0)); + levelData.add_sky_layer_2_color(level->GetSkyLayerColor(1)); levelData.add_sky_layer_1_enabled(level->GetSkyLayerEnabled(0)); levelData.add_sky_layer_2_enabled(level->GetSkyLayerEnabled(1)); levelData.add_sky_layer_1_speed(level->GetSkyLayerSpeed(0)); @@ -1763,29 +1763,28 @@ static void ParseLua(const Save::SaveGame* s, bool hubMode) auto* level = (Level*)g_GameFlow->GetLevel(CurrentLevel); - level->Fog.R = (byte)s->level_data()->fog_color()->x(); - level->Fog.G = (byte)s->level_data()->fog_color()->y(); - level->Fog.B = (byte)s->level_data()->fog_color()->z(); level->Fog.Enabled = s->level_data()->fog_enabled(); level->Fog.MaxDistance = s->level_data()->fog_max_distance(); level->Fog.MinDistance = s->level_data()->fog_min_distance(); + level->Fog.SetColor(s->level_data()->fog_color()); level->Layer1.Enabled = s->level_data()->sky_layer_1_enabled(); level->Layer1.CloudSpeed = s->level_data()->sky_layer_1_speed(); - level->Layer1.R = (byte)s->level_data()->sky_layer_1_color()->x(); - level->Layer1.G = (byte)s->level_data()->sky_layer_1_color()->y(); - level->Layer1.B = (byte)s->level_data()->sky_layer_1_color()->z(); + level->Layer1.SetColor(s->level_data()->sky_layer_1_color()); level->Layer2.Enabled = s->level_data()->sky_layer_2_enabled(); level->Layer2.CloudSpeed = s->level_data()->sky_layer_2_speed(); - level->Layer2.R = (byte)s->level_data()->sky_layer_2_color()->x(); - level->Layer2.G = (byte)s->level_data()->sky_layer_2_color()->y(); - level->Layer2.B = (byte)s->level_data()->sky_layer_2_color()->z(); + level->Layer2.SetColor(s->level_data()->sky_layer_2_color()); - level->LensFlare.SetColor(ToVector3(s->level_data()->lensflare_color())); level->LensFlare.SetSunSpriteID(s->level_data()->lensflare_sprite_id()); level->LensFlare.SetPitch(s->level_data()->lensflare_pitch()); level->LensFlare.SetYaw(s->level_data()->lensflare_yaw()); + level->LensFlare.SetColor(s->level_data()->lensflare_color()); + + level->Starfield.SetStarCount(s->level_data()->starfield_star_count()); + level->Starfield.SetMeteorCount(s->level_data()->starfield_meteor_count()); + level->Starfield.SetMeteorSpawnDensity(s->level_data()->starfield_meteor_spawn_density()); + level->Starfield.SetMeteorVelocity(s->level_data()->starfield_meteor_velocity()); level->Storm = s->level_data()->storm_enabled(); level->Weather = (WeatherType)s->level_data()->weather_type(); diff --git a/TombEngine/Scripting/Internal/TEN/Flow/LensFlare/LensFlare.cpp b/TombEngine/Scripting/Internal/TEN/Flow/LensFlare/LensFlare.cpp index fc777b61e..30e0718a0 100644 --- a/TombEngine/Scripting/Internal/TEN/Flow/LensFlare/LensFlare.cpp +++ b/TombEngine/Scripting/Internal/TEN/Flow/LensFlare/LensFlare.cpp @@ -39,9 +39,9 @@ namespace TEN::Scripting /// Create a LensFlare object. // @function LensFlare - // @tparam float Pitch angle in degrees. - // @tparam float Yaw angle in degrees. - // @tparam Color Color. + // @tparam float pitch Pitch angle in degrees. + // @tparam float yaw Yaw angle in degrees. + // @tparam Color color Color of the lensflare. // @treturn LensFlare A new LensFlare object. LensFlare::LensFlare(float pitch, float yaw, const ScriptColor& color) { @@ -91,7 +91,7 @@ namespace TEN::Scripting /// Set this lens flare's sun sprite ID. // @function LensFlare:SetSunSpriteID - // @tparam int New sun sprite ID. + // @tparam int spriteID New sun sprite ID. void LensFlare::SetSunSpriteID(int spriteID) { // Sprite ID out of range; return early. @@ -106,7 +106,7 @@ namespace TEN::Scripting /// Set this lens flare's pitch angle. // @function LensFlare:SetPitch - // @tparam float New pitch angle in degrees. + // @tparam float pitch New pitch angle in degrees. void LensFlare::SetPitch(float pitch) { _rotation.x = pitch; @@ -114,7 +114,7 @@ namespace TEN::Scripting /// Set this lens flare's yaw angle. // @function LensFlare:SetYaw - // @tparam float New yaw angle in degrees. + // @tparam float yaw New yaw angle in degrees. void LensFlare::SetYaw(float yaw) { _rotation.y = yaw; @@ -122,7 +122,7 @@ namespace TEN::Scripting /// Set this lens flare's color. // @function LensFlare:SetColor - // @tparam Color New color. + // @tparam Color color New color. void LensFlare::SetColor(const ScriptColor& color) { _color = color; diff --git a/TombEngine/Scripting/Internal/TEN/Flow/Starfield/Starfield.cpp b/TombEngine/Scripting/Internal/TEN/Flow/Starfield/Starfield.cpp index 5b1b3de47..5502b8d59 100644 --- a/TombEngine/Scripting/Internal/TEN/Flow/Starfield/Starfield.cpp +++ b/TombEngine/Scripting/Internal/TEN/Flow/Starfield/Starfield.cpp @@ -50,6 +50,8 @@ namespace TEN::Scripting // @function Starfield // @tparam int starCount Star count. __Max: 6000__ // @tparam int meteorCount Meteor count. __Max: 100__ + // @tparam int meteorSpawnDensity Meteor spawn density. + // @tparam int meteorVel Meteor velocity. // @treturn Starfield A new Starfield object. Starfield::Starfield(int starCount, int meteorCount, int meteorSpawnDensity, float meteorVel) { @@ -115,7 +117,7 @@ namespace TEN::Scripting /// Set this starfield's number of stars. // @function Starfield:SetStarCount - // @tparam int New star count. + // @tparam int count New star count. void Starfield::SetStarCount(int count) { if (count < 0 || count > STAR_COUNT_MAX) @@ -126,7 +128,7 @@ namespace TEN::Scripting /// Set this starfield's number of meteors. // @function Starfield:SetMeteorCount - // @tparam int New meteor count. + // @tparam int count New meteor count. void Starfield::SetMeteorCount(int count) { if (count < 0 || count > METEOR_COUNT_MAX) @@ -137,7 +139,7 @@ namespace TEN::Scripting /// Set this starfield's meteor spawn density. // @function Starfield:SetMeteorSpawnDensity - // @tparam int New meteor spawn density. + // @tparam int density New meteor spawn density. void Starfield::SetMeteorSpawnDensity(int spawnDensity) { _meteorSpawnDensity = spawnDensity; @@ -145,7 +147,7 @@ namespace TEN::Scripting /// Set this starfield's meteor velocity. // @function Starfield:SetMeteorVelocity - // @tparam float New meteor velocity. + // @tparam float velocity New meteor velocity. void Starfield::SetMeteorVelocity(float vel) { _meteorVelocity = vel; diff --git a/TombEngine/Specific/savegame/flatbuffers/ten_savegame_generated.h b/TombEngine/Specific/savegame/flatbuffers/ten_savegame_generated.h index eedfa679d..73dbffaf6 100644 --- a/TombEngine/Specific/savegame/flatbuffers/ten_savegame_generated.h +++ b/TombEngine/Specific/savegame/flatbuffers/ten_savegame_generated.h @@ -548,19 +548,19 @@ struct LevelDataT : public flatbuffers::NativeTable { int32_t weather_type = 0; float weather_strength = 0.0f; bool fog_enabled = false; - std::unique_ptr fog_color{}; + int32_t fog_color = 0; int32_t fog_min_distance = 0; int32_t fog_max_distance = 0; bool sky_layer_1_enabled = false; - std::unique_ptr sky_layer_1_color{}; + int32_t sky_layer_1_color = 0; int32_t sky_layer_1_speed = 0; bool sky_layer_2_enabled = false; - std::unique_ptr sky_layer_2_color{}; + int32_t sky_layer_2_color = 0; int32_t sky_layer_2_speed = 0; int32_t lensflare_sprite_id = 0; float lensflare_pitch = 0.0f; float lensflare_yaw = 0.0f; - std::unique_ptr lensflare_color{}; + int32_t lensflare_color = 0; int32_t starfield_star_count = 0; int32_t starfield_meteor_count = 0; int32_t starfield_meteor_spawn_density = 0; @@ -610,8 +610,8 @@ struct LevelData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { bool fog_enabled() const { return GetField(VT_FOG_ENABLED, 0) != 0; } - const TEN::Save::Vector3 *fog_color() const { - return GetStruct(VT_FOG_COLOR); + int32_t fog_color() const { + return GetField(VT_FOG_COLOR, 0); } int32_t fog_min_distance() const { return GetField(VT_FOG_MIN_DISTANCE, 0); @@ -622,8 +622,8 @@ struct LevelData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { bool sky_layer_1_enabled() const { return GetField(VT_SKY_LAYER_1_ENABLED, 0) != 0; } - const TEN::Save::Vector3 *sky_layer_1_color() const { - return GetStruct(VT_SKY_LAYER_1_COLOR); + int32_t sky_layer_1_color() const { + return GetField(VT_SKY_LAYER_1_COLOR, 0); } int32_t sky_layer_1_speed() const { return GetField(VT_SKY_LAYER_1_SPEED, 0); @@ -631,8 +631,8 @@ struct LevelData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { bool sky_layer_2_enabled() const { return GetField(VT_SKY_LAYER_2_ENABLED, 0) != 0; } - const TEN::Save::Vector3 *sky_layer_2_color() const { - return GetStruct(VT_SKY_LAYER_2_COLOR); + int32_t sky_layer_2_color() const { + return GetField(VT_SKY_LAYER_2_COLOR, 0); } int32_t sky_layer_2_speed() const { return GetField(VT_SKY_LAYER_2_SPEED, 0); @@ -646,8 +646,8 @@ struct LevelData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { float lensflare_yaw() const { return GetField(VT_LENSFLARE_YAW, 0.0f); } - const TEN::Save::Vector3 *lensflare_color() const { - return GetStruct(VT_LENSFLARE_COLOR); + int32_t lensflare_color() const { + return GetField(VT_LENSFLARE_COLOR, 0); } int32_t starfield_star_count() const { return GetField(VT_STARFIELD_STAR_COUNT, 0); @@ -668,19 +668,19 @@ struct LevelData FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { VerifyField(verifier, VT_WEATHER_TYPE) && VerifyField(verifier, VT_WEATHER_STRENGTH) && VerifyField(verifier, VT_FOG_ENABLED) && - VerifyField(verifier, VT_FOG_COLOR) && + VerifyField(verifier, VT_FOG_COLOR) && VerifyField(verifier, VT_FOG_MIN_DISTANCE) && VerifyField(verifier, VT_FOG_MAX_DISTANCE) && VerifyField(verifier, VT_SKY_LAYER_1_ENABLED) && - VerifyField(verifier, VT_SKY_LAYER_1_COLOR) && + VerifyField(verifier, VT_SKY_LAYER_1_COLOR) && VerifyField(verifier, VT_SKY_LAYER_1_SPEED) && VerifyField(verifier, VT_SKY_LAYER_2_ENABLED) && - VerifyField(verifier, VT_SKY_LAYER_2_COLOR) && + VerifyField(verifier, VT_SKY_LAYER_2_COLOR) && VerifyField(verifier, VT_SKY_LAYER_2_SPEED) && VerifyField(verifier, VT_LENSFLARE_SPRITE_ID) && VerifyField(verifier, VT_LENSFLARE_PITCH) && VerifyField(verifier, VT_LENSFLARE_YAW) && - VerifyField(verifier, VT_LENSFLARE_COLOR) && + VerifyField(verifier, VT_LENSFLARE_COLOR) && VerifyField(verifier, VT_STARFIELD_STAR_COUNT) && VerifyField(verifier, VT_STARFIELD_METEOR_COUNT) && VerifyField(verifier, VT_STARFIELD_METEOR_SPAWN_DENSITY) && @@ -711,8 +711,8 @@ struct LevelDataBuilder { void add_fog_enabled(bool fog_enabled) { fbb_.AddElement(LevelData::VT_FOG_ENABLED, static_cast(fog_enabled), 0); } - void add_fog_color(const TEN::Save::Vector3 *fog_color) { - fbb_.AddStruct(LevelData::VT_FOG_COLOR, fog_color); + void add_fog_color(int32_t fog_color) { + fbb_.AddElement(LevelData::VT_FOG_COLOR, fog_color, 0); } void add_fog_min_distance(int32_t fog_min_distance) { fbb_.AddElement(LevelData::VT_FOG_MIN_DISTANCE, fog_min_distance, 0); @@ -723,8 +723,8 @@ struct LevelDataBuilder { void add_sky_layer_1_enabled(bool sky_layer_1_enabled) { fbb_.AddElement(LevelData::VT_SKY_LAYER_1_ENABLED, static_cast(sky_layer_1_enabled), 0); } - void add_sky_layer_1_color(const TEN::Save::Vector3 *sky_layer_1_color) { - fbb_.AddStruct(LevelData::VT_SKY_LAYER_1_COLOR, sky_layer_1_color); + void add_sky_layer_1_color(int32_t sky_layer_1_color) { + fbb_.AddElement(LevelData::VT_SKY_LAYER_1_COLOR, sky_layer_1_color, 0); } void add_sky_layer_1_speed(int32_t sky_layer_1_speed) { fbb_.AddElement(LevelData::VT_SKY_LAYER_1_SPEED, sky_layer_1_speed, 0); @@ -732,8 +732,8 @@ struct LevelDataBuilder { void add_sky_layer_2_enabled(bool sky_layer_2_enabled) { fbb_.AddElement(LevelData::VT_SKY_LAYER_2_ENABLED, static_cast(sky_layer_2_enabled), 0); } - void add_sky_layer_2_color(const TEN::Save::Vector3 *sky_layer_2_color) { - fbb_.AddStruct(LevelData::VT_SKY_LAYER_2_COLOR, sky_layer_2_color); + void add_sky_layer_2_color(int32_t sky_layer_2_color) { + fbb_.AddElement(LevelData::VT_SKY_LAYER_2_COLOR, sky_layer_2_color, 0); } void add_sky_layer_2_speed(int32_t sky_layer_2_speed) { fbb_.AddElement(LevelData::VT_SKY_LAYER_2_SPEED, sky_layer_2_speed, 0); @@ -747,8 +747,8 @@ struct LevelDataBuilder { void add_lensflare_yaw(float lensflare_yaw) { fbb_.AddElement(LevelData::VT_LENSFLARE_YAW, lensflare_yaw, 0.0f); } - void add_lensflare_color(const TEN::Save::Vector3 *lensflare_color) { - fbb_.AddStruct(LevelData::VT_LENSFLARE_COLOR, lensflare_color); + void add_lensflare_color(int32_t lensflare_color) { + fbb_.AddElement(LevelData::VT_LENSFLARE_COLOR, lensflare_color, 0); } void add_starfield_star_count(int32_t starfield_star_count) { fbb_.AddElement(LevelData::VT_STARFIELD_STAR_COUNT, starfield_star_count, 0); @@ -780,19 +780,19 @@ inline flatbuffers::Offset CreateLevelData( int32_t weather_type = 0, float weather_strength = 0.0f, bool fog_enabled = false, - const TEN::Save::Vector3 *fog_color = 0, + int32_t fog_color = 0, int32_t fog_min_distance = 0, int32_t fog_max_distance = 0, bool sky_layer_1_enabled = false, - const TEN::Save::Vector3 *sky_layer_1_color = 0, + int32_t sky_layer_1_color = 0, int32_t sky_layer_1_speed = 0, bool sky_layer_2_enabled = false, - const TEN::Save::Vector3 *sky_layer_2_color = 0, + int32_t sky_layer_2_color = 0, int32_t sky_layer_2_speed = 0, int32_t lensflare_sprite_id = 0, float lensflare_pitch = 0.0f, float lensflare_yaw = 0.0f, - const TEN::Save::Vector3 *lensflare_color = 0, + int32_t lensflare_color = 0, int32_t starfield_star_count = 0, int32_t starfield_meteor_count = 0, int32_t starfield_meteor_spawn_density = 0, @@ -8734,19 +8734,19 @@ inline void LevelData::UnPackTo(LevelDataT *_o, const flatbuffers::resolver_func { auto _e = weather_type(); _o->weather_type = _e; } { auto _e = weather_strength(); _o->weather_strength = _e; } { auto _e = fog_enabled(); _o->fog_enabled = _e; } - { auto _e = fog_color(); if (_e) _o->fog_color = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = fog_color(); _o->fog_color = _e; } { auto _e = fog_min_distance(); _o->fog_min_distance = _e; } { auto _e = fog_max_distance(); _o->fog_max_distance = _e; } { auto _e = sky_layer_1_enabled(); _o->sky_layer_1_enabled = _e; } - { auto _e = sky_layer_1_color(); if (_e) _o->sky_layer_1_color = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = sky_layer_1_color(); _o->sky_layer_1_color = _e; } { auto _e = sky_layer_1_speed(); _o->sky_layer_1_speed = _e; } { auto _e = sky_layer_2_enabled(); _o->sky_layer_2_enabled = _e; } - { auto _e = sky_layer_2_color(); if (_e) _o->sky_layer_2_color = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = sky_layer_2_color(); _o->sky_layer_2_color = _e; } { auto _e = sky_layer_2_speed(); _o->sky_layer_2_speed = _e; } { auto _e = lensflare_sprite_id(); _o->lensflare_sprite_id = _e; } { auto _e = lensflare_pitch(); _o->lensflare_pitch = _e; } { auto _e = lensflare_yaw(); _o->lensflare_yaw = _e; } - { auto _e = lensflare_color(); if (_e) _o->lensflare_color = std::unique_ptr(new TEN::Save::Vector3(*_e)); } + { auto _e = lensflare_color(); _o->lensflare_color = _e; } { auto _e = starfield_star_count(); _o->starfield_star_count = _e; } { auto _e = starfield_meteor_count(); _o->starfield_meteor_count = _e; } { auto _e = starfield_meteor_spawn_density(); _o->starfield_meteor_spawn_density = _e; } @@ -8766,19 +8766,19 @@ inline flatbuffers::Offset CreateLevelData(flatbuffers::FlatBufferBui auto _weather_type = _o->weather_type; auto _weather_strength = _o->weather_strength; auto _fog_enabled = _o->fog_enabled; - auto _fog_color = _o->fog_color ? _o->fog_color.get() : 0; + auto _fog_color = _o->fog_color; auto _fog_min_distance = _o->fog_min_distance; auto _fog_max_distance = _o->fog_max_distance; auto _sky_layer_1_enabled = _o->sky_layer_1_enabled; - auto _sky_layer_1_color = _o->sky_layer_1_color ? _o->sky_layer_1_color.get() : 0; + auto _sky_layer_1_color = _o->sky_layer_1_color; auto _sky_layer_1_speed = _o->sky_layer_1_speed; auto _sky_layer_2_enabled = _o->sky_layer_2_enabled; - auto _sky_layer_2_color = _o->sky_layer_2_color ? _o->sky_layer_2_color.get() : 0; + auto _sky_layer_2_color = _o->sky_layer_2_color; auto _sky_layer_2_speed = _o->sky_layer_2_speed; auto _lensflare_sprite_id = _o->lensflare_sprite_id; auto _lensflare_pitch = _o->lensflare_pitch; auto _lensflare_yaw = _o->lensflare_yaw; - auto _lensflare_color = _o->lensflare_color ? _o->lensflare_color.get() : 0; + auto _lensflare_color = _o->lensflare_color; auto _starfield_star_count = _o->starfield_star_count; auto _starfield_meteor_count = _o->starfield_meteor_count; auto _starfield_meteor_spawn_density = _o->starfield_meteor_spawn_density; diff --git a/TombEngine/Specific/savegame/schema/ten_savegame.fbs b/TombEngine/Specific/savegame/schema/ten_savegame.fbs index d95801ac9..47cb6b230 100644 --- a/TombEngine/Specific/savegame/schema/ten_savegame.fbs +++ b/TombEngine/Specific/savegame/schema/ten_savegame.fbs @@ -14,22 +14,22 @@ table LevelData { weather_strength: float; fog_enabled: bool; - fog_color: Vector3; + fog_color: int32; fog_min_distance: int32; fog_max_distance: int32; sky_layer_1_enabled: bool; - sky_layer_1_color: Vector3; + sky_layer_1_color: int32; sky_layer_1_speed: int32; sky_layer_2_enabled: bool; - sky_layer_2_color: Vector3; + sky_layer_2_color: int32; sky_layer_2_speed: int32; lensflare_sprite_id: int32; lensflare_pitch: float; lensflare_yaw: float; - lensflare_color: Vector3; + lensflare_color: int32; starfield_star_count: int32; starfield_meteor_count: int32;