Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}