Grid Placement System
Getting Started

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

The system uses these tags to identify placement surfaces. give tags "Floor", "Wall", "Roof" in your mesh

Blueprint Setup

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

An initialization setup is already available in the Content Browser at: /GPS_Core/Demo/Character/UEM_CharacterSetup blueprint.

This blueprint is identical to the preview shown below. For a quick setup, simply copy the nodes from UEM_CharacterSetup into your own character.

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)

Returning Class is optional, if it’s not provided as shown below, the placement will still function.

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

If PlacementType is not returned as shown below, the placement will default to Floor.

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