Kind of retarded tank

This commit is contained in:
ViktorLjung
2014-06-02 17:50:46 +02:00
parent 0144640a9b
commit 2f2154ffe1
4 changed files with 40 additions and 61 deletions
+11 -4
View File
@@ -10,9 +10,10 @@ namespace Components
struct Vehicle : Component
{
Vehicle()
: MaxTorque(1000.0f), MinRPM(1000.0f), OptimalRPM(3000.0f), MaxRPM(4000.0f), MaxSteeringAngle(35), TopSpeed(130.0f),
MaxSpeedFullSteeringAngle(40.0f), SpringDamping(1.f){ }
: MaxTorque(1000.0f), MinRPM(0.0f), OptimalRPM(2000.0f), MaxRPM(3000.0f), MaxSteeringAngle(35), TopSpeed(70.0f),
MaxSpeedFullSteeringAngle(40.0f), SpringDamping(1.f), UpshiftRPM(2500.0f), DownshiftRPM(500.0f),
gearsRatio0(4.5f), gearsRatio1(2.5f), gearsRatio2(1.0f), gearsRatio3(0.5f){ }
//gearsRatio0(3.0f), gearsRatio1(2.25f), gearsRatio2(1.5f), gearsRatio3(1.0f)
float MaxTorque;
float MinRPM;
float OptimalRPM;
@@ -23,7 +24,13 @@ struct Vehicle : Component
float TopSpeed;
float MaxSpeedFullSteeringAngle;
float SpringDamping;
float DownshiftRPM;
float UpshiftRPM;
float gearsRatio0;
float gearsRatio1;
float gearsRatio2;
float gearsRatio3;
Vehicle* Clone() const override { return new Vehicle(*this); }
};
+10 -47
View File
@@ -71,33 +71,6 @@ void GameWorld::Initialize()
e.ViewportFrame = "ViewportFreeCam";
EventBroker->Publish(e);
}
//{
// auto ground = CreateEntity();
// auto transform = AddComponent<Components::Transform>(ground);
// transform->Position = glm::vec3(0, -50, 0);
// //transform->Scale = glm::vec3(400.0f, 10.0f, 400.0f);
// transform->Orientation = glm::quat(glm::vec3(0.0f, 0.0f, 0.0f));
// auto model = AddComponent<Components::Model>(ground);
// model->ModelFile = "Models/TestScene3/testScene.obj";
// //model->ModelFile = "Models/Placeholders/Terrain/Terrain2.obj";
//
// auto physics = AddComponent<Components::Physics>(ground);
// physics->Mass = 10;
// physics->Static = true;
// auto groundshape = CreateEntity(ground);
// auto transformshape = AddComponent<Components::Transform>(groundshape);
// auto meshShape = AddComponent<Components::MeshShape>(groundshape);
// //meshShape->ResourceName = "Models/Placeholders/Terrain/Terrain2.obj";
// meshShape->ResourceName = "Models/TestScene3/testScene.obj";
//
// CommitEntity(groundshape);
// CommitEntity(ground);
//}
{
auto ground = CreateEntity();
@@ -575,7 +548,6 @@ void GameWorld::CreateGate(glm::vec3 Position)
}
}
EntityID GameWorld::CreateTank(int playerID)
{
auto tank = CreateEntity();
@@ -586,7 +558,7 @@ EntityID GameWorld::CreateTank(int playerID)
physics->Mass = 63000 - 16000;
physics->Static = false;
auto vehicle = AddComponent<Components::Vehicle>(tank);
vehicle->MaxTorque = 36000.f;
vehicle->MaxTorque = 8000.f;
vehicle->MaxSteeringAngle = 90.f;
vehicle->MaxSpeedFullSteeringAngle = 4.f;
auto player = AddComponent<Components::Player>(tank);
@@ -784,7 +756,7 @@ void GameWorld::AddTankWheelPair(EntityID tankEntity, glm::vec3 position, int ax
Wheel->Radius = 0.6f;
Wheel->Steering = steering;
Wheel->SuspensionStrength = suspensionStrength;
Wheel->Friction = 3.f;
Wheel->Friction = 4.f;
Wheel->ConnectedToHandbrake = true;
Wheel->TorqueRatio = 0.125f;
Wheel->Width = 0.6f;
@@ -807,7 +779,7 @@ void GameWorld::AddTankWheelPair(EntityID tankEntity, glm::vec3 position, int ax
Wheel->Radius = 0.6f;
Wheel->Steering = steering;
Wheel->SuspensionStrength = suspensionStrength;
Wheel->Friction = 3.f;
Wheel->Friction = 4.f;
Wheel->ConnectedToHandbrake = true;
Wheel->TorqueRatio = 0.125f;
Wheel->Width = 0.6f;
@@ -859,7 +831,14 @@ EntityID GameWorld::CreateJeep(int playerID)
physics->Mass = 1800;
physics->Static = false;
auto vehicle = AddComponent<Components::Vehicle>(jeep);
vehicle->DownshiftRPM = 3500.f;
vehicle->UpshiftRPM = 6000.f;
AddComponent<Components::Input>(jeep);
auto player = AddComponent<Components::Player>(jeep);
player->ID = playerID;
auto health = AddComponent<Components::Health>(jeep);
health->Amount = 100.f;
{
auto shape = CreateEntity(jeep);
@@ -867,12 +846,6 @@ EntityID GameWorld::CreateJeep(int playerID)
auto meshShape = AddComponent<Components::MeshShape>(shape);
meshShape->ResourceName = "Models/Jeep/Chassi/ChassiCollision.obj";
CommitEntity(shape);
// auto box = AddComponent<Components::Box>(jeep);
// box->Width = 1.487f;
// box->Height = 0.727f;
// box->Depth = 2.594f;
}
{
@@ -883,16 +856,6 @@ EntityID GameWorld::CreateJeep(int playerID)
model->ModelFile = "Models/Jeep/Chassi/chassi.obj";
}
{
auto lightentity = CreateEntity(jeep);
auto transform = AddComponent<Components::Transform>(lightentity);
transform->Position = glm::vec3(0, 15, 0);
auto light = AddComponent<Components::PointLight>(lightentity);
light->Diffuse = glm::vec3(128.f / 255.f, 172.f / 255.f, 242.f / 255.f);
light->Specular = glm::vec3(1.f);
}
//Create wheels
float wheelOffset = 0.4f;
float springLength = 0.3f;
+18 -10
View File
@@ -8,7 +8,8 @@
void VehicleSetup::buildVehicle(World *world, const hkpWorld* physicsWorld, hkpVehicleInstance& vehicle, EntityID vehicleEntity, std::vector<EntityID> wheelEntities)
{
auto vehicleComponent = world->GetComponent<Components::Vehicle>(vehicleEntity);
auto tankSteeringComponent = world->GetComponent<Components::TankSteering>(vehicleEntity);
WheelData wheelData;
for (int i = 0; i < wheelEntities.size(); i++)
{
@@ -22,7 +23,14 @@ void VehicleSetup::buildVehicle(World *world, const hkpWorld* physicsWorld, hkpV
//
vehicle.m_data = new hkpVehicleData;
vehicle.m_driverInput = new hkpVehicleDefaultAnalogDriverInput;
vehicle.m_steering = new TankSteering;
if(tankSteeringComponent)
{
vehicle.m_steering = new TankSteering;
}
else
{
vehicle.m_steering = new hkpVehicleDefaultSteering;
}
vehicle.m_engine = new hkpVehicleDefaultEngine;
vehicle.m_transmission = new hkpVehicleDefaultTransmission;
vehicle.m_brake = new hkpVehicleDefaultBrake;
@@ -196,15 +204,15 @@ void VehicleSetup::setupComponent(const hkpVehicleData& data, hkpVehicleDefaultT
transmission.m_gearsRatio.setSize(numberOfGears);
transmission.m_wheelsTorqueRatio.setSize(data.m_numWheels);
transmission.m_downshiftRPM = 3500.0f; //HACK: Should be in VehicleComponent
transmission.m_upshiftRPM = 7000.0f;
transmission.m_downshiftRPM = vehicleComponent.DownshiftRPM; //HACK: Should be in VehicleComponent
transmission.m_upshiftRPM = vehicleComponent.UpshiftRPM;
transmission.m_clutchDelayTime = 1.5f;
transmission.m_clutchDelayTime = 0.0f;
transmission.m_reverseGearRatio = 1.0f;
transmission.m_gearsRatio[0] = 3.0f;
transmission.m_gearsRatio[1] = 2.25f;
transmission.m_gearsRatio[2] = 1.5f;
transmission.m_gearsRatio[3] = 1.0f;
transmission.m_gearsRatio[0] = vehicleComponent.gearsRatio0;
transmission.m_gearsRatio[1] = vehicleComponent.gearsRatio1;
transmission.m_gearsRatio[2] = vehicleComponent.gearsRatio2;
transmission.m_gearsRatio[3] = vehicleComponent.gearsRatio3;
for(int i = 0; i < m_Wheels.size(); i++)
{
@@ -212,7 +220,7 @@ void VehicleSetup::setupComponent(const hkpVehicleData& data, hkpVehicleDefaultT
transmission.m_wheelsTorqueRatio[i] = m_Wheels[i].WheelComponent->TorqueRatio;
}
transmission.m_primaryTransmissionRatio = hkpVehicleDefaultTransmission::calculatePrimaryTransmissionRatio(
transmission.m_primaryTransmissionRatio = hkpVehicleDefaultTransmission::calculatePrimaryTransmissionRatioKPH(
vehicleComponent.TopSpeed,
m_Wheels[0].WheelComponent->Radius, // HACK: All wheels are the same size right?
vehicleComponent.MaxRPM,
+1
View File
@@ -32,6 +32,7 @@
#include "Components/Vehicle.h"
#include "Components/Wheel.h"
#include "Components/Transform.h"
#include "Components/TankSteering.h"
/// Tank specific steering implementation. Rear wheels steer in opposite direction