Metropoli BBS
VIEWER: drive.vxr MODE: TEXT (ASCII)
#VRML V1.0 ascii

Separator {
	# Options: ON OFF AUTO
	renderCulling AUTO
	
	OUTPUT_TO Drive.wrl
	
	PerspectiveCamera {
		position 0 2 10
		focalDistance 5
		heightAngle 45'deg
	}

	DEF BackgroundColor Info {
		string  ".1 .1 .6"
	}
	
	DEF param PARAMETERS {
		fields [ SFFloat streetWidth, SFFloat lightSpacing ]
		streetWidth 20'ft
		lightSpacing  150'ft
	}
	
	Material {
		diffuseColor =grayColor(.5)
	}
	
	DEF road Wall {
		fields [ SFLong placement, SFFloat width, MFFloat height, 
		MFFloat elevation, MFVec2f data ] 
		placement -1 # -1: Inside, 1: Outside 
		width param:streetWidth
		height [ 6'in ]
		elevation [ -6'in ]
		data []
	}
	
	DEF loop LOOP {
		fields [ SFLong start, SFLong end, SFLong step, SFLong position, SFFloat path ]
		start 0
		end 20
		step 1
		path 0
		
		APPEND road:data (path+param:streetWidth/2,-position*param:lightSpacing)

		Separator {
			# Options: ON OFF AUTO
			renderCulling AUTO
				
			Transform {
				translation path-1-param:streetWidth/2 0 -position*param:lightSpacing
			}
						
			PARAMETERS {
				fields [SFVec3f centerLOD, SFFloat streetLightHeight, SFFloat streetLightArmLength ]
				centerLOD path-1-param:streetWidth/2 0 -position*param:lightSpacing
				streetLightHeight 20'ft
				streetLightArmLength 2'ft
			
				INCLUDE StreetLight.vxr
			}
		}
		
		Separator {
			# Options: ON OFF AUTO
			renderCulling AUTO
			
			Transform {
				translation path+1+param:streetWidth/2 0 -position*param:lightSpacing
				rotation 0 1 0 pi()
			}
			
			PARAMETERS {
				fields [SFVec3f centerLOD, SFFloat streetLightHeight, SFFloat streetLightArmLength ]
				centerLOD path+1+param:streetWidth/2 0 -position*param:lightSpacing
				streetLightHeight 20'ft
				streetLightArmLength 2'ft
			
				INCLUDE StreetLight.vxr
			}
			
			SET loop:path loop:path+(rand()-.5)*10
		}
	}
}
[ RETURN TO DIRECTORY ]