int ResetStateMachines() { int i; unsigned short addr; unsigned short command[DIO_MAX_COMMAND_LEN]; /* reset each state machines to the beginning of its buffer and * set its output to be 0 */ command[0] = 0; for (i = 0; i < DIO_N_STATE_MACHINES; i++) { ResetStateMachine(i); switch(i) { case 0: addr = DIO_OUT_1; break; case 1: addr = DIO_OUT_2; break; case 2: addr = DIO_OUT_3; break; case 3: addr = DIO_OUT_4; break; } /* set the output to be 0 */ if (!WriteDSPData(DSPDIO, DSP_SRAM, addr, 1, command)) { sprintf(tmpstring, "Error setting port %d to output 0", i); DisplayErrorMessage(tmpstring); return 0; } } return 1; }
void Reduce() { reduceType == __BRTSTREAM ? ReduceStream() : ReduceScalar(); ResetStateMachine(); }
bool Example::States( State_Machine_Event event, MSG_Object * msg, int state, int substate ) { BeginStateMachine //Global message response section OnMsg( MSG_Reset ) ResetStateMachine(); OnMsg( MSG_MouseClick ) m_owner->GetMovement().SetTarget( msg->GetVector3Data() ); /////////////////////////////////////////////////////////////// DeclareState( STATE_Initialize ) OnEnter m_owner->GetMovement().SetIdleSpeed(); ChangeStateDelayed( 1.0f, STATE_Idle ); //m_owner->GetTiny().SetDiffuse(1.0f, 0.0f, 0.0f); //Color Tiny (Example) /////////////////////////////////////////////////////////////// DeclareState( STATE_PickPlayerToChase ) OnEnter m_owner->GetMovement().SetWalkSpeed(); m_curTarget = GetFarthestAgent(); if( m_curTarget == 0 ) { ChangeState( STATE_MoveToRandomTarget ); } SendMsgToStateMachineNow( MSG_SetTargetPosition ); OnMsg( MSG_SetTargetPosition ) GameObject* go = g_database.Find( m_curTarget ); if( go ) { D3DXVECTOR3 target = go->GetBody().GetPos(); m_owner->GetMovement().SetTarget( target ); } SendMsgToState( MSG_SetTargetPosition ); OnMsg( MSG_Arrived ) ChangeState( STATE_Idle ); /////////////////////////////////////////////////////////////// DeclareState( STATE_Idle ) OnEnter m_owner->GetMovement().SetIdleSpeed(); if( rand()%2 == 0 ) { ChangeStateDelayed( RandDelay( 1.0f, 2.0f ), STATE_MoveToRandomTarget ); } else { ChangeStateDelayed( RandDelay( 1.0f, 2.0f ), STATE_PickPlayerToChase ); } /////////////////////////////////////////////////////////////// DeclareState( STATE_MoveToRandomTarget ) OnEnter m_owner->GetMovement().SetJogSpeed(); D3DXVECTOR3 target( 0, 0, 0 ); target.x = (float) ( rand() % 256 ) / 256.f; target.z = (float) ( rand() % 256 ) / 256.f; m_owner->GetMovement().SetTarget( target ); OnMsg( MSG_Arrived ) ChangeState( STATE_Idle ); EndStateMachine }