reman3/Rayman_X/cpa/tempgrp/T3D/inc/CPA_Grid.hpp

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__