smooth snake

This commit is contained in:
ethan merchant 2024-11-08 22:01:21 -05:00
parent 59c0d5ee4d
commit a59110067e

View file

@ -76,6 +76,7 @@ static class Arts
}
// snake
float snake_t = Maths.smooth_stop((float)Mono.step_t);
bool food_next = (Mono.snake[0] + Mono.snake_dir) == Mono.food;
if (!food_next)
{
@ -93,13 +94,13 @@ static class Arts
meshes[face].Draw(
mat_mono,
Matrix.TRS(
Mono.snake[0].ToVec3 + fall,
Mono.snake[0].ToVec3 - (Mono.snake_dir.ToVec3 * (float)(1.0 - snake_t) * 0.3f),
Quat.LookDir(Mono.snake_dir.ToVec3),
V.XYZ(1, 1, 1)// * (float)(Mono.step_t))
V.XYZ(1, 1, (float)(snake_t))
)
);
for (int i = 1; i < Mono.snake_len; i++)
for (int i = 1; i < Mono.snake_len - 1; i++)
{
float scale = 1.0f;
if ((int)((Time.Total - Mono.eat_timestamp) * Mono.snake_len / Mono.step_step) == i)
@ -109,12 +110,24 @@ static class Arts
meshes["Segment"].Draw(
mat_mono,
Matrix.TRS(
Mono.snake[i].ToVec3 + fall,
Mono.snake[i].ToVec3,
Quat.LookAt(Mono.snake[i].ToVec3, Mono.snake[i - 1].ToVec3),
scale
)
);
}
// tail
if (Mono.grow_buffer > 0) { snake_t = 0.0f; }
int i_tail = Mono.snake_len - 1;
Vec3 tail_dir = Vec3.Direction(Mono.snake[i_tail - 1].ToVec3, Mono.snake[i_tail].ToVec3);
meshes["Segment"].Draw(
mat_mono,
Matrix.TRS(
Mono.snake[i_tail].ToVec3 + (tail_dir * (float)(snake_t) * 0.7f),
Quat.LookDir(tail_dir),
V.XYZ(1, 1, (float)(1.0 - snake_t))
)
);
// holes
foreach (KeyValuePair<XYZi, XYZi> hole in Mono.holes)