Skip to content

Commit f6bcde7

Browse files
committed
fix: SolidVisualizationServer render
1 parent 9f51432 commit f6bcde7

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

source/RevitDevTool/Visualization/Server/SolidVisualizationServer.cs

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -118,22 +118,28 @@ public override void RenderScene(Autodesk.Revit.DB.View view, DisplayStyle displ
118118

119119
private void MapGeometryBuffer()
120120
{
121+
// Dispose and clear all previous buffers before remapping
122+
foreach (var buffer in _faceBuffers) buffer.Dispose();
123+
foreach (var buffer in _edgeBuffers) buffer.Dispose();
124+
_faceBuffers.Clear();
125+
_edgeBuffers.Clear();
126+
121127
foreach (var solid in VisualizeGeometries)
122128
{
123129
var scaledSolid = RenderGeometryHelper.ScaleSolid(solid, _scale);
124130

125-
var faceIndex = 0;
126131
foreach (Face face in scaledSolid.Faces)
127132
{
128-
var buffer = CreateOrUpdateBuffer(_faceBuffers, faceIndex++);
133+
var buffer = new RenderingBufferStorage();
129134
MapFaceBuffers(buffer, face);
135+
_faceBuffers.Add(buffer);
130136
}
131137

132-
var edgeIndex = 0;
133138
foreach (Edge edge in scaledSolid.Edges)
134139
{
135-
var buffer = CreateOrUpdateBuffer(_edgeBuffers, edgeIndex++);
140+
var buffer = new RenderingBufferStorage();
136141
MapEdgeBuffers(buffer, edge);
142+
_edgeBuffers.Add(buffer);
137143
}
138144
}
139145
}
@@ -150,22 +156,6 @@ private static void MapEdgeBuffers(RenderingBufferStorage buffer, Edge edge)
150156
RenderHelper.MapCurveBuffer(buffer, mesh);
151157
}
152158

153-
private static RenderingBufferStorage CreateOrUpdateBuffer(List<RenderingBufferStorage> buffers, int index)
154-
{
155-
RenderingBufferStorage buffer;
156-
if (buffers.Count > index)
157-
{
158-
buffer = buffers[index];
159-
}
160-
else
161-
{
162-
buffer = new RenderingBufferStorage();
163-
buffers.Add(buffer);
164-
}
165-
166-
return buffer;
167-
}
168-
169159
private void UpdateEffects()
170160
{
171161
foreach (var buffer in _faceBuffers)
@@ -181,4 +171,12 @@ private void UpdateEffects()
181171
buffer.EffectInstance.SetColor(_edgeColor);
182172
}
183173
}
174+
175+
protected override void DisposeBuffers()
176+
{
177+
foreach (var buffer in _faceBuffers) buffer.Dispose();
178+
foreach (var buffer in _edgeBuffers) buffer.Dispose();
179+
_faceBuffers.Clear();
180+
_edgeBuffers.Clear();
181+
}
184182
}

0 commit comments

Comments
 (0)