1 /**
2 Copyright: Copyright (c) 2016 Andrey Penechko.
3 License: $(WEB boost.org/LICENSE_1_0.txt, Boost License 1.0).
4 Authors: Andrey Penechko.
5 */
6 module voxelman.geometry.cube;
7 
8 enum CubeSide : ubyte
9 {
10 	zneg = 0,
11 	zpos = 1,
12 
13 	xpos = 2,
14 	xneg = 3,
15 
16 	ypos = 4,
17 	yneg = 5,
18 }
19 
20 
21 immutable CubeSide[6] oppSide = [
22 	CubeSide.zpos,
23 	CubeSide.zneg,
24 	CubeSide.xneg,
25 	CubeSide.xpos,
26 	CubeSide.yneg,
27 	CubeSide.ypos];
28 
29 immutable byte[3][6] sideOffsets = [
30 	[ 0, 0,-1],
31 	[ 0, 0, 1],
32 	[ 1, 0, 0],
33 	[-1, 0, 0],
34 	[ 0, 1, 0],
35 	[ 0,-1, 0],
36 ];
37 
38 // mesh for single block
39 immutable ubyte[18 * 6] cubeFaces =
40 [
41 	0, 0, 0, // triangle 1 : begin // zneg
42 	1, 1, 0,
43 	1, 0, 0, // triangle 1 : end
44 	0, 0, 0, // triangle 2 : begin
45 	0, 1, 0,
46 	1, 1, 0, // triangle 2 : end
47 
48 	1, 0, 1, // zpos
49 	0, 1, 1,
50 	0, 0, 1,
51 	1, 0, 1,
52 	1, 1, 1,
53 	0, 1, 1,
54 
55 	1, 0, 0, // xpos
56 	1, 1, 1,
57 	1, 0, 1,
58 	1, 0, 0,
59 	1, 1, 0,
60 	1, 1, 1,
61 
62 	0, 0, 1, // xneg
63 	0, 1, 0,
64 	0, 0, 0,
65 	0, 0, 1,
66 	0, 1, 1,
67 	0, 1, 0,
68 
69 	1, 1, 1, // ypos
70 	0, 1, 0,
71 	0, 1, 1,
72 	1, 1, 1,
73 	1, 1, 0,
74 	0, 1, 0,
75 
76 	0, 0, 1, // yneg
77 	1, 0, 0,
78 	1, 0, 1,
79 	0, 0, 1,
80 	0, 0, 0,
81 	1, 0, 0,
82 ];