488 lines
14 KiB
C++
488 lines
14 KiB
C++
|
|
// KeyControlPaneView.cpp : implementation file
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#include "stdafx.h"
|
|||
|
|
#include "EtEffect2Tool.h"
|
|||
|
|
#include "EtEffectDataContainer.h"
|
|||
|
|
#include "KeyControlPaneView.h"
|
|||
|
|
#include "GlobalValue.h"
|
|||
|
|
#include "AxisRenderObject.h"
|
|||
|
|
#include "PropertyPaneView.h"
|
|||
|
|
|
|||
|
|
// CKeyControlPaneView
|
|||
|
|
|
|||
|
|
IMPLEMENT_DYNCREATE(CKeyControlPaneView, CScrollView)
|
|||
|
|
|
|||
|
|
CKeyControlPaneView::CKeyControlPaneView()
|
|||
|
|
//: CScrollView(CKeyControlPaneView::IDD)
|
|||
|
|
{
|
|||
|
|
m_pSliderCtrl = NULL;
|
|||
|
|
m_dwGridWidth = 10;
|
|||
|
|
m_dwGridHeight = 16;
|
|||
|
|
m_dwGridHeightCount = 1;
|
|||
|
|
m_dwScrollHeight = 25;
|
|||
|
|
m_pMemDC = NULL;
|
|||
|
|
m_pdcBitmap = NULL;
|
|||
|
|
m_bActivate = false;
|
|||
|
|
m_overIndex = -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CKeyControlPaneView::~CKeyControlPaneView()
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pSliderCtrl );
|
|||
|
|
DeleteMemDC();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::DoDataExchange(CDataExchange* pDX)
|
|||
|
|
{
|
|||
|
|
CScrollView::DoDataExchange(pDX);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
BEGIN_MESSAGE_MAP(CKeyControlPaneView, CScrollView)
|
|||
|
|
ON_WM_PAINT()
|
|||
|
|
ON_WM_SIZE()
|
|||
|
|
ON_WM_MOUSEMOVE()
|
|||
|
|
ON_WM_LBUTTONDBLCLK()
|
|||
|
|
ON_WM_LBUTTONDOWN()
|
|||
|
|
ON_WM_RBUTTONDBLCLK()
|
|||
|
|
END_MESSAGE_MAP()
|
|||
|
|
|
|||
|
|
|
|||
|
|
// CKeyControlPaneView diagnostics
|
|||
|
|
|
|||
|
|
#ifdef _DEBUG
|
|||
|
|
void CKeyControlPaneView::AssertValid() const
|
|||
|
|
{
|
|||
|
|
CScrollView::AssertValid();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#ifndef _WIN32_WCE
|
|||
|
|
void CKeyControlPaneView::Dump(CDumpContext& dc) const
|
|||
|
|
{
|
|||
|
|
CScrollView::Dump(dc);
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
#endif //_DEBUG
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::Reset()
|
|||
|
|
{
|
|||
|
|
m_overIndex = -1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::CreateSlider()
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pSliderCtrl );
|
|||
|
|
// Create Slider Ctrl
|
|||
|
|
DWORD dwStyle = TBS_FIXEDLENGTH | TBS_HORZ | TBS_AUTOTICKS | TBS_BOTTOM | WS_CHILD | WS_VISIBLE;
|
|||
|
|
|
|||
|
|
m_pSliderCtrl = new CSliderCtrl;
|
|||
|
|
m_pSliderCtrl->Create( dwStyle, CRect( 0, 0, 500, 30 ), this, 10000 );
|
|||
|
|
m_pSliderCtrl->SetRange( 0, 2 );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::SetRangeMax( int nMax )
|
|||
|
|
{
|
|||
|
|
m_pSliderCtrl->SetRange(0, nMax);
|
|||
|
|
RefreshScroll();
|
|||
|
|
RefreshSlider();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::RefreshSlider()
|
|||
|
|
{
|
|||
|
|
// CPoint ScrollPos( GetScrollPos( SB_HORZ ), GetScrollPos( SB_VERT ) );
|
|||
|
|
int nScrollPos = GetScrollPos( SB_HORZ );
|
|||
|
|
|
|||
|
|
if(!m_pSliderCtrl) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CRect rcRect, rcResize;
|
|||
|
|
//DWORD dwPrevRight = 0;
|
|||
|
|
GetClientRect( &rcRect );
|
|||
|
|
rcRect.bottom = m_dwScrollHeight;
|
|||
|
|
// if( pCtrl->GetRangeMin() == 0 && pCtrl->GetRangeMax() == 0 ) continue;
|
|||
|
|
|
|||
|
|
rcResize = rcRect;
|
|||
|
|
rcResize.bottom = m_dwScrollHeight;
|
|||
|
|
rcResize.left = 0;
|
|||
|
|
rcResize.right = rcResize.left + ( m_dwGridWidth *m_pSliderCtrl->GetRangeMax() ) + 29;
|
|||
|
|
//dwPrevRight = rcResize.right + 5;
|
|||
|
|
|
|||
|
|
rcResize.left -= nScrollPos;
|
|||
|
|
rcResize.right -= nScrollPos;
|
|||
|
|
m_pSliderCtrl->MoveWindow( rcResize );
|
|||
|
|
|
|||
|
|
//m_dwLastSliderRight = dwPrevRight - 5;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::RefreshScroll()
|
|||
|
|
{
|
|||
|
|
DWORD dwTotalWidth = 0;
|
|||
|
|
CRect rcRect;
|
|||
|
|
|
|||
|
|
if( m_pSliderCtrl ) {
|
|||
|
|
dwTotalWidth += ( m_dwGridWidth * m_pSliderCtrl->GetRangeMax() ) + 5 + 29;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Scroll Resize
|
|||
|
|
CSize TotalSize;
|
|||
|
|
TotalSize.cx = dwTotalWidth;
|
|||
|
|
TotalSize.cy = m_dwScrollHeight + ( m_dwGridHeightCount * m_dwGridHeight ) + 1;
|
|||
|
|
|
|||
|
|
SetScrollSizes( MM_TEXT, TotalSize );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::OnInitialUpdate()
|
|||
|
|
{
|
|||
|
|
if(m_bActivate) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
m_bActivate = true;
|
|||
|
|
CScrollView::OnInitialUpdate();
|
|||
|
|
CGlobalValue::GetInstance().SetKeyControlView( this );
|
|||
|
|
|
|||
|
|
CreateSlider();
|
|||
|
|
RefreshScroll();
|
|||
|
|
RefreshSlider();
|
|||
|
|
|
|||
|
|
CGlobalValue::GetInstance().InitAxisRender();
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::CreateMemDC()
|
|||
|
|
{
|
|||
|
|
//if( m_pdcBitmap || m_pMemDC ) return;
|
|||
|
|
DeleteMemDC();
|
|||
|
|
|
|||
|
|
m_pMemDC = new CDC;
|
|||
|
|
m_pdcBitmap = new CBitmap;
|
|||
|
|
|
|||
|
|
CRect rcRect;
|
|||
|
|
GetClientRect( &rcRect );
|
|||
|
|
|
|||
|
|
CDC *pDC = GetDC();
|
|||
|
|
m_pMemDC->CreateCompatibleDC( pDC );
|
|||
|
|
m_pdcBitmap->CreateCompatibleBitmap( pDC, rcRect.Width(), rcRect.Height() );
|
|||
|
|
ReleaseDC( pDC );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::DeleteMemDC()
|
|||
|
|
{
|
|||
|
|
if( m_pdcBitmap ) {
|
|||
|
|
m_pdcBitmap->DeleteObject();
|
|||
|
|
SAFE_DELETE( m_pdcBitmap );
|
|||
|
|
}
|
|||
|
|
if( m_pMemDC ) {
|
|||
|
|
m_pMemDC->DeleteDC();
|
|||
|
|
SAFE_DELETE( m_pMemDC );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::DrawGrid()
|
|||
|
|
{
|
|||
|
|
CRect rcSliderRect;
|
|||
|
|
CPoint Point[2];
|
|||
|
|
|
|||
|
|
m_pSliderCtrl->GetWindowRect( &rcSliderRect );
|
|||
|
|
ScreenToClient( &rcSliderRect );
|
|||
|
|
if( m_pSliderCtrl->GetRangeMin() == 0 && m_pSliderCtrl->GetRangeMax() == 0 ) return;
|
|||
|
|
|
|||
|
|
COLORREF Col;
|
|||
|
|
Col = RGB( 64, 64, 64 );
|
|||
|
|
CPen Pen( PS_DOT, 1, Col );
|
|||
|
|
|
|||
|
|
CPen PenBold( PS_SOLID, 2, RGB( GetRValue(Col) * 0.8f, GetGValue(Col) * 0.8f, GetBValue(Col) * 0.8f ) );
|
|||
|
|
|
|||
|
|
CPen PenTick( PS_SOLID, 2, Col );
|
|||
|
|
CPen PenCurPos( PS_SOLID, 2, Col );
|
|||
|
|
|
|||
|
|
//CPoint ScrollPos( GetScrollPos( SB_HORZ ), GetScrollPos( SB_VERT ) );
|
|||
|
|
//rcSliderRect.left -= GetScrollPos( SB_HORZ );
|
|||
|
|
//rcSliderRect.right -= GetScrollPos( SB_HORZ );
|
|||
|
|
rcSliderRect.top -= GetScrollPos( SB_VERT );
|
|||
|
|
rcSliderRect.bottom -= GetScrollPos( SB_VERT );
|
|||
|
|
// <20><><EFBFBD>μ<EFBFBD> <20><EFBFBD><D7B7>ֱ<EFBFBD>~
|
|||
|
|
int nCount = m_pSliderCtrl->GetRangeMax() - m_pSliderCtrl->GetRangeMin();
|
|||
|
|
int nFrameCount = nCount;
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><D7B7>ֱ<EFBFBD>..
|
|||
|
|
int nCurPos = m_pSliderCtrl->GetPos();
|
|||
|
|
int m_dwTickCount = 10;
|
|||
|
|
for( int i=-1; i<nCount; i++ ) {
|
|||
|
|
if( i == -1 ) {
|
|||
|
|
Point[0] = CPoint( rcSliderRect.left + 13, rcSliderRect.top );
|
|||
|
|
Point[1] = CPoint( rcSliderRect.left + 13, rcSliderRect.top + ( (m_dwGridHeightCount) * m_dwGridHeight ) );
|
|||
|
|
m_pMemDC->SelectObject( &PenBold );
|
|||
|
|
}
|
|||
|
|
else if( i == nCount - 1 ) {
|
|||
|
|
Point[0] = CPoint( rcSliderRect.right - 14, rcSliderRect.top );
|
|||
|
|
Point[1] = CPoint( rcSliderRect.right - 14, rcSliderRect.top + ( (m_dwGridHeightCount) * m_dwGridHeight ) );
|
|||
|
|
m_pMemDC->SelectObject( &PenBold );
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
Point[0] = CPoint( rcSliderRect.left + m_pSliderCtrl->GetTicPos(i), rcSliderRect.top );
|
|||
|
|
Point[1] = CPoint( rcSliderRect.left + m_pSliderCtrl->GetTicPos(i), rcSliderRect.top + ( (m_dwGridHeightCount) * m_dwGridHeight ) );
|
|||
|
|
if( i != 0 && (i+1) % m_dwTickCount == 0 )
|
|||
|
|
m_pMemDC->SelectObject( &PenTick );
|
|||
|
|
else m_pMemDC->SelectObject( &Pen );
|
|||
|
|
}
|
|||
|
|
if( nCurPos - 1 == i ) {
|
|||
|
|
//m_pMemDC->SelectObject( &PenCurPos );
|
|||
|
|
}
|
|||
|
|
// Point[0] -= ScrollPos;
|
|||
|
|
// Point[1] -= ScrollPos;
|
|||
|
|
m_pMemDC->Polyline( Point, 2 );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>μ<EFBFBD> <20><EFBFBD><D7B7>ֱ<EFBFBD>~
|
|||
|
|
nCount = (m_dwGridHeightCount);
|
|||
|
|
for( int i=0; i<nCount+1; i++ ) {
|
|||
|
|
if( i == 0 || i == nCount ) m_pMemDC->SelectObject( &PenBold );
|
|||
|
|
else m_pMemDC->SelectObject( &Pen );
|
|||
|
|
Point[0] = CPoint( rcSliderRect.left + 13, rcSliderRect.top + ( i * m_dwGridHeight ) );
|
|||
|
|
Point[1] = CPoint( rcSliderRect.right - 14, rcSliderRect.top + ( i * m_dwGridHeight ) );
|
|||
|
|
// Point[0] -= ScrollPos;
|
|||
|
|
// Point[1] -= ScrollPos;
|
|||
|
|
m_pMemDC->Polyline( Point, 2 );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::OnPaint()
|
|||
|
|
{
|
|||
|
|
CPaintDC dc(this); // device context for painting
|
|||
|
|
// TODO: Add your message handler code here
|
|||
|
|
// Do not call CScrollView::OnPaint() for painting messages
|
|||
|
|
CreateMemDC();
|
|||
|
|
|
|||
|
|
CRect rcRect;
|
|||
|
|
CBitmap *pOldBitmap;
|
|||
|
|
GetClientRect( &rcRect );
|
|||
|
|
|
|||
|
|
pOldBitmap = m_pMemDC->SelectObject( m_pdcBitmap );
|
|||
|
|
m_pMemDC->FillSolidRect( &rcRect, RGB(255,255,255) );
|
|||
|
|
// Draw memDC
|
|||
|
|
DrawGrid();
|
|||
|
|
DrawItems();
|
|||
|
|
ReleaseDC( m_pMemDC );
|
|||
|
|
dc.BitBlt(rcRect.left, rcRect.top + m_dwScrollHeight, rcRect.Width(), rcRect.Height() ,
|
|||
|
|
m_pMemDC, rcRect.left, rcRect.top, SRCCOPY);
|
|||
|
|
m_pMemDC->SelectObject(pOldBitmap);
|
|||
|
|
|
|||
|
|
|
|||
|
|
//TRACE("OnPaint()\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::OnDraw(CDC* /*pDC*/)
|
|||
|
|
{
|
|||
|
|
// TODO: Add your specialized code here and/or call the base class
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::OnSize(UINT nType, int cx, int cy)
|
|||
|
|
{
|
|||
|
|
CScrollView::OnSize(nType, cx, cy);
|
|||
|
|
RefreshScroll();
|
|||
|
|
RefreshSlider();
|
|||
|
|
//DeleteMemDC();
|
|||
|
|
//CreateMemDC();
|
|||
|
|
// TODO: Add your message handler code here
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::OnMouseMove(UINT nFlags, CPoint point)
|
|||
|
|
{
|
|||
|
|
// TODO: Add your message handler code here and/or call default
|
|||
|
|
m_mousePoint = point;
|
|||
|
|
Invalidate(false);
|
|||
|
|
CScrollView::OnMouseMove(nFlags, point);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::OnFXSelected( CString str )
|
|||
|
|
{
|
|||
|
|
SetRangeMax( CGlobalValue::GetInstance().FindItem( str )->dwEndFrame -
|
|||
|
|
CGlobalValue::GetInstance().FindItem( str )->dwStartFrame );
|
|||
|
|
|
|||
|
|
m_ppTable = CGlobalValue::GetInstance().GetFXData( str );
|
|||
|
|
|
|||
|
|
Invalidate();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
RECT CKeyControlPaneView::GetKeyframeRect( int index )
|
|||
|
|
{
|
|||
|
|
RECT rcSliderRect;
|
|||
|
|
m_pSliderCtrl->GetWindowRect( &rcSliderRect );
|
|||
|
|
ScreenToClient( &rcSliderRect );
|
|||
|
|
rcSliderRect.top -= GetScrollPos( SB_VERT );
|
|||
|
|
rcSliderRect.bottom -= GetScrollPos( SB_VERT );
|
|||
|
|
|
|||
|
|
RECT rcSelect;
|
|||
|
|
int p1 = (index == 0) ? rcSliderRect.left + 13 : rcSliderRect.left + m_pSliderCtrl->GetTicPos(index-1);
|
|||
|
|
rcSelect.left = p1;
|
|||
|
|
rcSelect.top = rcSliderRect.top;
|
|||
|
|
rcSelect.right = rcSelect.left + m_dwGridWidth;
|
|||
|
|
rcSelect.bottom = rcSelect.top + m_dwGridHeight;
|
|||
|
|
return rcSelect;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::DrawItems()
|
|||
|
|
{
|
|||
|
|
if( CGlobalValue::GetInstance().GetPosOrRot() == 0 ) {
|
|||
|
|
CEtEffectDataContainer *pTable = m_ppTable[ERT_POSITION_TABLE];
|
|||
|
|
for( DWORD i = 0; i < pTable->GetDataCount(); i++) {
|
|||
|
|
CEtEffectPositionDataValue *pPosTable = (CEtEffectPositionDataValue*)pTable->GetValueFromIndex(i);
|
|||
|
|
RECT rcSelect = GetKeyframeRect( (int)pPosTable->GetKey() );
|
|||
|
|
m_pMemDC->FillSolidRect( &rcSelect, m_overIndex == pPosTable->GetKey() ?
|
|||
|
|
RGB( 255, 64, 64) : RGB( 128, 128, 255) );
|
|||
|
|
m_pMemDC->DrawText( "P", &rcSelect, DT_SINGLELINE | DT_CENTER | DT_VCENTER );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if( CGlobalValue::GetInstance().GetPosOrRot() == 1 ) {
|
|||
|
|
CEtEffectDataContainer *pTable = m_ppTable[ERT_ROTATE_TABLE];
|
|||
|
|
for( DWORD i = 0; i < pTable->GetDataCount(); i++) {
|
|||
|
|
CEtEffectRotationDataValue *pRotTable = (CEtEffectRotationDataValue*)pTable->GetValueFromIndex(i);
|
|||
|
|
RECT rcSelect = GetKeyframeRect( (int)pRotTable->GetKey() );
|
|||
|
|
m_pMemDC->FillSolidRect( &rcSelect, m_overIndex == pRotTable->GetKey() ?
|
|||
|
|
RGB( 255, 64, 64) : RGB(128, 255, 128) );
|
|||
|
|
m_pMemDC->DrawText( "R", &rcSelect, DT_SINGLELINE | DT_CENTER | DT_VCENTER );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int CKeyControlPaneView::GetMouseOverIndex()
|
|||
|
|
{
|
|||
|
|
RECT rcSliderRect;
|
|||
|
|
m_pSliderCtrl->GetWindowRect( &rcSliderRect );
|
|||
|
|
ScreenToClient( &rcSliderRect );
|
|||
|
|
rcSliderRect.top -= GetScrollPos( SB_VERT );
|
|||
|
|
rcSliderRect.bottom -= GetScrollPos( SB_VERT );
|
|||
|
|
int nFrameCount = m_pSliderCtrl->GetRangeMax() - m_pSliderCtrl->GetRangeMin();
|
|||
|
|
int selectIndex = -1;
|
|||
|
|
|
|||
|
|
if( m_mousePoint.y > 25 && m_mousePoint.y <= 25 + (int)m_dwGridHeight &&
|
|||
|
|
m_mousePoint.x > rcSliderRect.left + 13 &&
|
|||
|
|
m_mousePoint.x < rcSliderRect.right - 14 ) {
|
|||
|
|
for( int i = 0; i < nFrameCount; i++) {
|
|||
|
|
int p1 = (i == 0) ? rcSliderRect.left + 13 : rcSliderRect.left + m_pSliderCtrl->GetTicPos(i-1);
|
|||
|
|
int p2 = (i == nFrameCount-1) ? rcSliderRect.right - 14 : rcSliderRect.left + m_pSliderCtrl->GetTicPos(i);
|
|||
|
|
if( m_mousePoint.x >= p1 && m_mousePoint.x < p2 ) {
|
|||
|
|
selectIndex = i;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return selectIndex;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ŵ, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
|||
|
|
void CKeyControlPaneView::OnLButtonDblClk(UINT nFlags, CPoint point)
|
|||
|
|
{
|
|||
|
|
// TODO: Add your message handler code here and/or call default
|
|||
|
|
m_overIndex = GetMouseOverIndex();
|
|||
|
|
if( m_overIndex == -1) {
|
|||
|
|
CGlobalValue::GetInstance().SetPositionPtr( NULL );
|
|||
|
|
CGlobalValue::GetInstance().SetRotationPtr( NULL );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if( m_overIndex != -1 ) {
|
|||
|
|
if( CGlobalValue::GetInstance().GetPosOrRot() == 0 ) {
|
|||
|
|
CEtEffectDataContainer *pTable = m_ppTable[ERT_POSITION_TABLE];
|
|||
|
|
DWORD i;
|
|||
|
|
for( i = 0; i < pTable->GetDataCount(); i++) {
|
|||
|
|
if( pTable->GetValueFromIndex(i)->GetKey() == m_overIndex ) {
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if( i == pTable->GetDataCount() ) {
|
|||
|
|
CEtEffectPositionDataValue *pPosTableValue = new CEtEffectPositionDataValue;
|
|||
|
|
pPosTableValue->SetKey( (float)m_overIndex );
|
|||
|
|
pPosTableValue->SetPosition( CGlobalValue::GetInstance().GetAxisRenderObject()->GetPosition() );
|
|||
|
|
|
|||
|
|
CGlobalValue::GetInstance().SetPositionPtr( pPosTableValue->GetPosition() );
|
|||
|
|
pTable->AddData( pPosTableValue, true );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if ( CGlobalValue::GetInstance().GetPosOrRot() == 1 ) {
|
|||
|
|
CEtEffectDataContainer *pTable = m_ppTable[ERT_ROTATE_TABLE];
|
|||
|
|
DWORD i;
|
|||
|
|
for( i = 0; i < pTable->GetDataCount(); i++) {
|
|||
|
|
if( pTable->GetValueFromIndex(i)->GetKey() == m_overIndex ) {
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if( i == pTable->GetDataCount() ) {
|
|||
|
|
CEtEffectRotationDataValue *pRotTableValue = new CEtEffectRotationDataValue;
|
|||
|
|
pRotTableValue->SetKey( (float)m_overIndex );
|
|||
|
|
pRotTableValue->SetRotation( CGlobalValue::GetInstance().GetAxisRenderObject()->GetRotation() );
|
|||
|
|
pTable->AddData( pRotTableValue, true );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
CScrollView::OnLButtonDblClk(nFlags, point);
|
|||
|
|
Invalidate(FALSE);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CKeyControlPaneView::OnLButtonDown(UINT nFlags, CPoint point)
|
|||
|
|
{
|
|||
|
|
m_overIndex = GetMouseOverIndex();
|
|||
|
|
if( m_overIndex == -1) {
|
|||
|
|
CGlobalValue::GetInstance().SetPositionPtr( NULL );
|
|||
|
|
CGlobalValue::GetInstance().SetRotationPtr( NULL );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if( CGlobalValue::GetInstance().GetPosOrRot() == 0 ) {
|
|||
|
|
CEtEffectDataContainer *pTable = m_ppTable[ERT_POSITION_TABLE];
|
|||
|
|
for( DWORD i = 0; i < pTable->GetDataCount(); i++) {
|
|||
|
|
CEtEffectPositionDataValue *pPosTable = (CEtEffectPositionDataValue*)pTable->GetValueFromIndex(i);
|
|||
|
|
if( (int)pPosTable->GetKey() == m_overIndex ) {
|
|||
|
|
CGlobalValue::GetInstance().GetAxisRenderObject()->SetPosition( *pPosTable->GetPosition() );
|
|||
|
|
CGlobalValue::GetInstance().SetPositionPtr( pPosTable->GetPosition() );
|
|||
|
|
CGlobalValue::GetInstance().GetPropertyPaneView()->OnPositionSelected( *pPosTable->GetPosition() );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if( CGlobalValue::GetInstance().GetPosOrRot() == 1 ) {
|
|||
|
|
CEtEffectDataContainer *pTable = m_ppTable[ERT_ROTATE_TABLE];
|
|||
|
|
for( DWORD i = 0; i < pTable->GetDataCount(); i++) {
|
|||
|
|
CEtEffectRotationDataValue *pRotTable = (CEtEffectRotationDataValue*)pTable->GetValueFromIndex(i);
|
|||
|
|
if( (int)pRotTable->GetKey() == m_overIndex ) {
|
|||
|
|
CGlobalValue::GetInstance().GetAxisRenderObject()->SetRotation( *pRotTable->GetRotation() );
|
|||
|
|
CGlobalValue::GetInstance().SetRotationPtr( pRotTable->GetRotation() );
|
|||
|
|
CGlobalValue::GetInstance().GetPropertyPaneView()->OnRotationSelected( *pRotTable->GetRotation() );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
Invalidate();
|
|||
|
|
CScrollView::OnLButtonDown(nFlags, point);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Ű<><C5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
void CKeyControlPaneView::OnRButtonDblClk(UINT nFlags, CPoint point)
|
|||
|
|
{
|
|||
|
|
// TODO: Add your message handler code here and/or call default
|
|||
|
|
int selectIndex = GetMouseOverIndex();
|
|||
|
|
if( selectIndex != -1 ) {
|
|||
|
|
if( CGlobalValue::GetInstance().GetPosOrRot() == 0 ) {
|
|||
|
|
CEtEffectDataContainer *pTable = m_ppTable[ERT_POSITION_TABLE];
|
|||
|
|
DWORD i;
|
|||
|
|
for( i = 0; i < pTable->GetDataCount(); i++) {
|
|||
|
|
if( pTable->GetValueFromIndex( i )->GetKey() == selectIndex ) {
|
|||
|
|
pTable->RemoveData( i );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if ( CGlobalValue::GetInstance().GetPosOrRot() == 1 ) {
|
|||
|
|
CEtEffectDataContainer *pTable = m_ppTable[ERT_ROTATE_TABLE];
|
|||
|
|
DWORD i;
|
|||
|
|
for( i = 0; i < pTable->GetDataCount(); i++) {
|
|||
|
|
if( pTable->GetValueFromIndex( i )->GetKey() == selectIndex ) {
|
|||
|
|
pTable->RemoveData( i );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
Invalidate(FALSE);
|
|||
|
|
CScrollView::OnRButtonDblClk(nFlags, point);
|
|||
|
|
}
|