BOOL CPPEffectorCustom::Process(SPPInfo& pp) { if (!inherited::Process(pp)) return FALSE; // update factor if (!update()) return FALSE; pp.lerp (pp_identity, m_state, m_factor); return TRUE; }
BOOL CPostprocessAnimator::Process(SPPInfo &PPInfo) { if(m_bCyclic) fLifeTime = 100000; CEffectorPP::Process (PPInfo); if(m_start_time<0.0f)m_start_time=Device.fTimeGlobal; if(m_bCyclic &&((Device.fTimeGlobal-m_start_time)>f_length)) m_start_time+=f_length; Update (Device.fTimeGlobal-m_start_time); VERIFY (_valid(m_factor)); VERIFY (_valid(m_factor_speed)); VERIFY (_valid(m_dest_factor)); if(m_bStop) m_factor -= Device.fTimeDelta*m_factor_speed; else m_factor += m_factor_speed*Device.fTimeDelta*(m_dest_factor-m_factor); clamp (m_factor, 0.0001f, 1.0f); VERIFY (_valid(m_factor)); VERIFY (_valid(m_factor_speed)); m_EffectorParams.color_base += pp_identity.color_base; m_EffectorParams.color_gray += pp_identity.color_gray; m_EffectorParams.color_add += pp_identity.color_add; if(0==m_Params[pp_noise_i]->get_keys_count()){ m_EffectorParams.noise.intensity = pp_identity.noise.intensity; } if(0==m_Params[pp_noise_g]->get_keys_count()){ m_EffectorParams.noise.grain = pp_identity.noise.grain; } if(0==m_Params[pp_noise_f]->get_keys_count()){ m_EffectorParams.noise.fps = pp_identity.noise.fps; }else m_EffectorParams.noise.fps *= 100.0f; PPInfo.lerp (pp_identity, m_EffectorParams, m_factor); if(PPInfo.noise.grain<=0.0f){ R_ASSERT3(0,"noise.grain cant be zero! see postprocess",*m_Name); } if(fsimilar(m_factor,0.0001f,EPS_S)) return FALSE; return TRUE; }
BOOL CAlienEffectorPP::Process(SPPInfo& pp) { inherited::Process(pp); if (fsimilar(factor, target_factor)) { target_factor = (target_factor > 0.5f) ? .3f : .6f; } def_lerp (factor,target_factor, PERIOD_SPEED, Device.fTimeDelta); pp.lerp (pp_identity,state,factor); return TRUE; }
BOOL CMonsterEffector::Process(SPPInfo& pp) { inherited::Process(pp); // amount of time passed in percents float time_past_perc = (m_total - fLifeTime) / m_total; float factor; if (time_past_perc < m_attack) factor = time_past_perc / m_attack; else if ((time_past_perc >= m_attack) && (time_past_perc <= m_release)) factor = 1.0f; else factor = (1.0f - time_past_perc) / (1.0f - m_release); clamp(factor,0.01f,1.0f); pp.lerp (pp_identity, state, factor * m_spec_factor); return TRUE; }