Skip to content

Editor tools

Programmer · reference · C++

Designers: the two things on this page you will use

  • Tools › XenoCore › Apply XenoCore Project Settings writes the project settings XenoCore needs. Run it once after installing, and again if a recipe tells you to. It never overwrites a setting you changed yourself. See Project setup.
  • Save-time checks: saving an Art definition or a pawn Blueprint can show an error or warning in the Message Log. The messages are listed in Save-time checks.

That is the whole menu: XenoCore adds one entry to Tools. Everything else on this page is a Blueprint function library for programmers automating the editor.

XenoCore has a second C++ module, XenoCoreEditor, declared with type Editor in XenoCore.uplugin. It never loads in a packaged game. It holds Blueprint function libraries that automate editor tasks the engine's own scripting cannot reach: building anim-layer graphs, camera rigs, Gameplay Effect tag requirements and so on. It also holds the project setup that writes the settings XenoCore needs into your project (below), and two save-time asset checks. Apart from project setup, you don't need any of it to use the template.

How to call them

Every function is a static BlueprintCallable on a UBlueprintFunctionLibrary, so you can call it from:

  • Editor Utility Blueprints and Editor Utility Widgets. Search the node name in the graph.
  • Python in the editor (Tools › Execute Python Script, or the Output Log in Python mode). Unreal exposes each library as unreal.<ClassName minus the U> with snake-case functions, for example:
import unreal
print(unreal.XenoCoreMapTools.get_default_gameplay_experience(
    unreal.load_asset("/XenoCore/Maps/L_XenoCore_Gym")))

Never call these from gameplay Blueprints

The module is editor-only and is not part of a packaged game, so a gameplay Blueprint that calls one of these nodes cannot work in a packaged build. Use them only from Editor Utility assets and Python.

Every function's full signature is listed in C++ classes › XenoCoreEditor.

The libraries

Library Header What it does
UXenoCoreAITools XenoCoreAITools.h Builds the companion combat-spot and positional-spot EQS queries, whose options cannot be set from script.
UXenoCoreAnimLayerTools XenoCoreAnimLayerTools.h Builds and inspects Animation Blueprints from script: declares layers on an anim layer interface, adds linked-layer, slot, sequence-player, inertialization and stride-warping nodes to any named graph, wires node pins to variables, rewires state-machine transitions, sets a state's random sequence player, repoints blend spaces, reads and writes node comments, and describes a state machine or a child anim Blueprint's overrides as text.
UXenoCoreCameraTools XenoCoreCameraTools.h Builds Gameplay Cameras rigs: creates camera nodes, sets the root node and a sequence's children, creates enter and exit transitions, builds the rig and reports its status, and describes a rig's node tree and transitions.
UXenoCoreCosmeticTools XenoCoreCosmeticTools.h Fills in and describes a pawn Blueprint's cosmetic body-mesh rules (which body mesh each cosmetic tag picks).
UXenoCoreEnvironmentTools XenoCoreEnvironmentTools.h Builds the procedural terrain, rock, bark and canopy materials, and the scanned-rock material.
UXenoCoreGameplayEffectTools XenoCoreGameplayEffectTools.h Sets the tags a Gameplay Effect grants and the tags its target must or must not have, and reads them back.
UXenoCoreMapTools XenoCoreMapTools.h Reads and sets which Experience a map opens with, and creates a landscape from a 16-bit greyscale heightmap.
UXenoCoreMaterialTools XenoCoreMaterialTools.h Describes a material's wiring as text, and cuts a root input or a named expression input.
UXenoCoreMinimapTools XenoCoreMinimapTools.h Builds the minimap disc material M_XenoCore_Minimap.
UXenoCoreNiagaraTools XenoCoreNiagaraTools.h Lists and sets every colour constant in a Niagara system whose name contains a given string, across all emitters. Useful for recolouring an effect in one call.
UXenoCoreProjectSetup XenoCoreProjectSetup.h Lists, applies and reports conflicts for the project settings XenoCore needs. See below.
UXenoCoreReleaseTools XenoCoreReleaseTools.h Reads and sets an asset's preview mesh and a skeleton's preview attachments without loading them. Used to keep editor previews from pulling in development content.
UXenoCoreSkyTools XenoCoreSkyTools.h Builds the night-sky star and moon materials and the rain streak material.
UXenoCoreStateTreeTools XenoCoreStateTreeTools.h Recompiles a State Tree asset, which scripts cannot otherwise do after editing one.

Headers are in Plugins/GameFeatures/XenoCore/Source/XenoCoreEditor/Public/.

Most useful to a buyer

Task Call
Point a new map at XenoCore's Experience from a script UXenoCoreMapTools::SetDefaultGameplayExperience
Recolour a copied Niagara effect UXenoCoreNiagaraTools::ListColorConstants, then SetColorConstants
Add a status effect's granted tag from a batch script UXenoCoreGameplayEffectTools::SetGrantedTags
Rebuild a State Tree after a scripted edit UXenoCoreStateTreeTools::CompileStateTree
Check what a per-weapon anim layer overrides UXenoCoreAnimLayerTools::DescribeParentAssetOverrides

Verify scripted edits

A scripted edit can report success and still not reach disk. After any script that changes assets, save, then re-open the asset (or run a second script that reads it back) before trusting the result. The Describe… functions exist for exactly that.

Project setup

UXenoCoreProjectSetup writes the settings a Lyra project needs to run XenoCore into the project's own Config/Default*.ini files. It never overwrites a value you have set yourself; it lists it as a conflict in the Output Log under LogXenoSetup. Run it any of three ways:

  • the notification that appears when the editor opens, while any step is pending;
  • Tools › XenoCore › Apply XenoCore Project Settings;
  • the console: XenoCore.ProjectSetup lists what is pending, XenoCore.ProjectSetup apply writes it.

The full list of settings is in Install › What Apply changes.

Save-time checks

Two validators in this module run when you save an asset, and when you right-click an asset or folder and choose Validate Assets:

Check Runs on What it reports
Art cooldown tags Every Art definition Error: "Cooldown Tag … is also used by …. Arts sharing a tag share one cooldown". Give each Art its own tag. (An Art with a cooldown and no tag at all is reported by the Art definition's own check.)
Body meshes Pawn Blueprints with cosmetic body-mesh rules Warning: "Body Meshes has no Default Mesh", "Mesh Rules[n] has no Mesh", or a cosmetic part "matches no Body Meshes rule". Error when that part would make the pawn "INVISIBLE": add a rule for its tags, or set a Default Mesh

Many runtime assets (shop and trade tables, drop tables, member definitions, experience curves, Art definitions) carry their own checks, which run the same way. Each recipe lists the messages for its asset.

Development scripts are not part of the template

The repository that XenoCore is developed in has a Tools/ folder at its root, full of Python and shell scripts used to author the shipped assets. Those scripts are internal: they assume the developer's machine, a running editor bridge, and specific asset states. They are not supported, not documented, and not needed to use or extend the template. The package you receive holds only the plugin folder, so Tools/ is not in it.

Removing the module

If you do not want the editor tools, you can remove the XenoCoreEditor entry from XenoCore.uplugin's Modules list and delete Source/XenoCoreEditor. Nothing in the runtime module depends on it: its build file does not list XenoCoreEditor, and no shipped asset references it. You lose project setup (Tools › XenoCore) and the save-time checks with it.