1
This commit is contained in:
113
hammer/mapview.h
Normal file
113
hammer/mapview.h
Normal file
@ -0,0 +1,113 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose: Data and functionality common to 2D and 3D views.
|
||||
//
|
||||
//===========================================================================//
|
||||
|
||||
#ifndef MAPVIEW_H
|
||||
#define MAPVIEW_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
class CWnd;
|
||||
class CView;
|
||||
class CMapAtom;
|
||||
class CMapClass;
|
||||
class CMapDoc;
|
||||
class CCamera;
|
||||
class CToolManager;
|
||||
|
||||
#include "mathlib/vector.h"
|
||||
|
||||
//
|
||||
// Maximum number of hits that can be returned by ObjectsAt.
|
||||
//
|
||||
#define MAX_PICK_HITS 512
|
||||
|
||||
typedef struct HitInfo_s HitInfo_t;
|
||||
|
||||
|
||||
enum DrawType_t
|
||||
{
|
||||
VIEW_INVALID = -1,
|
||||
VIEW2D_XY = 0,
|
||||
VIEW2D_YZ,
|
||||
VIEW2D_XZ,
|
||||
|
||||
VIEW3D_WIREFRAME,
|
||||
VIEW3D_POLYGON,
|
||||
VIEW3D_TEXTURED,
|
||||
VIEW3D_LIGHTMAP_GRID,
|
||||
VIEW3D_SMOOTHING_GROUP,
|
||||
VIEW3D_ENGINE,
|
||||
VIEW3D_TEXTURED_SHADED,
|
||||
|
||||
VIEW_LOGICAL,
|
||||
|
||||
VIEW3D_LIGHTING_PREVIEW2,
|
||||
VIEW3D_LIGHTING_PREVIEW_RAYTRACED,
|
||||
// Must be last!
|
||||
VIEW_TYPE_LAST
|
||||
};
|
||||
|
||||
|
||||
#define FLAG_OBJECTS_AT_RESOLVE_INSTANCES 0x0000001
|
||||
#define FLAG_OBJECTS_AT_ONLY_SOLIDS 0x0000002
|
||||
|
||||
|
||||
class CMapView
|
||||
{
|
||||
public:
|
||||
|
||||
CMapView(void);
|
||||
|
||||
virtual void ActivateView(bool bActivate);
|
||||
inline bool IsActive(void) { return(m_bActive); }
|
||||
bool IsOrthographic();
|
||||
|
||||
virtual void SetDrawType(DrawType_t eDrawType) { m_eDrawType = eDrawType; }
|
||||
virtual DrawType_t GetDrawType(void) { return m_eDrawType; }
|
||||
|
||||
// virtual CMapClass *ObjectAt(POINT ptClient, ULONG &ulFace) = 0;
|
||||
|
||||
virtual void ProcessInput() = 0; // do input update
|
||||
virtual void RenderView() = 0; // render view NOW, called usually by framework
|
||||
virtual void UpdateView( int nFlags ); // something changed, render this view with the next frame
|
||||
virtual bool ShouldRender(); // let view decide if it wants to render or not
|
||||
|
||||
virtual CWnd *GetViewWnd() = 0;
|
||||
virtual CMapDoc *GetMapDoc() = 0;
|
||||
|
||||
// get axis we look along
|
||||
virtual const Vector &GetViewAxis();
|
||||
void SetCamera(const Vector &vecPos, const Vector &vecLookAt);
|
||||
CCamera *GetCamera() { return m_pCamera; }
|
||||
|
||||
// convert client view space to map world coordinates
|
||||
// general rule: float = world, int = client view
|
||||
virtual void WorldToClient(Vector2D &ptClient, const Vector &vWorld) = 0;
|
||||
virtual void ClientToWorld(Vector &vWorld, const Vector2D &vClient ) = 0;
|
||||
virtual void BuildRay( const Vector2D &ptClient, Vector& vStart, Vector& vEnd );
|
||||
virtual int ObjectsAt( const Vector2D &ptClient, HitInfo_t *pObjects, int nMaxObjects, unsigned int nFlags = 0 ) = 0;
|
||||
virtual bool HitTest( const Vector2D &ptClient, const Vector& mins, const Vector& maxs ) = 0;
|
||||
virtual void GetBestTransformPlane( Vector &horzAxis, Vector &vertAxis, Vector &thirdAxis) = 0;
|
||||
|
||||
bool SelectAt(const Vector2D &ptClient, bool bMakeFirst, bool bFace);
|
||||
|
||||
|
||||
|
||||
// protected:
|
||||
|
||||
bool m_bActive;
|
||||
bool m_bUpdateView;
|
||||
DrawType_t m_eDrawType;
|
||||
unsigned int m_dwTimeLastRender;
|
||||
CCamera *m_pCamera; // Defines the camera position and settings for this view.
|
||||
CToolManager *m_pToolManager; // tool manager for this view
|
||||
int m_nRenderedFrames;
|
||||
int m_nLastRaytracedBitmapRenderTimeStamp;
|
||||
|
||||
};
|
||||
|
||||
#endif // MAPVIEW_H
|
Reference in New Issue
Block a user