Docs
Copy page

Getting Started

Learn how to integrate the Grid Placement System into your Unreal Engine project.

Prerequisites

  • Unreal Engine 5.4 or later
  • Basic knowledge of Blueprints or C++
  • Understanding of Unreal Engine's component system

Installation

  1. Install the Grid Placement System plugin from fab.com
  2. Enable the plugin in Edit > Plugins, then restart the editor.
Enable Plugin
  1. If the plugin does not appear in your Content Browser:
Plugin not visible in Content Browser

Open your Content Browser settings and enable Show Plugin Content:

Enable Show Plugin Content in settings

Fundamental

Blueprint Setup

These instructions assume a fresh setup.
You may reuse or duplicate relevant actors or variables from the plugin content.

Inside UEM_CharacterSetup Blueprint

1. Implement the Interface in Your Placeable Objects Actor

Every placeable object must implement the PlaceableObjectInterface:

Implement PlaceableObjectInterface

Configure the required interface functions:

Get Placement Class (Self is the object itself)

Get Class Placement Type (PlacementType variable: Floor, Wall, or Roof).

2. (Optional) Add Directional Arrow Component (For Oriented Objects)

For objects that need directional placement (chairs, table and etc):

Directional Arrow Component

Reference the DirectionalArrow in the remaining interface class:

RemainingDirectionalArrow

3. Add Components to Your Player Pawn

  • Open your Character Blueprint.
  • Add PlacementSystemComponent and PlacementObjectRegistry components.
Add 2 Components

4. Initialize the System (Same as in UEM_CharacterSetup above)

  • Call InitializePlacementSystem from PlacementHelper in BeginPlay.
Initialize Placement System

5. Register Placeable Objects

  • Placeable objects can be registered in two ways:
  1. By calling RegisterObject (via PlacementHelper), as shown below

  1. And, By using a DataTable that follows the PlaceableObjectDataTable structure and linking it to the PlacementObjectRegistry component.
Data Table Initialization
Data Table Initialization 2

6. Create the UI

  • Add the provided (Default) WBP_PlacementObjectsListWidget to your HUD or Character and configure.

  • If you want to create your own UI, you can create something like this:

Instantiate WBP_MinimalObjectList for each entry in RegisteredObjects and add it to the WBP_MinimalMenu ScrollBox.

This are WBP_MinimalObjectList hierarchy and variable look like

WBP_MinimalObjectList
WBP_MinimalObjectListVariable

Add OnClick event on ItemButton (in WBP_MinimalObjectList) to call Start Placing from (PlacementHelper)

ItemButtonOnClickStartPlacement

7. Begin Play

Yeah, play

Input Controls

Once in placement mode, the system provides these controls:

Camera Controls

InputAction
AWSDCamera Movement
Scroll WheelZoom In/Out
L/R Mouse DragCamera Panning
E and QUp/Down Movement

Object Placement

InputAction
Left ClickPlace Object
Right ClickRotate Object
X/ESCCancel Placing/Editing Object
DELDelete Object While Selected
Middle MouseSelect Object for Editing

Special Modes

InputAction
Hold ShiftPrecision Mode
TABToggle Enter/Exit Placement
ALTToggle Cursor

Common Issues and Solutions

"Directional arrows not showing"

  • Cause: Missing UDirectionalArrowComponent or not returned in GetArrowComponent
  • Solution: Add arrow component and return it in interface function

"Objects can't be placed on surfaces"

  • Cause: Surfaces missing required tags ("Floor", "Wall", "Roof")
  • Solution: Add proper tags to placement surface actors (Default tags are "Floor" if not specified)

"Placement system not responding"

  • Cause: Components not added to player pawn or system not initialized
  • Solution: Add both required components and call InitializePlacementSystem

Important Notes

  • Interface Implementation: MANDATORY for all placeable objects - without this, objects will not work
  • Directional Arrows: Highly recommended for objects with orientation (chairs, and other Floor object)
  • Surface Tags: Ensure your floor/wall/roof actors have correct tags ("Floor", "Wall", "Roof")
  • Component Dependencies: Both PlacementSystemComponent and PlacementObjectRegistry are required
  • Camera Compatibility: System automatically adapts to camera setup by create Spring Arm Component at Runtime. Third Person, First Person are all supported
  • Initialization Order: Always initialize the system before registering objects
  • Asset Loading: The system loads required materials and input actions automatically from the plugin content
  • Grid Display: Grids appear automatically when you enter placement mode
  • Collision: Objects validate placement against other objects and world geometry
  • Placement Types: Objects can only be placed on surfaces matching their defined placement type