The car, van, fire truck and pushback tug were stacked boxes. The car is now an
operations SUV (rounded body, glass house with a sloped windscreen, roof light
bar, grille and lamps), the van a high-roof panel van, the fire truck an airport
crash tender with roof and bumper turrets on three axles, and the pushback a low
chamfered tug with a glazed cab. All stand on the ground at their built size.
Their trail anchors are measured again.
Feeds carry many airport ground vehicles (type ZVEH) and ground stations
(GRND) that were drawn as the generic plane, some at the 10 km airborne
default.
- types.json gains aircraft_callsign rules: a ZVEH callsign starting FIRE is
a fire truck, PUSH/TUG a pushback tug, DEICER/SQUID/SQB a van, else a car.
GRND draws a new 11.8 m radio mast (other/radio_mast.glb).
- resolveAircraft and aircraftModelSpec take the callsign; a matched rule
names the model outright, ahead of the type's class model.
- The layer spec cache keys such types by the rule matched, so it holds at
most one entry per rule.
- These models (catalog category `other`) draw at their built size, as such
models already do, and a
contact with no altitude whose model is one now stands on the ground; the
feed's own type is kept for such contacts, as no airframe lookup knows it.
- Local ADS-B passes the callsign too.
Most live vessel feeds send no length, and the resolver then fell through
every length rule to the range's last model drawn as built, so a cruise
ship or a container ship showed as the smallest model of its range.
types.json gives each passenger, cargo, tanker, fishing and service range
a typical_len (cargo 300 m, tanker 250 m, passenger 140 m, fishing 40 m,
...); a vessel with no usable length is chosen and drawn at it.
Flights, Military Flights and Local ADS-B draw each aircraft with the fleet
model its ICAO type, class or emitter category selects, scaled to the type's
length, built from the up-front loaded bytes. The eight third-party aircraft
models and their attribution are removed; every shipped model is now the
project's own.
121 GLBs under public/models/fleet (about 2 MB, MIT like the code) with
catalog.json and types.json. src/data/fleetModels.js picks a model by ICAO
type, aircraft class, emitter category, AIS ship type and size, GTFS route
type, transit mode or rail category, and sizes it life size; the set loads
once, up front. Trail anchors are measured from the meshes.
- src/data/local_data/dams/dams.geojson held the same 704 features as
dams.geojsonl, feature for feature. Only the JSONL file is loaded
(src/sources/infrastructureData.js), so the GeoJSON copy is dropped
and the dataset README no longer mentions it.
- public/models/ship.glb is not loaded anywhere: no module, template,
stylesheet or script names it. Its row in public/models/README.md
goes with it.
Together these remove 960,345 bytes of tracked data.