Пример #1
0
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);
}
Пример #2
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);
					}
				}
			}
		}
	}
}
Пример #3
0
void CubeCreature::detect_at(){
	_in_building=map->get_map(in_x(),in_y(),in_z())->get_building();
	if(!_in_building)_stay_in_building=false;
}