spritebase.cpp

来自「RGA: Biowaste Game Example This C++ app」· C++ 代码 · 共 92 行

CPP
92
字号

#include "SpriteBase.h"

CSpriteBase::CSpriteBase(CApplicationBase& aApp)
	:	iApp(aApp)
	{
	}

CSpriteBase::~CSpriteBase()
	{

	}
		
void CSpriteBase::SetPosition(const TVector2& aPos)
	{
	iPos = aPos;
	}

void CSpriteBase::SetDirection(const TVector2& aDir)
	{
	iDir = aDir;
	}

void CSpriteBase::SetAcceleration(const TVector2& aAcc)
	{
	iAcc = aAcc;
	}

void CSpriteBase::Update(const TReal64 aFrametime)
	{
	// add direction to position
	iPos.iX += iDir.iX * aFrametime;
	iPos.iY += iDir.iY * aFrametime;
	
	// add acceleration to direction
	iDir.iX += iAcc.iX * aFrametime;
	iDir.iY += iAcc.iY * aFrametime;
	}


void CSpriteBase::SetSize(const TSize& aSize)
	{
	iSize = aSize;
	}

TSize CSpriteBase::Size() const
	{
	return iSize;
	}

TBool CSpriteBase::IsVisible(const TVector2& /*aCamera*/) const
	{
	return ETrue;
	}


TBool CSpriteBase::Collision(CSpriteBase& aSprite) const
	{
	// compute squared distance between sprites
	TVector2 tmp = TVector2(iPos.iX - aSprite.iPos.iX, iPos.iY - aSprite.iPos.iY);
	const TUint64 distancesq = (TUint64)tmp.LengthSq();
	const TUint64 mindistance = ((iSize.iWidth >> 1) + (aSprite.iSize.iWidth >> 1));
	
	// compare squared lengths
	if ( distancesq < (mindistance * mindistance) )
		{
		return ETrue;
		}
	else
		{
		return EFalse;
		}
	}



CApplicationBase& CSpriteBase::App()
	{
	return iApp;
	}

void CSpriteBase::SetId(TUint32 aId)
	{
	iId = aId;
	}

TUint32 CSpriteBase::Id() const
	{
	return iId;
	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?