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.
Option A — Explore the example map first (recommended)
The plugin ships with a fully functional example. This is the fastest way to understand how everything fits together.
- In the Content Browser, navigate to:
DynamicFloorPlugin/Maps/Preview_DynamicFloorPlugin - Open the map and press Play.
- 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:
| Blueprint | Path | What to look at |
|---|---|---|
FloorPolyPluginPlayerController | ExampleGameplay/ | How the controller creates the HUD and spawns the tool |
FloorPlacementControllerComponent | Components/ | How input is forwarded to the active tool |
BP_ExampleRuntimeFloorPolygonToolActor | FloorTools/ | The placement tool itself — tool shape, hit detection, fill polygon logic |
BP_BoundaryActor | Boundaries/ | How a wall boundary is turned into a node network |
BP_FloorPolygonRenderer | Floor/ | 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
UBasicNodeobjects 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 segmentSee 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:
- Open your Player Controller Blueprint.
- Add the FloorPlacementControllerComponent Actor Component.
- Forward your input events to it:
- Left click →
HandleLeftClick - Right click →
HandleRightClick - Modifier key (e.g. Shift) →
HandleShift
- Left click →
- 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.
- Place
BP_FloorPolygonRendererin your level (or create your own based on it). - Get the
UFloorPolygonChangeServicefromUDynamicFloorPluginSubsystem:Get Game Instance Subsystem → DynamicFloorPluginSubsystem→ Get Floor Polygon Change Service→ Register Listener (pass your renderer) - The renderer will now receive
OnPolygonAdded,OnPolygonRemoved, andOnAllPolygonsTransferredevents 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_FloorPolygonRendereror 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