1
0
Fork 0
mirror of https://git.coom.tech/drummyfish/small3dlib.git synced 2024-12-22 01:26:17 +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
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

View file

@ -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;

View file

@ -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