# Rusteal plugin configuration. Versioned with the plugin.
#
# The layout is fixed by convention:
# Rust/ Cargo workspace (the plugin's crate + bindings)
# Rust/bindings/ generated bindings crate (versioned)
# Source/{{ plugin }}/Generated/ generated C++ wrappers (versioned)
#
# The plugin's library is built and deployed by `rusteal build` in the project
# the plugin is in, with the project's reflection data.
[plugin]
# The cdylib package in Rust/ deployed as the plugin's Rust library
# (Binaries/<Platform>/librusteal_{{ plugin }}.so, rusteal_{{ plugin }}.dll).
crate = "{{ crate_name }}"
# Where the library runs: "runtime" (games and the editor, a Runtime module)
# or "editor" (the editor only, an Editor module).
kind = "editor"
[codegen]
# UE modules to generate bindings for, by feature (see [codegen.modules]).
# `engine` needs `input`, `slate` and `umg`: the runtime plugin links them.
# `editor` is the editor's own modules, which an editor library may bind.
features = ["core", "engine", "input", "slate", "umg", "editor"]
[codegen.modules]
# UE package = { module = "rust module", feature = "cargo feature" }, and the
# engine plugin a package comes from when it is not the engine's own.
CoreUObject = { module = "core_ue", feature = "core" }
Engine = { module = "engine", feature = "engine" }
DeveloperSettings = { module = "developer_settings", feature = "engine" }
PhysicsCore = { module = "physics_core", feature = "physics-core" }
InputCore = { module = "input_core", feature = "input" }
EnhancedInput = { module = "enhanced_input", feature = "enhanced-input" }
SlateCore = { module = "slate_core", feature = "slate" }
Slate = { module = "slate", feature = "slate" }
UMG = { module = "umg", feature = "umg" }
AIModule = { module = "ai", feature = "ai" }
GameplayTasks = { module = "gameplay_tasks", feature = "ai" }
NavigationSystem = { module = "navigation", feature = "ai" }
StateTreeModule = { module = "state_tree", feature = "state-tree", plugin = "StateTree" }
GameplayStateTreeModule = { module = "gameplay_state_tree", feature = "state-tree", plugin = "GameplayStateTree" }
GameplayTags = { module = "gameplay_tags", feature = "gameplay-tags" }
Niagara = { module = "niagara", feature = "niagara", plugin = "Niagara" }
GameplayAbilities = { module = "gameplay_abilities", feature = "gameplay-abilities" }
LevelSequence = { module = "level_sequence", feature = "level-sequence" }
CinematicCamera = { module = "cinematic_camera", feature = "cinematic" }
MovieScene = { module = "movie_scene", feature = "movie" }
MovieSceneTracks = { module = "movie_scene_tracks", feature = "movie" }
# The editor's modules (editor libraries only). `classes` keeps the parts of
# a big module a plugin uses; add the ones you need, or remove the list.
EditorSubsystem = { module = "editor_subsystem", feature = "editor" }
UnrealEd = { module = "unreal_ed", feature = "editor", classes = ["EditorSubsystemBlueprintLibrary", "EditorActorSubsystem", "EditorAssetSubsystem", "UnrealEditorSubsystem", "DataAssetFactory"] }
LevelEditor = { module = "level_editor", feature = "editor", classes = ["LevelEditorSubsystem"] }
ToolMenus = { module = "tool_menus", feature = "editor" }
AssetTools = { module = "asset_tools", feature = "editor" }
AssetRegistry = { module = "asset_registry", feature = "editor" }
DataValidation = { module = "data_validation", feature = "editor", plugin = "DataValidation" }
EditorScriptingUtilities = { module = "editor_scripting_utilities", feature = "editor", plugin = "EditorScriptingUtilities", classes = ["EditorDialogLibrary"] }
[codegen.blocklist]
# Reflected types and functions the generated code cannot handle yet.
classes = [
# Niagara's Sequencer section: its functions are not exported.
"MovieSceneNiagaraSystemSpawnSection",
"BlueprintTypeConversions",
"VisualLoggerKismetLibrary",
"PluginBlueprintLibrary",
"MeshVertexPainterKismetLibrary",
"FieldNotificationLibrary",
"WorldPartitionBlueprintLibrary",
"BlueprintMapLibrary",
"BlueprintSetLibrary",
"KismetArrayLibrary",
"MaterialExpressionDataDrivenShaderPlatformInfoSwitch",
]
structs = [
"ConstraintInstanceAccessor",
]
functions = [
# UFUNCTIONs the engine does not export (no *_API on the declaration): the
# generated wrapper compiles but does not link. Found with UE 5.8.2; keep sorted.
"AnimMontage.IsValidAdditiveSlot",
"GameplayStatics.BlueprintSuggestProjectileVelocity",
"KismetSystemLibrary.GetEnumTopLevelAssetPath",
"KismetSystemLibrary.GetStructTopLevelAssetPath",
"KismetSystemLibrary.RaiseScriptError",
"KismetSystemLibrary.StackTrace",
"ListView.SetReturnFocusToSelection",
"ListViewBase.CreateDragDropOperation",
"MaterialInstanceConstant.K2_GetScalarParameterValue",
"MaterialInstanceConstant.K2_GetTextureCollectionParameterValue",
"MaterialInstanceConstant.K2_GetTextureParameterValue",
"MaterialInstanceConstant.K2_GetVectorParameterValue",
"NiagaraScript.RaiseOnGPUCompilationComplete",
"ParticleSystem.ContainsEmitterType",
"PhysicsConstraintComponent.IsProjectionEnabled",
"PlanarReflection.OnInterpToggle",
"SceneCapture2D.OnInterpToggle",
"SoundConcurrency.SetMaxCount",
"SoundSubmix.SetDryVolumeModulation",
"SoundSubmix.SetOutputVolumeModulation",
"SoundSubmix.SetWetVolumeModulation",
"SplineComponent.PopulateFromLegacy",
"SpotLight.SetInnerConeAngle",
"SpotLight.SetOuterConeAngle",
"StateTreeNodeBlueprintBase.GetPropertyReference",
"Texture.Blueprint_GetBuiltTextureSize",
"Texture.Blueprint_GetMemorySize",
"Texture.Blueprint_GetTextureSourceDiskAndMemorySize",
"Texture.Blueprint_GetTextureSourceIdString",
"Texture.ComputeTextureSourceChannelMinMax",
"Texture2D.Blueprint_GetSizeX",
"Texture2D.Blueprint_GetSizeY",
"WidgetAnimation.UnbindAllFromAnimationFinished",
"WidgetAnimation.UnbindAllFromAnimationStarted",
"WidgetAnimationPlayCallbackProxy.CreatePlayAnimationProxyObject",
"WidgetAnimationPlayCallbackProxy.CreatePlayAnimationTimeRangeProxyObject",
"WidgetAnimationPlayCallbackProxy.NewPlayAnimationProxyObject",
"WidgetAnimationPlayCallbackProxy.NewPlayAnimationTimeRangeProxyObject",
# Editor functions whose wrapper does not compile: a TSet<UClass*>
# parameter, which the wrapper passes as a TSet<TSubclassOf<UObject>>.
"EditorAssetSubsystem.GetAllAssetsByMetaDataTags",
# Editor-only functions (WITH_EDITOR) the engine does not export: the
# wrapper compiles in an editor library but does not link. Keep sorted.
"EditorSubsystemBlueprintLibrary.GetPreviewPlatformOptions",
"KismetSystemLibrary.GetClassFromSoftPath",
"KismetSystemLibrary.GetCollisionProfileNames",
"KismetSystemLibrary.GetObjectFromSoftPath",
"MaterialExpressionAggregate.GetPossibleAttributeNames",
"MaterialInstanceConstant.SetNaniteOverrideMaterial",
"PoseAsset.GetBasePoseName",
"PoseAsset.GetPoseNames",
"PoseAsset.RenamePose",
"PoseAsset.SetBasePoseName",
"Texture.SetVirtualTextureStreaming",
]