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.ProjectSetuplists what is pending,XenoCore.ProjectSetup applywrites 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.