Use integer for rotation

This commit is contained in:
2024-12-09 01:15:06 +03:00
parent 54a9b6f9ad
commit 49a0fd7e74

View File

@@ -133,79 +133,53 @@ protected:
int check; int check;
int mask; int mask;
String item; String item;
Basis basis; int basis_rot;
Vector3 offset; Vector3 offset;
bool exterior; bool exterior;
}; };
struct pmatch match_data[] = { struct pmatch match_data[] = {
{ 1, 1 | 256, "outside-wall", Basis(), { 1, 1 | 256, "outside-wall", 0,
Vector3(0, 0, -2), true }, Vector3(0, 0, -2), true },
{ 2, 2 | 512, "outside-wall", { 2, 2 | 512, "outside-wall", 2,
Basis().rotated(Vector3(0, 1, 0), Math_PI),
Vector3(0, 0, 2), true }, Vector3(0, 0, 2), true },
{ 4, 4 | 1024, "outside-wall", { 4, 4 | 1024, "outside-wall", 1,
Basis().rotated(Vector3(0, 1, 0),
Math_PI / 2),
Vector3(-2, 0, 0), true }, Vector3(-2, 0, 0), true },
{ 8, 8 | 2048, "outside-wall", { 8, 8 | 2048, "outside-wall", -1,
Basis().rotated(Vector3(0, 1, 0),
-Math_PI / 2),
Vector3(2, 0, 0), true }, Vector3(2, 0, 0), true },
{ 2 | 8, 2 | 8, "outside-wall-corner", { 2 | 8, 2 | 8, "outside-wall-corner", 2,
Basis().rotated(Vector3(0, 1, 0), Math_PI),
Vector3(2, 0, 2), true }, Vector3(2, 0, 2), true },
{ 1 | 4, 1 | 4, "outside-wall-corner", { 1 | 4, 1 | 4, "outside-wall-corner", 0,
Basis().rotated(Vector3(0, 1, 0), 0),
Vector3(-2, 0, -2), true }, Vector3(-2, 0, -2), true },
{ 1 | 8, 1 | 8, "outside-wall-corner", { 1 | 8, 1 | 8, "outside-wall-corner", -1,
Basis().rotated(Vector3(0, 1, 0),
-Math_PI / 2),
Vector3(2, 0, -2), true }, Vector3(2, 0, -2), true },
{ 2 | 4, 2 | 4, "outside-wall-corner", { 2 | 4, 2 | 4, "outside-wall-corner", 1,
Basis().rotated(Vector3(0, 1, 0),
Math_PI / 2),
Vector3(-2, 0, 2), true }, Vector3(-2, 0, 2), true },
{ 16, 16 | 256 | 4096, "internal-wall", Basis(), { 16, 16 | 256 | 4096, "internal-wall", 0,
Vector3(0, 0, -2), false }, Vector3(0, 0, -2), false },
{ 32, 32 | 512 | 8192, "internal-wall", { 32, 32 | 512 | 8192, "internal-wall", 2,
Basis().rotated(Vector3(0, 1, 0), Math_PI),
Vector3(0, 0, 2), false }, Vector3(0, 0, 2), false },
{ 64, 64 | 1024 | 16384, "internal-wall", { 64, 64 | 1024 | 16384, "internal-wall", 1,
Basis().rotated(Vector3(0, 1, 0),
Math_PI / 2),
Vector3(-2, 0, 0), false }, Vector3(-2, 0, 0), false },
{ 128, 128 | 2048 | 32768, "internal-wall", { 128, 128 | 2048 | 32768, "internal-wall", -1,
Basis().rotated(Vector3(0, 1, 0),
-Math_PI / 2),
Vector3(2, 0, 0), false }, Vector3(2, 0, 0), false },
{ 16, 16 | 256, "internal-wall-skirting", { 16, 16 | 256, "internal-wall-skirting", 0,
Basis(), Vector3(0, 0, -2), false }, Vector3(0, 0, -2), false },
{ 32, 32 | 512, "internal-wall-skirting", { 32, 32 | 512, "internal-wall-skirting", 2,
Basis().rotated(Vector3(0, 1, 0), Math_PI),
Vector3(0, 0, 2), false }, Vector3(0, 0, 2), false },
{ 64, 64 | 1024, "internal-wall-skirting", { 64, 64 | 1024, "internal-wall-skirting", 1,
Basis().rotated(Vector3(0, 1, 0),
Math_PI / 2),
Vector3(-2, 0, 0), false }, Vector3(-2, 0, 0), false },
{ 128, 128 | 2048, "internal-wall-skirting", { 128, 128 | 2048, "internal-wall-skirting", -1,
Basis().rotated(Vector3(0, 1, 0),
-Math_PI / 2),
Vector3(2, 0, 0), false }, Vector3(2, 0, 0), false },
{ 16 | 4096, 16 | 256 | 4096, "internal-door", { 16 | 4096, 16 | 256 | 4096, "internal-door",
Basis(), Vector3(0, 0, -2), false }, 0, Vector3(0, 0, -2), false },
{ 32 | 8192, 32 | 512 | 8192, "internal-door", { 32 | 8192, 32 | 512 | 8192, "internal-door",
Basis().rotated(Vector3(0, 1, 0), Math_PI), 2, Vector3(0, 0, 2), false },
Vector3(0, 0, 2), false },
{ 64 | 16384, 64 | 1024 | 16384, { 64 | 16384, 64 | 1024 | 16384,
"internal-door", "internal-door", 1, Vector3(-2, 0, 0),
Basis().rotated(Vector3(0, 1, 0), false },
Math_PI / 2),
Vector3(-2, 0, 0), false },
{ 128 | 32768, 128 | 2048 | 32768, { 128 | 32768, 128 | 2048 | 32768,
"internal-door", "internal-door", -1, Vector3(2, 0, 0),
Basis().rotated(Vector3(0, 1, 0), false },
-Math_PI / 2),
Vector3(2, 0, 0), false },
#if 0 #if 0
{ 1 | 256, 1 | 256, "external-window", { 1 | 256, 1 | 256, "external-window",
Basis().rotated(Vector3(0, 1, 0), Basis().rotated(Vector3(0, 1, 0),
@@ -216,31 +190,21 @@ protected:
-Math_PI / 2), -Math_PI / 2),
Vector3(2, 0, 0), false } Vector3(2, 0, 0), false }
#endif #endif
{ 1 | 256, 1 | 256, "outside-window", Basis(), { 1 | 256, 1 | 256, "outside-window", 0,
Vector3(0, 0, -2), true }, Vector3(0, 0, -2), true },
{ 2 | 512, 2 | 512, "outside-window", { 2 | 512, 2 | 512, "outside-window", 2,
Basis().rotated(Vector3(0, 1, 0), Math_PI),
Vector3(0, 0, 2), true }, Vector3(0, 0, 2), true },
{ 4 | 1024, 4 | 1024, "outside-window", { 4 | 1024, 4 | 1024, "outside-window", 1,
Basis().rotated(Vector3(0, 1, 0),
Math_PI / 2),
Vector3(-2, 0, 0), true }, Vector3(-2, 0, 0), true },
{ 8 | 2048, 8 | 2048, "outside-window", { 8 | 2048, 8 | 2048, "outside-window", -1,
Basis().rotated(Vector3(0, 1, 0),
-Math_PI / 2),
Vector3(2, 0, 0), true }, Vector3(2, 0, 0), true },
{ 16 | 256, 16 | 256, "internal-window", { 16 | 256, 16 | 256, "internal-window", 0,
Basis(), Vector3(0, 0, -2), false }, Vector3(0, 0, -2), false },
{ 32 | 512, 32 | 512, "internal-window", { 32 | 512, 32 | 512, "internal-window", 2,
Basis().rotated(Vector3(0, 1, 0), Math_PI),
Vector3(0, 0, 2), false }, Vector3(0, 0, 2), false },
{ 64 | 1024, 64 | 1024, "internal-window", { 64 | 1024, 64 | 1024, "internal-window", 1,
Basis().rotated(Vector3(0, 1, 0),
Math_PI / 2),
Vector3(-2, 0, 0), false }, Vector3(-2, 0, 0), false },
{ 128 | 2048, 128 | 2048, "internal-window", { 128 | 2048, 128 | 2048, "internal-window", -1,
Basis().rotated(Vector3(0, 1, 0),
-Math_PI / 2),
Vector3(2, 0, 0), false }, Vector3(2, 0, 0), false },
}; };
struct match_window { struct match_window {
@@ -293,8 +257,11 @@ protected:
match_data[i].item); match_data[i].item);
assert(id >= 0); assert(id >= 0);
Transform item_transform; Transform item_transform;
item_transform.basis = item_transform.basis = Basis().rotated(
match_data[i].basis; Vector3(0, 1, 0),
Math_PI *
match_data[i].basis_rot /
2);
item_transform.origin = item_transform.origin =
match_data[i].offset; match_data[i].offset;
if (match_data[i].exterior) if (match_data[i].exterior)