@@ -27,12 +27,9 @@ AFRAME.registerComponent("spotlightindicator",{
2727 circle . translate ( 0 , 0 , 0.5 ) ;
2828 }
2929
30- let geometry = new THREE . Geometry ( ) ;
31- geometry . merge ( circle ) ;
32- geometry . merge ( cone ) ;
30+ let geometry = THREE . BufferGeometryUtils . mergeBufferGeometries ( [ cone , circle ] ) ;
3331
3432 /* define outline geometry */
35-
3633 let outCone = new THREE . CylinderGeometry ( .2 , 1 , 1.5 , 24 , 1 , true ) ;
3734 let outCircle = new THREE . CircleGeometry ( .2 , 24 ) ;
3835
@@ -45,9 +42,7 @@ AFRAME.registerComponent("spotlightindicator",{
4542 outCircle . translate ( 0 , 0 , .75 ) ;
4643 }
4744
48- let outGeometry = new THREE . Geometry ( ) ;
49- outGeometry . merge ( outCircle ) ;
50- outGeometry . merge ( outCone ) ;
45+ let outGeometry = THREE . BufferGeometryUtils . mergeBufferGeometries ( [ outCone , outCircle ] ) ;
5146
5247 /* define material */
5348 const material = new THREE . MeshBasicMaterial ( { color : data . color , side : THREE . DoubleSide } ) ;
@@ -113,20 +108,16 @@ AFRAME.registerComponent("directionallightindicator", {
113108 arrowHead . translate ( 0 , 1.8 , 0 ) ;
114109 arrowHead . rotateX ( Math . PI ) ;
115110
116- let geometry = new THREE . Geometry ( ) ;
117- geometry . merge ( arrowHead ) ;
118- geometry . merge ( arrowPole ) ;
111+ let geometry = THREE . BufferGeometryUtils . mergeBufferGeometries ( [ arrowHead , arrowPole ] ) ;
119112
120113 /* define outside geometry */
121114 let outArrowHead = new THREE . ConeGeometry ( .7 , 1.3 ) ;
122115 let outArrowPole = new THREE . CylinderGeometry ( .2 , .2 , 2.8 , 20 , 4 ) ;
123116
124- let outGeometry = new THREE . Geometry ( ) ;
125117 outArrowHead . translate ( 0 , 1.8 , 0 ) ;
126118 outArrowHead . rotateX ( Math . PI ) ;
127119
128- outGeometry . merge ( outArrowHead ) ;
129- outGeometry . merge ( outArrowPole ) ;
120+ let outGeometry = THREE . BufferGeometryUtils . mergeBufferGeometries ( [ outArrowHead , outArrowPole ] ) ;
130121
131122 /* define material */
132123 let material = new THREE . MeshBasicMaterial ( { color :data . color } ) ;
@@ -158,57 +149,38 @@ AFRAME.registerComponent("hemispherelightindicator",{
158149 } ,
159150 init : function ( ) {
160151 const data = this . data ;
161-
162- /* define geometry */
163- let geometry = new THREE . Geometry ( ) ;
164-
152+ let geometry = [ ] ;
165153 //define parts of geometry
166154 let head = new THREE . ConeGeometry ( .5 ) ;
167155 let pole = new THREE . CylinderGeometry ( .1 , .1 , 1 , 20 ) ;
168156 head . translate ( 0 , 1.5 , 0 ) ;
169157 pole . translate ( 0 , 0.5 , 0 ) ;
170-
171- //merge geometries
172- let arrowGeo = new THREE . Geometry ( ) ;
173- arrowGeo . merge ( head ) ;
174- arrowGeo . merge ( pole ) ;
175-
176- //get down matrix
177- let temp = new THREE . Mesh ( arrowGeo ) ;
178- temp . rotateX ( Math . PI ) ;
179- temp . updateMatrix ( ) ;
180-
181- geometry . merge ( arrowGeo , new THREE . Matrix4 ( ) , 0 ) ;
182- geometry . merge ( arrowGeo , temp . matrix , 1 ) ;
183158
184- /* define outline geometry */
185- let outGeometry = new THREE . Geometry ( ) ;
159+ //merge geometries
160+ geometry . push ( THREE . BufferGeometryUtils . mergeBufferGeometries ( [ head , pole ] ) ) ;
186161
187162 const outHead = new THREE . ConeGeometry ( .7 , 1.3 , 20 , 12 ) ;
188163 const outPole = new THREE . CylinderGeometry ( 0.2 , 0.2 , 1.2 , 20 ) ;
189164 outHead . translate ( 0 , 1.5 , 0 ) ;
190165 outPole . translate ( 0 , 0.6 , 0 ) ;
191166
192- let outArrowGeo = new THREE . Geometry ( ) ;
193- outArrowGeo . merge ( outHead ) ;
194- outArrowGeo . merge ( outPole ) ;
195-
196- outGeometry . merge ( outArrowGeo , new THREE . Matrix4 ( ) , 0 ) ;
197- outGeometry . merge ( outArrowGeo , temp . matrix , 1 ) ;
198-
199- /* define material */
200- const material = new THREE . MeshBasicMaterial ( { color : data . color } ) ;
201- const secondMaterial = new THREE . MeshBasicMaterial ( { color :data . secondColor } ) ;
202- const outMaterial = CreateOutlineMaterial ( material ) ;
203- const outSecondMaterial = CreateOutlineMaterial ( secondMaterial ) ;
204-
167+ /* define outline geometry */
168+ geometry . push ( THREE . BufferGeometryUtils . mergeBufferGeometries ( [ outHead , outPole ] ) ) ;
169+
205170 /* define and group all the meshes together */
206- let mesh = new AFRAME . THREE . Mesh ( geometry , [ material , secondMaterial ] ) ;
207- let outlineMesh = new AFRAME . THREE . Mesh ( outGeometry , [ outMaterial , outSecondMaterial ] ) ;
208-
209- let group = new AFRAME . THREE . Group ( ) ;
210- group . add ( mesh ) ;
211- group . add ( outlineMesh ) ;
171+ let group = new THREE . Group ( ) ;
172+ geometry . forEach ( ( shape , i ) => {
173+ let mat = new THREE . MeshBasicMaterial ( { color : data . color } ) ;
174+ let secondMat = new THREE . MeshBasicMaterial ( { color : data . secondColor } ) ;
175+
176+ if ( i === 1 ) {
177+ mat = CreateOutlineMaterial ( mat ) ;
178+ secondMat = CreateOutlineMaterial ( secondMat ) ;
179+ }
180+
181+ group . add ( new THREE . Mesh ( shape , mat ) ) ;
182+ group . add ( new THREE . Mesh ( shape . clone ( ) . rotateX ( Math . PI ) , secondMat ) ) ;
183+ } ) ;
212184
213185 let el = this . el ;
214186 el . setObject3D ( "group" , group ) ;
0 commit comments