1
0
Fork 0
mirror of https://git.coom.tech/drummyfish/small3dlib.git synced 2024-11-21 20:39:57 +01:00

Continue city

This commit is contained in:
Miloslav Číž 2019-06-19 18:48:08 +02:00
parent 31a8469ab5
commit e91467a869
3 changed files with 218 additions and 169 deletions

View file

@ -3,18 +3,18 @@
#define CAR_VERTEX_COUNT 12 #define CAR_VERTEX_COUNT 12
const S3L_Unit carVertices[CAR_VERTEX_COUNT * 3] = { const S3L_Unit carVertices[CAR_VERTEX_COUNT * 3] = {
-103, 13, -216, // 0 -51, 14, -108, // 0
-63, 191, -184, // 3 -31, 103, -92, // 3
-63, 191, -7, // 6 -31, 103, -3, // 6
103, 13, -216, // 9 51, 14, -108, // 9
63, 191, -184, // 12 31, 103, -92, // 12
63, 191, -7, // 15 31, 103, -3, // 15
-96, 102, 63, // 18 -48, 59, 31, // 18
96, 102, 63, // 21 48, 59, 31, // 21
-103, 89, 172, // 24 -51, 52, 86, // 24
-88, 13, 172, // 27 -44, 14, 86, // 27
88, 13, 172, // 30 44, 14, 86, // 30
103, 89, 172 // 33 51, 52, 86 // 33
}; // carVertices }; // carVertices
#define CAR_TRIANGLE_COUNT 18 #define CAR_TRIANGLE_COUNT 18

View file

@ -32,6 +32,20 @@
S3L_Model3D models[2]; 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; S3L_Scene scene;
uint32_t pixels[S3L_RESOLUTION_X * S3L_RESOLUTION_Y]; uint32_t pixels[S3L_RESOLUTION_X * S3L_RESOLUTION_Y];
@ -142,6 +156,16 @@ void draw()
S3L_drawScene(scene); 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; int16_t fps = 0;
int main() int main()
@ -155,6 +179,9 @@ int main()
cityModelInit(); cityModelInit();
carModelInit(); 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[0] = cityModel;
models[1] = carModel; models[1] = carModel;
@ -212,6 +239,8 @@ int main()
S3L_rotationToDirections(models[1].transform.rotation,S3L_FRACTIONS_PER_UNIT,&carDirection,0,0); 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]) if (state[SDL_SCANCODE_UP])
{ {
models[1].transform.translation.x += (carDirection.x * step) / S3L_FRACTIONS_PER_UNIT; 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; 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.x = scene.models[1].transform.translation.x - carDirection.x;
scene.camera.transform.translation.y = S3L_FRACTIONS_PER_UNIT / 2; scene.camera.transform.translation.y = S3L_FRACTIONS_PER_UNIT / 2;
scene.camera.transform.translation.z = scene.models[1].transform.translation.z - carDirection.z; scene.camera.transform.translation.z = scene.models[1].transform.translation.z - carDirection.z;

View file

@ -3,163 +3,163 @@
#define CITY_VERTEX_COUNT 157 #define CITY_VERTEX_COUNT 157
const S3L_Unit cityVertices[CITY_VERTEX_COUNT * 3] = { const S3L_Unit cityVertices[CITY_VERTEX_COUNT * 3] = {
-3584, 5, 512, // 0 0, 2, -2048, // 0
-4608, 5, 1536, // 3 -512, 2, -1536, // 3
-5632, 5, -512, // 6 -1024, 2, -2560, // 6
-5632, 5, -1536, // 9 -1024, 2, -3072, // 9
-5632, 5, -2560, // 12 -1024, 2, -3584, // 12
-4608, 5, -1536, // 15 -512, 2, -3072, // 15
-4608, 5, -512, // 18 -512, 2, -2560, // 18
-2560, 5, 1536, // 21 512, 2, -1536, // 21
-2560, 5, 512, // 24 512, 2, -2048, // 24
-1536, 5, 1536, // 27 1024, 2, -1536, // 27
-2560, 5, -512, // 30 512, 2, -2560, // 30
-3584, 5, -512, // 33 0, 2, -2560, // 33
-2560, 1779, 512, // 36 512, 889, -2048, // 36
-2560, 1779, -512, // 39 512, 889, -2560, // 39
-3584, 1779, -512, // 42 0, 889, -2560, // 42
-4061, 1581, -1536, // 45 -238, 790, -3072, // 45
-2560, 1581, -1536, // 48 512, 790, -3072, // 48
-5632, 777, -1536, // 51 -1024, 388, -3072, // 51
-5632, 777, -2560, // 54 -1024, 388, -3584, // 54
-2560, 777, 1536, // 57 512, 388, -1536, // 57
-1536, 777, 1536, // 60 1024, 388, -1536, // 60
-4608, 1396, 1536, // 63 -512, 698, -1536, // 63
-5632, 1396, -512, // 66 -1024, 698, -2560, // 66
-5632, 777, -512, // 69 -1024, 388, -2560, // 69
-4608, 1396, -512, // 72 -512, 698, -2560, // 72
-2560, 1396, 1536, // 75 512, 698, -1536, // 75
-2560, 815, 2731, // 78 512, 407, -938, // 78
-2560, 1396, 2731, // 81 512, 698, -938, // 81
-4608, 296, -1536, // 84 -512, 148, -3072, // 84
-4061, 296, -1536, // 87 -238, 148, -3072, // 87
-4608, 296, -2086, // 90 -512, 148, -3347, // 90
-6329, 595, 573, // 93 -1372, 297, -2017, // 93
-5874, 595, 1132, // 96 -1145, 297, -1737, // 96
-6329, 2807, 573, // 99 -1372, 1403, -2017, // 99
-5874, 2807, 1132, // 102 -1145, 1403, -1737, // 102
1536, 5, 2560, // 105 2560, 2, -1024, // 105
512, 5, 3584, // 108 2048, 2, -512, // 108
-1536, 5, -1536, // 111 1024, 2, -3072, // 111
-1536, 5, -2560, // 114 1024, 2, -3584, // 114
-2560, 5, -3584, // 117 512, 2, -4096, // 117
-1536, 5, -3584, // 120 1024, 2, -4096, // 120
512, 5, -2560, // 123 2048, 2, -3584, // 123
512, 5, -3584, // 126 2048, 2, -4096, // 126
-512, 5, -2560, // 129 1536, 2, -3584, // 129
-512, 5, -1536, // 132 1536, 2, -3072, // 132
-1536, 5, -512, // 135 1024, 2, -2560, // 135
-2560, 5, -1536, // 138 512, 2, -3072, // 138
-512, 5, 1536, // 141 1536, 2, -1536, // 141
-512, 5, 512, // 144 1536, 2, -2048, // 144
-512, 5, -512, // 147 1536, 2, -2560, // 147
512, 5, 512, // 150 2048, 2, -2048, // 150
512, 5, 1536, // 153 2048, 2, -1536, // 153
2560, 5, 3584, // 156 3072, 2, -512, // 156
2560, 5, 2560, // 159 3072, 2, -1024, // 159
3584, 5, 3584, // 162 3584, 2, -512, // 162
2560, 5, 512, // 165 3072, 2, -2048, // 165
1536, 5, 1536, // 168 2560, 2, -1536, // 168
1536, 5, -1536, // 171 2560, 2, -3072, // 171
1536, 5, -2560, // 174 2560, 2, -3584, // 174
512, 5, -1536, // 177 2048, 2, -3072, // 177
-1536, 311, -1536, // 180 1024, 155, -3072, // 180
-1536, 311, -2560, // 183 1024, 155, -3584, // 183
-512, 311, -2560, // 186 1536, 155, -3584, // 186
-512, 311, -1536, // 189 1536, 155, -3072, // 189
1536, 1779, 2560, // 192 2560, 889, -1024, // 192
2560, 1779, 2560, // 195 3072, 889, -1024, // 195
2560, 1779, 1536, // 198 3072, 889, -1536, // 198
1536, 1779, 1536, // 201 2560, 889, -1536, // 201
-1536, 632, -3584, // 204 1024, 316, -4096, // 204
512, 632, -3584, // 207 2048, 316, -4096, // 207
-2560, 1584, -3584, // 210 512, 792, -4096, // 210
-1536, 597, -4813, // 213 1024, 298, -4710, // 213
-2560, 1584, -1536, // 216 512, 792, -3072, // 216
1058, 1581, 512, // 219 2321, 790, -2048, // 219
2560, 1581, 512, // 222 3072, 790, -2048, // 222
512, 1581, -1536, // 225 2048, 790, -3072, // 225
-2560, 1584, -4813, // 228 512, 792, -4710, // 228
-1024, 594, -2048, // 231 1280, 297, -3328, // 231
1536, 1581, -1536, // 234 2560, 790, -3072, // 234
1536, 519, -1536, // 237 2560, 259, -3072, // 237
1536, 519, -2560, // 240 2560, 259, -3584, // 240
-1536, 777, -512, // 243 1024, 388, -2560, // 243
-512, 777, 512, // 246 1536, 388, -2048, // 246
-512, 777, -512, // 249 1536, 388, -2560, // 249
2560, 777, 3584, // 252 3072, 388, -512, // 252
3584, 777, 3584, // 255 3584, 388, -512, // 255
512, 1396, 3584, // 258 2048, 698, -512, // 258
-512, 1396, 1536, // 261 1536, 698, -1536, // 261
-512, 777, 1536, // 264 1536, 388, -1536, // 264
512, 1396, 1536, // 267 2048, 698, -1536, // 267
2560, 1396, 3584, // 270 3072, 698, -512, // 270
2560, 815, 4779, // 273 3072, 407, 85, // 273
2560, 1396, 4779, // 276 3072, 698, 85, // 276
-512, 1396, 3313, // 279 1536, 698, -647, // 279
-512, 777, 3313, // 282 1536, 388, -647, // 282
512, 296, 512, // 285 2048, 148, -2048, // 285
1058, 296, 512, // 288 2321, 148, -2048, // 288
512, 296, -38, // 291 2048, 148, -2323, // 291
512, 1581, -38, // 294 2048, 790, -2323, // 294
512, 2969, -2560, // 297 2048, 1484, -3584, // 297
512, 2454, -3584, // 300 2048, 1227, -4096, // 300
1536, 2969, -2560, // 303 2560, 1484, -3584, // 303
1302, 282, -5879, // 306 2443, 141, -5243, // 306
1859, 282, -4816, // 309 2721, 141, -4712, // 309
1302, 2156, -5879, // 312 2443, 1078, -5243, // 312
1859, 2156, -4816, // 315 2721, 1078, -4712, // 315
-1209, 595, 2621, // 318 1187, 297, -993, // 318
-754, 595, 3180, // 321 1414, 297, -713, // 321
-1209, 2807, 2621, // 324 1187, 1403, -993, // 324
-754, 2807, 3180, // 327 1414, 1403, -713, // 327
-1473, 595, 3206, // 330 1055, 297, -700, // 330
-1473, 2807, 3206, // 333 1055, 1403, -700, // 333
3584, 5, 512, // 336 3584, 2, -2048, // 336
3584, 5, -512, // 339 3584, 2, -2560, // 339
2560, 5, -1536, // 342 3072, 2, -3072, // 342
3584, 5, -1536, // 345 3584, 2, -3072, // 345
5632, 5, -512, // 348 4608, 2, -2560, // 348
5632, 5, -1536, // 351 4608, 2, -3072, // 351
4608, 5, -512, // 354 4096, 2, -2560, // 354
4608, 5, 512, // 357 4096, 2, -2048, // 357
3584, 5, 1536, // 360 3584, 2, -1536, // 360
2560, 5, 1536, // 363 3072, 2, -1536, // 363
4608, 5, 1536, // 366 4096, 2, -1536, // 366
5632, 5, 2560, // 369 4608, 2, -1024, // 369
6656, 5, 512, // 372 5120, 2, -2048, // 372
6656, 5, -512, // 375 5120, 2, -2560, // 375
5632, 5, 512, // 378 4608, 2, -2048, // 378
3584, 311, 512, // 381 3584, 155, -2048, // 381
3584, 311, -512, // 384 3584, 155, -2560, // 384
4608, 311, 512, // 387 4096, 155, -2048, // 387
3584, 632, -1536, // 390 3584, 316, -3072, // 390
5632, 632, -1536, // 393 4608, 316, -3072, // 393
2560, 1584, -1536, // 396 3072, 792, -3072, // 396
2560, 1584, 512, // 399 3072, 792, -2048, // 399
6178, 1581, 2560, // 402 4881, 790, -1024, // 402
5632, 1581, 512, // 405 4608, 790, -2048, // 405
4096, 594, 0, // 408 3840, 297, -2304, // 408
6656, 519, 512, // 411 5120, 259, -2048, // 411
6656, 519, -512, // 414 5120, 259, -2560, // 414
3584, 777, 1536, // 417 3584, 388, -1536, // 417
4608, 777, 1536, // 420 4096, 388, -1536, // 420
6178, 296, 2560, // 423 4881, 148, -1024, // 423
5632, 296, 2009, // 426 4608, 148, -1299, // 426
5632, 1581, 2009, // 429 4608, 790, -1299, // 429
5632, 2969, -512, // 432 4608, 1484, -2560, // 432
5632, 2454, -1536, // 435 4608, 1227, -3072, // 435
6656, 2969, -512, // 438 5120, 1484, -2560, // 438
6422, 282, -3831, // 441 5003, 141, -4219, // 441
6979, 282, -2768, // 444 5281, 141, -3688, // 444
6422, 2156, -3831, // 447 5003, 1078, -4219, // 447
6979, 2156, -2768, // 450 5281, 1078, -3688, // 450
3910, 595, 4669, // 453 3747, 297, 30, // 453
4365, 595, 5228, // 456 3974, 297, 310, // 456
3910, 2807, 4669, // 459 3747, 1403, 30, // 459
4365, 2807, 5228, // 462 3974, 1403, 310, // 462
3646, 595, 5254, // 465 3615, 297, 323, // 465
3646, 2807, 5254 // 468 3615, 1403, 323 // 468
}; // cityVertices }; // cityVertices
#define CITY_TRIANGLE_COUNT 197 #define CITY_TRIANGLE_COUNT 197