Blueprint API

The Blueprint-exposed classes, functions, properties, delegates, structures and enumerations of Souls Destruction Framework, including intact physics and fall damage, taken from the shipped public headers.

Taken from the public headers of the SoulsDestructionRuntime module. Names match the code exactly; Blueprint display names are shown where the code defines one. This page covers the main gameplay surface; topic pages document the rest of their own area in detail (for example projectile impacts and runtime glass).

Editor authoring is not part of this API

The authoring services in SoulsDestructionEditor are C++ facades for the plugin’s own UI and automation. They are not exposed as Blueprint nodes — and neither is the editor console command SDF.MigrateToSimulatedPhysics.

USDFDestructibleComponent

UActorComponent, class group SoulsDestruction, Blueprint-spawnable. The primary entry point for evaluating hits and dispatching destruction presentation.

Functions

FunctionKindSignature
ApplyDestructionDamageCallable(FSDFDestructionHit Hit) -> FSDFDestructionResult
GetDestructionStatePure() -> ESDFDestructionState
GetDestructionProfilePure() -> USDFDestructionProfile*
GetCurrentHealthPure() -> float
GetCurrentDamageStageIndexPure() -> int32
GetActiveImpactDecalCountPure() -> int32
GetLastHitReactionRequestPure() -> FSDFHitReactionRequest
GetLastDamageStageChangePure() -> FSDFDamageStageChange
GetLastImpactDecalRequestPure() -> FSDFDecalRequest
GetLastLootRequestPure() -> FSDFLootRequest
GetLootRequestCountPure() -> int32
ResetDestructionCallable() -> bool
GetEffectivePhysicsModePure() -> ESDFIntactPhysicsMode
SetPhysicsModeOverrideCallable(ESDFIntactPhysicsOverride NewOverride) — applies the resulting mode immediately
GetIntactPhysicsStatusPure() -> ESDFIntactPhysicsStatus
GetLastSupportWakeCountPure() -> int32
GetLastFallHeightCmPure() -> float — centimetres; zero before a damaging landing
GetLastFallDamagePure() -> float
SetDestructionProfileCallable(USDFDestructionProfile* NewProfile)
SetIntactComponentCallable(UPrimitiveComponent* NewIntactComponent)
SetLootSpawnComponentCallable(USceneComponent* NewLootSpawnComponent)
AddActorToRevealCallable(AActor* ActorToReveal)
ClearActorsToRevealCallable()
RequestAudioEventCallable(ESDFAudioEvent Event, FVector Location, FVector ImpactDirection, float ImpactSpeed, ESDFDestructionPower DestructionPower, int32 RandomSeed) -> bool
RequestVFXEventCallable(ESDFVFXEvent Event, FVector Location, FVector ImpactNormal, FVector ImpactDirection, float ImpactSpeed, ESDFDestructionPower DestructionPower, int32 RandomSeed, FName CustomName) -> bool
SelectWeightedSoundVariationPure, static(TArray<FSDFWeightedSound> Variations, int32 RandomSeed, out float VolumeMultiplier, out float PitchMultiplier) -> int32
SelectWeightedVFXVariationPure, static(TArray<FSDFWeightedNiagaraSystem> Variations, int32 RandomSeed, out FVector Scale, out FRotator Rotation, FVector ImpactNormal, FVector ImpactDirection) -> int32
SelectWeightedDecalVariationPure, static(TArray<FSDFWeightedDecal> Variations, int32 RandomSeed, FVector ImpactNormal, out FRotator Rotation) -> int32
SelectWeightedLootEntryPure, static(TArray<FSDFWeightedLootActor> Entries, int32 RandomSeed) -> int32

Properties

PropertyAccessType
DestructionProfileEditable, read-only in BlueprintUSDFDestructionProfile*
DestructionStateRead-only, instance-visibleESDFDestructionState
CurrentHealthRead-only, instance-visiblefloat
ActorsToRevealEditable per instanceTArray<AActor*>
PhysicsModeOverrideEditable, read-only in Blueprint — display name Intact Physics (Override)ESDFIntactPhysicsOverride

Events

DelegateParameters
OnDestructionDamageReceivedFSDFDestructionHit Hit, FSDFDestructionResult Result
OnDestructionStateChangedESDFDestructionState PreviousState, ESDFDestructionState NewState
OnDestructionStartedFSDFDestructionHit Hit, FSDFDestructionResult Result
OnDestroyedFSDFDestructionHit Hit, FSDFDestructionResult Result
OnDebrisSpawnedAActor* DebrisActor
OnDestructionAudioRequestedFSDFDestructionAudioRequest Request
OnDestructionVFXRequestedFSDFDestructionVFXRequest Request
OnHitReactionRequestedFSDFHitReactionRequest Request
OnDamageStageChangedFSDFDamageStageChange Change
OnImpactDecalRequestedFSDFDecalRequest Request
OnLootRequestedFSDFLootRequest Request

Usage

Event: weapon trace produced a hit
  -> Make FSDFDestructionHit (Damage 25, Destruction Power Medium, Impact fields)
  -> Target -> Get Component by Class (SDF Destructible)
  -> Apply Destruction Damage
  -> Break FSDFDestructionResult
       Outcome                -> switch for feedback
       b Destruction Triggered -> award resources
       b Used Fallback         -> optional debug display

USDFDestructionProfile

UPrimaryDataAsset, Blueprint type. All properties are EditDefaultsOnly, BlueprintReadOnly and are listed by group in Destruction profiles, including PhysicsMode, bEnableFallDamage, MinimumFallHeightCm, FallDamagePerMeter and FallDestructionPower.

FunctionKindSignature
ComputeFallDamagePure(float DropHeightCm) -> float — max(0, (DropHeightCm - MinimumFallHeightCm) / 100 * FallDamagePerMeter), or 0 while fall damage is off

USDFDestructionSubsystem

UWorldSubsystem. Retrieve it with Get World Subsystem and the SDF Destruction Subsystem class.

FunctionKindSignature
ConfigureBudgetLimitsCallable(FSDFDestructionBudgetLimits NewLimits)
GetBudgetLimitsPure() -> FSDFDestructionBudgetLimits
GetBudgetStatsPure() -> FSDFDestructionBudgetStats
ResetBudgetStatisticsCallable()
GetActiveDebrisCountPure() -> int32
ApplyRadialDestructionCallable, display name Apply SDF Radial Destruction(FSDFRadialDestructionRequest Request) -> FSDFRadialDestructionResult
CalculateRadialFalloffMultiplierPure, static(float Distance, float Radius, ESDFRadialFalloff Falloff, float MinimumFalloffMultiplier) -> float
CalculateRadialTargetSeedPure, static(int32 AggregateSeed, int32 StableTargetIndex) -> int32
CalculatePropagationSeedPure, static(int32 ParentSeed, uint8 SourceDepth, AActor* SourceActor) -> int32
GetLastPropagationChainResultPure() -> FSDFPropagationChainResult
GetAudioStatsPure() -> FSDFDestructionAudioStats
GetLastAudioRequestPure() -> FSDFDestructionAudioRequest
ResetAudioStatisticsCallable()
GetVFXStatsPure() -> FSDFDestructionVFXStats
GetLastVFXRequestPure() -> FSDFDestructionVFXRequest
ResetVFXStatisticsCallable()
DelegateParameters
OnPropagationChainCompletedFSDFPropagationChainResult Result
OnDestructionAudioRequestedFSDFDestructionAudioRequest Request
OnDestructionVFXRequestedFSDFDestructionVFXRequest Request

USDFMeleeHitSenderComponent

FunctionKindSignature
BeginMeleeSwingCallable, Begin SDF Melee Swing(int32 RequestedSwingId = -1) -> int32
EndMeleeSwingCallable, End SDF Melee Swing()
SendMeleeHitCallable, Send SDF Melee Hit(AActor* TargetActor, FHitResult HitResult, FVector AttackDirection, AController* InstigatorController, AActor* DamageCauser, UObject* Weapon, int32 RandomSeed = -1) -> FSDFMeleeDeliveryResult
IsMeleeSwingActivePure() -> bool
GetActiveSwingIdPure() -> int32

Property HitSettings (FSDFMeleeHitSettings), delegate OnMeleeHitDelivered (FSDFMeleeDeliveryResult).

USDFCollisionHitSenderComponent

FunctionKindSignature
BeginCollisionWindowCallable, Begin SDF Collision Window(int32 RequestedWindowId = -1) -> int32
EndCollisionWindowCallable, End SDF Collision Window()
SendCollisionHitCallable, Send SDF Collision Hit(AActor* TargetActor, FHitResult HitResult, FVector SourceVelocity, float Damage, ESDFDestructionPower DestructionPower, AController* InstigatorController, AActor* DamageCauser, UObject* SourceObject, int32 RandomSeed = -1) -> FSDFCollisionDeliveryResult
IsCollisionWindowActivePure() -> bool
GetActiveCollisionWindowIdPure() -> int32

Property HitSettings (FSDFCollisionHitSettings), delegate OnCollisionHitDelivered (FSDFCollisionDeliveryResult).

USDFProjectileHitSenderComponent

FunctionKindSignature
SendProjectileHitCallable, Send SDF Projectile Hit(AActor* TargetActor, FHitResult HitResult, FVector ProjectileVelocity, AController* InstigatorController, AActor* DamageCauser, UObject* ProjectileObject, int32 RandomSeed = -1) -> FSDFProjectileDeliveryResult
ResetProjectileImpactsCallable, Reset SDF Projectile Impacts()
SetProjectileProfileCallable(USDFProjectileHitProfile* NewProfile)
GetProjectileProfilePure() -> USDFProjectileHitProfile*

Property ProjectileProfile (USDFProjectileHitProfile*), delegate OnProjectileHitDelivered (FSDFProjectileDeliveryResult).

USDFProjectileHitProfile

UPrimaryDataAsset. Properties: Damage, DestructionPower, ImpulseStrength, ImpulsePerSpeedUnit, MaximumImpulseStrength, DamageType, GameplayTags, bSuppressRepeatedActors.

ASDFDestructibleActor

Blueprintable convenience Actor implementing ISDFDestructibleInterface.

FunctionKindReturns
GetDestructibleComponentPureUSDFDestructibleComponent*
GetIntactMeshComponentPureUStaticMeshComponent*
GetLootSpawnPointPureUSceneComponent*

Components: SceneRoot, IntactMeshComponent, LootSpawnPoint, DestructibleComponent.

When its effective physics mode is Simulated, this Actor re-roots itself at BeginPlay — the intact mesh becomes the root, world transforms are kept — in the running world only. The Blueprint asset is not modified.

ASDFPhysicsDestructibleActor

Blueprintable subclass of ASDFDestructibleActor, used as the parent of new Simulated generations. The intact Static Mesh is the Actor’s root and its own collider; the mesh does not simulate in the editor, and the destruction profile turns simulation on at BeginPlay. It exposes the same functions as ASDFDestructibleActor. See Intact physics and fall damage.

ASDFGlassCompositeActor

The frame-plus-panes Actor published by the Glass authoring path for multi-material sources. All accessors are pure:

FunctionKindReturns
GetPanelCountPureint32
GetPanelComponentPureUStaticMeshComponent* (by pane index)
GetPanelDestructiblePureUSDFDestructibleComponent* (by pane index)
GetFrameComponentPureUStaticMeshComponent* — the unbreakable frame

Read-only properties: FrameMesh, PanelMeshes, PanelProfile. See Runtime glass fracture.

ISDFDestructibleInterface

Blueprint-implementable interface. All four are BlueprintNativeEvent and BlueprintCallable:

FunctionSignature
CanReceiveDestructionHit(FSDFDestructionHit Hit) const -> bool
ReceiveDestructionHit(FSDFDestructionHit Hit) -> FSDFDestructionResult
CanDestroyFromHit(FSDFDestructionHit Hit) const -> bool
GetDestructionState() const -> ESDFDestructionState

Enumerations

EnumValues
ESDFDestructionStateIntact, Damaged, Breaking, Destroyed, CleaningUp, Disabled
ESDFDestructionPowerNone (0), VeryLight (1), Light (2), Medium (3), Heavy (4), Massive (5)
ESDFDestructionModeNone, SwapAndScatter, GeometryCollection, Glass
ESDFDestructionOutcomeIgnored, Rejected, Reacted, Damaged, Destroyed, AlreadyDestroyed, Disabled, InvalidConfiguration
ESDFAudioEventLightImpact, HeavyImpact, Break, DebrisImpact
ESDFVFXEventLightImpact, HeavyImpact, Break, DebrisImpact, Custom
ESDFRadialFalloffConstant, Linear
ESDFLootModeDisabled, ExternalOnly, SpawnLoot, RevealExistingActor
ESDFIntactPhysicsModeKeepExisting (display Keep Existing), Static, Simulated
ESDFIntactPhysicsOverrideUseProfile, ForceStatic, ForceSimulated
ESDFIntactPhysicsStatusNotApplied, KeptExisting, AppliedStatic, AppliedSimulated, RefusedNoIntact, RefusedIntactNotRoot, RefusedMultipleDestructibles, RefusedNoSimpleCollision, RefusedComplexAsSimple, RefusedByPhysicsEngine

A landing that deals fall damage carries the native gameplay tag SDF.Source.Collision.Fall on its FSDFDestructionHit.

Structures

StructurePurpose
FSDFDestructionHitThe hit payload sent to a destructible
FSDFDestructionResultThe explicit answer returned by a destructible
FSDFDebrisEntryOne bounded debris definition
FSDFGlassFractureSettingsRuntime glass crack pattern, shard physics and cleanup
FSDFDestructionBudgetLimitsWorld-level presentation limits
FSDFDestructionBudgetStatsRead-only budget diagnostics
FSDFMeleeHitSettings / FSDFMeleeDeliveryResultMelee sender configuration and result
FSDFCollisionHitSettings / FSDFCollisionDeliveryResultCollision sender configuration and result
FSDFProjectileDeliveryResultProjectile sender result
FSDFRadialDestructionRequest / FSDFRadialTargetResult / FSDFRadialDestructionResultRadial destruction
FSDFPropagationHitResult / FSDFPropagationChainResultChain propagation diagnostics
FSDFWeightedSound / FSDFDestructionAudioRequest / FSDFDestructionAudioStatsAudio
FSDFWeightedNiagaraSystem / FSDFDestructionVFXRequest / FSDFDestructionVFXStatsVFX
FSDFHitReactionRequestNon-breaking reaction request
FSDFDamageStage / FSDFDamageStageChangeDamage stages
FSDFWeightedDecal / FSDFDecalRequestImpact decals
FSDFWeightedLootActor / FSDFLootRequestLoot

Field-by-field descriptions are on the topic pages: the hit payload in Destruction hit, presentation payloads in Audio and Niagara / VFX, radial in Radial destruction.

Last updated: 2026-09-15

Type to search titles, sections and keywords.