Работа с панелью параметров
При выделении отображается панель с параметрами. Добавил BoundingBox при выделении объекта.
При изменении значения в панели параметров меняется геометрия выделенного объекта. Сделал пока для шара и то криво, просто проверить, что работает. Дело в том, что при изменении параметра в геометрии Object3D, геометрия не перестраивается. Чтобы перестроилась геометрия нужно вызвать new THREE.SphereGeometry. Для куба, соответственно, new THREE.BoxGeometry, и так далее для каждого объекта.
Поэтому решено в классе Entity создать метод createGeometry(), в котором в зависимости от типа объекта буду генерировать новую геометрию:
let TA_Entities = function () { let GLOBALSCOPE = this; this.createGeometry = function ( geometryType ) { let geometry = null; switch ( geometryType, params ) { case 'BoxBufferGeometry': let data = { width: params.width, height: params.height, depth: params.depth, widthSegments: params.widthSegments, heightSegments: params.heightSegments, depthSegments: params.depthSegments }; geometry = new BoxBufferGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments ); break; default: break; } return geometry; }
Соответственно изменю и функцию создания объектов. Сейчас при создании удаляется старый объект и в этой же точке создается новый, что сказывается на быстродействии. Я же буду менять только geometry с объекте Object3D. Примерно так:
let geom = entity.geometry; let newGeom = new THREE.SphereGeometry( +input.value, geom.parameters.widthSegments, geom.parameters.heightSegments, geom.parameters.phiStart, geom.parameters.phiLength, geom.parameters.thetaStart, geom.parameters.thetaLength ); entity.geometry.dispose(); entity.geometry = newGeom;