| |
| |
| |
|
|
| import { LineSegments } from '../objects/LineSegments.js'; |
| import { VertexColors } from '../constants.js'; |
| import { LineBasicMaterial } from '../materials/LineBasicMaterial.js'; |
| import { Float32BufferAttribute } from '../core/BufferAttribute.js'; |
| import { BufferGeometry } from '../core/BufferGeometry.js'; |
| import { Color } from '../math/Color.js'; |
|
|
| function GridHelper( size, divisions, color1, color2 ) { |
|
|
| size = size || 10; |
| divisions = divisions || 10; |
| color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); |
| color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); |
|
|
| var center = divisions / 2; |
| var step = size / divisions; |
| var halfSize = size / 2; |
|
|
| var vertices = [], colors = []; |
|
|
| for ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) { |
|
|
| vertices.push( - halfSize, 0, k, halfSize, 0, k ); |
| vertices.push( k, 0, - halfSize, k, 0, halfSize ); |
|
|
| var color = i === center ? color1 : color2; |
|
|
| color.toArray( colors, j ); j += 3; |
| color.toArray( colors, j ); j += 3; |
| color.toArray( colors, j ); j += 3; |
| color.toArray( colors, j ); j += 3; |
|
|
| } |
|
|
| var geometry = new BufferGeometry(); |
| geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); |
| geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); |
|
|
| var material = new LineBasicMaterial( { vertexColors: VertexColors } ); |
|
|
| LineSegments.call( this, geometry, material ); |
|
|
| } |
|
|
| GridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), { |
|
|
| constructor: GridHelper, |
|
|
| copy: function ( source ) { |
|
|
| LineSegments.prototype.copy.call( this, source ); |
|
|
| this.geometry.copy( source.geometry ); |
| this.material.copy( source.material ); |
|
|
| return this; |
|
|
| }, |
|
|
| clone: function () { |
|
|
| return new this.constructor().copy( this ); |
|
|
| } |
|
|
| } ); |
|
|
| export { GridHelper }; |
|
|