int end_angle(t_pixel a, t_pixel b, t_triangle t) { if (!in_y(t.point_c, t.point_a, t.point_b)) { if (a.x == b.x) return (1); } else { if (a.y == b.y) return (1); } return (0); }
void CubeCreature::avoid_collision(){ if(cur_move_state()->get_move_state()==MS_AVOID_COLLISION)return; if(colli_state()==C_STATE_COLLI_OFF)return; if(get_v()<0.00001)return; std::vector<CubeCreature*>*creature_v; CubeCreature* avoid_creature; int x=in_x(),y=in_y(),z=in_z(); for(int i=-1;i<=1;i++){ for(int j=-1;j<=1;j++){ for(int k=-1;k<=1;k++){ creature_v=map->creature_map->get_creature_map(x+i,y+j,z+k); for(unsigned i=0;i<creature_v->size();i++){ avoid_creature=creature_v->at(i); if(avoid_creature!=this&&avoid_creature->colli_state()!=C_STATE_COLLI_OFF &&avoid_creature->belong_to()==belong_to()) if(pre_collide(creature_v->at(i))){ creature_v->at(i)->avoid_collision(this); } } } } } }
void CubeCreature::detect_at(){ _in_building=map->get_map(in_x(),in_y(),in_z())->get_building(); if(!_in_building)_stay_in_building=false; }