530 lines
19 KiB
C++
530 lines
19 KiB
C++
|
#include "StdAfx.h"
|
||
|
#include "MapOutdoor.h"
|
||
|
|
||
|
void CMapOutdoor::SetIndexBuffer()
|
||
|
{
|
||
|
void * pIndices;
|
||
|
long x, y;
|
||
|
|
||
|
DWORD dwIndexNum = TERRAIN_PATCHSIZE * TERRAIN_PATCHSIZE * 4;
|
||
|
|
||
|
#ifdef WORLD_EDITOR
|
||
|
m_pwIndices = new WORD[dwIndexNum];
|
||
|
if (!m_pwIndices)
|
||
|
TraceError("CMapOutdoor::SetIndexBuffer() IndexBuffer is NULL");
|
||
|
|
||
|
memset(m_pwIndices, 0, sizeof(WORD) * dwIndexNum);
|
||
|
if (!m_IndexBuffer.Create(dwIndexNum, D3DFMT_INDEX16))
|
||
|
TraceError("CMapOutdoor::SetIndexBuffer() IndexBuffer Create Error");
|
||
|
|
||
|
WORD count = 0;
|
||
|
WORD count2 = 0;
|
||
|
long ry = 0;
|
||
|
|
||
|
BYTE ucNumLineWarp = TERRAIN_PATCHSIZE + 1;
|
||
|
|
||
|
for (y = 0; y < TERRAIN_PATCHSIZE; y++)
|
||
|
{
|
||
|
if (ry % 2 == 0)
|
||
|
{
|
||
|
m_pwIndices[count++] = count2;
|
||
|
m_pwIndices[count++] = count2+ucNumLineWarp;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_pwIndices[count++] = count2+ucNumLineWarp;
|
||
|
m_pwIndices[count++] = count2;
|
||
|
}
|
||
|
|
||
|
for (x = 0; x < TERRAIN_PATCHSIZE; x++)
|
||
|
{
|
||
|
if (ry % 2 == 1)
|
||
|
{
|
||
|
m_pwIndices[count++] = (WORD) (count2+ucNumLineWarp-1);
|
||
|
m_pwIndices[count++] = (WORD) (count2-1);
|
||
|
count2 -= (short) 1;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_pwIndices[count++] = (WORD) (count2+1);
|
||
|
m_pwIndices[count++] = (WORD) (count2+ucNumLineWarp+1);
|
||
|
count2 += (short) 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (y < TERRAIN_PATCHSIZE-1)
|
||
|
{
|
||
|
m_pwIndices[count++] = (WORD) (count2+ucNumLineWarp);
|
||
|
m_pwIndices[count++] = (WORD) (count2+ucNumLineWarp);
|
||
|
count2 += ucNumLineWarp;
|
||
|
}
|
||
|
ry++;
|
||
|
}
|
||
|
|
||
|
m_wNumIndices = count;
|
||
|
if (!m_IndexBuffer.Lock((void **) &pIndices))
|
||
|
TraceError("CMapOutdoor::SetIndexBuffer() IndexBuffer Unlock Error");
|
||
|
memcpy(pIndices, m_pwIndices, count * sizeof(WORD));
|
||
|
m_IndexBuffer.Unlock();
|
||
|
|
||
|
delete [] m_pwIndices;
|
||
|
m_pwIndices = NULL;
|
||
|
#else
|
||
|
WORD count[TERRAINPATCH_LODMAX], count2[TERRAINPATCH_LODMAX];
|
||
|
BYTE uci;
|
||
|
for (uci = 0; uci < TERRAINPATCH_LODMAX; ++uci)
|
||
|
{
|
||
|
m_pwaIndices[uci] = new WORD[dwIndexNum];
|
||
|
memset(m_pwaIndices[uci], 0, sizeof(WORD) * dwIndexNum);
|
||
|
count[uci] = 0;
|
||
|
count2[uci] = 0;
|
||
|
if ( !m_IndexBuffer[uci].Create(dwIndexNum, D3DFMT_INDEX16) )
|
||
|
TraceError("CMapOutdoor::SetIndexBuffer() IndexBuffer Create Error");
|
||
|
}
|
||
|
|
||
|
BYTE ucNumLineWarp = TERRAIN_PATCHSIZE + 1;
|
||
|
|
||
|
for (y = 0; y < TERRAIN_PATCHSIZE; y++)
|
||
|
{
|
||
|
if (y%2 == 0)
|
||
|
{
|
||
|
m_pwaIndices[0][(count[0])++] = count2[0];
|
||
|
m_pwaIndices[0][(count[0])++] = count2[0]+ucNumLineWarp;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_pwaIndices[0][(count[0])++] = count2[0]+ucNumLineWarp;
|
||
|
m_pwaIndices[0][(count[0])++] = count2[0];
|
||
|
}
|
||
|
|
||
|
for (x = 0; x < TERRAIN_PATCHSIZE; x++)
|
||
|
{
|
||
|
if (y%2 == 0)
|
||
|
{
|
||
|
m_pwaIndices[0][(count[0])++] = (WORD) (count2[0]+1);
|
||
|
m_pwaIndices[0][(count[0])++] = (WORD) (count2[0]+ucNumLineWarp+1);
|
||
|
count2[0] += (short) 1;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_pwaIndices[0][(count[0])++] = (WORD) (count2[0]+ucNumLineWarp-1);
|
||
|
m_pwaIndices[0][(count[0])++] = (WORD) (count2[0]-1);
|
||
|
count2[0] -= (short) 1;
|
||
|
}
|
||
|
|
||
|
if (0 == x%2)
|
||
|
{
|
||
|
if (0 == y)
|
||
|
{
|
||
|
if (0 == x)
|
||
|
ADDLvl1TL(m_pwaIndices[1], count[1], count2[1], ucNumLineWarp);
|
||
|
else if ((TERRAIN_PATCHSIZE - 2) == x)
|
||
|
ADDLvl1TR(m_pwaIndices[1], count[1], count2[1], ucNumLineWarp);
|
||
|
else
|
||
|
ADDLvl1T(m_pwaIndices[1], count[1], count2[1], ucNumLineWarp);
|
||
|
}
|
||
|
else if ((TERRAIN_PATCHSIZE - 2) == y)
|
||
|
{
|
||
|
if (0 == x)
|
||
|
ADDLvl1BL(m_pwaIndices[1], count[1], count2[1], ucNumLineWarp);
|
||
|
else if ((TERRAIN_PATCHSIZE - 2) == x)
|
||
|
ADDLvl1BR(m_pwaIndices[1], count[1], count2[1], ucNumLineWarp);
|
||
|
else
|
||
|
ADDLvl1B(m_pwaIndices[1], count[1], count2[1], ucNumLineWarp);
|
||
|
}
|
||
|
else if (0 == y%2)
|
||
|
{
|
||
|
if (0 == x)
|
||
|
ADDLvl1L(m_pwaIndices[1], count[1], count2[1], ucNumLineWarp);
|
||
|
else if ((TERRAIN_PATCHSIZE - 2) == x)
|
||
|
ADDLvl1R(m_pwaIndices[1], count[1], count2[1], ucNumLineWarp);
|
||
|
else
|
||
|
ADDLvl1M(m_pwaIndices[1], count[1], count2[1], ucNumLineWarp);
|
||
|
}
|
||
|
count2[1] += 2;
|
||
|
}
|
||
|
|
||
|
if (0 == x%4)
|
||
|
{
|
||
|
if (0 == y)
|
||
|
{
|
||
|
if (0 == x)
|
||
|
ADDLvl2TL(m_pwaIndices[2], count[2], count2[2], ucNumLineWarp);
|
||
|
else if ((TERRAIN_PATCHSIZE - 4) == x)
|
||
|
ADDLvl2TR(m_pwaIndices[2], count[2], count2[2], ucNumLineWarp);
|
||
|
else
|
||
|
ADDLvl2T(m_pwaIndices[2], count[2], count2[2], ucNumLineWarp);
|
||
|
}
|
||
|
else if ((TERRAIN_PATCHSIZE - 4) == y)
|
||
|
{
|
||
|
if (0 == x)
|
||
|
ADDLvl2BL(m_pwaIndices[2], count[2], count2[2], ucNumLineWarp);
|
||
|
else if ((TERRAIN_PATCHSIZE - 4) == x)
|
||
|
ADDLvl2BR(m_pwaIndices[2], count[2], count2[2], ucNumLineWarp);
|
||
|
else
|
||
|
ADDLvl2B(m_pwaIndices[2], count[2], count2[2], ucNumLineWarp);
|
||
|
}
|
||
|
else if (0 == y%4)
|
||
|
{
|
||
|
if (0 == x)
|
||
|
ADDLvl2L(m_pwaIndices[2], count[2], count2[2], ucNumLineWarp);
|
||
|
else if ((TERRAIN_PATCHSIZE - 4) == x)
|
||
|
ADDLvl2R(m_pwaIndices[2], count[2], count2[2], ucNumLineWarp);
|
||
|
else
|
||
|
ADDLvl2M(m_pwaIndices[2], count[2], count2[2], ucNumLineWarp);
|
||
|
}
|
||
|
count2[2] += 4;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (y < TERRAIN_PATCHSIZE-1)
|
||
|
{
|
||
|
m_pwaIndices[0][(count[0])++] = (WORD) (count2[0]+ucNumLineWarp);
|
||
|
m_pwaIndices[0][(count[0])++] = (WORD) (count2[0]+ucNumLineWarp);
|
||
|
count2[0] += ucNumLineWarp;
|
||
|
if (0 == y%2)
|
||
|
count2[1] += 2;
|
||
|
if (0 == y%4)
|
||
|
count2[2] += 4;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for (uci = 0; uci < TERRAINPATCH_LODMAX; ++uci)
|
||
|
{
|
||
|
m_wNumIndices[uci] = count[uci];
|
||
|
if( !m_IndexBuffer[uci].Lock((void **) &pIndices) )
|
||
|
TraceError("CMapOutdoor::SetIndexBuffer() IndexBuffer Unlock Error");
|
||
|
memcpy(pIndices, m_pwaIndices[uci], count[uci] * sizeof(WORD));
|
||
|
m_IndexBuffer[uci].Unlock();
|
||
|
delete [] m_pwaIndices[uci];
|
||
|
m_pwaIndices[uci] = NULL;
|
||
|
}
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl1TL(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl1T(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl1TR(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl1L(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl1R(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl1BL(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl1B(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl1BR(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 1;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp + 1;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl1M(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl2TL(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
ADDLvl1TL(pIndices, rwCount, c_rwCurCount, c_rucNumLineWarp);
|
||
|
ADDLvl1T(pIndices, rwCount, c_rwCurCount + 2, c_rucNumLineWarp);
|
||
|
ADDLvl1L(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2, c_rucNumLineWarp);
|
||
|
ADDLvl1M(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2 + 2, c_rucNumLineWarp);
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl2T(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
ADDLvl1T(pIndices, rwCount, c_rwCurCount, c_rucNumLineWarp);
|
||
|
ADDLvl1T(pIndices, rwCount, c_rwCurCount + 2, c_rucNumLineWarp);
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4 + 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4 + 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl2TR(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
ADDLvl1T(pIndices, rwCount, c_rwCurCount, c_rucNumLineWarp);
|
||
|
ADDLvl1TR(pIndices, rwCount, c_rwCurCount + 2, c_rucNumLineWarp);
|
||
|
ADDLvl1M(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2, c_rucNumLineWarp);
|
||
|
ADDLvl1R(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2 + 2, c_rucNumLineWarp);
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl2L(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
ADDLvl1L(pIndices, rwCount, c_rwCurCount, c_rucNumLineWarp);
|
||
|
ADDLvl1L(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2, c_rucNumLineWarp);
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 4;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4 + 4;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4 + 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4 + 2;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl2R(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
ADDLvl1R(pIndices, rwCount, c_rwCurCount + 2, c_rucNumLineWarp);
|
||
|
ADDLvl1R(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2 + 2, c_rucNumLineWarp);
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4 + 2;
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl2BL(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
ADDLvl1L(pIndices, rwCount, c_rwCurCount, c_rucNumLineWarp);
|
||
|
ADDLvl1M(pIndices, rwCount, c_rwCurCount + 2, c_rucNumLineWarp);
|
||
|
ADDLvl1BL(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2, c_rucNumLineWarp);
|
||
|
ADDLvl1B(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2 + 2, c_rucNumLineWarp);
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl2B(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 4;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 2;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 2 + 4;
|
||
|
|
||
|
ADDLvl1B(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2, c_rucNumLineWarp);
|
||
|
ADDLvl1B(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2 + 2, c_rucNumLineWarp);
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl2BR(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
ADDLvl1M(pIndices, rwCount, c_rwCurCount, c_rucNumLineWarp);
|
||
|
ADDLvl1R(pIndices, rwCount, c_rwCurCount + 2, c_rucNumLineWarp);
|
||
|
ADDLvl1B(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2, c_rucNumLineWarp);
|
||
|
ADDLvl1BR(pIndices, rwCount, c_rwCurCount + c_rucNumLineWarp * 2 + 2, c_rucNumLineWarp);
|
||
|
}
|
||
|
|
||
|
void CMapOutdoor::ADDLvl2M(WORD * pIndices, WORD & rwCount, const WORD & c_rwCurCount, const BYTE & c_rucNumLineWarp)
|
||
|
{
|
||
|
pIndices[rwCount++] = c_rwCurCount;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 4;
|
||
|
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + c_rucNumLineWarp * 4 + 4;
|
||
|
pIndices[rwCount++] = c_rwCurCount + 4;
|
||
|
}
|