1
0
mirror of https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git synced 2025-07-20 04:09:16 +00:00

Disabled avatar updates

Only update disabled avatars between steps if in a subworld and then don't interpolate their position.
This commit is contained in:
Skoader
2012-10-26 17:36:04 +11:00
parent 32ba4e06e2
commit d02cde1703

View File

@ -195,20 +195,37 @@ void plPhysicalControllerCore::IUpdateNonPhysical(hsScalar alpha)
const hsMatrix44& l2w = so->GetCoordinateInterface()->GetLocalToWorld(); const hsMatrix44& l2w = so->GetCoordinateInterface()->GetLocalToWorld();
if (CompareMatrices(fLastGlobalLoc, l2w, 0.0001f)) if (CompareMatrices(fLastGlobalLoc, l2w, 0.0001f))
{ {
hsVector3 displacement = (hsVector3)(fLocalPosition - fLastLocalPosition); if (fEnabled)
hsPoint3 interpLocalPos = fLastLocalPosition + (displacement * alpha);
fLocalRotation.MakeMatrix(&fLastGlobalLoc);
fLastGlobalLoc.SetTranslate(&interpLocalPos);
const plCoordinateInterface* subworldCI = GetSubworldCI();
if (subworldCI)
{ {
const hsMatrix44& subL2W = subworldCI->GetLocalToWorld(); hsVector3 displacement = (hsVector3)(fLocalPosition - fLastLocalPosition);
fLastGlobalLoc = subL2W * fLastGlobalLoc; hsPoint3 interpLocalPos = fLastLocalPosition + (displacement * alpha);
fPrevSubworldW2L = subworldCI->GetWorldToLocal();
}
ISendCorrectionMessages(); fLocalRotation.MakeMatrix(&fLastGlobalLoc);
fLastGlobalLoc.SetTranslate(&interpLocalPos);
const plCoordinateInterface* subworldCI = GetSubworldCI();
if (subworldCI)
{
const hsMatrix44& subL2W = subworldCI->GetLocalToWorld();
fLastGlobalLoc = subL2W * fLastGlobalLoc;
fPrevSubworldW2L = subworldCI->GetWorldToLocal();
}
ISendCorrectionMessages();
}
else
{
// Update global location if in a subworld
const plCoordinateInterface* subworldCI = GetSubworldCI();
if (subworldCI)
{
hsMatrix44 l2s = fPrevSubworldW2L * fLastGlobalLoc;
const hsMatrix44& subL2W = subworldCI->GetLocalToWorld();
fLastGlobalLoc = subL2W * l2s;
fPrevSubworldW2L = subworldCI->GetWorldToLocal();
ISendCorrectionMessages();
}
}
} }
} }