feat(pa): clear generated PA dressing for Creator Store assets

Three changes, all behind flags rather than deletions so the surveyed
geometry is recoverable:

1. Stall paint off (DRAW_STALL_PAINT=false). Row placement math and the
   PACapacity record still compute; they just emit no parts.
2. PARing deck removed. It laid a 44-wide circular band of road deck around
   the PA, measured flush with the apron (both tops y=47.00) and entirely
   inside the apron footprint -- redundant pavement reading as a leftover
   ring where the old barriers were. The arc loop still runs; junctions,
   ramps and flares are still positioned off it.
3. Generated PA structures off (DRAW_PA_STRUCTURES=false): PAHonkan,
   PANibankan, PAToiletNorth, PAKioskWest, PAHutWest + glazing, and the
   props (Lawson, toilet block, fountain, smoking shelters, motorcycle bay,
   EV chargers) and their two signs. OSM survey positions preserved in code
   as the placement reference for the store assets.

Kept: PALowCarBump (gameplay, the 段差 anti-車高短 bumps) and the main
大黒PA sign.

Verified in live Edit datamodel after rebuild: all 13 removed part names
plus *Glazing report absent; PAFloor=1, PAPerimeter=78, PALowCarBump=3,
PARampFlare=2 remain; apron continuity 361/361 raycast sample points hit
solid ground, holes=0 -- no gap left where the ring deck was. 17385 -> 17277.
This commit is contained in:
2026-08-03 01:23:46 -04:00
parent 3a74e15f6e
commit 16cba4ac32
+55 -3
View File
@@ -1013,7 +1013,23 @@ local function buildPA(map: Folder)
-- pure geometry with no asset IDs, and 0.06 studs proud is under tyre -- pure geometry with no asset IDs, and 0.06 studs proud is under tyre
-- resolution -- you cannot feel it. -- resolution -- you cannot feel it.
local PAINT_T = 0.12 local PAINT_T = 0.12
-- STALL PAINT DISABLED (2026-08-02, user call): the generated stall
-- markings are being replaced with pre-made parking assets from the
-- Creator Store. Set this back to true to restore the painted lines.
--
-- Deliberately a FLAG rather than deleting markRow and its callers: the
-- row placement below is surveyed against OSM (二番館 frontage, the 大型
-- rows, the 身障者用 bays) and feeds PACapacity, which the headless
-- verifier asserts. Ripping it out would throw away that survey work and
-- silently change the recorded capacity. With the flag off, every stall
-- position is still computed -- they just emit no geometry.
local DRAW_STALL_PAINT = false
local function paint(name, size, x, z, colour) local function paint(name, size, x, z, colour)
if not DRAW_STALL_PAINT then
return nil
end
local m = part({ local m = part({
Name = name, Name = name,
-- caller passes the old 2.2 in size.Y; ignore it and use PAINT_T -- caller passes the old 2.2 in size.Y; ignore it and use PAINT_T
@@ -1220,7 +1236,18 @@ local function buildPA(map: Folder)
local segMid = (p0 + p1) / 2 local segMid = (p0 + p1) / 2
local segLen = (p1 - p0).Magnitude + 1.5 local segLen = (p1 - p0).Magnitude + 1.5
local segCF = CFrame.lookAt(segMid, p1, UP) local segCF = CFrame.lookAt(segMid, p1, UP)
deck("PARing", Vector3.new(RING_W, 2, segLen), segCF) -- PARing deck REMOVED (2026-08-02, user call): this laid a 44-stud-wide
-- band of road deck in a circle around the PA. Measured flush with the
-- apron (both tops at y=47.00) and entirely inside the apron footprint
-- (ring bbox X -4535..-3712 vs apron X -4538..-3710), so it was not
-- structural -- just a differently-shaded ring of pavement painted over
-- asphalt the apron already provides. Reads as a leftover ring where
-- the old barriers used to be. Deleting it leaves no hole: the apron
-- slab underneath is continuous.
--
-- The loop itself still runs: `junctions` and the ramp/flare geometry
-- below are positioned off these arc points, so the circle is still
-- the reference line -- it just no longer emits a deck.
-- Ring edge: NO barrier on the circulation road any more. -- Ring edge: NO barrier on the circulation road any more.
-- --
@@ -1542,10 +1569,25 @@ local function buildPA(map: Folder)
return math.rad(angDeg - 90) return math.rad(angDeg - 90)
end end
-- GENERATED PA STRUCTURES DISABLED (2026-08-02, user call): the placeholder
-- buildings and props are being replaced with Creator Store assets placed
-- by hand into workspace.PAProps. Flip this back to true to restore them.
--
-- A flag, not a deletion: every position below is surveyed against a real
-- OSM way (本館, フォンターナ way 88790141, toilets 88790136, kiosk 88790109,
-- hut 88790185) via osmX/osmZ with OSM_SHIFT_N + OSM_SCALE. That survey is
-- the useful part -- it tells you exactly where each real structure stands,
-- which is the reference for placing the store assets. Keeping the calls
-- live but silent preserves it.
local DRAW_PA_STRUCTURES = false
-- `long` runs along the building's own long axis, `wide` across it. -- `long` runs along the building's own long axis, `wide` across it.
-- Footprints are scaled by the same OSM_SCALE as the positions, so the lot -- Footprints are scaled by the same OSM_SCALE as the positions, so the lot
-- stays a faithful uniform reduction rather than a stretched one. -- stays a faithful uniform reduction rather than a stretched one.
local function building(name, long_m, height_m, wide_m, xe, zn, angDeg) local function building(name, long_m, height_m, wide_m, xe, zn, angDeg)
if not DRAW_PA_STRUCTURES then
return nil
end
local sy = height_m * M local sy = height_m * M
local cf = CFrame.new(osmX(xe), DECK_Y + sy / 2, osmZ(zn)) * CFrame.Angles(0, osmYaw(angDeg), 0) local cf = CFrame.new(osmX(xe), DECK_Y + sy / 2, osmZ(zn)) * CFrame.Angles(0, osmYaw(angDeg), 0)
local b = part({ local b = part({
@@ -1580,12 +1622,16 @@ local function buildPA(map: Folder)
-- x -45..-18, z -66..-43, hence a ~46 x 34 m block centred (-32,-53) -- x -45..-18, z -66..-43, hence a ~46 x 34 m block centred (-32,-53)
-- squared up to the 45 deg lot grid. -- squared up to the 45 deg lot grid.
building("PAHonkan", 46, 13, 34, -32, -53, 45) building("PAHonkan", 46, 13, 34, -32, -53, 45)
makeSign("本館 MAIN BUILDING", CFrame.new(osmX(-32), DECK_Y + 15 * M, osmZ(-53) + 20 * M), pa) if DRAW_PA_STRUCTURES then
makeSign("本館 MAIN BUILDING", CFrame.new(osmX(-32), DECK_Y + 15 * M, osmZ(-53) + 20 * M), pa)
end
-- フォンターナ・ダイコク / ベイサイドテラス -- NE tip. OSM way 88790141, -- フォンターナ・ダイコク / ベイサイドテラス -- NE tip. OSM way 88790141,
-- oriented bbox 28 x 43 m at bearing +43 deg, centre (+13.9, +123.1). -- oriented bbox 28 x 43 m at bearing +43 deg, centre (+13.9, +123.1).
building("PANibankan", 43, 7, 28, 13.9, 123.1, 43) building("PANibankan", 43, 7, 28, 13.9, 123.1, 43)
makeSign("フォンターナ・ダイコク", CFrame.new(osmX(13.9), DECK_Y + 9 * M, osmZ(123.1) + 16 * M), pa) if DRAW_PA_STRUCTURES then
makeSign("フォンターナ・ダイコク", CFrame.new(osmX(13.9), DECK_Y + 9 * M, osmZ(123.1) + 16 * M), pa)
end
-- Remaining mapped structures, each from its own OSM building way. -- Remaining mapped structures, each from its own OSM building way.
building("PAToiletNorth", 21, 5, 7, -17.5, 109.8, -44) -- way 88790136 building("PAToiletNorth", 21, 5, 7, -17.5, 109.8, -44) -- way 88790136
@@ -1595,6 +1641,9 @@ local function buildPA(map: Folder)
-- Free-standing amenity nodes. Small props, but they are what stops the -- Free-standing amenity nodes. Small props, but they are what stops the
-- apron reading as an empty car park. -- apron reading as an empty car park.
local function prop(name, sx_m, sy_m, sz_m, xe, zn, colour, mat) local function prop(name, sx_m, sy_m, sz_m, xe, zn, colour, mat)
if not DRAW_PA_STRUCTURES then
return nil
end
local p = part({ local p = part({
Name = name, Name = name,
Size = Vector3.new(sx_m * OSM_SCALE * M, sy_m * M, sz_m * OSM_SCALE * M), Size = Vector3.new(sx_m * OSM_SCALE * M, sy_m * M, sz_m * OSM_SCALE * M),
@@ -1620,6 +1669,9 @@ local function buildPA(map: Folder)
-- EV rapid charger: first on any Japanese expressway, installed 2008-10-10. -- EV rapid charger: first on any Japanese expressway, installed 2008-10-10.
-- OSM charging_station node sits at (-58.3, +30.2), on the west flank. -- OSM charging_station node sits at (-58.3, +30.2), on the west flank.
for k = 0, 1 do for k = 0, 1 do
if not DRAW_PA_STRUCTURES then
break
end
local ev = part({ local ev = part({
Name = "PAEVCharger", Name = "PAEVCharger",
Size = Vector3.new(1.6 * M, 2.2 * M, 0.9 * M), Size = Vector3.new(1.6 * M, 2.2 * M, 0.9 * M),