Skip to content

Quick Start — Dynamic Floor Plugin

Quick Start

This guide gets you from a fresh project to a working floor placement system as quickly as possible.


The plugin ships with a fully functional example. This is the fastest way to understand how everything fits together.

  1. In the Content Browser, navigate to: DynamicFloorPlugin/Maps/Preview_DynamicFloorPlugin
  2. Open the map and press Play.
  3. Use the in-game controls to place floors. Left-click to place, right-click to abort. Use the modifier (Shift by default) to toggle between fill mode and single-tile mode.

From the example map you can inspect:

BlueprintPathWhat to look at
FloorPolyPluginPlayerControllerExampleGameplay/How the controller creates the HUD and spawns the tool
FloorPlacementControllerComponentComponents/How input is forwarded to the active tool
BP_ExampleRuntimeFloorPolygonToolActorFloorTools/The placement tool itself — tool shape, hit detection, fill polygon logic
BP_BoundaryActorBoundaries/How a wall boundary is turned into a node network
BP_FloorPolygonRendererFloor/How polygons are rendered as procedural meshes

Option B — Integrate into your own project

Follow these steps to add floor placement to an existing project from scratch.

1. Understand the system

The plugin has two parallel systems that work together:

  • Node Network — tracks room boundaries (your walls). Built from UBasicNode objects connected together. The fill algorithm finds the polygon enclosed by those nodes.
  • Polygon Database + Renderer — stores committed floor polygons and notifies registered Blueprint renderers to update their procedural meshes.

2. Set up your boundaries (walls)

Every room boundary must be expressed as a node network. Each wall junction and wall endpoint is a node; connections between nodes run along your walls.

Use UNodeNetworkSubsystem (a World Subsystem, accessible from any Blueprint):

Get Node Network Subsystem
→ Create Node (at each wall junction/endpoint position)
→ Connect Nodes along each wall segment

See BP_BoundaryActor in the example content for a concrete implementation pattern.


3. Set up the placement tool

The plugin uses an Actor tool for placement. The default tool is BP_ExampleRuntimeFloorPolygonToolActor.

Add FloorPlacementControllerComponent to your Player Controller:

  1. Open your Player Controller Blueprint.
  2. Add the FloorPlacementControllerComponent Actor Component.
  3. Forward your input events to it:
    • Left click → HandleLeftClick
    • Right click → HandleRightClick
    • Modifier key (e.g. Shift) → HandleShift
  4. On Tick, forward the cursor position.

4. Spawn the tool

When the player wants to place a floor, spawn BP_ExampleRuntimeFloorPolygonToolActor and pass it to SetActiveTool on the FloorPlacementControllerComponent.

The recommended pattern (used in the example) is to implement UiToControllerInterface on your controller and trigger tool spawning via its PlaceFloor event, passing FloorType and FloorMaterial (as integer ID).


5. Set up the renderer

Floor polygons must be rendered via a Blueprint that implements IFloorPolygonChangeListener.

  1. Place BP_FloorPolygonRenderer in your level (or create your own based on it).
  2. Get the UFloorPolygonChangeService from UDynamicFloorPluginSubsystem:
    Get Game Instance Subsystem → DynamicFloorPluginSubsystem
    → Get Floor Polygon Change Service
    → Register Listener (pass your renderer)
  3. The renderer will now receive OnPolygonAdded, OnPolygonRemoved, and OnAllPolygonsTransferred events and keep the procedural mesh up to date.

6. Test it

Press Play. Try placing floors. If meshes appear, you are set up correctly.

If nothing appears, check:

  • Is the renderer registered with FloorPolygonChangeService?
  • Is the node network complete (fully enclosed)?
  • Is BP_FloorPolygonRenderer or your custom renderer in the level?

See Troubleshooting for more.


Next steps

  • Floor Placement — deep dive into the placement pipeline
  • Materials — how to assign and manage floor materials
  • Build Mode — building a full Sims-style construction system
  • Examples — step-by-step example scenarios