1
0
forked from 0ad/0ad
0ad/source/graphics/Patch.cpp

68 lines
1.4 KiB
C++
Raw Normal View History

/**
* =========================================================================
* File : Patch.cpp
* Project : 0 A.D.
* Description : A patch of terrain holding NxN MiniPatch tiles
* =========================================================================
*/
#include "precompiled.h"
#include "Patch.h"
#include "Terrain.h"
///////////////////////////////////////////////////////////////////////////////
// CPatch constructor
CPatch::CPatch()
: m_Parent(0), m_bWillBeDrawn(false)
{
}
///////////////////////////////////////////////////////////////////////////////
// CPatch destructor
CPatch::~CPatch()
{
2007-05-06 09:58:16 +02:00
}
///////////////////////////////////////////////////////////////////////////////
// Initialize: setup patch data
void CPatch::Initialize(CTerrain* parent,u32 x,u32 z)
{
delete m_RenderData;
m_RenderData=0;
m_Parent=parent;
m_X=x;
m_Z=z;
// set parent of each patch
for (int j=0;j<PATCH_SIZE;j++)
{
for (int i=0;i<PATCH_SIZE;i++)
{
m_MiniPatches[j][i].m_Parent=this;
}
}
InvalidateBounds();
}
///////////////////////////////////////////////////////////////////////////////
// CalcBounds: calculating the bounds of this patch
void CPatch::CalcBounds()
{
m_Bounds.SetEmpty();
for (int j=0;j<PATCH_SIZE+1;j++)
{
for (int i=0;i<PATCH_SIZE+1;i++)
{
CVector3D pos;
m_Parent->CalcPosition(m_X*PATCH_SIZE+i,m_Z*PATCH_SIZE+j,pos);
m_Bounds+=pos;
}
}
}