Skip to content

Commit dbf4bc2

Browse files
committed
the temp color is stored separately...
1 parent fa301e8 commit dbf4bc2

File tree

3 files changed

+26
-15
lines changed

3 files changed

+26
-15
lines changed

Source/DynamicProperties/MaterialPropertyManager.cs

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ private void OnDestroy()
4545
MpbCompilerCache.CheckCleared();
4646

4747
// Poor man's GC :'(
48-
PartPatch.ClearOnSceneSwitch();
49-
MaterialColorUpdaterPatch.ClearOnSceneSwitch();
50-
ModuleColorChangerPatch.ClearOnSceneSwitch();
51-
FairingPanelPatch.ClearOnSceneSwitch();
48+
PartPatch.CheckCleared();
49+
MaterialColorUpdaterPatch.CheckCleared();
50+
ModuleColorChangerPatch.CheckCleared();
51+
FairingPanelPatch.CheckCleared();
5252

5353
this.LogMessage("destroyed");
5454
}
@@ -85,10 +85,21 @@ public bool Unregister(Renderer renderer)
8585
}
8686

8787
/// Get a reference to the `Props` instance containing the stock properties of the given
88-
/// `part` (namely, `_Opacity`, `_RimFalloff`, `_RimColor`, and `_TemperatureColor` (flight
89-
/// only)). The returned instance must not be written to.
88+
/// `part` (namely, `_Opacity`, `_RimFalloff`, and `_RimColor`).
89+
/// The returned instance must not be written to.
9090
public Props? GetStockPropsForPart(Part part) => PartPatch.Props.GetValueOrDefault(part);
9191

92+
/// Get the part's current `_TemperatureColor` property, if it is set (only in flight).
93+
public Color? GetStockTemperatureColorForPart(Part part)
94+
{
95+
if (!MaterialColorUpdaterPatch.Props.TryGetValue(part.temperatureRenderer, out var props)) {
96+
return null;
97+
}
98+
99+
if (!props.HasColor(PhysicsGlobals.temperaturePropertyID)) return null;
100+
return props.GetColorOrDefault(PhysicsGlobals.temperaturePropertyID);
101+
}
102+
92103
public static void RegisterPropertyNamesForDebugLogging(params string[] properties)
93104
{
94105
foreach (var property in properties) PropIdToName.Register(property);
@@ -137,7 +148,7 @@ internal void Unregister(Props props)
137148
private bool _propsUpdateScheduled = false;
138149
private static readonly WaitForEndOfFrame WfEoF = new();
139150

140-
private IEnumerator<YieldInstruction> Co_propsLateUpdate()
151+
private IEnumerator<YieldInstruction> Co_PropsLateUpdate()
141152
{
142153
yield return WfEoF;
143154

@@ -160,7 +171,7 @@ internal void ScheduleLateUpdate(Props props)
160171
{
161172
propsLateUpdateQueue.Add(props);
162173
if (_propsUpdateScheduled) return;
163-
StartCoroutine(Co_propsLateUpdate());
174+
StartCoroutine(Co_PropsLateUpdate());
164175
_propsUpdateScheduled = true;
165176
}
166177
}

Source/DynamicProperties/MpbCompiler.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ internal class MpbCompiler : Disposable
1414
/// Immutable.
1515
internal readonly SortedSet<Props> Cascade;
1616

17-
private readonly HashSet<Renderer> linkedRenderers = [];
17+
private readonly HashSet<Renderer> managedRenderers = [];
1818
private readonly MaterialPropertyBlock mpb = new();
1919
private readonly Dictionary<int, Props> idManagers = [];
2020

@@ -40,16 +40,16 @@ internal MpbCompiler(SortedSet<Props> cascade)
4040

4141
internal void Register(Renderer renderer)
4242
{
43-
linkedRenderers.Add(renderer);
43+
managedRenderers.Add(renderer);
4444
Apply(renderer);
4545
}
4646

4747
internal void Unregister(Renderer renderer)
4848
{
49-
linkedRenderers.Remove(renderer);
49+
managedRenderers.Remove(renderer);
5050
if (!renderer.IsDestroyed()) renderer.SetPropertyBlock(EmptyMpb);
5151

52-
if (linkedRenderers.Count > 0) return;
52+
if (managedRenderers.Count > 0) return;
5353
Log.Debug(
5454
$"last renderer unregistered from MpbCompiler instance {RuntimeHelpers.GetHashCode(this)}");
5555
MpbCompilerCache.Remove(this);
@@ -115,7 +115,7 @@ private void ApplyAll()
115115
{
116116
var hasDestroyedRenderer = false;
117117

118-
foreach (var renderer in linkedRenderers) {
118+
foreach (var renderer in managedRenderers) {
119119
if (renderer.IsDestroyed()) {
120120
hasDestroyedRenderer = true;
121121
} else {
@@ -128,7 +128,7 @@ private void ApplyAll()
128128

129129
#endregion
130130

131-
protected override bool IsUnused() => linkedRenderers.Count == 0;
131+
protected override bool IsUnused() => managedRenderers.Count == 0;
132132

133133
protected override void OnDispose()
134134
{

Source/DynamicProperties/Patches/StockPatch.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ internal abstract class StockPatchBase<T>
77
{
88
internal static readonly Dictionary<T, Props> Props = [];
99

10-
internal static void ClearOnSceneSwitch()
10+
internal static void CheckCleared()
1111
{
1212
if (Props.Count == 0) return;
1313

0 commit comments

Comments
 (0)