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.
183 lines
6.8 KiB
183 lines
6.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: Defines the interface that tools implement to allow views to call |
|
// through them. |
|
// |
|
//===========================================================================// |
|
|
|
#ifndef TOOLINTERFACE_H |
|
#define TOOLINTERFACE_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
|
|
class CMapView2D; |
|
class CMapView3D; |
|
class CMapViewLogical; |
|
class CRender2D; |
|
class CRender3D; |
|
class CMapDoc; |
|
class CMapClass; |
|
class Vector2D; |
|
class CChunkFile; |
|
class CSaveInfo; |
|
|
|
#define HANDLE_RADIUS 4 |
|
|
|
enum ChunkFileResult_t; |
|
|
|
|
|
enum ToolID_t |
|
{ |
|
TOOL_NONE = -1, |
|
TOOL_POINTER, |
|
TOOL_BLOCK, |
|
TOOL_ENTITY, |
|
TOOL_CAMERA, |
|
TOOL_DECAL, |
|
TOOL_MAGNIFY, |
|
TOOL_MORPH, |
|
TOOL_CLIPPER, |
|
TOOL_EDITCORDON, |
|
TOOL_FACEEDIT_MATERIAL, |
|
TOOL_FACEEDIT_DISP, |
|
TOOL_OVERLAY, |
|
TOOL_AXIS_HANDLE, |
|
TOOL_POINT_HANDLE, |
|
TOOL_SPHERE, |
|
TOOL_PICK_FACE, |
|
TOOL_PICK_ENTITY, |
|
TOOL_PICK_ANGLES, |
|
TOOL_SWEPT_HULL, |
|
TOOL_PLAYERHULL_HANDLE, |
|
}; |
|
|
|
enum |
|
{ |
|
constrainNone = 0x00, // transformation with no constrains |
|
constrainOnlyHorz = 0x01, // only horizontal translations |
|
constrainOnlyVert = 0x02, // only vertical translations |
|
constrainSnap = 0x04, // rounds to document snap grid |
|
constrainIntSnap = 0x08, // rounds value to one unit (integer) |
|
constrainHalfSnap = 0x10, // rounds to half of snap grid |
|
constrainCenter = 0x20, |
|
constrainMoveAll = 0x40, // translate all handles |
|
}; |
|
|
|
|
|
class CBaseTool |
|
{ |
|
public: |
|
|
|
inline CBaseTool(); |
|
virtual ~CBaseTool() {} |
|
|
|
// |
|
// Called by the tool manager to activate/deactivate tools. |
|
// |
|
|
|
virtual void Init( CMapDoc *pDocument ); |
|
|
|
void Activate(); |
|
void Deactivate(); |
|
virtual bool CanDeactivate( void ) { return true; } |
|
|
|
virtual bool IsTranslating(void) { return false; } // return true if tool is currently changing objects |
|
inline bool IsActiveTool( void ) { return m_bActiveTool; } |
|
|
|
// true if tool has objects to work on |
|
virtual bool IsEmpty() { return m_bEmpty; } |
|
|
|
// detach tool from any object working on |
|
virtual void SetEmpty() { m_bEmpty = true; } |
|
|
|
// attach a certain object to that tool |
|
virtual void Attach(CMapClass *pObject) {}; |
|
|
|
// |
|
// Notifications for tool activation/deactivation. |
|
// |
|
virtual void OnActivate() {} |
|
virtual void OnDeactivate() {} |
|
|
|
virtual ToolID_t GetToolID(void) { return TOOL_NONE; } |
|
|
|
virtual const char* GetVMFChunkName() { return NULL; } |
|
virtual ChunkFileResult_t LoadVMF(CChunkFile *pFile) { return (ChunkFileResult_t)0; /*ChunkFile_Ok*/ } |
|
virtual ChunkFileResult_t SaveVMF(CChunkFile *pFile, CSaveInfo *pSaveInfo) { return (ChunkFileResult_t)0 ; /*ChunkFile_Ok*/ } |
|
// |
|
// Messages sent by the 3D view: |
|
// |
|
virtual bool OnContextMenu3D(CMapView3D *pView, UINT nFlags, const Vector2D &vPoint) { return false; } |
|
virtual bool OnLMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnLMouseUp3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnLMouseDblClk3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnRMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnRMouseUp3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnMouseMove3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnMouseWheel3D( CMapView3D *pView, UINT nFlags, short zDelta, const Vector2D &vPoint) { return false; } |
|
|
|
virtual bool OnKeyDown3D( CMapView3D *pView, UINT nChar, UINT nRepCnt, UINT nFlags ) { return false; } |
|
virtual bool OnKeyUp3D( CMapView3D *pView, UINT nChar, UINT nRepCnt, UINT nFlags ) { return false; } |
|
virtual bool OnChar3D( CMapView3D *pView, UINT nChar, UINT nRepCnt, UINT nFlags ) { return false; } |
|
|
|
// |
|
// Messages sent by the 2D view: |
|
// |
|
virtual bool OnContextMenu2D(CMapView2D *pView, UINT nFlags, const Vector2D &vPoint) { return false; } |
|
virtual bool OnLMouseDown2D( CMapView2D *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnLMouseUp2D( CMapView2D *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnLMouseDblClk2D( CMapView2D *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnRMouseDown2D( CMapView2D *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnRMouseUp2D( CMapView2D *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnMouseMove2D( CMapView2D *pView, UINT nFlags, const Vector2D &vPoint ) { return true; } |
|
virtual bool OnMouseWheel2D( CMapView2D *pView, UINT nFlags, short zDelta, const Vector2D &vPoint) { return false; } |
|
|
|
virtual bool OnKeyDown2D( CMapView2D *pView, UINT nChar, UINT nRepCnt, UINT nFlags ) { return false; } |
|
virtual bool OnKeyUp2D( CMapView2D *pView, UINT nChar, UINT nRepCnt, UINT nFlags ) { return false; } |
|
virtual bool OnChar2D( CMapView2D *pView, UINT nChar, UINT nRepCnt, UINT nFlags ) { return false; } |
|
|
|
// |
|
// Messages sent by the logical view: |
|
// |
|
virtual bool OnContextMenuLogical( CMapViewLogical *pView, UINT nFlags, const Vector2D &vPoint) { return false; } |
|
virtual bool OnLMouseDownLogical( CMapViewLogical *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnLMouseUpLogical( CMapViewLogical *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnLMouseDblClkLogical( CMapViewLogical *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnRMouseDownLogical( CMapViewLogical *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnRMouseUpLogical( CMapViewLogical *pView, UINT nFlags, const Vector2D &vPoint ) { return false; } |
|
virtual bool OnMouseMoveLogical( CMapViewLogical *pView, UINT nFlags, const Vector2D &vPoint ) { return true; } |
|
virtual bool OnMouseWheelLogical( CMapViewLogical *pView, UINT nFlags, short zDelta, const Vector2D &vPoint) { return false; } |
|
|
|
virtual bool OnKeyDownLogical( CMapViewLogical *pView, UINT nChar, UINT nRepCnt, UINT nFlags ) { return false; } |
|
virtual bool OnKeyUpLogical( CMapViewLogical *pView, UINT nChar, UINT nRepCnt, UINT nFlags ) { return false; } |
|
virtual bool OnCharLogical( CMapViewLogical *pView, UINT nChar, UINT nRepCnt, UINT nFlags ) { return false; } |
|
|
|
// |
|
// Rendering. |
|
// |
|
virtual void RenderTool2D( CRender2D *pRender ) {} |
|
virtual void RenderToolLogical( CRender2D *pRender ) {} |
|
virtual void RenderTool3D( CRender3D *pRender ) {} |
|
virtual void UpdateStatusBar( void ) {} |
|
|
|
protected: |
|
|
|
bool m_bActiveTool; // Set to true when this is the active tool. |
|
bool m_bEmpty; // true if the tool has objects to work on |
|
CMapDoc *m_pDocument; |
|
}; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Constructor. |
|
//----------------------------------------------------------------------------- |
|
CBaseTool::CBaseTool() |
|
{ |
|
m_bEmpty = true; |
|
m_bActiveTool = false; |
|
m_pDocument = NULL; |
|
} |
|
|
|
#endif // TOOLINTERFACE_H
|
|
|