diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /hammer/mapview3d.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'hammer/mapview3d.h')
| -rw-r--r-- | hammer/mapview3d.h | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/hammer/mapview3d.h b/hammer/mapview3d.h new file mode 100644 index 0000000..0672352 --- /dev/null +++ b/hammer/mapview3d.h @@ -0,0 +1,209 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef MAPVIEW3D_H +#define MAPVIEW3D_H +#ifdef _WIN32 +#pragma once +#endif + +#include "Keyboard.h" +#include "MapView.h" +#include "Render3D.h" +#include "camera.h" + +namespace vgui +{ + typedef unsigned long HCursor; +} + + +class CMapAtom; +class CRender3D; +class CCamera; +class CTitleWnd; +class CMapDecal; + +struct PLANE; + + +class CMapView3D : public CView, public CMapView +{ +protected: + + CMapView3D(); + DECLARE_DYNCREATE(CMapView3D) + +public: + + virtual LRESULT WindowProc( UINT message, WPARAM wParam, LPARAM lParam ); + enum + { + updNothing = 0x00, + updMorphOnly = 0x01, + updAll = 0x02, + updRedrawNow = 0x04 + }; + + void SetCamera(const Vector &vecPos, const Vector &vecLookAt); + + // + // CMapView interface: + // + void RenderView(); + bool ShouldRender(); + void ActivateView(bool bActivate); + void UpdateView(int nFlags); + CView *GetViewWnd() { return (CView*)this; } + CMapDoc *GetMapDoc() { return (CMapDoc*)m_pDocument;} + void WorldToClient(Vector2D &ptClient, const Vector &vecWorld); + void ClientToWorld(Vector &vecWorld, const Vector2D &ptClient); + bool HitTest( const Vector2D &vPoint, const Vector& mins, const Vector& maxs ); + void GetBestTransformPlane( Vector &horzAxis, Vector &vertAxis, Vector &thirdAxis); + + void GetHitPos(const Vector2D &point, PLANE &plane, Vector &pos); + void ProcessInput(void); + + void UpdateStatusBar(); + + // Called by the camera tool to control the camera. + void EnableMouseLook(bool bEnable); + void EnableRotating(bool bEnable); + void EnableStrafing(bool bEnable); + void UpdateCameraVariables(void); + + void MoveForward(float flDistance); + void MoveUp(float flDistance); + void MoveRight(float flDistance); + void Pitch(float flDegrees); + void Yaw(float flDegrees); + + void BeginPick(void); + void EndPick(void); + + DrawType_t GetDrawType() { return m_eDrawType; } + void SetDrawType(DrawType_t eDrawType); + + int ObjectsAt( const Vector2D &point, HitInfo_t *pObjects, int nMaxObjects, unsigned int nFlags = 0 ); + + CMapClass *NearestObjectAt( const Vector2D &point, ULONG &ulFace, unsigned int nFlags = 0, VMatrix *pLocalMatrix = NULL ); + + void RenderPreloadObject(CMapAtom *pObject); + + void SetCursor( vgui::HCursor hCursor ); + + // Release all video memory + void ReleaseVideoMemory(); + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CMapView3D) +public: + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + virtual BOOL DestroyWindow(); + virtual void OnInitialUpdate(); +protected: + virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); + //}}AFX_VIRTUAL + +public: + virtual ~CMapView3D(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +private: + + void Render(); + + void EnableCrosshair(bool bEnable); + + + bool ControlCamera(const CPoint &point); + + // + // Keyboard processing. + // + void InitializeKeyMap(void); + void ProcessMouse(void); + void ProcessKeys(float fElapsedTime); + void ProcessMovementKeys(float fElapsedTime); + float GetKeyScale(unsigned int uKeyState); + + // Radius culling + void ProcessCulling( void ); + + enum + { + MVTIMER_PICKNEXT = 0 + }; + + bool m_bMouseLook; // Set to true when we override the mouse processing to use mouselook. + bool m_bStrafing; + bool m_bRotating; + CPoint m_ptLastMouseMovement; // Last position used for tracking the mouse for camera control. + + DWORD m_dwTimeLastSample; // Used for calculating rendering framerate. + DWORD m_dwTimeLastInputSample; // Used for framerate-independent input processing. + + float m_fForwardSpeed; // Current forward speed, in world units per second. + float m_fStrafeSpeed; // Current side-to-side speed, in world units per second. + float m_fVerticalSpeed; // Current up-down speed, in world units per second. + + float m_fForwardSpeedMax; // Maximum forward speed, in world units per second. + float m_fStrafeSpeedMax; // Maximum side-to-side speed, in world units per second. + float m_fVerticalSpeedMax; // Maximum up-down speed, in world units per second. + + float m_fForwardAcceleration; // Forward acceleration, in world units per second squared. + float m_fStrafeAcceleration; // Side-to-side acceleration, in world units per second squared. + float m_fVerticalAcceleration; // Up-down acceleration, in world units per second squared. + + DrawType_t m_eDrawType; // How we render - wireframe, flat, textured, lightmap grid, or lighting preview. + bool m_bLightingPreview; + + CTitleWnd *m_pwndTitle; // Title window. + + CRender3D *m_pRender; // Performs the 3D rendering in our window. + CKeyboard m_Keyboard; // Handles binding of keys and mouse buttons to logical functions. + + bool m_bCameraPosChanged; + bool m_bClippingChanged; + + //{{AFX_MSG(CMapView3D) +protected: + afx_msg void OnTimer(UINT nIDEvent); + afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); + afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags); + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg void OnLButtonDown(UINT nFlags, CPoint point); + afx_msg void OnLButtonUp(UINT nFlags, CPoint point); + afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); + afx_msg void OnRButtonDown( UINT nFlags, CPoint point ); + afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint point); + afx_msg void OnRButtonUp(UINT nFlags, CPoint point); + afx_msg void OnContextMenu(CWnd *pWnd, CPoint point); + afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags); + afx_msg void OnSetFocus(CWnd* pOldWnd); + afx_msg void OnDraw(CDC *pDC); + afx_msg BOOL OnFaceAlign(UINT uCmd); + afx_msg BOOL OnFaceJustify(UINT uCmd); + afx_msg void OnView3dWireframe(void); + afx_msg void OnView3dPolygon(void); + afx_msg void OnView3dTextured(void); + afx_msg void OnView3dLightmapGrid(void); + afx_msg void OnView3dLightingPreview(void); + afx_msg void OnView3dLightingPreviewRayTraced(void); + //afx_msg void OnView3dEngine(void); + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + afx_msg void OnKillFocus(CWnd *pNewWnd); + afx_msg void OnNcPaint( ); + //}}AFX_MSG + + DECLARE_MESSAGE_MAP() + }; + +#endif // MAPVIEW3D_H |