//========================================================= //========================================================= void CWeaponGravityGun::PrimaryAttack( void ) { if ( !m_active ) { SendWeaponAnim( ACT_VM_PRIMARYATTACK ); EffectCreate(); SoundCreate(); } else { EffectUpdate(); SoundUpdate(); } }
u32 IgfxTexture::sInitSys() { //create sprite interface D3DXCreateSprite(g_p3DDevice, &s_pTxtSprite); //create effect s_txtEffect = EffectCreate(L"Texture3DBlt", g_txtFXBuff); //create the texture 3d vtx s_pTxtVtxBuff = GFXCreateVtxBuff(sizeof(txtVSVertex), MAXVTX, VTXBUFF_USAGE, VERTEXFLAG, (GFXPOOL)VTXBUFF_POOL); if(!s_pTxtVtxBuff) { LogMsg(LOG_FILE, L"IgfxTexture::sInitSys", L"Error creating texture 3d vtx"); return FALSE; } //create the texture billboard vtx s_pTxtBBVtxBuff = GFXCreateVtxBuff(sizeof(txtVSVertex), MAXVTX, VTXBUFF_USAGE, VERTEXFLAG, (GFXPOOL)VTXBUFF_POOL); if(!s_pTxtBBVtxBuff) { LogMsg(LOG_FILE, L"IgfxTexture::sInitSys", L"Error creating texture billboard vtx"); return FALSE; } ////////////////////////////////////////////////// //now let's set the vertex declaration D3DVERTEXELEMENT9 Declaration[3]; D3DVERTEXELEMENT9 End = D3DDECL_END(); Declaration[0].Stream = 0; Declaration[0].Offset = 0; Declaration[0].Type = D3DDECLTYPE_FLOAT3; Declaration[0].Method = D3DDECLMETHOD_DEFAULT; Declaration[0].Usage = D3DDECLUSAGE_POSITION; Declaration[0].UsageIndex = 0; Declaration[1].Stream = 0; Declaration[1].Offset = sizeof(f32)*3; Declaration[1].Type = D3DDECLTYPE_FLOAT3; Declaration[1].Method = D3DDECLMETHOD_DEFAULT; Declaration[1].Usage = D3DDECLUSAGE_TEXCOORD; Declaration[1].UsageIndex = 0; Declaration[2] = End; VtxSetDecl(s_pTxtVtxBuff, Declaration); VtxSetDecl(s_pTxtBBVtxBuff, Declaration); ////////////////////////////////////////////////// //set the vertex data txtVSVertex *pTVtx, *pTBBVtx; VtxLock(s_pTxtVtxBuff, 0, 0,0, (void**)&pTVtx, 0); VtxLock(s_pTxtBBVtxBuff, 0, 0,0, (void**)&pTBBVtx, 0); /* d-------c | | | | | | a-------b */ pTVtx[0].x = -1.0f; pTVtx[0].y = -1.0f; pTVtx[0].z = 0.0f; pTVtx[1].x = 1.0f; pTVtx[1].y = -1.0f; pTVtx[1].z = 0.0f; pTVtx[2].x = 1.0f; pTVtx[2].y = 1.0f; pTVtx[2].z = 0.0f; pTVtx[3].x = -1.0f; pTVtx[3].y = 1.0f; pTVtx[3].z = 0.0f; //Top Left pTVtx[0].s = 0; pTVtx[0].t = 1; pTVtx[0].u = 1; //Bottom Left pTVtx[1].s = 1; pTVtx[1].t = 1; pTVtx[1].u = 1; //Bottom Right pTVtx[2].s = 1; pTVtx[2].t = 0; pTVtx[2].u = 1; //Top Right pTVtx[3].s = 0; pTVtx[3].t = 0; pTVtx[3].u = 1; memcpy(pTBBVtx, pTVtx, sizeof(txtVSVertex)*4); VtxUnlock(s_pTxtVtxBuff, 0); VtxUnlock(s_pTxtBBVtxBuff, 0); return TRUE; }
DownmixerBufferProvider::DownmixerBufferProvider( audio_channel_mask_t inputChannelMask, audio_channel_mask_t outputChannelMask, audio_format_t format, uint32_t sampleRate, int32_t sessionId, size_t bufferFrameCount) : CopyBufferProvider( audio_bytes_per_sample(format) * audio_channel_count_from_out_mask(inputChannelMask), audio_bytes_per_sample(format) * audio_channel_count_from_out_mask(outputChannelMask), bufferFrameCount) // set bufferFrameCount to 0 to do in-place { ALOGV("DownmixerBufferProvider(%p)(%#x, %#x, %#x %u %d)", this, inputChannelMask, outputChannelMask, format, sampleRate, sessionId); if (!sIsMultichannelCapable || EffectCreate(&sDwnmFxDesc.uuid, sessionId, SESSION_ID_INVALID_AND_IGNORED, &mDownmixHandle) != 0) { ALOGE("DownmixerBufferProvider() error creating downmixer effect"); mDownmixHandle = NULL; return; } // channel input configuration will be overridden per-track mDownmixConfig.inputCfg.channels = inputChannelMask; // FIXME: Should be bits mDownmixConfig.outputCfg.channels = outputChannelMask; // FIXME: should be bits mDownmixConfig.inputCfg.format = format; mDownmixConfig.outputCfg.format = format; mDownmixConfig.inputCfg.samplingRate = sampleRate; mDownmixConfig.outputCfg.samplingRate = sampleRate; mDownmixConfig.inputCfg.accessMode = EFFECT_BUFFER_ACCESS_READ; mDownmixConfig.outputCfg.accessMode = EFFECT_BUFFER_ACCESS_WRITE; // input and output buffer provider, and frame count will not be used as the downmix effect // process() function is called directly (see DownmixerBufferProvider::getNextBuffer()) mDownmixConfig.inputCfg.mask = EFFECT_CONFIG_SMP_RATE | EFFECT_CONFIG_CHANNELS | EFFECT_CONFIG_FORMAT | EFFECT_CONFIG_ACC_MODE; mDownmixConfig.outputCfg.mask = mDownmixConfig.inputCfg.mask; int cmdStatus; uint32_t replySize = sizeof(int); // Configure downmixer status_t status = (*mDownmixHandle)->command(mDownmixHandle, EFFECT_CMD_SET_CONFIG /*cmdCode*/, sizeof(effect_config_t) /*cmdSize*/, &mDownmixConfig /*pCmdData*/, &replySize, &cmdStatus /*pReplyData*/); if (status != 0 || cmdStatus != 0) { ALOGE("DownmixerBufferProvider() error %d cmdStatus %d while configuring downmixer", status, cmdStatus); EffectRelease(mDownmixHandle); mDownmixHandle = NULL; return; } // Enable downmixer replySize = sizeof(int); status = (*mDownmixHandle)->command(mDownmixHandle, EFFECT_CMD_ENABLE /*cmdCode*/, 0 /*cmdSize*/, NULL /*pCmdData*/, &replySize, &cmdStatus /*pReplyData*/); if (status != 0 || cmdStatus != 0) { ALOGE("DownmixerBufferProvider() error %d cmdStatus %d while enabling downmixer", status, cmdStatus); EffectRelease(mDownmixHandle); mDownmixHandle = NULL; return; } // Set downmix type // parameter size rounded for padding on 32bit boundary const int psizePadded = ((sizeof(downmix_params_t) - 1)/sizeof(int) + 1) * sizeof(int); const int downmixParamSize = sizeof(effect_param_t) + psizePadded + sizeof(downmix_type_t); effect_param_t * const param = (effect_param_t *) malloc(downmixParamSize); CHECK(param != NULL); param->psize = sizeof(downmix_params_t); const downmix_params_t downmixParam = DOWNMIX_PARAM_TYPE; memcpy(param->data, &downmixParam, param->psize); const downmix_type_t downmixType = DOWNMIX_TYPE_FOLD; param->vsize = sizeof(downmix_type_t); memcpy(param->data + psizePadded, &downmixType, param->vsize); replySize = sizeof(int); status = (*mDownmixHandle)->command(mDownmixHandle, EFFECT_CMD_SET_PARAM /* cmdCode */, downmixParamSize /* cmdSize */, param /*pCmdData*/, &replySize, &cmdStatus /*pReplyData*/); free(param); if (status != 0 || cmdStatus != 0) { ALOGE("DownmixerBufferProvider() error %d cmdStatus %d while setting downmix type", status, cmdStatus); EffectRelease(mDownmixHandle); mDownmixHandle = NULL; return; } ALOGV("DownmixerBufferProvider() downmix type set to %d", (int) downmixType); }