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 © 1996-2005, 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) { strcpy(m_szName, pszName); }
|
|
LPCTSTR GetName() { return m_szName; }
|
|
void SetClass(LPCTSTR pszClass) { strcpy(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;
|
|
};
|