137 lines
No EOL
3.5 KiB
C++
137 lines
No EOL
3.5 KiB
C++
#include "StdAfx.h"
|
|
|
|
#include "ActionSignal.h"
|
|
#include "ActionObject.h"
|
|
|
|
#include "CSCRRotate.h"
|
|
|
|
|
|
// Override - CSignalCustomRender
|
|
CSignalCustomRender * CSCRRotate::Clone()
|
|
{
|
|
return new CSCRRotate( m_szSignalName.c_str() );
|
|
}
|
|
|
|
void CSCRRotate::Initialize()
|
|
{
|
|
m_LocalTime = 0;
|
|
m_bActivate = true;
|
|
}
|
|
|
|
void CSCRRotate::Release()
|
|
{
|
|
}
|
|
|
|
void CSCRRotate::OnSelect( bool bFirst )
|
|
{
|
|
EtVector3 vPos[2];
|
|
float fSize = 30.f;
|
|
|
|
EtVector3 vAxis = (EtVector3)m_pSignal->GetProperty(3)->GetVariableVector3();
|
|
|
|
vPos[0] = EtVector3( 0.f, 0.f, fSize ) + vAxis;
|
|
vPos[1] = EtVector3( 0.f, 0.f, -fSize ) + vAxis;
|
|
EternityEngine::DrawLine3D( vPos[0], vPos[1], 0xFFFFFF00 );
|
|
|
|
vPos[0] = EtVector3( 0.f, fSize, 0.f ) + vAxis;
|
|
vPos[1] = EtVector3( 0.f, -fSize, 0.f ) + vAxis;
|
|
EternityEngine::DrawLine3D( vPos[0], vPos[1], 0xFFFFFF00 );
|
|
|
|
vPos[0] = EtVector3( fSize, 0.f, 0.f ) + vAxis;
|
|
vPos[1] = EtVector3( -fSize, 0.f, 0.f ) + vAxis;
|
|
EternityEngine::DrawLine3D( vPos[0], vPos[1], 0xFFFFFF00 );
|
|
|
|
|
|
|
|
EtVector3 vAni = ((CActionObject*)m_pSignal->GetParent()->GetParent())->GetAniDistance();
|
|
CString szFrame;
|
|
szFrame.Format( "%.1f, %.1f, %.1f", vAni.x, vAni.y, vAni.z );
|
|
EternityEngine::DrawText2D( EtVector2( 0.f, 50.f ), szFrame );
|
|
}
|
|
|
|
void CSCRRotate::OnUnSelect()
|
|
{
|
|
}
|
|
|
|
void CSCRRotate::OnModify()
|
|
{
|
|
}
|
|
|
|
void CSCRRotate::OnProcess( LOCAL_TIME LocalTime, float fDelta )
|
|
{
|
|
//fDelta = ( LocalTime - m_LocalTime ) * 0.001f;
|
|
//m_LocalTime = LocalTime;
|
|
|
|
float fStartSpeed = m_pSignal->GetProperty(0)->GetVariableFloat();
|
|
float fEndSpeed = m_pSignal->GetProperty(1)->GetVariableFloat();
|
|
bool bLeft = m_pSignal->GetProperty(2)->GetVariableBool();
|
|
EtVector3 vAxis = (EtVector3)m_pSignal->GetProperty(3)->GetVariableVector3();
|
|
|
|
CActionObject *pObject = (CActionObject *)m_pSignal->GetParent()->GetParent();
|
|
EtAniObjectHandle hHandle = pObject->GetObjectHandle();
|
|
|
|
float fSpeed = 0.0f;
|
|
|
|
// ¼Óµµ( ȸÀü°¢·® )
|
|
if( fStartSpeed == fEndSpeed )
|
|
{
|
|
fSpeed = fStartSpeed;
|
|
}
|
|
else
|
|
{
|
|
float frame = pObject->GetCurFrame();
|
|
float w = ( frame - m_pSignal->GetStartFrame() ) / ( m_pSignal->GetEndFrame() - m_pSignal->GetStartFrame() );
|
|
//float w = 1.f / ( m_pSignal->GetEndFrame() - m_pSignal->GetStartFrame() ) * ( frame - m_pSignal->GetStartFrame() );
|
|
fSpeed = fStartSpeed + ( ( fEndSpeed - fStartSpeed ) * w );
|
|
}
|
|
|
|
// ¹æÇâ.
|
|
if( bLeft )
|
|
fSpeed = -fSpeed;
|
|
|
|
pObject->SetRotationSpeed( fSpeed );
|
|
pObject->SetAxisPosition( vAxis );
|
|
|
|
|
|
//fSpeed *= fDelta;
|
|
|
|
//CString szFrame;
|
|
////szFrame.Format( "_____________Speed : %.2f, Time : %.4f", fSpeed, fDelta );
|
|
//szFrame.Format( "_____________Frame : %.2f, Time : %.2f", frame, m_pSignal->GetEndFrame() );
|
|
//EternityEngine::DrawText2D( EtVector2( 0.f, 0.f ), szFrame );
|
|
|
|
//pObject->RotateObject( EtToRadian( fSpeed ), vAxis, true );
|
|
|
|
//pObject->RotateObject( fSpeed, vAxis, true );
|
|
|
|
// //(frame < m_pSignal->GetEndFrame()) );
|
|
|
|
//if( frame >= m_pSignal->GetEndFrame() )
|
|
// fSpeed = 0.0f;
|
|
|
|
//pObject->SetRotationSpeed( fSpeed );
|
|
|
|
//EtMatrix mat;
|
|
//EtMatrixRotationY( &mat, fSpeed );
|
|
//EtMatrixMultiply( &mat, &mat, hHandle->GetWorldMat() );
|
|
//hHandle->Update( &mat );
|
|
|
|
}
|
|
|
|
void CSCRRotate::OnInputReceive( int nReceiverState, LOCAL_TIME LocalTime, CInputReceiver *pReceiver )
|
|
{
|
|
|
|
}
|
|
|
|
|
|
void CSCRRotate::OnStartSignal()
|
|
{
|
|
CActionObject *pObject = (CActionObject *)m_pSignal->GetParent()->GetParent();
|
|
pObject->SetRotate( true );
|
|
}
|
|
|
|
void CSCRRotate::OnEndSignal()
|
|
{
|
|
CActionObject *pObject = (CActionObject *)m_pSignal->GetParent()->GetParent();
|
|
pObject->SetRotate( false );
|
|
} |