mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-05 22:09:59 +03:00
1
This commit is contained in:
105
hammer/mappath.h
Normal file
105
hammer/mappath.h
Normal file
@@ -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;
|
||||
};
|
||||
Reference in New Issue
Block a user