diff --git a/source/engine/main.js b/source/engine/main.js index e00c0ad..f2365d9 100644 --- a/source/engine/main.js +++ b/source/engine/main.js @@ -69,7 +69,7 @@ import { GetIntegerFromStyle, GetDomElementExternalWidth, GetDomElementExternalH import { EmbeddedViewer, Init3DViewerElement, Init3DViewerElements } from './viewer/embeddedviewer.js'; import { MouseInteraction, TouchInteraction, ClickDetector, Navigation, NavigationType } from './viewer/navigation.js'; import { CameraValidator, UpVector, ShadingModel, Viewer, GetDefaultCamera, TraverseThreeObject, GetShadingTypeOfObject, CameraMode } from './viewer/viewer.js'; -import { ViewerGeometry, ViewerExtraGeometry, SetThreeMeshPolygonOffset } from './viewer/viewergeometry.js'; +import { ViewerModel, ViewerMainModel, SetThreeMeshPolygonOffset } from './viewer/viewermodel.js'; export { IsDefined, @@ -325,7 +325,7 @@ export { TraverseThreeObject, GetShadingTypeOfObject, CameraMode, - ViewerGeometry, - ViewerExtraGeometry, + ViewerModel, + ViewerMainModel, SetThreeMeshPolygonOffset }; diff --git a/source/engine/threejs/threeutils.js b/source/engine/threejs/threeutils.js index 016d05d..65e9a48 100644 --- a/source/engine/threejs/threeutils.js +++ b/source/engine/threejs/threeutils.js @@ -190,7 +190,6 @@ export function DisposeThreeObjects (mainObject) mainObject.traverse ((obj) => { if (obj.isMesh || obj.isLineSegments) { - obj.geometry.dispose (); if (Array.isArray (obj.material)) { for (let material of obj.material) { material.dispose (); @@ -198,6 +197,7 @@ export function DisposeThreeObjects (mainObject) } else { obj.material.dispose (); } + obj.geometry.dispose (); } }); } diff --git a/source/engine/viewer/viewer.js b/source/engine/viewer/viewer.js index 99a34f8..f749d3b 100644 --- a/source/engine/viewer/viewer.js +++ b/source/engine/viewer/viewer.js @@ -5,7 +5,7 @@ import { ShadingType } from '../threejs/threeutils.js'; import { Camera } from './camera.js'; import { GetDomElementInnerDimensions } from './domutils.js'; import { Navigation } from './navigation.js'; -import { ViewerExtraGeometry, ViewerGeometry } from './viewergeometry.js'; +import { ViewerModel, ViewerMainModel } from './viewermodel.js'; import * as THREE from 'three'; @@ -283,8 +283,8 @@ export class Viewer this.renderer.setSize (this.canvas.width, this.canvas.height); this.scene = new THREE.Scene (); - this.geometry = new ViewerGeometry (this.scene); - this.extraGeometry = new ViewerExtraGeometry (this.scene); + this.geometry = new ViewerMainModel (this.scene); + this.extraGeometry = new ViewerModel (this.scene); this.InitNavigation (); this.InitShading (); diff --git a/source/engine/viewer/viewergeometry.js b/source/engine/viewer/viewermodel.js similarity index 99% rename from source/engine/viewer/viewergeometry.js rename to source/engine/viewer/viewermodel.js index 399a9b6..9c4cccc 100644 --- a/source/engine/viewer/viewergeometry.js +++ b/source/engine/viewer/viewermodel.js @@ -20,7 +20,32 @@ export function SetThreeMeshPolygonOffset (mesh, offset) } } -export class ViewerGeometry +export class ViewerModel +{ + constructor (scene) + { + this.scene = scene; + this.mainObject = null; + } + + AddObject (object) + { + if (this.mainObject === null) { + this.mainObject = new THREE.Object3D (); + this.scene.add (this.mainObject); + } + this.mainObject.add (object); + } + + Clear () + { + DisposeThreeObjects (this.mainObject); + this.scene.remove (this.mainObject); + this.mainObject = null; + } +} + +export class ViewerMainModel { constructor (scene) { @@ -212,28 +237,3 @@ export class ViewerGeometry return null; } } - -export class ViewerExtraGeometry -{ - constructor (scene) - { - this.scene = scene; - this.mainObject = null; - } - - AddObject (object) - { - if (this.mainObject === null) { - this.mainObject = new THREE.Object3D (); - this.scene.add (this.mainObject); - } - this.mainObject.add (object); - } - - Clear () - { - DisposeThreeObjects (this.mainObject); - this.scene.remove (this.mainObject); - this.mainObject = null; - } -}