-- READ-ONLY geometry probe for the ramp redesign. Does NOT call MapBuilder.build(). local rs = game:GetService("ReplicatedStorage") local cm = rs:FindFirstChild("Shared") and rs.Shared:FindFirstChild("Circuit") if not cm then return "Circuit module not found at ReplicatedStorage.Shared.Circuit" end local Circuit = require(cm) local c = Circuit.PA_CENTER local R = Circuit.PA_RADIUS local S = Circuit.samples local out = {} local function log(...) table.insert(out, table.concat({ ... }, " ")) end log( ("PA_CENTER = %.0f, %.0f, %.0f PA_RADIUS = %.0f ringR = %.0f samples = %d"):format( c.X, c.Y, c.Z, R, R + 130, #S ) ) -- Apron extent from the LIVE map (no rebuild). local m = workspace:FindFirstChild("Map") if m then local f = m:FindFirstChild("PAFloor", true) if f then log( ("PAFloor centre %.0f,%.0f size %.0f x %.0f -> X %.0f..%.0f Z %.0f..%.0f"):format( f.Position.X, f.Position.Z, f.Size.X, f.Size.Z, f.Position.X - f.Size.X / 2, f.Position.X + f.Size.X / 2, f.Position.Z - f.Size.Z / 2, f.Position.Z + f.Size.Z / 2 ) ) end -- Orientation anchors: which world direction the buildings sit in. for _, n in ipairs({ "PAHonkan", "PANibankan" }) do local b = m:FindFirstChild(n, true) if b then log( ("%-12s at %.0f, %.0f (dX %+.0f, dZ %+.0f from PA centre)"):format( n, b.Position.X, b.Position.Z, b.Position.X - c.X, b.Position.Z - c.Z ) ) end end end -- Mainline samples near the PA: index, world pos, deck height, distance and -- bearing from the PA centre. Bearing is atan2(dZ,dX) in degrees. log("") log("idx X Z deckY dist bearing note") for i, s in ipairs(S) do local dx, dz = s.pos.X - c.X, s.pos.Z - c.Z local d = math.sqrt(dx * dx + dz * dz) if d < 1000 then local br = math.deg(math.atan2(dz, dx)) if br < 0 then br += 360 end local note = "" if s.tunnel then note = "TUNNEL" end log(("%4d %7.0f %7.0f %6.1f %6.0f %6.1f %s"):format(i, s.pos.X, s.pos.Z, s.pos.Y, d, br, note)) end end return table.concat(out, "\n")