UE 5.4+ CompatibleModular
Grid Placement System
A robust framework for creating building and placement mechanics in Unreal Engine projects.
Video Preview & Playable Demo Download
Overview
The Grid Placement System provides a robust framework for creating building and placement mechanics in Unreal Engine projects.
Key Features
Grid-based Placement
Snap objects to customizable grids with precision and intelligent alignment
Surface Detection
Advanced surface detection and validation with normal calculations
Input Management
Complete input handling system with customizable key bindings
UI Integration
Beautiful, ready-to-use widget system with modern design
Flexible Architecture
Modular design for easy customization and extensibility
Performance Optimized
Efficient algorithms and optimized rendering for smooth gameplay
Architecture
The system is built around several core components that work together seamlessly:
Core System
- PlacementHelper: Main Placement Orchestrator - coordinates all placement operations
- PlacementObjectRegistry: Manages placeable objects with efficient lookup and caching
- PlacementSystemComponent: Manages All Placement Logic with state management
- DirectionalArrowComponent: For visualizing direction in Placeable Object Actors
- PlaceableObjectInterface: Universal interface for all placeable objects
Internal Library Components
- GridSnapper: Handles precise grid snapping logic with customizable grid sizes
- InputHandler: Comprehensive user input management with action mapping
- ObjectManager: Advanced object lifecycle management and pooling
- PlacementCameraController: Smooth camera control during placement operations
- PlacementValidator: Robust validation system for placement rules and constraints
- SoundManager: Audio feedback system with spatial audio support
- SurfaceManager: Intelligent surface detection with multiple detection methods
Widgets
Modern UI elements designed for optimal user experience:
- WBP_PlaceableObjectsListWidget: Responsive container for placeable items with search and filtering
- WBP_PlaceableItemWidget: Individual item component with preview and metadata
- WBP_Control: Interactive overlay for tutorials, controls bindings
Plugin Tree (What is included?)
│ │ ├── SFX_GPS_Place.uasset │ │ ├── SFX_GPS_Rotate.uasset │ │ └── SFX_GPS_Snap.uasset │ │ │ ├── IA_DeleteObject.uasset │ │ │ ├── IA_PlacementCancel.uasset │ │ │ ├── IA_PlacementConfirm.uasset │ │ │ ├── IA_PlacementMove.uasset │ │ │ ├── IA_PlacementRotate.uasset │ │ │ ├── IA_PlacementShift.uasset │ │ │ ├── IA_PlacementToggle.uasset │ │ │ ├── IA_PlacementVertical.uasset │ │ │ ├── IA_PlacementZoom.uasset │ │ │ ├── IA_SelectObject.uasset │ │ │ ├── IMC_PlacementMode.uasset │ │ │ └── IMC_PlacementToggle.uasset │ │ │ ├── MF_GPS_ProcGrid.uasset │ │ │ ├── MF_ProcGrid.uasset │ │ │ ├── M_GPS_Grid.uasset │ │ │ ├── M_GPS_Overlay.uasset │ │ │ ├── M_GPS_SelectedOutline.uasset │ │ │ ├── ProcGrid.uasset │ │ │ ├── T_CircleChecker.uasset │ │ │ ├── T_NormalGrid.uasset │ │ │ └── T_PlusGrid.uasset │ │ └── SM_GPS_Arrow.uasset │ │ │ └── UEM_CharacterSetup.uasset │ │ └── GPS_DemoLevels.umap │ │ │ ├── SomeMaterial.uasset │ │ ├── Floor_400x400.uasset │ │ ├── Roof_400x400.uasset │ │ ├── Wall_400x200.uasset │ │ └── Wall_Door_400x300.uasset │ │ │ │ ├── A_BigCabinet.uasset │ │ │ │ ├── A_ModernWoodenCabinet.uasset │ │ │ │ ├── A_PaintedWoodenCabinet.uasset │ │ │ │ │ ├── SomeMaterial.uasset │ │ │ │ ├── SM_Cabinet.uasset │ │ │ │ ├── SM_ModernWoodenCabinet.uasset │ │ │ │ ├── SM_PaintedWoodenCabinet.uasset │ │ │ │ ├── SomeMesh.uasset │ │ │ │ ├── A_ModernArmChair.uasset │ │ │ │ ├── A_PlasticChair.uasset │ │ │ │ │ ├── SomeMaterial.uasset │ │ │ │ ├── SM_ModernArmChair.uasset │ │ │ │ └── SM_PlasticChair.uasset │ │ │ ├── A_RoundWoodenTable.uasset │ │ │ │ ├── SomeMaterial.uasset │ │ │ └── SM_RoundWoodenTable.uasset │ │ │ │ ├── A_CeilingFan.uasset │ │ │ │ │ ├── SomeMaterial.uasset │ │ │ │ └── SM_CeilingFan.uasset │ │ │ ├── A_Chandelier.uasset │ │ │ ├── A_Chandelier_1.uasset │ │ │ │ ├── SomeMaterial.uasset │ │ │ ├── SM_Chandelier.uasset │ │ │ └── SM_Chandelier_1.uasset │ │ │ ├── A_Dartboard.uasset │ │ │ │ ├── SomeMaterial.uasset │ │ │ └── SM_Dartboard.uasset │ │ │ ├── A_WallLamp.uasset │ │ │ │ ├── SomeMaterial.uasset │ │ │ └── SM_WallLamp.uasset │ │ │ ├── SomeMaterial.uasset │ │ └── SM_Picture.uasset │ │ │ ├── M_GPS_Border.uasset │ │ │ ├── M_GPS_Border_Controls.uasset │ │ │ └── M_GPS_Border_ItemList.uasset │ │ ├── WBP_Control.uasset │ │ ├── WBP_PlaceableItemWidget.uasset │ │ └── WBP_PlaceableObjectsListWidget.uasset │ │ └── GPS_Default.uasset │ ├── WBP_MinimalMenu.uasset │ └── WBP_MinimalObjectList.uasset ├── GridPlacementSystem.uplugin │ ├── GridPlacementSystem.Build.cs │ │ │ ├── DirectionalArrowComponent.cpp │ │ │ │ ├── GridSnapper.cpp │ │ │ │ ├── InputHandler.cpp │ │ │ │ ├── ObjectManager.cpp │ │ │ │ ├── PlacementCameraController.cpp │ │ │ │ ├── PlacementValidator.cpp │ │ │ │ ├── SoundManager.cpp │ │ │ │ └── SurfaceManager.cpp │ │ │ ├── PlacementHelper.cpp │ │ │ ├── PlacementObjectRegistry.cpp │ │ │ └── PlacementSystemComponent.cpp │ │ ├── GridPlacementSystem.cpp │ │ └── PlaceableObjectInterface.cpp │ │ └── DirectionalArrowComponent.h │ │ │ ├── ObjectManager.h │ │ │ ├── PlacementCameraController.h │ │ │ ├── PlacementValidator.h │ │ │ └── SurfaceManager.h │ │ ├── PlacementHelper.h │ │ ├── PlacementObjectRegistry.h │ │ └── PlacementSystemComponent.h │ ├── GridPlacementSystem.h │ └── PlaceableObjectInterface.h └── GridPlacementSystemEditor ├── GridPlacementSystemEditor.Build.cs │ └── GridPlacementSystemEditor.cpp └── GridPlacementSystemEditor.h
Blueprints Source Files Unreal Assets Configuration