DragonNest/Client/EtCutSceneTool/cwxRenderPanel.cpp

574 lines
14 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
#include "StdAfx.h"
#include <wx/wx.h>
#include "EternityEngine.h"
#include "RTCutSceneMakerFrame.h"
#include "cwxRenderPanel.h"
#include "IRenderBase.h"
#include "CommandSet.h"
#include "cwxTimeLinePanel.h"
#include "cwxTimeLineCtrl.h"
#include "cwxEventTimeLinePanel.h"
#include "ToolData.h"
BEGIN_EVENT_TABLE( cwxRenderPanel, wxPanel )
EVT_SIZE( cwxRenderPanel::OnSize )
EVT_IDLE( cwxRenderPanel::OnIdle )
EVT_MOUSE_EVENTS( cwxRenderPanel::OnMouseEvent )
//EVT_CHAR( cwxRenderPanel::OnKeyDown ) // bintitle.
// <20>˾<EFBFBD> <20>޴<EFBFBD>
EVT_MENU( POPUP_SELECTED_ACTOR_MOVE, cwxRenderPanel::OnSelectedActorMove )
EVT_MENU( POPUP_SELECTED_ACTOR_ROTATE, cwxRenderPanel::OnSelectedActorRotate )
EVT_MENU( POPUP_SELECTED_PARTICLE_MOVE, cwxRenderPanel::OnSelectedParticleMove )
EVT_MENU( POPUP_SELECTED_PARTICLE_ROTATE, cwxRenderPanel::OnSelectedParticleRotate )
EVT_MENU( POPUP_SELECTED_PARTICLE_UNSELECT, cwxRenderPanel::OnSelectedParticleUnSelect )
END_EVENT_TABLE()
cwxRenderPanel::cwxRenderPanel( wxWindow* pParent, wxWindowID id ) : wxPanel( pParent, id ),
m_PrevFrameTime( timeGetTime() ),
m_pActionTimeLineCtrl( NULL ),
m_LocalTime( 0 ),
m_bPauseScene( false ),
m_pTimeLinePanel( NULL ),
m_iNowMode( RP_EM_COUNT ),
m_bActorMove( false )
/*m_PlayStartTime( 0 )*/
{
m_pRenderer = IRenderBase::Create( (HWND)GetHandle() );
}
cwxRenderPanel::~cwxRenderPanel(void)
{
delete m_pRenderer;
}
void cwxRenderPanel::SetTimeLinePanel( cwxTimeLinePanel* pTimeLinePanel )
{
m_pTimeLinePanel = pTimeLinePanel;
}
void cwxRenderPanel::OnSize( wxSizeEvent& SizeEvent )
{
m_pRenderer->OnResize( SizeEvent.GetSize().GetWidth(), SizeEvent.GetSize().GetHeight() );
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD> <20>̺<EFBFBD>Ʈ
void cwxRenderPanel::OnIdle( wxIdleEvent& IdleEvent )
{
LOCAL_TIME NowTime = timeGetTime();
LOCAL_TIME FrameTimeDelta = NowTime - m_PrevFrameTime;
float fDelta = float(FrameTimeDelta) / 1000.0f;
//float fDelta = 0.0f;
// <20>׼<EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <20>̺<EFBFBD>Ʈ Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10ms <20><><EFBFBD><EFBFBD>
switch( TOOL_DATA.GetEditMode() )
{
case CToolData::EM_PLAY:
{
if( false == m_bPauseScene )
m_LocalTime += FrameTimeDelta;
float fAbsoluteElapsedTime = (float)m_LocalTime * 0.001f;
m_pActionTimeLineCtrl = TOOL_DATA.GetActionTimeLine();
m_pActionTimeLineCtrl->UpdateTimeBar( fAbsoluteElapsedTime );
TOOL_DATA.GetEventTLPanel()->SetTime( fAbsoluteElapsedTime );
//TOOL_DATA.GetEventTLPanel()->ReflectData();
}
break;
case CToolData::EM_FREE_TIME:
{
// <20> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE> <20>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DWORD <20><> ms <20><><EFBFBD><EFBFBD>.
//m_LocalTime = m_pTimeLinePanel->GetNowTime();
m_LocalTime = TOOL_DATA.GetLocalTime();
m_pTimeLinePanel->SyncTimePanels( m_LocalTime ); // Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> <20>гε<D0B3><CEB5><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>.
//m_pActionTimeLineCtrl = TOOL_DATA.GetActionTimeLine();
//float fNowTLAxis = m_pActionTimeLineCtrl->GetNowTimeByUnit();
//fNowTLAxis *= 1000.0f;
//m_LocalTime = /*m_PlayStartTime +*/ DWORD(fNowTLAxis);
}
break;
}
m_pRenderer->OnRender( m_LocalTime, fDelta );
m_PrevFrameTime = NowTime;
IdleEvent.RequestMore();
}
// Ȱ<><C8B0>ȭ <20><>Ȱ<EFBFBD><C8B0>ȭ <20><><EFBFBD><EFBFBD>
void cwxRenderPanel::OnActivate( wxActivateEvent& ActiveEvent )
{
m_pRenderer->SetActivate( ActiveEvent.GetActive() );
}
void cwxRenderPanel::StartPlay( void )
{
if( false == m_bPauseScene )
{
m_pRenderer->SetMode( IRenderBase::PLAY_MODE );
//m_PlayStartTime = timeGetTime();
//m_LocalTime = m_PlayStartTime;
m_LocalTime = 0;
}
else
{
m_bPauseScene = false;
}
}
void cwxRenderPanel::PausePlay( void )
{
m_bPauseScene = true;
}
void cwxRenderPanel::StopPlay( void )
{
m_pRenderer->SetMode( IRenderBase::EDITOR_MODE );
m_LocalTime = 0;
m_bPauseScene = false;
m_pActionTimeLineCtrl = TOOL_DATA.GetActionTimeLine();
m_pActionTimeLineCtrl->UpdateTimeBar( 0.0f );
cwxEventTimeLinePanel* pEventTLPanel = TOOL_DATA.GetEventTLPanel();
pEventTLPanel->SetTime( 0.0f );
pEventTLPanel->ReflectData();
}
void cwxRenderPanel::ResetPlay( void )
{
m_LocalTime = 0;
m_pActionTimeLineCtrl = TOOL_DATA.GetActionTimeLine();
m_pActionTimeLineCtrl->UpdateTimeBar( 0.0f );
cwxEventTimeLinePanel* pEventTLPanel = TOOL_DATA.GetEventTLPanel();
pEventTLPanel->SetTime( 0.0f );
pEventTLPanel->ReflectData();
}
void cwxRenderPanel::SeeThis( const wxChar* pActorName )
{
m_pRenderer->SeeThisActor( pActorName );
}
// bintitle.
void cwxRenderPanel::OnKeyDown(wxKeyEvent& event)
{
m_pRenderer->OnKeyDown( event );
}
void cwxRenderPanel::OnKeyUp(wxKeyEvent& event)
{
m_pRenderer->OnKeyUp( event );
}
// <20><><EFBFBD>콺 Ŭ<><C5AC>
void cwxRenderPanel::OnMouseEvent( wxMouseEvent& MouseEvent )
{
wxPoint Pos = MouseEvent.GetPosition();
if( MouseEvent.LeftDown() )
{
m_pRenderer->OnLButtonDown( Pos.x, Pos.y );
if( m_pRenderer->GetSelectedObjectName() && m_pRenderer->GetSelectedObjectType() == IRenderBase::SO_ACTOR )
{
m_iNowMode = RP_EM_ACTOR_MOVE;
m_PrevMousePoint = MouseEvent.GetPosition();
}
}
else
if( MouseEvent.LeftUp() )
{
m_pRenderer->OnLButtonUp( Pos.x, Pos.y );
}
else if( MouseEvent.RightUp() )
m_pRenderer->OnRButtonUp( Pos.x, Pos.y );
else
if( MouseEvent.RightDown() )
{
m_pRenderer->OnRButtonDown( Pos.x, Pos.y );
if( m_pRenderer->IsObjectSelected() && !m_pRenderer->bIsLockSelect() )
{
wxPoint Point = MouseEvent.GetPosition();
//if( -1 == Point.x && -1 == Point.y )
//{
// wxSize Size = GetSize();
// Point.x = Size.x / 2;
// Point.y = Size.y / 2;
//}
//else
//{
// Point = ScreenToClient( Point );
//}
// AUI <20><> <20>ٸ<EFBFBD> <20>гε<D0B3><CEB5><EFBFBD> <20><EFBFBD>ٰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>г<EFBFBD><D0B3><EFBFBD> <20>DZ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>Ȯ<EFBFBD>ϰ<EFBFBD> <20><>ġ<EFBFBD><C4A1> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
//Point += GetPosition();
// <20><> <20><> Height <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD> <20><>... <20>˾ƿ<CBBE><C6BF><EFBFBD> <20><> <20>𸣰<EFBFBD>... <20>׳<EFBFBD> <20><>ġ<EFBFBD><C4A1>. -_-
//Point.y += 87;
//CRTCutSceneMakerFrame* pMainFrame = static_cast<CRTCutSceneMakerFrame*>(TOOL_DATA.GetMainFrame());
//Point.y += pMainFrame->GetMenuBar()->GetSize().y;
//Point.y += pMainFrame->GetToolBar()->GetToolSize().y;
_PopupContextMenu( Point.x, Point.y );
}
}
else
if( MouseEvent.MiddleDown() )
{
m_pRenderer->OnCButtonDown( Pos.x, Pos.y );
}
else
if( MouseEvent.Dragging() )
{
if( MouseEvent.LeftIsDown() )
{
//if( RP_EM_COUNT == m_iNowMode )
m_pRenderer->OnLButtonDrag( Pos.x, Pos.y );
}
else
if( MouseEvent.RightIsDown() )
m_pRenderer->OnRButtonDrag( Pos.x, Pos.y );
else
if( MouseEvent.MiddleIsDown() )
m_pRenderer->OnCButtonDrag( Pos.x, Pos.y );
}
else
if( MouseEvent.GetWheelRotation() != 0 )
{
if( RP_EM_COUNT == m_iNowMode )
m_pRenderer->OnMouseWheel( MouseEvent.GetWheelRotation() );
}
_ProcessSelectedObjectEdit( MouseEvent );
}
void cwxRenderPanel::_ProcessSelectedObjectEdit( wxMouseEvent& MouseEvent )
{
// <20>̵<EFBFBD><CCB5><EFBFBD> Edit Move <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD> <20>ǵ<EFBFBD><C7B5><EFBFBD> <20><><EFBFBD><EFBFBD>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Move Lock <20>ɼ<EFBFBD><C9BC><EFBFBD> <20>ɵ<EFBFBD><C9B5><EFBFBD> <20><><EFBFBD><EFBFBD>. <20>׸<EFBFBD><D7B8><EFBFBD> <20><>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>Է¹ް<C2B9> <20>ϴ<EFBFBD> <20>κ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD><EFBFBD><EFBFBD> <20>ʳ<EFBFBD>.
// <20>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̳<EFBFBD> <20>Ф<EFBFBD>
switch( m_iNowMode )
{
case RP_EM_ACTOR_MOVE:
{
if( MouseEvent.Dragging() )
{
if( MouseEvent.LeftIsDown() )
{
// <20><><EFBFBD><20><>ġ<EFBFBD><C4A1> <20>˷<EFBFBD><CBB7>ְ<EFBFBD> <20><> <20><>ġ<EFBFBD><C4A1> projection <20>ǵ<EFBFBD><C7B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3>
// <20><><EFBFBD><20><>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> ó<><C3B3><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
wxPoint NowPos = MouseEvent.GetPosition();
if( 3 < abs( NowPos.x - m_PrevMousePoint.x ) || 3 < abs( NowPos.y - m_PrevMousePoint.y ) )
{
m_bActorMove = m_pRenderer->MoveObjectByDragging( m_pRenderer->GetSelectedObjectName(),
MouseEvent.GetPosition().x, MouseEvent.GetPosition().y );
}
}
}
if( MouseEvent.LeftUp() )
{
m_iNowMode = RP_EM_COUNT;
const wchar_t* pActorName = m_pRenderer->GetSelectedObjectName();
int iObjectType = m_pRenderer->GetSelectedObjectType();
//m_pRenderer->SetActorAlpha( pActorName, 1.0f );
//EtVector3 vNewPos = *(m_pRenderer->GetSelectedObjectPos( /*m_pRenderer->GetSelectedObjectName()*/ ));
if( pActorName && iObjectType == IRenderBase::SO_ACTOR && m_bActorMove )
{
EtVector3 vNewPos;
m_pRenderer->GetSelectedObjectPos( &vNewPos );
CActorResPropChange ActorPropChange( &TOOL_DATA, pActorName, pActorName, vNewPos,
TOOL_DATA.GetRegResRot(pActorName),
TOOL_DATA.GetThisActorsFitYPosToMap(pActorName),
TOOL_DATA.GetThisActorsInfluenceLightmap(pActorName),
TOOL_DATA.GetMonsterTableID(pActorName),
TOOL_DATA.GetThisActorsScaleLock(pActorName) );
TOOL_DATA.RunCommand( &ActorPropChange );
m_bActorMove = false;
}
}
}
break;
case RP_EM_ACTOR_ROTATE:
{
// ȸ<><C8B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
int iWheelDelta = MouseEvent.GetWheelRotation();
if( 0 != iWheelDelta )
{
m_strRotateActorName.assign( m_pRenderer->GetSelectedObjectName() );
m_pRenderer->RotateObjectByWheelDelta( iWheelDelta );
}
else
if( MouseEvent.LeftUp() )
{
m_iNowMode = RP_EM_COUNT;
//const wchar_t* pActorName = m_pRenderer->GetSelectedObjectName();
if( !m_strRotateActorName.empty() )
{
m_pRenderer->SetActorAlpha( m_strRotateActorName.c_str(), 1.0f );
float fRotDegree = m_pRenderer->GetRenderActorRotDegree( m_strRotateActorName.c_str() );
CActorResPropChange ActorPropChange( &TOOL_DATA, m_strRotateActorName.c_str(), m_strRotateActorName.c_str(),
TOOL_DATA.GetRegResPos(m_strRotateActorName.c_str()),
fRotDegree,
TOOL_DATA.GetThisActorsFitYPosToMap(m_strRotateActorName.c_str()),
TOOL_DATA.GetThisActorsInfluenceLightmap(m_strRotateActorName.c_str()),
TOOL_DATA.GetMonsterTableID(m_strRotateActorName.c_str()),
TOOL_DATA.GetThisActorsScaleLock(m_strRotateActorName.c_str()) );
TOOL_DATA.RunCommand( &ActorPropChange );
}
}
}
break;
case RP_EM_PARTICLE_MOVE:
{
if( MouseEvent.Dragging() )
{
if( MouseEvent.LeftIsDown() )
{
// <20><><EFBFBD><20><>ġ<EFBFBD><C4A1> <20>˷<EFBFBD><CBB7>ְ<EFBFBD> <20><> <20><>ġ<EFBFBD><C4A1> projection <20>ǵ<EFBFBD><C7B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3>
// <20><><EFBFBD><20><>Ÿ<EFBFBD><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> ó<><C3B3><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
m_pRenderer->MoveObjectByDragging( m_pRenderer->GetSelectedObjectName(),
MouseEvent.GetPosition().x, MouseEvent.GetPosition().y );
}
}
if( MouseEvent.LeftUp() )
{
m_iNowMode = RP_EM_COUNT;
const wchar_t* pActorName = m_pRenderer->GetSelectedObjectName();
EtVector3 vNewPos;
m_pRenderer->GetSelectedObjectPos( &vNewPos );
const EventInfo* pEventInfo = TOOL_DATA.GetEventInfoByID( m_pRenderer->GetSelectedObjectID() );
if( pEventInfo )
{
ParticleEventInfo* pParticleEventInfo = static_cast<ParticleEventInfo*>(pEventInfo->clone());
pParticleEventInfo->vPos = vNewPos;
CEventPropChange EventPropChange( &TOOL_DATA, pParticleEventInfo );
TOOL_DATA.RunCommand( &EventPropChange );
delete pParticleEventInfo;
}
}
}
break;
case RP_EM_PARTICLE_ROTATE:
break;
}
}
void cwxRenderPanel::_PopupContextMenu( int iXPos, int iYPos )
{
wxMenu Menu;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>.
switch( TOOL_DATA.GetEditMode() )
{
case CToolData::EM_EDIT:
{
wxString strSelectedObjectName = m_pRenderer->GetSelectedObjectName();
strSelectedObjectName.append( wxT(" Edit") );
Menu.SetTitle( strSelectedObjectName.c_str() );
switch( m_pRenderer->GetSelectedObjectType() )
{
case IRenderBase::SO_ACTOR:
{
//Menu.Append( POPUP_SELECTED_ACTOR_MOVE, wxT("&Move") );
Menu.Append( POPUP_SELECTED_ACTOR_ROTATE, wxT("&Rotate") );
}
break;
case IRenderBase::SO_PARTICLE:
{
Menu.Append( POPUP_SELECTED_PARTICLE_MOVE, wxT("&Move") );
//Menu.Append( POPUP_SELECTED_PARTICLE_ROTATE, wxT("&Rotate") );
}
break;
}
}
break;
case CToolData::EM_PLAY:
break;
case CToolData::EM_FREE_TIME:
break;
}
PopupMenu( &Menu, iXPos, iYPos );
}
void cwxRenderPanel::OnSelectedActorMove( wxCommandEvent& MenuEvent )
{
m_iNowMode = RP_EM_ACTOR_MOVE;
m_pRenderer->SetActorAlpha( m_pRenderer->GetSelectedObjectName(), 0.5f );
}
void cwxRenderPanel::OnSelectedActorRotate( wxCommandEvent& MenuEvent )
{
m_iNowMode = RP_EM_ACTOR_ROTATE;
m_pRenderer->SetActorAlpha( m_pRenderer->GetSelectedObjectName(), 0.5f );
//m_pRenderer->ShowActorRotate( );
//m_pRenderer->SetActorAlpha( m_pRenderer );
}
void cwxRenderPanel::OnSelectedParticleMove( wxCommandEvent& MenuEvent )
{
m_iNowMode = RP_EM_PARTICLE_MOVE;
}
void cwxRenderPanel::OnSelectedParticleRotate( wxCommandEvent& MenuEvent )
{
m_iNowMode = RP_EM_PARTICLE_ROTATE;
}
void cwxRenderPanel::OnSelectedParticleUnSelect( wxCommandEvent& MenuEvent )
{
m_iNowMode = RP_EM_COUNT;
m_pRenderer->UnSelectObject();
}
void cwxRenderPanel::ToggleCamMode( bool bEditCameraOnPlay )
{
m_pRenderer->ToggleCamMode( bEditCameraOnPlay );
}
void cwxRenderPanel::ToggleShowSpotPos( bool bShowSpotPos )
{
m_pRenderer->ToggleShowSpotPos( bShowSpotPos );
}
void cwxRenderPanel::ToggleRenderFog( bool bRenderFog )
{
m_pRenderer->SetRenderFog( bRenderFog );
}
void cwxRenderPanel::ToggleLetterBox( bool bToggleLetterBox )
{
m_pRenderer->ToggleLetterBox( bToggleLetterBox );
}
void cwxRenderPanel::ToggleWeapon( bool bToggleWeapon ) // bintitle.
{
m_pRenderer->ToggleWeapon( bToggleWeapon );
}
void cwxRenderPanel::CommandPerformed( ICommand* pCommand )
{
switch( pCommand->GetTypeID() )
{
case CMD_UPDATE_VIEW:
case CMD_REGISTER_RES:
case CMD_UNREGISTER_RES:
case CMD_ACTOR_PROP_CHANGE:
case CMD_ACTION_PROP_CHANGE:
m_pRenderer->UpdateRenderObject();
break;
case CMD_CHANGE_ACTOR_RES:
{
CChangeActorRes* pActorResChange = static_cast<CChangeActorRes*>( pCommand );
if( pCommand->IsUndo() )
m_pRenderer->ChangeActor( pActorResChange->GetNewActorName(), pActorResChange->GetOldActorResName() );
else
m_pRenderer->ChangeActor( pActorResChange->GetOldActorName(), pActorResChange->GetNewActorResName() );
}
break;
case CMD_EVENT_PROP_CHANGE:
{
m_pRenderer->UpdateSelectedObject();
//CEventPropChange* pEventPropChange = static_cast<CEventPropChange*>(pCommand);
//
//if( false == pEventPropChange->m_bUndo )
//{
// if( m_pRenderer->GetSelectedObjectID() == pEventPropChange->m_pNewEventInfo->iID )
// m_pRenderer->UpdateSelectedObject();
//}
//else
//{
//}
}
break;
case CMD_REMOVE_EVENT:
{
CEventRemoveCmd* pEventRemove = static_cast<CEventRemoveCmd*>(pCommand);
if( m_pRenderer->GetSelectedObjectID() == pEventRemove->m_iEventIDToRemove )
m_pRenderer->UnSelectObject();
}
break;
}
}