From c6daa7ec21aac46c00dce5f5d10f2c5ddc2239fd Mon Sep 17 00:00:00 2001 From: Martin Felis Date: Fri, 5 Nov 2021 22:01:04 +0100 Subject: [PATCH] Hull is now movable, tweaked camera movement. --- src/render_utils.c | 2 +- src/vissim.cc | 38 ++++++++++++++++++++++++++++++-------- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/render_utils.c b/src/render_utils.c index 73b17eb..316944b 100644 --- a/src/render_utils.c +++ b/src/render_utils.c @@ -97,7 +97,7 @@ inline void CameraState_Update( float mouse_dx, float mouse_dy, float accel[3]) { - const float mouse_sensitivity = 15.0f; + const float mouse_sensitivity = 20.0f; camera_state->heading -= dt * mouse_dx * mouse_sensitivity * M_PI / 180.f; if (camera_state->heading < -M_PI) { diff --git a/src/vissim.cc b/src/vissim.cc index a984409..59d1154 100644 --- a/src/vissim.cc +++ b/src/vissim.cc @@ -473,6 +473,11 @@ void SimulatorSceneRender(srcmdbuf* render_commands) { sch_hull box_hull; srmeshdata* box_hull_mesh; +simd4x4f box_hull_trasform { + simd4f_create(1.f, 0.f, 0.0, 0.f), + simd4f_create(0.f, 1.f, 0.f, 0.f), + simd4f_create(0.f, 0.f, 1.f, 0.f), + simd4f_create(0.f, 0.f, 0.f, 1.f)}; void SconvHUllSceneInit() { sch_create_unitbox(&box_hull); @@ -605,11 +610,21 @@ void SconvHullSceneRender(srcmdbuf* render_commands) { } } + + ImGuizmo::Manipulate( + (float*)&(gCameraState->mtxView), + (float*)&(gProjMatrix), + ImGuizmo::TRANSLATE, + ImGuizmo::WORLD, + (float*)(&box_hull_trasform), + NULL + ); + // Render hull srcmd cmd; cmd.type = SrndrCmdTypeMesh; cmd.color = simd4f_create(1.f, 1.f, 1.f, 1.f); - simd4x4f_identity(&cmd.mat); + cmd.mat = box_hull_trasform; cmd.meshdata = box_hull_mesh; srcmdbuf_add(render_commands, &cmd); @@ -765,7 +780,7 @@ int main() { SconvHUllSceneInit(); simd4x4f_translation(&gCameraState->mtxView, 0.1f, 0.1f, -0.5f); - simd4f eye = simd4f_create(0.f, 0.f, 10.f, 1.f); + simd4f eye = simd4f_create(5.f, 4.f, 5.f, 1.f); simd4x4f_lookat( &gCameraState->mtxView, @@ -842,24 +857,31 @@ int main() { if (gControlMode == ControlModeFirstPersonView) { float camera_accel[3] = {0.f, 0.f, 0.f}; + float accel_scale = 100.0; + + if (glfwGetKey(gWindow, GLFW_KEY_LEFT_SHIFT)) { + accel_scale *= 3.; + } else if (glfwGetKey(gWindow, GLFW_KEY_LEFT_CONTROL)) { + accel_scale /= 3.; + } if (glfwGetKey(gWindow, GLFW_KEY_W)) { - camera_accel[0] -= 100.f; + camera_accel[0] -= accel_scale; } if (glfwGetKey(gWindow, GLFW_KEY_S)) { - camera_accel[0] += 100.f; + camera_accel[0] += accel_scale; } if (glfwGetKey(gWindow, GLFW_KEY_C)) { - camera_accel[1] -= 100.f; + camera_accel[1] -= accel_scale; } if (glfwGetKey(gWindow, GLFW_KEY_SPACE)) { - camera_accel[1] += 100.f; + camera_accel[1] += accel_scale; } if (glfwGetKey(gWindow, GLFW_KEY_A)) { - camera_accel[2] -= 100.f; + camera_accel[2] -= accel_scale; } if (glfwGetKey(gWindow, GLFW_KEY_D)) { - camera_accel[2] += 100.f; + camera_accel[2] += accel_scale; } CameraState_Update(