104 lines
4.6 KiB
C++
104 lines
4.6 KiB
C++
/*ROMTEAM WorldEditor*/
|
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
|
/* File : Shape3D.h: interface for the Shape3D class.*/
|
|
/* Author : Ionut Grozea & Cristi Petrescu*/
|
|
/* Date : 97.11*/
|
|
/* Description :*/
|
|
/*//////////////////////////////////////////////////////////////////////////////////////*/
|
|
|
|
|
|
/* (c) Ubi Studios 1997*/
|
|
/* See Ionut & Cristi for any comment or question*/
|
|
|
|
#ifndef __SHAPE3D_HPP__
|
|
#define __SHAPE3D_HPP__
|
|
|
|
/****************************************/
|
|
#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
|
|
/****************************************/
|
|
|
|
/****************************************/
|
|
/* classes*/
|
|
/****************************************/
|
|
class Geometry3D_Interface;
|
|
|
|
/*ROMTEAM WorldEditor (Cristian Stegaru 01/98)*/
|
|
#define STR_LENGTH 200
|
|
#define NB_LENGTH 10
|
|
/*ENDROMTEAM WorldEditor (Cristian Stegaru)*/
|
|
|
|
class CPA_EXPORT Shape3D : public Geometry3D
|
|
{
|
|
/* data*/
|
|
protected:
|
|
/* activate/inactivate user interactions*/
|
|
BOOL m_bModifiable;
|
|
/* for the mouse interaction (resizing)*/
|
|
BOOL m_bActiveMode;
|
|
MTH3D_tdstVector m_stGlobalSelectedPoint; /* The 3D coordinates of the point of the object pointed by the mouse in the global repere*/
|
|
MTH3D_tdstVector m_stLocalSelectedPoint; /* The 3D coordinates of the same point in the local repere*/
|
|
/* the super object for real positioning*/
|
|
/* we need that because we ought to know where is our object placed in space*/
|
|
CPA_SuperObject *m_pSuperObject;
|
|
|
|
/* engine handle*/
|
|
ACP_tdxHandleOfElement m_hElement;
|
|
/* keyboard*/
|
|
static BOOL m_bSizeKeyPressed;
|
|
/* the Geometric DLL*/
|
|
static Geometry3D_Interface *m_pGeometry3DDLL;
|
|
|
|
/* members*/
|
|
public:
|
|
|
|
/*ROMTEAM WorldEditor (Cristian Stegaru 01/98)*/
|
|
virtual void mfn_vSave (CString csEPOFile, CString csEPOName, int iIdx);
|
|
virtual void mfn_vLoad (CString csEPOFile, CString csEPOName);
|
|
void EndCreate();
|
|
/*ENDROMTEAM WorldEditor (Cristian Stegaru)*/
|
|
|
|
/* inits, for data like keyb configuration*/
|
|
static void SetGeometry3DDLL (Geometry3D_Interface *pGeometry3DDLL) {m_pGeometry3DDLL = pGeometry3DDLL;};
|
|
/* mouse interface*/
|
|
virtual BOOL _OnLButtonUp (UINT nFlags, tdstMousePos * p_stPos);
|
|
virtual BOOL _OnLButtonDown (UINT nFlags, tdstMousePos * p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo * p_stObject);
|
|
virtual BOOL _OnMouseMove (UINT nFlags, tdstMousePos * p_stPos, MTH3D_tdstVector * pDeplacement);
|
|
virtual BOOL _OnLButtonDblClk (UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo);
|
|
/* keyboard interface*/
|
|
static BOOL _OnKeyUp (UINT nChar , UINT nRepCnt = 0, UINT nFlags = 0);
|
|
static BOOL _OnKeyDown(UINT nChar, UINT nRepCnt = 0, UINT nFlags = 0);
|
|
/* constructors/destructor*/
|
|
Shape3D (BOOL bModifiable, CPA_EditorBase *_p_oEditor, ACP_tdxIndex xNbPoints, ACP_tdxIndex xNbElements, const CString _csName = "", tdeSaveStatus _eStatus = E_ss_NoSave);
|
|
Shape3D (BOOL bModifiable, CPA_EditorBase *_p_oEditor, ACP_tdxIndex xNbPoints, ACP_tdxIndex xNbElements, CPA_BaseObject *_p_oOwnerFile, const CString _csName = "", char *_p_cRefPath = NULL, tdeSaveStatus _eStatus = E_ss_Responsible);
|
|
Shape3D (BOOL bModifiable, CPA_EditorBase *_p_oEditor, CPA_BaseObject *_p_oOwnerFile, ACP_tdxHandleOfObject _hObject, const CString _csName = "", char *_p_cRefPath = NULL, tdeSaveStatus _eStatus = E_ss_Modify);
|
|
/* access the Engine handle*/
|
|
ACP_tdxHandleOfElement GetEngineHandle () {return m_hElement;};
|
|
/* set the SuperObject*/
|
|
void SetSuperObject (CPA_SuperObject *pSuperObject) {m_pSuperObject = pSuperObject;};
|
|
/* essential data*/
|
|
virtual MTH3D_tdstVector GetCenter () { MTH3D_tdstVector jj; return jj; }; /* return the 3D coordinates of the center of the sphere*/
|
|
virtual void SetCenter (MTH3D_tdstVector *) {}; /* set the 3D coordinates of the center of the sphere*/
|
|
virtual CPA_Modif *GetUndoData(){ return NULL; }
|
|
|
|
|
|
~Shape3D();
|
|
protected:
|
|
void ConvertPointGlobalToLocal (MTH3D_tdstVector * pDest , POS_tdstCompletePosition * pAbsoluteMatrix , MTH3D_tdstVector * pSource);
|
|
void ConvertPointLocalToGlobal (MTH3D_tdstVector * pDest , POS_tdstCompletePosition * pAbsoluteMatrix , MTH3D_tdstVector * pSource);
|
|
void ConvertVectorGlobalToLocal (MTH3D_tdstVector * pDest , POS_tdstCompletePosition * pAbsoluteMatrix , MTH3D_tdstVector * pSource);
|
|
void ConvertVectorLocalToGlobal (MTH3D_tdstVector * pDest , POS_tdstCompletePosition * pAbsoluteMatrix , MTH3D_tdstVector * pSource);
|
|
|
|
private:
|
|
void CommonShape3D (void);
|
|
};
|
|
|
|
#endif /* __SHAPE3D_HPP__*/
|