From e91467a8698c4e6a58ff146b0bd2b3e8bf8e1438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20=C4=8C=C3=AD=C5=BE?= Date: Wed, 19 Jun 2019 18:48:08 +0200 Subject: [PATCH] Continue city --- programs/carModel.h | 24 ++-- programs/city.c | 49 +++++++ programs/cityModel.h | 314 +++++++++++++++++++++---------------------- 3 files changed, 218 insertions(+), 169 deletions(-) diff --git a/programs/carModel.h b/programs/carModel.h index f77b6be..e15e0e6 100644 --- a/programs/carModel.h +++ b/programs/carModel.h @@ -3,18 +3,18 @@ #define CAR_VERTEX_COUNT 12 const S3L_Unit carVertices[CAR_VERTEX_COUNT * 3] = { - -103, 13, -216, // 0 - -63, 191, -184, // 3 - -63, 191, -7, // 6 - 103, 13, -216, // 9 - 63, 191, -184, // 12 - 63, 191, -7, // 15 - -96, 102, 63, // 18 - 96, 102, 63, // 21 - -103, 89, 172, // 24 - -88, 13, 172, // 27 - 88, 13, 172, // 30 - 103, 89, 172 // 33 + -51, 14, -108, // 0 + -31, 103, -92, // 3 + -31, 103, -3, // 6 + 51, 14, -108, // 9 + 31, 103, -92, // 12 + 31, 103, -3, // 15 + -48, 59, 31, // 18 + 48, 59, 31, // 21 + -51, 52, 86, // 24 + -44, 14, 86, // 27 + 44, 14, 86, // 30 + 51, 52, 86 // 33 }; // carVertices #define CAR_TRIANGLE_COUNT 18 diff --git a/programs/city.c b/programs/city.c index 9cacaab..3656d18 100644 --- a/programs/city.c +++ b/programs/city.c @@ -32,6 +32,20 @@ S3L_Model3D models[2]; +const uint8_t collisionMap[8 * 10] = +{ + 1,1,1,1,1,1,1,1, + 1,1,1,1,0,0,0,1, + 1,1,1,1,0,1,0,1, + 2,2,1,0,0,0,0,3, + 1,2,1,0,1,1,3,1, + 2,0,0,0,1,1,3,3, + 1,0,1,0,0,1,1,1, + 1,0,0,0,1,1,1,1, + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1 +}; + S3L_Scene scene; uint32_t pixels[S3L_RESOLUTION_X * S3L_RESOLUTION_Y]; @@ -142,6 +156,16 @@ void draw() S3L_drawScene(scene); } +static inline uint32_t collision(S3L_Vec4 worldPosition) +{ + worldPosition.x /= S3L_FRACTIONS_PER_UNIT; + worldPosition.z /= -S3L_FRACTIONS_PER_UNIT; + + uint16_t index = worldPosition.z * 8 + worldPosition.x; + + return collisionMap[index]; +} + int16_t fps = 0; int main() @@ -155,6 +179,9 @@ int main() cityModelInit(); carModelInit(); + carModel.transform.translation.x += 7 * (S3L_FRACTIONS_PER_UNIT / 2); + carModel.transform.translation.z += -7 * (S3L_FRACTIONS_PER_UNIT / 2); + models[0] = cityModel; models[1] = carModel; @@ -212,6 +239,8 @@ int main() S3L_rotationToDirections(models[1].transform.rotation,S3L_FRACTIONS_PER_UNIT,&carDirection,0,0); + S3L_Vec4 previousPos = models[1].transform.translation; + if (state[SDL_SCANCODE_UP]) { models[1].transform.translation.x += (carDirection.x * step) / S3L_FRACTIONS_PER_UNIT; @@ -223,6 +252,26 @@ int main() models[1].transform.translation.z -= (carDirection.z * step) / S3L_FRACTIONS_PER_UNIT; } + uint8_t coll = collision(models[1].transform.translation); + + if (coll != 0) + { + if (coll == 1) + { + models[1].transform.translation = previousPos; + } + else if (coll == 2) + { + models[1].transform.translation.x += 5 * S3L_FRACTIONS_PER_UNIT; + models[1].transform.translation.z += 2 * S3L_FRACTIONS_PER_UNIT; + } + else + { + models[1].transform.translation.x -= 5 * S3L_FRACTIONS_PER_UNIT; + models[1].transform.translation.z -= 2 * S3L_FRACTIONS_PER_UNIT; + } + } + scene.camera.transform.translation.x = scene.models[1].transform.translation.x - carDirection.x; scene.camera.transform.translation.y = S3L_FRACTIONS_PER_UNIT / 2; scene.camera.transform.translation.z = scene.models[1].transform.translation.z - carDirection.z; diff --git a/programs/cityModel.h b/programs/cityModel.h index 44d2870..116ca99 100644 --- a/programs/cityModel.h +++ b/programs/cityModel.h @@ -3,163 +3,163 @@ #define CITY_VERTEX_COUNT 157 const S3L_Unit cityVertices[CITY_VERTEX_COUNT * 3] = { - -3584, 5, 512, // 0 - -4608, 5, 1536, // 3 - -5632, 5, -512, // 6 - -5632, 5, -1536, // 9 - -5632, 5, -2560, // 12 - -4608, 5, -1536, // 15 - -4608, 5, -512, // 18 - -2560, 5, 1536, // 21 - -2560, 5, 512, // 24 - -1536, 5, 1536, // 27 - -2560, 5, -512, // 30 - -3584, 5, -512, // 33 - -2560, 1779, 512, // 36 - -2560, 1779, -512, // 39 - -3584, 1779, -512, // 42 - -4061, 1581, -1536, // 45 - -2560, 1581, -1536, // 48 - -5632, 777, -1536, // 51 - -5632, 777, -2560, // 54 - -2560, 777, 1536, // 57 - -1536, 777, 1536, // 60 - -4608, 1396, 1536, // 63 - -5632, 1396, -512, // 66 - -5632, 777, -512, // 69 - -4608, 1396, -512, // 72 - -2560, 1396, 1536, // 75 - -2560, 815, 2731, // 78 - -2560, 1396, 2731, // 81 - -4608, 296, -1536, // 84 - -4061, 296, -1536, // 87 - -4608, 296, -2086, // 90 - -6329, 595, 573, // 93 - -5874, 595, 1132, // 96 - -6329, 2807, 573, // 99 - -5874, 2807, 1132, // 102 - 1536, 5, 2560, // 105 - 512, 5, 3584, // 108 - -1536, 5, -1536, // 111 - -1536, 5, -2560, // 114 - -2560, 5, -3584, // 117 - -1536, 5, -3584, // 120 - 512, 5, -2560, // 123 - 512, 5, -3584, // 126 - -512, 5, -2560, // 129 - -512, 5, -1536, // 132 - -1536, 5, -512, // 135 - -2560, 5, -1536, // 138 - -512, 5, 1536, // 141 - -512, 5, 512, // 144 - -512, 5, -512, // 147 - 512, 5, 512, // 150 - 512, 5, 1536, // 153 - 2560, 5, 3584, // 156 - 2560, 5, 2560, // 159 - 3584, 5, 3584, // 162 - 2560, 5, 512, // 165 - 1536, 5, 1536, // 168 - 1536, 5, -1536, // 171 - 1536, 5, -2560, // 174 - 512, 5, -1536, // 177 - -1536, 311, -1536, // 180 - -1536, 311, -2560, // 183 - -512, 311, -2560, // 186 - -512, 311, -1536, // 189 - 1536, 1779, 2560, // 192 - 2560, 1779, 2560, // 195 - 2560, 1779, 1536, // 198 - 1536, 1779, 1536, // 201 - -1536, 632, -3584, // 204 - 512, 632, -3584, // 207 - -2560, 1584, -3584, // 210 - -1536, 597, -4813, // 213 - -2560, 1584, -1536, // 216 - 1058, 1581, 512, // 219 - 2560, 1581, 512, // 222 - 512, 1581, -1536, // 225 - -2560, 1584, -4813, // 228 - -1024, 594, -2048, // 231 - 1536, 1581, -1536, // 234 - 1536, 519, -1536, // 237 - 1536, 519, -2560, // 240 - -1536, 777, -512, // 243 - -512, 777, 512, // 246 - -512, 777, -512, // 249 - 2560, 777, 3584, // 252 - 3584, 777, 3584, // 255 - 512, 1396, 3584, // 258 - -512, 1396, 1536, // 261 - -512, 777, 1536, // 264 - 512, 1396, 1536, // 267 - 2560, 1396, 3584, // 270 - 2560, 815, 4779, // 273 - 2560, 1396, 4779, // 276 - -512, 1396, 3313, // 279 - -512, 777, 3313, // 282 - 512, 296, 512, // 285 - 1058, 296, 512, // 288 - 512, 296, -38, // 291 - 512, 1581, -38, // 294 - 512, 2969, -2560, // 297 - 512, 2454, -3584, // 300 - 1536, 2969, -2560, // 303 - 1302, 282, -5879, // 306 - 1859, 282, -4816, // 309 - 1302, 2156, -5879, // 312 - 1859, 2156, -4816, // 315 - -1209, 595, 2621, // 318 - -754, 595, 3180, // 321 - -1209, 2807, 2621, // 324 - -754, 2807, 3180, // 327 - -1473, 595, 3206, // 330 - -1473, 2807, 3206, // 333 - 3584, 5, 512, // 336 - 3584, 5, -512, // 339 - 2560, 5, -1536, // 342 - 3584, 5, -1536, // 345 - 5632, 5, -512, // 348 - 5632, 5, -1536, // 351 - 4608, 5, -512, // 354 - 4608, 5, 512, // 357 - 3584, 5, 1536, // 360 - 2560, 5, 1536, // 363 - 4608, 5, 1536, // 366 - 5632, 5, 2560, // 369 - 6656, 5, 512, // 372 - 6656, 5, -512, // 375 - 5632, 5, 512, // 378 - 3584, 311, 512, // 381 - 3584, 311, -512, // 384 - 4608, 311, 512, // 387 - 3584, 632, -1536, // 390 - 5632, 632, -1536, // 393 - 2560, 1584, -1536, // 396 - 2560, 1584, 512, // 399 - 6178, 1581, 2560, // 402 - 5632, 1581, 512, // 405 - 4096, 594, 0, // 408 - 6656, 519, 512, // 411 - 6656, 519, -512, // 414 - 3584, 777, 1536, // 417 - 4608, 777, 1536, // 420 - 6178, 296, 2560, // 423 - 5632, 296, 2009, // 426 - 5632, 1581, 2009, // 429 - 5632, 2969, -512, // 432 - 5632, 2454, -1536, // 435 - 6656, 2969, -512, // 438 - 6422, 282, -3831, // 441 - 6979, 282, -2768, // 444 - 6422, 2156, -3831, // 447 - 6979, 2156, -2768, // 450 - 3910, 595, 4669, // 453 - 4365, 595, 5228, // 456 - 3910, 2807, 4669, // 459 - 4365, 2807, 5228, // 462 - 3646, 595, 5254, // 465 - 3646, 2807, 5254 // 468 + 0, 2, -2048, // 0 + -512, 2, -1536, // 3 + -1024, 2, -2560, // 6 + -1024, 2, -3072, // 9 + -1024, 2, -3584, // 12 + -512, 2, -3072, // 15 + -512, 2, -2560, // 18 + 512, 2, -1536, // 21 + 512, 2, -2048, // 24 + 1024, 2, -1536, // 27 + 512, 2, -2560, // 30 + 0, 2, -2560, // 33 + 512, 889, -2048, // 36 + 512, 889, -2560, // 39 + 0, 889, -2560, // 42 + -238, 790, -3072, // 45 + 512, 790, -3072, // 48 + -1024, 388, -3072, // 51 + -1024, 388, -3584, // 54 + 512, 388, -1536, // 57 + 1024, 388, -1536, // 60 + -512, 698, -1536, // 63 + -1024, 698, -2560, // 66 + -1024, 388, -2560, // 69 + -512, 698, -2560, // 72 + 512, 698, -1536, // 75 + 512, 407, -938, // 78 + 512, 698, -938, // 81 + -512, 148, -3072, // 84 + -238, 148, -3072, // 87 + -512, 148, -3347, // 90 + -1372, 297, -2017, // 93 + -1145, 297, -1737, // 96 + -1372, 1403, -2017, // 99 + -1145, 1403, -1737, // 102 + 2560, 2, -1024, // 105 + 2048, 2, -512, // 108 + 1024, 2, -3072, // 111 + 1024, 2, -3584, // 114 + 512, 2, -4096, // 117 + 1024, 2, -4096, // 120 + 2048, 2, -3584, // 123 + 2048, 2, -4096, // 126 + 1536, 2, -3584, // 129 + 1536, 2, -3072, // 132 + 1024, 2, -2560, // 135 + 512, 2, -3072, // 138 + 1536, 2, -1536, // 141 + 1536, 2, -2048, // 144 + 1536, 2, -2560, // 147 + 2048, 2, -2048, // 150 + 2048, 2, -1536, // 153 + 3072, 2, -512, // 156 + 3072, 2, -1024, // 159 + 3584, 2, -512, // 162 + 3072, 2, -2048, // 165 + 2560, 2, -1536, // 168 + 2560, 2, -3072, // 171 + 2560, 2, -3584, // 174 + 2048, 2, -3072, // 177 + 1024, 155, -3072, // 180 + 1024, 155, -3584, // 183 + 1536, 155, -3584, // 186 + 1536, 155, -3072, // 189 + 2560, 889, -1024, // 192 + 3072, 889, -1024, // 195 + 3072, 889, -1536, // 198 + 2560, 889, -1536, // 201 + 1024, 316, -4096, // 204 + 2048, 316, -4096, // 207 + 512, 792, -4096, // 210 + 1024, 298, -4710, // 213 + 512, 792, -3072, // 216 + 2321, 790, -2048, // 219 + 3072, 790, -2048, // 222 + 2048, 790, -3072, // 225 + 512, 792, -4710, // 228 + 1280, 297, -3328, // 231 + 2560, 790, -3072, // 234 + 2560, 259, -3072, // 237 + 2560, 259, -3584, // 240 + 1024, 388, -2560, // 243 + 1536, 388, -2048, // 246 + 1536, 388, -2560, // 249 + 3072, 388, -512, // 252 + 3584, 388, -512, // 255 + 2048, 698, -512, // 258 + 1536, 698, -1536, // 261 + 1536, 388, -1536, // 264 + 2048, 698, -1536, // 267 + 3072, 698, -512, // 270 + 3072, 407, 85, // 273 + 3072, 698, 85, // 276 + 1536, 698, -647, // 279 + 1536, 388, -647, // 282 + 2048, 148, -2048, // 285 + 2321, 148, -2048, // 288 + 2048, 148, -2323, // 291 + 2048, 790, -2323, // 294 + 2048, 1484, -3584, // 297 + 2048, 1227, -4096, // 300 + 2560, 1484, -3584, // 303 + 2443, 141, -5243, // 306 + 2721, 141, -4712, // 309 + 2443, 1078, -5243, // 312 + 2721, 1078, -4712, // 315 + 1187, 297, -993, // 318 + 1414, 297, -713, // 321 + 1187, 1403, -993, // 324 + 1414, 1403, -713, // 327 + 1055, 297, -700, // 330 + 1055, 1403, -700, // 333 + 3584, 2, -2048, // 336 + 3584, 2, -2560, // 339 + 3072, 2, -3072, // 342 + 3584, 2, -3072, // 345 + 4608, 2, -2560, // 348 + 4608, 2, -3072, // 351 + 4096, 2, -2560, // 354 + 4096, 2, -2048, // 357 + 3584, 2, -1536, // 360 + 3072, 2, -1536, // 363 + 4096, 2, -1536, // 366 + 4608, 2, -1024, // 369 + 5120, 2, -2048, // 372 + 5120, 2, -2560, // 375 + 4608, 2, -2048, // 378 + 3584, 155, -2048, // 381 + 3584, 155, -2560, // 384 + 4096, 155, -2048, // 387 + 3584, 316, -3072, // 390 + 4608, 316, -3072, // 393 + 3072, 792, -3072, // 396 + 3072, 792, -2048, // 399 + 4881, 790, -1024, // 402 + 4608, 790, -2048, // 405 + 3840, 297, -2304, // 408 + 5120, 259, -2048, // 411 + 5120, 259, -2560, // 414 + 3584, 388, -1536, // 417 + 4096, 388, -1536, // 420 + 4881, 148, -1024, // 423 + 4608, 148, -1299, // 426 + 4608, 790, -1299, // 429 + 4608, 1484, -2560, // 432 + 4608, 1227, -3072, // 435 + 5120, 1484, -2560, // 438 + 5003, 141, -4219, // 441 + 5281, 141, -3688, // 444 + 5003, 1078, -4219, // 447 + 5281, 1078, -3688, // 450 + 3747, 297, 30, // 453 + 3974, 297, 310, // 456 + 3747, 1403, 30, // 459 + 3974, 1403, 310, // 462 + 3615, 297, 323, // 465 + 3615, 1403, 323 // 468 }; // cityVertices #define CITY_TRIANGLE_COUNT 197