1
This commit is contained in:
183
hammer/toolinterface.h
Normal file
183
hammer/toolinterface.h
Normal file
@ -0,0 +1,183 @@
|
||||
//========= 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
|
Reference in New Issue
Block a user