/** * @author benaadams / https://twitter.com/ben_a_adams */ THREE.InterleavedBuffer = function ( array, stride ) { this.uuid = THREE.Math.generateUUID(); this.array = array; this.stride = stride; this.dynamic = false; this.updateRange = { offset: 0, count: - 1 }; this.version = 0; }; THREE.InterleavedBuffer.prototype = { constructor: THREE.InterleavedBuffer, get length () { return this.array.length; }, get count () { return this.array.length / this.stride; }, set needsUpdate( value ) { if ( value === true ) this.version ++; }, setDynamic: function ( value ) { this.dynamic = value; return this; }, copy: function ( source ) { this.array = new source.array.constructor( source.array ); this.stride = source.stride; this.dynamic = source.dynamic; }, copyAt: function ( index1, attribute, index2 ) { index1 *= this.stride; index2 *= attribute.stride; for ( var i = 0, l = this.stride; i < l; i ++ ) { this.array[ index1 + i ] = attribute.array[ index2 + i ]; } return this; }, set: function ( value, offset ) { if ( offset === undefined ) offset = 0; this.array.set( value, offset ); return this; }, clone: function () { return new this.constructor().copy( this ); } };