Skip to content

Commit 677432d

Browse files
committed
VF-347: Fix vehicle not despawning under certain conditions, breaking pawn rendering after materials are destroyed.
1 parent 85b86a2 commit 677432d

9 files changed

Lines changed: 533 additions & 569 deletions

File tree

‎About/About.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<name>Vehicle Framework</name>
33
<author>Smash Phil</author>
44
<packageId>SmashPhil.VehicleFramework</packageId>
5-
<modVersion>1.6.2354 rev15208</modVersion>
5+
<modVersion>1.6.2354 rev34389</modVersion>
66
<description><![CDATA[Framework which allows the creation of vehicles in RimWorld.]]></description>
77
<modIconPath>UI/Icons/DefaultVehicleIcon</modIconPath>
88
<supportedVersions>

‎SmashTools‎

‎Source/Vehicles/Components/Rendering/Overlays/GraphicOverlay.cs‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using SmashTools.Animations;
77
using SmashTools.Rendering;
88
using UnityEngine;
9+
using UnityEngine.Assertions;
910
using Vehicles.Rendering;
1011
using Verse;
1112
using Transform = SmashTools.Rendering.Transform;
@@ -108,6 +109,7 @@ public Graphic Graphic
108109
{
109110
if (graphic is null)
110111
{
112+
Assert.IsTrue(UnityData.IsInMainThread);
111113
PropertyBlock ??= new MaterialPropertyBlock();
112114
if (vehicle is { Destroyed: true } && !RGBMaterialPool.GetAll(this).NullOrEmpty())
113115
{

‎Source/Vehicles/Components/Rendering/VehicleDrawTracker.cs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ public void DynamicDrawPhaseAt(DrawPhase phase, in Vector3 drawLoc, Rot8 rot, fl
8686
parallelRenderer.DynamicDrawPhaseAt(phase, in transformData);
8787
parallelRenderer.IsDirty = false;
8888
}
89-
break;
89+
break;
9090
case DrawPhase.ParallelPreDraw:
9191
case DrawPhase.Draw:
9292
parallelRenderer.DynamicDrawPhaseAt(phase, in transformData);
93-
break;
93+
break;
9494
default:
9595
throw new NotImplementedException(nameof(DrawPhase));
9696
}

‎Source/Vehicles/Components/Rendering/VehicleRenderer.cs‎

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,11 @@ public sealed class VehicleRenderer : IParallelRenderer
1212

1313
private PreRenderResults results;
1414

15-
//public VehicleGraphicSet graphics;
16-
17-
//private Graphic_DynamicShadow shadowGraphic;
18-
19-
//private PawnFirefoamDrawer firefoamOverlays;
20-
2115
public VehicleRenderer(VehiclePawn vehicle)
2216
{
2317
this.vehicle = vehicle;
24-
//graphics = new VehicleGraphicSet(vehicle);
25-
26-
//firefoamOverlays = new PawnFirefoamDrawer(vehicle);
2718
}
2819

29-
[Obsolete("Not currently implemented, still WIP. Do not reference.", error: true)]
30-
public PawnFirefoamDrawer FirefoamOverlays => throw new NotImplementedException();
31-
3220
bool IParallelRenderer.IsDirty { get; set; }
3321

3422
public void DynamicDrawPhaseAt(DrawPhase phase, in TransformData transformData,
@@ -40,17 +28,17 @@ public void DynamicDrawPhaseAt(DrawPhase phase, in TransformData transformData,
4028
// Ensure meshes are cached beforehand
4129
for (int i = 0; i < 4; i++)
4230
_ = vehicle.VehicleGraphic.MeshAt(new Rot4(i));
43-
break;
31+
break;
4432
case DrawPhase.ParallelPreDraw:
4533
results = ParallelGetPreRenderResults(in transformData);
46-
break;
34+
break;
4735
case DrawPhase.Draw:
4836
// Out of phase drawing must immediately generate pre-render results for valid data.
4937
if (!results.valid)
5038
results = ParallelGetPreRenderResults(in transformData);
5139
Draw();
5240
results = default;
53-
break;
41+
break;
5442
default:
5543
throw new NotImplementedException();
5644
}
@@ -70,19 +58,5 @@ private void Draw()
7058

7159
if (vehicle.Spawned && !vehicle.Dead)
7260
vehicle.vehiclePather.PatherDraw();
73-
74-
// TODO - Firefoam overlays for vehicle
75-
//if (firefoamOverlays.IsCoveredInFoam)
76-
//{
77-
// Vector3 overlayPos = rootLoc;
78-
// overlayPos.y += YOffset_CoveredInOverlay;
79-
// firefoamOverlays.RenderPawnOverlay(overlayPos, mesh, quaternion, flags.FlagSet(PawnRenderFlags.DrawNow), PawnOverlayDrawer.OverlayLayer.Body, bodyFacing);
80-
//}
81-
82-
// TODO - pack graphics
83-
//if (vehicle.inventory != null && vehicle.inventory.innerContainer.Count > 0 && graphics.packGraphic != null)
84-
//{
85-
// Graphics.DrawMesh(mesh, drawLoc, quaternion, graphics.packGraphic.MatAt(bodyFacing, null), 0);
86-
//}
8761
}
8862
}

0 commit comments

Comments
 (0)