DragonNest/GameCommon/DnTerrainLinearOrbit.cpp

47 lines
1.3 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
#include "StdAfx.h"
#include "DnTerrainLinearOrbit.h"
#include "DnWorld.h"
#include "DnProjectile.h"
CDnTerrainLinearOrbit::CDnTerrainLinearOrbit( const S_PROJECTILE_PROPERTY* pProjectileInfo ) : m_fSpeed( 0.0f ), m_bFirstProcess( false )
{
m_fSpeed = pProjectileInfo->fSpeed;
m_bFirstProcess = true;
}
CDnTerrainLinearOrbit::~CDnTerrainLinearOrbit( void )
{
}
void CDnTerrainLinearOrbit::ProcessOrbit( /*IN OUT*/ MatrixEx& Cross, EtVector3& vPrevPos, LOCAL_TIME LocalTime, float fDelta )
{
// 2009.7.30 <20>ѱ<EFBFBD>
// <20>ٸ<EFBFBD><D9B8><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> y <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//EtVector3 vPrevPos = Cross.m_vPosition;
if( m_bFirstProcess )
{
Cross.m_vZAxis.y = 0.0f;
EtVec3Normalize( &Cross.m_vZAxis, &Cross.m_vZAxis );
Cross.MakeUpCartesianByZAxis();
m_bFirstProcess = false;
}
Cross.m_vPosition += Cross.m_vZAxis * ( fDelta * m_fSpeed );
#ifdef _GAMESERVER
Cross.m_vPosition.y = CDnWorld::GetInstance(m_pRoom).GetHeightWithProp( Cross.m_vPosition );
#else
Cross.m_vPosition.y = CDnWorld::GetInstance().GetHeightWithProp( Cross.m_vPosition );
#endif
Cross.m_vPosition.y += 20.0f;
//RLKT try fix cleric Judgement Hammer 17.06.2016
//Cross.m_vZAxis = Cross.m_vPosition - vPrevPos;
//EtVec3Normalize( &Cross.m_vZAxis, &Cross.m_vZAxis );
Cross.MakeUpCartesianByZAxis();
}