diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /hammer/mappath.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'hammer/mappath.h')
| -rw-r--r-- | hammer/mappath.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/hammer/mappath.h b/hammer/mappath.h new file mode 100644 index 0000000..53992ad --- /dev/null +++ b/hammer/mappath.h @@ -0,0 +1,105 @@ +//========= 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; +}; |