Add rayman2 source files

This commit is contained in:
2024-09-18 02:33:44 +08:00
parent bcc093f8ed
commit fb036c54fd
14339 changed files with 2596224 additions and 0 deletions

View File

@@ -0,0 +1,233 @@
/*
*=======================================================================================
* Name :EditorPO.hpp
* Author :Vincent Lhullier Date :05/06/97
* Description :Description of Editor Physical object
*=======================================================================================
* Modification -> Author : Date :
* Description :
*=======================================================================================
*/
#ifndef __EDITORPO_HPP__
#define __EDITORPO_HPP__
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
#include "ITF.h"
#include "MEC.h"
#define D_PhysiCol_Define
#include "GAM.h"
#include "SPO.h"
#include "PO.h"
#undef D_PhysiCol_Define
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
class Geometry3D;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
#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
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*
=======================================================================================
Constants
=======================================================================================
*/
/*
* origin of PO object
*/
#define C_cFromFamilies 0
#define C_cFromLevels 1
#define C_cFromClasses 2
/*
* unsed index
*/
#define C_uwNotInTable ((unsigned short)-1)
/*
=======================================================================================
Editor Physical Object class
=======================================================================================
*/
class EditorPO : public CPA_SaveObject,public CPA_EdMot<PO_tdxHandleToPhysicalObject>
{
private:
char m_cOrigin;
Geometry3D **m_dp_oLodGeom;
CPA_BaseObject *m_ap_oZone[ 4 ];
CPA_SectionObject *m_p_oPCSSection;
CPA_SectionObject *m_p_oVSESection; /* object associated with VisualSet section of this PO object*/
unsigned short m_uwIndexInObjectsTable;
/*ANNECY TQ 22/06/98{*/
ACP_tdxHandleOfObject m_hBoundingVolume;
/*ENDANNECY TQ}*/
/*ROMTEAM WorldEditor (Cristian Stegaru 12/97)*/
protected:
BOOL m_bIsClone;
/*ENDROMTEAM WorldEditor (Cristian Stegaru)*/
public:
/*CPA2 Stegaru Cristian 98-03*/
CString mfn_csGetFullGeomSectionName ();
CString mfn_csGetModSectionName ();
/*End CPA2 Stegaru Cristian 98-03*/
/*CPA2 Stegaru Cristian 98-05 */
ACP_tdxIndex mfn_iGetFacesNumber ();
MTH3D_tdstVector mfn_3dvGetMinCoordinates ();
MTH3D_tdstVector mfn_3dvGetMaxCoordinates ();
MTH3D_tdstVector mfn_3dvGetSizes (); /*dX, dY, dZ*/
/*End CPA2 Stegaru Cristian 98-05*/
/*ROMTEAM WorldEditor (Nicu 16/01/98)*/
BOOL mfn_bIsClone () { return m_bIsClone;}
void mfn_vSetClone (BOOL bIsClone) { m_bIsClone = bIsClone;}
Geometry3D *m_pGeom, /* pointer to the geometric object (Shape3D)*/
*m_pOrigGeom;
int m_iIdx; /* geometric object index */
BOOL IsCandidatePO () { return -2 != m_iIdx;}
/*ENDROMTEAM WorldEditor (Nicu)*/
/* ==> constructor / destructor */
EditorPO (
CPA_EditorBase *p_oDLL,
PO_tdxHandleToPhysicalObject hObj,
CPA_BaseObject *p_oOwner,
CString csName = "",
CString csFileName = "",
CString csSectionName = ""
);
~EditorPO();
/* ==> initialisation of data members */
static void StaticInit();
void m_fn_vInitDataMembers( BOOL _bSecondPass = FALSE );
/* ==> access to origin */
char *fn_szComputeOrigin( char *_szFileName, char *_cOrigin );
char fn_cGetOrigin( void ) { return m_cOrigin; }
/* ==> loading engine PO */
BOOL m_fn_bLoadEnginePO( void );
/* ==> Access to data type */
long GetDataType(void) { return HIE_C_ulPO; }
void *GetData(void) { return GetStruct(); }
/* ==> Access to Objects Table Index */
unsigned short m_fn_uwGetIndexInObjectTable(void) { return m_uwIndexInObjectsTable; }
void m_fn_vSetIndexInObjectTable(unsigned short _uwIndex) { m_uwIndexInObjectsTable = _uwIndex; }
/* ==> name unicity */
tdeMissingCriteria fn_eCheckUnicity (const CString csNewName) { return fn_eCheckUnicityWithOwner(csNewName); }
/* ==> Notification */
void fn_vNotifySave(void);
void fn_vNotifyUnSave(void);
void fn_vNotifyRestore(void);
void fn_vNotifyRename(void);
void fn_vUpdateSectionName (void);
/* ==> access to Physical Coll Set section object */
void fn_vComputePCSSectionName( char *szPCSSectionName );
CPA_SectionObject *fn_p_oGetPCSSection (void) { return m_p_oPCSSection; }
/* ==> access to VisaulSet section object and information */
void fn_vComputeVSESectionName( char *szVSESectionName );
CPA_SectionObject *fn_p_oGetVSESection( void ) { return m_p_oVSESection; }
/* ==> access to engine struct */
void *GetEngineStruct() { return GetStruct(); };
void SetEngineStruct (PO_tdxHandleToPhysicalObject hObj) { SetStruct(hObj); }
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
Geometry3D *m_fnp_oGetGeometricWithDistance( MTH_tdxReal xDistance)
{
GEO_tdxHandleToVisualSet hVSE;
ACP_tdxIndex xNumberOfLod;
ACP_tdxIndex xIndexOfLod;
MTH_tdxReal xThreshold;
ACP_tdxHandleOfObject hGeoObj;
if (!GetStruct())
return NULL;
hVSE = PO_fn_hGetVisualSet( GetStruct() );
xNumberOfLod = (ACP_tdxIndex) GLI_lGetVisualSetNumbertOfLOD( hVSE );
for (xIndexOfLod = 0; xIndexOfLod < xNumberOfLod - 1; xIndexOfLod ++)
{
GLI_vGetVisualSetLOD( hVSE, xIndexOfLod + 1, &xThreshold, &hGeoObj );
if (xThreshold > xDistance) break;
}
return m_dp_oLodGeom[xIndexOfLod];
}
/* ==> access to zone */
CPA_BaseObject *GetZone( char cTypeZone ) { return m_ap_oZone[ cTypeZone ]; }
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*ROMTEAM WorldEditor (Nicu 07/11/97) */
void SetZone (char cTypeZone , CPA_BaseObject *_pZDxObject, BOOL bStandardPO = TRUE)
{
m_ap_oZone[ cTypeZone ] = _pZDxObject;
if (!bStandardPO)
m_pGeom = m_pOrigGeom = (Geometry3D*)_pZDxObject;
/*ENDROMTEAM WorldEditor (Nicu) */
PCS_tdxHandleToPhysicalCollSet hCollSet = PO_fn_hGetCollideSet(GetStruct ());
if (! hCollSet)
{
hCollSet = PCS_fn_hCreatePhysicalCollideSet();
PO_fn_vSetCollideSet (GetStruct () , hCollSet);
}
void * pEngineZone;
if (_pZDxObject) /* _pZDxObject can be a ZDx object or a PO*/
{
if (_pZDxObject -> fn_bIsOfType (C_szPhysicalObjectTypeName))
pEngineZone = ((CPA_BaseObject *) ((EditorPO *) _pZDxObject) ->
m_fnp_oGetGeometricWithDistance (0)) -> GetData ();
else pEngineZone = _pZDxObject -> GetData ();
}
else pEngineZone = NULL;
PCS_fn_vSetGeoObjOfPhysicalCollSet(cTypeZone , hCollSet , (ACP_tdxHandleOfObject) pEngineZone);
/*ROMTEAM WorldEditor (Nicu 07/11/97) */
if(m_p_oPCSSection)
/*ENDROMTEAM WorldEditor (Nicu) */
m_p_oPCSSection->fn_vWriteSection();
}
/* ==> filenames */
CString fn_csConstructFileName(CString csFileName);
/*ANNECY TQ 22/06/98{*/
ACP_tdxHandleOfObject fn_hGetEditorPOBoundingVolume() { return m_hBoundingVolume; }
void fn_vSetEditorPOBoundingVolume(ACP_tdxHandleOfObject hBoundingVolume) { m_hBoundingVolume = hBoundingVolume; }
/*ENDANNECY TQ}*/
};
#endif /*__3DOBJECT_HPP__*/

View File

@@ -0,0 +1,177 @@
/*
=======================================================================================
Name : PO_Inter.hpp
Author : vincent lhullier Date :01/09/97
Description : PO DLL interface class
=======================================================================================
Modification -> Author : Date :
Description :
=======================================================================================
*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
#ifndef __PO_INTER_HPP__
#define __PO_INTER_HPP__
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
#define D_PhysiCol_Define
#include "MEC.h"
#include "GAM.h"
#undef D_PhysiCol_Define
#include "EditorPO.hpp"
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
class CPODlgVse;
class CPODlgList;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
#define DLL_ONLY_ONE_INSTANCE
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*
*=======================================================================================
Constants
*=======================================================================================
*/
/*
* constant for Query Action
*/
#define OPD_ActionEncapsulateObject 1
#define OPD_ActionCreateEmptyPO 2
#define OPD_ActionSecondPass 3
/*ROMTEAM WorldEditor (Nicu 28/10/97) */
#define OPD_ActionCreateGeometricPO 4
class Shape3D;
/*ENDROMTEAM WorldEditor (Nicu) */
/*
*=============================================================================
Instanciated Physical Object DLL interface class
*=============================================================================
*/
class POInterface: public CPA_ObjectDLLBase
{
private:
EditorPO *m_p_oSelectedPO;
CPA_BaseObject *m_p_oSelectedActor;
CPODlgVse *m_p_oDlgVse;
CPODlgList *m_p_oDlgList;
CSplitFrame *m_p_oSplitterLeft;
/*ROMTEAM WorldEditor (Cristian Stegaru 01/98)*/
public:
CStringList m_lstNameOfCandidateEPO;
CTypedPtrList <CPtrList, EditorPO*> m_lstOfCandidateEPO;
CString m_csEPOFile;
BOOL m_bEPOListOK;
/*ENDROMTEAM WorldEditor (Cristian Stegaru)*/
public:
/* ==> Constructor */
POInterface();
/* ==> communication between the different dialog boxes */
void fn_vDisplayPOInfo( EditorPO *_p_oPO );
/* ==> ACP MEssages Functions overload */
void fn_vJustAfterRegistered (void);
void fn_vConstruct (void);
void fn_vBeforeEngine (void);
void fn_vBeforeEditor (void);
/*ROMTEAM WorldEditor (Cristian Stegaru 01/98)*/
void fn_vBeforeSaveAll (void);
/*ENDROMTEAM WorldEditor (Cristian Stegaru)*/
/* ==> for changes */
void fn_vOnChangeRoot (void);
void fn_vOnChangeWorld (void);
void fn_vOnChangeDevice (void);
/* ==> Editor Modifs */
BOOL fn_bAcceptModifCopy(CPA_List<CPA_SuperObject> *pListObjects, tdeStatus eStatus);
void fn_vOnModifDelete (CPA_List<EDT_SaveParents> *pListObjects, tdeTypeModif eType, tdeStatus eStatus);
void fn_vOnModifParent (CPA_List<EDT_SaveParents> *pListObjects, tdeTypeModif eType, tdeStatus eStatus);
void fn_vOnModifCopy (CPA_List<EDT_SaveParents> *pListObjects, tdeTypeModif eType, tdeStatus eStatus);
void fn_vOnModifName (CPA_SuperObject *pEdObj, CString csInitalName, CString csFinalName, tdeTypeModif eType, tdeStatus eStatus);
void fn_vOnSelect (CPA_SuperObject *pEdObj, tdeTypeModif eType, tdeStatus eStatus);
/*===========================================================================
Dialog Bar - Mircea Dunka 31 Aug. 1998
=========================================================================*/
void fn_vDefineDlgBarBtnIcon (tde_DlgBarCategory wCategory, tds_DlgBarBtn *_pDlgBarBtn);
/* ==> Menus */
BOOL fn_bDefineSubMenu (EDT_SubMenu *_p_oEDTSubMenu);
void _OnSubMenuCommand (EDT_SubMenu *_p_oEDTSubMenu,UINT uiMsgID);
BOOL fn_bDefinePopupMenu(EDT_PopUpMenu *pPopup, CPA_List<CPA_SuperObject> *pSelection, BOOL bIsAlone);
void _OnPopUpMenuCommand(UINT m_IDCmdMsg);
/* ==> Current Editor */
tdePermission fn_eAcceptNewEditor (CPA_EditorBase *pNewDLL) { return C_CloseBefore; }
/*tdePermission fn_eAcceptNewEditor (CPA_EditorBase *pNewDLL) { return C_Allow; }*/
BOOL fn_bGetPOFromObject( CPA_BaseObject *_p_oObject );
BOOL fn_bGetPOFromListOrSelection( CPA_List<CPA_BaseObject> *_p_oListObjects );
BOOL fn_bCanActivateEditor (CPA_List<CPA_BaseObject> *pParam);
BOOL fn_bCanCloseEditor (void);
void fn_vOnActivateEditor (CPA_List<CPA_BaseObject> *pParam, BOOL bBackActivated=FALSE);
void fn_vOnCloseEditor (void);
/* ==> General Purpose */
long OnQueryAction (CPA_EditorBase * /*p_oSender*/, WPARAM, LPARAM);
/* ==> Reachable Objects */
BOOL fn_bLoadBaseObject(CPA_BaseObject *p_oObject);
/*====================================================================================*/
/*========================= OBJECT DLL FUNCTIONS OVERLOAD ============================*/
/*====================================================================================*/
/* ==> hierarchy */
CPA_SuperObject * GetNewEditorInstance(HIE_tdxHandleToSuperObject hEngineInstance);
void fn_vBuildNewEditorInstance (CPA_SuperObject *pEditorInstance, HIE_tdxHandleToSuperObject hEngineInstance);
BOOL fn_bCanHandleThisType(long lEngineType);
/* ==> models & instances */
void fn_vInitListByType(CPA_World *pWorld);
/* ==> objects */
CPA_BaseObject *Duplicate(CPA_BaseObject *pObject, CPA_SuperObject *pNewSuperObject);
/*====================================================================================*/
/* Owner*/
/*====================================================================================*/
void fn_vNameChanged (void);
void fn_vComputeBoundingVolume (CPA_BaseObject *pObj);
ACP_tdxHandleOfObject fn_hGetBoundingVolume (CPA_BaseObject *_pObj);
protected:
void fn_vUnSelect (void);
/*ROMTEAM WorldEditor (Cristian Stegaru 01/98)*/
public:
BOOL mfn_bIsACandidateEPO (const CString csName);
int mfn_iGetEPOIdx (CString csEPOName);
void mfn_vFillListOfCandidateEPO ();
PO_tdxHandleToPhysicalObject mfn_hGethPOFromGeomObj (Geometry3D *pG3D);
Shape3D* mfn_pGetGeomObjFromEPOName (CString csEPOName);
EditorPO * mfn_pGetEPOwithGeomObjAttached (PO_tdxHandleToPhysicalObject hPO, CPA_BaseObject *pOwner, char *szSection);
/*ENDROMTEAM WorldEditor (Cristian Stegaru)*/
};
#undef extern
extern tdstDLLIdentity g_stPOIdentity;
#endif /* __PO_INTER_HPP__*/