forked from metin-server/m2dev-client-src
enable async loading, optimize rendering and distance checks
This commit is contained in:
@@ -640,6 +640,7 @@ class CInstanceBase
|
||||
float NEW_GetDistanceFromDirPixelPosition(const TPixelPosition& c_rkPPosDir);
|
||||
float NEW_GetDistanceFromDestPixelPosition(const TPixelPosition& c_rkPPosDst);
|
||||
float NEW_GetDistanceFromDestInstance(CInstanceBase& rkInstDst);
|
||||
float NEW_GetDistanceFromDestInstanceSquared(CInstanceBase& rkInstDst); // Optimized: no sqrt
|
||||
|
||||
float NEW_GetRotation();
|
||||
float NEW_GetRotationFromDestPixelPosition(const TPixelPosition& c_rkPPosDst);
|
||||
|
||||
@@ -91,6 +91,19 @@ float CInstanceBase::NEW_GetDistanceFromDirPixelPosition(const TPixelPosition& c
|
||||
return sqrtf(c_rkPPosDir.x*c_rkPPosDir.x+c_rkPPosDir.y*c_rkPPosDir.y);
|
||||
}
|
||||
|
||||
// Optimized: Get squared distance (avoid sqrt for comparisons)
|
||||
float CInstanceBase::NEW_GetDistanceFromDestInstanceSquared(CInstanceBase& rkInstDst)
|
||||
{
|
||||
TPixelPosition kPPosDst;
|
||||
rkInstDst.NEW_GetPixelPosition(&kPPosDst);
|
||||
|
||||
TPixelPosition kPPosCur;
|
||||
NEW_GetPixelPosition(&kPPosCur);
|
||||
|
||||
TPixelPosition kPPosDir = kPPosDst - kPPosCur;
|
||||
return kPPosDir.x * kPPosDir.x + kPPosDir.y * kPPosDir.y;
|
||||
}
|
||||
|
||||
float CInstanceBase::NEW_GetRotation()
|
||||
{
|
||||
float fCurRot=GetRotation();
|
||||
|
||||
@@ -178,8 +178,10 @@ void CPythonCharacterManager::Update()
|
||||
continue;
|
||||
}
|
||||
|
||||
int nDistance = int(pkInstEach->NEW_GetDistanceFromDestInstance(*pkInstMain));
|
||||
if (nDistance > CHAR_STAGE_VIEW_BOUND + 10)
|
||||
// Optimized: Use squared distance to avoid sqrt
|
||||
float fDistanceSquared = pkInstEach->NEW_GetDistanceFromDestInstanceSquared(*pkInstMain);
|
||||
const float fViewBoundSquared = (CHAR_STAGE_VIEW_BOUND + 10) * (CHAR_STAGE_VIEW_BOUND + 10);
|
||||
if (fDistanceSquared > fViewBoundSquared)
|
||||
{
|
||||
__DeleteBlendOutInstance(pkInstEach);
|
||||
m_kAliveInstMap.erase(c);
|
||||
|
||||
Reference in New Issue
Block a user