@@ -2,27 +2,52 @@ import * as THREE from 'three'
22class Entities
33 constructor : (game )->
44 @game = game
5- @material = new THREE.MeshStandardMaterial {
5+ @mobMaterial = new THREE.MeshStandardMaterial {
66 color : new THREE.Color " red"
77 }
88 @mobGeometry = new THREE.BoxGeometry 1 , 1 , 1
99 @mobMaxCount = 200
10- @mobMesh = new THREE.InstancedMesh @mobGeometry ,@material ,@mobMaxCount
10+ @mobMesh = new THREE.InstancedMesh @mobGeometry ,@mobMaterial ,@mobMaxCount
1111 @mobMesh .instanceMatrix .setUsage THREE .DynamicDrawUsage
1212 @game .scene .add @mobMesh
13+
14+ @playerMaterial = new THREE.MeshStandardMaterial {
15+ color : new THREE.Color " blue"
16+ }
17+ @playerGeometry = new THREE.BoxGeometry 1 , 1 , 1
18+ @playerMaxCount = 200
19+ @playerMesh = new THREE.InstancedMesh @playerGeometry ,@playerMaterial ,@playerMaxCount
20+ @playerMesh .instanceMatrix .setUsage THREE .DynamicDrawUsage
21+ @game .scene .add @playerMesh
22+
1323 @dummy = new THREE.Object3D ()
1424 return
1525 update : (entities )->
1626 offset = [- 0.5 ,16 ,- 0.5 ]
17- mobs = 0
18- for i of entities
19- mobs++
20- @mobMesh .count = mobs
21- mobs = 0
22- for i of entities
23- @dummy .position .set entities[i][0 ]+ offset[0 ],entities[i][1 ]+ offset[1 ],entities[i][2 ]+ offset[2 ]
27+
28+ num_mobs = 0
29+ for i of entities .mobs
30+ num_mobs++
31+ @mobMesh .count = num_mobs
32+ num_mobs = 0
33+ for i of entities .mobs
34+ @dummy .position .set entities .mobs [i][0 ]+ offset[0 ],entities .mobs [i][1 ]+ offset[1 ],entities .mobs [i][2 ]+ offset[2 ]
2435 @dummy .updateMatrix ()
25- @mobMesh .setMatrixAt mobs ++ , @dummy .matrix
36+ @mobMesh .setMatrixAt num_mobs ++ , @dummy .matrix
2637 @mobMesh .instanceMatrix .needsUpdate = true
38+
39+ num_players = 0
40+ for i of entities .players
41+ if entities .players [i][0 ] isnt @game .nick
42+ num_players++
43+ @playerMesh .count = num_players
44+ num_players = 0
45+ for i of entities .players
46+ if entities .players [i][0 ] isnt @game .nick
47+ @dummy .position .set entities .players [i][1 ]+ offset[0 ],entities .players [i][2 ]+ offset[1 ],entities .players [i][3 ]+ offset[2 ]
48+ @dummy .updateMatrix ()
49+ @playerMesh .setMatrixAt num_players++ , @dummy .matrix
50+ @playerMesh .instanceMatrix .needsUpdate = true
51+
2752 return
2853export {Entities}
0 commit comments