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