From 4811f2ff3795fe412b07695969dfbb66b5c63554 Mon Sep 17 00:00:00 2001 From: Arnaut Date: Fri, 4 Jun 2021 14:49:00 +0200 Subject: [PATCH] Add component to entity wear based on changes in temperature --- Assets/Scripts/ServerShared/Entity.cs | 9 +++++++-- Assets/Scripts/ServerShared/Settings.cs | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Assets/Scripts/ServerShared/Entity.cs b/Assets/Scripts/ServerShared/Entity.cs index 97871f50e..3372f3671 100644 --- a/Assets/Scripts/ServerShared/Entity.cs +++ b/Assets/Scripts/ServerShared/Entity.cs @@ -1157,6 +1157,7 @@ public class EquippedItem public Subject<(uint id, float v)> AudioParameters { get; } = new Subject<(uint id, float v)>(); public Dictionary AudioParameterValues { get; } = new Dictionary(); + private float oldTemperature; public float Temperature { get @@ -1256,6 +1257,7 @@ public class EquippedItem pow(item.Quality, ItemManager.GameplaySettings.DurabilityQualityExponent)); var hullData = itemManager.GetData(entity.Hull); InsetShape = hullData.Shape.Inset(Data.Shape, position, item.Rotation); + if (Entity.Temperature != null) oldTemperature = Temperature; Online = new ReadOnlyReactiveProperty(ThermalOnline .CombineLatest(DurabilityOnline, (thermal, durability) => thermal && durability).DistinctUntilChanged()); @@ -1310,17 +1312,20 @@ public class EquippedItem } public void UpdatePerformance() - { + { var temp = Temperature; ThermalPerformance = Data.Performance(temp); + var deltaTemp = math.abs(temp - oldTemperature); DurabilityPerformance = EquippableItem.Durability / Data.Durability; var performanceThreshold = Entity.Settings.ShutdownPerformance; Wear = (1 - pow(ThermalPerformance, (1 - pow(EquippableItem.Quality, ItemManager.GameplaySettings.QualityWearExponent)) * - ItemManager.GameplaySettings.ThermalWearExponent) + ItemManager.GameplaySettings.ThermalWearExponent) + + deltaTemp * ItemManager.GameplaySettings.DeltaTempWearExponent ) * Data.Durability / Data.ThermalResilience; ThermalOnline.Value = ThermalPerformance > performanceThreshold || Entity.OverrideShutdown && EquippableItem.OverrideShutdown; DurabilityOnline.Value = EquippableItem.Durability > .01f; + oldTemperature = temp; } public void Update(float delta) diff --git a/Assets/Scripts/ServerShared/Settings.cs b/Assets/Scripts/ServerShared/Settings.cs index 51846b55a..8222d0127 100644 --- a/Assets/Scripts/ServerShared/Settings.cs +++ b/Assets/Scripts/ServerShared/Settings.cs @@ -172,6 +172,7 @@ public class GameplaySettings public float WormholeAnimationDuration = 4; public float WormholeExitCurveStart = .8f; public float ThermalWearExponent = .01f; + public float DeltaTempWearExponent = .01f; public float QualityWearExponent = 2; public int WeaponGroupCount = 6; public float WarpDistance = 25;