--[[Chassis Assembly]]


		--Create Steering Axle
		local arm=Instance.new("Part",v)
		arm.Name="Arm"
		arm.Anchored=true
		arm.CanCollide=false
		arm.FormFactor=Enum.FormFactor.Custom
		arm.Size=Vector3.new(_Tune.AxleSize,_Tune.AxleSize,_Tune.AxleSize)
		arm.CFrame=(v.CFrame*CFrame.new(0,_Tune.StAxisOffset,0))*CFrame.Angles(-math.pi/2,-math.pi/2,0)
		arm.CustomPhysicalProperties = PhysicalProperties.new(_Tune.AxleDensity,0,0,100,100)
		arm.TopSurface=Enum.SurfaceType.Smooth
		arm.BottomSurface=Enum.SurfaceType.Smooth
		arm.Transparency=1
			
		--Create Wheel Spindle
		local base=arm:Clone()
		base.Parent=v
		base.Name="Base"
		base.CFrame=base.CFrame*CFrame.new(0,_Tune.AxleSize,0)
		base.BottomSurface=Enum.SurfaceType.Hinge
		
		--Create Steering Anchor
		local axle=arm:Clone()
		axle.Parent=v
		axle.Name="Axle"
		axle.CFrame=CFrame.new(v.Position-((v.CFrame*CFrame.Angles(math.pi/2,0,0)).lookVector*((v.Size.x/2)+(axle.Size.x/2))),v.Position)*CFrame.Angles(0,math.pi,0)
		axle.BackSurface=Enum.SurfaceType.Hinge
		
		if v.Name=="F" or v.Name=="R" then
			local axle2=arm:Clone()
			axle2.Parent=v
			axle2.Name="Axle"
			axle2.CFrame=CFrame.new(v.Position+((v.CFrame*CFrame.Angles(math.pi/2,0,0)).lookVector*((v.Size.x/2)+(axle2.Size.x/2))),v.Position)*CFrame.Angles(0,math.pi,0)
			axle2.BackSurface=Enum.SurfaceType.Hinge
			MakeWeld(arm,axle2)
		end
		
		--Create Suspension
		if PGS_ON and _Tune.SusEnabled then			
			local sa=arm:Clone()
			sa.Parent=v
			sa.Name="#SA"
			if v.Name == "FL" or v.Name=="FR" or v.Name =="F" then
				local aOff = _Tune.FAnchorOffset
				sa.CFrame=v.CFrame*CFrame.new(_Tune.AxleSize/2,-fDistX,-fDistY)*CFrame.new(aOff[3],aOff[1],-aOff[2])*CFrame.Angles(-math.pi/2,-math.pi/2,0)
			else
				local aOff = _Tune.RAnchorOffset
				sa.CFrame=v.CFrame*CFrame.new(_Tune.AxleSize/2,-rDistX,-rDistY)*CFrame.new(aOff[3],aOff[1],-aOff[2])*CFrame.Angles(-math.pi/2,-math.pi/2,0)
			end
			
			local sb=sa:Clone()
			sb.Parent=v
			sb.Name="#SB"
			sb.CFrame=sa.CFrame*CFrame.new(0,0,_Tune.AxleSize)
			
			sb.FrontSurface=Enum.SurfaceType.Hinge	
			
			local g = Instance.new("BodyGyro",sb)
			g.Name = "Stabilizer"
			g.MaxTorque = Vector3.new(0,0,1)
			g.P = 0
			
			local sf1 = Instance.new("Attachment",sa)
			sf1.Name = "SAtt"
			
			local sf2 = sf1:Clone()
			sf2.Parent = sb
			
			
			if v.Name == "FL" or v.Name == "FR" or v.Name == "F" then
				sf1.Position = Vector3.new(fDistX-fSLX,-fDistY+fSLY,_Tune.AxleSize/2)
				sf2.Position = Vector3.new(fDistX,-fDistY,-_Tune.AxleSize/2)
			elseif v.Name == "RL" or v.Name=="RR" or v.Name == "R" then
				sf1.Position = Vector3.new(rDistX-rSLX,-rDistY+rSLY,_Tune.AxleSize/2)
				sf2.Position = Vector3.new(rDistX,-rDistY,-_Tune.AxleSize/2)
			end
			
			sb:MakeJoints()
			
			local sp = Instance.new("SpringConstraint",v)
			sp.Name = "Spring"
			sp.Attachment0 = sf1
			sp.Attachment1 = sf2
			sp.LimitsEnabled = true
			
			sp.Visible=_Tune.SusVisible
			sp.Radius=_Tune.SusRadius
			sp.Thickness=_Tune.SusThickness
			sp.Color=BrickColor.new(_Tune.SusColor)
			sp.Coils=_Tune.SusCoilCount
			
			if v.Name == "FL" or v.Name=="FR" or v.Name =="F" then
				g.D = _Tune.FAntiRoll
				sp.Damping = _Tune.FSusDamping
				sp.Stiffness = _Tune.FSusStiffness
				sp.FreeLength = _Tune.FSusLength+_Tune.FPreCompress
				sp.MaxLength = _Tune.FSusLength+_Tune.FExtensionLim
				sp.MinLength = _Tune.FSusLength-_Tune.FCompressLim
			else
				g.D = _Tune.RAntiRoll
				sp.Damping = _Tune.RSusDamping
				sp.Stiffness = _Tune.RSusStiffness
				sp.FreeLength = _Tune.RSusLength+_Tune.RPreCompress
				sp.MaxLength = _Tune.RSusLength+_Tune.RExtensionLim
				sp.MinLength = _Tune.RSusLength-_Tune.RCompressLim
			end
			
			MakeWeld(car.DriveSeat,sa)
			MakeWeld(sb,base)
		else
			MakeWeld(car.DriveSeat,base)
		end
		
		--Lock Rear Steering Axle
		if v.Name == "RL" or v.Name == "RR" or v.Name=="R" then
			MakeWeld(base,axle)
		end
		
		--Weld Assembly
		if v.Parent.Name == "RL" or v.Parent.Name == "RR" or v.Name=="R" then
			MakeWeld(car.DriveSeat,arm)
		end
		
		MakeWeld(arm,axle)
		
		arm:MakeJoints()
		axle:MakeJoints()
	
		--Weld Miscelaneous Parts
		if v:FindFirstChild("SuspensionFixed")~=nil then
			ModelWeld(v.SuspensionFixed,car.DriveSeat)
		end
		if v:FindFirstChild("WheelFixed")~=nil then
			ModelWeld(v.WheelFixed,axle)
		end
		if v:FindFirstChild("Fixed")~=nil then
			ModelWeld(v.Fixed,arm)
		end
		
		--Weld Wheel Parts
		if v:FindFirstChild("Parts")~=nil then
			ModelWeld(v.Parts,v)
		end
		
		--Add Steering Gyro
		if v:FindFirstChild("Steer") then
			v:FindFirstChild("Steer"):Destroy()
		end
		
		if v.Name=="FL" or v.Name=="FR" or v.Name=="F" then
			local steer=Instance.new("BodyGyro",arm)
			steer.Name="Steer"
			steer.P=_Tune.SteerP
			steer.D=_Tune.SteerD
			steer.MaxTorque=Vector3.new(0,_Tune.SteerMaxTorque,0)
			steer.cframe=v.CFrame*CFrame.Angles(0,-math.pi/2,0)
		end
		
		--Add Stabilization Gyro
		local gyro=Instance.new("BodyGyro",v)
		gyro.Name="Stabilizer"
		gyro.MaxTorque=Vector3.new(1,0,1)
		gyro.P=0
		if v.Name=="FL" or v.Name=="FR"  or v.Name=="F" then
			gyro.D=_Tune.FGyroDamp
		else
			gyro.D=_Tune.RGyroDamp
		end
		
		--Add Rotational BodyMover
		local AV=Instance.new("BodyAngularVelocity",v)
		AV.Name="#AV"
		AV.angularvelocity=Vector3.new(0,0,0)
		AV.maxTorque=Vector3.new(_Tune.PBrakeForce,0,_Tune.PBrakeForce)
		AV.P=1e9
	end