Add controllable player
This commit is contained in:
parent
f7dfa03554
commit
086c26265e
3 changed files with 316 additions and 9 deletions
|
@ -119,4 +119,5 @@ add_data(Graph
|
||||||
data/graphics_presets.cfg
|
data/graphics_presets.cfg
|
||||||
data/test.world
|
data/test.world
|
||||||
data/test.material
|
data/test.material
|
||||||
data/empty.world)
|
data/empty.world
|
||||||
|
data/player.obj)
|
||||||
|
|
270
data/player.obj
Normal file
270
data/player.obj
Normal file
|
@ -0,0 +1,270 @@
|
||||||
|
# Blender v2.79 (sub 0) OBJ File: ''
|
||||||
|
# www.blender.org
|
||||||
|
o Cylinder
|
||||||
|
v 0.000000 -2.000000 -1.000000
|
||||||
|
v 0.000000 2.000000 -1.000000
|
||||||
|
v 0.195090 -2.000000 -0.980785
|
||||||
|
v 0.195090 2.000000 -0.980785
|
||||||
|
v 0.382683 -2.000000 -0.923880
|
||||||
|
v 0.382683 2.000000 -0.923880
|
||||||
|
v 0.555570 -2.000000 -0.831470
|
||||||
|
v 0.555570 2.000000 -0.831470
|
||||||
|
v 0.707107 -2.000000 -0.707107
|
||||||
|
v 0.707107 2.000000 -0.707107
|
||||||
|
v 0.831470 -2.000000 -0.555570
|
||||||
|
v 0.831470 2.000000 -0.555570
|
||||||
|
v 0.923880 -2.000000 -0.382683
|
||||||
|
v 0.923880 2.000000 -0.382683
|
||||||
|
v 0.980785 -2.000000 -0.195090
|
||||||
|
v 0.980785 2.000000 -0.195090
|
||||||
|
v 1.000000 -2.000000 -0.000000
|
||||||
|
v 1.000000 2.000000 -0.000000
|
||||||
|
v 0.980785 -2.000000 0.195090
|
||||||
|
v 0.980785 2.000000 0.195090
|
||||||
|
v 0.923880 -2.000000 0.382683
|
||||||
|
v 0.923880 2.000000 0.382683
|
||||||
|
v 0.831470 -2.000000 0.555570
|
||||||
|
v 0.831470 2.000000 0.555570
|
||||||
|
v 0.707107 -2.000000 0.707107
|
||||||
|
v 0.707107 2.000000 0.707107
|
||||||
|
v 0.555570 -2.000000 0.831470
|
||||||
|
v 0.555570 2.000000 0.831470
|
||||||
|
v 0.382683 -2.000000 0.923880
|
||||||
|
v 0.382683 2.000000 0.923880
|
||||||
|
v 0.195090 -2.000000 0.980785
|
||||||
|
v 0.195090 2.000000 0.980785
|
||||||
|
v -0.000000 -2.000000 1.000000
|
||||||
|
v -0.000000 2.000000 1.000000
|
||||||
|
v -0.195091 -2.000000 0.980785
|
||||||
|
v -0.195091 2.000000 0.980785
|
||||||
|
v -0.382684 -2.000000 0.923879
|
||||||
|
v -0.382684 2.000000 0.923879
|
||||||
|
v -0.555571 -2.000000 0.831469
|
||||||
|
v -0.555571 2.000000 0.831469
|
||||||
|
v -0.707107 -2.000000 0.707106
|
||||||
|
v -0.707107 2.000000 0.707106
|
||||||
|
v -0.831470 -2.000000 0.555570
|
||||||
|
v -0.831470 2.000000 0.555570
|
||||||
|
v -0.923880 -2.000000 0.382683
|
||||||
|
v -0.923880 2.000000 0.382683
|
||||||
|
v -0.980785 -2.000000 0.195089
|
||||||
|
v -0.980785 2.000000 0.195089
|
||||||
|
v -1.000000 -2.000000 -0.000001
|
||||||
|
v -1.000000 2.000000 -0.000001
|
||||||
|
v -0.980785 -2.000000 -0.195091
|
||||||
|
v -0.980785 2.000000 -0.195091
|
||||||
|
v -0.923879 -2.000000 -0.382684
|
||||||
|
v -0.923879 2.000000 -0.382684
|
||||||
|
v -0.831469 -2.000000 -0.555571
|
||||||
|
v -0.831469 2.000000 -0.555571
|
||||||
|
v -0.707106 -2.000000 -0.707108
|
||||||
|
v -0.707106 2.000000 -0.707108
|
||||||
|
v -0.555569 -2.000000 -0.831470
|
||||||
|
v -0.555569 2.000000 -0.831470
|
||||||
|
v -0.382682 -2.000000 -0.923880
|
||||||
|
v -0.382682 2.000000 -0.923880
|
||||||
|
v -0.195089 -2.000000 -0.980786
|
||||||
|
v -0.195089 2.000000 -0.980786
|
||||||
|
vt 0.154722 0.000000
|
||||||
|
vt 0.154722 0.667738
|
||||||
|
vt 0.119900 0.667738
|
||||||
|
vt 0.119900 0.000000
|
||||||
|
vt 0.085748 0.667738
|
||||||
|
vt 0.085748 0.000000
|
||||||
|
vt 0.053576 0.667738
|
||||||
|
vt 0.053576 0.000000
|
||||||
|
vt 0.024623 0.667738
|
||||||
|
vt 0.024623 0.000000
|
||||||
|
vt 0.000000 0.667738
|
||||||
|
vt 0.000000 0.000000
|
||||||
|
vt 0.774623 0.667738
|
||||||
|
vt 0.774623 0.000000
|
||||||
|
vt 0.803576 0.000000
|
||||||
|
vt 0.803576 0.667738
|
||||||
|
vt 0.835748 0.000000
|
||||||
|
vt 0.835748 0.667738
|
||||||
|
vt 0.869901 0.000000
|
||||||
|
vt 0.869900 0.667738
|
||||||
|
vt 0.904722 0.000000
|
||||||
|
vt 0.904722 0.667738
|
||||||
|
vt 0.938875 0.000000
|
||||||
|
vt 0.938875 0.667738
|
||||||
|
vt 0.971047 0.000000
|
||||||
|
vt 0.971047 0.667738
|
||||||
|
vt 1.000000 0.000000
|
||||||
|
vt 1.000000 0.667738
|
||||||
|
vt 0.524623 0.667738
|
||||||
|
vt 0.524623 0.000000
|
||||||
|
vt 0.553576 0.000000
|
||||||
|
vt 0.553576 0.667738
|
||||||
|
vt 0.585747 0.000000
|
||||||
|
vt 0.585748 0.667738
|
||||||
|
vt 0.619900 0.000000
|
||||||
|
vt 0.619900 0.667738
|
||||||
|
vt 0.654722 0.000000
|
||||||
|
vt 0.654722 0.667738
|
||||||
|
vt 0.688875 0.000000
|
||||||
|
vt 0.688875 0.667738
|
||||||
|
vt 0.721047 0.000000
|
||||||
|
vt 0.721047 0.667738
|
||||||
|
vt 0.750000 0.000000
|
||||||
|
vt 0.750000 0.667738
|
||||||
|
vt 0.774623 0.000000
|
||||||
|
vt 0.774623 0.667738
|
||||||
|
vt 0.524623 0.000000
|
||||||
|
vt 0.524623 0.667738
|
||||||
|
vt 0.495669 0.667738
|
||||||
|
vt 0.495669 0.000000
|
||||||
|
vt 0.463498 0.667738
|
||||||
|
vt 0.463498 0.000000
|
||||||
|
vt 0.429345 0.667738
|
||||||
|
vt 0.429345 0.000000
|
||||||
|
vt 0.394523 0.667738
|
||||||
|
vt 0.394523 0.000000
|
||||||
|
vt 0.360370 0.667738
|
||||||
|
vt 0.360370 0.000000
|
||||||
|
vt 0.328199 0.667738
|
||||||
|
vt 0.328199 0.000000
|
||||||
|
vt 0.299246 0.667738
|
||||||
|
vt 0.299245 0.000000
|
||||||
|
vt 0.274623 0.667738
|
||||||
|
vt 0.274623 0.000000
|
||||||
|
vt 0.250000 0.667738
|
||||||
|
vt 0.250000 0.000000
|
||||||
|
vt 0.221046 0.667738
|
||||||
|
vt 0.221046 0.000000
|
||||||
|
vt 0.330435 1.000000
|
||||||
|
vt 0.296282 0.993616
|
||||||
|
vt 0.264111 0.981093
|
||||||
|
vt 0.235158 0.962912
|
||||||
|
vt 0.210535 0.939772
|
||||||
|
vt 0.191189 0.912562
|
||||||
|
vt 0.177863 0.882328
|
||||||
|
vt 0.171069 0.850232
|
||||||
|
vt 0.171069 0.817507
|
||||||
|
vt 0.177863 0.785411
|
||||||
|
vt 0.191189 0.755177
|
||||||
|
vt 0.210535 0.727967
|
||||||
|
vt 0.235157 0.704827
|
||||||
|
vt 0.264111 0.686646
|
||||||
|
vt 0.296282 0.674123
|
||||||
|
vt 0.330435 0.667738
|
||||||
|
vt 0.365257 0.667738
|
||||||
|
vt 0.399410 0.674123
|
||||||
|
vt 0.431581 0.686646
|
||||||
|
vt 0.460535 0.704827
|
||||||
|
vt 0.485157 0.727967
|
||||||
|
vt 0.504503 0.755177
|
||||||
|
vt 0.517829 0.785411
|
||||||
|
vt 0.524623 0.817507
|
||||||
|
vt 0.524623 0.850232
|
||||||
|
vt 0.517829 0.882328
|
||||||
|
vt 0.504503 0.912562
|
||||||
|
vt 0.485157 0.939771
|
||||||
|
vt 0.460535 0.962911
|
||||||
|
vt 0.431581 0.981092
|
||||||
|
vt 0.399410 0.993616
|
||||||
|
vt 0.365257 1.000000
|
||||||
|
vt 0.188875 0.667738
|
||||||
|
vt 0.188875 0.000000
|
||||||
|
vt 0.617664 0.981093
|
||||||
|
vt 0.588711 0.962912
|
||||||
|
vt 0.564088 0.939772
|
||||||
|
vt 0.544742 0.912562
|
||||||
|
vt 0.531416 0.882328
|
||||||
|
vt 0.524623 0.850232
|
||||||
|
vt 0.524623 0.817507
|
||||||
|
vt 0.531416 0.785411
|
||||||
|
vt 0.544742 0.755177
|
||||||
|
vt 0.564088 0.727967
|
||||||
|
vt 0.588711 0.704827
|
||||||
|
vt 0.617664 0.686646
|
||||||
|
vt 0.649835 0.674123
|
||||||
|
vt 0.683988 0.667738
|
||||||
|
vt 0.718810 0.667738
|
||||||
|
vt 0.752963 0.674123
|
||||||
|
vt 0.785134 0.686646
|
||||||
|
vt 0.814088 0.704827
|
||||||
|
vt 0.838711 0.727967
|
||||||
|
vt 0.858057 0.755177
|
||||||
|
vt 0.871383 0.785411
|
||||||
|
vt 0.878176 0.817507
|
||||||
|
vt 0.878176 0.850232
|
||||||
|
vt 0.871383 0.882328
|
||||||
|
vt 0.858057 0.912562
|
||||||
|
vt 0.838711 0.939772
|
||||||
|
vt 0.814088 0.962911
|
||||||
|
vt 0.785134 0.981093
|
||||||
|
vt 0.752963 0.993616
|
||||||
|
vt 0.718810 1.000000
|
||||||
|
vt 0.683988 1.000000
|
||||||
|
vt 0.649835 0.993616
|
||||||
|
vn 0.0980 0.0000 -0.9952
|
||||||
|
vn 0.2903 0.0000 -0.9569
|
||||||
|
vn 0.4714 0.0000 -0.8819
|
||||||
|
vn 0.6344 0.0000 -0.7730
|
||||||
|
vn 0.7730 0.0000 -0.6344
|
||||||
|
vn 0.8819 0.0000 -0.4714
|
||||||
|
vn 0.9569 0.0000 -0.2903
|
||||||
|
vn 0.9952 0.0000 -0.0980
|
||||||
|
vn 0.9952 0.0000 0.0980
|
||||||
|
vn 0.9569 0.0000 0.2903
|
||||||
|
vn 0.8819 0.0000 0.4714
|
||||||
|
vn 0.7730 0.0000 0.6344
|
||||||
|
vn 0.6344 0.0000 0.7730
|
||||||
|
vn 0.4714 0.0000 0.8819
|
||||||
|
vn 0.2903 0.0000 0.9569
|
||||||
|
vn 0.0980 0.0000 0.9952
|
||||||
|
vn -0.0980 0.0000 0.9952
|
||||||
|
vn -0.2903 0.0000 0.9569
|
||||||
|
vn -0.4714 0.0000 0.8819
|
||||||
|
vn -0.6344 0.0000 0.7730
|
||||||
|
vn -0.7730 0.0000 0.6344
|
||||||
|
vn -0.8819 0.0000 0.4714
|
||||||
|
vn -0.9569 0.0000 0.2903
|
||||||
|
vn -0.9952 0.0000 0.0980
|
||||||
|
vn -0.9952 0.0000 -0.0980
|
||||||
|
vn -0.9569 0.0000 -0.2903
|
||||||
|
vn -0.8819 0.0000 -0.4714
|
||||||
|
vn -0.7730 0.0000 -0.6344
|
||||||
|
vn -0.6344 0.0000 -0.7730
|
||||||
|
vn -0.4714 0.0000 -0.8819
|
||||||
|
vn 0.0000 1.0000 0.0000
|
||||||
|
vn -0.2903 0.0000 -0.9569
|
||||||
|
vn -0.0980 0.0000 -0.9952
|
||||||
|
vn 0.0000 -1.0000 -0.0000
|
||||||
|
s off
|
||||||
|
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||||
|
f 3/4/2 4/3/2 6/5/2 5/6/2
|
||||||
|
f 5/6/3 6/5/3 8/7/3 7/8/3
|
||||||
|
f 7/8/4 8/7/4 10/9/4 9/10/4
|
||||||
|
f 9/10/5 10/9/5 12/11/5 11/12/5
|
||||||
|
f 11/13/6 12/14/6 14/15/6 13/16/6
|
||||||
|
f 13/16/7 14/15/7 16/17/7 15/18/7
|
||||||
|
f 15/18/8 16/17/8 18/19/8 17/20/8
|
||||||
|
f 17/20/9 18/19/9 20/21/9 19/22/9
|
||||||
|
f 19/22/10 20/21/10 22/23/10 21/24/10
|
||||||
|
f 21/24/11 22/23/11 24/25/11 23/26/11
|
||||||
|
f 23/26/12 24/25/12 26/27/12 25/28/12
|
||||||
|
f 25/29/13 26/30/13 28/31/13 27/32/13
|
||||||
|
f 27/32/14 28/31/14 30/33/14 29/34/14
|
||||||
|
f 29/34/15 30/33/15 32/35/15 31/36/15
|
||||||
|
f 31/36/16 32/35/16 34/37/16 33/38/16
|
||||||
|
f 33/38/17 34/37/17 36/39/17 35/40/17
|
||||||
|
f 35/40/18 36/39/18 38/41/18 37/42/18
|
||||||
|
f 37/42/19 38/41/19 40/43/19 39/44/19
|
||||||
|
f 39/44/20 40/43/20 42/45/20 41/46/20
|
||||||
|
f 41/47/21 42/48/21 44/49/21 43/50/21
|
||||||
|
f 43/50/22 44/49/22 46/51/22 45/52/22
|
||||||
|
f 45/52/23 46/51/23 48/53/23 47/54/23
|
||||||
|
f 47/54/24 48/53/24 50/55/24 49/56/24
|
||||||
|
f 49/56/25 50/55/25 52/57/25 51/58/25
|
||||||
|
f 51/58/26 52/57/26 54/59/26 53/60/26
|
||||||
|
f 53/60/27 54/59/27 56/61/27 55/62/27
|
||||||
|
f 55/62/28 56/61/28 58/63/28 57/64/28
|
||||||
|
f 57/64/29 58/63/29 60/65/29 59/66/29
|
||||||
|
f 59/66/30 60/65/30 62/67/30 61/68/30
|
||||||
|
f 4/69/31 2/70/31 64/71/31 62/72/31 60/73/31 58/74/31 56/75/31 54/76/31 52/77/31 50/78/31 48/79/31 46/80/31 44/81/31 42/82/31 40/83/31 38/84/31 36/85/31 34/86/31 32/87/31 30/88/31 28/89/31 26/90/31 24/91/31 22/92/31 20/93/31 18/94/31 16/95/31 14/96/31 12/97/31 10/98/31 8/99/31 6/100/31
|
||||||
|
f 61/68/32 62/67/32 64/101/32 63/102/32
|
||||||
|
f 63/102/33 64/101/33 2/2/33 1/1/33
|
||||||
|
f 1/103/34 3/104/34 5/105/34 7/106/34 9/107/34 11/108/34 13/109/34 15/110/34 17/111/34 19/112/34 21/113/34 23/114/34 25/115/34 27/116/34 29/117/34 31/118/34 33/119/34 35/120/34 37/121/34 39/122/34 41/123/34 43/124/34 45/125/34 47/126/34 49/127/34 51/128/34 53/129/34 55/130/34 57/131/34 59/132/34 61/133/34 63/134/34
|
52
src/main.cpp
52
src/main.cpp
|
@ -145,6 +145,9 @@ int main(int argc, char* argv[]) {
|
||||||
|
|
||||||
AnimationSystem* animationSystem = new AnimationSystem();
|
AnimationSystem* animationSystem = new AnimationSystem();
|
||||||
|
|
||||||
|
TransformComponent* playerTransform = nullptr, *cameraTransform = nullptr;
|
||||||
|
CameraComponent* cameraComponent = nullptr;
|
||||||
|
|
||||||
if(cinematicMode)
|
if(cinematicMode)
|
||||||
cinematic = animationSystem->loadCinematic(argv[2]);
|
cinematic = animationSystem->loadCinematic(argv[2]);
|
||||||
else {
|
else {
|
||||||
|
@ -153,16 +156,29 @@ int main(int argc, char* argv[]) {
|
||||||
|
|
||||||
EntityID entity = ECS::createEntity(worldManager.getCurrentWorld());
|
EntityID entity = ECS::createEntity(worldManager.getCurrentWorld());
|
||||||
|
|
||||||
TransformComponent* transform = ECS::addComponent<TransformComponent>(entity);
|
cameraTransform = ECS::addComponent<TransformComponent>(entity);
|
||||||
transform->position = glm::vec3(5, 5, 5);
|
cameraTransform->position = glm::vec3(5, 5, 5);
|
||||||
|
|
||||||
ECS::addComponent<CameraComponent>(entity);
|
cameraComponent = ECS::addComponent<CameraComponent>(entity);
|
||||||
|
|
||||||
|
EntityID playerEntity = ECS::createEntity(worldManager.getCurrentWorld());
|
||||||
|
|
||||||
|
playerTransform = ECS::addComponent<TransformComponent>(playerEntity);
|
||||||
|
playerTransform->position.y = 2;
|
||||||
|
|
||||||
|
MeshComponent* mesh = ECS::addComponent<MeshComponent>(playerEntity);
|
||||||
|
mesh->mesh = assetManager.loadMesh("player.obj");
|
||||||
|
mesh->material = assetManager.loadMaterial("test.material");
|
||||||
}
|
}
|
||||||
|
|
||||||
float currentTime = 0.0f, lastTime = 0.0f;
|
float currentTime = 0.0f, lastTime = 0.0f;
|
||||||
|
|
||||||
bool running = true;
|
bool running = true;
|
||||||
while(running) {
|
while(running) {
|
||||||
|
currentTime = SDL_GetTicks() / 1000.0f;
|
||||||
|
const float deltaTime = currentTime - lastTime;
|
||||||
|
lastTime = currentTime;
|
||||||
|
|
||||||
SDL_Event event = {};
|
SDL_Event event = {};
|
||||||
while(SDL_PollEvent(&event) > 0) {
|
while(SDL_PollEvent(&event) > 0) {
|
||||||
if(event.type == SDL_QUIT)
|
if(event.type == SDL_QUIT)
|
||||||
|
@ -195,12 +211,32 @@ int main(int argc, char* argv[]) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
currentTime = SDL_GetTicks() / 1000.0f;
|
if(cinematicMode) {
|
||||||
const float deltaTime = currentTime - lastTime;
|
|
||||||
lastTime = currentTime;
|
|
||||||
|
|
||||||
if(cinematicMode)
|
|
||||||
animationSystem->update(cinematic, deltaTime);
|
animationSystem->update(cinematic, deltaTime);
|
||||||
|
} else {
|
||||||
|
const Uint8* keys = SDL_GetKeyboardState(nullptr);
|
||||||
|
|
||||||
|
glm::vec3 direction = glm::normalize(cameraTransform->position - cameraComponent->target);
|
||||||
|
direction.y = 0;
|
||||||
|
|
||||||
|
glm::vec3 right = glm::normalize(glm::cross(direction, glm::vec3(0, 1, 0)));
|
||||||
|
|
||||||
|
const float playerSpeed = 3;
|
||||||
|
|
||||||
|
if(keys[SDL_SCANCODE_W])
|
||||||
|
playerTransform->position -= playerSpeed * direction * deltaTime;
|
||||||
|
|
||||||
|
if(keys[SDL_SCANCODE_S])
|
||||||
|
playerTransform->position += playerSpeed * direction * deltaTime;
|
||||||
|
|
||||||
|
if(keys[SDL_SCANCODE_A])
|
||||||
|
playerTransform->position -= playerSpeed * right * glm::vec3(1, 0, 0) * deltaTime;
|
||||||
|
|
||||||
|
if(keys[SDL_SCANCODE_D])
|
||||||
|
playerTransform->position += playerSpeed * right * glm::vec3(1, 0, 0) * deltaTime;
|
||||||
|
|
||||||
|
cameraComponent->target = playerTransform->position;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
ImGui::NewFrame();
|
ImGui::NewFrame();
|
||||||
|
|
Reference in a new issue