Archived
1
Fork 0

Add controllable player

This commit is contained in:
Joshua Goins 2018-12-21 05:11:30 -05:00
parent f7dfa03554
commit 086c26265e
3 changed files with 316 additions and 9 deletions

View file

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

View file

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