diff --git a/src/Components/Wheel.h b/src/Components/Wheel.h index 5c005c7..d4917db 100644 --- a/src/Components/Wheel.h +++ b/src/Components/Wheel.h @@ -38,10 +38,3 @@ private: } #endif // Components_Wheel_h__ - -/* -m_currentSuspensionLength -m_suspension -m_steeringOrientationChassisSpace -m_spinAngle -*/ \ No newline at end of file diff --git a/src/GameWorld.cpp b/src/GameWorld.cpp index 19de351..7926dcb 100755 --- a/src/GameWorld.cpp +++ b/src/GameWorld.cpp @@ -10,18 +10,7 @@ void GameWorld::Initialize() RegisterComponents(); - { - auto camera = CreateEntity(); - auto transform = AddComponent(camera, "Transform"); - transform->Position.z = 20.f; - transform->Position.y = 20.f; - transform->Orientation = glm::quat(glm::vec3(glm::pi() / 8.f, 0.f, 0.f)); - auto cameraComp = AddComponent(camera, "Camera"); - cameraComp->FarClip = 2000.f; - AddComponent(camera, "Input"); - auto freeSteering = AddComponent(camera, "FreeSteering"); - CommitEntity(camera); - } + { @@ -57,16 +46,30 @@ void GameWorld::Initialize() box->Height = 0.727f; box->Depth = 2.594f; auto vehicle = AddComponent(jeep, "Vehicle"); - vehicle->TopSpeed = 500.f; - vehicle->MaxTorque = 1000.f; + AddComponent(jeep, "Input"); + + { + auto camera = CreateEntity(); + auto transform = AddComponent(camera, "Transform"); + transform->Position.z = 20.f; + transform->Position.y = 10.f; + transform->Orientation = glm::quat(glm::vec3(-glm::pi() / 8.f, 0.f, 0.f)); + auto cameraComp = AddComponent(camera, "Camera"); + cameraComp->FarClip = 2000.f; + AddComponent(camera, "Input"); + auto freeSteering = AddComponent(camera, "FreeSteering"); + CommitEntity(camera); + } + { auto chassis = CreateEntity(jeep); auto transform = AddComponent(chassis, "Transform"); transform->Position = glm::vec3(0, -0.6577f, 0); auto model = AddComponent(chassis, "Model"); model->ModelFile = "Models/JeepV2/Chassi/chassi.OBJ"; + } { @@ -79,10 +82,10 @@ void GameWorld::Initialize() auto Wheel = AddComponent(wheel, "Wheel"); Wheel->Hardpoint = transform->Position + glm::vec3(0.f, 1.f, 0.f); Wheel->AxleID = 0; - Wheel->Mass = 10; + Wheel->Mass = 50; Wheel->Radius = 0.837f; Wheel->Steering = true; - Wheel->SuspensionStrength = 50.f; + Wheel->SuspensionStrength = 40.f; Wheel->Friction = 4.0f; Wheel->ConnectedToHandbrake = true; CommitEntity(wheel); @@ -99,10 +102,10 @@ void GameWorld::Initialize() auto Wheel = AddComponent(wheel, "Wheel"); Wheel->Hardpoint = transform->Position + glm::vec3(0.f, 1.f, 0.f); Wheel->AxleID = 0; - Wheel->Mass = 10; + Wheel->Mass = 50; Wheel->Radius = 0.837f; Wheel->Steering = true; - Wheel->SuspensionStrength = 50.f; + Wheel->SuspensionStrength = 40.f; Wheel->Friction = 4.0f; Wheel->ConnectedToHandbrake = true; CommitEntity(wheel); @@ -243,7 +246,7 @@ void GameWorld::Initialize() CommitEntity(cube); } - { + /*{ auto entity = CreateEntity(); AddComponent(entity, "Transform"); auto emitter = AddComponent(entity, "SoundEmitter"); @@ -251,7 +254,7 @@ void GameWorld::Initialize() emitter->Loop = true; GetSystem("SoundSystem")->PlaySound(emitter); CommitEntity(entity); - } + }*/ } void GameWorld::Update(double dt) diff --git a/src/Systems/FreeSteeringSystem.cpp b/src/Systems/FreeSteeringSystem.cpp index 407200b..02e0d33 100755 --- a/src/Systems/FreeSteeringSystem.cpp +++ b/src/Systems/FreeSteeringSystem.cpp @@ -20,8 +20,8 @@ void Systems::FreeSteeringSystem::UpdateEntity(double dt, EntityID entity, Entit { auto transform = m_World->GetComponent(entity, "Transform"); - glm::vec3 Camera_Right = glm::vec3(glm::vec4(1, 0, 0, 0) * transform->Orientation); - glm::vec3 Camera_Forward = glm::vec3(glm::vec4(0, 0, 1, 0) * transform->Orientation); + glm::vec3 Camera_Right = glm::vec3(transform->Orientation * glm::vec4(1, 0, 0, 0)); + glm::vec3 Camera_Forward = glm::vec3(transform->Orientation * glm::vec4(0, 0, -1, 0)); float speed = steering->Speed; if (input->KeyState[GLFW_KEY_LEFT_SHIFT]) @@ -42,11 +42,11 @@ void Systems::FreeSteeringSystem::UpdateEntity(double dt, EntityID entity, Entit } if (input->KeyState[GLFW_KEY_W]) { - transform->Position -= Camera_Forward * (float)dt * speed; + transform->Position += Camera_Forward * (float)dt * speed; } if (input->KeyState[GLFW_KEY_S]) { - transform->Position += Camera_Forward * (float)dt * speed; + transform->Position -= Camera_Forward * (float)dt * speed; } if (input->KeyState[GLFW_KEY_SPACE]) { @@ -61,9 +61,9 @@ void Systems::FreeSteeringSystem::UpdateEntity(double dt, EntityID entity, Entit { // TOUCHING THIS CODE MIGHT CAUSE THE UNIVERSE TO IMPLODE, ALSO DRAGONS // spelling tobias :3 //--------------------------------------------------------------------- - transform->Orientation = glm::angleAxis(input->dY / 300.f, glm::vec3(1, 0, 0)) * transform->Orientation; + transform->Orientation = glm::angleAxis(input->dX / 300.f, glm::vec3(0, -1, 0)) * transform->Orientation; + transform->Orientation = transform->Orientation * glm::angleAxis(input->dY / 300.f, glm::vec3(-1, 0, 0)); - transform->Orientation = transform->Orientation * glm::angleAxis(input->dX / 300.f, glm::vec3(0, 1, 0)); //--------------------------------------------------------------------- // TOUCHING THIS CODE MIGHT CAUSE THE UNIVERSE TO IMPLODE, ALSO DRAGONS } diff --git a/src/Systems/PhysicsSystem.cpp b/src/Systems/PhysicsSystem.cpp index bdcf371..b275ad8 100644 --- a/src/Systems/PhysicsSystem.cpp +++ b/src/Systems/PhysicsSystem.cpp @@ -133,17 +133,22 @@ void Systems::PhysicsSystem::UpdateEntity(double dt, EntityID entity, EntityID p transformComponent->Orientation = orientation * wheelComponent->OriginalOrientation; } } - else + else if(m_Vehicles.find(entity) != m_Vehicles.end()) { - if(m_Vehicles.find(entity) != m_Vehicles.end()) + hkVector4 position = m_RigidBodies[entity]->getPosition(); + transformComponent->Position = glm::vec3(position(0), position(1), position(2)); + hkQuaternion orientation = m_RigidBodies[entity]->getRotation(); + transformComponent->Orientation = glm::quat(orientation(3),orientation(0), orientation(1), orientation(2)); + + } + else if(m_RigidBodies.find(entity) != m_RigidBodies.end()) + { + if(m_RigidBodies[entity]->isActive()) { - if(m_RigidBodies[entity]->isActive()) - { - hkVector4 position = m_RigidBodies[entity]->getPosition(); - transformComponent->Position = glm::vec3(position(0), position(1), position(2)); - hkQuaternion orientation = m_RigidBodies[entity]->getRotation(); - transformComponent->Orientation = glm::quat(orientation(3),orientation(0), orientation(1), orientation(2)); - } + hkVector4 position = m_RigidBodies[entity]->getPosition(); + transformComponent->Position = glm::vec3(position(0), position(1), position(2)); + hkQuaternion orientation = m_RigidBodies[entity]->getRotation(); + transformComponent->Orientation = glm::quat(orientation(3),orientation(0), orientation(1), orientation(2)); } }