class module_Craft { CHR = [] ; Dispose() { } constructor() { let $DEF = [] ; $DEF[1] = "0,0,0,0,0,0, 0,1,1,1,1,0, 0,1,0,0,1,0, 0,1,0,0,1,0, 0,1,1,1,1,0, 0,0,0,0,0,0" ; $DEF[22] = "0,0,0,0,0,0, 0,0,0,0,0,0, 1,1,1,1,1,1, 1,0,0,0,0,1, 1,1,1,1,1,1, 0,0,0,0,0,0" ; $DEF[24] = "0,0,1,0,0,0, 0,1,1,1,0,0, 1,1,1,1,1,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0" ; $DEF[25] = "0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 1,1,1,1,1,0, 0,1,1,1,0,0, 0,0,1,0,0,0" ; $DEF[26] = "0,0,0,0,0,0, 0,0,0,1,0,0, 0,0,0,1,1,0, 1,1,1,1,1,1, 0,0,0,1,1,0, 0,0,0,1,0,0" ; $DEF[27] = "0,0,0,0,0,0, 0,0,1,0,0,0, 0,1,1,0,0,0, 1,1,1,1,1,1, 0,1,1,0,0,0, 0,0,1,0,0,0" ; $DEF[32] = "0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0" ; $DEF[33] = "0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,0,0,0,0, 0,0,1,0,0,0" ; $DEF[34] = "0,1,0,1,0,0, 0,1,0,1,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0" ; $DEF[35] = "0,0,0,0,0,0, 0,0,1,0,1,0, 0,1,1,1,1,1, 0,0,1,0,1,0, 0,1,1,1,1,1, 0,0,1,0,1,0" ; $DEF[36] = "0,0,1,0,0,0, 0,1,1,1,1,0, 1,0,1,0,0,0, 0,1,1,1,1,0, 0,0,1,0,1,0, 1,1,1,1,0,0" ; $DEF[37] = "1,1,0,0,0,1, 1,1,0,0,1,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,1,0,0,1,1, 1,0,0,0,1,1" ; $DEF[38] = "0,1,1,0,0,0, 1,0,0,1,0,0, 0,1,1,0,0,0, 1,0,0,1,0,1, 1,0,0,0,1,0, 0,1,1,1,0,1" ; $DEF[39] = "0,0,1,0,0,0, 0,1,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0" ; $DEF[40] = "0,1,0,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0" ; $DEF[41] = "0,0,0,0,1,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,0,1,0" ; $DEF[42] = "0,0,0,0,0,0, 0,0,1,0,1,0, 0,0,0,1,0,0, 0,1,1,1,1,1, 0,0,0,1,0,0, 0,0,1,0,1,0" ; $DEF[43] = "0,0,0,0,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,1,1,1,1,1, 0,0,0,1,0,0, 0,0,0,1,0,0" ; $DEF[44] = "0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0" ; $DEF[45] = "0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,1,1,1,1,1, 0,0,0,0,0,0, 0,0,0,0,0,0" ; $DEF[46] = "0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,1,1,0,0,0, 0,1,1,0,0,0" ; $DEF[47] = "0,0,0,0,0,1, 0,0,0,0,1,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 1,0,0,0,0,0" ; $DEF[48] = "0,1,1,1,1,0, 1,0,0,0,1,1, 1,0,0,1,0,1, 1,0,1,0,0,1, 1,1,0,0,0,1, 0,1,1,1,1,0" ; $DEF[49] = "0,0,0,1,0,0, 0,0,1,1,0,0, 0,1,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,1,1,1,1,1" ; $DEF[50] = "0,1,1,1,1,0, 1,0,0,0,0,1, 0,0,0,0,0,1, 0,1,1,1,1,0, 1,0,0,0,0,0, 1,1,1,1,1,1" ; $DEF[51] = "0,1,1,1,1,0, 1,0,0,0,0,1, 0,0,0,1,1,0, 0,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[52] = "0,0,0,0,1,0, 0,0,0,1,1,0, 0,0,1,0,1,0, 0,1,0,0,0,1, 1,1,1,1,1,1, 0,0,0,0,1,0" ; $DEF[53] = "1,1,1,1,1,1, 1,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[54] = "0,1,1,1,1,1, 1,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[55] = "1,1,1,1,1,1, 0,0,0,0,0,1, 0,0,0,0,1,0, 0,0,0,1,0,0, 0,0,1,0,0,0 ,0,0,1,0,0,0" ; $DEF[56] = "0,1,1,1,1,0, 1,0,0,0,0,1, 0,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[58] = "0,0,0,0,0,0, 0,0,0,1,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,1,0,0, 0,0,0,0,0,0" ; $DEF[57] = "0,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,1, 0,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[59] = "0,0,0,0,0,0, 0,0,0,1,0,0, 0,0,0,0,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,1,0,0,0" ; $DEF[60] = "0,0,0,0,0,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 0,0,1,0,0,0, 0,0,0,1,0,0" ; $DEF[61] = "0,0,0,0,0,0, 0,0,0,0,0,0, 0,1,1,1,1,0, 0,0,0,0,0,0, 0,1,1,1,1,0, 0,0,0,0,0,0" ; $DEF[62] = "0,0,0,0,0,0, 0,0,1,0,0,0, 0,0,0,1,0,0, 0,0,0,0,1,0, 0,0,0,1,0,0, 0,0,1,0,0,0" ; $DEF[63] = "0,0,1,1,1,0, 0,1,0,0,0,1, 0,0,0,0,1,0, 0,0,0,1,0,0, 0,0,0,0,0,0, 0,0,0,1,0,0" ; $DEF[64] = "0,1,1,1,1,0, 1,0,0,0,0,1, 1,0,1,1,0,1, 1,0,1,1,1,1, 1,0,0,0,0,0, 0,1,1,1,1,0" ; $DEF[65] = "0,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,1,1,1,1,1, 1,0,0,0,0,1, 1,0,0,0,0,1" ; $DEF[66] = "1,1,1,1,1,0, 1,0,0,0,0,1, 1,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,1,1,1,1,0" ; $DEF[67] = "0,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[68] = "1,1,1,1,0,0, 1,0,0,0,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,1,0, 1,1,1,1,0,0" ; $DEF[69] = "1,1,1,1,1,1, 1,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 1,1,1,1,1,1" ; $DEF[70] = "1,1,1,1,1,1, 1,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0" ; $DEF[71] = "0,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,0, 1,0,0,1,1,1, 1,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[72] = "1,0,0,0,0,1, 1,0,0,0,0,1, 1,1,1,1,1,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1" ; $DEF[73] = "0,1,1,1,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,1,1,1,0,0" ; $DEF[74] = "0,0,0,1,1,1, 0,0,0,0,1,0, 0,0,0,0,1,0, 0,0,0,0,1,0, 1,0,0,0,1,0, 0,1,1,1,0,0" ; $DEF[75] = "1,0,0,0,1,0, 1,0,0,1,0,0, 1,1,1,0,0,0, 1,0,0,1,0,0, 1,0,0,0,1,0, 1,0,0,0,0,1" ; $DEF[76] = "1,0,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 1,1,1,1,1,1" ; $DEF[77] = "1,0,0,0,0,1, 1,1,0,0,1,1, 1,0,1,1,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1" ; $DEF[78] = "1,0,0,0,0,1, 1,1,0,0,0,1, 1,0,1,0,0,1, 1,0,0,1,0,1, 1,0,0,0,1,1, 1,0,0,0,0,1" ; $DEF[79] = "0,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[80] = "1,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,1,1,1,1,0, 1,0,0,0,0,0, 1,0,0,0,0,0" ; $DEF[81] = "0,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,1,0,1, 1,0,0,0,1,1, 0,1,1,1,1,0" ; $DEF[82] = "1,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,1,1,1,1,0, 1,0,0,0,1,0, 1,0,0,0,0,1" ; $DEF[83] = "0,1,1,1,1,1, 1,0,0,0,0,0, 0,1,1,1,1,0, 0,0,0,0,0,1, 0,0,0,0,0,1, 1,1,1,1,1,0" ; $DEF[85] = "1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[84] = "0,1,1,1,1,1, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0" ; $DEF[86] = "1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,0,0,1,0, 0,0,1,1,0,0" ; $DEF[87] = "1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,1,1,0,1, 0,1,0,0,1,0" ; $DEF[88] = "1,0,0,0,0,1, 0,1,0,0,1,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,1,0,0,1,0, 1,0,0,0,0,1" ; $DEF[89] = "1,0,0,0,1,0, 0,1,0,1,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0" ; $DEF[90] = "1,1,1,1,1,1, 0,0,0,0,1,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 1,1,1,1,1,1" ; $DEF[91] = "0,0,1,1,1,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,1,1,0" ; $DEF[92] = "1,0,0,0,0,0, 0,1,0,0,0,0, 0,0,1,0,0,0, 0,0,0,1,0,0, 0,0,0,0,1,0, 0,0,0,0,0,1" ; $DEF[93] = "0,1,1,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,1,1,1,0,0" ; $DEF[94] = "0,0,1,0,0,0, 0,1,0,1,0,0, 1,0,0,0,1,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0" ; $DEF[95] = "0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 1,1,1,1,1,1" ; $DEF[96] = "0,0,1,0,0,0, 0,0,0,1,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0" ; $DEF[97] = "0,0,0,0,0,0, 0,1,1,1,1,0, 0,0,0,0,0,1, 1,1,1,1,1,1, 1,0,0,0,0,1, 0,1,1,1,1,1" ; $DEF[98] = "1,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,1,1,1,1,0" ; $DEF[99] = "0,0,0,0,0,0, 0,1,1,1,1,1, 1,0,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 0,1,1,1,1,1" ; $DEF[100] = "0,0,0,0,0,1, 0,1,1,1,1,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,1" ; $DEF[101] = "0,0,0,0,0,0, 0,1,1,1,1,0, 1,0,0,0,0,1, 1,1,1,1,1,1, 1,0,0,0,0,0, 0,1,1,1,1,1" ; $DEF[102] = "0,0,1,1,1,0, 0,1,0,0,0,0, 1,1,1,0,0,0, 0,1,0,0,0,0, 0,1,0,0,0,0, 0,1,0,0,0,0" ; $DEF[103] = "0,0,0,0,0,0, 0,1,1,1,1,1, 1,0,0,0,0,1, 1,1,1,1,1,1, 0,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[104] = "1,0,0,0,0,0, 1,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1" ; $DEF[105] = "0,0,0,1,0,0, 0,0,0,0,0,0, 0,0,1,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,1,1,1,0" ; $DEF[106] = "0,0,0,0,1,0, 0,0,0,0,0,0, 0,0,0,0,1,0, 0,0,0,0,1,0, 1,0,0,0,1,0, 0,1,1,1,0,0" ; $DEF[107] = "0,1,0,0,0,0, 0,1,0,0,1,0, 0,1,0,1,0,0, 0,1,1,1,0,0, 0,1,0,0,1,0, 0,1,0,0,0,1" ; $DEF[108] = "0,1,0,0,0,0, 0,1,0,0,0,0, 0,1,0,0,0,0, 0,1,0,0,0,0, 0,1,0,0,0,0, 0,0,1,1,1,0" ; $DEF[109] = "0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,1,0,1, 1,0,0,1,0,1, 1,0,0,1,0,1, 1,0,0,1,0,1" ; $DEF[110] = "0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1" ; $DEF[111] = "0,0,0,0,0,0, 0,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[112] = "0,0,0,0,0,0, 1,1,1,1,1,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,1,1,1,1,0, 1,0,0,0,0,0" ; $DEF[113] = "0,0,0,0,0,0, 0,1,1,1,1,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,1, 0,0,0,0,0,1" ; $DEF[114] = "0,0,0,0,0,0, 1,0,1,1,1,0, 1,1,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0, 1,0,0,0,0,0" ; $DEF[115] = "0,0,0,0,0,0, 0,1,1,1,1,1, 1,0,0,0,0,0, 0,1,1,1,1,0, 0,0,0,0,0,1, 1,1,1,1,1,0" ; $DEF[116] = "0,0,1,0,0,0, 0,1,1,1,1,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,0,1,1,0" ; $DEF[117] = "0,0,0,0,0,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,0" ; $DEF[118] = "0,0,0,0,0,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,0,0,1,0, 0,1,0,0,1,0, 0,0,1,1,0,0" ; $DEF[119] = "0,0,0,0,0,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,0,0,0,1, 1,0,1,1,0,1, 0,1,0,0,1,0" ; $DEF[120] = "0,0,0,0,0,0, 0,1,0,0,0,1, 0,0,1,0,1,0, 0,0,0,1,0,0, 0,0,1,0,1,0, 0,1,0,0,0,1" ; $DEF[121] = "0,0,0,0,0,0, 1,0,0,0,0,1, 1,0,0,0,0,1, 0,1,1,1,1,1, 0,0,0,0,0,1, 1,1,1,1,1,0" ; $DEF[122] = "0,0,0,0,0,0, 1,1,1,1,1,0, 0,0,0,1,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0, 1,1,1,1,1,1" ; $DEF[123] = "0,0,0,0,1,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,1,1,0,0, 0,0,0,1,0,0, 0,0,0,0,1,0" ; $DEF[124] = "0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0, 0,0,0,1,0,0" ; $DEF[125] = "0,1,0,0,0,0, 0,0,1,0,0,0, 0,0,1,0,0,0, 0,0,1,1,0,0, 0,0,1,0,0,0, 0,1,0,0,0,0" ; $DEF[127] = "0,0,1,1,1,1, 0,1,0,0,0,0, 1,1,1,1,1,1, 0,1,0,0,0,0, 0,1,0,0,0,0, 0,0,1,1,1,1" ; for( const $i in $DEF ) { this.CHR[$i] = [] ; let $T = $DEF[$i].split(",") ; for( let $j=0; $j<36; $j++ ) { let $val = ($T[$j].trim()) == "1" ? 1 : 0 ; this.CHR[$i].push($val); } } } Is(id) { return µB.$Sprite.Is(id) ; } AddText( $Voxel, $string ) { let $x=2, $y=2, $z=1 ; let $color = µB.$Config.color ; for( let $c=0; $c<$string.length; $c++ ) { let $chr = $string.charCodeAt($c) ; let $CHAR = this.CHR[$chr]??this.CHR[1]; for( let $yy=0 ; $yy<6; $yy++ ) { for( let $xx=0 ; $xx<6; $xx++ ) { if( $CHAR[$yy*6+$xx] ) { $Voxel.Poke($color,$x+$xx-1,9-($y+$yy)-1,$z-1); } } } $x+=7 ; } $Voxel.Dirty(); } define( $name, ...$DEFINITION ) { if( this.Is($name) ) { let $Voxel = µB.$Sprite.VOXEL[$name] ; $Voxel.Define($DEFINITION) ; $Voxel.Dirty(); } } build( $name ) { if( this.Is($name) ) { let $Voxel = µB.$Sprite.VOXEL[$name] ; $Voxel.Build(); } } clear( $name ) { if( this.Is($name) ) { let $Voxel = µB.$Sprite.VOXEL[$name] ; $Voxel.DEF = [] ; $Voxel.Dirty(); } } poke( $name, $color, $x,$y,$z) { if( this.Is($name) ) { let $Voxel = µB.$Sprite.VOXEL[$name] ; $Voxel.Poke($color, $x-1,$y-1,$z-1); $Voxel.Dirty(); } } peek( $name, $x,$y,$z) { if( this.Is($name) ) { let $Voxel = µB.$Sprite.VOXEL[$name] ; let $peek = $Voxel.Peek($x-1,$y-1,$z-1); return $peek === false ? -1 : $peek ; } return -1; } dot( $name, $x,$y,$z ) { if( this.Is($name) ) { let $Voxel = µB.$Sprite.VOXEL[$name] ; let $color = µB.$Config.color; this.poke( $name, $color, $x,$y,$z ) ; $Voxel.Dirty(); } } line( $name, $x1,$y1,$z1, $x2,$y2,$z2 ) { if( this.Is($name) ) { let $Voxel = µB.$Sprite.VOXEL[$name] ; let $sz = $Voxel.size ; let $color = µB.$Config.color ; $x1 = MinMax( $x1, 1, $sz ); $y1 = MinMax( $y1, 1, $sz ); $z1 = MinMax( $z1, 1, $sz ); $x2 = MinMax( $x2, 1, $sz ); $y2 = MinMax( $y2, 1, $sz ); $z2 = MinMax( $z2, 1, $sz ); var $dx = $x2 - $x1 ; var $dy = $y2 - $y1 ; var $dz = $z2 - $z1 ; var $max = Math.max(Math.abs($dx),Math.abs($dy),Math.abs($dz)); if( $max > 0 ) { $dx = Math.ceil($dx/$max) ; $dy = Math.ceil($dy/$max) ; $dz = Math.ceil($dz/$max) ; for( var $d=0; $d<=$max; $d++ ) { var $xx = $x1 + $d*$dx ; var $yy = $y1 + $d*$dy ; var $zz = $z1 + $d*$dz ; $Voxel.Poke($color, $xx-1,$yy-1,$zz-1); } $Voxel.Dirty(); } } } box( $name, $x1,$y1,$z1, $x2,$y2,$z2 ) { if( this.Is($name) ) { let $Voxel = µB.$Sprite.VOXEL[$name] ; let $sz = $Voxel.size ; let $color = µB.$Config.color; $x1 = MinMax( $x1, 1, $sz ); $y1 = MinMax( $y1, 1, $sz ); $z1 = MinMax( $z1, 1, $sz ); $x2 = MinMax( $x2, 1, $sz ); $y2 = MinMax( $y2, 1, $sz ); $z2 = MinMax( $z2, 1, $sz ); for( var $z=$z1 ; $z<=$z2 ; $z++ ) { for( var $y=$y1 ; $y<=$y2 ; $y++ ) { for( var $x=$x1 ; $x<=$x2 ; $x++ ) { $Voxel.Poke($color, $x-1,$y-1,$z-1); } } } $Voxel.Dirty(); } } frame( $name, $x1,$y1,$z1, $x2,$y2,$z2 ) { if( this.Is($name) ) { let $Voxel = µB.$Sprite.VOXEL[$name] ; let $sz = $Voxel.size ; let $color = µB.$Config.color; $x1 = MinMax( $x1, 1, $sz ); $y1 = MinMax( $y1, 1, $sz ); $z1 = MinMax( $z1, 1, $sz ); $x2 = MinMax( $x2, 1, $sz ); $y2 = MinMax( $y2, 1, $sz ); $z2 = MinMax( $z2, 1, $sz ); for( let $x=$x1 ; $x<=$x2 ; $x++ ) { $Voxel.Poke($color, $x-1,$y1-1,$z1-1); $Voxel.Poke($color, $x-1,$y1-1,$z2-1); $Voxel.Poke($color, $x-1,$y2-1,$z1-1); $Voxel.Poke($color, $x-1,$y2-1,$z2-1); } for( let $y=$y1 ; $y<=$y2 ; $y++ ) { $Voxel.Poke($color, $x1-1,$y-1,$z1-1); $Voxel.Poke($color, $x1-1,$y-1,$z2-1); $Voxel.Poke($color, $x2-1,$y-1,$z1-1); $Voxel.Poke($color, $x2-1,$y-1,$z2-1); } for( let $z=$z1 ; $z<=$z2 ; $z++ ) { $Voxel.Poke($color, $x1-1,$y1-1,$z-1); $Voxel.Poke($color, $x2-1,$y1-1,$z-1); $Voxel.Poke($color, $x1-1,$y2-1,$z-1); $Voxel.Poke($color, $x2-1,$y2-1,$z-1); } $Voxel.Dirty(); } } fill( name ) { if( this.Is(name) ) { let Voxel = µB.$Sprite.VOXEL[name] ; let color = µB.$Config.color ; for( let z = 0 ; z <= Voxel.size ; z++ ) { for( let y = 0 ; y <= Voxel.size ; y++ ) { for( let x = 0 ; x <= Voxel.size ; x++ ) { let index = Voxel.Index(x,y,z) ; let peek = Voxel.DEF[index] ?? 0; if( peek>0 && peek != color ) { Voxel.Poke(color,x,y,z); } } } } } } }