Skip to content

Commit

Permalink
Adding way to move settings around
Browse files Browse the repository at this point in the history
  • Loading branch information
Hjaltesorgenfrei committed Feb 5, 2024
1 parent ed46803 commit a82fddb
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 20 deletions.
1 change: 1 addition & 0 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Remove tasks and tick them in the todo as they get done.
- PhysicsWorld
- CurrentFrame
- Network to send messages
- [ ] Save and load struct from json

## Rendering

Expand Down
4 changes: 3 additions & 1 deletion src/client/Application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,9 @@ void App::drawDebugForCarSettings(entt::entity entity, CarSettings* carSettings)
bool changed = false;
ImGui::Begin("Car Settings");
changed |= ImGui::InputFloat("Max Torgue", &carSettings->maxEngineTorque);
changed |= ImGui::InputFloat("Wheel Radius", &carSettings->wheelRadius);
changed |= ImGui::DragFloat("Wheel Radius", &carSettings->wheelRadius, 0.05f, 0.f, 3.f);
changed |= ImGui::DragFloat3("Front Wheel Offset", (float*)&carSettings->frontWheelOffset, 0.05f, -2.f, 5.f);
changed |= ImGui::DragFloat3("Rear Wheel Offset", (float*)&carSettings->rearWheelOffset, 0.05f, -2.f, 5.f);
ImGui::End();
if (changed) {
physicsWorld->createCarFromSettings(registry, entity);
Expand Down
14 changes: 7 additions & 7 deletions src/engine/Components.hpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
#pragma once

#ifndef COMPONENTS_H
#define COMPONENTS_H

#include <GLFW/glfw3.h>

#include <glm/glm.hpp>
Expand Down Expand Up @@ -92,6 +88,12 @@ struct CarSettings {
float halfVehicleWidth = 0.9f;
float halfVehicleHeight = 0.2f;

struct Wheeloffset {
float Length = 0.9f;
float Height = 0.0f;
float Width = 0.0f;
} frontWheelOffset, rearWheelOffset;

float wheelRadius = 0.3f;
float wheelWidth = 0.1f;

Expand Down Expand Up @@ -153,6 +155,4 @@ struct SensorTag {};

struct ActiveCameraTag {};

struct PlayerCube {};

#endif
struct PlayerCube {};
26 changes: 14 additions & 12 deletions src/engine/Physics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -441,14 +441,13 @@ void PhysicsWorld::createCarFromSettings(entt::registry &registry, entt::entity
Vec3 rear_wheel_forward = Vec3(-Sin(settings->rear.toe), 0, Cos(settings->rear.toe));
Vec3 flip_x(-1, 1, 1);

// Wheels, left front
WheelSettingsWV *w1 = new WheelSettingsWV;

// Clamp the values to avoid crashing Jolt
float wheelRadius = std::clamp(0.001f, settings->wheelRadius, FLT_MAX);
// TODO: What are these positions magic values??? 0.9f, 2.0f
w1->mPosition = Vec3(settings->halfVehicleWidth, -0.9f * settings->halfVehicleHeight,
settings->halfVehicleLength - 2.0f * wheelRadius);
// Wheels, left front
WheelSettingsWV *w1 = new WheelSettingsWV;
w1->mPosition = Vec3(settings->halfVehicleWidth + settings->frontWheelOffset.Width,
settings->halfVehicleHeight + settings->frontWheelOffset.Height,
settings->halfVehicleLength + settings->frontWheelOffset.Length);
w1->mSuspensionDirection = front_suspension_dir;
w1->mSteeringAxis = front_steering_axis;
w1->mWheelUp = front_wheel_up;
Expand All @@ -462,8 +461,9 @@ void PhysicsWorld::createCarFromSettings(entt::registry &registry, entt::entity

// Right front
WheelSettingsWV *w2 = new WheelSettingsWV;
w2->mPosition = Vec3(-settings->halfVehicleWidth, -0.9f * settings->halfVehicleHeight,
settings->halfVehicleLength - 2.0f * wheelRadius);
w2->mPosition = Vec3(-settings->halfVehicleWidth + settings->frontWheelOffset.Width,
settings->halfVehicleHeight + settings->frontWheelOffset.Height,
settings->halfVehicleLength + settings->frontWheelOffset.Length);
w2->mSuspensionDirection = flip_x * front_suspension_dir;
w2->mSteeringAxis = flip_x * front_steering_axis;
w2->mWheelUp = flip_x * front_wheel_up;
Expand All @@ -477,8 +477,9 @@ void PhysicsWorld::createCarFromSettings(entt::registry &registry, entt::entity

// Left rear
WheelSettingsWV *w3 = new WheelSettingsWV;
w3->mPosition = Vec3(settings->halfVehicleWidth, -0.9f * settings->halfVehicleHeight,
-settings->halfVehicleLength + 2.0f * wheelRadius);
w3->mPosition = Vec3(settings->halfVehicleWidth + settings->rearWheelOffset.Width,
settings->halfVehicleHeight + settings->rearWheelOffset.Height,
-settings->halfVehicleLength + settings->rearWheelOffset.Length);
w3->mSuspensionDirection = rear_suspension_dir;
w3->mSteeringAxis = rear_steering_axis;
w3->mWheelUp = rear_wheel_up;
Expand All @@ -491,8 +492,9 @@ void PhysicsWorld::createCarFromSettings(entt::registry &registry, entt::entity

// Right rear
WheelSettingsWV *w4 = new WheelSettingsWV;
w4->mPosition = Vec3(-settings->halfVehicleWidth, -0.9f * settings->halfVehicleHeight,
-settings->halfVehicleLength + 2.0f * wheelRadius);
w4->mPosition = Vec3(-settings->halfVehicleWidth + settings->rearWheelOffset.Width,
settings->halfVehicleHeight + settings->rearWheelOffset.Height,
-settings->halfVehicleLength + settings->rearWheelOffset.Length);
w4->mSuspensionDirection = flip_x * rear_suspension_dir;
w4->mSteeringAxis = flip_x * rear_steering_axis;
w4->mWheelUp = flip_x * rear_wheel_up;
Expand Down

0 comments on commit a82fddb

Please sign in to comment.