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); }
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); }
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); }
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); }
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); }