rusteal 0.8.0

Rust bindings for Unreal Engine 5.8.2
# 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",
]