From 27927a18203044830169dcb4357b14ade0fd5437 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Sun, 26 Sep 2021 19:09:47 -0700 Subject: [PATCH] Camera smoothing. --- src/game/poker/pokerworld.c | 19 ++++++++++--------- src/game/poker/pokerworld.h | 2 +- src/vn/vnscene.c | 11 ++++++++++- src/vn/vnscene.h | 4 +++- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/game/poker/pokerworld.c b/src/game/poker/pokerworld.c index 5060dc61..a54d1a98 100644 --- a/src/game/poker/pokerworld.c +++ b/src/game/poker/pokerworld.c @@ -40,15 +40,16 @@ void pokerWorldInit( void pokerWorldLookAtPlayer( vnscene_t *scene, uint8_t playerIndex ) { - uint8_t seat = pokerGameSeatFromIndex(playerIndex); - vnSceneLookAt(scene, - scene->cameraLook.x, - scene->cameraLook.y, - scene->cameraLook.z, - POKER_WORLD_SEAT_POSITION_X(seat), - scene->cameraLook.lookY, - POKER_WORLD_SEAT_POSITION_Z(seat) - ); + vnSceneLookAtCharacter(scene, playerIndex, -1); + // uint8_t seat = pokerGameSeatFromIndex(playerIndex); + // vnSceneLookAtCharacter(scene, + // scene->cameraLook.x, + // scene->cameraLook.y, + // scene->cameraLook.z, + // POKER_WORLD_SEAT_POSITION_X(seat), + // scene->cameraLook.lookY, + // POKER_WORLD_SEAT_POSITION_Z(seat) + // ); } void pokerWorldRender(pokerworld_t *world, pokergameassets_t *assets) { diff --git a/src/game/poker/pokerworld.h b/src/game/poker/pokerworld.h index e369ebd9..57db30f6 100644 --- a/src/game/poker/pokerworld.h +++ b/src/game/poker/pokerworld.h @@ -19,7 +19,7 @@ #include "pokergameassets.h" -#define POKER_WORLD_SEAT_DISTANCE -1 +#define POKER_WORLD_SEAT_DISTANCE -0.75f #define POKER_WORLD_SEAT_ROTATION(n) (n * mathDeg2Rad(45.0f)) #define POKER_WORLD_SEAT_POSITION_X(n) ( \ diff --git a/src/vn/vnscene.c b/src/vn/vnscene.c index 7ceea3c1..02e7330b 100644 --- a/src/vn/vnscene.c +++ b/src/vn/vnscene.c @@ -21,7 +21,7 @@ void vnSceneInit(vnscene_t *scene, font_t *font, texture_t *text) { scene->cameraLook.z = 0; scene->cameraLook.lookX = 0; scene->cameraLook.lookY = 0; - scene->cameraLook.lookZ = 0; + scene->cameraLook.lookZ = VN_SCENE_DISTANCE_DEFAULT; // Reset character count scene->characterCount = 0x00; @@ -135,4 +135,13 @@ void vnSceneLookAt(vnscene_t *scene, void vnSceneLookAtCharacter(vnscene_t *scene, uint8_t c, float distance) { vncharacter_t *character = scene->characters + c; + + vnSceneLookAt(scene, + -distance * sinf(character->yaw) + character->x, + scene->cameraLook.y, + -distance * cosf(character->yaw) + character->z, + character->x, + scene->cameraLook.lookY, + character->z + ); } \ No newline at end of file diff --git a/src/vn/vnscene.h b/src/vn/vnscene.h index 0504e74e..23addf05 100644 --- a/src/vn/vnscene.h +++ b/src/vn/vnscene.h @@ -51,4 +51,6 @@ void vnSceneRenderGui(vnscene_t *scene, engine_t *engine, shader_t *shader); void vnSceneLookAt(vnscene_t *scene, float x, float y, float z, float lookX, float lookY, float lookZ -); \ No newline at end of file +); + +void vnSceneLookAtCharacter(vnscene_t *scene, uint8_t c, float distance); \ No newline at end of file