Răsfoiți Sursa

Remove uses of .offsets

Store reading and writing to `.offsets`.

Avoid mutations to `.drawcalls` from outside the `BufferGeometry`.
dubejf 10 ani în urmă
părinte
comite
d0dff85716

+ 1 - 1
examples/js/renderers/Projector.js

@@ -392,7 +392,7 @@ THREE.Projector = function () {
 				if ( geometry instanceof THREE.BufferGeometry ) {
 
 					var attributes = geometry.attributes;
-					var offsets = geometry.offsets;
+					var offsets = geometry.drawcalls;
 
 					if ( attributes.position === undefined ) continue;
 

+ 1 - 1
examples/js/wip/ProxyGeometry.js

@@ -744,7 +744,7 @@ THREE.ProxyGeometry.prototype.clone = function () {
 	var buff = THREE.BufferGeometry.prototype.clone.call(this);
 	var geo = new THREE.ProxyGeometry();
 	geo.attributes = buff.attributes;
-	geo.offsets = buff.offsets;
+	geo.offsets = buff.drawcalls;
 
 	return geo;
 

+ 2 - 2
examples/webgl_buffergeometry.html

@@ -200,9 +200,9 @@
 				geometry.addAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ) );
 				geometry.addAttribute( 'color', new THREE.BufferAttribute( colors, 3 ) );
 
-				var offsets = triangles / chunkSize;
+				var num_offsets = triangles / chunkSize;
 
-				for ( var i = 0; i < offsets; i ++ ) {
+				for ( var i = 0; i < num_offsets; i ++ ) {
 
 					var indexStart = i * chunkSize * 3;
 					var indexCount = Math.min( triangles - ( i * chunkSize ), chunkSize ) * 3;

+ 4 - 4
src/core/BufferGeometry.js

@@ -110,7 +110,7 @@ THREE.BufferGeometry.prototype = {
 		// TODO Clear attributes? Clear drawcalls? Copy morphTargets?
 
 		var attributes = geometry.attributes;
-		var offsets = geometry.offsets;
+		var offsets = geometry.drawcalls;
 
 		for ( var name in attributes ) {
 
@@ -1064,7 +1064,7 @@ THREE.BufferGeometry.prototype = {
 		data.data = { attributes: {} };
 
 		var attributes = this.attributes;
-		var offsets = this.offsets;
+		var offsets = this.drawcalls;
 		var boundingSphere = this.boundingSphere;
 
 		for ( var key in attributes ) {
@@ -1111,9 +1111,9 @@ THREE.BufferGeometry.prototype = {
 
 		}
 
-		for ( var i = 0, il = this.offsets.length; i < il; i ++ ) {
+		for ( var i = 0, il = this.drawcalls.length; i < il; i ++ ) {
 
-			var offset = this.offsets[ i ];
+			var offset = this.drawcalls[ i ];
 
 			geometry.addDrawCall( offset.start, offset.count, offset.index );
 

+ 12 - 1
src/loaders/BufferGeometryLoader.js

@@ -51,7 +51,18 @@ THREE.BufferGeometryLoader.prototype = {
 
 		if ( offsets !== undefined ) {
 
-			geometry.offsets = JSON.parse( JSON.stringify( offsets ) );
+			var offsetsArray = JSON.parse( JSON.stringify( offsets ) );
+
+			for ( var i = 0; i < offsetsArray.length; i ++ ) {
+
+				var offset = offsetsArray[i];
+				var indexStart = offset.start;
+				var indexCount = offset.count;
+				var indexOffset = offset.index;
+
+				geometry.addAttribute( indexStart, indexCount, indexOffset );
+
+			}
 
 		}
 

+ 1 - 1
src/objects/Line.js

@@ -65,7 +65,7 @@ THREE.Line.prototype.raycast = ( function () {
 
 				var indices = attributes.index.array;
 				var positions = attributes.position.array;
-				var offsets = geometry.offsets;
+				var offsets = geometry.drawcalls.slice();
 
 				if ( offsets.length === 0 ) {
 

+ 1 - 1
src/objects/Mesh.js

@@ -111,7 +111,7 @@ THREE.Mesh.prototype.raycast = ( function () {
 
 				var indices = attributes.index.array;
 				var positions = attributes.position.array;
-				var offsets = geometry.offsets;
+				var offsets = geometry.drawcalls.slice();
 
 				if ( offsets.length === 0 ) {
 

+ 2 - 2
src/objects/PointCloud.js

@@ -81,13 +81,13 @@ THREE.PointCloud.prototype.raycast = ( function () {
 
 				var indices = attributes.index.array;
 
-				if ( geometry.offsets.length === 0 ) {
+				if ( geometry.drawcalls.length === 0 ) {
 
 					offsets.addDrawCall( 0, indices.length, 0 );
 
 				}
 
-				var offsets = geometry.offsets;
+				var offsets = geometry.drawcalls;
 
 				for ( var oi = 0, ol = offsets.length; oi < ol; ++ oi ) {
 

+ 6 - 6
src/renderers/WebGLRenderer.js

@@ -1072,7 +1072,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			}
 
-			var offsets = geometry.offsets;
+			var offsets = geometry.drawcalls;
 
 			if ( offsets.length === 0 ) {
 
@@ -1157,7 +1157,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			// non-indexed triangles
 
-			var offsets = geometry.offsets;
+			var offsets = geometry.drawcalls;
 
 			if ( offsets.length === 0 ) {
 
@@ -1278,7 +1278,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			}
 
-			var offsets = geometry.offsets;
+			var offsets = geometry.drawcalls;
 
 			if ( offsets.length === 0 ) {
 
@@ -1335,7 +1335,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 			}
 
 			var position = geometry.attributes.position;
-			var offsets = geometry.offsets;
+			var offsets = geometry.drawcalls;
 
 			if ( offsets.length === 0 ) {
 
@@ -1387,7 +1387,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			}
 
-			var offsets = geometry.offsets;
+			var offsets = geometry.drawcalls;
 
 			if ( offsets.length === 0 ) {
 
@@ -1444,7 +1444,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 			}
 
 			var position = geometry.attributes.position;
-			var offsets = geometry.offsets;
+			var offsets = geometry.drawcalls;
 
 			if ( offsets.length === 0 ) {