@@ -2,33 +2,29 @@ import * as THREE from './build/three.module.js'
22class Entities
33 constructor : (options )->
44 @scene = options .scene
5- @saved = {}
65 @nick = options .nick
76 @TWEEN = options .TWEEN
7+ @mobMeshMaterial = new THREE.MeshBasicMaterial {color : new THREE.Color " red" }
8+ @mobMeshGeometry = new THREE.BoxGeometry 1 , 1 , 1
9+ @maxCount = 200
10+ @mobMesh = new THREE.InstancedMesh @mobMeshGeometry ,@mobMeshMaterial ,@maxCount
11+ @mobMesh .instanceMatrix .setUsage THREE .DynamicDrawUsage
12+ @scene .add @mobMesh
13+ @dummy = new THREE.Object3D ()
14+ return
815 update : (entities )->
916 offset = [- 0.5 ,16 ,- 0.5 ]
17+ num = 0
1018 for i of entities
11- if entities[i].username isnt @nick
12- pos = [entities[i].position .x + offset[0 ],entities[i].position .y + offset[1 ],entities[i].position .z + offset[2 ]]
13- if @saved [entities[i].uuid ] is undefined
14- if entities[i].name is " item"
15- material = new THREE.MeshBasicMaterial ( {color : new THREE.Color (" blue" )} )
16- geometry = new THREE.BoxGeometry ( 0.5 , 0.5 , 0.5 )
17- else
18- material = new THREE.MeshBasicMaterial ( {color : new THREE.Color (" red" )} )
19- geometry = new THREE.BoxGeometry ( 1 , 1 , 1 )
20- cube = new THREE.Mesh ( geometry, material )
21- @scene .add (cube)
22- @saved [entities[i].uuid ]= cube
23- @saved [entities[i].uuid ].position .set pos...
24- @saved [entities[i].uuid ].active = true
25- else
26- @saved [entities[i].uuid ].position .set pos...
27- @saved [entities[i].uuid ].active = true
28- for i of @saved
29- if @saved [i].active is false
30- @scene .remove @saved [i]
31- delete @saved [i]
32- for i of @saved
33- @saved [i].active = false
19+ if entities[i].type is " mob"
20+ num++
21+ @mobMesh .count = num
22+ num = 0
23+ for i of entities
24+ if entities[i].type is " mob"
25+ @dummy .position .set entities[i].position .x + offset[0 ],entities[i].position .y + offset[1 ],entities[i].position .z + offset[2 ]
26+ @dummy .updateMatrix ()
27+ @mobMesh .setMatrixAt num++ , @dummy .matrix
28+ @mobMesh .instanceMatrix .needsUpdate = true
29+ return
3430export {Entities}
0 commit comments