Exemplo n.º 1
0
static void register_ship_gfx(void){
	particle_t *p;
	
	p = particle_new(box_new(vec_new(0,0),24,32),-0.5);
	p->draw = particle_draw_square;
	p->action = trail_action;
	p->param[0] = 100;
	particle_set_color(p,1,0.1,0,0.1);
	particle_set_alt_color(p,1,0,0,0.2);
	factory_register(p,P_SHIP_TRAIL);

	p = particle_new(box_new(vec_new(0,0),4,4),8);
	p->draw = particle_draw_square;
	p->action = boost_action;
	p->param[0] = 100;
	particle_set_color(p,1,0.1,0,0.1);
	particle_set_alt_color(p,1,0,0,0.2);
	factory_register(p,P_SHIP_BOOST);
}
Exemplo n.º 2
0
void layout_add_node (void *layout, tp_node *node)
{
  pthread_mutex_lock (&mutex);
  tp_layout *l = (tp_layout*)layout;
  tp_particle *particle = particle_new (node->name,
                                        l,
                                        l->box,
                                        node);
  _layout_associate_particle_node (particle, node);
  pthread_mutex_unlock (&mutex);
}
Exemplo n.º 3
0
static void register_ship(void){
	particle_t*p;
	model_t *mod;
	material_t *mat;

	mod = model_load("data/ship.obj");
	
	mat = material_new();
	material_set_diffuse(mat,1,0,0,1.0);
	material_set_spec(mat,1,0.5,0.2,1.0);
	material_set_edge(mat,0.5,0,0,0.1);
	material_set_shininess(mat,50);
	material_enable(mat, DRAW_FACE | DRAW_EDGE);
	model_set_material(mod,1,mat);

	mat = material_new();
	material_set_diffuse(mat,0.8,0.8,0.8,1);
	material_set_spec(mat,0.8,0.8,0.8,1);
	material_set_shininess(mat,50);
	material_set_edge(mat,0,0,0,0.1);
	material_enable(mat, DRAW_FACE | DRAW_EDGE);
	model_set_material(mod,0,mat);

	mat = material_new();
	material_set_diffuse(mat,0,0,0,1);
	material_set_edge(mat,1,1,1,0.1);
	material_enable(mat, DRAW_FACE | DRAW_EDGE );
	model_set_material(mod,2,mat);


	p = particle_new(box_new(vec_new(0,0),40,32),0);
	p->draw = ship_draw;	
	p->move = particle_simple_move;
	p->action = ship_action;
	p->collide = ship_collide;
	p->vector[MISSILE] = vec_new(100,0);
	p->model[0] = mod;
	particle_set_color(p,1,0.3,0,0.1);
	particle_set_alt_color(p,1,0.5,0,0.5);
	particle_set_collides(p,1);
	particle_set_camera(p,1);
	particle_set_solid(p,1);
	particle_set_group(p,P_SHIP);
	particle_toggle_collide_group(p,P_SHIP);
	particle_toggle_collide_group(p,P_MISSILE);
	particle_set_nprop(p,SHIP_HSPEED,nprop_new(0,SHIP_ACCEL));
	particle_set_nprop(p,SHIP_VSPEED,nprop_new(0,SHIP_ACCEL));
	factory_register(p,P_SHIP);	
}
Exemplo n.º 4
0
static void register_ship_missile(void){
	particle_t *p;
	model_t *mod;
	material_t *mat;

	mod = model_load("data/missile.obj");
	
	mat = material_new();
	material_set_diffuse(mat,1,0,0,1.0);
	material_set_emit(mat,0.2,0.1,0,1.0);
	material_set_spec(mat,1,0.5,0.2,1.0);
	material_set_edge(mat,0.5,0,0,0.1);
	material_set_shininess(mat,50);
	material_enable(mat, DRAW_FACE | DRAW_EDGE);
	model_set_material(mod,0,mat);

	mat = material_new();
	material_set_diffuse(mat,0.416,0.525,0.345,1);
	material_set_spec(mat,0.025,0.149,0,1);
	material_set_shininess(mat,50);
	material_set_edge(mat,0,0,0,0.1);
	material_enable(mat, DRAW_FACE | DRAW_EDGE);
	model_set_material(mod,1,mat);

	p = particle_new(box_new(vec_new(0,0),10,10),-1);
	particle_set_color(p,0,0.5,1,0.1);
	particle_set_alt_color(p,0.1,0.6,1,0.1);
	p->draw = missile_draw;
	p->move = particle_simple_move;
	p->collide = missile_collide;
	p->die	= missile_die;
	p->action = missile_action;
	particle_set_group(p,P_MISSILE);
	particle_toggle_collide_group(p,P_SHIP);
	particle_toggle_collide_group(p,P_MISSILE);
	p->model[0] = mod;
	particle_set_collides(p,1);
	p->a = vec_new(0,0);
	particle_set_solid(p,0);
	factory_register(p,P_MISSILE);
}
Exemplo n.º 5
0
void layout_move_node (void *layout, tp_node *node, tp_point point)
{
  pthread_mutex_lock (&mutex);
  tp_layout *l = (tp_layout*)layout;
  //remove current particle
  box_remove_particle (l->box, node->particle);
  particle_free (node->particle);
  node_set_particle (node, NULL);

  //add new particle at point
  tp_particle *particle = particle_new (node->name,
                                        l,
                                        l->box,
                                        node);
  particle->position = point;
  box_add_particle (l->box, particle);
  node_set_particle (node, particle);

  //particle is now frozen (it might be moving)
  ((tp_particle*)(node->particle))->frozen = 1;
  layout_reset_energies (l);
  pthread_mutex_unlock (&mutex);
}