123
This commit is contained in:
209
Editor/TVSequenceProps.cpp
Normal file
209
Editor/TVSequenceProps.cpp
Normal file
@@ -0,0 +1,209 @@
|
||||
// TVSequenceProps.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "TVSequenceProps.h"
|
||||
#include "IMovieSystem.h"
|
||||
#include "TrackViewUndo.h"
|
||||
|
||||
// CTVSequenceProps dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(CTVSequenceProps, CDialog)
|
||||
|
||||
CTVSequenceProps::CTVSequenceProps( IAnimSequence *seq,CWnd* pParent /* = NULL */ )
|
||||
: CDialog(CTVSequenceProps::IDD, pParent)
|
||||
, m_outOfRange(0)
|
||||
{
|
||||
assert( seq );
|
||||
m_sequence = seq;
|
||||
}
|
||||
|
||||
CTVSequenceProps::~CTVSequenceProps()
|
||||
{
|
||||
}
|
||||
|
||||
void CTVSequenceProps::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_NAME, m_nameEdit);
|
||||
DDX_Control(pDX, IDC_ALWAYS_PLAY, m_alwaysPlayingBtn);
|
||||
DDX_Control(pDX, IDC_CUT_SCENE, m_cutSceneBtn);
|
||||
DDX_Control(pDX, IDC_DISABLEHUD, m_NoHUDBtn);
|
||||
DDX_Control(pDX, IDC_DISABLEPLAYER, m_NoPlayerBtn);
|
||||
DDX_Control(pDX, IDC_DISABLEPHYICS, m_NoPhysicsBtn);
|
||||
DDX_Control(pDX, IDC_DISABLEAI, m_NoAIBtn);
|
||||
DDX_Control(pDX, IDC_16TO9, m_16To9);
|
||||
DDX_Control(pDX, IDC_DISABLESOUNDS, m_NoSoundsBtn);
|
||||
DDX_Radio(pDX, IDC_ORT_ONCE, m_outOfRange);
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CTVSequenceProps, CDialog)
|
||||
ON_BN_CLICKED(IDC_RESCALE_TIME, OnBnClickedRescaleTime)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// CTVSequenceProps message handlers
|
||||
|
||||
BOOL CTVSequenceProps::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
m_nameEdit.SetWindowText( m_sequence->GetName() );
|
||||
int seqFlags = m_sequence->GetFlags();
|
||||
|
||||
if (seqFlags & IAnimSequence::PLAY_ONRESET)
|
||||
m_alwaysPlayingBtn.SetCheck( BST_CHECKED );
|
||||
else
|
||||
m_alwaysPlayingBtn.SetCheck( BST_UNCHECKED );
|
||||
|
||||
if (seqFlags & IAnimSequence::CUT_SCENE)
|
||||
m_cutSceneBtn.SetCheck( BST_CHECKED );
|
||||
else
|
||||
m_cutSceneBtn.SetCheck( BST_UNCHECKED );
|
||||
|
||||
if (seqFlags & IAnimSequence::NO_HUD)
|
||||
m_NoHUDBtn.SetCheck( BST_CHECKED );
|
||||
else
|
||||
m_NoHUDBtn.SetCheck( BST_UNCHECKED );
|
||||
|
||||
if (seqFlags & IAnimSequence::NO_PLAYER)
|
||||
m_NoPlayerBtn.SetCheck( BST_CHECKED );
|
||||
else
|
||||
m_NoPlayerBtn.SetCheck( BST_UNCHECKED );
|
||||
|
||||
if (seqFlags & IAnimSequence::NO_PHYSICS)
|
||||
m_NoPhysicsBtn.SetCheck( BST_CHECKED );
|
||||
else
|
||||
m_NoPhysicsBtn.SetCheck( BST_UNCHECKED );
|
||||
|
||||
if (seqFlags & IAnimSequence::NO_AI)
|
||||
m_NoAIBtn.SetCheck( BST_CHECKED );
|
||||
else
|
||||
m_NoAIBtn.SetCheck( BST_UNCHECKED );
|
||||
|
||||
if (seqFlags & IAnimSequence::IS_16TO9)
|
||||
m_16To9.SetCheck( BST_CHECKED );
|
||||
else
|
||||
m_16To9.SetCheck( BST_UNCHECKED );
|
||||
|
||||
m_NoSoundsBtn.SetCheck( (seqFlags&IAnimSequence::NO_GAMESOUNDS) ? BST_CHECKED : BST_UNCHECKED );
|
||||
|
||||
m_startTime.Create( this,IDC_START_TIME );
|
||||
m_endTime.Create( this,IDC_END_TIME );
|
||||
m_length.Create( this,IDC_LENGTH );
|
||||
|
||||
Range timeRange = m_sequence->GetTimeRange();
|
||||
m_startTime.SetValue( timeRange.start );
|
||||
m_endTime.SetValue( timeRange.end );
|
||||
|
||||
m_length.SetValue( timeRange.Length() );
|
||||
|
||||
m_outOfRange = 0;
|
||||
if (m_sequence->GetFlags() & IAnimSequence::ORT_CONSTANT)
|
||||
{
|
||||
m_outOfRange = 1;
|
||||
}
|
||||
else if (m_sequence->GetFlags() & IAnimSequence::ORT_LOOP)
|
||||
{
|
||||
m_outOfRange = 2;
|
||||
}
|
||||
UpdateData(FALSE);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
void CTVSequenceProps::OnBnClickedRescaleTime()
|
||||
{
|
||||
CUndo undo( "AnimSequence Scale Time" );
|
||||
CUndo::Record( new CUndoAnimSequenceObject(m_sequence) );
|
||||
// Rescale sequence to a new length.
|
||||
Range timeRange;
|
||||
timeRange.start = m_startTime.GetValue();
|
||||
timeRange.end = m_endTime.GetValue();
|
||||
|
||||
float oldLength = timeRange.Length();
|
||||
float newLength = m_length.GetValue();
|
||||
if (oldLength != newLength)
|
||||
{
|
||||
//m_sequence->SetTimeRange( timeRange.start
|
||||
timeRange.end = timeRange.start + newLength;
|
||||
m_sequence->ScaleTimeRange( timeRange );
|
||||
m_startTime.SetValue( timeRange.start );
|
||||
m_endTime.SetValue( timeRange.end );
|
||||
}
|
||||
}
|
||||
|
||||
void CTVSequenceProps::OnOK()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
|
||||
CUndo undo( "AnimSequence Modified" );
|
||||
CUndo::Record( new CUndoAnimSequenceObject(m_sequence) );
|
||||
|
||||
Range timeRange;
|
||||
timeRange.start = m_startTime.GetValue();
|
||||
timeRange.end = m_endTime.GetValue();
|
||||
m_sequence->SetTimeRange( timeRange );
|
||||
|
||||
CString name;
|
||||
m_nameEdit.GetWindowText( name );
|
||||
if (name != m_sequence->GetName())
|
||||
{
|
||||
// Rename sequence.
|
||||
m_sequence->SetName( name );
|
||||
}
|
||||
|
||||
int seqFlags = m_sequence->GetFlags();
|
||||
seqFlags &= ~(IAnimSequence::ORT_CONSTANT | IAnimSequence::ORT_LOOP);
|
||||
|
||||
if (m_alwaysPlayingBtn.GetCheck() == BST_CHECKED)
|
||||
seqFlags |= IAnimSequence::PLAY_ONRESET;
|
||||
else
|
||||
seqFlags &= (~IAnimSequence::PLAY_ONRESET);
|
||||
|
||||
if (m_cutSceneBtn.GetCheck() == BST_CHECKED)
|
||||
seqFlags |= IAnimSequence::CUT_SCENE;
|
||||
else
|
||||
seqFlags &= (~IAnimSequence::CUT_SCENE);
|
||||
|
||||
if (m_NoHUDBtn.GetCheck() == BST_CHECKED)
|
||||
seqFlags |= IAnimSequence::NO_HUD;
|
||||
else
|
||||
seqFlags &= (~IAnimSequence::NO_HUD);
|
||||
|
||||
if (m_NoPlayerBtn.GetCheck() == BST_CHECKED)
|
||||
seqFlags |= IAnimSequence::NO_PLAYER;
|
||||
else
|
||||
seqFlags &= (~IAnimSequence::NO_PLAYER);
|
||||
|
||||
if (m_NoPhysicsBtn.GetCheck() == BST_CHECKED)
|
||||
seqFlags |= IAnimSequence::NO_PHYSICS;
|
||||
else
|
||||
seqFlags &= (~IAnimSequence::NO_PHYSICS);
|
||||
|
||||
if (m_NoAIBtn.GetCheck() == BST_CHECKED)
|
||||
seqFlags |= IAnimSequence::NO_AI;
|
||||
else
|
||||
seqFlags &= (~IAnimSequence::NO_AI);
|
||||
|
||||
if (m_16To9.GetCheck() == BST_CHECKED)
|
||||
seqFlags |= IAnimSequence::IS_16TO9;
|
||||
else
|
||||
seqFlags &= (~IAnimSequence::IS_16TO9);
|
||||
|
||||
if (m_outOfRange == 1)
|
||||
seqFlags |= IAnimSequence::ORT_CONSTANT;
|
||||
else if (m_outOfRange == 2)
|
||||
seqFlags |= IAnimSequence::ORT_LOOP;
|
||||
|
||||
if (m_NoSoundsBtn.GetCheck() == BST_CHECKED)
|
||||
seqFlags |= IAnimSequence::NO_GAMESOUNDS;
|
||||
else
|
||||
seqFlags &= (~IAnimSequence::NO_GAMESOUNDS);
|
||||
|
||||
m_sequence->SetFlags( seqFlags );
|
||||
|
||||
CDialog::OnOK();
|
||||
}
|
||||
Reference in New Issue
Block a user