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:
parent
31a8469ab5
commit
e91467a869
3 changed files with 218 additions and 169 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue