RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

Server CommandsGE UtilitiesGame Engine MainNavigation GraphScreenshot CaptureServerServer ConnectionSpawnpoint ManagerSimulation TimeVehicle SpawningSuspension Frequency Tester
Freeroam Big Map MarkersFreeroam Big Map ModeFreeroam Big Map POI ProviderFreeroam Crash Cam ModeFreeroam Crash Cam Mode LoaderFreeroam Drag RaceFreeroam FacilitiesFreeroamFreeroam ConfiguratorFreeroam Gas StationsFreeroam Level StatsFreeroam OrganizationsFreeroam Special TriggersFreeroam Vue Big Map

UI

Resources

BeamNG Game Engine Lua Cheat SheetGE Developer RecipesMCP Server Setup

// RLS.STUDIOS=true

Premium Mods for BeamNG.drive. Career systems, custom vehicles, and immersive gameplay experiences.

Index

HomeProjectsPatreon

Socials

DiscordPatreon (RLS)Patreon (Vehicles)

© 2026 RLS Studios. All rights reserved.

Modding since 2024

API ReferenceGE Extensionsfreeroam

Freeroam Big Map Markers

Manages clustering and rendering of POI markers on the big map. Handles quadtree-based spatial clustering, marker lifecycle, mouse hover detection, and visibility filtering.

Manages clustering and rendering of POI markers on the big map. Handles quadtree-based spatial clustering, marker lifecycle, mouse hover detection, and visibility filtering.


Internal State

FieldTypeDescription
M.buildPoiListvariesAssigned as buildPoiList

Public API

FunctionSignatureReturnsDescription
M.setupFilter(validIds, radius)nilSets which POI IDs are visible and the cluster merge radius
M.displayBigMapMarkers(dtReal)nilUpdates and renders all visible bigmap markers
M.handleMouse(camMode, uiPopupOpen, mouseMoved, poiIsSelected)string|nilReturns hovered POI ID via ray-sphere intersection
M.getIdsFromHoveredPoiId(id)table|nilReturns all POI IDs in the cluster containing the given ID
M.getClusterMarker(cluster)markerGets or creates a bigmap marker for a cluster
M.getAllClustersBySettings(settingsId)tableReturns all clusters for a given filter settings ID
M.hideMarkers()nilHides all current and old markers
M.clearMarkers()nilDestroys all marker objects and clears caches
M.setNextMarkersFullAlphaInstant()nilForces next marker update to show at full alpha

Internals

  • Cluster Settings: Each setupFilter() call creates a settings entry keyed by radius#-sortedIds. Only one is "current" at a time
  • Old Markers: When filter changes, existing markers move to oldMarkersByClusterId for gradual fade-out cleanup
  • Quadtree Clustering: Uses quadtree module to spatially group POIs within the merge radius
  • Marker Factory: bigmapMarkerFactory creates individual marker objects and merges clusters

How It Works

  1. setupFilter(validIds, radius) - configures which POIs to show and at what cluster radius
  2. getAllClustersBySettings() - lazily clusters POIs using a quadtree; invalidated when gameplay_rawPois generation changes
  3. displayBigMapMarkers() - iterates all cluster settings, shows/hides markers based on which is active, calls marker:update()
  4. handleMouse() - casts a ray from camera (mouse or controller crosshair) and tests against icon sphere radii

Usage Examples

-- Set visible POIs with a merge radius
freeroam_bigMapMarkers.setupFilter({"mission_001", "garage_west"}, 50)

-- Get clusters for current settings
local clusters = freeroam_bigMapMarkers.getAllClustersBySettings(settingsId)

-- Check what's under the cursor
local hoveredId = freeroam_bigMapMarkers.handleMouse(camMode, false, true, false)

-- Clean up
freeroam_bigMapMarkers.clearMarkers()

Notes

  • Cluster radius is snapped to multiples of 5 for cache efficiency
  • Mouse hover uses a sphere radius proportional to camera distance and FOV
  • Depends on gameplay_rawPois for POI data and bigmapMarker factory for rendering

See Also

  • Freeroam Big Map Mode - Related reference
  • Freeroam Big Map POI Provider - Related reference
  • Freeroam Crash Cam Mode - Related reference
  • Freeroam Guide - Guide

Wheel Distance

- **Node Name:** `Wheel Distance`

Freeroam Big Map Mode

M.dependencies = {'gameplay_rawPois', 'core_groundMarkers','core_camera','core_terrain', 'freeroam_bigMapMarkers'}

On this page

Internal StatePublic APIInternalsHow It WorksUsage ExamplesNotesSee Also