Weaponry Assembly System
WAS
Loading...
Searching...
No Matches
UWeaponComponent Class Reference

#include <WeaponComponent.h>

+ Inheritance diagram for UWeaponComponent:
+ Collaboration diagram for UWeaponComponent:

Public Member Functions

void BuildAsset (const UWeaponAsset *Asset)
 
FORCEINLINE void CancelReload ()
 
bool CanTrigger () const
 
virtual bool CanTrigger_Implementation () const
 
void Clean ()
 
FORCEINLINE void ClearCache () const
 
 DECLARE_FUNCTION (execSetAmmoSource)
 
 DECLARE_FUNCTION (execSetAmmoSourceFromMap)
 
FORCEINLINE void EndReload ()
 
void EnsureHasCharacteristics ()
 
void EnterTrigger ()
 
FORCEINLINE bool ExistSlot (FGameplayTag slot) const
 
void ExitTrigger ()
 
USceneComponent * FindCachedSocket (FName Socket) const
 
USceneComponent * FindSocket (FName Socket) const
 
void GenerateInitializationData (FWeaponInitializationData &Data)
 
FORCEINLINE int32 GetAmmoInMagazine (int32 Fallback=0) const
 
FORCEINLINE int32 GetAmmoInMagazineOrSource () const
 
FORCEINLINE int32 GetAmmoInSource (int32 Fallback=0) const
 
FORCEINLINE int32 GetAmmoInUse () const
 
FORCEINLINE int32 GetAmmoLoosePerTrigger () const
 
FORCEINLINE int32 GetAmmoSource (const int32 Fallback=int32()) const
 
template<typename T >
FORCEINLINE T GetAmmoSource (const T Fallback=T()) const
 
FORCEINLINE TEnumAsByte< EAmmoType > GetAmmoType () const
 
FORCEINLINE uint8 GetBurstTriggers () const
 
USceneComponent * GetCachedTaggedComponent (FName Tag) const
 
FORCEINLINE UWeaponAssetDefaultCharacteristicsGetCharacteristics () const
 
FORCEINLINE UWeaponAssetCharacteristicsGetCharacteristicsAsClass (TSubclassOf< UWeaponAssetCharacteristics > CharacteristicsClass) const
 
FORCEINLINE uint8 GetCurrentBurstIndex () const
 
FORCEINLINE bool GetCustomReloadExecutionTiming () const
 
FORCEINLINE bool GetCustomTriggerExecutionTiming () const
 
FORCEINLINE bool GetCustomUnjamExecutionTiming () const
 
FORCEINLINE const UWeaponAssetDefaultCharacteristicsGetDefaultCharacteristics () const
 
FWeaponExecutionContext GetExecutionContext (bool bRefreshNotifications) const
 
FORCEINLINE uint8 GetIterationReloadStepAmount () const
 
FORCEINLINE float GetJamProbability () const
 
FORCEINLINE bool GetLooseExtraAmmoOnReload () const
 
FORCEINLINE int32 GetMagazineAmmo (const int32 Fallback=int32()) const
 
template<typename T >
FORCEINLINE T GetMagazineAmmo (const T Fallback=T()) const
 
FORCEINLINE int32 GetMagazineCapability () const
 
int32 GetMagazineRemainingCapability () const
 
FORCEINLINE FGameplayTag GetModificationAtSlot (FGameplayTag Slot) const
 
FORCEINLINE bool GetReloadByMagazine () const
 
FORCEINLINE int32 GetSourceAmmo32 () const
 
FORCEINLINE int64 GetSourceAmmo64 () const
 
FORCEINLINE uint8 GetSourceAmmoByte () const
 
USceneComponent * GetTaggedComponent (FName Tag) const
 
FORCEINLINE bool GetTriggerIfAmmoLessThanRequired () const
 
FORCEINLINE ETriggerMode GetTriggerMode () const
 
FORCEINLINE float GetTriggerRate () const
 
FORCEINLINE float GetTriggerRateSec () const
 
FORCEINLINE bool GetUsesAmmo () const
 
FORCEINLINE bool GetUsesMagazine () const
 
const UWeaponAssetGetWeaponAsset () const
 
FWeaponModifications GetWeaponDefaultModifications () const
 
const FWeaponModificationsGetWeaponModifications () const
 
FWeaponModifications GetWeaponModificationsBP () const
 
FORCEINLINE bool HasAmmo () const
 
FORCEINLINE bool HasCharacteristics () const
 
bool HasEnoughAmmoToTrigger () const
 
bool HasTaggedComponent (FName Tag) const
 
void Init ()
 
void InitializeWeapon (const struct FWeaponInitializationData &Data, bool bRecallDelegates=false, bool MoveValues=false)
 
FORCEINLINE bool IsCoolingDown () const
 
FORCEINLINE bool IsGenerating () const
 
FORCEINLINE bool IsJammed () const
 
FORCEINLINE bool IsReloading () const
 
FORCEINLINE bool IsTriggering () const
 
bool IsValid () const
 
void OnUseAmmoUpdated (bool previous, bool current)
 
void OnUseMagazineUpdated (bool previous, bool current)
 
void RebuildAsset ()
 
void Reload ()
 
void ReloadLogic ()
 
void ReloadLogicManual (int32 AddAmmo)
 
FORCEINLINE bool RequiresAmmoToTrigger () const
 
void SetAmmoSource (UPARAM(Ref) int32 &Source, bool ReturnRemainingAmmo=true)
 
void SetAmmoSourceFromMap (const TMap< int32, int32 > &Map, const int32 &InKey, bool ReturnRemainingAmmo=true)
 
void SetAmmoSourceRaw (void *Source, size_t typeSize, bool bSigned, bool bReturnRemaining)
 
void SetCharacteristics (UWeaponAssetDefaultCharacteristics *NewCharacteristics)
 
void SetCooldown ()
 
void SetCustomCooldown (float Cooldown)
 
bool SetSingleModification (FGameplayTag Modification, bool bForceUpdate=true)
 
void SetWeaponAsset (const UWeaponAsset *NewAsset)
 
void SetWeaponJammed (bool Jammed)
 
bool SetWeaponModifications (const FWeaponModifications &newModifications, bool bForceUpdate=true)
 
void SolveMagazineResize (int32 From, int32 To)
 
virtual void Trigger (bool isFirst=true)
 
virtual bool TriggerModeAllowNextTrigger () const
 
void TryJamWeapon ()
 
FORCEINLINE void UnjamWeapon ()
 
void UpdateMesh ()
 

Static Public Member Functions

static FORCEINLINE constexpr bool IsPlaying ()
 

Public Attributes

TObjectPtr< UWeaponAssetDefaultCharacteristicsCharacteristics
 

Protected Member Functions

void AttachCreatedComponents (const TArray< USceneComponent * > &PrimitiveComponents)
 
virtual void BeginPlay () override
 
virtual void EndPlay (const EEndPlayReason::Type EndPlayReason) override
 
FString GetWeaponAssetName () const
 
void OnEventBeginReload ()
 
virtual void OnEventBeginReload_Implementation ()
 
void OnEventCooledDown ()
 
virtual void OnEventCooledDown_Implementation ()
 
void OnEventFinishReload ()
 
virtual void OnEventFinishReload_Implementation ()
 
void OnEventJam ()
 
virtual void OnEventJam_Implementation ()
 
void OnEventReload ()
 
virtual void OnEventReload_Implementation ()
 
void OnEventReloadFailed ()
 
virtual void OnEventReloadFailed_Implementation ()
 
void OnEventTriggered ()
 
virtual void OnEventTriggered_Implementation ()
 
void OnEventTriggerFailed ()
 
virtual void OnEventTriggerFailed_Implementation ()
 
void OnEventUnJam ()
 
virtual void OnEventUnJam_Implementation ()
 
void OnEventWeaponBuild ()
 
virtual void OnEventWeaponBuild_Implementation ()
 
virtual void OnRegister () override
 
void ResolveAmmoHandling ()
 

Protected Attributes

FIntegerPtr AmmoInMagazine
 
FIntegerPtr AmmoSource
 
uint8 bCancelReload:1 = false
 
uint8 bIsTriggering:1 = false
 
uint8 bJammed:1 = false
 
uint8 bReloading:1 = false
 
int32 BurstIndex = 0
 
TMap< FName, TSoftObjectPtr< USceneComponent > > CachedSockets
 
TMap< FName, TSoftObjectPtr< USceneComponent > > CachedTags
 
uint8 isGenerating:1 = false
 
FTriggered OnBeginReload
 
FCooledDown OnCooledDown
 
FTriggered OnFinishReload
 
FTriggered OnJam
 
FTriggered OnReload
 
FTriggered OnReloadFailed
 
FTriggered OnTriggered
 
FTriggered OnTriggerFailed
 
FTriggered OnUnJam
 
FBuilded OnWeaponBuild
 
FTimerHandle TriggerCooldown
 
FTimerHandle TriggerTimer
 
TObjectPtr< const UWeaponAssetWeaponAsset
 

Detailed Description

UWeaponComponent handles all weapon mechanics: triggering, reloading, ammo management, jamming, and burst fire.

Key Features:

  • Ammo System: Supports both magazine and direct ammo source (belt-fed, etc.)
  • Trigger Modes: Single, auto, and burst fire
  • Jamming: Probabilistic weapon jams with cooldown-based unjam
  • Reload: Magazine-based or direct ammo replenishment
  • Building: Dynamic weapon generation from asset specs
  • Modification Slots: Supports modular weapon attachments

The component requires a UWeaponAsset and UWeaponAssetDefaultCharacteristics to function. Generated mesh components are automatically updated and attached.

Member Function Documentation

◆ AttachCreatedComponents()

void UWeaponComponent::AttachCreatedComponents ( const TArray< USceneComponent * > & PrimitiveComponents)
protected

◆ BeginPlay()

void UWeaponComponent::BeginPlay ( )
overrideprotectedvirtual

◆ BuildAsset()

void UWeaponComponent::BuildAsset ( const UWeaponAsset * Asset)

◆ CancelReload()

FORCEINLINE void UWeaponComponent::CancelReload ( )
inline

◆ CanTrigger()

bool UWeaponComponent::CanTrigger ( ) const

◆ CanTrigger_Implementation()

bool UWeaponComponent::CanTrigger_Implementation ( ) const
virtual

◆ Clean()

void UWeaponComponent::Clean ( )

◆ ClearCache()

FORCEINLINE void UWeaponComponent::ClearCache ( ) const
inline

◆ DECLARE_FUNCTION() [1/2]

UWeaponComponent::DECLARE_FUNCTION ( execSetAmmoSource )

◆ DECLARE_FUNCTION() [2/2]

UWeaponComponent::DECLARE_FUNCTION ( execSetAmmoSourceFromMap )

◆ EndPlay()

void UWeaponComponent::EndPlay ( const EEndPlayReason::Type EndPlayReason)
overrideprotectedvirtual

◆ EndReload()

FORCEINLINE void UWeaponComponent::EndReload ( )
inline

◆ EnsureHasCharacteristics()

void UWeaponComponent::EnsureHasCharacteristics ( )

Ensures the weapon has valid characteristics data. If missing, fetches defaults from the current weapon asset.

◆ EnterTrigger()

void UWeaponComponent::EnterTrigger ( )

◆ ExistSlot()

FORCEINLINE bool UWeaponComponent::ExistSlot ( FGameplayTag slot) const
inline

◆ ExitTrigger()

void UWeaponComponent::ExitTrigger ( )

◆ FindCachedSocket()

USceneComponent * UWeaponComponent::FindCachedSocket ( FName Socket) const

◆ FindSocket()

USceneComponent * UWeaponComponent::FindSocket ( FName Socket) const

◆ GenerateInitializationData()

void UWeaponComponent::GenerateInitializationData ( FWeaponInitializationData & Data)

◆ GetAmmoInMagazine()

FORCEINLINE int32 UWeaponComponent::GetAmmoInMagazine ( int32 Fallback = 0) const
inline

◆ GetAmmoInMagazineOrSource()

FORCEINLINE int32 UWeaponComponent::GetAmmoInMagazineOrSource ( ) const
inline

◆ GetAmmoInSource()

FORCEINLINE int32 UWeaponComponent::GetAmmoInSource ( int32 Fallback = 0) const
inline

◆ GetAmmoInUse()

FORCEINLINE int32 UWeaponComponent::GetAmmoInUse ( ) const
inline

◆ GetAmmoLoosePerTrigger()

FORCEINLINE int32 UWeaponComponent::GetAmmoLoosePerTrigger ( ) const
inline

◆ GetAmmoSource() [1/2]

FORCEINLINE int32 UWeaponComponent::GetAmmoSource ( const int32 Fallback = int32()) const
inline

◆ GetAmmoSource() [2/2]

template<typename T >
FORCEINLINE T UWeaponComponent::GetAmmoSource ( const T Fallback = T()) const
inline

◆ GetAmmoType()

FORCEINLINE TEnumAsByte< EAmmoType > UWeaponComponent::GetAmmoType ( ) const
inline

◆ GetBurstTriggers()

FORCEINLINE uint8 UWeaponComponent::GetBurstTriggers ( ) const
inline

◆ GetCachedTaggedComponent()

USceneComponent * UWeaponComponent::GetCachedTaggedComponent ( FName Tag) const

◆ GetCharacteristics()

FORCEINLINE UWeaponAssetDefaultCharacteristics * UWeaponComponent::GetCharacteristics ( ) const
inline

◆ GetCharacteristicsAsClass()

FORCEINLINE UWeaponAssetCharacteristics * UWeaponComponent::GetCharacteristicsAsClass ( TSubclassOf< UWeaponAssetCharacteristics > CharacteristicsClass) const
inline

◆ GetCurrentBurstIndex()

FORCEINLINE uint8 UWeaponComponent::GetCurrentBurstIndex ( ) const
inline

◆ GetCustomReloadExecutionTiming()

FORCEINLINE bool UWeaponComponent::GetCustomReloadExecutionTiming ( ) const
inline

◆ GetCustomTriggerExecutionTiming()

FORCEINLINE bool UWeaponComponent::GetCustomTriggerExecutionTiming ( ) const
inline

◆ GetCustomUnjamExecutionTiming()

FORCEINLINE bool UWeaponComponent::GetCustomUnjamExecutionTiming ( ) const
inline

◆ GetDefaultCharacteristics()

const UWeaponAssetDefaultCharacteristics * UWeaponComponent::GetDefaultCharacteristics ( ) const

◆ GetExecutionContext()

FWeaponExecutionContext UWeaponComponent::GetExecutionContext ( bool bRefreshNotifications) const

Generates an execution context for fired projectiles/effects.

Parameters
bRefreshNotificationsIf true, updates cached socket and tag data before generation
Returns
Context containing component references and metadata for weapon actions

◆ GetIterationReloadStepAmount()

FORCEINLINE uint8 UWeaponComponent::GetIterationReloadStepAmount ( ) const
inline

◆ GetJamProbability()

FORCEINLINE float UWeaponComponent::GetJamProbability ( ) const
inline

◆ GetLooseExtraAmmoOnReload()

FORCEINLINE bool UWeaponComponent::GetLooseExtraAmmoOnReload ( ) const
inline

◆ GetMagazineAmmo() [1/2]

FORCEINLINE int32 UWeaponComponent::GetMagazineAmmo ( const int32 Fallback = int32()) const
inline

◆ GetMagazineAmmo() [2/2]

template<typename T >
FORCEINLINE T UWeaponComponent::GetMagazineAmmo ( const T Fallback = T()) const
inline

◆ GetMagazineCapability()

FORCEINLINE int32 UWeaponComponent::GetMagazineCapability ( ) const
inline

◆ GetMagazineRemainingCapability()

int32 UWeaponComponent::GetMagazineRemainingCapability ( ) const
inline

Calculates unused magazine capacity.

◆ GetModificationAtSlot()

FORCEINLINE FGameplayTag UWeaponComponent::GetModificationAtSlot ( FGameplayTag Slot) const
inline

◆ GetReloadByMagazine()

FORCEINLINE bool UWeaponComponent::GetReloadByMagazine ( ) const
inline

◆ GetSourceAmmo32()

FORCEINLINE int32 UWeaponComponent::GetSourceAmmo32 ( ) const
inline

◆ GetSourceAmmo64()

FORCEINLINE int64 UWeaponComponent::GetSourceAmmo64 ( ) const
inline

◆ GetSourceAmmoByte()

FORCEINLINE uint8 UWeaponComponent::GetSourceAmmoByte ( ) const
inline

◆ GetTaggedComponent()

USceneComponent * UWeaponComponent::GetTaggedComponent ( FName Tag) const

◆ GetTriggerIfAmmoLessThanRequired()

FORCEINLINE bool UWeaponComponent::GetTriggerIfAmmoLessThanRequired ( ) const
inline

◆ GetTriggerMode()

FORCEINLINE ETriggerMode UWeaponComponent::GetTriggerMode ( ) const
inline

◆ GetTriggerRate()

FORCEINLINE float UWeaponComponent::GetTriggerRate ( ) const
inline

◆ GetTriggerRateSec()

FORCEINLINE float UWeaponComponent::GetTriggerRateSec ( ) const
inline

◆ GetUsesAmmo()

FORCEINLINE bool UWeaponComponent::GetUsesAmmo ( ) const
inline

◆ GetUsesMagazine()

FORCEINLINE bool UWeaponComponent::GetUsesMagazine ( ) const
inline

◆ GetWeaponAsset()

const UWeaponAsset * UWeaponComponent::GetWeaponAsset ( ) const
inline

◆ GetWeaponAssetName()

FString UWeaponComponent::GetWeaponAssetName ( ) const
inlineprotected

◆ GetWeaponDefaultModifications()

FWeaponModifications UWeaponComponent::GetWeaponDefaultModifications ( ) const

◆ GetWeaponModifications()

const FWeaponModifications & UWeaponComponent::GetWeaponModifications ( ) const

◆ GetWeaponModificationsBP()

FWeaponModifications UWeaponComponent::GetWeaponModificationsBP ( ) const
inline

◆ HasAmmo()

FORCEINLINE bool UWeaponComponent::HasAmmo ( ) const
inline

◆ HasCharacteristics()

FORCEINLINE bool UWeaponComponent::HasCharacteristics ( ) const
inline

◆ HasEnoughAmmoToTrigger()

bool UWeaponComponent::HasEnoughAmmoToTrigger ( ) const

◆ HasTaggedComponent()

bool UWeaponComponent::HasTaggedComponent ( FName Tag) const
inline

◆ Init()

void UWeaponComponent::Init ( )

◆ InitializeWeapon()

void UWeaponComponent::InitializeWeapon ( const struct FWeaponInitializationData & Data,
bool bRecallDelegates = false,
bool MoveValues = false )

◆ IsCoolingDown()

FORCEINLINE bool UWeaponComponent::IsCoolingDown ( ) const
inline

◆ IsGenerating()

FORCEINLINE bool UWeaponComponent::IsGenerating ( ) const
inline

◆ IsJammed()

FORCEINLINE bool UWeaponComponent::IsJammed ( ) const
inline

◆ IsPlaying()

static FORCEINLINE constexpr bool UWeaponComponent::IsPlaying ( )
inlinestaticconstexpr

◆ IsReloading()

FORCEINLINE bool UWeaponComponent::IsReloading ( ) const
inline

◆ IsTriggering()

FORCEINLINE bool UWeaponComponent::IsTriggering ( ) const
inline

◆ IsValid()

bool UWeaponComponent::IsValid ( ) const
inline

◆ OnEventBeginReload()

void UWeaponComponent::OnEventBeginReload ( )
protected

◆ OnEventBeginReload_Implementation()

virtual void UWeaponComponent::OnEventBeginReload_Implementation ( )
inlineprotectedvirtual

◆ OnEventCooledDown()

void UWeaponComponent::OnEventCooledDown ( )
protected

◆ OnEventCooledDown_Implementation()

virtual void UWeaponComponent::OnEventCooledDown_Implementation ( )
inlineprotectedvirtual

◆ OnEventFinishReload()

void UWeaponComponent::OnEventFinishReload ( )
protected

◆ OnEventFinishReload_Implementation()

virtual void UWeaponComponent::OnEventFinishReload_Implementation ( )
inlineprotectedvirtual

◆ OnEventJam()

void UWeaponComponent::OnEventJam ( )
protected

◆ OnEventJam_Implementation()

virtual void UWeaponComponent::OnEventJam_Implementation ( )
inlineprotectedvirtual

◆ OnEventReload()

void UWeaponComponent::OnEventReload ( )
protected

◆ OnEventReload_Implementation()

virtual void UWeaponComponent::OnEventReload_Implementation ( )
inlineprotectedvirtual

◆ OnEventReloadFailed()

void UWeaponComponent::OnEventReloadFailed ( )
protected

◆ OnEventReloadFailed_Implementation()

virtual void UWeaponComponent::OnEventReloadFailed_Implementation ( )
inlineprotectedvirtual

◆ OnEventTriggered()

void UWeaponComponent::OnEventTriggered ( )
protected

◆ OnEventTriggered_Implementation()

virtual void UWeaponComponent::OnEventTriggered_Implementation ( )
inlineprotectedvirtual

◆ OnEventTriggerFailed()

void UWeaponComponent::OnEventTriggerFailed ( )
protected

◆ OnEventTriggerFailed_Implementation()

virtual void UWeaponComponent::OnEventTriggerFailed_Implementation ( )
inlineprotectedvirtual

◆ OnEventUnJam()

void UWeaponComponent::OnEventUnJam ( )
protected

◆ OnEventUnJam_Implementation()

virtual void UWeaponComponent::OnEventUnJam_Implementation ( )
inlineprotectedvirtual

◆ OnEventWeaponBuild()

void UWeaponComponent::OnEventWeaponBuild ( )
protected

◆ OnEventWeaponBuild_Implementation()

virtual void UWeaponComponent::OnEventWeaponBuild_Implementation ( )
inlineprotectedvirtual

◆ OnRegister()

void UWeaponComponent::OnRegister ( )
overrideprotectedvirtual

◆ OnUseAmmoUpdated()

void UWeaponComponent::OnUseAmmoUpdated ( bool previous,
bool current )

Reacts to runtime toggle of ammo system. Clears/initializes ammo tracking accordingly. Only works if Characteristics derives from UWeaponAssetDefaultCharacteristics.

◆ OnUseMagazineUpdated()

void UWeaponComponent::OnUseMagazineUpdated ( bool previous,
bool current )

Reacts to runtime toggle of magazine system. Clears/initializes magazine tracking accordingly. Only works if Characteristics derives from UWeaponAssetDefaultCharacteristics.

◆ RebuildAsset()

void UWeaponComponent::RebuildAsset ( )

◆ Reload()

void UWeaponComponent::Reload ( )

◆ ReloadLogic()

void UWeaponComponent::ReloadLogic ( )

◆ ReloadLogicManual()

void UWeaponComponent::ReloadLogicManual ( int32 AddAmmo)

◆ RequiresAmmoToTrigger()

FORCEINLINE bool UWeaponComponent::RequiresAmmoToTrigger ( ) const
inline

◆ ResolveAmmoHandling()

void UWeaponComponent::ResolveAmmoHandling ( )
protected

Initializes ammo system delegate connections and validates ammo/magazine configuration. Called during component lifecycle to ensure ammo tracking operates correctly.

◆ SetAmmoSource()

void UWeaponComponent::SetAmmoSource ( UPARAM(Ref) int32 & Source,
bool ReturnRemainingAmmo = true )

◆ SetAmmoSourceFromMap()

void UWeaponComponent::SetAmmoSourceFromMap ( const TMap< int32, int32 > & Map,
const int32 & InKey,
bool ReturnRemainingAmmo = true )

Binds a map value as the ammo source. Necessary because containers don't support reference retrieval in Blueprints.

CRITICAL: Map values must be reinterpretable as int64 (e.g., int32, enum, uint8, uint16, not strings or complex types). Other types cause undefined behavior and crashes.

Parameters
MapSource map to read from
InKeyKey to find in map; must exist or binding fails
ReturnRemainingAmmoIf true, writes unconsumed ammo back to previous source before rebinding
Note
Map nature means that pointer stability isn't guaranteed. If the map is modified (keys added/removed), the binding may break or point to wrong data. Use with caution and revalidate after map changes.

◆ SetAmmoSourceRaw()

void UWeaponComponent::SetAmmoSourceRaw ( void * Source,
size_t typeSize,
bool bSigned,
bool bReturnRemaining )

Low-level ammo source binding. Maps external variable to weapon ammo tracking.

Parameters
SourcePointer to external integer variable to use as ammo source
typeSizeSize of the int type (1, 2, 4, 8 bytes)
bSignedWhether the int is signed or unsigned
bReturnRemainingIf true, remaining ammo is written back to the previous source

◆ SetCharacteristics()

void UWeaponComponent::SetCharacteristics ( UWeaponAssetDefaultCharacteristics * NewCharacteristics)
inline

◆ SetCooldown()

void UWeaponComponent::SetCooldown ( )

◆ SetCustomCooldown()

void UWeaponComponent::SetCustomCooldown ( float Cooldown)

◆ SetSingleModification()

bool UWeaponComponent::SetSingleModification ( FGameplayTag Modification,
bool bForceUpdate = true )

Updates a modificator in a specific slot. Must be overriden in order to work add features.

Parameters
SlotThe slot where the modification is applied.
ModificationThe modification to apply.
bForceUpdateForces to update all generation even if no changes were made
Returns
True if the modification was changed

◆ SetWeaponAsset()

void UWeaponComponent::SetWeaponAsset ( const UWeaponAsset * NewAsset)

◆ SetWeaponJammed()

void UWeaponComponent::SetWeaponJammed ( bool Jammed)

◆ SetWeaponModifications()

bool UWeaponComponent::SetWeaponModifications ( const FWeaponModifications & newModifications,
bool bForceUpdate = true )

Updates all modification to match the input.

Parameters
newModificationsMap containing the new mods and slots.
bForceUpdateForces to update all generation even if no changes were made
Returns
True if any modification was changed

◆ SolveMagazineResize()

void UWeaponComponent::SolveMagazineResize ( int32 From,
int32 To )

Adapts weapon behavior when magazine size changes at runtime. Adjusts ammo counts to stay within new capacity limits. Only works if Characteristics derives from UWeaponAssetDefaultCharacteristics.

◆ Trigger()

void UWeaponComponent::Trigger ( bool isFirst = true)
virtual

◆ TriggerModeAllowNextTrigger()

bool UWeaponComponent::TriggerModeAllowNextTrigger ( ) const
virtual

Validates if the current firing mode permits another trigger based on burst state. For single/auto modes: always true. For burst: true if burst index hasn't reached max.

◆ TryJamWeapon()

void UWeaponComponent::TryJamWeapon ( )

◆ UnjamWeapon()

FORCEINLINE void UWeaponComponent::UnjamWeapon ( )
inline

◆ UpdateMesh()

void UWeaponComponent::UpdateMesh ( )

Member Data Documentation

◆ AmmoInMagazine

FIntegerPtr UWeaponComponent::AmmoInMagazine
protected

Reference to magazine ammo storage when UsesMagazine is enabled. Tracks rounds currently loaded in the magazine, separate from source ammo.

◆ AmmoSource

FIntegerPtr UWeaponComponent::AmmoSource
protected

Reference to external ammo storage (belt-fed, backpack, etc.). Must be bound via SetAmmoSource() or SetAmmoSourceRaw(). Do not rebind accidentally—consumption updates write back to the original source.

◆ bCancelReload

uint8 UWeaponComponent::bCancelReload
protected

◆ bIsTriggering

uint8 UWeaponComponent::bIsTriggering
protected

◆ bJammed

uint8 UWeaponComponent::bJammed
protected

◆ bReloading

uint8 UWeaponComponent::bReloading
protected

◆ BurstIndex

int32 UWeaponComponent::BurstIndex = 0
protected

Index for burst fire mode.

◆ CachedSockets

TMap<FName, TSoftObjectPtr<USceneComponent> > UWeaponComponent::CachedSockets
mutableprotected

◆ CachedTags

TMap<FName, TSoftObjectPtr<USceneComponent> > UWeaponComponent::CachedTags
mutableprotected

◆ Characteristics

TObjectPtr<UWeaponAssetDefaultCharacteristics> UWeaponComponent::Characteristics

◆ isGenerating

uint8 UWeaponComponent::isGenerating
protected

◆ OnBeginReload

FTriggered UWeaponComponent::OnBeginReload
protected

Delegate for when the weapon begins reloading.

◆ OnCooledDown

FCooledDown UWeaponComponent::OnCooledDown
protected

Delegate for when the weapon has cooled down.

◆ OnFinishReload

FTriggered UWeaponComponent::OnFinishReload
protected

Delegate for when the weapon finishes reloading.

◆ OnJam

FTriggered UWeaponComponent::OnJam
protected

Delegate for when the weapon jams.

◆ OnReload

FTriggered UWeaponComponent::OnReload
protected

Delegate for when the weapon is reloading.

◆ OnReloadFailed

FTriggered UWeaponComponent::OnReloadFailed
protected

Delegate for when the weapon reload fails.

◆ OnTriggered

FTriggered UWeaponComponent::OnTriggered
protected

Delegate for when the weapon is triggered.

◆ OnTriggerFailed

FTriggered UWeaponComponent::OnTriggerFailed
protected

Delegate for when the weapon trigger fails.

◆ OnUnJam

FTriggered UWeaponComponent::OnUnJam
protected

Delegate for when the weapon unjam.

◆ OnWeaponBuild

FBuilded UWeaponComponent::OnWeaponBuild
protected

◆ TriggerCooldown

FTimerHandle UWeaponComponent::TriggerCooldown
protected

Tracks trigger rate cooldown between shots. When active, IsTriggering() returns false and shots are blocked.

◆ TriggerTimer

FTimerHandle UWeaponComponent::TriggerTimer
protected

For custom trigger timing—delays between pull and projectile spawn. Only used if CustomTriggerExecutionTiming is enabled in characteristics.

◆ WeaponAsset

TObjectPtr<const UWeaponAsset> UWeaponComponent::WeaponAsset
protected

The weapon asset associated with this component.