364 lines
12 KiB
C++
364 lines
12 KiB
C++
|
|
#include "StdAfx.h"
|
|||
|
|
#include <wx/wx.h>
|
|||
|
|
#include "cwxWholeResTreePanel.h"
|
|||
|
|
#include <wx/FileFn.h>
|
|||
|
|
#include "ToolData.h"
|
|||
|
|
#include "RTCutSceneMakerFrame.h"
|
|||
|
|
#include "CommandSet.h"
|
|||
|
|
#include "cwxAddActorDlg.h"
|
|||
|
|
#include "EternityEngine.h"
|
|||
|
|
#include "Timer.h"
|
|||
|
|
#include "RTCutSceneRenderer.h"
|
|||
|
|
#include "LuaDelegate.h"
|
|||
|
|
#include "DnCutSceneActor.h"
|
|||
|
|
|
|||
|
|
|
|||
|
|
//const wxChar* ROOT_RESOURCE_FOLDER = wxT("./Resource");
|
|||
|
|
//const wxChar* ROOT_RESOURCE_FOLDER = wxT("D:/MyWork/RealTime Cut Scene Maker/Resource");
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
BEGIN_EVENT_TABLE( cwxWholeResTreePanel, wxPanel )
|
|||
|
|
EVT_BUTTON( BTN_REGISTER_RESOURCE_ID, cwxWholeResTreePanel::OnBtnRegisterRes )
|
|||
|
|
EVT_TREE_SEL_CHANGED( WHOLE_RESOURCE_TREE_ID, cwxWholeResTreePanel::OnTreeSelChanged )
|
|||
|
|
END_EVENT_TABLE()
|
|||
|
|
|
|||
|
|
|
|||
|
|
cwxWholeResTreePanel::cwxWholeResTreePanel( wxWindow* pParent, wxWindowID id ) : wxPanel( pParent, id ),
|
|||
|
|
m_pTopSizer( NULL ),
|
|||
|
|
m_pTreeCtrl( NULL ),
|
|||
|
|
m_pBtnRegister( NULL )
|
|||
|
|
{
|
|||
|
|
m_pTopSizer = new wxBoxSizer( wxVERTICAL );
|
|||
|
|
|
|||
|
|
m_pTreeCtrl = new wxTreeCtrl( this, WHOLE_RESOURCE_TREE_ID, wxDefaultPosition, wxDefaultSize );
|
|||
|
|
m_pTopSizer->Add( m_pTreeCtrl, 1, wxALL|wxALIGN_CENTER|wxEXPAND, 2 );
|
|||
|
|
|
|||
|
|
m_pBtnRegister = new wxButton( this, BTN_REGISTER_RESOURCE_ID, wxString(wxT("Register to scene")), wxDefaultPosition, wxSize(200, 40) );
|
|||
|
|
m_pTopSizer->Add( m_pBtnRegister, 0, wxALL|wxALIGN_CENTER|wxEXPAND, 4 );
|
|||
|
|
|
|||
|
|
m_TreeRootID = m_pTreeCtrl->AddRoot( wxT("Root") );
|
|||
|
|
|
|||
|
|
//wxTreeItemIcon_Normal, // not selected, not expanded
|
|||
|
|
//wxTreeItemIcon_Selected, // selected, not expanded
|
|||
|
|
//wxTreeItemIcon_Expanded, // not selected, expanded
|
|||
|
|
//wxTreeItemIcon_SelectedExpanded, // selected, expanded
|
|||
|
|
wxImageList *pImageList = new wxImageList( 16, 16 );
|
|||
|
|
pImageList->Add( wxBITMAP(folder), wxColour(0xff00ff00) );
|
|||
|
|
pImageList->Add( wxBITMAP(folder_open), wxColour(0xff00ff00) );
|
|||
|
|
pImageList->Add( wxBITMAP(object), wxColour(0xff00ff00) );
|
|||
|
|
pImageList->Add( wxBITMAP(object_select), wxColour(0xff00ff00) );
|
|||
|
|
m_pTreeCtrl->AssignImageList( pImageList );
|
|||
|
|
|
|||
|
|
SetSizer( m_pTopSizer );
|
|||
|
|
m_pTopSizer->Fit( this );
|
|||
|
|
m_pTopSizer->SetSizeHints( this );
|
|||
|
|
|
|||
|
|
_BuildResourceTree();
|
|||
|
|
|
|||
|
|
// <20><> <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE> Ʈ<><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʵ<EFBFBD><CAB5><EFBFBD> <20>Ѵ<EFBFBD>.
|
|||
|
|
static_cast<CRTCutSceneMakerFrame*>(TOOL_DATA.GetMainFrame())->ConnectMouseWheelEventToRenderPanel( m_pTreeCtrl );
|
|||
|
|
|
|||
|
|
m_pTreeCtrl->Expand( m_TreeRootID );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
cwxWholeResTreePanel::~cwxWholeResTreePanel(void)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void cwxWholeResTreePanel::_BuildResourceTree( void )
|
|||
|
|
{
|
|||
|
|
deque<wxString> dqFolderToSearch;
|
|||
|
|
wxBusyCursor Busy;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> Ȯ<><C8AE><EFBFBD><EFBFBD> <20>̿ܿ<CCBF><DCBF><EFBFBD> Ʈ<><C6AE><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>. (<28>ҹ<EFBFBD><D2B9><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
|||
|
|
m_setAllowMainFolder.insert( wxString(wxT("char")) );
|
|||
|
|
m_setAllowMainFolder.insert( wxString(wxT("mapdata")) );
|
|||
|
|
m_setAllowMainFolder.insert( wxString(wxT("sound")) );
|
|||
|
|
m_setAllowMainFolder.insert( wxString(wxT("particle")) );
|
|||
|
|
m_setAllowMainFolder.insert( wxString(wxT("weapon")) );
|
|||
|
|
|
|||
|
|
m_setAllowFileExt.insert( wxString(wxT("act")) );
|
|||
|
|
m_setAllowFileExt.insert( wxString(wxT("skn")) );
|
|||
|
|
m_setAllowFileExt.insert( wxString(wxT("ani")) );
|
|||
|
|
m_setAllowFileExt.insert( wxString(wxT("mp3")) );
|
|||
|
|
m_setAllowFileExt.insert( wxString(wxT("wav")) );
|
|||
|
|
m_setAllowFileExt.insert( wxString(wxT("env")) );
|
|||
|
|
m_setAllowFileExt.insert( wxString(wxT("ptc")) );
|
|||
|
|
m_setAllowFileExt.insert( wxString(wxT("eff")) );
|
|||
|
|
|
|||
|
|
const char* pResPath = LUA_DELEGATE.GetString( "resource_path" );
|
|||
|
|
const char* pMapPath = LUA_DELEGATE.GetString( "mapdata_path" );
|
|||
|
|
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
wxChar caWBuf[ 256 ];
|
|||
|
|
|
|||
|
|
ZeroMemory( caWBuf, sizeof(caWBuf) );
|
|||
|
|
MBConv.MB2WC( caWBuf, pResPath, 256 );
|
|||
|
|
wxString strResourcePath( caWBuf );
|
|||
|
|
|
|||
|
|
ZeroMemory( caWBuf, sizeof(caWBuf) );
|
|||
|
|
MBConv.MB2WC( caWBuf, pMapPath, 256 );
|
|||
|
|
wxString strMapDataPath( caWBuf );
|
|||
|
|
|
|||
|
|
dqFolderToSearch.push_back( strResourcePath );
|
|||
|
|
dqFolderToSearch.push_back( strMapDataPath );
|
|||
|
|
|
|||
|
|
while( !dqFolderToSearch.empty() )
|
|||
|
|
{
|
|||
|
|
wxString strNowSearchFolder = dqFolderToSearch.front();
|
|||
|
|
dqFolderToSearch.pop_front();
|
|||
|
|
|
|||
|
|
strNowSearchFolder.append( wxT("/*.*") );
|
|||
|
|
|
|||
|
|
wxString strFindedFilePath = wxFindFirstFile( strNowSearchFolder.c_str(), wxFILE|wxDIR );
|
|||
|
|
|
|||
|
|
while( !strFindedFilePath.empty() )
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
if( wxDirExists( strFindedFilePath.c_str() ) )
|
|||
|
|
{
|
|||
|
|
wxString strName;
|
|||
|
|
wxSplitPath( strFindedFilePath.c_str(), NULL, &strName, NULL );
|
|||
|
|
wxString strLower = strName.Lower();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ°<CFB4>. <20><EFBFBD><D7B7>ٸ<EFBFBD> <20>н<EFBFBD>.
|
|||
|
|
set<wxString>::iterator iter = m_setIgnoreFolder.find( strLower );
|
|||
|
|
if( m_setIgnoreFolder.end() != iter )
|
|||
|
|
{
|
|||
|
|
strFindedFilePath = wxFindNextFile();
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
dqFolderToSearch.push_back( strFindedFilePath );
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
wxString strCapitalName;
|
|||
|
|
wxString strExt;
|
|||
|
|
wxSplitPath( strFindedFilePath.c_str(), NULL, &strCapitalName, &strExt );
|
|||
|
|
wxString strFileName = strCapitalName+wxT(".")+strExt;
|
|||
|
|
|
|||
|
|
wxString strLowerExt = strExt.Lower();
|
|||
|
|
set<wxString>::iterator iter = m_setAllowFileExt.find( strLowerExt );
|
|||
|
|
if( m_setAllowFileExt.end() != iter )
|
|||
|
|
{
|
|||
|
|
strFileName.MakeLower();
|
|||
|
|
TOOL_DATA.SetFullPath( strFileName.c_str(), strFindedFilePath.c_str() );
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD> <20><><EFBFBD>쿣 <20>빮<EFBFBD><EBB9AE> <20≯<EFBFBD><CCB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ű<><C5B0> <20><> <20><> <20><> <20>ھ<EFBFBD><DABE>ش<EFBFBD>.
|
|||
|
|
if( *iter == wxT("act") )
|
|||
|
|
{
|
|||
|
|
strCapitalName.MakeUpper();
|
|||
|
|
TOOL_DATA.SetFullPath( strCapitalName.c_str(), strFindedFilePath.c_str() );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
strFindedFilePath = wxFindNextFile();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_mapTreeIdKind.insert( make_pair(m_TreeRootID, TREE_ROOT) );
|
|||
|
|
m_pTreeCtrl->SetItemImage( m_TreeRootID, 0, wxTreeItemIcon_Normal );
|
|||
|
|
m_pTreeCtrl->SetItemImage( m_TreeRootID, 1, wxTreeItemIcon_Expanded );
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EXT <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ʈ<><C6AE><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>Ѵ<EFBFBD>.
|
|||
|
|
// <20>߿<EFBFBD>! <20>ݵ<EFBFBD><DDB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> EXT <20><><EFBFBD>Ͽ<EFBFBD> <20>ִ<EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD>ٴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE><EFBFBD> <20><><EFBFBD>߿<EFBFBD> Ǯ <20>н<EFBFBD><D0BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
// Ǯ <20>н<EFBFBD><D0BD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ܾ <20><><EFBFBD><EFBFBD> <20>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>.
|
|||
|
|
wxTreeItemId ActorTreeId = m_pTreeCtrl->AppendItem( m_TreeRootID, wxT("Actor") );
|
|||
|
|
m_pTreeCtrl->SetItemImage( ActorTreeId, 0, wxTreeItemIcon_Normal );
|
|||
|
|
m_pTreeCtrl->SetItemImage( ActorTreeId, 1, wxTreeItemIcon_Expanded );
|
|||
|
|
m_mapTreeIdKind.insert( make_pair(ActorTreeId, TREE_ACTOR_SET) );
|
|||
|
|
int iNumActorRes = TOOL_DATA.GetNumActorResInfo();
|
|||
|
|
for( int iActor = 0; iActor < iNumActorRes; ++iActor )
|
|||
|
|
{
|
|||
|
|
const S_ACTOR_RES_INFO* pActorResInfo = TOOL_DATA.GetActorResInfoByIndex( iActor );
|
|||
|
|
wxTreeItemId id = m_pTreeCtrl->AppendItem( ActorTreeId, pActorResInfo->strActorName );
|
|||
|
|
m_pTreeCtrl->SetItemImage( id, 2, wxTreeItemIcon_Normal );
|
|||
|
|
m_pTreeCtrl->SetItemImage( id, 3, wxTreeItemIcon_Selected );
|
|||
|
|
TOOL_DATA.SetResourceType( pActorResInfo->strActorName.c_str(), CDnCutSceneData::RT_RES_ACTOR );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
wxTreeItemId MapTreeId = m_pTreeCtrl->AppendItem( m_TreeRootID, wxT("Map") );
|
|||
|
|
m_pTreeCtrl->SetItemImage( MapTreeId, 0, wxTreeItemIcon_Normal );
|
|||
|
|
m_pTreeCtrl->SetItemImage( MapTreeId, 1, wxTreeItemIcon_Expanded );
|
|||
|
|
m_mapTreeIdKind.insert( make_pair(MapTreeId, TREE_MAP_SET) );
|
|||
|
|
int iNumMapRes = TOOL_DATA.GetNumMapResName();
|
|||
|
|
for( int iMap = 0; iMap < iNumMapRes; ++iMap )
|
|||
|
|
{
|
|||
|
|
wxTreeItemId id = m_pTreeCtrl->AppendItem( MapTreeId, TOOL_DATA.GetMapResNameByIndex( iMap ) );
|
|||
|
|
m_pTreeCtrl->SetItemImage( id, 2, wxTreeItemIcon_Normal );
|
|||
|
|
m_pTreeCtrl->SetItemImage( id, 3, wxTreeItemIcon_Selected );
|
|||
|
|
TOOL_DATA.SetResourceType( TOOL_DATA.GetMapResNameByIndex( iMap ), CDnCutSceneData::RT_RES_MAP );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pTreeCtrl->SortChildren( ActorTreeId );
|
|||
|
|
m_pTreeCtrl->SortChildren( MapTreeId );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
void cwxWholeResTreePanel::OnBtnRegisterRes( wxCommandEvent& ButtonEvent )
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD>ҽ<EFBFBD> Ʈ<><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>õ<EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20>ƿ<DEBE><C6BF><EFBFBD>
|
|||
|
|
wxTreeItemId SelectedNode = m_pTreeCtrl->GetSelection();
|
|||
|
|
EtVector3 vPos;
|
|||
|
|
|
|||
|
|
if( SelectedNode.IsOk() )
|
|||
|
|
{
|
|||
|
|
wxString strSelected = m_pTreeCtrl->GetItemText( SelectedNode );
|
|||
|
|
int iResKind = TOOL_DATA.GetResourceKind( strSelected.c_str() );
|
|||
|
|
|
|||
|
|
wxString strFinalResName;
|
|||
|
|
|
|||
|
|
switch( iResKind )
|
|||
|
|
{
|
|||
|
|
case CDnCutSceneData::RT_RES_MAP:
|
|||
|
|
{
|
|||
|
|
strFinalResName = strSelected;
|
|||
|
|
vPos.x = 0.0f; vPos.y = 0.0f; vPos.z = 0.0f;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case CDnCutSceneData::RT_RES_ACTOR:
|
|||
|
|
{
|
|||
|
|
// <20><> <20>ƽſ<C6BD><C5BF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD> <20>н<EFBFBD>.
|
|||
|
|
DNTableFileFormat* pActorTable = TOOL_DATA.GetActorTable();
|
|||
|
|
DNTableFileFormat* pSox = NULL;
|
|||
|
|
const S_ACTOR_RES_INFO* pActorResInfo = TOOL_DATA.GetActorResInfoByName( strSelected );
|
|||
|
|
int iActorTypeInTable = pActorTable->GetFieldFromLablePtr( pActorResInfo->iTableID, "_Class" )->GetInteger();
|
|||
|
|
const SceneInfo* pSceneInfo = TOOL_DATA.GetSceneInfo();
|
|||
|
|
if( pSceneInfo->bAcademicNotSupported &&
|
|||
|
|
CDnCutSceneActor::ACADEMIC == iActorTypeInTable )
|
|||
|
|
{
|
|||
|
|
// <20><>ī<EFBFBD><C4AB><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20>н<EFBFBD>.
|
|||
|
|
wxMessageBox( wxT("<EFBFBD><EFBFBD>ī<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>ʹ<EFBFBD> <20><> <20>ƽſ<C6BD><C5BF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD>õǾ<C3B5><C7BE>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>. Ȯ<><C8AE><EFBFBD><EFBFBD> <20>ֽñ<D6BD> <20>ٶ<EFBFBD><D9B6>ϴ<EFBFBD>."), wxT("<EFBFBD><EFBFBD>ī<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),
|
|||
|
|
wxOK|wxCENTRE|wxICON_INFORMATION, TOOL_DATA.GetMainFrame() );
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
wxString strInputted;
|
|||
|
|
while( true )
|
|||
|
|
{
|
|||
|
|
// <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵȴ<C8B5>.
|
|||
|
|
if( wxString::npos != strSelected.find_first_of( wxT(" ") ) )
|
|||
|
|
{
|
|||
|
|
wxMessageBox( wxT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵ˴ϴ<CBB4>.\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD> _StaticName <20><> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>."), wxT("Can't Register Actor!"), wxICON_ERROR | wxOK, this );
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
cwxAddActorDlg AddActorDlg( this, -1, wxT("Input actor name") );
|
|||
|
|
|
|||
|
|
int iResult = AddActorDlg.ShowModal();
|
|||
|
|
if( wxID_OK == iResult )
|
|||
|
|
{
|
|||
|
|
AddActorDlg.GetInputtedString( strInputted );
|
|||
|
|
if( strInputted != wxT("") )
|
|||
|
|
{
|
|||
|
|
strFinalResName.Printf( wxT("%s_%s"), strSelected, strInputted );
|
|||
|
|
|
|||
|
|
// <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵȴ<C8B5>.
|
|||
|
|
if( wxString::npos != strFinalResName.find_first_of( wxT(" ") ) )
|
|||
|
|
{
|
|||
|
|
wxMessageBox( wxT("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵ˴ϴ<CBB4>.\n<EFBFBD>ٽ<EFBFBD> <20>Է<EFBFBD><D4B7><EFBFBD> <20>ּ<EFBFBD><D6BC><EFBFBD>."), wxT("Can't Register Actor!"), wxICON_ERROR | wxOK, this );
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>ߺ<EFBFBD><DFBA><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20>ƴѰ<C6B4> <20>˻<EFBFBD>
|
|||
|
|
if( TOOL_DATA.IsRegResource(strFinalResName.c_str()) )
|
|||
|
|
{
|
|||
|
|
wxMessageBox( wxT("Actor name is duplicated."), wxT("Can't Register Actor!"), wxICON_ERROR | wxOK, this );
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CRTCutSceneRenderer* pRenderer = TOOL_DATA.GetRenderer();
|
|||
|
|
pRenderer->GetHeightPos( vPos );
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
if( wxID_CANCEL == iResult )
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
//case CDnCutSceneData::RT_RES_MAX_CAMERA:
|
|||
|
|
// // <20><><EFBFBD><EFBFBD> ī<><DEB6> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
// strFinalResName = strSelected;
|
|||
|
|
// break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// for testing..
|
|||
|
|
// <20>ϴ<EFBFBD> 0, 0, 0 <20><><EFBFBD><EFBFBD> <20>ϰ<EFBFBD> <20><><EFBFBD>Ŀ<EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>гο<D0B3><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Y <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
CRegisterResCmd Command( CToolData::GetInstancePtr(), strFinalResName.c_str(), iResKind, vPos, 0.0f );
|
|||
|
|
TOOL_DATA.RunCommand( &Command );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
void cwxWholeResTreePanel::_UpdateRegResourceBtn( void )
|
|||
|
|
{
|
|||
|
|
wxTreeItemId SelectedNode = m_pTreeCtrl->GetSelection();
|
|||
|
|
|
|||
|
|
if( SelectedNode.IsOk() )
|
|||
|
|
{
|
|||
|
|
wxString strSelected = m_pTreeCtrl->GetItemText( SelectedNode );
|
|||
|
|
|
|||
|
|
bool bResult = !TOOL_DATA.IsRegResource( strSelected.c_str() ) &&
|
|||
|
|
strSelected != wxT("Root") &&
|
|||
|
|
strSelected != wxT("Actor") &&
|
|||
|
|
strSelected != wxT("Map");
|
|||
|
|
|
|||
|
|
m_pBtnRegister->Enable( bResult );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
void cwxWholeResTreePanel::OnTreeSelChanged( wxTreeEvent& TreeEvent )
|
|||
|
|
{
|
|||
|
|
_UpdateRegResourceBtn();
|
|||
|
|
|
|||
|
|
wxTreeItemId id = TreeEvent.GetItem();
|
|||
|
|
map<wxTreeItemId, int>::iterator iter = m_mapTreeIdKind.find( id );
|
|||
|
|
if( m_mapTreeIdKind.end() != iter )
|
|||
|
|
{
|
|||
|
|
switch( iter->second )
|
|||
|
|
{
|
|||
|
|
case TREE_ROOT:
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case TREE_ACTOR_SET:
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case TREE_ACTOR:
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case TREE_MAP_SET:
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case TREE_MAP:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
void cwxWholeResTreePanel::CommandPerformed( ICommand* pCommand )
|
|||
|
|
{
|
|||
|
|
switch( pCommand->GetTypeID() )
|
|||
|
|
{
|
|||
|
|
case CMD_REGISTER_RES:
|
|||
|
|
case CMD_UNREGISTER_RES:
|
|||
|
|
_UpdateRegResourceBtn();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|