Add support for managing path road meshes in ViewportHost

This commit is contained in:
2026-05-12 23:56:36 +02:00
parent 2c6d7ce4e5
commit f8b7dc4152

View File

@@ -7791,6 +7791,12 @@ export class ViewportHost {
}
}
private addPathRoadMeshes(roadMeshes: PathRenderObjects["roadMeshes"]) {
for (const roadMesh of roadMeshes) {
this.pathGroup.add(roadMesh);
}
}
private disposePathSegmentMeshes(segments: PathRenderObjects["segments"]) {
for (const segment of segments) {
this.pathGroup.remove(segment.outlineMesh);
@@ -7802,6 +7808,14 @@ export class ViewportHost {
}
}
private disposePathRoadMeshes(roadMeshes: PathRenderObjects["roadMeshes"]) {
for (const roadMesh of roadMeshes) {
this.pathGroup.remove(roadMesh);
roadMesh.geometry.dispose();
roadMesh.material.dispose();
}
}
private rebuildPaths(document: SceneDocument, selection: EditorSelection) {
this.clearPaths();
@@ -7814,6 +7828,7 @@ export class ViewportHost {
}
const renderObjects = this.createPathRenderObjects(path, selection);
this.addPathRoadMeshes(renderObjects.roadMeshes);
this.pathGroup.add(renderObjects.line);
this.addPathSegmentMeshes(renderObjects.segments);
for (const pointMesh of renderObjects.pointMeshes) {
@@ -7845,6 +7860,7 @@ export class ViewportHost {
line.renderOrder = PATH_RENDER_ORDER + 1;
line.userData.pathId = path.id;
const roadMeshes = this.createPathRoadPreviewMeshes(path);
const segments = this.createPathSegmentMeshes(path);
const resolvedPointPositions =
this.createResolvedPathPointPositionMap(path);
@@ -7891,6 +7907,7 @@ export class ViewportHost {
return {
line,
roadMeshes,
segments,
pointMeshes
};
@@ -7900,6 +7917,7 @@ export class ViewportHost {
this.pathGroup.remove(renderObjects.line);
renderObjects.line.geometry.dispose();
renderObjects.line.material.dispose();
this.disposePathRoadMeshes(renderObjects.roadMeshes);
this.disposePathSegmentMeshes(renderObjects.segments);
for (const pointMesh of renderObjects.pointMeshes) {
@@ -7937,6 +7955,7 @@ export class ViewportHost {
path,
this.currentSelection
);
this.addPathRoadMeshes(renderObjects.roadMeshes);
this.pathGroup.add(renderObjects.line);
this.addPathSegmentMeshes(renderObjects.segments);
for (const pointMesh of renderObjects.pointMeshes) {
@@ -7962,6 +7981,9 @@ export class ViewportHost {
renderObjects.line.geometry.dispose();
renderObjects.line.geometry = this.createPathLineGeometry(path);
this.disposePathRoadMeshes(renderObjects.roadMeshes);
renderObjects.roadMeshes = this.createPathRoadPreviewMeshes(path);
this.addPathRoadMeshes(renderObjects.roadMeshes);
this.disposePathSegmentMeshes(renderObjects.segments);
renderObjects.segments = this.createPathSegmentMeshes(path);
this.addPathSegmentMeshes(renderObjects.segments);