123 lines
5.9 KiB
C++
123 lines
5.9 KiB
C++
// Class CPA_Grid
|
|
|
|
#ifndef __CPA_GRID_HPP__
|
|
#define __CPA_GRID_HPP__
|
|
|
|
#ifdef ACTIVE_EDITOR
|
|
|
|
class DEV_MultiDevice3D;
|
|
class DEV_SingleDevice3D;
|
|
class CPA_SuperObject;
|
|
|
|
#include "mth.h"
|
|
#include "GLD.h"
|
|
// ALX
|
|
//#include "CPACont.hpp"
|
|
// End ALX
|
|
|
|
//**************************************
|
|
/*#ifndef CPA_EXPORT
|
|
#if defined(CPA_WANTS_IMPORT)
|
|
#define CPA_EXPORT __declspec(dllimport)
|
|
#elif defined(CPA_WANTS_EXPORT)
|
|
#define CPA_EXPORT __declspec(dllexport)
|
|
#else
|
|
#define CPA_EXPORT
|
|
#endif
|
|
#endif
|
|
*///**************************************
|
|
// Keyboard entry ID
|
|
#define KA_ID_NAVMODE 10
|
|
#define KA_ID_LEFT 11
|
|
#define KA_ID_RIGHT 12
|
|
#define KA_ID_UP 13
|
|
#define KA_ID_DOWN 14
|
|
|
|
|
|
|
|
class /*CPA_EXPORT*/ CPA_Grid : public CPA_Contact
|
|
{
|
|
// Constructor/Destructor
|
|
//-----------------------
|
|
public:
|
|
CPA_Grid(CPA_KeyActionConfiguration *p_oKeyboard, DEV_MultiDevice3D *p_oDevice = NULL);
|
|
|
|
// Member variables
|
|
//-----------------
|
|
private:
|
|
DEV_MultiDevice3D *m_p_oMultiDevice; // Single device associate with contact
|
|
|
|
MTH_tdxReal m_xMaxSphereBoxRadius; // The max radius of sphere box of module
|
|
MTH_tdxReal m_xGridSquareSize; // The size of a square
|
|
MTH_tdxReal m_xFirstCenterX; // Distance from center of grid to center of first object in X
|
|
MTH_tdxReal m_xFirstCenterZ; // Distance from center of grid to center of first object in Z
|
|
MTH_tdxReal m_xLastCenterX; // Distance from center of grid to center of last object in X
|
|
MTH_tdxReal m_xLastCenterZ; // Distance from center of grid to center of last object in Z
|
|
BOOL m_bShowSelection; // There's a selection ?
|
|
BOOL m_bShowGrid; // Grid is visible ?
|
|
short m_wNbOfRows; // Number of rows in grid
|
|
short m_wNbOfColumns; // Number of columns in grid
|
|
|
|
CPA_KeyActionConfiguration * m_p_oKeyboard;
|
|
BOOL m_bNavigationMode;
|
|
|
|
public:
|
|
// override
|
|
// BOOL _OnCommand(UINT);
|
|
// BOOL _OnUpdateCommandUI(CCmdUI *);
|
|
BOOL _OnKeyDown(UINT, UINT, UINT);
|
|
// BOOL _OnKeyUp(UINT, UINT, UINT);
|
|
// BOOL _OnMouseMove(UINT, tdstMousePos *);
|
|
// BOOL _OnLButtonDblClk(UINT, tdstMousePos *, ACP_tdxIndex, HIE_tdstPickInfo *);
|
|
BOOL _OnLButtonDown(UINT, tdstMousePos *, ACP_tdxIndex, HIE_tdstPickInfo *);
|
|
// BOOL _OnLButtonUp(UINT, tdstMousePos *);
|
|
// BOOL _OnRButtonDblClk(UINT, tdstMousePos *, ACP_tdxIndex, HIE_tdstPickInfo *);
|
|
// BOOL _OnRButtonDown(UINT, tdstMousePos *, ACP_tdxIndex, HIE_tdstPickInfo *);
|
|
// BOOL _OnRButtonUp(UINT, tdstMousePos *);
|
|
// BOOL _OnDragDropEnd(WPARAM wParam, LPARAM lParam);
|
|
// BOOL _OnDragDropMove(WPARAM wParam, LPARAM lParam);
|
|
// BOOL _OnDragDropLooseFocus(WPARAM wParam, LPARAM lParam);
|
|
// BOOL _OnDragDropGainFocus(WPARAM wParam, LPARAM lParam);
|
|
void fn_vAddObjectsToDraw(GLD_tdstViewportAttributes *, GLI_tdxHandleToLight, DEV_ViewPort *);
|
|
// owner methods
|
|
void m_fn_vSetMultiDevice (DEV_MultiDevice3D *_p_oMulti) { m_p_oMultiDevice = _p_oMulti; }
|
|
// ALX
|
|
DEV_MultiDevice3D *m_fn_p_oGetMultiDevice () { return m_p_oMultiDevice; }
|
|
// End ALX
|
|
BOOL m_fn_bIsGridShowed (void) { return m_bShowGrid; }
|
|
BOOL m_fn_bIsSelectionShowed (void) { return m_bShowSelection; }
|
|
void m_fn_vShowGrid (void) { m_bShowGrid = TRUE; }
|
|
void m_fn_vHideGrid (void) { m_bShowGrid = FALSE; }
|
|
void m_fn_vShowSelection (void) { m_bShowSelection = TRUE; }
|
|
void m_fn_vHideSelection (void) { m_bShowSelection = FALSE; }
|
|
void m_fn_vPositionWorldOnGrid (void);
|
|
void m_fn_vResetContent (void);
|
|
void m_fn_vDisplay (GLD_tdstViewportAttributes *);
|
|
void m_fn_vCenterOnGrid (void);
|
|
void m_fn_vCenterOnSuperObject (CPA_SuperObject *_p_SprObj);
|
|
CPA_SuperObject* m_fn_p_oGetSuperObjectFromPos (tdstMousePos *p_stPos);
|
|
protected:
|
|
void m_fn_vComputeObjectsPosition(void);
|
|
void m_fn_vConvertRowColumnTo3D(short _wRow, short _wColumn, MTH3D_tdstVector *_p_st3D);
|
|
void m_fn_vComputeMaxSphereBoxRadius(void);
|
|
BOOL m_fn_bGetSphereBoxCenter(CPA_SuperObject *_p_oSprObj, MTH3D_tdstVector *_p_stCenter);
|
|
MTH_tdxReal m_fn_xGetSphereBoxRadius(CPA_SuperObject *_p_oSprObj);
|
|
|
|
void m_fn_vComputeFirstAndLastCenters(void);
|
|
void m_fn_vComputeRowColumn(void);
|
|
void m_fn_vCompute3DPosOfSuperObject(CPA_SuperObject *_p_SprObj,MTH_tdxReal *_p_xLeftX, MTH_tdxReal *_p_xLeftZ,
|
|
MTH_tdxReal *_p_xRightX, MTH_tdxReal *_p_xRightZ,
|
|
MTH_tdxReal *_p_xXL, MTH_tdxReal *_p_xZL);
|
|
void m_fn_vComputeGridPosOfSuperObject(CPA_SuperObject *_p_SprObj,short *_p_wRow,short *_p_wColumn);
|
|
void m_fn_vDisplayGrid(GLD_tdstViewportAttributes *);
|
|
void m_fn_vDisplaySelection(GLD_tdstViewportAttributes *);
|
|
void m_fn_vDrawOneLine(GLD_tdstViewportAttributes *_p_stViewAttrib, long lColor,
|
|
MTH3D_tdstVector *_p_stVxA, MTH3D_tdstVector *_p_stVxB,
|
|
MTH3D_tdstVector *_p_stDepl, ACP_tdxIndex _xNbLines);
|
|
void m_fn_vComputePickedSquare(GLI_tdst2DVertex *_p_st2DMousePos, short *_p_wRow, short *_p_wColumn);
|
|
void m_fn_vGetPosOnGridPlane(GLD_tdhDevice hDev, GLD_tdhViewport hVp, GLI_tdst2DVertex *_p_st2DMousePos,
|
|
MTH3D_tdstVector *p_stDstVertex);
|
|
};
|
|
|
|
#endif //ACTIVE_EDITOR
|
|
#endif //__CPA_GRID_HPP__
|