1057 lines
35 KiB
C++
1057 lines
35 KiB
C++
// Implementation for the List Dialog functions
|
|
//
|
|
// << Part of _AInterf.cpp >>
|
|
//
|
|
// YB
|
|
////////////////////////////////////////////////
|
|
#include "StdAfx.h"
|
|
|
|
#include "_AInterf.hpp"
|
|
|
|
#include "EDACInst.hpp"
|
|
#include "EDACModl.hpp"
|
|
#include "EDACCnst.hpp"
|
|
#include "EDACIres.h"
|
|
// Shaitan => optimisation lists in the level
|
|
#include "EDACQuer.hpp"
|
|
// End Shaitan => optimisation lists in the level
|
|
|
|
//CPA2 Stegaru Cristian 98-05
|
|
#include "EDACStrg.hpp"
|
|
//End CPA2 Stegaru Cristian 98-05
|
|
|
|
#include "TFa.h"
|
|
#include "ErO.h"
|
|
#include "X:\cpa\main\inc\_EditID.h"
|
|
|
|
#undef CPA_WANTS_IMPORT
|
|
#undef CPA_EXPORT
|
|
#define CPA_WANTS_EXPORT
|
|
#include "_Actors.hpp"
|
|
#undef CPA_WANTS_EXPORT
|
|
#define CPA_WANTS_IMPORT
|
|
|
|
|
|
#define EDAC_C_TreeIconSize 16
|
|
|
|
//######################################################################################
|
|
//######################################################################################
|
|
// Lists Dialog
|
|
//######################################################################################
|
|
//######################################################################################
|
|
|
|
//**************************************************************************************
|
|
// This is an Init function
|
|
void CPA_Actor_Editor_Interface::GetListsForDialog(CPA_DialogList *pDialog)
|
|
{
|
|
//Lists
|
|
pDialog->fn_vAddANewList(EDAC_C_szFamiliesList, GetMainWorld()->fn_p_oGetOriginalObjectList(C_szFamilyTypeName));
|
|
pDialog->fn_vAddANewList(EDAC_C_szModelsList, &(m_clDocument.m_clModelsList));
|
|
pDialog->fn_vAddANewList(EDAC_C_szInstancesList, &(m_clDocument.m_clInstancesList));
|
|
pDialog->fn_vAddANewList(EDAC_C_szAlwaysList, &(m_clDocument.m_clAlwaysList));
|
|
//CPA2 Stegaru Cristian 98-05
|
|
pDialog->fn_vAddANewList(EDAC_C_szUnloadedAlwaysList, &(m_clDocument.m_clUnloadedAlwaysList));
|
|
//End CPA2 Stegaru Cristian 98-05
|
|
|
|
//Tree
|
|
//Prepares Icons for tree
|
|
m_clImageListForTree.Create(EDAC_C_TreeIconSize, EDAC_C_TreeIconSize, ILC_MASK, 0, 6);
|
|
m_clImageListForTree.Add(LoadIcon(GetDLLIdentity()->hModule, MAKEINTRESOURCE(IDI_CAR_TREE_FAMILIES)));
|
|
m_clImageListForTree.Add(LoadIcon(GetDLLIdentity()->hModule, MAKEINTRESOURCE(IDI_CAR_TREE_MODELS)));
|
|
m_clImageListForTree.Add(LoadIcon(GetDLLIdentity()->hModule, MAKEINTRESOURCE(IDI_CAR_TREE_INSTANCES)));
|
|
m_clImageListForTree.Add(LoadIcon(GetDLLIdentity()->hModule, MAKEINTRESOURCE(IDI_CAR_TREE_ALWAYS)));
|
|
|
|
///States
|
|
m_clImageListForTree.Add(LoadIcon(GetDLLIdentity()->hModule, MAKEINTRESOURCE(IDI_CAR_TREE_LOADED)));
|
|
m_clImageListForTree.Add(LoadIcon(GetDLLIdentity()->hModule, MAKEINTRESOURCE(IDI_CAR_TREE_UNLOADED)));
|
|
|
|
m_pclTreeRoot = GetInterface()->GetNewSuperObject(E_ss_NoSave);
|
|
pDialog->fn_vAddANewTree( EDAC_C_szTreeView,
|
|
m_pclTreeRoot,
|
|
&m_clImageListForTree,
|
|
&m_clImageListForTree);
|
|
|
|
m_pri_bTreeMustShowUnloadedObjects = m_clDocument.m_pri_bTreeMustShowUnloadedObjects;
|
|
m_pri_bTreeMustOnlyShowFamiliesWithModels = m_clDocument.m_pri_bTreeMustOnlyShowFamiliesWithModels;
|
|
}
|
|
|
|
//**************************************************************************************
|
|
void CPA_Actor_Editor_Interface::fn_vInitDefaultParameters(CPA_DialogList *pDialog)
|
|
{
|
|
pDialog->SetDefaultDisplay(FALSE);
|
|
|
|
pDialog->SetDefaultButtonState(FALSE);
|
|
pDialog->SetDefaultTestName("<< No Test >>");
|
|
// pDialog->SetDefaultTypeName(EDAC_C_szModelsList);
|
|
pDialog->SetDefaultTypeName(m_clDocument.m_csInitDialogListType);
|
|
}
|
|
|
|
//**************************************************************************************
|
|
void CPA_Actor_Editor_Interface::m_pub_fn_vSetSelectionInDialogList(CPA_Actor *_pclNewSelection)
|
|
{
|
|
if ( m_clDocument.m_bMustSynchronizeDialogListWithEdition )
|
|
{
|
|
if ( (_pclNewSelection != NULL) && (_pclNewSelection->fn_bIsAvailable()) )
|
|
{
|
|
if ( _pclNewSelection->m_fn_bIsAModel() )
|
|
{
|
|
m_pclFamilyFilter = NULL;
|
|
m_pclModelFilter = _pclNewSelection;
|
|
}
|
|
else
|
|
{
|
|
m_pclFamilyFilter = NULL;
|
|
m_pclModelFilter = NULL;
|
|
m_pclSelectedInstance = _pclNewSelection;
|
|
}
|
|
|
|
m_pclSelectedActorForTreeView = _pclNewSelection;
|
|
|
|
//In Tree mode
|
|
if ( m_clDocument.m_pclDialogList->GetCurrentType().CompareNoCase(EDAC_C_szTreeView) != 0 )
|
|
{
|
|
if ( _pclNewSelection->m_fn_bIsAModel() )
|
|
m_clDocument.m_pclDialogList->SetCurrentType(EDAC_C_szModelsList);
|
|
else
|
|
m_clDocument.m_pclDialogList->SetCurrentType(EDAC_C_szInstancesList);
|
|
}
|
|
|
|
m_clDocument.m_pclDialogList->fn_vUpdateSelection(E_lrm_ChangeSelection);
|
|
}
|
|
}
|
|
}
|
|
|
|
//**************************************************************************************
|
|
void CPA_Actor_Editor_Interface::fn_vSetANewTest(CPA_DialogList *pDialog,
|
|
CString csCurrentList)
|
|
{
|
|
CString csButtonText = "<< No Filter >>";
|
|
BOOL bButtonMustBeEnabled = TRUE;
|
|
BOOL bButtonState = FALSE;
|
|
|
|
if ( csCurrentList.Compare(EDAC_C_szModelsList) == 0 )
|
|
{
|
|
if ( m_pclFamilyFilter != NULL )
|
|
csButtonText = CString("Models of Family '") + m_pclFamilyFilter->GetName() + CString("'");
|
|
else
|
|
csButtonText = "All Models";
|
|
|
|
bButtonMustBeEnabled = TRUE;
|
|
bButtonState = TRUE;
|
|
|
|
}
|
|
else if ( csCurrentList.Compare(EDAC_C_szInstancesList) == 0 )
|
|
{
|
|
if ( m_pclModelFilter != NULL )
|
|
csButtonText = CString("Instances of Model '")
|
|
+ m_pclModelFilter->m_fn_pclGetEditorActor()->m_fn_csGetActorName() + CString ("'");
|
|
else if ( m_pclFamilyFilter != NULL )
|
|
csButtonText = CString("Instances of Family '")
|
|
+ m_pclFamilyFilter->GetName() + CString ("'");
|
|
else
|
|
csButtonText = "All Instances";
|
|
|
|
bButtonMustBeEnabled = TRUE;
|
|
bButtonState = TRUE;
|
|
}
|
|
else if ( csCurrentList.Compare(EDAC_C_szAlwaysList) == 0 )
|
|
{
|
|
if ( m_pclModelFilter != NULL )
|
|
csButtonText = CString("Always of Model '")
|
|
+ m_pclModelFilter->m_fn_pclGetEditorActor()->m_fn_csGetActorName() + CString ("'");
|
|
else if ( m_pclFamilyFilter != NULL )
|
|
csButtonText = CString("Always of Family '")
|
|
+ m_pclFamilyFilter->GetName() + CString ("'");
|
|
else
|
|
csButtonText = "All Always";
|
|
|
|
bButtonMustBeEnabled = TRUE;
|
|
bButtonState = TRUE;
|
|
}
|
|
|
|
pDialog->fn_vInitButtonTest((char *)LPCTSTR(csButtonText),
|
|
bButtonState,
|
|
bButtonMustBeEnabled);
|
|
}
|
|
|
|
//**************************************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bTestFunction(CString csCurrentType,
|
|
CString csTestName,
|
|
CPA_BaseObject *pEdObj)
|
|
{
|
|
BOOL bReturnValue = TRUE;
|
|
|
|
if ( csCurrentType.Compare(EDAC_C_szModelsList) == 0 )
|
|
{
|
|
if ( m_pclFamilyFilter != NULL )
|
|
bReturnValue = ( ((CPA_Actor *)pEdObj)->m_pub_fn_pclGetFamily() == m_pclFamilyFilter );
|
|
}
|
|
else if ( csCurrentType.Compare(EDAC_C_szInstancesList) == 0 )
|
|
{
|
|
if ( m_pclModelFilter != NULL )
|
|
{
|
|
CPA_Actor *pclModel = ((EdActors_EditorActorInstance *)(((CPA_Actor *)pEdObj)->m_fn_pclGetEditorActor()))->m_fn_pclGetModel();
|
|
bReturnValue = ( pclModel == m_pclModelFilter );
|
|
}
|
|
else if ( m_pclFamilyFilter != NULL )
|
|
{
|
|
CPA_Family *pclFamily = ((CPA_Actor *)pEdObj)->m_pub_fn_pclGetFamily();
|
|
bReturnValue = ( pclFamily == m_pclFamilyFilter );
|
|
}
|
|
}
|
|
|
|
return bReturnValue;
|
|
}
|
|
|
|
//**************************************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bOnButtonTest(CPA_DialogList *pDialog,
|
|
CString csTypeName,
|
|
tdeListDrawMode eDraw)
|
|
{
|
|
BOOL bReturnValue = TRUE;
|
|
|
|
if ( (m_pclFamilyFilter != NULL) || (m_pclModelFilter != NULL) )
|
|
{
|
|
m_pclFamilyFilter = NULL;
|
|
m_pclModelFilter = NULL;
|
|
|
|
pDialog->fn_vUpdateSelection(E_lrm_ReinitList);
|
|
|
|
CString csButtonText;
|
|
if ( csTypeName.Compare(EDAC_C_szModelsList) == 0 )
|
|
csButtonText = "All Models";
|
|
else if ( csTypeName.Compare(EDAC_C_szInstancesList) == 0 )
|
|
csButtonText = "All Instances";
|
|
else if ( csTypeName.Compare(EDAC_C_szAlwaysList) == 0 )
|
|
csButtonText = "All Always Models";
|
|
|
|
pDialog->fn_vInitButtonTest((char *)LPCTSTR(csButtonText),
|
|
TRUE,
|
|
TRUE);
|
|
}
|
|
else
|
|
{
|
|
if ( csTypeName.Compare(EDAC_C_szModelsList) == 0 )
|
|
{
|
|
pDialog->SetCurrentType(EDAC_C_szFamiliesList);
|
|
fn_vSetANewTest(pDialog, EDAC_C_szFamiliesList);
|
|
}
|
|
else if ( csTypeName.Compare(EDAC_C_szInstancesList) == 0 )
|
|
{
|
|
pDialog->SetCurrentType(EDAC_C_szModelsList);
|
|
fn_vSetANewTest(pDialog, EDAC_C_szModelsList);
|
|
}
|
|
else if ( csTypeName.Compare(EDAC_C_szAlwaysList) == 0 )
|
|
{
|
|
pDialog->SetCurrentType(EDAC_C_szModelsList);
|
|
fn_vSetANewTest(pDialog, EDAC_C_szModelsList);
|
|
}
|
|
}
|
|
|
|
return bReturnValue;
|
|
}
|
|
|
|
//***********************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bOnSelChangeComboList(CPA_DialogList *pDialog,
|
|
CString csTypeName)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
//***********************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bOnSelChangeListObjects(CPA_DialogList *pDialog,
|
|
CString csTypeName,
|
|
CPA_BaseObject *pSelectedObject,
|
|
BOOL bUnselect)
|
|
{
|
|
if ( (csTypeName.CompareNoCase(EDAC_C_szInstancesList) == 0)
|
|
|| ( csTypeName.CompareNoCase(EDAC_C_szAlwaysList) == 0 )
|
|
)
|
|
{
|
|
if ( bUnselect )
|
|
{
|
|
m_pclSelectedInstance = NULL;
|
|
}
|
|
else
|
|
{
|
|
m_pclFamilyFilter = NULL;
|
|
m_pclModelFilter = NULL;
|
|
|
|
//Displays Instance
|
|
m_pclSelectedInstance = (CPA_Actor *)pSelectedObject;
|
|
m_clDocument.m_fn_vDisplayActor(m_pclSelectedInstance->m_fn_pclGetEditorActor(), ED_ACTORS_eModeOfActorSelection_InListDialog);
|
|
}
|
|
}
|
|
else if ( csTypeName.CompareNoCase(EDAC_C_szModelsList) == 0 )
|
|
{
|
|
if ( bUnselect )
|
|
m_pclModelFilter = NULL;
|
|
else
|
|
{
|
|
CPA_Actor *pclSelectedModel = (CPA_Actor *)pSelectedObject;
|
|
if ( pclSelectedModel->fn_bIsAvailable() )
|
|
m_pclModelFilter = pclSelectedModel;
|
|
}
|
|
m_pclFamilyFilter = NULL;
|
|
|
|
//Displays Model
|
|
if ( m_pclModelFilter != NULL )
|
|
m_clDocument.m_fn_vDisplayActor(m_pclModelFilter->m_fn_pclGetEditorActor(), ED_ACTORS_eModeOfActorSelection_InListDialog);
|
|
}
|
|
else if ( csTypeName.CompareNoCase(EDAC_C_szFamiliesList) == 0 )
|
|
{
|
|
if ( bUnselect )
|
|
m_pclFamilyFilter = NULL;
|
|
else
|
|
m_pclFamilyFilter = (CPA_Family *)pSelectedObject;
|
|
|
|
m_pclModelFilter = NULL;
|
|
}
|
|
//CPA2 Stegaru Cristian 98-05
|
|
else if (csTypeName.CompareNoCase(EDAC_C_szUnloadedAlwaysList) == 0)
|
|
{
|
|
if (bUnselect)
|
|
m_pSelectedUnloadedAlways = NULL;
|
|
else
|
|
m_pSelectedUnloadedAlways = (CPA_UnloadedAlways *)pSelectedObject;
|
|
}
|
|
//End CPA2 Stegaru Cristian 98-05
|
|
|
|
else
|
|
{
|
|
CPA_List<CPA_SuperObject> *pList = GetInterface()->GetObjectListByType(C_szSectorTypeName);
|
|
CPA_SuperObject *pSector;
|
|
POSITION pos;
|
|
BOOL bFound = FALSE;
|
|
|
|
for (pSector = pList->GetHeadElement(pos); pSector; pSector = pList->GetNextElement(pos))
|
|
{
|
|
if (csTypeName.CompareNoCase(pSector->GetName()) == 0)
|
|
bFound = TRUE;
|
|
}
|
|
if (bFound)
|
|
{
|
|
if (bUnselect)
|
|
m_pclSelectedInstance = NULL;
|
|
else
|
|
{
|
|
m_pclFamilyFilter = NULL;
|
|
m_pclModelFilter = NULL;
|
|
|
|
//Displays Instance
|
|
m_pclSelectedInstance = (CPA_Actor *)((CPA_SuperObject *)pSelectedObject)->GetObject();
|
|
m_clDocument.m_fn_vDisplayActor(m_pclSelectedInstance->m_fn_pclGetEditorActor(), ED_ACTORS_eModeOfActorSelection_InListDialog);
|
|
}
|
|
}
|
|
}
|
|
|
|
pDialog->fn_vUpdateSelection(E_lrm_ChangeSelection);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
//***********************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bOnDblClkListObjects(CPA_DialogList *pDialog,
|
|
CString csTypeName,
|
|
CPA_BaseObject *pSelectedObject)
|
|
{
|
|
if ( pSelectedObject != NULL )
|
|
{
|
|
//CPA2 Stegaru Cristian 98-05
|
|
if (EDAC_C_szUnloadedAlwaysList == csTypeName)
|
|
{
|
|
CPA_UnloadedAlways *pUAlways = (CPA_UnloadedAlways *)pSelectedObject;
|
|
if (pUAlways->mfn_bIsLoaded ()) //use this method to deal with the two times this function is called for every double click action
|
|
delete pUAlways;
|
|
else if (!pUAlways->m_bOnceDblClk && IDYES == AfxMessageBox ("Do you want to load this always character?\n(it will be also added in the *.alw file)", MB_YESNO | MB_ICONQUESTION))
|
|
{
|
|
m_clDocument.m_clUnloadedAlwaysList.fn_bRemoveObject (pUAlways);
|
|
mfn_vLoadAlways (pUAlways);
|
|
pUAlways->mfn_vSetLoaded (TRUE);
|
|
pDialog->fn_vReinitDialog ();
|
|
}
|
|
pUAlways->m_bOnceDblClk = !pUAlways->m_bOnceDblClk;
|
|
}
|
|
else if ( pSelectedObject->fn_bIsAvailable() )
|
|
//End CPA2 Stegaru Cristian 98-05
|
|
{
|
|
//Displays childs of the Object
|
|
if ( pSelectedObject->fn_bIsOfType(C_szActorModelTypeName) )
|
|
{
|
|
m_pclModelFilter = (CPA_Actor *)pSelectedObject;
|
|
m_pclFamilyFilter = NULL;
|
|
|
|
pDialog->SetCurrentType(EDAC_C_szInstancesList);
|
|
fn_vSetANewTest(pDialog, EDAC_C_szInstancesList);
|
|
}
|
|
else if ( pSelectedObject->fn_bIsOfType(C_szFamilyTypeName) )
|
|
{
|
|
m_pclModelFilter = NULL;
|
|
m_pclFamilyFilter = (CPA_Family *)pSelectedObject;
|
|
|
|
pDialog->SetCurrentType(EDAC_C_szModelsList);
|
|
fn_vSetANewTest(pDialog, EDAC_C_szModelsList);
|
|
}
|
|
else if (pSelectedObject->fn_bIsOfType(C_szActorInstanceTypeName) )
|
|
{
|
|
//Displays Instance
|
|
if ((pSelectedObject == m_pclSelectedInstance) && (!m_pclSelectedInstance->m_fn_bIsAnAlways()))
|
|
GetInterface()->fn_bSelectObject(((CPA_Actor *) pSelectedObject)->m_pub_fn_pclGetSuperObject(), TRUE);
|
|
}
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
//***********************************************************************
|
|
CPA_BaseObject *CPA_Actor_Editor_Interface::GetDialogSelection (CPA_DialogList *pDialog,
|
|
CString csTypeName,
|
|
tdeListDrawMode eDrawMode)
|
|
{
|
|
if ( csTypeName.CompareNoCase(EDAC_C_szInstancesList) == 0 )
|
|
{
|
|
return m_pclSelectedInstance;
|
|
}
|
|
else if ( csTypeName.CompareNoCase(EDAC_C_szModelsList) == 0 )
|
|
{
|
|
return m_pclModelFilter;
|
|
}
|
|
else if ( csTypeName.CompareNoCase(EDAC_C_szFamiliesList) == 0 )
|
|
{
|
|
return m_pclFamilyFilter;
|
|
}
|
|
else if ( csTypeName.CompareNoCase(EDAC_C_szAlwaysList) == 0 )
|
|
{
|
|
return m_pclSelectedInstance;
|
|
}
|
|
else if ( csTypeName.CompareNoCase(EDAC_C_szTreeView) == 0 )
|
|
{
|
|
return (m_pclSelectedActorForTreeView) ? m_pclSelectedActorForTreeView : m_clDocument.m_pclCurrentFamily;
|
|
}
|
|
//CPA2 Stegaru Cristian 98-05
|
|
else if (csTypeName.CompareNoCase (EDAC_C_szUnloadedAlwaysList) == 0)
|
|
{
|
|
return m_pSelectedUnloadedAlways;
|
|
}
|
|
//End CPA2 Stegaru Cristian 98-05
|
|
|
|
|
|
else
|
|
{
|
|
CPA_List<CPA_SuperObject> *pList = GetInterface()->GetObjectListByType(C_szSectorTypeName);
|
|
CPA_SuperObject *pSector;
|
|
POSITION pos;
|
|
BOOL bFound = FALSE;
|
|
|
|
for (pSector = pList->GetHeadElement(pos); pSector; pSector = pList->GetNextElement(pos))
|
|
{
|
|
if (csTypeName.CompareNoCase(pSector->GetName()) == 0)
|
|
bFound = TRUE;
|
|
}
|
|
if (bFound)
|
|
return (m_pclSelectedInstance ? m_pclSelectedInstance->m_pub_fn_pclGetSuperObject() : NULL);
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
//***********************************************************************
|
|
void CPA_Actor_Editor_Interface::m_fn_vSetListWithAFamily(CPA_Family *pclFamily)
|
|
{
|
|
m_pclFamilyFilter = pclFamily;
|
|
m_pclModelFilter = NULL;
|
|
|
|
if ( m_clDocument.m_pub_fn_bCurrentModeIsInstance() )
|
|
m_clDocument.m_pclDialogList->SetCurrentType(EDAC_C_szInstancesList);
|
|
else if ( m_clDocument.m_pub_fn_bCurrentModeIsModel() )
|
|
m_clDocument.m_pclDialogList->SetCurrentType(EDAC_C_szModelsList);
|
|
else if ( m_clDocument.m_pub_fn_bCurrentModeIsAlwaysModel() )
|
|
m_clDocument.m_pclDialogList->SetCurrentType(EDAC_C_szAlwaysList);
|
|
}
|
|
|
|
//***********************************************************************
|
|
void CPA_Actor_Editor_Interface::m_fn_vSetListWithAModel(EdActors_EditorActorModel *pclModel)
|
|
{
|
|
m_pclFamilyFilter = NULL;
|
|
m_pclModelFilter = pclModel->m_pclActor;
|
|
|
|
m_clDocument.m_pclDialogList->SetCurrentType(EDAC_C_szInstancesList);
|
|
}
|
|
|
|
|
|
//######################################################################################
|
|
//######################################################################################
|
|
// Tree Dialog
|
|
//######################################################################################
|
|
//######################################################################################
|
|
|
|
#define EdActors_C_TreeMenuID_ShowUnloaded 80
|
|
#define EdActors_C_TreeMenuID_OnlyWithModels 81
|
|
#define EdActors_C_TreeMenuID_OnlyWithoutModels 82
|
|
#define EdActors_C_TreeMenuID_PreloadModels 83
|
|
#define EdActors_C_TreeMenuID_ForCamera 90
|
|
|
|
|
|
//***********************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bOnSelChangeHierarchyTree(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
CPA_BaseObject *pSelectedObject,
|
|
CPA_BaseObject *pSelectedParent)
|
|
{
|
|
//If a Model was clicked, displays it in Editor
|
|
if ((pSelectedObject->GetType().Compare(C_szActorModelTypeName) == 0)&&(pSelectedObject->fn_bIsAvailable()))
|
|
m_clDocument.m_fn_vDisplayActor(((CPA_Actor *)pSelectedObject)->m_fn_pclGetEditorActor(), ED_ACTORS_eModeOfActorSelection_InTreeView);
|
|
|
|
// If an instance was clicked, select it in 3D view
|
|
else if (pSelectedObject->GetType().Compare(C_szActorInstanceTypeName) == 0)
|
|
{
|
|
GetInterface()->fn_vCancelCurrentSelection();
|
|
GetInterface()->fn_vAddSelectedObject(((CPA_Actor *)pSelectedObject)->m_pub_fn_pclGetSuperObject());
|
|
}
|
|
|
|
// if a family was clicked, register selection
|
|
else if (pSelectedObject->GetType().Compare(C_szFamilyTypeName) == 0)
|
|
{
|
|
m_clDocument.m_pclCurrentFamily = pSelectedObject;
|
|
m_pclSelectedActorForTreeView = NULL;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
//***********************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bOnDblClkHierarchyTree(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
CPA_BaseObject *pSelectedObject,
|
|
CPA_BaseObject *pSelectedParent)
|
|
{
|
|
ERROR_ASSERT( csListName.CompareNoCase(EDAC_C_szTreeView) == 0 );
|
|
|
|
BOOL bReturn = FALSE;
|
|
|
|
//If an unloaded object is double-clicked, loads it
|
|
//for Families and Models (Instances are always available)
|
|
if ( ( pSelectedObject->GetType().Compare(C_szFamilyTypeName) == 0 )
|
|
|| ( pSelectedObject->GetType().Compare(C_szActorModelTypeName) == 0 )
|
|
)
|
|
{
|
|
if ( !pSelectedObject->fn_bIsAvailable() )
|
|
{
|
|
pSelectedObject->GetEditor()->fn_bLoadBaseObject(pSelectedObject);
|
|
// if (pSelectedObject->GetEditor() != this)
|
|
pDialog->fn_vUpdateSelection(E_lrm_ReinitList);
|
|
}
|
|
|
|
bReturn = TRUE;
|
|
}
|
|
|
|
else if ( pSelectedObject->GetType().Compare(C_szActorInstanceTypeName) == 0 )
|
|
{
|
|
//Displays Instance
|
|
if ( ! ((CPA_Actor *)pSelectedObject)->m_fn_bIsAnAlways())
|
|
GetInterface()->fn_bSelectObject(((CPA_Actor *) pSelectedObject)->m_pub_fn_pclGetSuperObject(), TRUE);
|
|
}
|
|
return bReturn;
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Method : mfn_bUnloadAlwaysFromLevel
|
|
// Date : 98/07/01
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Description :
|
|
// Author : Stegaru Cristian - CPA
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Modification :
|
|
// Date :
|
|
// By :
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
BOOL CPA_Actor_Editor_Interface::mfn_bUnloadAlwaysFromLevel (CPA_Actor *pActor)
|
|
{
|
|
if (NULL == pActor)
|
|
return FALSE;
|
|
|
|
// SHAITAN => check if always is referenced
|
|
CStringList lstOfRefAlways;
|
|
CStringList lstOfReferences;
|
|
|
|
AfxGetApp()->DoWaitCursor(1);
|
|
|
|
CString csAlways = pActor->GetName();
|
|
csAlways.MakeLower();
|
|
|
|
//treat regular models
|
|
Position pos = m_clDocument.m_clModelsList.GetHeadPosition ();
|
|
while (pos)
|
|
{
|
|
CPA_Actor *pModel = (CPA_Actor *)g_pclInterface->m_clDocument.m_clModelsList.GetNext (pos);
|
|
if (!pModel || !pModel->m_fn_bIsAModel () || (pActor->m_fn_pclGetModel() == pModel))
|
|
continue;
|
|
|
|
g_pclInterface->m_clDocument.mfn_vFillRefAlwaysForModel (pModel, lstOfRefAlways);
|
|
|
|
if (lstOfRefAlways.Find(csAlways) != NULL)
|
|
lstOfReferences.AddTail(pModel->GetName());
|
|
|
|
lstOfRefAlways.RemoveAll();
|
|
}
|
|
|
|
//treat always models
|
|
pos = m_clDocument.m_clAlwaysList.GetHeadPosition ();
|
|
while (pos)
|
|
{
|
|
CPA_Actor *pModel = (CPA_Actor *)g_pclInterface->m_clDocument.m_clAlwaysList.GetNext (pos);
|
|
if (!pModel || !pModel->m_fn_bIsAModel () || (pActor->m_fn_pclGetModel() == pModel))
|
|
continue;
|
|
|
|
g_pclInterface->m_clDocument.mfn_vFillRefAlwaysForModel (pModel, lstOfRefAlways);
|
|
|
|
if (lstOfRefAlways.Find(csAlways) != NULL)
|
|
lstOfReferences.AddTail(pModel->GetName());
|
|
|
|
lstOfRefAlways.RemoveAll();
|
|
}
|
|
|
|
if (lstOfReferences.GetCount() > 0)
|
|
{
|
|
CString msg = "This always is referenced in the following models : \n";
|
|
POSITION pos = lstOfReferences.GetHeadPosition();
|
|
while (pos)
|
|
msg += lstOfReferences.GetNext(pos) + "\n";
|
|
msg += "Removing this always may cause incoherences in these models. \n";
|
|
msg += "Are you sure you want to remove this always from the level ?";
|
|
if (IDNO == AfxMessageBox (msg, MB_YESNO | MB_ICONQUESTION))
|
|
return FALSE;
|
|
}
|
|
|
|
AfxGetApp()->DoWaitCursor(-1);
|
|
|
|
// END SHAITAN
|
|
|
|
CPA_SuperObject *pSupObj;
|
|
pSupObj = pActor->m_pub_fn_pclGetSuperObject();
|
|
// if allowed, delete it
|
|
if (pSupObj && !GetInterface()->fn_bDeleteObjectInHierarchy(pSupObj, TRUE))
|
|
{
|
|
CPA_UnloadedAlways *pAlways = new CPA_UnloadedAlways (g_pclInterface, g_c_csUnloadedAlwaysType, pActor->GetName () + CString ("UnloadedAlways"));
|
|
if (!pAlways)
|
|
return FALSE; //not enough memory
|
|
|
|
pAlways->mfn_vSetUAlwaysName (pActor->GetName ());
|
|
CString csAlwFile = pActor->GetReferencedSectionName ();
|
|
int iInx = csAlwFile.ReverseFind ('^');
|
|
ASSERT (-1 != iInx);
|
|
csAlwFile = csAlwFile.Left (iInx);
|
|
pAlways->mfn_vSetAlwFile (csAlwFile);
|
|
m_clDocument.m_clUnloadedAlwaysList.fn_bAddObject (pAlways);
|
|
|
|
m_clDocument.m_clAlwaysList.fn_bRemoveObject(pActor);
|
|
m_clDocument.m_fn_vNotifyLevel(pActor, FALSE);
|
|
|
|
m_clDocument.m_clInitializedAlwaysList.fn_bAddObject (pActor);
|
|
fn_bRemoveObject (pActor);
|
|
|
|
// update model's list of instances
|
|
CPA_Actor * pModel = pActor->m_fn_pclGetModel();
|
|
pModel->m_fn_pclGetEditorModel()->m_fn_vRemoveFromInstancesList(pActor->m_fn_pclGetEditorInstance());
|
|
// Shaitan => optimisation lists in the level
|
|
if (pActor->m_fn_pclGetModel()->m_fn_pclGetEditorModel()->m_clInstancesList.IsEmpty())
|
|
EDAC_fn_vProcessBrain(pActor->m_fn_pclGetModel(),pActor, TRUE);
|
|
// End Shaitan => optimisation lists in the level
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/*===========================================================================
|
|
* Description: Key Down in cpa_dialoglist
|
|
* Creation date:
|
|
* Author: Shaitan
|
|
*---------------------------------------------------------------------------
|
|
* Revision date: Author:
|
|
*=========================================================================*/
|
|
BOOL CPA_Actor_Editor_Interface::fn_bOnKeyDownInDialog (CPA_DialogList *pDialog, CString csTypeName, tdeListDrawMode eDraw,
|
|
CPA_BaseObject *pSelectedObject, UINT nChar, UINT nRepCnt, UINT nFlags)
|
|
{
|
|
CPA_Actor *pActor;
|
|
// CPA_SuperObject *pSupObj;
|
|
|
|
switch (nChar)
|
|
{
|
|
// delete selected object
|
|
case 0x2E :
|
|
if (pSelectedObject && ( pSelectedObject->GetType().Compare(C_szActorInstanceTypeName) == 0 ))
|
|
{
|
|
pActor = (CPA_Actor *) pSelectedObject;
|
|
//CPA2 Stegaru Cristian 98/07/01
|
|
if (mfn_bUnloadAlwaysFromLevel (pActor))
|
|
pDialog->fn_vReinitDialog ();
|
|
//End CPA2 Stegaru Cristian 98-05
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
//***********************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bCanDragItemInHierarchyTree(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
CPA_BaseObject *pObjectToDrag)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
//***********************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bCanDropItemInHierarchyTree(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
CPA_BaseObject *pObjectToDrop,
|
|
CPA_BaseObject *pTarget)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
//***********************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bOnDragDropInHierarchyTree(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
CPA_BaseObject *pObject,
|
|
CPA_BaseObject *pTarget)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
//***********************************************************************
|
|
//Called to construct the tree
|
|
CPA_BaseObject *CPA_Actor_Editor_Interface::GetTreeNodeNextChild(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
CPA_BaseObject *pParent,
|
|
CPA_BaseObject *pCurrentChild)
|
|
{
|
|
ERROR_ASSERT( csListName.CompareNoCase(EDAC_C_szTreeView) == 0 );
|
|
|
|
CPA_BaseObject *pclReturnedObject = NULL;
|
|
|
|
if ( pParent == m_pclTreeRoot )
|
|
{
|
|
BOOL bObjectOK = FALSE;
|
|
BOOL bCurrentChildPassed = FALSE;
|
|
CPA_BaseObject *pCurrentFamily;
|
|
Position pos = GetMainWorld()->fn_p_oGetOriginalObjectList(C_szFamilyTypeName)->GetHeadPosition();
|
|
|
|
while ( ( pos != 0 ) && ( !bObjectOK ) )
|
|
{
|
|
pCurrentFamily = GetMainWorld()->fn_p_oGetOriginalObjectList(C_szFamilyTypeName)->GetNext(pos);
|
|
|
|
if ( pCurrentChild == NULL )
|
|
{
|
|
if ( m_pri_bTreeMustShowUnloadedObjects )
|
|
bObjectOK = TRUE;
|
|
else
|
|
bObjectOK = pCurrentFamily->fn_bIsAvailable();
|
|
}
|
|
else
|
|
{
|
|
if ( bCurrentChildPassed )
|
|
{
|
|
if ( m_pri_bTreeMustShowUnloadedObjects )
|
|
bObjectOK = TRUE;
|
|
else
|
|
bObjectOK = pCurrentFamily->fn_bIsAvailable();
|
|
}
|
|
|
|
if ( !bCurrentChildPassed )
|
|
bCurrentChildPassed = ( pCurrentFamily == pCurrentChild );
|
|
}
|
|
|
|
if ( bObjectOK && m_pri_bTreeMustOnlyShowFamiliesWithModels )
|
|
{
|
|
//Gets the list of Models owned by this Family
|
|
CPA_List<CPA_BaseObject> clListOfModels;
|
|
GetMainWorld()->fn_lFindObjects(&clListOfModels, "", C_szActorModelTypeName, pCurrentFamily);
|
|
|
|
BOOL bFamilyHasAtLeastOneModel = clListOfModels.GetCount() > 0;
|
|
|
|
bObjectOK = bObjectOK && bFamilyHasAtLeastOneModel;
|
|
}
|
|
|
|
if ( bObjectOK )
|
|
pclReturnedObject = pCurrentFamily;
|
|
}
|
|
}
|
|
else if ( pParent->GetType().Compare(C_szFamilyTypeName) == 0 )
|
|
{
|
|
//Gets the list of Models owned by this Family
|
|
CPA_List<CPA_BaseObject> clListOfModels;
|
|
GetMainWorld()->fn_lFindObjects(&clListOfModels, "", C_szActorModelTypeName, pParent);
|
|
|
|
BOOL bObjectOK = FALSE;
|
|
BOOL bCurrentChildPassed = FALSE;
|
|
CPA_BaseObject *pCurrentModel;
|
|
POSITION pos = clListOfModels.GetHeadPosition();
|
|
|
|
while ( ( pos != NULL ) && ( !bObjectOK ) )
|
|
{
|
|
pCurrentModel = clListOfModels.GetNext(pos);
|
|
|
|
if ( pCurrentChild == NULL )
|
|
{
|
|
if ( m_pri_bTreeMustShowUnloadedObjects )
|
|
bObjectOK = TRUE;
|
|
else
|
|
bObjectOK = pCurrentModel->fn_bIsAvailable();
|
|
}
|
|
else
|
|
{
|
|
if ( bCurrentChildPassed )
|
|
{
|
|
if ( m_pri_bTreeMustShowUnloadedObjects )
|
|
bObjectOK = TRUE;
|
|
else
|
|
bObjectOK = pCurrentModel->fn_bIsAvailable();
|
|
}
|
|
|
|
if ( !bCurrentChildPassed )
|
|
bCurrentChildPassed = ( pCurrentModel == pCurrentChild );
|
|
}
|
|
|
|
if ( bObjectOK )
|
|
pclReturnedObject = pCurrentModel;
|
|
}
|
|
}
|
|
else if ( pParent->GetType().Compare(C_szActorModelTypeName) == 0 )
|
|
{
|
|
//Gets the list of Instances owned by this Model
|
|
CPA_List<CPA_BaseObject> clListOfInstances;
|
|
GetMainWorld()->fn_lFindObjects(&clListOfInstances, "", C_szActorInstanceTypeName, pParent);
|
|
|
|
BOOL bObjectOK = FALSE;
|
|
BOOL bCurrentChildPassed = FALSE;
|
|
CPA_BaseObject *pclCurrentInstance;
|
|
POSITION pos = clListOfInstances.GetHeadPosition();
|
|
|
|
while ( ( pos != NULL ) && ( !bObjectOK ) )
|
|
{
|
|
pclCurrentInstance = clListOfInstances.GetNext(pos);
|
|
|
|
if ( pCurrentChild == NULL )
|
|
bObjectOK = TRUE;
|
|
else
|
|
{
|
|
if ( bCurrentChildPassed )
|
|
bObjectOK = TRUE;
|
|
|
|
if ( !bCurrentChildPassed )
|
|
bCurrentChildPassed = ( pclCurrentInstance == pCurrentChild );
|
|
}
|
|
|
|
if ( bObjectOK )
|
|
pclReturnedObject = pclCurrentInstance;
|
|
}
|
|
}
|
|
|
|
return pclReturnedObject;
|
|
}
|
|
|
|
//***********************************************************************
|
|
void *CPA_Actor_Editor_Interface::GetInfoForTreeItem(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
CPA_BaseObject *pObject,
|
|
CPA_BaseObject *pParent)
|
|
{
|
|
ERROR_ASSERT( csListName.CompareNoCase(EDAC_C_szTreeView) == 0 );
|
|
|
|
return NULL;
|
|
}
|
|
|
|
//***********************************************************************
|
|
int CPA_Actor_Editor_Interface::GetIconForTreeItem(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
CPA_BaseObject *pObject)
|
|
{
|
|
ERROR_ASSERT( csListName.CompareNoCase(EDAC_C_szTreeView) == 0 );
|
|
|
|
//Families
|
|
if ( pObject->GetType().Compare(C_szFamilyTypeName) == 0 )
|
|
return 0;
|
|
//Models
|
|
else if ( pObject->GetType().Compare(C_szActorModelTypeName) == 0 )
|
|
return 1;
|
|
else if ( pObject->GetType().Compare(C_szActorInstanceTypeName) == 0 )
|
|
{
|
|
//Instances
|
|
if ( !((CPA_Actor *)pObject)->m_fn_bIsAnAlways() )
|
|
return 2;
|
|
//Always Models
|
|
else
|
|
return 3;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
//***********************************************************************
|
|
int CPA_Actor_Editor_Interface::GetStateForTreeItem(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
CPA_BaseObject *pObject)
|
|
{
|
|
ERROR_ASSERT( csListName.CompareNoCase(EDAC_C_szTreeView) == 0 );
|
|
|
|
if ( pObject->GetType().Compare(C_szActorInstanceTypeName) == 0 )
|
|
return -1;
|
|
else
|
|
{
|
|
if ( pObject->fn_bIsAvailable() )
|
|
return 4;
|
|
else
|
|
return 5;
|
|
}
|
|
}
|
|
|
|
//***********************************************************************
|
|
// Popup menu
|
|
//***********************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bAddEntriesToTreePopup(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
CMenu *pMenu,
|
|
UINT uiCustomEntriesStart)
|
|
{
|
|
ERROR_ASSERT( csListName.CompareNoCase(EDAC_C_szTreeView) == 0 );
|
|
|
|
DEV_ViewPort3D *pCurViewport;
|
|
CPA_DLLBase *p_oCameraInterface;
|
|
|
|
// get camera interface
|
|
pCurViewport = (DEV_ViewPort3D *) GetInterface()->GetMultiDevice()->GetFocusDevice()->GetViewPort();
|
|
p_oCameraInterface = pCurViewport->GetCameraInterface();
|
|
|
|
BOOL bEntries = p_oCameraInterface->fn_bAddEntriesToTreePopup(pDialog, csListName, pMenu, uiCustomEntriesStart+EdActors_C_TreeMenuID_ForCamera);
|
|
if (bEntries)
|
|
pMenu->AppendMenu(MF_SEPARATOR);
|
|
|
|
CPA_BaseObject *pSelectedObject = pDialog->GetSelectedObject();
|
|
// get current selection
|
|
if (pSelectedObject && (pSelectedObject->GetType().Compare(C_szFamilyTypeName) == 0))
|
|
{
|
|
CString csFamilyName = pSelectedObject->GetName();
|
|
CString csDirectory = fn_szGetFamiliesDataPath() + CString ("\\") + csFamilyName;
|
|
|
|
// propose to preload models of this family
|
|
if (m_clDocument.m_fn_bScanDirectoryForUnloadedModels(csDirectory, 1))
|
|
{
|
|
CString csEntry ;
|
|
csEntry.Format("Preload models for family %s", csFamilyName);
|
|
pMenu->AppendMenu(MF_STRING, uiCustomEntriesStart + EdActors_C_TreeMenuID_PreloadModels, csEntry);
|
|
}
|
|
else
|
|
{
|
|
pMenu->AppendMenu(MF_STRING, uiCustomEntriesStart + EdActors_C_TreeMenuID_PreloadModels, "No model to preload");
|
|
pMenu->EnableMenuItem(uiCustomEntriesStart + EdActors_C_TreeMenuID_PreloadModels, MF_BYCOMMAND | MF_GRAYED);
|
|
}
|
|
pMenu->AppendMenu(MF_SEPARATOR);
|
|
}
|
|
|
|
// global entries
|
|
pMenu->AppendMenu(MF_STRING, uiCustomEntriesStart + EdActors_C_TreeMenuID_ShowUnloaded, "Show preloaded objects");
|
|
if ( m_pri_bTreeMustShowUnloadedObjects )
|
|
pMenu->CheckMenuItem(uiCustomEntriesStart + EdActors_C_TreeMenuID_ShowUnloaded, MF_BYCOMMAND | MF_CHECKED);
|
|
|
|
pMenu->AppendMenu(MF_STRING, uiCustomEntriesStart + EdActors_C_TreeMenuID_OnlyWithModels, "only Families with Models");
|
|
if ( m_pri_bTreeMustOnlyShowFamiliesWithModels )
|
|
pMenu->CheckMenuItem(uiCustomEntriesStart + EdActors_C_TreeMenuID_OnlyWithModels, MF_BYCOMMAND | MF_CHECKED);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
//***********************************************************************
|
|
void CPA_Actor_Editor_Interface::fn_vOnCommandInTreePopup(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
UINT uiCustomEntry)
|
|
{
|
|
ERROR_ASSERT( csListName.CompareNoCase(EDAC_C_szTreeView) == 0 );
|
|
|
|
DEV_ViewPort3D *pCurViewport;
|
|
CPA_DLLBase *p_oCameraInterface;
|
|
|
|
// get camera interface
|
|
pCurViewport = (DEV_ViewPort3D *) GetInterface()->GetMultiDevice()->GetFocusDevice()->GetViewPort();
|
|
p_oCameraInterface = pCurViewport->GetCameraInterface();
|
|
|
|
if ( uiCustomEntry >= EdActors_C_TreeMenuID_ForCamera )
|
|
{
|
|
p_oCameraInterface->fn_vOnCommandInTreePopup(pDialog, csListName, uiCustomEntry-EdActors_C_TreeMenuID_ForCamera);
|
|
return;
|
|
}
|
|
|
|
if ( uiCustomEntry == EdActors_C_TreeMenuID_PreloadModels )
|
|
{
|
|
m_clDocument.m_fn_vLoadFamilyModels(pDialog->GetSelectedObject()->GetName());
|
|
}
|
|
|
|
if ( uiCustomEntry == EdActors_C_TreeMenuID_ShowUnloaded )
|
|
{
|
|
m_pri_bTreeMustShowUnloadedObjects = !m_pri_bTreeMustShowUnloadedObjects;
|
|
pDialog->fn_vUpdateSelection(E_lrm_ReinitList);
|
|
/*
|
|
if (m_pri_bTreeMustShowUnloadedObjects && !m_clDocument.m_pub_bUnloadedModelsArePrepared)
|
|
{
|
|
m_clDocument.m_fn_vLoadUnloadedModels();
|
|
m_clDocument.m_pclDialogList->fn_vUpdateSelection(E_lrm_ReinitList);
|
|
}
|
|
*/
|
|
}
|
|
else if ( uiCustomEntry == EdActors_C_TreeMenuID_OnlyWithModels )
|
|
{
|
|
m_pri_bTreeMustOnlyShowFamiliesWithModels = !m_pri_bTreeMustOnlyShowFamiliesWithModels;
|
|
pDialog->fn_vUpdateSelection(E_lrm_ReinitList);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//***********************************************************************
|
|
// Popup menu
|
|
//***********************************************************************
|
|
BOOL CPA_Actor_Editor_Interface::fn_bAddEntriesToListPopup(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
CMenu *pMenu,
|
|
UINT uiCustomEntriesStart)
|
|
{
|
|
DEV_ViewPort3D *pCurViewport;
|
|
CPA_DLLBase *p_oCameraInterface;
|
|
|
|
if (csListName.CompareNoCase(EDAC_C_szInstancesList) == 0)
|
|
{
|
|
// get camera interface
|
|
pCurViewport = (DEV_ViewPort3D *) GetInterface()->GetMultiDevice()->GetFocusDevice()->GetViewPort();
|
|
p_oCameraInterface = pCurViewport->GetCameraInterface();
|
|
|
|
return p_oCameraInterface->fn_bAddEntriesToTreePopup(pDialog, csListName, pMenu, uiCustomEntriesStart);
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
//***********************************************************************
|
|
void CPA_Actor_Editor_Interface::fn_vOnCommandInListPopup(CPA_DialogList *pDialog,
|
|
CString csListName,
|
|
UINT uiCustomEntry)
|
|
{
|
|
DEV_ViewPort3D *pCurViewport;
|
|
CPA_DLLBase *p_oCameraInterface;
|
|
|
|
if (csListName.CompareNoCase(EDAC_C_szInstancesList) == 0)
|
|
{
|
|
// get camera interface
|
|
pCurViewport = (DEV_ViewPort3D *) GetInterface()->GetMultiDevice()->GetFocusDevice()->GetViewPort();
|
|
p_oCameraInterface = pCurViewport->GetCameraInterface();
|
|
|
|
p_oCameraInterface->fn_vOnCommandInTreePopup(pDialog, csListName, uiCustomEntry);
|
|
}
|
|
}
|
|
|
|
|
|
|