Esempio n. 1
0
void
CNdasUnitDevice::OnUnmounted()
{
	_SetStatus(NDAS_UNITDEVICE_STATUS_NOT_MOUNTED);
	CNdasDevicePtr pParentDevice(m_pParentDevice);
	pParentDevice->OnUnitDeviceUnmounted(shared_from_this());
}
Esempio n. 2
0
extern  void    TellReachedLabel( label_handle lbl )
/**************************************************/
{
  optbegin
    _ValidLbl( lbl );
    _SetStatus( lbl, REACHED );
  optend
}
Esempio n. 3
0
extern  void    TellKeepLabel( label_handle lbl )
/***********************************************/
{
  optbegin
    _ValidLbl( lbl );
    _SetStatus( lbl, KEEPLABEL );
  optend
}
Esempio n. 4
0
extern  void    TellCommonLabel( label_handle lbl, unsigned hdl )
/***************************************************************/
{
  optbegin
    _ValidLbl( lbl );
    lbl->lbl.sym = (cg_sym_handle)(pointer_int)hdl;
    _SetStatus( lbl, COMMON_LBL );
  optend
}
Esempio n. 5
0
//根据当前状态刷新摄像机
VOID CCamera_Scene::_UpdateCurStatus( fVector3& vEyePos, fVector3& vLookatPos)
{
    switch(m_status)
    {
    // 普通状态
    case NORMAL_STATUS:
    {
        return;
    }
    break;

    // 震荡状态
    case VIBRATION_STATUS:
    {
        //----------------------------------------------------------------------
        // 说明:更新相机震动动画                             [6/13/2010 陈军龙]
        // 原理:将时间映射到曲线函数Sin上
        // 映射公式: (2 * PI) / (1 / Frequency) = x / Age
        // 计算偏移量公式: offset = Amplitude * Sin(x) * (1 - Age / Duration)
        //----------------------------------------------------------------------

        // 记录当前累计震动时间
        m_CurVibParam.fAge += CGameProcedure::s_pTimeSystem->GetDeltaTime() / 1000;

        // 若超时则归位
        if(m_CurVibParam.fAge > m_CurVibParam.fDuration)
        {
            _SetStatus(NORMAL_STATUS);
            return;
        }

        // 按照公式求偏移量
        FLOAT offset = m_CurVibParam.fAmplitude
                       * Ogre::Math::Sin(m_CurVibParam.fAge * Ogre::Math::TWO_PI * m_CurVibParam.fFrequency)
                       * (1 - m_CurVibParam.fAge / m_CurVibParam.fDuration);

        // 进行偏移产生震动效果
        vLookatPos.y += offset;
        vEyePos.y += offset;

        return;
    }
    break;

    default:
        KLAssert(0);
        return;
    }
    return;
}
Esempio n. 6
0
void    AddLblDef( ins_entry *instr )
/***********************************/
{
    label_handle    lbl;

    optbegin
    _LblRef( instr ) = NULL;
    lbl = _Label( instr );
    for(;;) {
        _SetStatus( lbl, CODELABEL );
        lbl->ins = instr;
        lbl = lbl->alias;
        if( lbl == NULL ) break;
    }
    optend
}
Esempio n. 7
0
//设置加入一次震荡
VOID CCamera_Scene::AddOneVib(FLOAT fAmplitude, FLOAT fDuration, UINT fFrequency)
{
    if( fAmplitude <=0 || fDuration <= 0 || fFrequency<=0)
        return;

    if(m_status == VIBRATION_STATUS)
    {
        //以后再考虑多个震荡的融合
        return;
    }

    m_CurVibParam.fAmplitude = fAmplitude;
    m_CurVibParam.fDuration	 = fDuration;
    m_CurVibParam.fFrequency = fFrequency;

    // 对持续时间进行约数,保证震动保持在周期的整数倍
    int times = (int)fDuration * fFrequency;
    m_CurVibParam.fDuration = (times > 0 ? times : 1) / fDuration;

    _SetStatus(VIBRATION_STATUS);

}
Esempio n. 8
0
void
CNdasUnitDevice::OnMounted()
{
	_SetStatus(NDAS_UNITDEVICE_STATUS_MOUNTED);
}
Esempio n. 9
0
extern  void    TellProcLabel( label_handle lbl )
/***********************************************/
{
    _ValidLbl( lbl );
    _SetStatus( lbl, PROCEDURE );
}