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);
}
}
}
}
}
}
}