//***************************************************************************** //* _zInterf.hpp * //***************************************************************************** //* * //* This file contains the definition of the ZDx_Interface class. * //* * //***************************************************************************** //* Author : Alexis Vaisse * //***************************************************************************** #ifndef __ZINTERF_HPP__ #define __ZINTERF_HPP__ #pragma once // if you want only one instance of your DLL, activate the next line #define DLL_ONLY_ONE_INSTANCE #include "IncITF.h" // Actors dll "include" class CPA_Actor; class EdtList; class CPA_tdoNameList; // Physical Object dll "include" class EditorPO; // Family dll "include" // ANNECY AV CLEAN_MEC { //class CPA_TestPointsList; // END ANNECY AV } typedef enum eZDxConstraintType_ { eZDxNormal , eZDxModifyAllActors , eZDxModifyOneActor } tdeZDxConstraintType; // personal "include" #include "_zObject.hpp" class ZDx_Object; class ZDx_Modif; class CDisplayControlWindow; class CList1Window; class CList2Window; class CZDxInfoWindow; class EdtList; // Flags for the function : ShowZDxOfInstance #define C_ucHideAllZDx 0 #define C_ucShowZDD 1 #define C_ucShowZDE 2 #define C_ucShowZDM 4 #define C_ucShowZDR 8 #define C_ucShowAllZDx (C_ucShowZDD + C_ucShowZDE + C_ucShowZDM + C_ucShowZDR) // ANNECY AV CLEAN_MEC { //#define C_ucShowTestPoint 16 // END ANNECY AV } // Constant for the RefreshDisplay function #define C_lOnInsertActor 1 #define C_lOnDeleteActor 2 #define C_lOnInsertZDxOfActor 3 #define C_lOnDeleteZDxOfActor 4 #define C_lOnInsertZDxOfModule 5 #define C_lOnDeleteZDxOfModule 6 #define C_lOnInsertBV 7 #define C_lOnDeleteBV 8 // ANNECY AV CLEAN_MEC { //#define C_lOnInsertTestPoint 9 //#define C_lOnDeleteTestPoint 10 // END ANNECY AV } #define C_lOnSelectActor 11 #define C_lOnSelectZDxOfActor 12 #define C_lOnMouseMove 13 #define C_lOnSelChangeTreeCtrl1 14 #define C_lOnSelChangeTreeCtrl2 15 #define C_lOnSelChangeCombo2 16 #define C_lOnCheckBoxShowActor 17 #define C_lOnCheckBoxShowModule 18 #define C_lOnCheckBoxesZDx 19 #define C_lOnButtonAllZDx 20 #define C_ucSetCamera 21 #define C_lRedrawZDxObject 22 #define C_lModifZDx 23 #define C_lModifDeleteDo 24 #define C_lModifDeleteUndo 25 #define C_lShowZDxOfAllActors 26 #define C_lOnButtonAllActors 27 #define C_lShowZDxSelectedActor 28 #define C_lHideZDxSelectedActor 29 #define C_lShowModuleZDxActor 30 #define C_lHideModuleZDxActor 31 #define C_lPopupMenuShowZone 32 #define C_lShowZDxOfOneModule 33 #define C_lShowZDxOfAllModule 34 #define C_lEnterBoundingVolume 35 #define C_lLeaveBoundingVolume 36 // ANNECY AV CLEAN_MEC { //#define C_lEnterTestPoint 37 //#define C_lLeaveTestPoint 38 // END ANNECY AV } #define C_lLButtonDown 39 // Name of the list of ZDx models #define C_szZDxListName "Zone" //----------------------------------------------------------------------------- // stSizeChangingMode structure // used when the user changes the size of the ZDx object with the mouse //----------------------------------------------------------------------------- typedef struct stSizeChangingMode_ { BOOL bActiveMode; // Are we in "size changing" mode ? CPA_SuperObject * pSelectedZDxSuperObject; // The ZDx object whose size is changing MTH3D_tdstVector GlobalSelectedPoint; // The 3D coordinates of the point of the ZDx object pointed by the mouse in the global repere MTH3D_tdstVector LocalSelectedPoint; // The 3D coordinates of the same point in the local repere MTH3D_tdstVector CenterInMousePlane; // The 3D coordinates of the center of the sphere, projected into the plane where the mouse moves into ZDx_Modif * pZDxModif; BOOL bChangeTopPointOfCone; // When changing the size of a cone : if TRUE, change the top point, else change the radius } tdstSizeChangingMode; //----------------------------------------------------------------------------- // Object DLL interface class //----------------------------------------------------------------------------- class ZDx_Interface : public CPA_ObjectDLLBase { public: ZDx_Interface (void); // Constructor //------------------------------------------- //--- Virtual functions of the base class --- (file : _zInterf.cpp) //------------------------------------------- // --- General functions for editor --- public: void fn_vJustAfterRegistered(void); // Called for the first initializations void fn_vConstruct (void); // Called once the 3D window is constructed void fn_vBeforeEditor (void); // Called just before entering editor mode void fn_vBeforeEngine (void); // Called just before leaving editor mode void fn_vOnActivateEditor (CPA_List * pParams , BOOL bBackActivated = FALSE); // Called when somebody wants to open the ZDx editor void fn_vOnCloseEditor (void); // Called when somebody wants to close the ZDx editor BOOL fn_bHasGainedFocus (void); // Called when the dll becomes the current dll void fn_vHasLostFocus (void); // Called when the dll is no longer the current dll long OnQueryAction (CPA_EditorBase * pCallingDll , WPARAM , LPARAM); // To communicate with the dll long OnQueryInfos (CPA_EditorBase * pCallingDll , WPARAM , LPARAM); // To communicate with the dll /*=========================================================================== Dialog Bar - Mircea Dunka 31 Aug. 1998 =========================================================================*/ public: void fn_vDefineDlgBarBtnIcon (tde_DlgBarCategory wCategory, tds_DlgBarBtn *_pDlgBarBtn); // --- Menu --- public: BOOL fn_bDefineSubMenu (EDT_SubMenu * _p_oEDTSubMenu); // This function lets the dll add an entry in a sub menu void _OnSubMenuCommand (EDT_SubMenu * _p_oEDTSubMenu,UINT uiMsgID); // Called when the user clics on an entry in a sub menu BOOL fn_bDefinePopupMenu (EDT_PopUpMenu * pPopup , CPA_List * pSelection , BOOL bAsCurrentEditor); // This function lets the dll add an entry in the popup menu void _OnPopUpMenuCommand (UINT m_IDCmdMsg); // Called when the user clics on an entry in the popup menu // --- Questions to manage ZDx objects --- public: BOOL fn_bCanActivateEditor (CPA_List * _pParams); // Return if the editor can be activated BOOL fn_bCanHandleThisType (long lEngineType); // The type of the objects we can handle tdePermission fn_eAcceptNewEditor (CPA_EditorBase * pNewDLL) // When another editor is activated, we want to close the window { return C_CloseBefore; } BOOL fn_bAcceptModifRotate (CPA_List * pListObjects , tdeStatus eStatus) // We don't want the rotation matrix of a ZDx object to be modified { return eStatus != C_AsConcernedDLL; } BOOL fn_bAcceptModifScale (CPA_SuperObject * pEdObj , tdeStatus eStatus) // We don't want the scale of a ZDx object to be modified { return eStatus != C_AsConcernedDLL; } BOOL fn_bAcceptModifParent (CPA_List * pListObjects , tdeStatus eStatus); // One cannot change the parent of a zone BOOL fn_bAcceptModifCopy (CPA_List * pListObjects , tdeStatus eStatus); // A ZDx object can be copied BOOL fn_bAcceptAsChild (CPA_BaseObject * pParent, CPA_BaseObject * pChild) { return FALSE; } // We don't want any child for a ZDx object BOOL fn_bAcceptAsParent (CPA_BaseObject * pChild , CPA_BaseObject * pParent); // Only actors or modules can be parent for a ZDx object BOOL fn_bAcceptModifInsert (CPA_SuperObject * pSuperObjectToInsert, CPA_SuperObject *pParent, tdeStatus eStatus); // Called before a object is inserted into the hierarchy // --- Functions to manage ZDx objects --- public: void fn_vInitListByType (CPA_World * pWorld); // To register the different types of objects void fn_vInitListsOfModels (); // To register the different types of models tdeTypeSO GetTypeInstance (CString csTypeName , CString csModelName) { return C_Protected; } // Return the type of the super object of a ZDx object //ANNECY Shaitan EmptySectors 25/02/98 tdeSaveStatus GetStatusInstance (CString csTypeName, CString csModelName) { return E_ss_NoSave; } //ENDANNECY Shaitan EmptySectors CPA_SuperObject * GetNewInstance (CString csTypeName , CString csModelName , CPA_SuperObject * pParent); // To insert a new ZDx object into the world BOOL fn_bChooseInsertPosition (CPA_SuperObject * pNewInstance , CPA_SuperObject * pParent , tdstPosition * pPosition); // To choose the position where to insert the ZDx object CPA_SuperObject * GetParentForInsertion (CString csTypeName , CString csModelName , tdstPosition * pPosition); // To choose the parent when inserting a ZDx object CPA_BaseObject * Duplicate (CPA_BaseObject * pObject, CPA_SuperObject * pSuperObject); // To copy a ZDx object CPA_SuperObject * GetCopyOfProtectedChild (CPA_SuperObject * pChild, CPA_SuperObject * pNewOwner); // To copy a protected child of a ZDx object void fn_vComputeBoundingVolume (CPA_BaseObject * _pObject); // Compute bounding volume of a ZDx object ACP_tdxHandleOfObject fn_hGetBoundingVolume (CPA_BaseObject * _pObject); // Return bounding volume of a ZDx object // --- Modifications --- public: void fn_vOnModifInsert (CPA_SuperObject * pEdObj , CPA_SuperObject * pParent, tdstPosition * p_stPosition , tdeTypeModif , tdeStatus eStatus); // Called when an object is inserted void fn_vOnModifDelete (CPA_List * , tdeTypeModif , tdeStatus eStatus); // Called when an object is deleted void fn_vOnCancelInsertion (CPA_SuperObject * _pSuperObject); // This function is called when an insertion is canceled void fn_vOnModifCopy (CPA_List * , tdeTypeModif , tdeStatus eStatus); // Called when an object has been copied void fn_vOnBeginMove (CPA_List * pListObjects , CPA_List * pListConcerned , tdeStatus eStatus); // This funtion is called just before a move //CPA2 (Corneliu Babiuc) 15-04-1998 void fn_vOnMoving (CPA_List * pListObjects , CPA_List * pListConcerned, tdeStatus eStatus); // This function is called when a ZDx object is moved //END CPA2 (Corneliu Babiuc) 15-04-1998 void fn_vOnModifMove (CPA_List * pListObjects , CPA_List * pListConcerned , tdeTypeModif eType, tdeStatus eStatus); // This function is called after a ZDx object has been moved void fn_vOnSelect (CPA_SuperObject *pSuperObject, tdeTypeModif eType, tdeStatus eStatus); // This function is called when a ZDx Object is selected // --- Windows messages --- public: BOOL _OnKeyDown (UINT nChar , UINT nRepCnt , UINT nFlags); // Called when a key is pressed BOOL _OnKeyUp (UINT nChar , UINT nRepCnt , UINT nFlags); // Called when a key is released BOOL _OnMouseMove (UINT nFlags, tdstMousePos * p_stPos, MTH3D_tdstVector * p_stObject); // Called when the mouse moves BOOL _OnLButtonDown (UINT nFlags, tdstMousePos * p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo * p_stObject); // Called when the left button is pressed BOOL _OnLButtonUp (UINT nFlags, tdstMousePos * p_stPos); // Called when the left button is released //ROMTEAM WorldEditor BOOL _OnLButtonDblClk (UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo); // Called when the left button is double clicked //ENDROMTEAM WorldEditor //-------------------------- //--- Internal functions --- //-------------------------- // --- Internal functions for questions --- private: BOOL AcceptModifInsertZDxOfActor (CPA_SuperObject * pSuperObjectToInsert , CPA_SuperObject * pParent); // Called before a ZDx of actor is inserted into the hierarchy BOOL AcceptModifInsertZDxOfModule (CPA_SuperObject * pSuperObjectToInsert , CPA_SuperObject * pParent); // Called before a ZDx of module is inserted into the hierarchy BOOL AcceptModifInsertBoundingVolume (CPA_SuperObject * pSuperObjectToInsert , CPA_SuperObject * pParent); // Called before a ZDx which is a bounding volume is inserted into the hierarchy // ANNECY AV CLEAN_MEC { // BOOL AcceptModifInsertTestPoint (CPA_SuperObject * pSuperObjectToInsert , CPA_SuperObject * pParent); // Called before a ZDx which is a test point is inserted into the hierarchy // END ANNECY AV } // --- Internal functions for modifications --- private: void OnInsertActor (CPA_SuperObject * _pActorSuperObject); // Called when an actor is inserted into the hierarchy void OnDeleteActor (CPA_SuperObject * _pActorSuperObject); // Called when an actor is deleted from the hierarchy void OnInsertZDxOfActor (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pActorSuperObject ); // Called when a ZDx of actor is inserted into the hierarchy void OnDeleteZDxOfActor (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pActorSuperObject ); // Called when a ZDx of actor is deleted from the hierarchy void OnInsertZDxOfModule (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pModuleSuperObject); // Called when a ZDx of module is inserted into the hierarchy void OnDeleteZDxOfModule (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pModuleSuperObject); // Called when a ZDx of module is deleted from the hierarchy void OnInsertBoundingVolume (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pActorSuperObject , BOOL bCreateBdV = TRUE); // Called when a ZDx that is a bounding volume is inserted into the hierarchy void OnDeleteBoundingVolume (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pActorSuperObject ); // Called when a ZDx that is a bounding volume is deleted from the hierarchy // ANNECY AV CLEAN_MEC { // void OnInsertTestPoint (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pActorSuperObject ); // Called when a ZDx that is a test point is inserted into the hierarchy // void OnDeleteTestPoint (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pActorSuperObject ); // Called when a ZDx that is a test point is deleted from the hierarchy // END ANNECY AV } void OnSelectActor (CPA_SuperObject * _pActorSuperObject , tdeTypeModif eType); // Called when an actor is selected or unselected void OnSelectZDxOfActor (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pActorSuperObject , tdeTypeModif eType); // Called when a ZDx of actor is selected or unselected void OnSelectModule (CPA_SuperObject * _pModuleSuperObject , tdeTypeModif eType); // Called when a module is selected or unselected void OnSelectZDxOfModule (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pModuleSuperObject , tdeTypeModif eType); // Called when a ZDx of a module is selected or unselected void OnSelectBoundingVolume (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pModuleSuperObject , tdeTypeModif eType); // Called when a ZDx objct that is a bounding volume is selected or unselected // ANNECY AV CLEAN_MEC { // void OnSelectTestPoint (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pModuleSuperObject , tdeTypeModif eType); // Called when a ZDx objct that is a test point is selected or unselected // END ANNECY AV } //--------------------- //--- Personal data --- //--------------------- private: CPA_KeyActionConfiguration * m_pZDxKeyActionConfiguration; // To use the keyboard BOOL m_bSizeKeyPressed; // To store the key state //CPA2 (Corneliu Babiuc) 13-04-1997 BOOL m_bMoveOnlyActorKeyPressed; // Is TRUE when the key for "moving actor only" is pressed BOOL m_bMoveOnlyActor; // Is TRUE when the "moving actor only" mode is activated //END CPA2 (Corneliu Babiuc) 13-04-1997 BOOL m_bMoveHasBegun; // Is TRUE when a object move has begun (to differentiate move and move-to) BOOL m_bIsSelectingObject; // Is TRUE when selecting an object BOOL m_bIsAskingToSelectObject; // Is TRUE when asking the hierarchy editor to select an object BOOL m_bIsShowingOrHidingZDx; // Is TRUE when showing or hiding ZDx BOOL m_bIsInsertingZDxObject; // Is TRUE when inserting a ZDx into the hierarchy BOOL m_bIsDeletingZDxObject; // Is TRUE when deleting a ZDx from the hierarchy BOOL m_bIsInsideOnModifInsertDelete;// Is TRUE inside the OnModifInsert or OnModifDelete function BOOL m_bAskToEditModuleZone; // Is TRUE when one wants to edit the module zones when one opens the editor long m_lRefreshDisplayCallerID; // The ID of the function that will refresh the display CPA_SuperObject * m_pActorSuperObjectToUnselect; // Actor whose ZDx must be hidden CPA_SuperObject * m_pModuleSuperObjectToUnselect;// Module whose ZDx must be hidden ACP_tdxHandleOfObject m_GlobalBoundingVolume; // Used to give the bounding volume of a ZDx CSplitFrame * m_pSplitFrame; // Frame where all the windows are CDisplayControlWindow * m_pDisplayControlWindow; // Window associated to the frame for the display control CList1Window * m_pList1Window; // Window associated to the frame for the first list CList2Window * m_pList2Window; // Window associated to the frame for the second list CZDxInfoWindow * m_pEditWindow; // Window associated to the frame where one can edit a ZDx tdstSizeChangingMode m_stSizeChangingMode; // Used when the user changes the size of a ZDx object with the mouse //-------------------------- //--- Personal functions --- (file : _zInterf.inc) //-------------------------- // --- Get functions for windows --- public: CList1Window * GetList1Window () { return m_pList1Window; } CList2Window * GetList2Window () { return m_pList2Window; } CZDxInfoWindow * GetEditWindow () { return m_pEditWindow; } CDisplayControlWindow * GetDisplayControlWindow () { return m_pDisplayControlWindow; } // --- Personal low-level functions private: void ConvertVectorGlobalToLocal (MTH3D_tdstVector * pDest , POS_tdstCompletePosition * pAbsoluteMatrix , MTH3D_tdstVector * pSource); // Function to convert a vector from the global repere to a local repere void ConvertVectorLocalToGlobal (MTH3D_tdstVector * pDest , POS_tdstCompletePosition * pAbsoluteMatrix , MTH3D_tdstVector * pSource); // Function to convert a vector from a local repere to the global repere void ConvertPointGlobalToLocal (MTH3D_tdstVector * pDest , POS_tdstCompletePosition * pAbsoluteMatrix , MTH3D_tdstVector * pSource); // Function to convert a point from the global repere to a local repere void ConvertPointLocalToGlobal (MTH3D_tdstVector * pDest , POS_tdstCompletePosition * pAbsoluteMatrix , MTH3D_tdstVector * pSource); // Function to convert a point from a local repere to the global //CPA2 (Corneliu Babiuc) 15-04-1998 //this function is intended to set the local translation vector of a zone to keep unchanged its global position void MoveBackZone (CPA_SuperObject * _pZDxSuperObject, MTH3D_tdstVector * p_stVector = NULL); //END CPA2 (Corneliu Babiuc) 15-04-1998 // --- Various functions --- private: char * GetZDxTypeName (tdeZDxType _eZDxType); // return the name ("Zdd"...) of the ZDx type CPA_SuperObject * GetSelectedActorSuperObject (); // Return the selected actor. NULL if none public: unsigned char ConvertZDxTypeToEngineType (tdeZDxType _eZDxType); // Convert a ZDx type to a type used by the engine CPA_SuperObject * GetZDxSuperObject (ZDx_Object * , CPA_SuperObject * _pParentSuperObject); // Look at all childs of _pParentSuperObject to find the super object // associated with the given ZDx object BOOL IsInsideOnModifInsertDelete () { return m_bIsInsideOnModifInsertDelete; }// Is TRUE inside the OnModifInsert or OnModifDelete function // --- Personal functions for models --- private: void AddModelOfZDx (); // Add all the models of ZDx into the model window void RemoveModelOfZDx (); // Remove all the models of ZDx from the model window // --- Personal functions for ZDx creation --- private: CPA_SuperObject * CreateSuperObject (); // Create a super object public: //ROMTEAM WorldEditor Shape3D * CreateGraphicObject (tdeZDxGeometricType /*, ACP_tdxHandleOfElement * */, char * _szDataPath , const CString _csReferenceSectionName); // Create graphic object (sphere, box...) private: CPA_SuperObject * CreateGraphicSuperObject (tdeZDxGeometricType /*, ACP_tdxHandleOfElement * */, char * _szDataPath , const CString _csReferenceSectionName); // Create a graphic super object (sphere, box...) // ENDROMTEAM WorldEditor CPA_BaseObject * GetFamilyForNewInstance (CPA_BaseObject * _pParent); // Give the family of a new created ZDx object void ComputeSectionNameForNewInstance (char * * _p_szDataPath , CString * _p_csReferenceSectionName , CPA_BaseObject * _pParent); // Compute the data path and the reference section name to give to a created ZDx object CPA_SuperObject * GetNewInstanceWithSameZDxObject (ZDx_Object * pZDxObject , char * szZDxGeometricTypeName); // Same function as GetNewInstance, but use an existing ZDx object ZDx_Object * CreateZdxObject (LPARAM lParam); // Create a new Zdx with an existing engine zone // ANNECY AV CLEAN_MEC { // void CreateZdxTestPoints (CPA_TestPointsList *); // For each test point in the given list, create an associated ZDx object // END ANNECY AV } // --- Communication with hierarchy editor --- public: void AskHierarchyEditorToSelectObject (CPA_SuperObject * _pSuperObject); // Ask the hierarchy editor to select an actor void InsertZDxObjectIntoHierarchy (CPA_SuperObject * _pZDxSuperObject , CPA_SuperObject * _pParentSuperObject); // Ask the hierarchy editor to insert a ZDx object into the hierarchy void DeleteZDxObjectFromHierarchy (CPA_SuperObject * _pZDxSuperObject); // Ask the hierarchy editor to delete a ZDx object from the hierarchy // --- Show / Hide ZDx objects --- private: void SetDisplayFlag (EdtList * , tdeZDxDisplayType); // Set the display zone flag of all ZDx of the list // ANNECY AV CLEAN_MEC { // void SetDisplayFlag (CPA_TestPointsList * , tdeZDxDisplayType);// Set the display zone flag of all test points of the list // END ANNECY AV } void SetDisplayFlagOfAllActors (BOOL _bNewFlag); // Set the display zone flag of all actors void SetAspectOfZDx (CPA_SuperObject * , BOOL _bSelected); // Set the graphical aspect of a ZDx : selected or not selected public: void PutZDxIntoHierarchy (CPA_SuperObject * _pFatherSuperObject , // Put a ZDx as child of a super object into the hierarchy ZDx_Object * _pZDxObject , BOOL _bSelectZDx , BOOL _bSetEditProtected = FALSE); private: void CheckAndPutZDxIntoHierarchy (CPA_SuperObject * _pFatherSuperObject , // Check if the ZDx must be put into the hierarchy ZDx_Object * _pZDxObject , BOOL _bSelectZDx , BOOL _bSetEditProtected = FALSE); void PutListOfZDxIntoHierarchy (EdtList * _pListOfZDx , // Put a list of ZDx as childs of a super object into the hierarchy CPA_SuperObject * _pFapherSuperObject , ZDx_Object * _pZDxObjectToSelect , BOOL _bUseDisplayFlag , BOOL _bSetEditProtected = FALSE); // ANNECY AV CLEAN_MEC { /* void PutListOfTestPointIntoHierarchy // Put a list of test points as childs of a super object into the hierarchy (CPA_TestPointsList * _pTestPointList , CPA_SuperObject * _pFapherSuperObject , ZDx_Object * _pZDxObjectToSelect , BOOL _bUseDisplayFlag , BOOL _bSetEditProtected = FALSE); */ // END ANNECY AV } public: void ShowZDxOfActor (CPA_SuperObject * _pActorSuperObject , unsigned char _ZDxToShow , ZDx_Object * _pZDxToSelect = NULL , // Show the ZDx of an actor which have the correct type, select one ZDx if necessaray BOOL _bUseDisplayFlag = TRUE , BOOL _bSetEditProtected = FALSE); void ShowAllZDxOfAllActors (unsigned char _ucZDxToShow , BOOL _bShowOnlySelected); // Show all ZDx of all actors. If _bShowOnlySelected = TRUE, // show only the zones of actors that have the bDisplayZone flag set void ShowZDxOfModule (CPA_SuperObject * _pModuleSuperObject , unsigned char _ucZDxToShow , ZDx_Object * _pZDxToSelect = NULL , BOOL _bSetEditProtected = FALSE); // Show the ZDx of a module (insert ZDx objects in the hierarchy) void ShowBoundingVolume (CPA_SuperObject * _pActorSuperObject , ZDx_Object * _pBoundingVolume , BOOL _bSelectZDx); // Show the bounding volume of an actor private: void ShowModuleZDxRecursiv (CPA_SuperObject * _pModuleSuperObject); // Show all zdx of a module and of all of its module childs public: void ShowModuleZDxOfActor (CPA_SuperObject * _pActorSuperObject); // Show all ZDx of all modules of an actor private: void HideModuleZDxRecursiv (CPA_SuperObject * _pModuleSuperObject); // Hide all zdx of a module and of all of its module childs public: void HideModuleZDxOfActor (CPA_SuperObject * _pActorSuperObject); // Hide all ZDx of all modules of an actor private: void ShowZDxOfAllModule (unsigned char _ucZDxToShow); // Show or hide the ZDx of all modules in the world void ShowZDxOfSelectedActor (); // Show all ZDx of selected actor void HideZDxOfSelectedActor (); // Hide all ZDx of selected actor // --- Refresh display --- public: BOOL IWillRefreshDisplay (long _lCallerID); // Someone say he will refresh the display later (to prevent multiple refreshes) // Return TRUE if nobody else has asked it before BOOL RefreshDisplay (long _lCallerID , BOOL _bRefreshDisplay = TRUE); // Refresh the display if the caller has asked it before (to prevent from multiple refreshes) // --- Check if ZDx are displayed --- private: BOOL AreZDxOfActorDisplayed (CPA_SuperObject * _pActorSuperObject); // Return if the ZDx of the actor are displayed or not BOOL AreZDxOfModuleDisplayed (CPA_SuperObject * _pModuleSuperObject);// Return if the ZDx of the module are displayed or not BOOL AreZDxOfAllModuleDisplayed (); // Return TRUE if at least one ZDx of one module in the world is displayed BOOL AreZDxOfModuleDisplayedRecursiv (CPA_SuperObject * _pModuleSuperObject);// Return if the ZDx of the given module and of all its module childs are displayed or not BOOL AreModuleZDxOfActorDisplayed (CPA_SuperObject * _pActorSuperObject); // Return if the module ZDx of the actor are displayed or not // --- Check if an actor has ZDx --- public: BOOL DoesActorHaveZDx (CPA_BaseObject * _pActor); // Return if an actor has some ZDx or not BOOL DoesActorHaveModuleZDx (CPA_SuperObject * _pActorSuperObject); // Return if an actor has some ZDx of module or not // --- List of zones --- private: long GetNumberOfZDxInList (EdtList * _pEdtList); // Get the number of existing ZDx in a list public: CString ConvertZDxTypeToListType (tdeZDxType); // Convert a ZDx type to a list type tdeZDxType ConvertListTypeToZDxType (CString); // Convert a list type to a ZDx type CPA_tdoNameList * GetNameList (CPA_BaseObject * _pActor , tdeZDxType _eZDxType); // Call the Actors dll to get the list of names of an actor for a specific type EdtList * CreateANewZDxList (CPA_BaseObject * _pActor , tdeZDxType _eZDxType); // Call the Actors dll to create a new list of ZDx EdtList * GetZDxList (CPA_BaseObject * _pActor , tdeZDxType _eZDxType); // Call the Actors dll to get the list of ZDx of an actor void SetZDxList (CPA_BaseObject * _pActor , tdeZDxType _eZDxType , EdtList * _pZDxList); // Call the Actors dll to set the list of ZDx of an actor BOOL DeleteZDxList (CPA_BaseObject * _pActor , tdeZDxType _eZDxType); // Call the Actors dll to delete a list of ZDx of an actor ; return FALSE if failure void SetZDxObjectInList (CPA_BaseObject * _pActor , tdeZDxType _eZDxType , long _lIndexInList , ZDx_Object * pZDxObject , tdeZDxConstraintType _eZDxConstraintType = eZDxNormal); // Call the Actors dll to set a ZDx in a list of ZDx of an actor BOOL InsertZDxIntoList (EdtList * , ZDx_Object * , long * plPosition , CPA_BaseObject * _pActor , tdeZDxConstraintType _eZDxConstraintType = eZDxNormal); // Insert a ZDx object into a list at a specific position. // If Position = -1, insert it at the first unused position. // Failure -> return FALSE (no more unused position) void RemoveZDxFromList (EdtList * , ZDx_Object * , CPA_BaseObject * _pActor , BOOL _bEnableListCreation = FALSE); // Remove a ZDx object from a list private: void AZDxHasBeenChangedInList (void * _pEdtListMess); // Called when a ZDx has been changed in a list of ZDx BOOL IsObjectInList (CPA_BaseObject * _pObject, CPA_BaseObject * _pActor , tdeZDxType _eZDxType); // Return TRUE if the given object is in a list of ZDx // --- Physical objects --- public: ZDx_Object * GetZDxOfPhysicalObject (EditorPO * , tdeZDxType); // return the ZDx object of a given type of a physical object void SetZDxOfPhysicalObject (EditorPO * , ZDx_Object * , tdeZDxType); // set the ZDx object (can be NULL) of a given type for a physical object private: BOOL DoesModuleHaveZDx (EditorPO *); // Return if a module has some ZDx of not BOOL DoesModuleHaveZDxRecursiv (CPA_SuperObject * _pModuleSuperObject); // Return if a module or one of its module childs has some ZDx or not BOOL DoesAtLeastOneModuleHaveZDx (); // Return TRUE if at least one module in the world has some ZDx // --- Personal functions for size changing --- private: //ROMTEAM WorldEditor /* void ChangeSizeZDxSphereObject (MTH3D_tdstVector * p_stDeplacement); // Called by the OnMouseMove function when changing the size of a sphere void ChangeSizeZDxBoxObject (MTH3D_tdstVector * p_stDeplacement); // Called by the OnMouseMovefunction when changing the size of a box void ChangeSizeZDxConeObject (MTH3D_tdstVector * p_stDeplacement); // Called by the OnMouseMove function when changing the size of a cone void OnBeginChangingSize (ACP_tdxIndex xIndex , HIE_tdstPickInfo * p_stObject); // Called when the user begins to change the size of a ZDx object void OnEndChangingSize (); // Called when the user has finished to change the size of a ZDx object */ //ENDROMTEAM WorldEditor // --- Compute dimension of objects --- private: //ANNECY TQ 19/03/98{ void ComputeBoundingBoxOfObject (CPA_BaseObject * _pObject , POS_tdstCompletePosition * _pGlobalMatrix ,POS_tdstCompletePosition * _pLocalMatrix , MTH3D_tdstVector * _pMinPoint , MTH3D_tdstVector * _pMaxPoint); //ENDANNECY TQ} // Compute the bounding box of a geometric object, and return its limits in _pMinPoint and _pMaxPoint void ComputeBoundingBoxOfObjectAndChilds (CPA_SuperObject * _pSuperObject , MTH3D_tdstVector * _pMinPoint, MTH3D_tdstVector *_pMaxPoint); // Compute the bounding box of an object and all of its childs, and return the limits in _pMinPoint and _pMaxPoint public: void ComputeInitialSizeOfBox (CPA_SuperObject * _pSuperObject , MTH3D_tdstVector * MinPoint , MTH3D_tdstVector * MaxPoint); // Compute the bounding box dimension of an object and all of its childs MTH_tdxReal ComputeInitialSizeOfSphere (CPA_SuperObject * _pSuperObject , MTH3D_tdstVector * Center); //ROMTEAM WorldEditor (Cristi Petrescu 12/12/97) long m_lGetTypeOfZoneByGeometricObject (Geometry3D *pGeometry3D); //ENDROMTEAM WorldEditor (Cristi Petrescu) //CPA2 Stegaru Cristian 98-04 BOOL mfn_bObjectIsOutsideTheBV (ZDx_Object *pBVolume, ZDx_Object *pZDxObject); BOOL mfn_bIs1SphereOutsideThe2Sphere (MTH3D_tdstVector *ptdstMasterCenter, GLI_tdxValue tdxMasterRadius, MTH3D_tdstVector *ptdstSlaveCenter, GLI_tdxValue tdxSlaveRadius); void mfn_vCheckActorsZonesAndBV (CPA_SuperObject * pActorSuperObject); //End CPA2 Stegaru Cristian 98-04 }; //----------------------------------------------------------------------------- // Global variables //----------------------------------------------------------------------------- // the DLL global definition extern tdstDLLIdentity g_stZDxDllIdentity; #endif // __ZINTERF_HPP__