Example #1
0
//-----------------------------------------------------------------------------
// Name: OnPlayEffects()
// Desc: Plays all of the effects enumerated in the file 
//-----------------------------------------------------------------------------
HRESULT OnPlayEffects( HWND hDlg )
{
    EFFECTS_NODE*       pEffectNode = g_EffectsList.pNext;
    LPDIRECTINPUTEFFECT pDIEffect   = NULL;
    HRESULT             hr;

    // Stop all previous forces
    if( FAILED( hr = g_pFFDevice->SendForceFeedbackCommand( DISFFC_STOPALL ) ) )
        return hr;

    while ( pEffectNode != &g_EffectsList )
    {
        // Play all of the effects enumerated in the file 
        pDIEffect = pEffectNode->pDIEffect;

        if( NULL != pDIEffect )
        {
            if( FAILED( hr = pDIEffect->Start( pEffectNode->dwPlayRepeatCount, 0 ) ) )
                return hr;
        }

        pEffectNode = pEffectNode->pNext;
    }

    return S_OK;
}
Example #2
0
CKERROR PlayFFECallBackObject2(const CKBehaviorContext& behcontext)
{
	CKBehavior* beh = behcontext.Behavior;

	switch(behcontext.CallbackMessage) {
	case CKM_BEHAVIORCREATE:
	case CKM_BEHAVIORLOAD:
	case CKM_BEHAVIORDETACH:
		
		{


			if ( g_pFFDevice2)
				g_pFFDevice2->SendForceFeedbackCommand( DISFFC_STOPALL );
			
			FreeDirectInput0();

		}
		break;
	}

	return CKBR_OK; 
}
 HRESULT _stdcall SendForceFeedbackCommand(DWORD a) {
     return RealDevice->SendForceFeedbackCommand(a);
 }
Example #4
0
int PlayFFEffect(const CKBehaviorContext& behcontext)
{
	CKBehavior* beh = behcontext.Behavior;
	CKContext* ctx2 = behcontext.Context;
	ctx  = ctx2;



	HWND mWin = (HWND )ctx->GetMainWindow();

	//init and load effect
	if( beh->IsInputActive(0) ){
		beh->ActivateInput(0,FALSE);


		HRESULT  result = InitDirectInput(mWin);
		HRESULT  sa = S_OK;
		if (InitDirectInput(mWin) == S_OK)
		{

			XString filename((CKSTRING) beh->GetInputParameterReadDataPtr(0));
			OnReadFile(mWin,filename.Str());
			beh->ActivateOutput(0);
			return CKBR_OK;
		}else{
			beh->ActivateOutput(4);
			return CKBR_OK;
		}
		
	}


	//play

	if( beh->IsInputActive(1) ){
		beh->ActivateInput(1,FALSE);
			
		
		if (OnPlayEffects2(NULL) != S_OK ){
			beh->ActivateOutput(4);
			return CKBR_OK;
		}
		beh->ActivateOutput(1);
		return CKBR_OK;
	}


	//stop the effect
	if( beh->IsInputActive(2) ){
		beh->ActivateInput(2,FALSE);

	   // Stop all previous forces
		g_pFFDevice->SendForceFeedbackCommand( DISFFC_STOPALL );
		beh->ActivateOutput(2);
		return CKBR_OK;
	}


	//  [11/7/2004]
	//save device release

	if( beh->IsInputActive(3) ){
		beh->ActivateInput(3,FALSE);



		if ( g_pFFDevice)
			g_pFFDevice->SendForceFeedbackCommand( DISFFC_STOPALL );
			
		FreeDirectInput2();
		beh->ActivateOutput(3);
		return CKBR_OK;


	}

	return CKBR_OK;
}