BasicImporter is an Unreal Engine plugin that provides a unified, extensible framework for importing external data formats — JSON, CSV, and XML — into usable in-engine data. It converts raw file contents into either persistent `UDataAsset` objects (saved to disk, cooked into builds) or lightweight transient containers (held in memory, garbage-collected when unreferenced).
The plugin is built around three central ideas:
- A universal intermediate representation (`FBIDataNode`) that decouples parsing from consumption. Every parser produces the same tree structure; every consumer reads from it.
- A factory/registry architecture (`FBIParserRegistry`) that maps file extensions to parser implementations. Adding support for a new format requires writing one class and one registration call — zero modifications to existing code.
- An asynchronous pipeline (`FBIAsyncReadTask` + `FBIStreamReader`) that reads files in 64KB chunks on a worker thread and marshals results back to the game thread. Large files (50MB+) can be imported without causing frame hitches.
The plugin targets Unreal Engine 4.26 through 5.7, using version-compatibility macros to abstract API differences (package saving, asset paths) across engine generations.
The plugin is split into two modules to enforce a clean separation between runtime logic and editor-only functionality.
The Runtime module contains everything needed to parse files and create data objects at runtime — modding, live configuration, DLC loading. It has no dependency on editor modules.
The Editor module depends on `BasicImporter` (publicly) and adds the `UnrealEd`, `AssetTools`, and `ContentBrowser` integrations that enable drag-drop file import in the Unreal Editor.