//************************************** // This is the base class of your DLL interface // All methods of CPA_ObjectDLLBase are // present in that class. //************************************** #ifndef __ACTOR_INTERF_HPP__ #define __ACTOR_INTERF_HPP__ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 #include "ACP_Base.h" #include "ITF.h" #include "IncMEC.h" #define D_ZdxStuff_StructureDefine #define D_State_Define #include "IncGAM.h" #undef D_State_Define #include "GLI.h" // if you want only one instance of your DLL // activate the next line //#define DLL_ONLY_ONE_INSTANCE //////////////////////////////////////////////// // EdCarac specific //YB // Specific Includes #include "Defines.hpp" #include "EDACFmMn.hpp" #include "EDACDoc.hpp" //End EdCarac specific //////////////////////////////////////////////// struct stIndexOfNameInfo { CString csNameOfObject; CPA_Actor *pclModel; CString csObjectType; }; //---------------------------------------------------------- // Object DLL interface class //---------------------------------------------------------- class CPA_Actor_Editor_Interface : public CPA_ObjectDLLBase { private: CPA_List m_stListModels; CPA_KeyActionConfiguration * m_p_oKeyboard; public: CPA_Actor_Editor_Interface(void); ~CPA_Actor_Editor_Interface(void); /*=========================================================================== Virtual Functions =========================================================================*/ public: // To pre translate all messages // virtual BOOL fn_bPreTranslateMessage(MSG * /*p_stMsg*/) { return FALSE; }; // Called just after editor has been inserted in list of all editors virtual void fn_vJustAfterRegistered(void); // Called just before windows main loop processing virtual void fn_vConstruct(void); // Called to refresh datas of DLL if "fn_vCanBeRefresh" returns TRUE virtual void fn_vRefreshDatas(void); // virtual void fn_vLevelChanges(void); // Called when level has changed virtual void fn_vLevelHasChanged(void); virtual BOOL fn_bLoadBaseObject(CPA_BaseObject *p_oObject); /*=========================================================================== Current Editor =========================================================================*/ virtual tdePermission fn_eAcceptNewEditor(CPA_EditorBase *pNewEditor); virtual BOOL fn_bCanActivateEditor(CPA_List *pParams); virtual void fn_vOnActivateEditor (CPA_List *pParams, BOOL bBackActivated=FALSE); virtual BOOL fn_bCanCloseEditor(void); virtual void fn_vOnCloseEditor(void); public: /*=========================================================================== Messages from Evt_Editor =========================================================================*/ // for changes // virtual void fn_vOnChangeDevice (void) { } // Editor Modifs virtual void fn_vOnModifDelete(CPA_List *pListObjects, tdeTypeModif eType, tdeStatus eStatus); // virtual void fn_vOnModifParent(CPA_List *pListObjects, tdeTypeModif eType, tdeStatus eStatus) { } // virtual void fn_vOnModifCopy(CPA_List *pListObjects, tdeTypeModif eType, tdeStatus eStatus) { } virtual void fn_vOnModifName(CPA_SuperObject *pEdObj, CString csInitialName, CString csFinalName, tdeTypeModif eType, tdeStatus eStatus); virtual void fn_vOnSelect(CPA_SuperObject *pEdObj, tdeTypeModif eType, tdeStatus eStatus); //ANNECY Shaitan SPOFlags 19/02/98 virtual void fn_vOnModifFlag (CPA_SuperObject *pEdObj, unsigned long ulOldFlag, unsigned long ulNewFlag); //ENDANNECY Shaitan SPOFlags //ANNECY Shaitan Transparency (26/03/98) { virtual void fn_vOnModifTransparency (CPA_SuperObject *pEdObj, float fNewLevel); //ENDANNECY Shaitan Transparency } virtual void fn_vOnModifInsert( CPA_SuperObject *pEdObj, CPA_SuperObject *pParent, tdstPosition *p_stPosition, tdeTypeModif eType, tdeStatus eStatus); // Moves virtual void fn_vOnModifMove(CPA_List *pListObjects, CPA_List *pListConcerned, tdeTypeModif eType, tdeStatus eStatus); // virtual void fn_vOnBeginMove(CPA_List *pListObjects, CPA_List *pListConcerned, tdeStatus eStatus) { } // virtual void fn_vOnMoving(CPA_List *pListObjects, CPA_List *pListConcerned, tdeStatus eStatus) { } // Models virtual void fn_vOnAddModelToList(CPA_ObjectDLLBase *pOwnerDLL, CString csListName, CString csModelName, tdeTypeModif eType); virtual BOOL fn_bCanDeleteThisModel (CString csListName, CString csModelType, CString csModelName); // permission virtual BOOL fn_bAcceptModifDelete(CPA_List *pListObjects, tdeStatus eStatus); // virtual BOOL fn_bAcceptModifParent(CPA_List *pListObjects, tdeStatus eStatus) { return TRUE; } virtual BOOL fn_bAcceptModifCopy(CPA_List *pListObjects, tdeStatus eStatus); virtual BOOL fn_bAcceptModifTranslate(CPA_List *pListObjects, tdeStatus eStatus); virtual BOOL fn_bAcceptModifRotate(CPA_List *pListObjects, tdeStatus eStatus); virtual BOOL fn_bAcceptModifScale(CPA_SuperObject *pEdObj, tdeStatus eStatus); // virtual BOOL fn_bAcceptModifInsert(CPA_SuperObject *pEdObj, CPA_SuperObject *pParent, tdeStatus eStatus) { return TRUE; } virtual BOOL fn_bAcceptModifName(CPA_SuperObject *pEdObj, tdeStatus eStatus); // virtual BOOL fn_bAcceptMultiSelect(void) { return TRUE; } //ANNECY Shaitan SPOFlags 19/02/98 virtual BOOL fn_bAcceptModifFlag (CPA_SuperObject *pEdObj, unsigned long ulFlag); //ENDANNECY Shaitan SPOFlags // Begin Silviu Simen 18 August 1998 Cut/Paste Mechanism virtual BOOL fn_bAcceptModifCut (CPA_List *pListObjects, tdeStatus eStatus); // End Silviu Simen 18 August 1998 Cut/Paste Mechanism // Begin Silviu Simen List by Sector and type void fn_AddDialogBySector (void); // Begin Silviu Simen List by Sector and type // to precise selection virtual tdeTypeAnswer fn_bAcceptSelect(CPA_SuperObject *pEdObj, ACP_tdxIndex xIndex, HIE_tdstPickInfo *pPicking, tdeStatus eStatus); /*=========================================================================== Dialog List =========================================================================*/ // virtual BOOL fn_bSetCustomTest (CPA_DialogList *pDialog) { return FALSE; } // virtual BOOL fn_bCustomTestFunction (CString csCurrentType, CString csTestName, CPA_SaveObject *pEdObj) { return TRUE; } /*=========================================================================== General Purpose =========================================================================*/ virtual long OnQueryAction (CPA_EditorBase * /*p_oSender*/, WPARAM, LPARAM); // virtual long OnQueryInfos (CPA_DLLBase * /*p_oSender*/, WPARAM, LPARAM) { return 0; }; // virtual long OnQueryOpen (CPA_DLLBase * /*p_oSender*/, WPARAM, LPARAM) { return 0; }; // virtual long OnQueryClose (CPA_DLLBase * /*p_oSender*/, WPARAM, LPARAM) { return 0; }; /*=========================================================================== Coherence =========================================================================*/ virtual BOOL fn_bOnInvalidateLink (CPA_BaseObject *pOwner, CPA_BaseObject *pReferencedObject, BOOL bDestroyed); virtual void fn_vOnRestoreLink (CPA_BaseObject *pOwner, CPA_BaseObject *pReferencedObject); virtual void fn_vOnModifyChild (CPA_BaseObject *pOwner, CPA_BaseObject *pReferencedObject, unsigned long _ulData); /*=========================================================================== Messages =========================================================================*/ // focus virtual void fn_vHasLostFocus (void); virtual BOOL fn_bHasGainedFocus (void); // engine - editor virtual void fn_vBeforeEngine (void); virtual void fn_vBeforeEditor (void); // engine virtual BOOL fn_bAcceptToRunEngine(void); // virtual BOOL fn_bAcceptToRunTimerEngine (void) { return TRUE; }; // end appli // virtual void fn_vJustBeforeClosing (void) { }; // virtual BOOL fn_bAcceptToExit (void) { return TRUE; }; // save virtual void fn_vBeforeSaveAll(void); virtual void fn_vAfterSaveAll(void); virtual BOOL fn_bAcceptToSave(void); // keys virtual BOOL _OnKeyDown (UINT nChar, UINT nRepCnt, UINT nFlags); // virtual BOOL _OnKeyUp (UINT nChar, UINT nRepCnt, UINT nFlags) { return FALSE; }; // mouse // virtual BOOL _OnMouseMove (UINT nFlags, tdstMousePos *p_stPos, MTH3D_tdstVector *p_stVect) { return FALSE; }; // virtual BOOL _OnLButtonDblClk (UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo) { return FALSE; }; // virtual BOOL _OnRButtonDblClk (UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo) { return FALSE; }; // virtual BOOL _OnLButtonDown (UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo) { return FALSE; }; // virtual BOOL _OnRButtonDown (UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo) { return FALSE; }; // virtual BOOL _OnLButtonUp (UINT nFlags, tdstMousePos *p_stPos) { return FALSE; }; // virtual BOOL _OnRButtonUp (UINT nFlags, tdstMousePos *p_stPos) { return FALSE; }; // command // virtual BOOL _OnCommand (UINT IDCmdMsg) { return FALSE; }; // virtual BOOL _OnUpdateCommandUI (UINT uiID, CCmdUI *pCmdUI) { return FALSE; }; // dragdrop // virtual BOOL _OnDragDropEnd (WPARAM wParam, LPARAM lParam) { return FALSE; }; // virtual BOOL _OnDragDropMove (WPARAM wParam, LPARAM lParam) { return FALSE; }; // virtual BOOL _OnDragDropLooseFocus (WPARAM wParam, LPARAM lParam) { return FALSE; }; // virtual BOOL _OnDragDropGainFocus (WPARAM wParam, LPARAM lParam) { return FALSE; }; // add objects to draw // virtual void fn_vAddObjectsToDraw (GLD_tdstViewportAttributes *p1, GLI_tdxHandleToLight p2) { }; // virtual void fn_vAddObjectsToDraw2 (GLD_tdstViewportAttributes *p1, GLI_tdxHandleToLight p2) { }; /*=========================================================================== Reinit =========================================================================*/ // virtual void fn_vOnChangeRoot (void) { }; // virtual void fn_vOnChangeWorld (void) { }; /*=========================================================================== for Dialog List =========================================================================*/ //List control virtual CPA_BaseObject * GetDialogSelection (CPA_DialogList *pDialog, CString csTypeName, tdeListDrawMode eDrawMode); virtual void GetListsForDialog (CPA_DialogList *pDialog); virtual BOOL fn_bOnSelChangeListObjects(CPA_DialogList *pDialog, CString csTypeName, CPA_BaseObject *pSelectedObject, BOOL bUnselect); virtual BOOL fn_bOnDblClkListObjects(CPA_DialogList *pDialog, CString csTypeName, CPA_BaseObject *pSelectedObject); virtual BOOL fn_bOnSelChangeComboList(CPA_DialogList *pDialog, CString csTypeName); virtual BOOL fn_bOnButtonTest(CPA_DialogList *pDialog, CString csTypeName, tdeListDrawMode eDraw); virtual BOOL fn_bOnKeyDownInDialog (CPA_DialogList *pDialog, CString csListName, tdeListDrawMode eDraw, CPA_BaseObject *pSelectedObject, UINT nChar, UINT nRepCnt, UINT nFlags); virtual void fn_vInitDefaultParameters(CPA_DialogList *pDialog); virtual void fn_vSetANewTest(CPA_DialogList *pDialog, CString csCurrentList); virtual BOOL fn_bTestFunction(CString csCurrentType, CString csTestName, CPA_BaseObject *pEdObj); //Tree control virtual BOOL fn_bOnSelChangeHierarchyTree(CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pSelectedObject, CPA_BaseObject *pSelectedParent); virtual BOOL fn_bOnDblClkHierarchyTree(CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pSelectedObject, CPA_BaseObject *pSelectedParent); virtual BOOL fn_bCanDragItemInHierarchyTree(CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pObjectToDrag); virtual BOOL fn_bCanDropItemInHierarchyTree(CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pObjectToDrop, CPA_BaseObject *pTarget); virtual BOOL fn_bOnDragDropInHierarchyTree(CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pObject, CPA_BaseObject *pTarget); virtual CPA_BaseObject *GetTreeNodeNextChild(CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pParent, CPA_BaseObject *pCurrentChild); virtual void *GetInfoForTreeItem(CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pObject, CPA_BaseObject *pParent); virtual int GetIconForTreeItem(CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pObject); virtual int GetStateForTreeItem(CPA_DialogList *pDialog, CString csListName, CPA_BaseObject *pObject); virtual BOOL fn_bAddEntriesToTreePopup(CPA_DialogList *pDialog, CString csListName, CMenu *pMenu, UINT uiCustomEntriesStart); virtual void fn_vOnCommandInTreePopup(CPA_DialogList *pDialog, CString csListName, UINT uiCustomEntry); virtual BOOL fn_bAddEntriesToListPopup(CPA_DialogList *pDialog, CString csListName, CMenu *pMenu, UINT uiCustomEntriesStart); virtual void fn_vOnCommandInListPopup(CPA_DialogList *pDialog, CString csListName, UINT uiCustomEntry); /*=========================================================================== Dialog Bar - Mircea Dunka 31 Aug. 1998 =========================================================================*/ void fn_vDefineDlgBarBtnIcon (tde_DlgBarCategory wCategory, tds_DlgBarBtn *_pDlgBarBtn); /*=========================================================================== SubMenus and PopupMenu =========================================================================*/ virtual BOOL fn_bDefineSubMenu(EDT_SubMenu *_p_oEDTSubMenu); virtual void _OnSubMenuCommand(EDT_SubMenu *_p_oEDTSubMenu,UINT uiMsgID); virtual BOOL fn_bDefinePopupMenu(EDT_PopUpMenu *pPopup, CPA_List *pSelection, BOOL bAsCurrentEditor); virtual void _OnPopUpMenuCommand(UINT m_IDCmdMsg); // Hierarchy virtual CPA_SuperObject *GetNewEditorInstance(HIE_tdxHandleToSuperObject pEngineInstance); virtual void fn_vUpdateEditorInstance(CPA_SuperObject *pEditorInstance, HIE_tdxHandleToSuperObject pEngineInstance); virtual BOOL fn_bCanHandleThisType(long lEngineType); // Models & Instances virtual void fn_vInitListByType(CPA_World *pWorld); virtual void fn_vInitListsOfModels(void); virtual void fn_vSaveListModels(CString csListName, CPA_List *pListModels); virtual CString fn_csLoadListModels(void); virtual EDT_Model *GetNewModel(CString csListName); virtual BOOL fn_bCanLoadNewModel(CString csListName); virtual BOOL fn_bCanDeleteModel(CString csListName); virtual BOOL fn_bCanChangeModelIcon(CString csListName); virtual BOOL fn_bCanSaveListModels(CString csListName); virtual BOOL fn_bCanLoadListModels(void); // virtual void fn_vOnLoadNewModel(CString csListName, EDT_Model *pNewModel); virtual CString fn_csChangeModelIcon (CString csListName, CString csModelName); virtual CPA_SuperObject *GetNewInstance(CString csTypeName, CString csModelName, CPA_SuperObject *pParent); virtual tdeTypeSO GetTypeInstance(CString csTypeName, CString csModelName); //ANNECY Shaitan EmptySectors 25/02/98 virtual tdeSaveStatus GetStatusInstance(CString csTypeName, CString csModelName); //ENDANNECY Shaitan EmptySectors // virtual CPA_SuperObject * GetParentForInsertion (CString csTypeName, CString csModelName, tdstPosition *p_stPosition) { return NULL; } virtual BOOL fn_bChooseInsertPosition(CPA_SuperObject *pNewInstance, CPA_SuperObject *pParent, tdstPosition *p_stPosition); // objects // virtual CPA_Object * GetNewObject (CString csObjectFile, CString csObjectName, FILE *p_fFile, CPA_MainWorld *p_oMainWorld) { return NULL; } virtual CPA_Object *Duplicate(CPA_Object *pObject, CPA_SuperObject *pNewSuperObject); virtual CPA_SuperObject *GetCopyOfProtectedChild (CPA_SuperObject *pInitialChild, CPA_SuperObject *pNewOwner); // permissions for EvtEditor // virtual BOOL fn_bAcceptAsParent(CPA_Object *pChild, CPA_Object *pParent); // virtual BOOL fn_bAcceptAsChild(CPA_Object *pParent, CPA_Object *pChild); // when insertion is canceled virtual void fn_vOnCancelInsertion(CPA_SuperObject *pInstance); // Bounding Volume virtual void fn_vComputeBoundingVolume(CPA_BaseObject *pObject); virtual ACP_tdxHandleOfObject fn_hGetBoundingVolume(CPA_BaseObject *_pObj); //////// //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- //(YB) Editor's specific members //Attributes public: //The (one and only) document EdActors_MyDocument m_clDocument; //The main frame class CMainFrame *m_pclCaracMainFrame; // Shaitan => module list in the level BOOL m_bCanGenerateOptimizedLevel; // End Shaitan => module list in the level protected: private: //For List Dialog CPA_Family *m_pclFamilyFilter; CPA_Actor *m_pclModelFilter; CPA_Actor *m_pclSelectedInstance; CPA_Actor *m_pclSelectedActorForTreeView; //Model or Instance //CPA2 Stegaru Cristian 98-05 CPA_UnloadedAlways *m_pSelectedUnloadedAlways; //End CPA2 Stegaru Cristian 98-05 EdActors_EditorActor *m_pcl3DSelectedActor; //For tree CImageList m_clImageListForTree; //Empty SuperObject CPA_SuperObject *m_pclTreeRoot; BOOL m_pri_bTreeMustShowUnloadedObjects; BOOL m_pri_bTreeMustOnlyShowFamiliesWithModels; //For Undo / Redo handling CString m_csEditorVersion; // For Anim Player CPA_Actor *m_pTempActorModel; CPA_Actor *m_pTempActorModelInstance; CPA_SuperObject *m_pTempInstanceSO; CPA_SuperObject *m_pTempModelSO; // For display BOOL m_bShowActors; void *m_pEngineModule; //Functions public: //For list Handling void m_fn_vSetListWithAFamily(CPA_Family *); void m_fn_vSetListWithAModel(EdActors_EditorActorModel *); CString m_fn_csGetEditorVersion(); //For List Dialog void m_pub_fn_vSetSelectionInDialogList(CPA_Actor *_pclNewSelection); //CPA2 Stegaru Cristian 98/07/01 BOOL mfn_bUnloadAlwaysFromLevel (CPA_Actor *pActor); //End CPA2 Stegaru Cristian 98/07/01 //CPA2 Gabi Dumitrascu 98/07/15 void mfn_vLoadAlways (CPA_UnloadedAlways *pUAlways); //End CPA2 Gabi Dumitrascu 98/07/15 protected: private: void m_fn_vLookForModifiedDatas(); void m_fn_vShowEditor(); void m_fn_vHideEditor(); void m_fn_vPrepareMotorActor(CPA_Actor *pclEdActor); //CPA2 Stegaru Cristian 98-04 void m_fn_vCheckFamilyBoundingVolume (CPA_Actor *pclEdActor); BOOL mfn_bDisplayInfo (UINT uID); //End CPA2 Stegaru Cristian 98-04 // For Anim player CPA_SuperObject* m_fn_pGetAnActorInstance (CPA_BaseObject *p_oFamily); void m_fn_vDeleteTempActorInstance(); // For Watch data void m_fn_LoadWatchData(); // For display void mfn_vUpdateDisplayOfAllActors (BOOL bShowInactive); friend class EdActors_ActorsView; friend class EdActors_MyDocument; //(YB) End of Editor's specific members //-------------------------------------------------------------------------- }; // YB // #undef extern extern CPA_Actor_Editor_Interface *g_pclInterface; // End YB // extern tdstDLLIdentity g_stActorEditorIdentity; #endif // __ACTOR_INTER