129 lines
2.4 KiB
C++
129 lines
2.4 KiB
C++
#include "StdAfx.h"
|
|
#include "ActorInstance.h"
|
|
|
|
void CActorInstance::SetXYRotation(float fRotX, float fRotY)
|
|
{
|
|
m_rotX = fRotX;
|
|
m_rotY = fRotY;
|
|
}
|
|
|
|
void CActorInstance::SetRotation(float fRot)
|
|
{
|
|
if (m_pkHorse)
|
|
m_pkHorse->SetRotation(fRot);
|
|
|
|
m_fcurRotation = fRot;
|
|
m_rotBegin = m_fcurRotation;
|
|
m_rotEnd = m_fcurRotation;
|
|
|
|
m_rotBlendTime = 0.0f;
|
|
m_rotBeginTime = 0.0f;
|
|
m_rotEndTime = 0.0f;
|
|
|
|
m_bNeedUpdateCollision = TRUE;
|
|
}
|
|
|
|
void CActorInstance::BlendRotation(float fRot, float fBlendTime)
|
|
{
|
|
if (m_pkHorse)
|
|
m_pkHorse->BlendRotation(fRot, fBlendTime);
|
|
|
|
if (m_fcurRotation == fRot)
|
|
return;
|
|
|
|
m_rotBegin = fmod(m_fcurRotation, 360.0f);
|
|
m_rotEnd = fRot;
|
|
|
|
m_rotBlendTime = fBlendTime;
|
|
m_rotBeginTime = GetLocalTime();
|
|
m_rotEndTime = m_rotBeginTime + m_rotBlendTime;
|
|
}
|
|
|
|
void CActorInstance::SetAdvancingRotation(float fRot)
|
|
{
|
|
if (m_pkHorse)
|
|
m_pkHorse->SetAdvancingRotation(fRot);
|
|
|
|
m_fAdvancingRotation = fRot;
|
|
}
|
|
|
|
void CActorInstance::RotationProcess()
|
|
{
|
|
if (m_pkHorse)
|
|
m_pkHorse->RotationProcess();
|
|
|
|
if (GetLocalTime() < m_rotEndTime)
|
|
{
|
|
m_fcurRotation = GetInterpolatedRotation(m_rotBegin, m_rotEnd, (GetLocalTime() - m_rotBeginTime) / m_rotBlendTime);
|
|
SetAdvancingRotation(m_fcurRotation);
|
|
}
|
|
else
|
|
{
|
|
m_fcurRotation = m_rotEnd;
|
|
}
|
|
|
|
// FIXME : "건물일때만 체크"로 바꾼다. - [levites]
|
|
if (0.0f != m_rotX || 0.0f != m_rotY)
|
|
{
|
|
CGraphicObjectInstance::SetRotation(m_rotX, m_rotY, m_fcurRotation);
|
|
}
|
|
else
|
|
{
|
|
CGraphicObjectInstance::SetRotation(m_fcurRotation);
|
|
}
|
|
}
|
|
|
|
void CActorInstance::LookAtFromXY(float x, float y, CActorInstance * pDestInstance)
|
|
{
|
|
float rot = GetDegreeFromPosition2(pDestInstance->m_x,
|
|
pDestInstance->m_y,
|
|
x,
|
|
y);
|
|
|
|
LookAt(rot);
|
|
}
|
|
|
|
void CActorInstance::LookAt(float fDirRot)
|
|
{
|
|
BlendRotation(fDirRot, 0.3f);
|
|
}
|
|
|
|
void CActorInstance::LookAt(float fx, float fy)
|
|
{
|
|
float rot = GetDegreeFromPosition2(m_x, m_y, fx, fy);
|
|
|
|
LookAt(rot);
|
|
}
|
|
|
|
void CActorInstance::LookAt(CActorInstance * pInstance)
|
|
{
|
|
TPixelPosition PixelPosition;
|
|
pInstance->GetPixelPosition(&PixelPosition);
|
|
LookAt(PixelPosition.x, PixelPosition.y);
|
|
}
|
|
|
|
void CActorInstance::LookWith(CActorInstance * pInstance)
|
|
{
|
|
BlendRotation(pInstance->m_rotEnd, 0.3f);
|
|
}
|
|
|
|
float CActorInstance::GetRotation()
|
|
{
|
|
return m_fcurRotation;
|
|
}
|
|
|
|
float CActorInstance::GetTargetRotation()
|
|
{
|
|
return m_rotEnd;
|
|
}
|
|
|
|
float CActorInstance::GetRotatingTime()
|
|
{
|
|
return m_rotEndTime;
|
|
}
|
|
|
|
float CActorInstance::GetAdvancingRotation()
|
|
{
|
|
return m_fAdvancingRotation;
|
|
}
|