mirror of
https://github.com/rwengine/openrw.git
synced 2024-11-22 10:22:52 +01:00
boat driving force
This commit is contained in:
parent
d437e9697e
commit
bec157c598
@ -183,6 +183,17 @@ void VehicleObject::tick(float dt)
|
||||
}
|
||||
}
|
||||
|
||||
if( vehicle->type == VehicleData::BOAT ) {
|
||||
if( isInWater() ) {
|
||||
btVector3 localSteer = btVector3(info->handling.dimensions.x * steerAngle, 0.f, 0.f)
|
||||
.rotate(physBody->getOrientation().getAxis(), physBody->getOrientation().getAngle());
|
||||
physBody->applyForce(
|
||||
physVehicle->getForwardVector() * engineForce * 100.f,
|
||||
localSteer);
|
||||
}
|
||||
physBody->setDamping(0.2f, 0.6f);
|
||||
}
|
||||
|
||||
auto ws = getPosition();
|
||||
auto wX = (int) ((ws.x + WATER_WORLD_SIZE/2.f) / (WATER_WORLD_SIZE/WATER_HQ_DATA_SIZE));
|
||||
auto wY = (int) ((ws.y + WATER_WORLD_SIZE/2.f) / (WATER_WORLD_SIZE/WATER_HQ_DATA_SIZE));
|
||||
@ -221,12 +232,12 @@ void VehicleObject::tick(float dt)
|
||||
if( vehicle->type != VehicleData::BOAT ) {
|
||||
// dimensions.z doesn't quite fite, so divide by 120 instead of 100.
|
||||
oZ = (info->handling.dimensions.z / 2.f) - (info->handling.dimensions.z * (info->handling.percentSubmerged/120.f));
|
||||
}
|
||||
auto vFwd = getRotation() * glm::vec3(0.f, info->handling.dimensions.y/2.f, 0.f);
|
||||
auto vRt = getRotation() * glm::vec3(info->handling.dimensions.x/2.f, 0.f, 0.f);
|
||||
|
||||
// Damper motion
|
||||
physBody->setDamping(0.95f, 0.9f);
|
||||
}
|
||||
auto vFwd = getRotation() * glm::vec3(0.f, info->handling.dimensions.y/2.f, 0.f);
|
||||
auto vRt = getRotation() * glm::vec3(info->handling.dimensions.x/2.f, 0.f, 0.f);
|
||||
|
||||
applyWaterFloat( vFwd, oZ);
|
||||
applyWaterFloat(-vFwd, oZ);
|
||||
|
@ -18,7 +18,7 @@ IngameState::IngameState()
|
||||
auto spawnPos = glm::vec3( -1000.f, -1000.f, 14.f );
|
||||
for( auto& vi : getWorld()->vehicleTypes ) {
|
||||
auto sp = spawnPos;
|
||||
if(vi.first == 120) sp = { -1000.f, -1050.f, 5.f };
|
||||
if(vi.first == 120) sp = { -1000.f, -1040.f, 5.f };
|
||||
auto v = getWorld()->createVehicle(vi.first, sp, glm::quat());
|
||||
spawnPos -= glm::vec3( 2.f + v->info->handling.dimensions.x, 0.f, 0.f);
|
||||
if( ++j > 33 ) break;
|
||||
|
Loading…
Reference in New Issue
Block a user