You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.1 KiB
105 lines
2.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#pragma once |
|
|
|
#pragma warning(push, 1) |
|
#pragma warning(disable:4701 4702 4530) |
|
#include <fstream> |
|
#pragma warning(pop) |
|
#include "fgdlib/WCKeyValues.h" |
|
#include "mathlib/vector.h" |
|
|
|
class BoundBox; |
|
class CMapEntity; |
|
class Path3D; |
|
|
|
|
|
class CMapPathNode |
|
{ |
|
public: |
|
|
|
CMapPathNode(); |
|
CMapPathNode(const CMapPathNode& src); |
|
|
|
char szName[128]; // if blank, use default |
|
|
|
Vector pos; |
|
DWORD dwID; |
|
BOOL bSelected; |
|
|
|
char szTargets[2][128]; // resolved when saving to map - not used otherwise |
|
int nTargets; |
|
|
|
// other values |
|
WCKeyValues kv; |
|
|
|
CMapPathNode& operator=(const CMapPathNode& src); |
|
}; |
|
|
|
|
|
class CMapPath |
|
{ |
|
friend Path3D; |
|
|
|
public: |
|
|
|
CMapPath(); |
|
~CMapPath(); |
|
|
|
enum |
|
{ |
|
ADD_START = 0xfffffff0L, |
|
ADD_END = 0xfffffff1L |
|
}; |
|
|
|
DWORD AddNode(DWORD dwAfterID, const Vector &vecPos); |
|
void DeleteNode(DWORD dwID); |
|
void SetNodePosition(DWORD dwID, Vector& pt); |
|
CMapPathNode * NodeForID(DWORD dwID, int* piIndex = NULL); |
|
void GetNodeName(int iIndex, int iName, CString& str); |
|
|
|
// set name/class |
|
void SetName(LPCTSTR pszName) { V_strcpy_safe(m_szName, pszName); } |
|
LPCTSTR GetName() { return m_szName; } |
|
void SetClass(LPCTSTR pszClass) { V_strcpy_safe(m_szClass, pszClass); } |
|
LPCTSTR GetClass() { return m_szClass; } |
|
|
|
void EditInfo(); |
|
|
|
// save/load to/from RMF: |
|
void SerializeRMF(std::fstream&, BOOL fIsStoring); |
|
// save to map: (no load!!) |
|
void SerializeMAP(std::fstream&, BOOL fIsStoring, BoundBox *pIntersecting = NULL); |
|
|
|
//void SaveVMF(CChunkFile *pFile, CSaveInfo *pSaveInfo); |
|
//void LoadVMF(CChunkFile *pFile); |
|
|
|
CMapEntity *CreateEntityForNode(DWORD dwNodeID); |
|
void CopyNodeFromEntity(DWORD dwNodeID, CMapEntity *pEntity); |
|
|
|
// directions |
|
enum |
|
{ |
|
dirOneway, |
|
dirCircular, |
|
dirPingpong |
|
}; |
|
|
|
int GetNodeCount() { return m_Nodes.Count(); } |
|
|
|
private: |
|
|
|
// nodes + number of: |
|
CUtlVector<CMapPathNode> m_Nodes; |
|
|
|
DWORD GetNewNodeID(); |
|
|
|
// name: |
|
char m_szName[128]; |
|
char m_szClass[128]; |
|
int m_iDirection; |
|
};
|
|
|