[Client] Update DedicatedPlayer to C++11

0.6.1
Koncord 8 years ago
parent 08666cabdb
commit 8f7da49152

@ -101,22 +101,20 @@ void DedicatedPlayer::move(float dt)
const int maxInterpolationDistance = 40; const int maxInterpolationDistance = 40;
// Apply interpolation only if the position hasn't changed too much from last time // Apply interpolation only if the position hasn't changed too much from last time
bool shouldInterpolate = abs(position.pos[0] - refPos.pos[0]) < maxInterpolationDistance && abs(position.pos[1] - refPos.pos[1]) < maxInterpolationDistance && abs(position.pos[2] - refPos.pos[2]) < maxInterpolationDistance; bool shouldInterpolate =
abs(position.pos[0] - refPos.pos[0]) < maxInterpolationDistance &&
abs(position.pos[1] - refPos.pos[1]) < maxInterpolationDistance &&
abs(position.pos[2] - refPos.pos[2]) < maxInterpolationDistance;
if (shouldInterpolate) if (shouldInterpolate)
{ {
static const int timeMultiplier = 15; static const int timeMultiplier = 15;
osg::Vec3f lerp = MechanicsHelper::getLinearInterpolation(refPos.asVec3(), position.asVec3(), dt * timeMultiplier); osg::Vec3f lerp = MechanicsHelper::getLinearInterpolation(refPos.asVec3(), position.asVec3(), dt * timeMultiplier);
refPos.pos[0] = lerp.x();
refPos.pos[1] = lerp.y();
refPos.pos[2] = lerp.z();
world->moveObject(ptr, refPos.pos[0], refPos.pos[1], refPos.pos[2]); world->moveObject(ptr, lerp.x(), lerp.y(), lerp.z());
} }
else else
{
world->moveObject(ptr, position.pos[0], position.pos[1], position.pos[2]); world->moveObject(ptr, position.pos[0], position.pos[1], position.pos[2]);
}
float oldZ = ptr.getRefData().getPosition().rot[2]; float oldZ = ptr.getRefData().getPosition().rot[2];
world->rotateObject(ptr, position.rot[0], 0, oldZ); world->rotateObject(ptr, position.rot[0], 0, oldZ);
@ -137,9 +135,7 @@ void DedicatedPlayer::setAnimFlags()
// Until we figure out a better workaround for disabling player gravity, // Until we figure out a better workaround for disabling player gravity,
// simply cast Levitate over and over on a player that's supposed to be flying // simply cast Levitate over and over on a player that's supposed to be flying
if (!isFlying) if (!isFlying)
{
ptr.getClass().getCreatureStats(ptr).getActiveSpells().purgeEffect(ESM::MagicEffect::Levitate); ptr.getClass().getCreatureStats(ptr).getActiveSpells().purgeEffect(ESM::MagicEffect::Levitate);
}
else if (isFlying && !world->isFlying(ptr)) else if (isFlying && !world->isFlying(ptr))
{ {
MWMechanics::CastSpell cast(ptr, ptr); MWMechanics::CastSpell cast(ptr, ptr);
@ -190,12 +186,12 @@ void DedicatedPlayer::setEquipment()
const int count = equipedItems[slot].count; const int count = equipedItems[slot].count;
ptr.getClass().getContainerStore(ptr).add(dedicItem, count, ptr); ptr.getClass().getContainerStore(ptr).add(dedicItem, count, ptr);
for (MWWorld::ContainerStoreIterator it2 = invStore.begin(); it2 != invStore.end(); ++it2) for (const auto &ptr : invStore)
{ {
if (::Misc::StringUtils::ciEqual(it2->getCellRef().getRefId(), dedicItem)) // equip item if (::Misc::StringUtils::ciEqual(ptr.getCellRef().getRefId(), dedicItem)) // equip item
{ {
std::shared_ptr<MWWorld::Action> action = it2->getClass().use(*it2); std::shared_ptr<MWWorld::Action> action = ptr.getClass().use(ptr);
action->execute(ptr); action->execute(this->ptr);
break; break;
} }
} }

Loading…
Cancel
Save