574 lines
14 KiB
C++
574 lines
14 KiB
C++
|
|
#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;
|
|||
|
|
}
|
|||
|
|
}
|