115 lines
2.0 KiB
C++
115 lines
2.0 KiB
C++
#include "StdAfx.h"
|
|
#include "FlyTarget.h"
|
|
|
|
CFlyTarget::CFlyTarget()
|
|
{
|
|
__Initialize();
|
|
}
|
|
|
|
CFlyTarget::CFlyTarget(IFlyTargetableObject * pFlyTarget)
|
|
{
|
|
__Initialize();
|
|
|
|
m_eType=TYPE_OBJECT;
|
|
m_pFlyTarget=pFlyTarget;
|
|
m_pFlyTarget->AddFlyTargeter(this);
|
|
}
|
|
CFlyTarget::CFlyTarget(const D3DXVECTOR3& v3FlyTargetPosition)
|
|
{
|
|
__Initialize();
|
|
|
|
m_eType=TYPE_POSITION;
|
|
m_v3FlyTargetPosition=v3FlyTargetPosition;
|
|
}
|
|
|
|
CFlyTarget::CFlyTarget(const CFlyTarget& rhs)
|
|
{
|
|
__Initialize();
|
|
|
|
*this = rhs;
|
|
}
|
|
|
|
CFlyTarget::~CFlyTarget()
|
|
{
|
|
if (m_pFlyTarget)
|
|
m_pFlyTarget->RemoveFlyTargeter(this);
|
|
}
|
|
|
|
void CFlyTarget::__Initialize()
|
|
{
|
|
m_v3FlyTargetPosition=D3DXVECTOR3(0.0f,0.0f,0.0f);
|
|
m_pFlyTarget=NULL;
|
|
m_eType=TYPE_NONE;
|
|
}
|
|
|
|
void CFlyTarget::Clear()
|
|
{
|
|
m_eType = TYPE_NONE;
|
|
m_pFlyTarget = 0;
|
|
}
|
|
|
|
bool CFlyTarget::IsObject()
|
|
{
|
|
return (TYPE_OBJECT==GetType());
|
|
}
|
|
|
|
bool CFlyTarget::IsPosition()
|
|
{
|
|
return (TYPE_POSITION==GetType());
|
|
}
|
|
|
|
bool CFlyTarget::IsValidTarget()
|
|
{
|
|
return (TYPE_NONE!=GetType());
|
|
}
|
|
|
|
void CFlyTarget::NotifyTargetClear()
|
|
{
|
|
//if (m_eType == FLY_TARGET_TYPE_OBJECT)
|
|
m_eType = TYPE_POSITION;
|
|
m_pFlyTarget = 0;
|
|
}
|
|
|
|
CFlyTarget::EType CFlyTarget::GetType()
|
|
{
|
|
return m_eType;
|
|
}
|
|
|
|
IFlyTargetableObject* CFlyTarget::GetFlyTarget()
|
|
{
|
|
assert(TYPE_OBJECT==GetType() && "CFly::GetFlyTarget");
|
|
return m_pFlyTarget;
|
|
}
|
|
|
|
const D3DXVECTOR3 & CFlyTarget::GetFlyTargetPosition() const
|
|
{
|
|
if (m_eType == TYPE_OBJECT)
|
|
{
|
|
m_v3FlyTargetPosition = m_pFlyTarget->OnGetFlyTargetPosition();
|
|
}
|
|
return m_v3FlyTargetPosition;
|
|
}
|
|
|
|
CFlyTarget & CFlyTarget::operator = (const CFlyTarget & rhs)
|
|
{
|
|
if (m_pFlyTarget)
|
|
{
|
|
m_pFlyTarget->RemoveFlyTargeter(this);
|
|
}
|
|
m_eType = rhs.m_eType;
|
|
m_v3FlyTargetPosition = rhs.m_v3FlyTargetPosition;
|
|
m_pFlyTarget = rhs.m_pFlyTarget;
|
|
if (m_pFlyTarget)
|
|
{
|
|
m_pFlyTarget->AddFlyTargeter(this);
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
void CFlyTarget::GetFlyTargetData(CFlyTarget * pFlyTarget)
|
|
{
|
|
pFlyTarget->m_eType = m_eType;
|
|
pFlyTarget->m_v3FlyTargetPosition = m_v3FlyTargetPosition;
|
|
pFlyTarget->m_pFlyTarget = m_pFlyTarget;
|
|
}
|