reman3/Rayman_X/cpa/public/ITF/camdllb.hpp

183 lines
9.2 KiB
C++

/*=========================================================================*/
/* CAMDLLb.hpp : base of camera DLL*/
/* This is a part of the CPA project.*/
/**/
/* Version 1.0*/
/* Creation date 19/03/97*/
/* Revision date*/
/**/
/* (c) Ubi Studio 1996*/
/**/
/* DO NOT MODIFY THAT FILE. IF SOMETHING NEEDS TO BE CHANGE, PLEASE CONTACT*/
/* VINCENT GRECO OR CHRISTOPHE BEAUDET.*/
/*=========================================================================*/
#ifndef __CAMDLLB_HPP__
#define __CAMDLLB_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
/****************************************/
#ifdef ACTIVE_EDITOR
#include "objDLLb.hpp"
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/* CPA_CameraCoords class : used to give coordinates to the camera*/
typedef enum {WorldCoordinates,CameraCoordinates} tdeAxisSystem;
class CPA_EXPORT CPA_CameraCoords
{
private:
tdeAxisSystem m_eAxisSystem;
float m_fX;
float m_fY;
float m_fZ;
public:
CPA_CameraCoords(tdeAxisSystem eAxis = WorldCoordinates, float fX = 0, float fY = 0, float fZ = 0);
void SetX(float fX) { m_fX = fX;};
void SetY(float fY) { m_fY = fY;};
void SetZ(float fZ) { m_fZ = fZ;};
void SetXYZ(float fX, float fY, float fZ);
void SetAxisSystem(tdeAxisSystem eAxis) { m_eAxisSystem = eAxis;};
float GetX() {return m_fX;};
float GetY() {return m_fY;};
float GetZ() {return m_fZ;};
tdeAxisSystem GetAxisSystem() {return m_eAxisSystem;};
void SetCoords(MTH3D_tdstVector *p_stVector);
void SetCoords(POS_tdstCompletePosition *p_stMatrix);
void GetCoords(MTH3D_tdstVector &r_stVector);
void GetCoords(POS_tdstCompletePosition &r_stMatrix);
};
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////*/
typedef enum {rPoint, rSuperObject, rCamera, rTarget} tdeRotationCenterType;
typedef enum {tPoint, tSuperObject, tNone} tdeTargetType;
typedef enum {Relative, Absolute} tdeCoordsType;
typedef enum {X_Camera, Y_Camera, Z_Camera, X_World, Y_World, Z_World, X_Custom, Y_Custom, Z_Custom} tdeAxis;
/* ANNECY MT NewInterface 26/03/98 {*/
typedef enum {DisplayNone,DisplayDownRight,DisplayDownLeft} tdeDisplayReferential;
/* ENDANNECY MT NewInterface }*/
class CPA_DialogBar;
/*##########################################################################*/
/* camera DLL Base Class*/
class CPA_EXPORT CPA_CameraDLLBase : public CPA_ObjectDLLBase
{
public:
/* constructor*/
CPA_CameraDLLBase() {};
~CPA_CameraDLLBase() {};
/* add here all camera-specific functions*/
virtual void SendDialogBarCommandToCamera(CPA_BaseObject *p_oCamera,UINT nID){};
virtual void Activate(CPA_BaseObject *p_oCamera, DEV_ViewPort3D *p_oViewPort, CPA_DialogBar *p_oPopUpParent, CPoint oPos){};
virtual void Disactivate(CPA_BaseObject *p_oCamera){};
virtual BOOL IsActive(CPA_BaseObject *p_oCamera) {return FALSE;};
virtual void SetRotationAxisSystem(CPA_BaseObject *p_oCamera, tdeAxisSystem eSystem){};
virtual void SetTranslationAxisSystem(CPA_BaseObject *p_oCamera, tdeAxisSystem eSystem){};
virtual tdeAxisSystem GetRotationAxisSystem(CPA_BaseObject *p_oCamera){return WorldCoordinates;};
virtual tdeAxisSystem GetTranslationAxisSystem(CPA_BaseObject *p_oCamera){return WorldCoordinates;};
virtual BOOL SetRotationCenterType(CPA_BaseObject *p_oCamera, tdeRotationCenterType eRotCenterType){return FALSE;};
virtual tdeRotationCenterType GetRotationCenterType(CPA_BaseObject *p_oCamera){return rCamera;};
virtual tdeRotationCenterType GetEffectiveRotationCenterType(CPA_BaseObject *p_oCamera){return rCamera;};
virtual BOOL SetTargetType(CPA_BaseObject *p_oCamera, tdeTargetType eTargetType){return FALSE;};
virtual tdeTargetType GetTargetType(CPA_BaseObject *p_oCamera){return tNone;};
virtual BOOL ZoomOnTarget(CPA_BaseObject *p_oCamera, CPA_SuperObject *pTarget){return FALSE;};
virtual void SetRotationCenterPoint(CPA_BaseObject *p_oCamera, CPA_CameraCoords *p_oRotationCenter, tdeCoordsType eType = Absolute){};
virtual BOOL SetRotationCenterSuperObject(CPA_BaseObject *p_oCamera, CPA_SuperObject *p_oSuperObject){return FALSE;};
virtual BOOL GetRotationCenter(CPA_BaseObject *p_oCamera, MTH3D_tdstVector &r_stCenter){return FALSE;};
virtual void SetTargetPoint(CPA_BaseObject *p_oCamera, CPA_CameraCoords *p_oRotationCenter){};
virtual BOOL SetTargetSuperObject(CPA_BaseObject *p_oCamera, CPA_SuperObject *p_oSuperObject){return FALSE;};
virtual BOOL GetTarget(CPA_BaseObject *p_oCamera, MTH3D_tdstVector &r_stTarget){return FALSE;};
virtual void Translate(CPA_BaseObject *p_oCamera, CPA_CameraCoords *p_oOffset, BOOL bUserDefinedAxis = FALSE){};
virtual void SetPosition(CPA_BaseObject *p_oCamera, CPA_CameraCoords *p_oPos = NULL){};
virtual void Rotate(CPA_BaseObject *p_oCamera, tdeAxis eAxis, double dAngle){};
virtual void SetRotation(CPA_BaseObject *p_oCamera, double dAngleX = 0, double dAngleY = 0, double dAngleZ = 0){};
virtual void Update(CPA_BaseObject *p_oCamera){};
virtual CPA_SuperObject *CreateDefaultCamera(){return NULL;};
virtual void InsertCameraInHierarchy(CPA_SuperObject *p_oCameraSO){return;};
virtual void ShowDialogBar(CPA_BaseObject *p_oCamera){};
virtual void HideDialogBar(CPA_BaseObject *p_oCamera){};
virtual CPA_BaseObject *CopySlotCamera(CPA_BaseObject* p_oCamera){return NULL;};
virtual void CameraToWorldCoordinates_Point(CPA_BaseObject *_p_oCamera, MTH3D_tdstVector &r_stVector){};
virtual void CameraToWorldCoordinates_Vector(CPA_BaseObject *_p_oCamera, MTH3D_tdstVector &r_stVector){};
virtual void WorldToCameraCoordinates_Point(CPA_BaseObject *_p_oCamera, MTH3D_tdstVector &r_stVector){};
virtual void WorldToCameraCoordinates_Vector(CPA_BaseObject *_p_oCamera, MTH3D_tdstVector &r_stVector){};
virtual void GetMatrix(CPA_BaseObject *_p_oCamera, POS_tdstCompletePosition *p_oMatrix){};
virtual void SetMatrix(CPA_BaseObject *_p_oCamera, POS_tdstCompletePosition *p_oMatrix){};
/* camera - viewport communication specific functions*/
virtual BOOL SendKeyDownToCamera (CPA_BaseObject *p_oCamera, UINT nChar, UINT nRepCnt, UINT nFlags) {return FALSE;};
virtual BOOL SendKeyUpToCamera (CPA_BaseObject *p_oCamera, UINT nChar, UINT nRepCnt, UINT nFlags) {return FALSE;};
virtual BOOL SendMouseMoveToCamera (CPA_BaseObject *p_oCamera, UINT nFlags, tdstMousePos *p_stPos, MTH3D_tdstVector *p_stVect) { return FALSE; };
virtual BOOL SendLButtonDblClkToCamera (CPA_BaseObject *p_oCamera, UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo) { return FALSE; };
virtual BOOL SendRButtonDblClkToCamera (CPA_BaseObject *p_oCamera, UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo) { return FALSE; };
virtual BOOL SendLButtonDownToCamera (CPA_BaseObject *p_oCamera, UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo) { return FALSE; };
virtual BOOL SendRButtonDownToCamera (CPA_BaseObject *p_oCamera, UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo) { return FALSE; };
virtual BOOL SendLButtonUpToCamera (CPA_BaseObject *p_oCamera, UINT nFlags, tdstMousePos *p_stPos) { return FALSE; };
virtual BOOL SendRButtonUpToCamera (CPA_BaseObject *p_oCamera, UINT nFlags, tdstMousePos *p_stPos) { return FALSE; };
virtual BOOL OnToolTipNotify (CPA_BaseObject *p_oCamera, TOOLTIPTEXT *p_TTT, UINT nID) { return FALSE;};
virtual void DestroyCamera (CPA_SuperObject *p_oCamera) {};
/* ANNECY MT NewInterface 26/03/98 {*/
virtual void SetReferentialDisplayMode (tdeDisplayReferential eDisplayMode){};
virtual tdeDisplayReferential GetReferentialDisplayMode () {return DisplayNone;};
/* ENDANNECY MT NewInterface }*/
};
#endif /* ACTIVE_EDITOR*/
#endif /* __CAMDLLB_HPP__*/