From d4df7fbc40eb986c208e16efa808dc1d29beedb5 Mon Sep 17 00:00:00 2001 From: det-fys Date: Tue, 29 Jul 2025 13:34:29 +0200 Subject: [PATCH] stuff --- engine1.wav | Bin 0 -> 44226 bytes imgui.ini | 15 ++++++++++++++ karo.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++---- vcpkg.json | 9 ++++++++- 4 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 engine1.wav create mode 100644 imgui.ini diff --git a/engine1.wav b/engine1.wav new file mode 100644 index 0000000000000000000000000000000000000000..2e1fcd783c9d09eb3a0e7b30493c9a2c430cd4b1 GIT binary patch literal 44226 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 M6tr2|9i}b+58MCyq5uE@ literal 0 HcmV?d00001 diff --git a/imgui.ini b/imgui.ini new file mode 100644 index 0000000..31dfccb --- /dev/null +++ b/imgui.ini @@ -0,0 +1,15 @@ +[Window][Debug##Default] +Pos=60,60 +Size=400,400 +Collapsed=0 + +[Window][state] +Pos=37,31 +Size=307,184 +Collapsed=0 + +[Window][Dear ImGui Demo] +Pos=1344,167 +Size=550,680 +Collapsed=0 + diff --git a/karo.cpp b/karo.cpp index 519be82..045babe 100644 --- a/karo.cpp +++ b/karo.cpp @@ -20,6 +20,10 @@ #include //#include +#include +#include +#include + #include "camera.hpp" using namespace physx; @@ -892,7 +896,7 @@ PxVehicleDrive4W* createVehicle4W(const VehicleDesc& vehicle4WDesc, PxPhysics* p //Gears PxVehicleGearsData gears; - gears.mSwitchTime = 0.2f; + gears.mSwitchTime = 0.5f; driveSimData.setGearsData(gears); //Clutch @@ -1339,7 +1343,7 @@ int main() { prev_y = y; }); - glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); + //glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); auto KeyDown = [window](int key) { return glfwGetKey(window, key) == GLFW_PRESS; @@ -1347,9 +1351,29 @@ int main() { glfwSwapInterval(1); + // Setup Dear ImGui context + IMGUI_CHECKVERSION(); + ImGui::CreateContext(); + ImGuiIO& io = ImGui::GetIO(); (void)io; + io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls + io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls + + // Setup Dear ImGui style + ImGui::StyleColorsDark(); + //ImGui::StyleColorsLight(); + + // Setup Platform/Renderer backends + ImGui_ImplGlfw_InitForOpenGL(window, true); + ImGui_ImplOpenGL3_Init("#version 130"); + while (!glfwWindowShouldClose(window)) { glfwPollEvents(); + // Start the Dear ImGui frame + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplGlfw_NewFrame(); + ImGui::NewFrame(); + int width, height; glfwGetFramebufferSize(window, &width, &height); @@ -1403,11 +1427,31 @@ int main() { auto& dyndata = gVehicle4W->mDriveDynData; + /*gVehicle4W->computeForwardSpeed()*/ + + //printf("e: %9.2f g: %u\n", , dyndata.getCurrentGear()); + + auto speed = gVehicle4W->computeForwardSpeed() * 3.6f; + auto enginespeed = dyndata.getEngineRotationSpeed() / (PxPi * 2.0) * 60.0f; + auto gear = (int)dyndata.getCurrentGear(); + auto dist = glm::length(pos_glm); + + static const char* gearname[] = { + "R", "N", "1", "2", "3", "4", "5" + }; - printf("e: %9.2f g: %u\n", dyndata.getEngineRotationSpeed() / (PxPi * 2.0) * 60.0f, dyndata.getCurrentGear()); + ImGui::Begin("state"); + ImGui::Text("dist: %.1f m", dist); + ImGui::Text("speed: %.1f km/h", speed); + ImGui::Text("rpm: %.1f", enginespeed); + ImGui::ProgressBar(enginespeed / 6000.0f); + ImGui::SliderInt("gear", &gear, 0, 6, gearname[gear]); + ImGui::End(); + + ImGui::ShowDemoWindow(); glm::mat4 mvp = proj * view; @@ -1446,7 +1490,6 @@ int main() { DrawPhysxDebug(); - glBindVertexArray(vao); glBindBuffer(GL_ARRAY_BUFFER, vbo); @@ -1459,6 +1502,10 @@ int main() { s_draw_lines.clear(); s_draw_points.clear(); + ImGui::Render(); + + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + glfwSwapBuffers(window); } diff --git a/vcpkg.json b/vcpkg.json index e04599a..d7af624 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -5,7 +5,14 @@ "physx", "glew", "glfw3", - "glm" + "glm", + { + "name": "imgui", + "features": [ + "glfw-binding", + "opengl3-binding" + ] + } ], "overrides": [ {