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.
93 lines
2.8 KiB
93 lines
2.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose: Data and functionality for the logical 2D view
|
|
//
|
|
//===========================================================================//
|
|
|
|
#ifndef MAPVIEWLOGICAL_H
|
|
#define MAPVIEWLOGICAL_H
|
|
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "MapView2DBase.h"
|
|
#include "tier1/utlrbtree.h"
|
|
#include "tier1/utlstack.h"
|
|
|
|
class CWnd;
|
|
class CView;
|
|
class CMapAtom;
|
|
class CMapClass;
|
|
class CMapDoc;
|
|
class CCamera;
|
|
class CTitleWnd;
|
|
class CEntityConnection;
|
|
|
|
|
|
class CMapViewLogical : public CMapView2DBase
|
|
{
|
|
public:
|
|
// Other public methods
|
|
virtual void Render();
|
|
|
|
protected:
|
|
CMapViewLogical(); // protected constructor used by dynamic creation
|
|
virtual ~CMapViewLogical();
|
|
DECLARE_DYNCREATE(CMapViewLogical)
|
|
|
|
virtual bool IsLogical() { return true; }
|
|
virtual void OnRenderListDirty();
|
|
|
|
// convert client view space to map world coordinates (2D versions for convenience)
|
|
void WorldToClient( Vector2D &ptClient, const Vector2D &vWorld );
|
|
void ClientToWorld( Vector2D &vWorld, const Vector2D &vClient );
|
|
virtual void WorldToClient( Vector2D &ptClient, const Vector &vWorld );
|
|
virtual void ClientToWorld( Vector &vWorld, const Vector2D &vClient );
|
|
|
|
// Performs a selection which selects an object at the point as well as entities connected to outputs.
|
|
bool SelectAtCascading( const Vector2D &ptClient, bool bMakeFirst );
|
|
|
|
private:
|
|
// timer IDs:
|
|
enum
|
|
{
|
|
TIMER_CONNECTIONUPDATE = 2,
|
|
};
|
|
|
|
typedef CUtlRBTree<CMapClass*, unsigned short> MapClassDict_t;
|
|
|
|
// Purpose: Builds up list of mapclasses to render
|
|
void AddToRenderLists( CMapClass *pObject );
|
|
void PopulateConnectionList( );
|
|
|
|
// Purpose:
|
|
void RenderConnections(const bool bDrawSelected, const bool bAnySelected);
|
|
|
|
// Draws a wire from a particular point to a target
|
|
const color32 & GetWireColor(const char *pszName, const bool bSelected, const bool bBroken, const bool bAnySelected );
|
|
void DrawConnectingWire( float x, float y, CMapEntity *pSource, CEntityConnection *pConnection, CMapEntity *pTarget );
|
|
|
|
bool m_bUpdateRenderObjects; // Should I build a list of things to render?
|
|
CUtlVector<CMapClass *> m_RenderList; // list of current rendered objects
|
|
CUtlVector<CMapClass *> m_ConnectionList; // list of all objects which are in the render list of have connections to something in the renderlist
|
|
CUtlStack<CMapClass *> m_ConnectionUpdate; // for iteratively determining connectivity
|
|
MapClassDict_t m_RenderDict;
|
|
|
|
// Overrides
|
|
// ClassWizard generated virtual function overrides
|
|
//{{AFX_VIRTUAL(CMapView2D)
|
|
protected:
|
|
virtual void OnInitialUpdate(); // first time after construct
|
|
//}}AFX_VIRTUAL
|
|
|
|
// Generated message map functions
|
|
//{{AFX_MSG(CMapView2D)
|
|
afx_msg void OnTimer(UINT nIDEvent);
|
|
//}}AFX_MSG
|
|
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
|
|
|
|
#endif // MAPVIEWLOGICAL_H
|