11import {CellTerrain} from ' ./CellTerrain.js'
2- import {BlockGeo} from ' ./BlockGeo.js'
32
43console .log " CHUNK WORKER STARTED!"
54
@@ -9,10 +8,70 @@ class TerrainManager
98 @cellTerrain = new CellTerrain {
109 cellSize : @cellSize
1110 }
12- @BlockGeo = new BlockGeo {
13- toxelSize : options .toxelSize
14- blocksMapping : options .blocksMapping
15- }
11+ @toxelSize = options .toxelSize
12+ @q = 1 / @toxelSize
13+ @blocksMapping = options .blocksMapping
14+ genBlockFace : (type ,block ,pos )->
15+ if block .name is " water"
16+ toxX = @blocksMapping [" water_flow" ][" x" ]
17+ toxY = @blocksMapping [" water_flow" ][" y" ]
18+ else if @blocksMapping [block .name ]
19+ toxX = @blocksMapping [block .name ][" x" ]
20+ toxY = @blocksMapping [block .name ][" y" ]
21+ else
22+ toxX = @blocksMapping [" debug" ][" x" ]
23+ toxY = 28 - @blocksMapping [" debug" ][" y" ]
24+ li = [255 ,255 ,255 ]
25+ sh = [0 ,0 ,0 ]
26+ toxX -= 1
27+ toxY -= 1
28+ x1 = @q * toxX
29+ y1 = 1 - @q * toxY- @q
30+ x2 = @q * toxX+ @q
31+ y2 = 1 - @q * toxY
32+ uv = [
33+ [x1,y1]
34+ [x1,y2]
35+ [x2,y1]
36+ [x2,y2]
37+ ]
38+ switch type
39+ when " pz"
40+ return {
41+ pos : [- 0.5 + pos[0 ], - 0.5 + pos[1 ], 0.5 + pos[2 ],0.5 + pos[0 ], - 0.5 + pos[1 ], 0.5 + pos[2 ],- 0.5 + pos[0 ], 0.5 + pos[1 ], 0.5 + pos[2 ],- 0.5 + pos[0 ], 0.5 + pos[1 ], 0.5 + pos[2 ],0.5 + pos[0 ], - 0.5 + pos[1 ], 0.5 + pos[2 ],0.5 + pos[0 ], 0.5 + pos[1 ], 0.5 + pos[2 ]]
42+ norm : [0 , 0 , 1 ,0 , 0 , 1 ,0 , 0 , 1 ,0 , 0 , 1 ,0 , 0 , 1 ,0 , 0 , 1 ]
43+ uv : [uv[0 ]... ,uv[2 ]... ,uv[1 ]... ,uv[1 ]... ,uv[2 ]... ,uv[3 ]... ]
44+ }
45+ when " nx"
46+ return {
47+ pos : [ 0.5 + pos[0 ], - 0.5 + pos[1 ], 0.5 + pos[2 ], 0.5 + pos[0 ], - 0.5 + pos[1 ], - 0.5 + pos[2 ],0.5 + pos[0 ], 0.5 + pos[1 ], 0.5 + pos[2 ], 0.5 + pos[0 ], 0.5 + pos[1 ], 0.5 + pos[2 ],0.5 + pos[0 ], - 0.5 + pos[1 ], - 0.5 + pos[2 ], 0.5 + pos[0 ], 0.5 + pos[1 ], - 0.5 + pos[2 ]]
48+ norm : [ 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 ]
49+ uv : [uv[0 ]... ,uv[2 ]... ,uv[1 ]... ,uv[1 ]... ,uv[2 ]... ,uv[3 ]... ]
50+ }
51+ when " nz"
52+ return {
53+ pos : [ 0.5 + pos[0 ], - 0.5 + pos[1 ], - 0.5 + pos[2 ],- 0.5 + pos[0 ], - 0.5 + pos[1 ], - 0.5 + pos[2 ],0.5 + pos[0 ], 0.5 + pos[1 ], - 0.5 + pos[2 ], 0.5 + pos[0 ], 0.5 + pos[1 ], - 0.5 + pos[2 ],- 0.5 + pos[0 ], - 0.5 + pos[1 ], - 0.5 + pos[2 ],- 0.5 + pos[0 ], 0.5 + pos[1 ], - 0.5 + pos[2 ]]
54+ norm : [ 0 , 0 , - 1 , 0 , 0 , - 1 , 0 , 0 , - 1 , 0 , 0 , - 1 , 0 , 0 , - 1 , 0 , 0 , - 1 ]
55+ uv : [uv[0 ]... ,uv[2 ]... ,uv[1 ]... ,uv[1 ]... ,uv[2 ]... ,uv[3 ]... ]
56+ }
57+ when " px"
58+ return {
59+ pos : [- 0.5 + pos[0 ], - 0.5 + pos[1 ], - 0.5 + pos[2 ],- 0.5 + pos[0 ], - 0.5 + pos[1 ], 0.5 + pos[2 ],- 0.5 + pos[0 ], 0.5 + pos[1 ], - 0.5 + pos[2 ],- 0.5 + pos[0 ], 0.5 + pos[1 ], - 0.5 + pos[2 ],- 0.5 + pos[0 ], - 0.5 + pos[1 ], 0.5 + pos[2 ],- 0.5 + pos[0 ], 0.5 + pos[1 ], 0.5 + pos[2 ]]
60+ norm : [- 1 , 0 , 0 ,- 1 , 0 , 0 ,- 1 , 0 , 0 ,- 1 , 0 , 0 ,- 1 , 0 , 0 ,- 1 , 0 , 0 ]
61+ uv : [uv[0 ]... ,uv[2 ]... ,uv[1 ]... ,uv[1 ]... ,uv[2 ]... ,uv[3 ]... ]
62+ }
63+ when " py"
64+ return {
65+ pos : [ 0.5 + pos[0 ], 0.5 + pos[1 ], - 0.5 + pos[2 ],- 0.5 + pos[0 ], 0.5 + pos[1 ], - 0.5 + pos[2 ],0.5 + pos[0 ], 0.5 + pos[1 ], 0.5 + pos[2 ], 0.5 + pos[0 ], 0.5 + pos[1 ], 0.5 + pos[2 ],- 0.5 + pos[0 ], 0.5 + pos[1 ], - 0.5 + pos[2 ],- 0.5 + pos[0 ], 0.5 + pos[1 ], 0.5 + pos[2 ]]
66+ norm : [ 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 ]
67+ uv : [uv[0 ]... ,uv[2 ]... ,uv[1 ]... ,uv[1 ]... ,uv[2 ]... ,uv[3 ]... ]
68+ }
69+ when " ny"
70+ return {
71+ pos : [ 0.5 + pos[0 ], - 0.5 + pos[1 ], 0.5 + pos[2 ],- 0.5 + pos[0 ], - 0.5 + pos[1 ], 0.5 + pos[2 ],0.5 + pos[0 ], - 0.5 + pos[1 ], - 0.5 + pos[2 ], 0.5 + pos[0 ], - 0.5 + pos[1 ], - 0.5 + pos[2 ],- 0.5 + pos[0 ], - 0.5 + pos[1 ], 0.5 + pos[2 ],- 0.5 + pos[0 ], - 0.5 + pos[1 ], - 0.5 + pos[2 ]]
72+ norm : [ 0 , - 1 , 0 , 0 , - 1 , 0 , 0 , - 1 , 0 , 0 , - 1 , 0 , 0 , - 1 , 0 , 0 , - 1 , 0 ]
73+ uv : [uv[0 ]... ,uv[2 ]... ,uv[1 ]... ,uv[1 ]... ,uv[2 ]... ,uv[3 ]... ]
74+ }
1675 genCellGeo : (cellX ,cellY ,cellZ )->
1776 _this = @
1877 positions = []
@@ -29,7 +88,7 @@ class TerrainManager
2988 else
3089 return [0.3 ,0.3 ,0.3 ]
3190 addFace = (type ,pos )->
32- faceVertex = _this .BlockGeo . genBlockFace type,_this .cellTerrain .getBlock (pos... ),pos
91+ faceVertex = _this .genBlockFace type,_this .cellTerrain .getBlock (pos... ),pos
3392 positions .push faceVertex .pos ...
3493 normals .push faceVertex .norm ...
3594 uvs .push faceVertex .uv ...
@@ -115,7 +174,6 @@ class TerrainManager
115174 uvs
116175 colors
117176 }
118-
119177addEventListener " message" , (e )->
120178 fn = handlers[e .data .type ]
121179 if not fn
@@ -150,5 +208,4 @@ handlers={
150208 }
151209 setCell : (data )->
152210 terrain .cellTerrain .setCell data[0 ],data[1 ],data[2 ],data[3 ]
153- terrain .cellTerrain .setBiome data[0 ],data[1 ],data[2 ],data[4 ]
154211}
0 commit comments