//========= 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 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 m_RenderList; // list of current rendered objects CUtlVector m_ConnectionList; // list of all objects which are in the render list of have connections to something in the renderlist CUtlStack 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