فهرست منبع

Refactoring addObject WebGLRenderer to make code cleaner

zz85 12 سال پیش
والد
کامیت
f31062690a
1فایلهای تغییر یافته به همراه31 افزوده شده و 38 حذف شده
  1. 31 38
      src/renderers/WebGLRenderer.js

+ 31 - 38
src/renderers/WebGLRenderer.js

@@ -4511,7 +4511,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 			geometry = object.geometry;
 			geometry = object.geometry;
 
 
-			if ( geometry instanceof THREE.BufferGeometry ) {
+			if ( geometry === undefined ) {
+
+				// fail silently for now
+
+			} else if ( geometry instanceof THREE.BufferGeometry ) {
 
 
 				initDirectBuffers( geometry );
 				initDirectBuffers( geometry );
 
 
@@ -4519,36 +4523,32 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 				material = object.material;
 				material = object.material;
 
 
-				if ( geometry instanceof THREE.Geometry ) {
-
-					if ( geometry.geometryGroups === undefined ) {
+				if ( geometry.geometryGroups === undefined ) {
 
 
-						sortFacesByMaterial( geometry, material );
+					sortFacesByMaterial( geometry, material );
 
 
-					}
-
-					// create separate VBOs per geometry chunk
+				}
 
 
-					for ( g in geometry.geometryGroups ) {
+				// create separate VBOs per geometry chunk
 
 
-						geometryGroup = geometry.geometryGroups[ g ];
+				for ( g in geometry.geometryGroups ) {
 
 
-						// initialise VBO on the first access
+					geometryGroup = geometry.geometryGroups[ g ];
 
 
-						if ( ! geometryGroup.__webglVertexBuffer ) {
+					// initialise VBO on the first access
 
 
-							createMeshBuffers( geometryGroup );
-							initMeshBuffers( geometryGroup, object );
+					if ( ! geometryGroup.__webglVertexBuffer ) {
 
 
-							geometry.verticesNeedUpdate = true;
-							geometry.morphTargetsNeedUpdate = true;
-							geometry.elementsNeedUpdate = true;
-							geometry.uvsNeedUpdate = true;
-							geometry.normalsNeedUpdate = true;
-							geometry.tangentsNeedUpdate = true;
-							geometry.colorsNeedUpdate = true;
+						createMeshBuffers( geometryGroup );
+						initMeshBuffers( geometryGroup, object );
 
 
-						}
+						geometry.verticesNeedUpdate = true;
+						geometry.morphTargetsNeedUpdate = true;
+						geometry.elementsNeedUpdate = true;
+						geometry.uvsNeedUpdate = true;
+						geometry.normalsNeedUpdate = true;
+						geometry.tangentsNeedUpdate = true;
+						geometry.colorsNeedUpdate = true;
 
 
 					}
 					}
 
 
@@ -4571,16 +4571,12 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 				if ( ! geometry.__webglVertexBuffer ) {
 				if ( ! geometry.__webglVertexBuffer ) {
 
 
-					if ( geometry instanceof THREE.Geometry ) {
-
-						createLineBuffers( geometry );
-						initLineBuffers( geometry, object );
+					createLineBuffers( geometry );
+					initLineBuffers( geometry, object );
 
 
-						geometry.verticesNeedUpdate = true;
-						geometry.colorsNeedUpdate = true;
-						geometry.lineDistancesNeedUpdate = true;
-
-					}
+					geometry.verticesNeedUpdate = true;
+					geometry.colorsNeedUpdate = true;
+					geometry.lineDistancesNeedUpdate = true;
 
 
 				}
 				}
 
 
@@ -4588,15 +4584,12 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 				if ( ! geometry.__webglVertexBuffer ) {
 				if ( ! geometry.__webglVertexBuffer ) {
 
 
-					if ( geometry instanceof THREE.Geometry ) {
+					createParticleBuffers( geometry );
+					initParticleBuffers( geometry, object );
 
 
-						createParticleBuffers( geometry );
-						initParticleBuffers( geometry, object );
-
-						geometry.verticesNeedUpdate = true;
-						geometry.colorsNeedUpdate = true;
+					geometry.verticesNeedUpdate = true;
+					geometry.colorsNeedUpdate = true;
 
 
-					}
 				}
 				}
 
 
 			}
 			}