123
This commit is contained in:
177
Editor/StatObjPanel.cpp
Normal file
177
Editor/StatObjPanel.cpp
Normal file
@@ -0,0 +1,177 @@
|
||||
// StatObjPanel.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "StatObjPanel.h"
|
||||
#include "Objects\ObjectManager.h"
|
||||
#include "Objects\BaseObject.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
#include "Objects\BaseObject.h"
|
||||
#include "Objects\StatObj.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CStatObjPanel dialog
|
||||
|
||||
|
||||
CStatObjPanel::CStatObjPanel(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CStatObjPanel::IDD,pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CStatObjPanel)
|
||||
//}}AFX_DATA_INIT
|
||||
|
||||
m_object = 0;
|
||||
m_multiSelect = false;
|
||||
Create( IDD,pParent );
|
||||
}
|
||||
|
||||
|
||||
void CStatObjPanel::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CStatObjPanel)
|
||||
//}}AFX_DATA_MAP
|
||||
DDX_Control(pDX, IDC_STATOBJ_RELOAD, m_loadBtn);
|
||||
DDX_Control(pDX, IDC_STATOBJ_NAME, m_objectName);
|
||||
DDX_Control(pDX, IDC_RELOAD, m_reloadBtn);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CStatObjPanel, CDialog)
|
||||
//{{AFX_MSG_MAP(CStatObjPanel)
|
||||
ON_BN_CLICKED(IDC_STATOBJ_RELOAD, OnStatobjReload)
|
||||
ON_BN_CLICKED(IDC_RELOAD, OnReload)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CStatObjPanel message handlers
|
||||
|
||||
void CStatObjPanel::OnStatobjReload()
|
||||
{
|
||||
// Open stat obj file.
|
||||
CString relFile;
|
||||
if (!GetIEditor()->SelectFile( SUPPORTED_MODEL_FILTER,"Objects",relFile ))
|
||||
return;
|
||||
if (m_multiSelect)
|
||||
{
|
||||
CSelectionGroup *selection = GetIEditor()->GetSelection();
|
||||
for (int i = 0; i < selection->GetCount(); i++)
|
||||
{
|
||||
CBaseObject *pBaseObj=selection->GetObject(i);
|
||||
if (pBaseObj->IsKindOf(RUNTIME_CLASS(CStaticObject)))
|
||||
((CStaticObject*)pBaseObj)->LoadObject(relFile);
|
||||
if (!i)
|
||||
{
|
||||
CString str = ((CStaticObject*)pBaseObj)->GetObjectName();
|
||||
if (str.Find( "Objects\\" ) == 0)
|
||||
str.Replace( "Objects\\","" );
|
||||
m_objectName.SetWindowText( str );
|
||||
}
|
||||
}
|
||||
}else
|
||||
{
|
||||
assert( m_object );
|
||||
m_object->LoadObject(relFile);
|
||||
SetObject( m_object );
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CStatObjPanel::UpdateObject()
|
||||
{
|
||||
CStaticObject *pObj=NULL;
|
||||
if (m_multiSelect)
|
||||
{
|
||||
CSelectionGroup *selection = GetIEditor()->GetSelection();
|
||||
if (selection->IsEmpty())
|
||||
return;
|
||||
for (int i=0;i<selection->GetCount();i++)
|
||||
{
|
||||
CBaseObject *pBaseObj=selection->GetObject(i);
|
||||
if (pBaseObj->IsKindOf(RUNTIME_CLASS(CStaticObject)))
|
||||
{
|
||||
pObj=(CStaticObject*)pBaseObj;
|
||||
break;
|
||||
}
|
||||
}
|
||||
assert(pObj);
|
||||
}else
|
||||
{
|
||||
pObj=m_object;
|
||||
}
|
||||
CString str = pObj->GetObjectName();
|
||||
if (str.Find( "Objects\\" ) == 0)
|
||||
{
|
||||
str.Replace( "Objects\\","" );
|
||||
}
|
||||
m_objectName.EnableWindow(TRUE);
|
||||
m_objectName.SetWindowText( str );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CStatObjPanel::SetObject( CStaticObject *obj )
|
||||
{
|
||||
assert( obj );
|
||||
m_object = obj;
|
||||
|
||||
UpdateObject();
|
||||
}
|
||||
|
||||
void CStatObjPanel::SetMultiSelect( bool bEnable )
|
||||
{
|
||||
m_multiSelect = bEnable;
|
||||
if (bEnable)
|
||||
{
|
||||
UpdateObject();
|
||||
CSelectionGroup *selection = GetIEditor()->GetSelection();
|
||||
CStaticObject *pFirst=NULL;
|
||||
for (int i=0;i<selection->GetCount();i++)
|
||||
{
|
||||
CBaseObject *pBaseObj=selection->GetObject(i);
|
||||
CStaticObject *pObj=NULL;
|
||||
if (pBaseObj->IsKindOf(RUNTIME_CLASS(CStaticObject)))
|
||||
pObj=(CStaticObject*)pBaseObj;
|
||||
else
|
||||
continue;
|
||||
if (!pFirst)
|
||||
{
|
||||
pFirst=pObj;
|
||||
continue;
|
||||
}
|
||||
if (pFirst->GetObjectName()!=pObj->GetObjectName())
|
||||
m_objectName.EnableWindow(FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CStatObjPanel::OnReload()
|
||||
{
|
||||
if (m_multiSelect)
|
||||
{
|
||||
CSelectionGroup *selection = GetIEditor()->GetSelection();
|
||||
for (int i = 0; i < selection->GetCount(); i++)
|
||||
{
|
||||
CBaseObject *pBaseObj=selection->GetObject(i);
|
||||
if (pBaseObj->IsKindOf(RUNTIME_CLASS(CStaticObject)))
|
||||
((CStaticObject*)pBaseObj)->ReloadObject();
|
||||
}
|
||||
}else
|
||||
{
|
||||
assert( m_object );
|
||||
m_object->ReloadObject();
|
||||
}
|
||||
}
|
||||
|
||||
BOOL CStatObjPanel::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
Reference in New Issue
Block a user