示例#1
0
void L_ParticleEffect::create_particle(L_REAL in_x, L_REAL in_y, L_Vector* vec_t)
{
	int chosen = choose_particle();

	L_Particle* par_new;
	L_NEW_PAR( par_new, *fl_particle[chosen] );

	L_Vector vec_t2;
	if(addit_vector_enabled == true)
	{
		if(vec_t != NULL)
			vec_t2 = addit_vector + *vec_t;

		else
			vec_t2 = addit_vector;
	}

	else
	{
		if(vec_t != NULL)
			vec_t2 = *vec_t;
	}

	par_new->set_velocity(vec_t2);


	if(follow_shooting)
	{
		par_new->set_rotation(vec_t->get_angle());
	}

	else if(rotation_distortion != 0)
	{
		par_new->set_rotation2((L_RAND_REAL_1()-0.5f)*rotation_distortion);
	}

	if(size_distortion != 0)
	{
		par_new->set_size( par_new->get_ref_size()+rand_size() );
	}

	if(life_distortion != 0)
	{
		int distort = rand() % life_distortion + 1;

		if(rand() % 2 == 0)
			distort = -distort;

		par_new->set_life(par_new->get_remaininig_life()+distort);
	}

	par_new->x_pos = in_x;
	par_new->y_pos = in_y;

	par_new->initialize();

	//add to list
	particle_list.push_back(par_new);
}
示例#2
0
void L_ParticleEffect::create_particle(L_REAL in_x, L_REAL in_y, CL_Vec2f* vec_t)
{
	int chosen = choose_particle();

	L_Particle* par_new;
	
	if (!fl_particle[chosen])
	{
		LogMsg("L_ParticleEffect::create_particle> Can't add invalid particle");
		return;
	}
	L_NEW_PAR( par_new, *fl_particle[chosen] );

	CL_Vec2f vec_t2 = CL_Vec2f(0,0);
	if(addit_vector_enabled == true)
	{
		if(vec_t != NULL)
			vec_t2 = addit_vector + *vec_t;

		else
			vec_t2 = addit_vector;
	}

	else
	{
		if(vec_t != NULL)
			vec_t2 = *vec_t;
	}

	par_new->set_velocity(vec_t2);


	if(follow_shooting)
	{
		par_new->set_rotation(linear_get_radian(*vec_t));
	}

	else if(par_randrot_on)
	{
		par_new->set_rotation2(L_RAND_REAL_2()*L_2PI);
	}

	if(size_distortion != 0)
	{
		par_new->set_size( par_new->get_ref_size()+rand_size() );
	}

	if(life_distortion != 0)
	{
		int distort = rand() % life_distortion + 1;

		if(rand() % 2 == 0)
			distort = -distort;

		par_new->set_life(par_new->get_remaininig_life()+distort);
	}

	par_new->x_pos = in_x;
	par_new->y_pos = in_y;
	
	par_new->initialize();
	
	//add to list
	particle_list.push_back(par_new);
}