Spaces:
Running
Running
import { Vector4 } from '../math/Vector4.js'; | |
import { Vector3 } from '../math/Vector3.js'; | |
import { Vector2 } from '../math/Vector2.js'; | |
import { Color } from '../math/Color.js'; | |
/** | |
* @author mrdoob / http://mrdoob.com/ | |
*/ | |
function BufferAttribute( array, itemSize, normalized ) { | |
if ( Array.isArray( array ) ) { | |
throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); | |
} | |
this.name = ''; | |
this.array = array; | |
this.itemSize = itemSize; | |
this.count = array !== undefined ? array.length / itemSize : 0; | |
this.normalized = normalized === true; | |
this.dynamic = false; | |
this.updateRange = { offset: 0, count: - 1 }; | |
this.version = 0; | |
} | |
Object.defineProperty( BufferAttribute.prototype, 'needsUpdate', { | |
set: function ( value ) { | |
if ( value === true ) this.version ++; | |
} | |
} ); | |
Object.assign( BufferAttribute.prototype, { | |
isBufferAttribute: true, | |
onUploadCallback: function () {}, | |
setArray: function ( array ) { | |
if ( Array.isArray( array ) ) { | |
throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); | |
} | |
this.count = array !== undefined ? array.length / this.itemSize : 0; | |
this.array = array; | |
return this; | |
}, | |
setDynamic: function ( value ) { | |
this.dynamic = value; | |
return this; | |
}, | |
copy: function ( source ) { | |
this.name = source.name; | |
this.array = new source.array.constructor( source.array ); | |
this.itemSize = source.itemSize; | |
this.count = source.count; | |
this.normalized = source.normalized; | |
this.dynamic = source.dynamic; | |
return this; | |
}, | |
copyAt: function ( index1, attribute, index2 ) { | |
index1 *= this.itemSize; | |
index2 *= attribute.itemSize; | |
for ( var i = 0, l = this.itemSize; i < l; i ++ ) { | |
this.array[ index1 + i ] = attribute.array[ index2 + i ]; | |
} | |
return this; | |
}, | |
copyArray: function ( array ) { | |
this.array.set( array ); | |
return this; | |
}, | |
copyColorsArray: function ( colors ) { | |
var array = this.array, offset = 0; | |
for ( var i = 0, l = colors.length; i < l; i ++ ) { | |
var color = colors[ i ]; | |
if ( color === undefined ) { | |
console.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i ); | |
color = new Color(); | |
} | |
array[ offset ++ ] = color.r; | |
array[ offset ++ ] = color.g; | |
array[ offset ++ ] = color.b; | |
} | |
return this; | |
}, | |
copyVector2sArray: function ( vectors ) { | |
var array = this.array, offset = 0; | |
for ( var i = 0, l = vectors.length; i < l; i ++ ) { | |
var vector = vectors[ i ]; | |
if ( vector === undefined ) { | |
console.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i ); | |
vector = new Vector2(); | |
} | |
array[ offset ++ ] = vector.x; | |
array[ offset ++ ] = vector.y; | |
} | |
return this; | |
}, | |
copyVector3sArray: function ( vectors ) { | |
var array = this.array, offset = 0; | |
for ( var i = 0, l = vectors.length; i < l; i ++ ) { | |
var vector = vectors[ i ]; | |
if ( vector === undefined ) { | |
console.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i ); | |
vector = new Vector3(); | |
} | |
array[ offset ++ ] = vector.x; | |
array[ offset ++ ] = vector.y; | |
array[ offset ++ ] = vector.z; | |
} | |
return this; | |
}, | |
copyVector4sArray: function ( vectors ) { | |
var array = this.array, offset = 0; | |
for ( var i = 0, l = vectors.length; i < l; i ++ ) { | |
var vector = vectors[ i ]; | |
if ( vector === undefined ) { | |
console.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i ); | |
vector = new Vector4(); | |
} | |
array[ offset ++ ] = vector.x; | |
array[ offset ++ ] = vector.y; | |
array[ offset ++ ] = vector.z; | |
array[ offset ++ ] = vector.w; | |
} | |
return this; | |
}, | |
set: function ( value, offset ) { | |
if ( offset === undefined ) offset = 0; | |
this.array.set( value, offset ); | |
return this; | |
}, | |
getX: function ( index ) { | |
return this.array[ index * this.itemSize ]; | |
}, | |
setX: function ( index, x ) { | |
this.array[ index * this.itemSize ] = x; | |
return this; | |
}, | |
getY: function ( index ) { | |
return this.array[ index * this.itemSize + 1 ]; | |
}, | |
setY: function ( index, y ) { | |
this.array[ index * this.itemSize + 1 ] = y; | |
return this; | |
}, | |
getZ: function ( index ) { | |
return this.array[ index * this.itemSize + 2 ]; | |
}, | |
setZ: function ( index, z ) { | |
this.array[ index * this.itemSize + 2 ] = z; | |
return this; | |
}, | |
getW: function ( index ) { | |
return this.array[ index * this.itemSize + 3 ]; | |
}, | |
setW: function ( index, w ) { | |
this.array[ index * this.itemSize + 3 ] = w; | |
return this; | |
}, | |
setXY: function ( index, x, y ) { | |
index *= this.itemSize; | |
this.array[ index + 0 ] = x; | |
this.array[ index + 1 ] = y; | |
return this; | |
}, | |
setXYZ: function ( index, x, y, z ) { | |
index *= this.itemSize; | |
this.array[ index + 0 ] = x; | |
this.array[ index + 1 ] = y; | |
this.array[ index + 2 ] = z; | |
return this; | |
}, | |
setXYZW: function ( index, x, y, z, w ) { | |
index *= this.itemSize; | |
this.array[ index + 0 ] = x; | |
this.array[ index + 1 ] = y; | |
this.array[ index + 2 ] = z; | |
this.array[ index + 3 ] = w; | |
return this; | |
}, | |
onUpload: function ( callback ) { | |
this.onUploadCallback = callback; | |
return this; | |
}, | |
clone: function () { | |
return new this.constructor( this.array, this.itemSize ).copy( this ); | |
} | |
} ); | |
// | |
function Int8BufferAttribute( array, itemSize, normalized ) { | |
BufferAttribute.call( this, new Int8Array( array ), itemSize, normalized ); | |
} | |
Int8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); | |
Int8BufferAttribute.prototype.constructor = Int8BufferAttribute; | |
function Uint8BufferAttribute( array, itemSize, normalized ) { | |
BufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized ); | |
} | |
Uint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); | |
Uint8BufferAttribute.prototype.constructor = Uint8BufferAttribute; | |
function Uint8ClampedBufferAttribute( array, itemSize, normalized ) { | |
BufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized ); | |
} | |
Uint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype ); | |
Uint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute; | |
function Int16BufferAttribute( array, itemSize, normalized ) { | |
BufferAttribute.call( this, new Int16Array( array ), itemSize, normalized ); | |
} | |
Int16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); | |
Int16BufferAttribute.prototype.constructor = Int16BufferAttribute; | |
function Uint16BufferAttribute( array, itemSize, normalized ) { | |
BufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized ); | |
} | |
Uint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); | |
Uint16BufferAttribute.prototype.constructor = Uint16BufferAttribute; | |
function Int32BufferAttribute( array, itemSize, normalized ) { | |
BufferAttribute.call( this, new Int32Array( array ), itemSize, normalized ); | |
} | |
Int32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); | |
Int32BufferAttribute.prototype.constructor = Int32BufferAttribute; | |
function Uint32BufferAttribute( array, itemSize, normalized ) { | |
BufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized ); | |
} | |
Uint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); | |
Uint32BufferAttribute.prototype.constructor = Uint32BufferAttribute; | |
function Float32BufferAttribute( array, itemSize, normalized ) { | |
BufferAttribute.call( this, new Float32Array( array ), itemSize, normalized ); | |
} | |
Float32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); | |
Float32BufferAttribute.prototype.constructor = Float32BufferAttribute; | |
function Float64BufferAttribute( array, itemSize, normalized ) { | |
BufferAttribute.call( this, new Float64Array( array ), itemSize, normalized ); | |
} | |
Float64BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); | |
Float64BufferAttribute.prototype.constructor = Float64BufferAttribute; | |
// | |
export { | |
Float64BufferAttribute, | |
Float32BufferAttribute, | |
Uint32BufferAttribute, | |
Int32BufferAttribute, | |
Uint16BufferAttribute, | |
Int16BufferAttribute, | |
Uint8ClampedBufferAttribute, | |
Uint8BufferAttribute, | |
Int8BufferAttribute, | |
BufferAttribute | |
}; | |