本文整理汇总了C++中CMover::SetMotion方法的典型用法代码示例。如果您正苦于以下问题:C++ CMover::SetMotion方法的具体用法?C++ CMover::SetMotion怎么用?C++ CMover::SetMotion使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CMover
的用法示例。
在下文中一共展示了CMover::SetMotion方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//
// Action Message Process
// 액션 메시지를 받아 처리한다.
// 어떤 행위가 발생하는 시점에 대한 처리를 담당.
// 최적화를 위해서 이미 설정되어 있는 상태면 중복 처리 하지 않음
//
int CActionMover::ProcessActMsg1( CMover* pMover, OBJMSG dwMsg, int nParam1, int nParam2, int nParam3, int nParam4, int nParam5 )
{
CModelObject* pModel = (CModelObject*)pMover->m_pModel;
switch( dwMsg )
{
// 평화모드 제자리에 서있어라!
case OBJMSG_STAND:
#ifdef __Y_INTERFACE_VER3
if( (GetMoveState() == OBJSTA_FMOVE) || (GetMoveState() == OBJSTA_BMOVE) || (GetMoveState() == OBJSTA_LMOVE) || (GetMoveState() == OBJSTA_RMOVE) ) // 전/후진중일때 제자리에 세운다.
#else //__Y_INTERFACE_VER3
if( (GetMoveState() == OBJSTA_FMOVE) || (GetMoveState() == OBJSTA_BMOVE) ) // 전/후진중일때 제자리에 세운다.
#endif //__Y_INTERFACE_VER3
{
ResetState( OBJSTA_MOVE_ALL );
m_vDelta.x = m_vDelta.z = 0;
if( pMover->IsFlyingNPC() )
{
m_vDelta.y = 0;
pMover->SetAngleX(0);
}
}
if( GetMoveState() == OBJSTA_STAND ) return 0;
if( GetMoveState() == OBJSTA_PICKUP ) return 0;
if( IsActJump() ) return -1;
if( IsActAttack() ) return -2;
if( IsActDamage() ) return -3;
if( IsDie() ) return -4;
if( IsAction() ) return 0;
SetMoveState( OBJSTA_STAND );
pMover->SetMotion( MTI_STAND );
RemoveStateFlag( OBJSTAF_ETC );
break;
case OBJMSG_STOP:
case OBJMSG_ASTOP:
#ifdef __Y_INTERFACE_VER3
if( (GetMoveState() == OBJSTA_FMOVE) || (GetMoveState() == OBJSTA_BMOVE) || (GetMoveState() == OBJSTA_LMOVE) || (GetMoveState() == OBJSTA_RMOVE) ) // 전/후진중일때 제자리에 세운다.
#else //__Y_INTERFACE_VER3
if( (GetMoveState() == OBJSTA_FMOVE) || (GetMoveState() == OBJSTA_BMOVE) ) // 전/후진중일때 제자리에 세운다.
#endif //__Y_INTERFACE_VER3
{
ResetState( OBJSTA_MOVE_ALL );
m_vDelta.x = m_vDelta.z = 0;
if( pMover->IsFlyingNPC() )
{
m_vDelta.y = 0;
pMover->SetAngleX(0);
}
}
pMover->ClearDest();
return 0; // ControlGround에서 키입력없을때 STOP을 부르는데 거기서 리턴값을 맞추기 위해 이렇게 했음.
break;
case OBJMSG_SITDOWN:
if( GetStateFlag() & OBJSTAF_SIT ) return 0; // 이미 앉은모드면 리턴 - 플래그로 검사하지 말고 state로 직접검사하자.
if( nParam3 == 0 )
{
if( IsActJump() ) return 0;
if( IsActAttack() ) return 0;
if( IsActDamage() ) return 0;
if( IsAction() ) return 0;
#ifdef __CLIENT
if( pMover->IsActiveMover() && (pMover->m_dwReqFlag & REQ_USESKILL) ) return 0; // 서버로부터 useskill응답이 오기전까진 액션해선 안됨.
#endif // __CLIENT
}
AddStateFlag( OBJSTAF_SIT );
SendActMsg( OBJMSG_STOP );
pMover->SetMotion( MTI_SIT, ANILOOP_CONT ); // 앉기 모션시작
SetMoveState( OBJSTA_SIT );
break;
case OBJMSG_STANDUP:
if( (GetStateFlag() & OBJSTAF_SIT) == 0 ) return 0;
if( nParam3 == 0 )
{
if( IsActJump() ) return 0;
if( IsActAttack() ) return 0;
if( IsActDamage() ) return 0;
if( IsAction() ) return 0;
#ifdef __CLIENT
if( pMover->IsActiveMover() && (pMover->m_dwReqFlag & REQ_USESKILL) ) return 0; // 서버로부터 useskill응답이 오기전까진 액션해선 안됨.
#endif // __CLIENT
}
SetMoveState( OBJSTA_SIT );
AddStateFlag( OBJSTAF_SIT );
pMover->SetMotion( MTI_GETUP, ANILOOP_CONT );
break;
case OBJMSG_PICKUP:
if( IsSit() ) return 0;
if( IsAction() ) return 0;
if( IsActJump() ) return 0;
if( IsActAttack() ) return 0;
if( IsActDamage() ) return 0;
//.........这里部分代码省略.........