diff --git a/src/core/BufferGeometry.js b/src/core/BufferGeometry.js index c5f771ff03fb50ffcb33c2b24d1563fefd277e55..4809da42a13bbe23c21e377bc26725c55bef4339 100644 --- a/src/core/BufferGeometry.js +++ b/src/core/BufferGeometry.js @@ -330,18 +330,19 @@ Object.assign( THREE.BufferGeometry.prototype, THREE.EventDispatcher.prototype, var direct = geometry.__directGeometry; - if ( direct === undefined ) { + if ( direct === undefined || geometry.elementsNeedUpdate === true ) { return this.fromGeometry( geometry ); } - direct.verticesNeedUpdate = geometry.verticesNeedUpdate; - direct.normalsNeedUpdate = geometry.normalsNeedUpdate; - direct.colorsNeedUpdate = geometry.colorsNeedUpdate; - direct.uvsNeedUpdate = geometry.uvsNeedUpdate; - direct.groupsNeedUpdate = geometry.groupsNeedUpdate; + direct.verticesNeedUpdate = geometry.verticesNeedUpdate || geometry.elementsNeedUpdate; + direct.normalsNeedUpdate = geometry.normalsNeedUpdate || geometry.elementsNeedUpdate; + direct.colorsNeedUpdate = geometry.colorsNeedUpdate || geometry.elementsNeedUpdate; + direct.uvsNeedUpdate = geometry.uvsNeedUpdate || geometry.elementsNeedUpdate; + direct.groupsNeedUpdate = geometry.groupsNeedUpdate || geometry.elementsNeedUpdate; + geometry.elementsNeedUpdate = false; geometry.verticesNeedUpdate = false; geometry.normalsNeedUpdate = false; geometry.colorsNeedUpdate = false;