Files
FC1/CryAISystem/VertexList.cpp
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

82 lines
1.5 KiB
C++

#include "stdafx.h"
#include "vertexlist.h"
#include <ISystem.h>
#include <CryFile.h>
CVertexList::CVertexList(void)
{
m_vList.clear();
}
CVertexList::~CVertexList(void)
{
}
int CVertexList::AddVertex(const ObstacleData & od)
{
int index=FindVertex(od);
if (index<0)
{
m_vList.push_back(od);
index = (int)m_vList.size()-1;
}
return index;
}
int CVertexList::FindVertex(const ObstacleData & od)
{
Obstacles::iterator oi,oiend = m_vList.end();
int index=0;
for (oi=m_vList.begin();oi!=oiend;++oi,index++)
{
if ( (*oi) == od )
return index;
}
return -1;
}
const ObstacleData CVertexList::GetVertex(int index)
{
if ((index<0) || (index >= (int)(m_vList.size())))
CryError("[AISYSTEM] Tried to retrieve a non existing vertex from vertex list.Please regenerate the triangulation and re-export the map.");
return m_vList[index];
}
ObstacleData &CVertexList::ModifyVertex(int index)
{
if ((index<0) || (index >= (int)(m_vList.size())))
CryError("[AISYSTEM] Tried to retrieve a non existing vertex from vertex list.Please regenerate the triangulation and re-export the map.");
return m_vList[index];
}
void CVertexList::WriteToFile( CCryFile& file )
{
int iNumber = (int)m_vList.size();
file.Write( &iNumber, sizeof( int ) );
if (!iNumber)
return;
file.Write( &m_vList[ 0 ], iNumber * sizeof( ObstacleData ) );
}
void CVertexList::ReadFromFile( CCryFile &file )
{
int iNumber;
file.Read( &iNumber, sizeof(int) );
if (iNumber>0)
{
m_vList.resize(iNumber);
file.Read( &m_vList[0], iNumber*sizeof(ObstacleData) );
}
}