Skip to main content

Markers

Description​

The MarkerService handles the rendering of 3D markers (arrows, cylinders, circles) in the game world. It includes a managed system that handles the per-frame DrawMarker calls automatically through an internal tick.

API Methods​

create()​

Registers a persistent marker that will be rendered every frame.

create(position: Vector3, options: MarkerOptions): string

Options include:

  • type — Marker ID (0-43).
  • scale — Vector3 size.
  • color — RGBA object.
  • bobUpAndDown — Vertical animation.
  • rotate — Continuous rotation.

remove() / removeAll()​

Stops rendering and deletes markers from the managed registry.

drawOnce()​

Draws a marker for exactly one frame. Useful for logic already running inside a @OnTick().


Example​

@Controller()
export class ShopController {
private markerId?: string

constructor(private readonly marker: MarkerService) {}

@OnResourceStart()
init() {
this.markerId = this.marker.create({ x: 100.0, y: 200.0, z: 30.0 }, {
type: 1,
color: { r: 0, g: 255, b: 0, a: 100 },
bobUpAndDown: true
})
}
}

Notes​

  • The service automatically starts/stops its internal tick based on whether there are active markers, optimizing performance.
  • Markers created via create() are identified by a unique string ID.