#declare city_default_objects = false;     

#declare street_texture = texture {pigment {rgb 0.5}}
#declare pavement_texture = texture {pigment {rgb 0.7}} 
   
#ifndef (building_size) #include "DEFAULT.OBJ" #end

// building type 1 
#declare building_size[building_types] = <25,3.6,25>;
#declare building_options[building_types] = build_details + build_roof; 

#declare building_details[building_types] =
union {
	box {<-25,3.6,-25>,<25,3,-24> pigment{Gray90}}
	box {<-25,3.6,25>,<25,3,24> pigment{Gray90}}
	box {<25,3.6,25><24,3,-25> pigment{Gray90}}
	box {<-25,3.6,25><-24,3,-25> pigment{Gray90}}
	
	box {<3,0,3><7,3.6,8> pigment{Gray90}}
}  

#declare building_roof[building_types] =
union {
	box {<-25,3.6,-25>,<25,3,-24> pigment{Gray20}}
	box {<-25,3.6,25>,<25,3,24> pigment{Gray20}}
	box {<25,3.6,25><24,3,-25> pigment{Gray20}}
	box {<-25,3.6,25><-24,3,-25> pigment{Gray20}} 
	
	box {<3,0,3><7,8,8> pigment{Gray20}}
} 

#declare building_types = building_types + 1;  

// building type 2 
#declare building_size[building_types] = <25,4,25>;
#declare building_options[building_types] = build_details + build_roof; 

#declare building_details[building_types] =
union {
	box {<-24,4,-24>,<24,3,-23> pigment{Gray90}}
	box {<-24,4,24>,<24,3,23> pigment{Gray90}}
	box {<24,4,24><23,3,-24> pigment{Gray90}}
	box {<-24,4,24><-23,3,-24> pigment{Gray90}}
	
	box {<3,0,3><7,4,8> pigment{Gray90}}
	
	box {<25,0,25><20,4,20> pigment{rgb <.7,.5,.1>}}
	box {<25,0,-25><20,4,-20> pigment{rgb <.7,.5,.1>}}
	box {<-25,0,25><-20,4,20> pigment{rgb <.7,.5,.1>}}
	box {<-25,0,-25><-10,4,-20> pigment{rgb <.7,.5,.1>}} 
	
	box {<-25.1,1,-25.1><-9,3,-19> pigment{rgb <.2,.3,.6>} finish {phong 1 reflection 1 metallic}} 
	
}  

#declare building_roof[building_types] =
union {
	box {<-25,3.6,-25>,<25,3,-24> pigment{Gray20}}
	box {<-25,3.6,25>,<25,3,24> pigment{Gray20}}
	box {<25,3.6,25><24,3,-25> pigment{Gray20}}
	box {<-25,3.6,25><-24,3,-25> pigment{Gray20}} 
	
	box {<3,0,3><7,8,8> pigment{Gray20}}  
	cylinder {<0,0,0><0,30,0>,1 pigment{White}} 
	cylinder {<10,0,0><10,20,0>,1 pigment{White}}
} 

#declare building_types = building_types + 1;

// building type 3 
#declare building_size[building_types] = <25,3.6,25>;
#declare building_options[building_types] = build_details + build_roof; 

#declare building_details[building_types] =
union {
	box {<-25,3.6,-25>,<25,3,-24> pigment{Gray90}}
	box {<-25,3.6,25>,<25,3,24> pigment{Gray90}}
	box {<25,3.6,25><24,3,-25> pigment{Gray90}}
	box {<-25,3.6,25><-24,3,-25> pigment{Gray90}}
	
	box {<3,0,3><7,3.6,8> pigment{Gray90}} 
	
	cylinder {<0,0,-25><0,3.6,-25>,1 pigment{White}}
	cylinder {<0,0,25><0,3.6,25>,1 pigment{White}}
	cylinder {<25,0,0><25,3.6,0>,1 pigment{White}} 
	cylinder {<-25,0,0><-25,3.6,0>,1 pigment{White}}
}  

#declare building_roof[building_types] =
union {
	box {<-25,3.6,-25>,<25,3,-24> pigment{Gray20}}
	box {<-25,3.6,25>,<25,3,24> pigment{Gray20}}
	box {<25,3.6,25><24,3,-25> pigment{Gray20}}
	box {<-25,3.6,25><-24,3,-25> pigment{Gray20}} 
	
	box {<3,0,3><7,20,8> pigment{Gray50}}
} 

#declare building_types = building_types + 1;  

// building type 4 
#declare building_size[building_types] = <25,4,25>;
#declare building_options[building_types] = build_details + build_roof; 

#declare building_details[building_types] =
union {
	box {<-24,4,-24>,<24,3,-23> pigment{Gray90}}
	box {<-24,4,24>,<24,3,23> pigment{Gray90}}
	box {<24,4,24><23,3,-24> pigment{Gray90}}
	box {<-24,4,24><-23,3,-24> pigment{Gray90}}
	
	box {<3,0,3><7,4,8> pigment{Gray90}}
	
	box {<25,0,25><20,4,20> pigment{Gray10}}
	box {<25,0,-25><20,4,-20> pigment{Gray10}}
	box {<-25,0,25><-20,4,20> pigment{Gray10}}
	box {<-25,0,-25><-10,4,-20> pigment{Gray10}}  
	
	box {<-25.1,1,-25.1><-9,3,-19> pigment{rgb <.2,.3,.6>} finish {phong 1 reflection 1 metallic}}
	
}

#declare building_roof[building_types] =
union {
	box {<-25,3.6,-25>,<25,3,-24> pigment{Gray20}}
	box {<-25,3.6,25>,<25,3,24> pigment{Gray20}}
	box {<25,3.6,25><24,3,-25> pigment{Gray20}}
	box {<-25,3.6,25><-24,3,-25> pigment{Gray20}} 
	
	box {<3,0,3><7,50,8> pigment{Gray50}} 
	box {<0,4,0><15,5,20> pigment{Gray10}}
	box {<0,9,0><15,10,20> pigment{Gray10}}
	box {<0,14,0><15,15,20> pigment{Gray10}}
	box {<0,19,0><15,20,20> pigment{Gray10}}
	box {<0,29,0><15,30,20> pigment{Gray10}}
	box {<0,39,0><15,40,20> pigment{Gray10}} 
	
	cylinder {<0,0,0><0,55,0>,.5 pigment{White}} 
	cylinder {<2,0,0><2,55,0>,.5 pigment{White}}
	cylinder {<3,0,0><3,56,0>,.5 pigment{White}}
	cylinder {<5,0,0><5,57,0>,.5 pigment{White}}
	cylinder {<7,0,0><7,55,0>,.5 pigment{White}}
	
	box {<25,0,25><22,20,22> pigment{Gray50}}
}

#declare building_types = building_types + 1;   

// building type 5 
#declare building_size[building_types] = <25,4,25>;
#declare building_options[building_types] = build_details + build_roof; 

#declare building_details[building_types] =
union {
	box {<-24,0,-24>,<24,4,24> pigment{Gray90}}
	box {<-25,1,-25>,<25,3,25> pigment{Gray40}}
	
}

#declare building_roof[building_types] =
union {
	box {<-25,3.6,-25>,<25,3,-24> pigment{Gray20}}
	box {<-25,3.6,25>,<25,3,24> pigment{Gray20}}
	box {<25,3.6,25><24,3,-25> pigment{Gray20}}
	box {<-25,3.6,25><-24,3,-25> pigment{Gray20}} 
	
	box {<3,0,3><7,10,8> pigment{Gray50}} 
	
	box {<25,0,25><22,20,22> pigment{Gray50}}  
	cylinder {<0,10,0><0,30,0>,1 pigment{White}} 
	cylinder {<10,10,0><10,20,0>,1 pigment{White}}
}

#declare building_types = building_types + 1;   