init
This commit is contained in:
529
src/GameLib/MapOutdoorIndexBuffer.cpp
Normal file
529
src/GameLib/MapOutdoorIndexBuffer.cpp
Normal file
@@ -0,0 +1,529 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user