From 4dc997f3c547acd53046944fba0b05653c07d5b7 Mon Sep 17 00:00:00 2001 From: Jaume Sanchez Date: Sun, 23 Oct 2016 04:16:41 +0200 Subject: [PATCH] added setDrawRange to Object3D --- src/core/Object3D.js | 11 ++++++++++- src/renderers/WebGLRenderer.js | 6 +++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/core/Object3D.js b/src/core/Object3D.js index e6aec4d5df57e5..6d2d356ae2d1a8 100644 --- a/src/core/Object3D.js +++ b/src/core/Object3D.js @@ -91,9 +91,11 @@ function Object3D() { this.userData = {}; - this.onBeforeRender = function(){}; + this.onBeforeRender = function(){}; this.onAfterRender = function(){}; + this.drawRange = { start: 0, count: Infinity }; + } Object3D.DefaultUp = new Vector3( 0, 1, 0 ); @@ -723,6 +725,13 @@ Object.assign( Object3D.prototype, EventDispatcher.prototype, { return this; + }, + + setDrawRange: function ( start, count ) { + + this.drawRange.start = start; + this.drawRange.count = count; + } } ); diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 620e47f42eecff..89952b8a959197 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -825,8 +825,8 @@ function WebGLRenderer( parameters ) { } - var rangeStart = geometry.drawRange.start * rangeFactor; - var rangeCount = geometry.drawRange.count * rangeFactor; + var rangeStart = ( object.drawRange.start || geometry.drawRange.start ) * rangeFactor; + var rangeCount = ( object.drawRange.count || geometry.drawRange.count ) * rangeFactor; var groupStart = group !== null ? group.start * rangeFactor : 0; var groupCount = group !== null ? group.count * rangeFactor : Infinity; @@ -1742,7 +1742,7 @@ function WebGLRenderer( parameters ) { material.needsUpdate = true; } else if ( materialProperties.numClippingPlanes !== undefined && - ( materialProperties.numClippingPlanes !== _clipping.numPlanes || + ( materialProperties.numClippingPlanes !== _clipping.numPlanes || materialProperties.numIntersection !== _clipping.numIntersection ) ) { material.needsUpdate = true;