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 ];