388 lines
22 KiB
C++
388 lines
22 KiB
C++
/* (c) Ubi Studios 1996*/
|
|
/* See Vincent Greco for any comment or question*/
|
|
|
|
#ifndef __3DOBJECT_HPP__
|
|
#define __3DOBJECT_HPP__
|
|
|
|
#ifdef CPA_WANTS_IMPORT
|
|
#pragma message("=================================================================================")
|
|
#pragma message("=================================================================================")
|
|
#pragma message("WARNING, use of 3DGEOM DLL objects with CPA_WANTS_IMPORT defined.")
|
|
#pragma message("=================================================================================")
|
|
#pragma message("=================================================================================")
|
|
#endif
|
|
|
|
/****************************************/
|
|
#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
|
|
/****************************************/
|
|
|
|
class SectionElement;
|
|
|
|
/****************************************/
|
|
/* enums*/
|
|
/****************************************/
|
|
|
|
typedef enum
|
|
{
|
|
C_Ok, C_BadElement, C_BadValue
|
|
}
|
|
tdeGeomResult;
|
|
|
|
typedef enum
|
|
{
|
|
C_Set, C_Inc
|
|
}
|
|
tdeModifType;
|
|
|
|
typedef enum
|
|
{
|
|
C_X, C_Y, C_Z
|
|
}
|
|
tdeCompoType;
|
|
|
|
/****************************************/
|
|
/* structs*/
|
|
/****************************************/
|
|
/* BEGIN CPA2 Cristi Petrescu 98-02-*/
|
|
/* In a modification we do not need to keep the value. This can be retrieved at save time from the object data*/
|
|
/* Remember: in the mdf files we keep the update values, not the backup*/
|
|
/* END CPA2 Cristi Petrescu 98-02-*/
|
|
typedef struct tdstModifPoint_
|
|
{
|
|
ACP_tdxIndex xIndexOfPoint;
|
|
/* BEGIN CPA2 Cristi Petrescu 98-02-*/
|
|
/*MTH3D_tdstVector st3DPoint;*/
|
|
/* END CPA2 Cristi Petrescu 98-02-*/
|
|
}
|
|
tdstModifPoint;
|
|
|
|
typedef struct tdstModifGMT_
|
|
{
|
|
ACP_tdxHandleOfElement hElement;
|
|
ACP_tdxIndex xElementType;
|
|
ACP_tdxIndex xIndexInElement;
|
|
/* BEGIN CPA2 Cristi Petrescu 98-02-*/
|
|
/*CString csGameMaterialName;*/
|
|
GMT_tdxHandleToGameMaterial hGameMaterial;
|
|
/* END CPA2 Cristi Petrescu 98-02-*/
|
|
}
|
|
tdstModifGMT;
|
|
|
|
typedef struct tdstModifFMD_
|
|
{
|
|
ACP_tdxIndex xElementIT;
|
|
ACP_tdxIndex xIndexFaceIT;
|
|
ACP_tdxIndex xElementFMD;
|
|
ACP_tdxIndex xIndexFaceFMD;
|
|
} tdstModifFMD ;
|
|
|
|
typedef struct tdstInfoFMD_
|
|
{
|
|
ACP_tdxHandleOfFMD hFMD;
|
|
SectionElement *p_oSectionElementFMD;
|
|
} tdstInfoFMD;
|
|
|
|
/****************************************/
|
|
/* classes*/
|
|
/****************************************/
|
|
class SectionElement : public CPA_SectionObject
|
|
{
|
|
/* datas*/
|
|
private:
|
|
void *m_hElement;
|
|
/* methods*/
|
|
public:
|
|
SectionElement(const CString csReferencedSectionName, char *p_szDataPath, SCR_tdpfn_Ntfy_Callback pCallBack,
|
|
void *pSectionData = NULL, BOOL bExistingSection = TRUE)
|
|
:CPA_SectionObject(csReferencedSectionName, p_szDataPath, pCallBack, pSectionData, bExistingSection)
|
|
{}
|
|
|
|
void SetElement (void *_hElement) { m_hElement = _hElement; }
|
|
void *hGetElement (void) { return m_hElement; }
|
|
};
|
|
|
|
class CPA_EXPORT Geometry3D : public CPA_ModifiableObject, public CPA_EdMot<ACP_tdxHandleOfObject>
|
|
{
|
|
/* datas*/
|
|
private:
|
|
ACP_tdxHandleOfObject m_hBoundingVolume;
|
|
BOOL m_bMustRecomputeBdV;
|
|
BOOL m_bEndCreated;
|
|
CPA_SectionObject *m_p_oModifSection;
|
|
/*CPA_SectionObject *m_p_oModifListSection;*/
|
|
CPA_List<tdstModifPoint> m_oListOfModifiedPoints;
|
|
CPA_List<tdstModifGMT> m_oListOfGMTModif;
|
|
CPA_List<tdstModifFMD> m_oListOfFMDModif;
|
|
BOOL m_bMustSaveFMD;
|
|
CPA_List<tdstInfoFMD> m_oListOfFMD;
|
|
long m_lUniqueFMD;
|
|
public:
|
|
/*ROMTEAM WorldEditor (Viorel Preoteasa) 20/01/98*/
|
|
void fn_vSetMustRecomputeBdV(BOOL B = TRUE){m_bMustRecomputeBdV = B;}
|
|
/*ENDROMTEAM WorldEditor (Viorel Preoteasa)*/
|
|
|
|
/*ROMTEAM WorldEditor (Cristian Stegaru) 01/98*/
|
|
CPA_List<SectionElement> m_oListOfElementSections;
|
|
/*ENDROMTEAM WorldEditor (Cristian Stegaru)*/
|
|
|
|
/**/
|
|
/**/
|
|
/* methods on 3DObject.cpp*/
|
|
/**/
|
|
/**/
|
|
public:
|
|
static void StaticInit(CPA_MainWorld *_p_oMainWorld);
|
|
/* constructor to encapsulate an existing engine object*/
|
|
Geometry3D(CPA_EditorBase *_p_oEditor, CPA_BaseObject *_p_oOwnerFile, ACP_tdxHandleOfObject _hObject, const CString _csName = "", char *_p_cRefPath = NULL, tdeSaveStatus _eStatus = E_ss_Modify);
|
|
/* constructor to create and save a new object*/
|
|
Geometry3D(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);
|
|
/* constructor to create and a new object which can't be save*/
|
|
Geometry3D(CPA_EditorBase *_p_oEditor, ACP_tdxIndex xNbPoints, ACP_tdxIndex xNbElements, const CString _csName = "", tdeSaveStatus _eStatus = E_ss_NoSave);
|
|
|
|
~Geometry3D();
|
|
/* virtual member overlapped*/
|
|
|
|
/* CPA_BaseObject*/
|
|
void *GetData (void) { return (void*)GetStruct(); }
|
|
long GetDataType (void) { return HIE_C_ulEDT_Geometric; }
|
|
/* to choose unicity criteria*/
|
|
tdeMissingCriteria fn_eCheckUnicity (const CString csNewName) { return fn_eCheckUnicityWithOwner(csNewName); }
|
|
/* CPA_SaveObject*/
|
|
/* virtual functions*/
|
|
BOOL fn_bCanBeModified (void);
|
|
|
|
void fn_vUpdateSectionName (void);
|
|
void fn_vNotifySave (void);
|
|
void fn_vNotifyUnSave (void);
|
|
void fn_vNotifyRestore (void);
|
|
void fn_vNotifyRename (void);
|
|
|
|
void fn_vNotifySaveObject (void);
|
|
void fn_vNotifyUnSaveObject (void);
|
|
void fn_vNotifyRestoreObject (void);
|
|
void fn_vNotifyRenameObject (void);
|
|
|
|
void fn_vNotifySaveElement (ACP_tdxHandleOfElement _hElement);
|
|
void fn_vNotifyUnSaveElement (ACP_tdxHandleOfElement _hElement);
|
|
void fn_vNotifyRestoreElement (ACP_tdxHandleOfElement _hElement);
|
|
void fn_vNotifyRenameElement (ACP_tdxHandleOfElement _hElement);
|
|
|
|
/* Modif Section*/
|
|
void SetExistingModifSection (BOOL _bExists);
|
|
/* BEGIN CPA2 Cristi Petrescu 98-02-*/
|
|
void mfn_vComputeModifSectionName (char *_p_cFileName);
|
|
void mfn_vLoadModifSection (void);
|
|
void mfn_vCreateModifSection (char *szModifSectionName = NULL);
|
|
/* END CPA2 Cristi Petrescu 98-02-*/
|
|
/*void SetExistingModifListSection(BOOL _bExists);*/
|
|
|
|
/* Load CallBack*/
|
|
static SCR_tde_Anl_ReturnValue CallBackLoad (SCR_tdst_File_Description *_p_stFile, char *_pszName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction);
|
|
static SCR_tde_Anl_ReturnValue CallBackLoadModif (SCR_tdst_File_Description *_p_stFile, char *_pszName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction);
|
|
/*static SCR_tde_Anl_ReturnValue CallBackLoadModifList(SCR_tdst_File_Description *_p_stFile, char *_pszName, char *_ap_szParams[], SCR_tde_Anl_Action _eAction);*/
|
|
|
|
/* Save CallBack*/
|
|
static void CallBackSaveModifGeometricObject ( SCR_tdst_File_Description *p_stFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction);
|
|
/*static void CallBackSaveModifListGeometricObject( SCR_tdst_File_Description *p_stFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction);*/
|
|
static void CallBackSaveGeometricObject ( SCR_tdst_File_Description *p_stFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction);
|
|
static void CallBackSaveGeometricElement ( SCR_tdst_File_Description *p_stFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction);
|
|
|
|
static void CallBackSaveElementIndexedTriangle (SCR_tdst_File_Description *p_stFile, char *p_szSectionName, GEO_tdstElementIndexedTriangles *p_stElement);
|
|
static void CallBackSaveElementFaceMapDescriptors (SCR_tdst_File_Description *p_stFile, char *p_szSectionName, GEO_tdstElementFaceMapDescriptors *p_stElement);
|
|
static void CallBackSaveFaceMapDescriptors (SCR_tdst_File_Description *p_stFile, char *p_szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction);
|
|
static void CallBackSaveElementSprites (SCR_tdst_File_Description *p_stFile, char *p_szSectionName, GEO_tdstElementSprite *p_stElement);
|
|
static void CallBackSaveElementTMeshes (SCR_tdst_File_Description *p_stFile, char *p_szSectionName, GEO_tdstElementTMeshes *p_stElement);
|
|
static void CallBackSaveElementPoints (SCR_tdst_File_Description *p_stFile, char *p_szSectionName, GEO_tdstElementPoints *p_stElement);
|
|
static void CallBackSaveElementLines (SCR_tdst_File_Description *p_stFile, char *p_szSectionName, GEO_tdstElementLines *p_stElement);
|
|
static void CallBackSaveElementSpheres (SCR_tdst_File_Description *p_stFile, char *p_szSectionName, GEO_tdstElementSpheres *p_stElement);
|
|
static void CallBackSaveElementAlignedBox (SCR_tdst_File_Description *p_stFile, char *p_szSectionName, GEO_tdstElementAlignedBoxes *p_stElement);
|
|
static void CallBackSaveElementCones (SCR_tdst_File_Description *p_stFile, char *p_szSectionName, GEO_tdstElementCones *p_stElement);
|
|
/* BEGIN CPA2 Cristi Petrescu 98-03-*/
|
|
#ifdef USE_ALTIMAPS
|
|
static void CallBackSaveElementAltimap (SCR_tdst_File_Description *p_stFile, char *p_szSectionName, GEO_tdstElementAltimap *p_stElement);
|
|
#endif
|
|
/* END CPA2 Cristi Petrescu 98-03-*/
|
|
|
|
/**/
|
|
void mfn_vSaveModifications (FILE *_pFile, char *_szIdentity);
|
|
BOOL mfn_bMustSaveModifications (void);
|
|
BOOL mfn_bMustSaveFMD (void) { return m_bMustSaveFMD; }
|
|
void mfn_vSaveFMD (void);
|
|
|
|
/*ROMTEAM WorldEditor (Cristian Stegaru 12/97)*/
|
|
virtual void mfn_vInitElement (char *szFileReference, char *szClassPath, BOOL bSectionExists = FALSE);
|
|
void mfn_vRefreshElement ();
|
|
/*ENDROMTEAM WorldEditor (Cristian Stegaru)*/
|
|
|
|
protected:
|
|
/* MODIFICATIONS*/
|
|
void fn_vInitModifSections (void);
|
|
void fn_vInitFMD (void);
|
|
/* points*/
|
|
void fn_vClearModificationsList (void);
|
|
void fn_vAddModification (ACP_tdxIndex _xIndex/*, MTH3D_tdstVector *_p_st3DPoint*/);
|
|
tdstModifPoint *fn_p_stGetModification (ACP_tdxIndex _xIndex);
|
|
void fn_vOwnerSetPoint (ACP_tdxIndex xNumPoint,MTH3D_tdstVector *p_stPoint);
|
|
/* material*/
|
|
void fn_vClearGMTModificationsList(void);
|
|
void fn_vAddGMTModification (ACP_tdxHandleOfElement _hElement, ACP_tdxIndex _xIndexInElement, GMT_tdxHandleToGameMaterial _hGameMaterial);
|
|
tdstModifGMT *fn_p_stGetGMTModification (ACP_tdxHandleOfElement _hElement, ACP_tdxIndex _xIndexInElement);
|
|
void fn_vOwnerSetMaterial (ACP_tdxHandleOfElement _hElement, ACP_tdxIndex _xIndexInElement, GMT_tdxHandleToGameMaterial _hGameMaterial);
|
|
/* FMD*/
|
|
void fn_vClearFMDModificationsList(void);
|
|
void fn_vAddFMDModification (ACP_tdxIndex xElementIT, ACP_tdxIndex xFaceIT, ACP_tdxIndex xElementFMD, ACP_tdxIndex xFaceFMD);
|
|
void fn_vDelFMDModification (ACP_tdxIndex xElementIT, ACP_tdxIndex xFaceIT, ACP_tdxIndex xElementFMD, ACP_tdxIndex xFaceFMD);
|
|
tdstModifFMD *fn_p_stGetFMDModification (ACP_tdxIndex xElementIT, ACP_tdxIndex xFaceIT, ACP_tdxIndex xElementFMD, ACP_tdxIndex xFaceFMD);
|
|
/**/
|
|
/**/
|
|
/* methods on 3DObject.cxx*/
|
|
/**/
|
|
/**/
|
|
public:
|
|
/**/
|
|
/* object modifications*/
|
|
/**/
|
|
void fn_vGetPoint (ACP_tdxIndex xNumPoint,MTH3D_tdstVector *p_stPoint);
|
|
void fn_vSetPoint (ACP_tdxIndex xNumPoint,MTH3D_tdstVector *p_stPoint);
|
|
void fn_vTranslatePoint (ACP_tdxIndex _xPoint,MTH3D_tdstVector *_p_st3DTranslation);
|
|
void fn_vSetOnState (CString _ocsModificationType, BOOL _bInitialState);
|
|
|
|
ACP_tdxIndex fn_xGetNbIndexedElements (ACP_tdxHandleOfElement _hElement);
|
|
static char *mfn_p_szGetGameMaterialName(GMT_tdxHandleToGameMaterial hGameMaterial);
|
|
CPA_BaseObject *fn_p_oGetGameMaterial (ACP_tdxHandleOfElement _hElement, ACP_tdxIndex _xIndexInElement = 0);
|
|
void fn_vSetGameMaterial (ACP_tdxHandleOfElement _hElement, ACP_tdxIndex _xIndexInElement, CPA_BaseObject *_p_oGMT);
|
|
void fn_vSetEngineGameMaterial (ACP_tdxHandleOfElement _hElement, ACP_tdxIndex _xIndexInElement, GMT_tdxHandleToGameMaterial _hGameMaterial);
|
|
/**/
|
|
/* bounding volume*/
|
|
/**/
|
|
ACP_tdxHandleOfObject fn_hGetBoundingVolume (void);
|
|
void fn_vComputeBoundingVolume (BOOL _bRecompute = FALSE);
|
|
/**/
|
|
/* element construction*/
|
|
/**/
|
|
tdeGeomResult fn_vSetListOfPoints (ACP_tdxIndex xNbPoints, MTH3D_tdstVector *p_stPoint);
|
|
void fn_vEndCreation (void);
|
|
void fn_vAllocAndComputeListOfPointsMaterial(void);
|
|
/* spheres*/
|
|
ACP_tdxHandleOfElement fn_hCreateElementSpheres(ACP_tdxIndex xNbSpheres);
|
|
tdeGeomResult fn_eSetIndexedSphere (ACP_tdxHandleOfElement hElementSphere, ACP_tdxIndex xIndexOfSphere, ACP_tdxIndex xCenter, MTH_tdxReal xRadius);
|
|
/* aligned box*/
|
|
ACP_tdxHandleOfElement fn_hCreateElementAlignedBox (ACP_tdxIndex xNbAlignedBoxes);
|
|
tdeGeomResult fn_eSetAlignedBox (ACP_tdxHandleOfElement hElementAlignedBox, ACP_tdxIndex xNumberOfAlignedBox, ACP_tdxIndex xMinPoint, ACP_tdxIndex xMaxPoint);
|
|
/* cone*/
|
|
ACP_tdxHandleOfElement fn_hCreateElementCone (ACP_tdxIndex xNbCones);
|
|
tdeGeomResult fn_eSetCone (ACP_tdxHandleOfElement hElementCone, ACP_tdxIndex xNumberOfCone, ACP_tdxIndex xTopPoint, ACP_tdxIndex xBasePoint, MTH_tdxReal xBaseRadius);
|
|
tdeGeomResult fn_eSetConePoints (ACP_tdxHandleOfElement hElementCone, ACP_tdxIndex xNumberOfCone, ACP_tdxIndex xTopPoint, ACP_tdxIndex xBasePoint);
|
|
tdeGeomResult fn_eSetConeBaseRadius (ACP_tdxHandleOfElement hElementCone, ACP_tdxIndex xNumberOfCone, MTH_tdxReal xBaseRadius);
|
|
tdeGeomResult fn_eGetConePoints (ACP_tdxHandleOfElement hElementCone, ACP_tdxIndex xNumberOfCone, ACP_tdxIndex *_p_xTopPoint, ACP_tdxIndex *_p_xBasePoint);
|
|
MTH_tdxReal fn_xGetConeBaseRadius (ACP_tdxHandleOfElement hElementCone, ACP_tdxIndex xNumberOfCone);
|
|
/* indexed triangle*/
|
|
ACP_tdxHandleOfElement fn_hCreateElementIndexedTriangle (ACP_tdxIndex xNbFaces, ACP_tdxIndex xNbElementUV);
|
|
tdeGeomResult fn_eSetIndexedTriangle (ACP_tdxHandleOfElement hElementIT, ACP_tdxIndex xNumberOfFace, ACP_tdxIndex xPoint1, ACP_tdxIndex xPoint2, ACP_tdxIndex xPoint3);
|
|
tdeGeomResult fn_eGetIndexedTrianglePoints (ACP_tdxHandleOfElement hElementIT, ACP_tdxIndex xNumberOfFace, ACP_tdxIndex *_p_xPt1, ACP_tdxIndex *_p_xPt2, ACP_tdxIndex *_p_xPt3);
|
|
/* BEGIN CPA2 Cristi Petrescu 98-03-*/
|
|
/* altimap*/
|
|
#ifdef USE_ALTIMAPS
|
|
ACP_tdxHandleOfElement fn_hCreateElementAltimap (ACP_tdxIndex xNbVertices, ACP_tdxIndex xNbSquares, ACP_tdxIndex xNbVisibleTriangles, ACP_tdxIndex xNbUVValues, ACP_tdxIndex xNbMaterials);
|
|
#endif
|
|
/* END CPA2 Cristi Petrescu 98-03-*/
|
|
/* point*/
|
|
ACP_tdxHandleOfElement fn_hCreateElementPoints (ACP_tdxIndex xNumberOfPoints);
|
|
tdeGeomResult fn_eSetIndexedPoint (ACP_tdxHandleOfElement hElementPoint, ACP_tdxIndex xNumberOfPoint, ACP_tdxIndex xIndexOfPoint);
|
|
tdeGeomResult fn_eSetFatnessOfElementPoint (ACP_tdxHandleOfElement hElementPoint, MTH_tdxReal xFatness);
|
|
ACP_tdxIndex fn_xGetIndexedPointPoint (ACP_tdxHandleOfElement hElementPoint, ACP_tdxIndex xNumberOfPoint);
|
|
MTH_tdxReal fn_xGetFatness (ACP_tdxHandleOfElement hElementPoint, ACP_tdxIndex xNumberOfPoint);
|
|
/* sphere transformations*/
|
|
tdeGeomResult fn_eGetCenter (MTH3D_tdstVector *p_st3DCenter, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumSphere = 0);
|
|
tdeGeomResult fn_eGetCenterX (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumSphere = 0);
|
|
tdeGeomResult fn_eGetCenterY (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumSphere = 0);
|
|
tdeGeomResult fn_eGetCenterZ (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumSphere = 0);
|
|
|
|
tdeGeomResult fn_eSetCenter (MTH3D_tdstVector *p_stPoint, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumSphere = 0);
|
|
tdeGeomResult fn_eSetCenterX (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumSphere = 0);
|
|
tdeGeomResult fn_eSetCenterY (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumSphere = 0);
|
|
tdeGeomResult fn_eSetCenterZ (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumSphere = 0);
|
|
|
|
tdeGeomResult fn_eGetRadius (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumSphere = 0);
|
|
|
|
tdeGeomResult fn_eSetRadius (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumSphere = 0);
|
|
|
|
/* Aligned box*/
|
|
tdeGeomResult fn_eGetMinPoint (MTH3D_tdstVector *p_st3DPoint, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eSetMinPoint (MTH3D_tdstVector *p_st3DPoint, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eSetMinPointX (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eSetMinPointY (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eSetMinPointZ (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eIncMinPointX (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eIncMinPointY (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eIncMinPointZ (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
|
|
tdeGeomResult fn_eGetMaxPoint (MTH3D_tdstVector *p_st3DPoint, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eSetMaxPoint (MTH3D_tdstVector *p_st3DPoint, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eSetMaxPointX (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eSetMaxPointY (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eSetMaxPointZ (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eIncMaxPointX (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eIncMaxPointY (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eIncMaxPointZ (MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
/* BEGIN CPA2 Cristi Petrescu 98-03-*/
|
|
/* Use the Engine functions please (GEO_...)*/
|
|
/* or the Altimap3D object*/
|
|
/* Altimaps transf*/
|
|
/*tdeGeomResult fn_eGetOrigin (MTH3D_tdstVector *p_st3DPoint, ACP_tdxHandleOfElement hElement);*/
|
|
/*tdeGeomResult fn_eSetOrigin (MTH3D_tdstVector st3DPoint, ACP_tdxHandleOfElement hElement);*/
|
|
/*tdeGeomResult fn_eGetSquarePattern (ACP_tdxIndex *p_xWidth, MTH_tdxReal *p_xSquareDimX, ACP_tdxIndex *p_xDepth, MTH_tdxReal *p_xSquareDimY, ACP_tdxHandleOfElement hElement);*/
|
|
/*tdeGeomResult fn_eSetSquarePattern (ACP_tdxIndex xWidth, MTH_tdxReal xSquareDimX, ACP_tdxIndex xDepth, MTH_tdxReal xSquareDimY, ACP_tdxHandleOfElement hElement);*/
|
|
/*tdeGeomResult fn_eSetNbFaces (ACP_tdxIndex xNbSquares, ACP_tdxHandleOfElement hElement);*/
|
|
/* END CPA2 Cristi Petrescu 98-03-*/
|
|
/* indexed triangles transformations*/
|
|
void fn_vMoveFaceToFaceDescriptors(ACP_tdxIndex xElementIT, ACP_tdxIndex xFaceIT, ACP_tdxIndex *p_xElementFMD, ACP_tdxIndex *p_xFaceFMD);
|
|
void fn_vMoveFaceDescriptorsToFace(ACP_tdxIndex xElementFMD, ACP_tdxIndex xFaceFMD, ACP_tdxIndex xElementIT, ACP_tdxIndex xFaceIT);
|
|
/**/
|
|
/* type verification*/
|
|
/**/
|
|
BOOL fn_bIsSphere (ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumSphere = 0);
|
|
BOOL fn_bIsAlignedBox (ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
BOOL fn_bIsCone (ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumCone = 0);
|
|
BOOL fn_bIsIndexedTriangle (ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumIT = 0);
|
|
BOOL fn_bIsPoint (ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumPoint = 0);
|
|
BOOL fn_bIsLine (ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumLine = 0);
|
|
/* BEGIN CPA2 Cristi Petrescu 98-03-*/
|
|
BOOL fn_bIsAltimap (ACP_tdxHandleOfElement hElement);
|
|
/* END CPA2 Cristi Petrescu 98-03-*/
|
|
BOOL fn_bIsFMD (ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumFace = 0);
|
|
/*ROMTEAM WorldEditor (Viorel Preoteasa 20/01/98) */
|
|
public:
|
|
void fn_vEndModification (void);
|
|
/*protected:*/
|
|
/* void fn_vEndModification (void);*/
|
|
/*ENDROMTEAM WorldEditor (Viorel Preoteasa) */
|
|
GMT_tdxHandleToGameMaterial fn_hGetDefaultGameMaterial (void);
|
|
|
|
/*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*/
|
|
protected:
|
|
void fn_vEndGMTModification (ACP_tdxHandleOfElement hElement, ACP_tdxIndex xDataElementIndex = 0);
|
|
tdeGeomResult fn_eModifyMinPoint (tdeModifType eModif,tdeCompoType eCompo,MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
tdeGeomResult fn_eModifyMaxPoint (tdeModifType eModif,tdeCompoType eCompo,MTH_tdxReal *p_xValue, ACP_tdxHandleOfElement hElement, ACP_tdxIndex xNumBox = 0);
|
|
|
|
GMT_tdxHandleToGameMaterial fn_hGetGameMaterial (ACP_tdxHandleOfElement _hElement, ACP_tdxIndex _xIndexInElement);
|
|
|
|
void fn_vComputeElementReferencedSectionName (char *_szSectionName, ACP_tdxHandleOfElement _hElement);
|
|
void fn_vInitElementSection (ACP_tdxHandleOfElement _hElement);
|
|
};
|
|
|
|
#endif /*__3DOBJECT_HPP__*/
|