From efb03b9370f262832a27e89c2a235ccfb500afd0 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Thu, 31 Jul 2025 15:53:12 -0500 Subject: [PATCH] lizard: add new map; implement platformer mechanics --- src/demo/lizard/levels.hpp | 1544 +++++++++++++++++++++++++-- src/demo/lizard/main.cpp | 107 +- src/demo/lizard/main.hpp | 8 + src/demo/lizard/maps/igh25_map1.png | Bin 0 -> 15525 bytes src/demo/lizard/world.hpp | 2 +- src/demo/scene.hpp | 1 + src/platform/graphics.cpp | 6 +- src/platform/main.cpp | 4 + tools/parse_map.py | 2 + 9 files changed, 1568 insertions(+), 106 deletions(-) create mode 100644 src/demo/lizard/maps/igh25_map1.png diff --git a/src/demo/lizard/levels.hpp b/src/demo/lizard/levels.hpp index 587eec0..a2fdb0b 100644 --- a/src/demo/lizard/levels.hpp +++ b/src/demo/lizard/levels.hpp @@ -2,127 +2,1527 @@ namespace demo { - world::platform level1_platforms[] = { + world::platform igh25_map1_platforms[] = { { - .position = vec3( 23.500, -28.000, 7.500), - .scale = vec3( 5.000, 1.000, 5.000), - }, - { - .position = vec3( 30.500, -35.000, 7.500), - .scale = vec3( 5.000, 1.000, 5.000), - }, - { - .position = vec3( 37.500, -42.000, 7.500), - .scale = vec3( 5.000, 1.000, 5.000), - }, - { - .position = vec3( 44.500, -51.000, 7.500), - .scale = vec3( 5.000, 1.000, 5.000), - }, - { - .position = vec3( 51.500, -58.000, 7.500), - .scale = vec3( 5.000, 1.000, 5.000), - }, - { - .position = vec3( 59.500, -66.000, 7.500), - .scale = vec3( 5.000, 1.000, 5.000), - }, - { - .position = vec3( 68.500, -77.000, 7.500), - .scale = vec3( 5.000, 1.000, 5.000), - }, - { - .position = vec3( 7.500, 0.000, 7.500), + .position = vec3( 2.500, 0.000, 2.500), .scale = vec3( 3.000, 1.000, 3.000), }, { - .position = vec3( 12.500, 0.000, 7.500), + .position = vec3( 6.500, 0.000, 2.500), .scale = vec3( 3.000, 1.000, 3.000), }, { - .position = vec3( 17.500, 0.000, 7.500), + .position = vec3( 161.500, 23.000, 23.000), + .scale = vec3( 1.000, 1.000, 44.000), + }, + { + .position = vec3( 158.500, 22.000, 23.000), + .scale = vec3( 1.000, 1.000, 42.000), + }, + { + .position = vec3( 165.500, 24.000, 23.000), + .scale = vec3( 1.000, 1.000, 42.000), + }, + { + .position = vec3( 155.500, 21.000, 23.000), + .scale = vec3( 1.000, 1.000, 40.000), + }, + { + .position = vec3( 168.500, 25.000, 23.000), + .scale = vec3( 1.000, 1.000, 40.000), + }, + { + .position = vec3( 152.500, 20.000, 23.000), + .scale = vec3( 1.000, 1.000, 38.000), + }, + { + .position = vec3( 170.500, 26.000, 23.000), + .scale = vec3( 1.000, 1.000, 38.000), + }, + { + .position = vec3( 2.500, 0.000, 6.500), .scale = vec3( 3.000, 1.000, 3.000), }, { - .position = vec3( 77.500, -91.000, 9.500), - .scale = vec3( 5.000, 1.000, 5.000), - }, - { - .position = vec3( 12.500, 0.000, 12.500), + .position = vec3( 10.500, 0.000, 6.500), .scale = vec3( 3.000, 1.000, 3.000), }, { - .position = vec3( 39.500, 3.000, 18.500), - .scale = vec3( 37.000, 1.000, 13.000), + .position = vec3( 149.500, 19.000, 23.000), + .scale = vec3( 1.000, 1.000, 36.000), }, { - .position = vec3( 84.500, -101.000, 15.500), + .position = vec3( 172.500, 27.000, 23.000), + .scale = vec3( 1.000, 1.000, 36.000), + }, + { + .position = vec3( 146.500, 18.000, 23.000), + .scale = vec3( 1.000, 1.000, 34.000), + }, + { + .position = vec3( 175.500, 28.000, 23.000), + .scale = vec3( 1.000, 1.000, 34.000), + }, + { + .position = vec3( 143.500, 17.000, 23.000), + .scale = vec3( 1.000, 1.000, 32.000), + }, + { + .position = vec3( 179.500, 29.000, 23.000), + .scale = vec3( 1.000, 1.000, 32.000), + }, + { + .position = vec3( 140.500, 16.000, 23.000), + .scale = vec3( 1.000, 1.000, 30.000), + }, + { + .position = vec3( 182.500, 30.000, 23.000), + .scale = vec3( 1.000, 1.000, 30.000), + }, + { + .position = vec3( 240.000, 127.000, 9.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 243.000, 127.000, 8.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 6.500, 0.000, 10.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 10.500, 0.000, 10.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 137.500, 15.000, 23.000), + .scale = vec3( 1.000, 1.000, 28.000), + }, + { + .position = vec3( 184.500, 30.000, 23.000), + .scale = vec3( 1.000, 1.000, 28.000), + }, + { + .position = vec3( 248.000, 127.000, 12.500), + .scale = vec3( 2.000, 1.000, 7.000), + }, + { + .position = vec3( 134.500, 14.000, 23.000), + .scale = vec3( 1.000, 1.000, 26.000), + }, + { + .position = vec3( 186.500, 31.000, 23.000), + .scale = vec3( 1.000, 1.000, 26.000), + }, + { + .position = vec3( 131.500, 13.000, 23.000), + .scale = vec3( 1.000, 1.000, 24.000), + }, + { + .position = vec3( 189.500, 32.000, 23.000), + .scale = vec3( 1.000, 1.000, 24.000), + }, + { + .position = vec3( 128.500, 12.000, 23.000), + .scale = vec3( 1.000, 1.000, 22.000), + }, + { + .position = vec3( 193.500, 33.000, 23.000), + .scale = vec3( 1.000, 1.000, 22.000), + }, + { + .position = vec3( 243.500, 127.000, 12.500), + .scale = vec3( 5.000, 1.000, 1.000), + }, + { + .position = vec3( 14.500, 0.000, 14.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 22.500, 0.000, 16.500), + .scale = vec3( 3.000, 1.000, 7.000), + }, + { + .position = vec3( 125.500, 11.000, 23.000), + .scale = vec3( 1.000, 1.000, 20.000), + }, + { + .position = vec3( 196.500, 34.000, 23.000), + .scale = vec3( 1.000, 1.000, 20.000), + }, + { + .position = vec3( 78.500, -8.000, 29.500), + .scale = vec3( 1.000, 1.000, 31.000), + }, + { + .position = vec3( 122.500, 10.000, 23.000), + .scale = vec3( 1.000, 1.000, 18.000), + }, + { + .position = vec3( 198.500, 35.000, 23.000), + .scale = vec3( 1.000, 1.000, 18.000), + }, + { + .position = vec3( 225.500, 127.000, 24.500), + .scale = vec3( 1.000, 1.000, 21.000), + }, + { + .position = vec3( 80.500, -7.000, 23.000), + .scale = vec3( 1.000, 1.000, 16.000), + }, + { + .position = vec3( 119.500, 9.000, 23.000), + .scale = vec3( 1.000, 1.000, 16.000), + }, + { + .position = vec3( 200.500, 36.000, 23.000), + .scale = vec3( 1.000, 1.000, 16.000), + }, + { + .position = vec3( 82.500, -6.000, 23.000), + .scale = vec3( 1.000, 1.000, 14.000), + }, + { + .position = vec3( 116.500, 8.000, 23.000), + .scale = vec3( 1.000, 1.000, 14.000), + }, + { + .position = vec3( 203.500, 37.000, 23.000), + .scale = vec3( 1.000, 1.000, 14.000), + }, + { + .position = vec3( 18.500, 0.000, 18.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 84.500, -5.000, 23.000), + .scale = vec3( 1.000, 1.000, 12.000), + }, + { + .position = vec3( 113.500, 7.000, 23.000), + .scale = vec3( 1.000, 1.000, 12.000), + }, + { + .position = vec3( 207.500, 38.000, 23.000), + .scale = vec3( 1.000, 1.000, 12.000), + }, + { + .position = vec3( 86.500, -4.000, 23.000), + .scale = vec3( 1.000, 1.000, 10.000), + }, + { + .position = vec3( 110.500, 6.000, 23.000), + .scale = vec3( 1.000, 1.000, 10.000), + }, + { + .position = vec3( 210.500, 39.000, 23.000), + .scale = vec3( 1.000, 1.000, 10.000), + }, + { + .position = vec3( 244.000, 127.000, 19.000), + .scale = vec3( 6.000, 1.000, 2.000), + }, + { + .position = vec3( 88.500, -3.000, 23.000), + .scale = vec3( 1.000, 1.000, 8.000), + }, + { + .position = vec3( 107.500, 5.000, 23.000), + .scale = vec3( 1.000, 1.000, 8.000), + }, + { + .position = vec3( 212.500, 40.000, 23.000), + .scale = vec3( 1.000, 1.000, 8.000), + }, + { + .position = vec3( 26.500, -8.000, 20.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 90.500, -2.000, 23.000), + .scale = vec3( 1.000, 1.000, 6.000), + }, + { + .position = vec3( 104.500, 4.000, 23.000), + .scale = vec3( 1.000, 1.000, 6.000), + }, + { + .position = vec3( 214.500, 41.000, 23.000), + .scale = vec3( 1.000, 1.000, 6.000), + }, + { + .position = vec3( 219.000, 41.000, 23.000), + .scale = vec3( 6.000, 1.000, 6.000), + }, + { + .position = vec3( 16.500, 0.000, 22.500), + .scale = vec3( 7.000, 1.000, 3.000), + }, + { + .position = vec3( 92.500, -1.000, 23.000), + .scale = vec3( 1.000, 1.000, 4.000), + }, + { + .position = vec3( 101.500, 3.000, 23.000), + .scale = vec3( 1.000, 1.000, 4.000), + }, + { + .position = vec3( 240.000, 127.000, 22.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 23.000, -1.000, 23.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 28.500, -8.000, 22.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 94.500, 0.000, 23.000), + .scale = vec3( 1.000, 1.000, 2.000), + }, + { + .position = vec3( 96.500, 1.000, 23.000), + .scale = vec3( 1.000, 1.000, 2.000), + }, + { + .position = vec3( 98.500, 2.000, 23.000), + .scale = vec3( 1.000, 1.000, 2.000), + }, + { + .position = vec3( 244.500, 127.000, 24.000), + .scale = vec3( 5.000, 1.000, 2.000), + }, + { + .position = vec3( 30.500, -8.000, 24.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 26.000, -2.000, 26.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 20.500, -8.000, 26.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 32.500, -8.000, 26.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 22.500, -8.000, 28.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 29.000, -3.000, 29.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 34.500, -8.000, 28.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 243.000, 127.000, 29.000), + .scale = vec3( 8.000, 1.000, 2.000), + }, + { + .position = vec3( 24.500, -8.000, 30.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 36.500, -8.000, 30.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 32.000, -4.000, 32.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 231.500, 127.000, 33.000), + .scale = vec3( 1.000, 1.000, 4.000), + }, + { + .position = vec3( 246.000, 127.000, 32.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 26.500, -8.000, 32.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 38.500, -8.000, 32.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 48.500, 10.000, 33.500), + .scale = vec3( 1.000, 1.000, 3.000), + }, + { + .position = vec3( 58.500, 10.000, 32.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 219.000, 32.000, 33.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 28.500, -8.000, 34.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 35.000, -5.000, 35.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 40.500, -8.000, 34.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 56.500, 10.000, 34.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 229.500, 127.000, 35.500), + .scale = vec3( 1.000, 1.000, 3.000), + }, + { + .position = vec3( 243.000, 127.000, 35.000), + .scale = vec3( 8.000, 1.000, 2.000), + }, + { + .position = vec3( 52.500, 10.000, 35.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 223.500, 127.000, 36.500), + .scale = vec3( 1.000, 1.000, 3.000), + }, + { + .position = vec3( 227.500, 127.000, 36.500), + .scale = vec3( 1.000, 1.000, 3.000), + }, + { + .position = vec3( 30.500, -8.000, 36.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 42.500, -8.000, 36.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 38.000, -6.000, 38.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 50.500, 10.000, 37.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 54.000, 10.000, 38.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 225.500, 127.000, 38.000), + .scale = vec3( 1.000, 1.000, 2.000), + }, + { + .position = vec3( 246.000, 127.000, 38.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 32.500, -8.000, 38.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 44.500, -8.000, 39.500), + .scale = vec3( 1.000, 1.000, 3.000), + }, + { + .position = vec3( 50.000, 10.000, 40.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 34.500, -8.000, 40.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 41.000, -7.000, 41.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 58.000, 10.000, 40.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 243.000, 127.000, 41.000), + .scale = vec3( 8.000, 1.000, 2.000), + }, + { + .position = vec3( 47.500, 10.000, 41.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 52.500, 10.000, 41.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 219.000, 22.000, 42.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 36.500, -8.000, 42.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 44.000, -8.000, 44.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 55.000, -8.000, 44.000), + .scale = vec3( 16.000, 1.000, 2.000), + }, + { + .position = vec3( 66.000, -8.000, 44.000), + .scale = vec3( 4.000, 1.000, 2.000), + }, + { + .position = vec3( 70.000, -8.000, 44.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 72.500, -8.000, 44.000), + .scale = vec3( 1.000, 1.000, 2.000), + }, + { + .position = vec3( 75.500, -8.000, 44.000), + .scale = vec3( 1.000, 1.000, 2.000), + }, + { + .position = vec3( 39.500, -8.000, 44.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 244.000, 127.000, 46.000), + .scale = vec3( 10.000, 1.000, 2.000), + }, + { + .position = vec3( 246.500, 127.000, 50.500), .scale = vec3( 5.000, 1.000, 5.000), }, { - .position = vec3( 8.500, 1.000, 18.500), - .scale = vec3( 5.000, 1.000, 5.000), + .position = vec3( 219.000, 12.000, 53.500), + .scale = vec3( 6.000, 1.000, 3.000), }, { - .position = vec3( 91.500, -109.000, 22.500), - .scale = vec3( 5.000, 1.000, 5.000), + .position = vec3( 197.000, -18.000, 62.000), + .scale = vec3( 6.000, 1.000, 2.000), }, { - .position = vec3( 14.500, 2.000, 24.500), - .scale = vec3( 5.000, 1.000, 5.000), + .position = vec3( 202.000, -18.000, 62.000), + .scale = vec3( 2.000, 1.000, 2.000), }, { - .position = vec3( 28.500, 4.000, 45.500), - .scale = vec3( 7.000, 1.000, 37.000), + .position = vec3( 197.000, -18.000, 65.000), + .scale = vec3( 6.000, 1.000, 2.000), }, { - .position = vec3( 41.500, 2.000, 45.500), - .scale = vec3( 7.000, 1.000, 37.000), + .position = vec3( 202.000, -18.000, 65.000), + .scale = vec3( 2.000, 1.000, 2.000), }, { - .position = vec3( 53.500, 0.000, 45.500), - .scale = vec3( 7.000, 1.000, 37.000), + .position = vec3( 219.000, -28.000, 66.500), + .scale = vec3( 6.000, 1.000, 3.000), }, { - .position = vec3( 20.500, 3.000, 30.500), - .scale = vec3( 5.000, 1.000, 5.000), + .position = vec3( 194.500, -18.000, 70.500), + .scale = vec3( 1.000, 1.000, 5.000), }, { - .position = vec3( 98.500, -117.000, 31.500), - .scale = vec3( 5.000, 1.000, 5.000), + .position = vec3( 202.500, -18.000, 70.500), + .scale = vec3( 1.000, 1.000, 5.000), }, { - .position = vec3( 106.500, -117.000, 52.500), - .scale = vec3( 29.000, 1.000, 29.000), + .position = vec3( 198.500, -18.000, 72.500), + .scale = vec3( 5.000, 1.000, 1.000), }, { - .position = vec3( 14.500, -2.000, 73.500), + .position = vec3( 242.000, -18.000, 73.500), + .scale = vec3( 8.000, 1.000, 1.000), + }, + { + .position = vec3( 194.500, -18.000, 77.500), + .scale = vec3( 1.000, 1.000, 5.000), + }, + { + .position = vec3( 202.500, -18.000, 77.500), + .scale = vec3( 1.000, 1.000, 5.000), + }, + { + .position = vec3( 243.500, -18.000, 75.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 241.500, -18.000, 76.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 198.500, -18.000, 77.500), + .scale = vec3( 5.000, 1.000, 1.000), + }, + { + .position = vec3( 242.000, -18.000, 78.500), + .scale = vec3( 8.000, 1.000, 1.000), + }, + { + .position = vec3( 211.500, -18.000, 80.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 227.500, -18.000, 80.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 219.000, -59.000, 84.000), + .scale = vec3( 6.000, 1.000, 6.000), + }, + { + .position = vec3( 195.500, -18.000, 83.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 213.500, -18.000, 82.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 225.500, -18.000, 82.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 239.500, -18.000, 82.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 245.500, -18.000, 82.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 209.500, -18.000, 84.500), + .scale = vec3( 9.000, 1.000, 1.000), + }, + { + .position = vec3( 231.000, -18.000, 84.500), + .scale = vec3( 12.000, 1.000, 1.000), + }, + { + .position = vec3( 242.500, -18.000, 84.500), + .scale = vec3( 7.000, 1.000, 1.000), + }, + { + .position = vec3( 198.500, -18.000, 86.500), + .scale = vec3( 9.000, 1.000, 1.000), + }, + { + .position = vec3( 213.500, -18.000, 86.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 225.500, -18.000, 86.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 239.500, -18.000, 86.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 245.500, -18.000, 86.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 211.500, -18.000, 88.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 227.500, -18.000, 88.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 194.500, -18.000, 90.500), + .scale = vec3( 1.000, 1.000, 3.000), + }, + { + .position = vec3( 202.500, -18.000, 90.500), + .scale = vec3( 1.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -58.000, 90.500), + .scale = vec3( 4.000, 1.000, 3.000), + }, + { + .position = vec3( 198.500, -18.000, 91.000), + .scale = vec3( 1.000, 1.000, 2.000), + }, + { + .position = vec3( 242.000, -18.000, 90.500), + .scale = vec3( 8.000, 1.000, 1.000), + }, + { + .position = vec3( 238.500, -18.000, 93.500), + .scale = vec3( 1.000, 1.000, 3.000), + }, + { + .position = vec3( 245.500, -18.000, 93.500), + .scale = vec3( 1.000, 1.000, 3.000), + }, + { + .position = vec3( 198.500, -18.000, 93.500), + .scale = vec3( 9.000, 1.000, 1.000), + }, + { + .position = vec3( 219.000, -57.000, 95.500), + .scale = vec3( 4.000, 1.000, 3.000), + }, + { + .position = vec3( 242.000, -18.000, 97.500), + .scale = vec3( 8.000, 1.000, 1.000), + }, + { + .position = vec3( 219.000, -56.000, 100.500), + .scale = vec3( 4.000, 1.000, 3.000), + }, + { + .position = vec3( 238.500, -18.000, 100.500), + .scale = vec3( 1.000, 1.000, 3.000), + }, + { + .position = vec3( 242.500, -18.000, 100.000), + .scale = vec3( 1.000, 1.000, 2.000), + }, + { + .position = vec3( 245.500, -18.000, 100.500), + .scale = vec3( 1.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -55.000, 105.500), + .scale = vec3( 4.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -54.000, 110.500), + .scale = vec3( 4.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -53.000, 115.500), + .scale = vec3( 4.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -52.000, 119.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -50.000, 123.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -48.000, 127.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -46.000, 131.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -44.000, 135.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -42.000, 139.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -40.000, 143.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 217.000, -38.000, 147.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 221.000, -38.000, 147.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -36.000, 151.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -34.000, 155.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -32.000, 159.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 217.000, -30.000, 163.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 221.000, -30.000, 163.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -28.000, 167.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 219.000, -26.000, 171.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 37.000, -18.000, 172.500), + .scale = vec3( 6.000, 1.000, 1.000), + }, + { + .position = vec3( 70.000, -18.000, 175.000), + .scale = vec3( 2.000, 1.000, 4.000), + }, + { + .position = vec3( 81.500, -18.000, 175.000), + .scale = vec3( 3.000, 1.000, 4.000), + }, + { + .position = vec3( 96.500, -18.000, 175.000), + .scale = vec3( 19.000, 1.000, 4.000), + }, + { + .position = vec3( 121.000, -18.000, 175.000), + .scale = vec3( 18.000, 1.000, 4.000), + }, + { + .position = vec3( 33.500, -18.000, 174.500), + .scale = vec3( 5.000, 1.000, 1.000), + }, + { + .position = vec3( 40.500, -18.000, 174.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 55.500, -18.000, 175.000), + .scale = vec3( 15.000, 1.000, 2.000), + }, + { + .position = vec3( 217.000, -24.000, 175.000), + .scale = vec3( 6.000, 1.000, 2.000), + }, + { + .position = vec3( 31.000, -18.000, 176.500), + .scale = vec3( 4.000, 1.000, 1.000), + }, + { + .position = vec3( 42.000, -18.000, 176.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 213.000, -22.000, 178.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 217.000, -22.000, 178.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 29.000, -18.000, 179.500), + .scale = vec3( 4.000, 1.000, 1.000), + }, + { + .position = vec3( 42.000, -18.000, 179.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 58.500, -18.000, 179.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 70.000, -18.000, 179.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 81.500, -18.000, 179.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 88.500, -18.000, 179.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 104.500, -18.000, 179.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 120.500, -18.000, 179.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 28.500, -18.000, 181.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 57.000, -18.000, 181.500), + .scale = vec3( 4.000, 1.000, 1.000), + }, + { + .position = vec3( 70.000, -18.000, 181.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 81.500, -18.000, 181.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 88.500, -18.000, 181.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 104.500, -18.000, 181.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 120.500, -18.000, 181.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 213.000, -20.000, 182.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 28.000, -18.000, 183.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 55.500, -18.000, 183.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 70.000, -18.000, 184.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 81.500, -18.000, 184.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 92.500, -18.000, 184.500), .scale = vec3( 11.000, 1.000, 3.000), }, { - .position = vec3( 27.500, -2.000, 73.500), - .scale = vec3( 11.000, 1.000, 3.000), + .position = vec3( 104.500, -18.000, 184.500), + .scale = vec3( 3.000, 1.000, 3.000), }, { - .position = vec3( 40.500, -2.000, 73.500), - .scale = vec3( 11.000, 1.000, 3.000), + .position = vec3( 120.500, -18.000, 184.500), + .scale = vec3( 3.000, 1.000, 3.000), }, { - .position = vec3( 53.500, -2.000, 73.500), - .scale = vec3( 11.000, 1.000, 3.000), + .position = vec3( 29.000, -18.000, 185.500), + .scale = vec3( 2.000, 1.000, 1.000), }, { - .position = vec3( 66.500, -2.000, 73.500), - .scale = vec3( 11.000, 1.000, 3.000), + .position = vec3( 54.000, -18.000, 185.500), + .scale = vec3( 4.000, 1.000, 1.000), }, { - .position = vec3( 27.500, -5.000, 91.500), - .scale = vec3( 41.000, 1.000, 21.000), + .position = vec3( 75.500, -18.000, 185.500), + .scale = vec3( 7.000, 1.000, 1.000), + }, + { + .position = vec3( 211.000, -18.000, 186.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 30.000, -18.000, 187.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 52.500, -18.000, 187.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 70.000, -18.000, 187.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 75.500, -18.000, 187.500), + .scale = vec3( 7.000, 1.000, 1.000), + }, + { + .position = vec3( 81.500, -18.000, 187.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 104.500, -18.000, 187.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 120.500, -18.000, 187.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 31.500, -18.000, 189.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 50.500, -18.000, 189.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 70.000, -18.000, 189.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 81.500, -18.000, 189.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 104.500, -18.000, 189.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 120.500, -18.000, 189.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 209.000, -16.000, 190.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 36.500, -18.000, 191.500), + .scale = vec3( 7.000, 1.000, 1.000), + }, + { + .position = vec3( 50.000, -18.000, 191.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 70.000, -18.000, 191.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 81.500, -18.000, 191.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 104.500, -18.000, 191.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 120.500, -18.000, 191.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 38.500, -18.000, 193.500), + .scale = vec3( 5.000, 1.000, 1.000), + }, + { + .position = vec3( 49.500, -18.000, 193.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 62.000, -18.000, 193.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 70.000, -18.000, 193.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 81.500, -18.000, 193.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 104.500, -18.000, 193.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 120.500, -18.000, 193.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 205.000, -14.000, 194.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 209.000, -14.000, 194.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 40.000, -18.000, 195.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 49.500, -18.000, 195.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 61.500, -18.000, 195.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 70.000, -18.000, 195.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 81.500, -18.000, 195.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 91.000, -18.000, 195.500), + .scale = vec3( 4.000, 1.000, 1.000), + }, + { + .position = vec3( 104.500, -18.000, 195.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 120.500, -18.000, 195.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 40.000, -18.000, 198.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 49.500, -18.000, 198.000), + .scale = vec3( 3.000, 1.000, 2.000), + }, + { + .position = vec3( 70.000, -18.000, 199.000), + .scale = vec3( 2.000, 1.000, 4.000), + }, + { + .position = vec3( 81.500, -18.000, 198.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 97.500, -18.000, 198.500), + .scale = vec3( 17.000, 1.000, 3.000), + }, + { + .position = vec3( 120.000, -18.000, 198.500), + .scale = vec3( 20.000, 1.000, 3.000), + }, + { + .position = vec3( 204.500, -12.000, 198.500), + .scale = vec3( 7.000, 1.000, 3.000), + }, + { + .position = vec3( 25.500, -18.000, 198.500), + .scale = vec3( 3.000, 1.000, 1.000), + }, + { + .position = vec3( 58.500, -18.000, 198.500), + .scale = vec3( 5.000, 1.000, 1.000), + }, + { + .position = vec3( 32.500, -18.000, 201.000), + .scale = vec3( 17.000, 1.000, 2.000), + }, + { + .position = vec3( 54.000, -18.000, 200.500), + .scale = vec3( 8.000, 1.000, 1.000), + }, + { + .position = vec3( 202.000, -10.000, 202.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 120.000, 62.000, 206.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 129.000, 54.000, 212.000), + .scale = vec3( 2.000, 1.000, 14.000), + }, + { + .position = vec3( 199.500, -8.000, 206.500), + .scale = vec3( 7.000, 1.000, 3.000), + }, + { + .position = vec3( 123.000, 62.000, 208.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 120.000, 64.000, 213.500), + .scale = vec3( 2.000, 1.000, 11.000), + }, + { + .position = vec3( 195.000, -6.000, 210.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 199.000, -6.000, 210.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 95.000, 76.000, 211.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 102.000, 72.000, 211.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 124.000, 60.000, 211.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 81.000, 78.000, 212.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 84.000, 80.000, 212.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 87.000, 82.000, 212.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 110.000, 68.000, 213.500), + .scale = vec3( 2.000, 1.000, 5.000), + }, + { + .position = vec3( 114.000, 66.000, 212.000), + .scale = vec3( 4.000, 1.000, 2.000), + }, + { + .position = vec3( 98.000, 74.000, 215.500), + .scale = vec3( 2.000, 1.000, 7.000), + }, + { + .position = vec3( 105.000, 70.000, 215.500), + .scale = vec3( 2.000, 1.000, 7.000), + }, + { + .position = vec3( 92.000, 76.000, 216.000), + .scale = vec3( 2.000, 1.000, 6.000), + }, + { + .position = vec3( 125.000, 58.000, 214.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 194.500, -4.000, 214.500), + .scale = vec3( 7.000, 1.000, 3.000), + }, + { + .position = vec3( 81.000, 78.000, 219.000), + .scale = vec3( 2.000, 1.000, 10.000), + }, + { + .position = vec3( 84.000, 80.000, 219.000), + .scale = vec3( 2.000, 1.000, 10.000), + }, + { + .position = vec3( 87.000, 84.000, 219.000), + .scale = vec3( 2.000, 1.000, 10.000), + }, + { + .position = vec3( 112.500, -18.000, 215.000), + .scale = vec3( 1.000, 1.000, 2.000), + }, + { + .position = vec3( 115.000, 64.000, 216.500), + .scale = vec3( 2.000, 1.000, 5.000), + }, + { + .position = vec3( 126.000, 56.000, 217.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 111.000, 68.000, 218.000), + .scale = vec3( 4.000, 1.000, 2.000), + }, + { + .position = vec3( 191.500, -2.000, 218.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 195.000, -2.000, 218.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 185.500, 2.000, 222.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 191.000, 0.000, 222.500), + .scale = vec3( 6.000, 1.000, 3.000), + }, + { + .position = vec3( 183.500, 4.000, 226.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 189.500, 2.000, 226.500), + .scale = vec3( 5.000, 1.000, 3.000), + }, + { + .position = vec3( 87.000, 84.000, 227.000), + .scale = vec3( 6.000, 1.000, 2.000), + }, + { + .position = vec3( 102.500, 66.000, 227.000), + .scale = vec3( 11.000, 1.000, 2.000), + }, + { + .position = vec3( 111.000, 64.000, 228.000), + .scale = vec3( 2.000, 1.000, 4.000), + }, + { + .position = vec3( 122.000, 46.000, 236.500), + .scale = vec3( 2.000, 1.000, 21.000), + }, + { + .position = vec3( 125.000, 46.000, 226.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 129.000, 44.000, 229.000), + .scale = vec3( 2.000, 1.000, 6.000), + }, + { + .position = vec3( 138.000, 30.000, 229.000), + .scale = vec3( 2.000, 1.000, 6.000), + }, + { + .position = vec3( 147.500, 30.000, 227.000), + .scale = vec3( 13.000, 1.000, 2.000), + }, + { + .position = vec3( 158.000, 17.000, 230.500), + .scale = vec3( 2.000, 1.000, 9.000), + }, + { + .position = vec3( 165.000, 16.000, 227.000), + .scale = vec3( 6.000, 1.000, 2.000), + }, + { + .position = vec3( 170.000, 14.000, 235.000), + .scale = vec3( 2.000, 1.000, 18.000), + }, + { + .position = vec3( 82.000, 82.000, 228.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 95.000, 68.000, 229.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 79.000, 82.000, 230.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 86.500, 84.000, 229.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 89.000, 84.000, 230.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 105.000, 68.000, 236.500), + .scale = vec3( 2.000, 1.000, 15.000), + }, + { + .position = vec3( 153.000, 30.000, 229.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 163.000, 16.000, 229.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 182.500, 6.000, 230.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 143.000, 28.000, 231.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 93.000, 70.000, 232.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 113.000, 62.000, 232.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 79.000, 80.000, 233.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 128.500, 44.000, 233.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 130.500, 32.000, 233.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 132.500, 32.000, 233.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 134.500, 32.000, 233.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 136.500, 32.000, 233.500), + .scale = vec3( 1.000, 1.000, 1.000), + }, + { + .position = vec3( 145.000, 28.000, 234.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 180.500, 8.000, 234.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 116.000, 60.000, 235.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 129.000, 42.000, 237.500), + .scale = vec3( 2.000, 1.000, 5.000), + }, + { + .position = vec3( 137.000, 34.000, 237.500), + .scale = vec3( 2.000, 1.000, 5.000), + }, + { + .position = vec3( 83.000, 78.000, 237.000), + .scale = vec3( 8.000, 1.000, 2.000), + }, + { + .position = vec3( 93.000, 72.000, 237.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 148.000, 26.000, 237.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 158.000, 19.000, 239.000), + .scale = vec3( 2.000, 1.000, 6.000), + }, + { + .position = vec3( 115.000, 56.000, 238.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 118.000, 58.000, 238.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 178.500, 10.000, 238.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 89.000, 76.000, 239.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 112.000, 54.000, 239.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 151.000, 24.000, 240.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 93.000, 74.000, 241.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 89.000, 76.000, 242.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 112.000, 52.000, 242.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 131.000, 40.000, 242.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 135.000, 36.000, 242.500), + .scale = vec3( 2.000, 1.000, 3.000), + }, + { + .position = vec3( 154.000, 22.000, 242.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 174.500, 12.000, 242.500), + .scale = vec3( 3.000, 1.000, 3.000), + }, + { + .position = vec3( 142.000, 22.000, 242.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 158.500, 20.000, 245.000), + .scale = vec3( 5.000, 1.000, 4.000), + }, + { + .position = vec3( 79.000, 76.000, 245.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 88.000, 76.000, 245.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 113.000, 50.000, 245.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 148.000, 22.000, 245.000), + .scale = vec3( 14.000, 1.000, 2.000), + }, + { + .position = vec3( 102.000, 70.000, 246.000), + .scale = vec3( 12.000, 1.000, 2.000), + }, + { + .position = vec3( 117.500, 48.000, 246.000), + .scale = vec3( 5.000, 1.000, 2.000), + }, + { + .position = vec3( 133.000, 38.000, 246.000), + .scale = vec3( 2.000, 1.000, 2.000), + }, + { + .position = vec3( 171.000, 14.000, 245.500), + .scale = vec3( 4.000, 1.000, 1.000), + }, + { + .position = vec3( 125.000, 46.000, 246.500), + .scale = vec3( 2.000, 1.000, 1.000), + }, + { + .position = vec3( 83.500, 76.000, 248.000), + .scale = vec3( 7.000, 1.000, 2.000), }, }; - world::level level1_level = { - .platforms = level1_platforms, - .platforms_length = (sizeof (level1_platforms)) / (sizeof (world::platform)), + world::level igh25_map1_level = { + .platforms = igh25_map1_platforms, + .platforms_length = (sizeof (igh25_map1_platforms)) / (sizeof (world::platform)), }; } diff --git a/src/demo/lizard/main.cpp b/src/demo/lizard/main.cpp index 6eae0ed..3fd2a5f 100644 --- a/src/demo/lizard/main.cpp +++ b/src/demo/lizard/main.cpp @@ -47,14 +47,15 @@ namespace demo { mat4x4 lizard::init() { - vx = 0; - vy = 0; + vx = -pi / 4; + vy = -pi / 4; - current_level = &demo::level1_level; + current_level = &demo::igh25_map1_level; world::table_build(*current_level); - lizard_position = {7.5, 1, 7.5}; + lizard_position = {2.5, 1, 2.5}; + //lizard_position = {218.5, 0, 65.5}; lizard_velocity = {0, 0, 0}; return view_trans; @@ -70,40 +71,41 @@ namespace demo { void lizard::update() { - /* - if (!collided) - lizard_velocity.y -= 0.01; - */ lizard_rotation *= 0.8; lizard_turning_frame += lizard_rotation * 10; lizard_heading += lizard_rotation; - if (abs(lizard_velocity.x) > 0.05) - lizard_velocity.x = 0.05 * sign(lizard_velocity.x); - if (abs(lizard_velocity.y) > 0.05) - lizard_velocity.y = 0.05 * sign(lizard_velocity.y); - if (abs(lizard_velocity.z) > 0.05) - lizard_velocity.z = 0.05 * sign(lizard_velocity.z); + if (abs(lizard_velocity.x) > 0.10) + lizard_velocity.x = 0.10 * sign(lizard_velocity.x); + if (abs(lizard_velocity.y) > 0.20) + lizard_velocity.y = 0.20 * sign(lizard_velocity.y); + if (abs(lizard_velocity.z) > 0.10) + lizard_velocity.z = 0.10 * sign(lizard_velocity.z); lizard_velocity.x *= 0.8; - lizard_velocity.y *= 0.8; + lizard_velocity.y *= 0.99; lizard_velocity.z *= 0.8; lizard_walking_frame += magnitude(lizard_velocity) * 15; + world::platform * p = lizard_collide(); + collided = (p != nullptr); + if (!collided) { + lizard_velocity.y -= 0.01; + } else { + last_platform = p; + //lizard_position.y -= -lizard_velocity.y; + float pp = p->position.y + p->scale.y * 0.5; + //lizard_velocity.y *= 0.1; + lizard_position.y = pp + 0.5; + } + lizard_position.x += lizard_velocity.x; lizard_position.y += lizard_velocity.y; lizard_position.z += lizard_velocity.z; - world::platform * p = lizard_collide(); - collided = p != nullptr; - - if (collided) { - lizard_position.y -= -lizard_velocity.y; - } - view_trans = translate(vec3(0, 0, 3)) * rotate_x(vy) @@ -113,35 +115,72 @@ namespace demo { void lizard::y() { - lizard_velocity.y += 0.01; + //lizard_velocity.y += 0.01; } void lizard::a() { - lizard_velocity.y -= 0.01; + //lizard_velocity.y -= 0.01; + if (collided) { + lizard_velocity.y = 30; + } + } + + void lizard::start() + { + if (last_platform == nullptr) + init(); + else { + lizard_velocity = {0, 0, 0}; + lizard_position = last_platform->position; + lizard_position.y += 0.5; + } + } + + void lizard::ra() + { + vx += 0.01f; + } + + void lizard::la() + { + vx -= 0.01f; + } + + void lizard::ua() + { + vy += 0.01f; + } + + void lizard::da() + { + vy -= 0.01f; } void lizard::x() { - lizard_rotation += pi * (1.0f / 160); + //lizard_rotation += pi * (1.0f / 160); } void lizard::b() { - lizard_rotation -= pi * (1.0f / 160); + //lizard_rotation -= pi * (1.0f / 160); } void lizard::analog(float dl, float dr, float dx, float dy) { //float forward = (dr - dl) * -0.001f; //alpha_mul += forward; - float forward = (dr - dl) * -0.04f; + float forward = (dr - dl) * -0.1f; + //vx += forward * 0.5f; lizard_velocity.x += -cos(lizard_heading) * forward; lizard_velocity.z += sin(lizard_heading) * forward; - vy += dy * 0.03f; - vx += dx * 0.03f; + lizard_rotation += -dx * 0.03f; + + //vy += dy * 0.03f; + //vx += dx * 0.03f; } world::platform * lizard::lizard_collide() @@ -181,7 +220,12 @@ namespace demo { font::ter_u12n.draw_string(writer, status_p, "air", 0xffffffff); */ - font::ter_u12n.draw_float(writer, status_p, (float)last_drawn_frame, 0xffffffff, 10); + font::ter_u12n.draw_float(writer, status_p, (float)lizard_position.x, 0xffffffff, 10); + status_p.y += 12; + font::ter_u12n.draw_float(writer, status_p, (float)lizard_position.y, 0xffffffff, 10); + status_p.y += 12; + font::ter_u12n.draw_float(writer, status_p, (float)lizard_position.z, 0xffffffff, 10); + //font::ter_u12n.draw_float(writer, status_p, (float)last_drawn_frame, 0xffffffff, 10); } void lizard::draw_platform(ta_parameter_writer& writer, const mat4x4& trans, const world::platform& p) @@ -209,7 +253,7 @@ namespace demo { t, vec3(1, 0.5, 0)); */ - if (abs(lizard_rotation) > 0) { + if (abs(lizard_rotation) > 0.1) { int frame = ((int)lizard_turning_frame) % lizard_turning_frames_count; if (frame < 0) frame = lizard_turning_frames_count + frame; @@ -236,7 +280,6 @@ namespace demo { const mat4x4& trans = view_trans; draw_hud(writer); - draw_lizard(writer, trans); writer.append() = diff --git a/src/demo/lizard/main.hpp b/src/demo/lizard/main.hpp index 41e2595..7f4332f 100644 --- a/src/demo/lizard/main.hpp +++ b/src/demo/lizard/main.hpp @@ -7,6 +7,7 @@ namespace demo { struct lizard : scene { world::level * current_level; + world::platform * last_platform; vec3 lizard_position; vec3 lizard_velocity; float lizard_heading; @@ -30,6 +31,13 @@ namespace demo { void b() override; void a() override; + void ra() override; + void la() override; + void ua() override; + void da() override; + + void start() override; + void analog(float dl, float dr, float dx, float dy) override; world::platform * lizard_collide(); diff --git a/src/demo/lizard/maps/igh25_map1.png b/src/demo/lizard/maps/igh25_map1.png new file mode 100644 index 0000000000000000000000000000000000000000..bc55a8fb54b3047ad3daa2de38579e05e405a898 GIT binary patch literal 15525 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 wKb@R%04P3kHG!pq-a(); + bool start = ft0::data_transfer::digital_button::start(data.digital_button) == 0; + + if (last[port_ix].a != a && a) current_scene->a(); if (b) current_scene->b(); if (x) current_scene->x(); if (y) current_scene->y(); @@ -203,6 +205,8 @@ namespace graphics { if (da) current_scene->da(); if (ua) current_scene->ua(); + if (start) current_scene->start(); + last[port_ix].a = a; last[port_ix].b = b; last[port_ix].x = x; diff --git a/src/platform/main.cpp b/src/platform/main.cpp index f574384..1c5ab79 100644 --- a/src/platform/main.cpp +++ b/src/platform/main.cpp @@ -9,6 +9,10 @@ void vbr100() { + if (sh7091.CCN.EXPEVT == 0xe0) { + serial::string("vbr100 expevt == 0xe0\n"); + return; + } serial::string("vbr100\n"); interrupt_exception(); } diff --git a/tools/parse_map.py b/tools/parse_map.py index 2408791..e2d8ff6 100644 --- a/tools/parse_map.py +++ b/tools/parse_map.py @@ -51,6 +51,8 @@ def visit_pixels(x, y, width, height): xx = x + xi yy = y + yi location = (xx, yy) + if location in visited: + print(location) assert location not in visited visited.add(location)