Files
FC1/Editor/EditTool.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

98 lines
4.2 KiB
C++

////////////////////////////////////////////////////////////////////////////
//
// Crytek Engine Source File.
// Copyright (C), Crytek Studios, 2001.
// -------------------------------------------------------------------------
// File name: EditTool.h
// Version: v1.00
// Created: 18/12/2001 by Timur.
// Compilers: Visual C++ 6.0
// Description:
// -------------------------------------------------------------------------
// History:
//
////////////////////////////////////////////////////////////////////////////
#ifndef __EditTool_h__
#define __EditTool_h__
#if _MSC_VER > 1000
#pragma once
#endif
class CViewport;
struct IClassDesc;
/*!
* CEditTool is an abstract base class for All Editing Tools supported by Editor.
* Edit tools handle specific editing modes in viewports.
*/
class CEditTool : public CObject
{
public:
DECLARE_DYNAMIC(CEditTool);
CEditTool() { m_pClassDesc = 0; };
virtual ~CEditTool() {};
//! Returns class description for this tool.
IClassDesc* GetClassDesc() const { return m_pClassDesc; }
//! Release this tool.
virtual void Release() = 0;
//! Status text displayed when this tool is active.
void SetStatusText( const CString &text ) { m_statusText = text; };
const char* GetStatusText() { return m_statusText; };
//! Used to pass user defined data to edit tool from ToolButton.
virtual void SetUserData( void *userData ) {};
//! Called when user starts using this tool.
//! Flags is comnination of ObjectEditFlags flags.
virtual void BeginEditParams( IEditor *ie,int flags ) = 0;
//! Called when user ends using this tool.
virtual void EndEditParams() = 0;
// Called each frame to display tool for givven viewport.
virtual void Display( struct DisplayContext &dc ) = 0;
//! Mouse callback sent from viewport.
//! Returns true if event processed by callback, and all other processing for this event should abort.
//! Return false if event was not processed by callback, and other processing for this event should occur.
//! @param view Viewport that sent this callback.
//! @param event Indicate what kind of event occured in viewport.
//! @param point 2D coordinate in viewport where event occured.
//! @param flags Additional flags (MK_LBUTTON,etc..) or from (MouseEventFlags) specified by viewport when calling callback.
virtual bool MouseCallback( CViewport *view,EMouseEvent event,CPoint &point,int flags ) = 0;
//! Called when key in viewport is pressed while using this tool.
//! Returns true if event processed by callback, and all other processing for this event should abort.
//! Returns false if event was not processed by callback, and other processing for this event should occur.
//! @param view Viewport where key was pressed.
//! @param nChar Specifies the virtual key code of the given key. For a list of standard virtual key codes, see Winuser.h
//! @param nRepCnt Specifies the repeat count, that is, the number of times the keystroke is repeated as a result of the user holding down the key.
//! @param nFlags Specifies the scan code, key-transition code, previous key state, and context code, (see WM_KEYDOWN)
virtual bool OnKeyDown( CViewport *view,uint nChar,uint nRepCnt,uint nFlags ) = 0;
//! Called when key in viewport is released while using this tool.
//! Returns true if event processed by callback, and all other processing for this event should abort.
//! Returns false if event was not processed by callback, and other processing for this event should occur.
//! @param view Viewport where key was pressed.
//! @param nChar Specifies the virtual key code of the given key. For a list of standard virtual key codes, see Winuser.h
//! @param nRepCnt Specifies the repeat count, that is, the number of times the keystroke is repeated as a result of the user holding down the key.
//! @param nFlags Specifies the scan code, key-transition code, previous key state, and context code, (see WM_KEYDOWN)
virtual bool OnKeyUp( CViewport *view,uint nChar,uint nRepCnt,uint nFlags ) = 0;
//! Called when mouse is moved and give oportunity to tool to set it own cursor.
//! @return true if cursor changed. or false otherwise.
virtual bool OnSetCursor( CViewport *vp ) { return false; };
private:
CString m_statusText;
IClassDesc* m_pClassDesc;
};
#endif // __EditTool_h__