Skip to content

Blueprint API Reference

The MageIt World Markers plugin is designed to be fully usable within Unreal Engine’s Blueprint visual scripting system. All core logic, math operations, and UI updates are exposed as easy-to-use nodes.

This reference page categorizes the most commonly used Blueprint nodes and events by their context.


🌐 1. Subsystem Nodes (Global Management)

Section titled “🌐 1. Subsystem Nodes (Global Management)”

To use these nodes, you first need to get a reference to the UMageItWorldMarkersSubsystem. Right-click in any Event Graph and search for Get MageItWorldMarkersSubsystem. Drag off the return value to access these functions:

  • Get Visible Markers
    Returns an array of UMageItWorldMarkerComponent that are currently rendered on the screen (passed the visibility/occlusion checks).
  • Get Registered Markers
    Returns an array of all markers currently tracked by the system, regardless of whether they are on-screen or off-screen.
  • Get Conditional Visibility Markers
    Returns an array of markers that have special custom visibility logic applied to them.
  • Set Crosshair Interaction Radius (NewRadius: Float)
    Dynamically changes how close the crosshair needs to be to a marker to trigger hover events. Useful for changing interaction sizes when the player aims down sights (ADS).
  • Set Focus Radius (NewRadius: Float)
    Changes the broader screen-center focus area.
  • Update Marker Visibility (MarkerComponent: Target, bVisible: Boolean)
    Force-updates the visibility state of a specific marker, overriding default occlusion checks.

These nodes and events belong to the UMageItWorldMarkerComponent attached to your Actors.

  • Enable Marker / Disable Marker
    Turns the marker on or off. Disabled markers are removed from the subsystem’s processing queue to save performance.
  • Get Marker Widget
    Returns the 2D UI Widget (UMageItWorldMarkerWidget) instantiated for this component. You can cast this to your specific Blueprint class to update health bars, names, or icons.
  • Has Valid Marker Widget
    Returns true if the UI widget has been successfully created. Always check this before trying to update UI data to prevent Null Pointer errors.
  • Get Distance To Player (Returns Float)
    Returns the exact distance in Unreal Units (cm) to the player’s camera.
  • Get Distance To Player Squared (Returns Float)
    Returns the squared distance. Highly recommended for performance-heavy checks (like sorting arrays) as it skips the expensive Square Root calculation.
  • Set Max Visible Distance (NewDistance: Float)
    Changes the visibility distance at runtime, useful for upgrades, buffs, or scopes that should reveal markers from farther away.
  • Get Marker Subsystem (Returns UMageItWorldMarkersSubsystem)
    A shortcut available directly on the component to fetch the owning player’s marker subsystem, instead of searching for the separate “Get MageItWorldMarkersSubsystem” node.
  • IsVisibleForPlayer (Returns Boolean)
    Override in Blueprint to inject custom visibility logic (e.g., check inventory items or team visibility).
  • IsAlwaysVisibleForPlayer (Returns Boolean)
    Override to return true to skip distance and conditional visibility tests for this marker.
  • GetTargetPlayerController (Returns APlayerController)
    Override to route marker ownership to a specific player controller for splitscreen or spectator modes.

These events are available inside any Blueprint Widget that inherits from UMageItWorldMarkerWidget. They are Event-Driven, meaning they only fire when data actually changes, saving you from using the heavy Event Tick.

  • Event On Screen Visibility Changed (bNewIsVisible: Boolean)
    Fires when the marker transitions between visible and obscured (or disabled). Great for triggering fade animations.
  • Event On Crosshair Focus Changed (bNewIsUnderCrosshair: Boolean)
    Fires when the player looks directly at (or away from) the marker. Use this to highlight the marker, show a tooltip, or play a sound.
  • Event On In Focus Radius Changed (bNewIsInFocusRadius: Boolean)
    Fires when the marker enters or leaves the broader screen-center focus area.
  • Event On Screen Side Changed (NewScreenSide: ETargetScreenSide)
    Fires when an off-screen marker moves from one edge to another (Top, Bottom, Left, Right). Perfect for updating directional arrows.
  • Event On Position Changed (NewPosition: FVector2D)
    Fires when the 2D screen coordinates update.
  • Event On Created
    Fires once when the widget is fully initialized by the subsystem.
  • Event On Updated
    Fires every time the widget receives a general data update from the subsystem.
  • Update (Position, bNewIsOnScreen, Angle, NewScreenSide, bNewIsInFocusRadius)
    Override to intercept and alter raw update data before the widget applies screen positioning.
  • Event Destroy Widget
    Fires right before the widget is deleted. You can override this to play a destruction animation before calling the parent node.

These nodes are static utilities provided by UMageItWorldMarkersLibrary, accessible anywhere in your project without needing an object reference.

  • Project Marker To Screen
    The core math function. Translates a 3D world position into a 2D screen coordinate. Handles screen-edge clamping (bStickToViewport) and calculates the Angle to the target.
  • Build Markers Tree
    Takes an array of Marker Components and generates a highly optimized KD-Tree (UMageItMarkersTree) for spatial queries.
  • Radius Search
    (Called from the generated Tree object). Instantly finds all markers inside a specific 3D sphere without looping through every marker in the game.
  • Range Search
    (Called from the generated Tree object). Finds all markers within a specific 3D bounding box (FBox).