|
|
@@ -18,6 +18,20 @@ function getWireframeVersion( geometry ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * Returns the wireframe ID for the given geometry.
|
|
|
+ *
|
|
|
+ * @private
|
|
|
+ * @function
|
|
|
+ * @param {BufferGeometry} geometry - The geometry.
|
|
|
+ * @return {number} The ID.
|
|
|
+ */
|
|
|
+function getWireframeId( geometry ) {
|
|
|
+
|
|
|
+ return ( geometry.index !== null ) ? geometry.index.id : geometry.attributes.position.id;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* Returns a wireframe index attribute for the given geometry.
|
|
|
*
|
|
|
@@ -65,6 +79,7 @@ function getWireframeIndex( geometry ) {
|
|
|
|
|
|
const attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );
|
|
|
attribute.version = getWireframeVersion( geometry );
|
|
|
+ attribute.__id = getWireframeId( geometry );
|
|
|
|
|
|
return attribute;
|
|
|
|
|
|
@@ -347,7 +362,7 @@ class Geometries extends DataMap {
|
|
|
|
|
|
wireframes.set( geometry, wireframeAttribute );
|
|
|
|
|
|
- } else if ( wireframeAttribute.version !== getWireframeVersion( geometry ) ) {
|
|
|
+ } else if ( wireframeAttribute.version !== getWireframeVersion( geometry ) || wireframeAttribute.__id !== getWireframeId( geometry ) ) {
|
|
|
|
|
|
this.attributes.delete( wireframeAttribute );
|
|
|
|