void SArtefactActivation::ChangeEffects() { VERIFY(!ph_world->Processing()); SStateDef& state_def = m_activation_states[(int)m_cur_activation_state]; if(m_snd._feedback()) m_snd.stop(); if(state_def.m_snd.size()){ m_snd.create (*state_def.m_snd,st_Effect,sg_SourceType); m_snd.play_at_pos (m_af, m_af->Position()); }; m_light->set_range ( state_def.m_light_range); m_light->set_color ( state_def.m_light_color.r, state_def.m_light_color.g, state_def.m_light_color.b); if(state_def.m_particle.size()){ Fvector dir; dir.set(0,1,0); m_af->CParticlesPlayer::StartParticles( state_def.m_particle, dir, m_af->ID(), iFloor(state_def.m_time*1000) ); }; if(state_def.m_animation.size()){ CKinematicsAnimated *K=smart_cast<CKinematicsAnimated*>(m_af->Visual()); if(K)K->PlayCycle(*state_def.m_animation); } }
void HUD_SOUND::LoadSound(LPCSTR section, LPCSTR line, ref_sound& snd, int type, float* volume, float* delay) { LPCSTR str = pSettings->r_string(section, line); string256 buf_str; int count = _GetItemCount (str); R_ASSERT(count); _GetItem(str, 0, buf_str); snd.create(buf_str, st_Effect,type); if(volume != NULL) { *volume = 1.f; if(count>1) { _GetItem (str, 1, buf_str); if(xr_strlen(buf_str)>0) *volume = (float)atof(buf_str); } } if(delay != NULL) { *delay = 0; if(count>2) { _GetItem (str, 2, buf_str); if(xr_strlen(buf_str)>0) *delay = (float)atof(buf_str); } } }