refactor for around box validity

This commit is contained in:
ethan merchant 2024-11-10 05:07:28 -05:00
parent 3fdea357fc
commit c1f0bcc956
2 changed files with 6 additions and 5 deletions

View file

@ -78,14 +78,14 @@ static class Arts
meshes["uiPlay"].Draw( meshes["uiPlay"].Draw(
mat_unlit, mat_unlit,
Matrix.TR( Matrix.TR(
V.XYZ(0, 0, Mono.SD_Z + 0.5f + 0.1f), V.XYZ(0, 0, Mono.SD_Z - 0.5f + 0.1f),
Quat.FromAngles(90, 0, 0) Quat.FromAngles(90, 0, 0)
) )
); );
meshes["uiCursor"].Draw( meshes["uiCursor"].Draw(
mat_unlit, mat_unlit,
Matrix.TR( Matrix.TR(
V.XYZ(0, 0, Mono.SD_Z + 0.5f + 0.2f), V.XYZ(0, 0, Mono.SD_Z - 0.5f + 0.2f),
Quat.FromAngles(90, 0, 0) Quat.FromAngles(90, 0, 0)
) )
); );

View file

@ -13,8 +13,9 @@ static class Mono
public static Pose box_pose = new(0, -3 * U.cm, -10 * U.cm); public static Pose box_pose = new(0, -3 * U.cm, -10 * U.cm);
public static float box_scale = 1.333f * U.cm; public static float box_scale = 1.333f * U.cm;
public const int SD_X = 2, SD_Y = 1, SD_Z = 2; public const int SD_X = 3, SD_Y = 2, SD_Z = 3;
public static SpatialArray<int> public static SpatialArray<int>
box_space = new(SD_X-1, SD_Y-1, SD_Z-1, -1),
s_array = new(SD_X, SD_Y, SD_Z, -1), s_array = new(SD_X, SD_Y, SD_Z, -1),
tail_fill = new(SD_X, SD_Y, SD_Z, -1); tail_fill = new(SD_X, SD_Y, SD_Z, -1);
@ -163,7 +164,7 @@ static class Mono
snake[0] += snake_dir; snake[0] += snake_dir;
} }
in_box.Step(s_array.InRange(snake[0])); in_box.Step(box_space.InRange(snake[0]));
if (in_box.delta != 0) // 1 just in -1 just out if (in_box.delta != 0) // 1 just in -1 just out
{ {
holes.Add(snake[0], snake_dir); holes.Add(snake[0], snake_dir);
@ -222,7 +223,7 @@ static class Mono
XYZi dir = directions[dir_indices[i]]; XYZi dir = directions[dir_indices[i]];
XYZi dir_cell = cell + dir; XYZi dir_cell = cell + dir;
int tail_dist = tail_fill[dir_cell]; int tail_dist = tail_fill[dir_cell];
if (tail_dist > 1 && tail_dist < min_dist) if (tail_dist > 1 && tail_dist < min_dist && box_space.InRange(dir_cell))
{ {
min_dist = tail_dist; min_dist = tail_dist;
min_cell = dir_cell; min_cell = dir_cell;