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 = "runtime"

[codegen]
# UE modules to generate bindings for, by feature (see [codegen.modules]).
# `engine` needs `input`, `slate` and `umg`: the runtime plugin links them.
features = ["core", "engine", "input", "slate", "umg", "niagara", "level-sequence", "movie"]

[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" }

[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",
]