A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
GS_GunTools.h
Go to the documentation of this file.
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Engine/Engine.h"
7#include "VRGripScriptBase.h"
9#include "GS_GunTools.generated.h"
10
12
13// Event thrown when we enter into virtual stock mode
14DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FVRVirtualStockModeChangedSignature, bool, IsVirtualStockEngaged);
15
16// Global settings for this player
17USTRUCT(BlueprintType, Category = "GunSettings")
18struct VREXPANSIONPLUGIN_API FBPVirtualStockSettings
19{
21public:
22
23 // *Global Value* Should we auto snap to the virtual stock by a set distance
24 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
25 bool bUseDistanceBasedStockSnapping;
26
27 // *Global Value* The distance before snapping to the stock / unsnapping
28 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
29 float StockSnapDistance;
30
31 // *Global Value* The distance from the edge of the stock snap distance where it will be at 100% influence
32 // Prior to this threshold being hit it will lerp from standard hold to the virtual stock version.
33 // A value of 0.0f will leave it always off
34 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock", meta = (ClampMin = "0.00", UIMin = "0.00"))
35 float StockSnapLerpThreshold;
36
37 // Current lerp value of the stock from zero influence to full influence
38 UPROPERTY(BlueprintReadOnly, Category = "VirtualStock")
39 float StockLerpValue;
41 // *Global Value* An offset to apply to the HMD location to be considered the neck / mount pivot
42 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
43 FVector_NetQuantize100 StockSnapOffset;
44
45 // *Global Value* If we want to have the stock location adjust to follow the primary hands Z value
46 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
47 bool bAdjustZOfStockToPrimaryHand;
48
49 // *Global Value* Whether we should lerp the location of the rearmost (stock side) hand, mostly used for snipers.
50 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock|Smoothing")
51 bool bSmoothStockHand;
52
53 // *Global Value* How much influence the virtual stock smoothing should have, 0.0f is zero smoothing, 1.0f is full smoothing, you should test with full smoothing to get the amount you
54 // want and then set the smoothing value up until it feels right between the fully smoothed and unsmoothed values.
55 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock|Smoothing", meta = (editcondition = "bSmoothStockHand", ClampMin = "0.00", UIMin = "0.00", ClampMax = "1.00", UIMax = "1.00"))
56 float SmoothingValueForStock;
58 // Used to smooth filter the virtual stocks primary hand location
59 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GunSettings|VirtualStock|Smoothing")
60 FBPEuroLowPassFilterTrans StockHandSmoothing;
61
62 // Draw debug elements showing the virtual stock location and angles to interacting components
63 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GunSettings|VirtualStock|Debug")
64 bool bDebugDrawVirtualStock;
66 void CopyFrom(FBPVirtualStockSettings & B)
67 {
68 bUseDistanceBasedStockSnapping = B.bUseDistanceBasedStockSnapping;
69 StockSnapDistance = B.StockSnapDistance;
70 StockSnapLerpThreshold = B.StockSnapLerpThreshold;
71 StockSnapOffset = B.StockSnapOffset;
72 bAdjustZOfStockToPrimaryHand = B.bAdjustZOfStockToPrimaryHand;
73 bSmoothStockHand = B.bSmoothStockHand;
74 SmoothingValueForStock = B.SmoothingValueForStock;
75 StockHandSmoothing = B.StockHandSmoothing;
76 }
77
79 {
80 StockSnapOffset = FVector(0.f, 0.f, 0.f);
81 bAdjustZOfStockToPrimaryHand = true;
82 StockSnapDistance = 35.f;
83 StockSnapLerpThreshold = 20.0f;
84 StockLerpValue = 0.0f;
85 bUseDistanceBasedStockSnapping = true;
86 SmoothingValueForStock = 0.0f;
87 bSmoothStockHand = false;
88
89 // Speed up the lerp on fast movements for this
90 StockHandSmoothing.DeltaCutoff = 20.0f;
91 StockHandSmoothing.MinCutoff = 5.0f;
92
93 bDebugDrawVirtualStock = false;
94 }
95};
96
97USTRUCT(BlueprintType, Category = "VRExpansionLibrary")
98struct VREXPANSIONPLUGIN_API FGunTools_AdvSecondarySettings
99{
101public:
102
103 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings")
104 bool bUseAdvancedSecondarySettings;
105
106 // Scaler used for handling the smoothing amount, 0.0f is zero smoothing, 1.0f is full smoothing, you should test with full smoothing to get the amount you
107 // want and then set the smoothing value up until it feels right between the fully smoothed and unsmoothed values.
108 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|Smoothing", meta = (editcondition = "bUseAdvancedSecondarySettings", ClampMin = "0.00", UIMin = "0.00", ClampMax = "1.00", UIMax = "1.00"))
109 float SecondaryGripScaler;
110
111 // If true we will constantly be lerping with the grip scaler instead of only sometimes.
112 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|Smoothing", meta = (editcondition = "bUseAdvancedSecondarySettings"))
113 bool bUseConstantGripScaler;
114
115 // If true will override custom settings for the smoothing values with the global settings in VRSettings
116 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|Smoothing", meta = (editcondition = "bUseAdvancedSecondarySettings"))
117 bool bUseGlobalSmoothingSettings;
118
119 // Used to smooth filter the secondary influence
120 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|Smoothing")
121 FBPEuroLowPassFilter SecondarySmoothing;
122
123 // Whether to scale the secondary hand influence off of distance from grip point
124 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|DistanceInfluence", meta = (editcondition = "bUseAdvancedSecondarySettings"))
125 bool bUseSecondaryGripDistanceInfluence;
126
127 // If true, will use the GripInfluenceDeadZone as a constant value instead of calculating the distance and lerping, lets you define a static influence amount.
128 //UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "SecondaryGripSettings", meta = (editcondition = "bUseSecondaryGripDistanceInfluence"))
129 // bool bUseGripInfluenceDeadZoneAsConstant;
130
131 // Distance from grip point in local space where there is 100% influence
132 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|DistanceInfluence", meta = (editcondition = "bUseSecondaryGripDistanceInfluence", ClampMin = "0.00", UIMin = "0.00", ClampMax = "256.00", UIMax = "256.00"))
133 float GripInfluenceDeadZone;
134
135 // Distance from grip point in local space before all influence is lost on the secondary grip (1.0f - 0.0f influence over this range)
136 // this comes into effect outside of the deadzone
137 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|DistanceInfluence", meta = (editcondition = "bUseSecondaryGripDistanceInfluence", ClampMin = "1.00", UIMin = "1.00", ClampMax = "256.00", UIMax = "256.00"))
138 float GripInfluenceDistanceToZero;
139
141 {
142 bUseAdvancedSecondarySettings = false;
143 SecondaryGripScaler = 0.0f;
144 bUseGlobalSmoothingSettings = true;
145 bUseSecondaryGripDistanceInfluence = false;
146 //bUseGripInfluenceDeadZoneAsConstant(false),
147 GripInfluenceDeadZone = 50.0f;
148 GripInfluenceDistanceToZero = 100.0f;
149 bUseConstantGripScaler = false;
150 }
151};
152
154// A grip script that adds useful fire-arm related features to grips
155// Just adding it to the grippable object provides the features without removing standard
156// Grip features.
157UCLASS(NotBlueprintable, ClassGroup = (VRExpansionPlugin), hideCategories = TickSettings)
158class VREXPANSIONPLUGIN_API UGS_GunTools : public UGS_Default
159{
160 GENERATED_BODY()
161public:
163 UGS_GunTools(const FObjectInitializer& ObjectInitializer);
164
165 virtual void OnGrip_Implementation(UGripMotionControllerComponent * GrippingController, const FBPActorGripInformation & GripInformation) override;
166 virtual void OnSecondaryGrip_Implementation(UGripMotionControllerComponent * Controller, USceneComponent * SecondaryGripComponent, const FBPActorGripInformation & GripInformation) override;
167 virtual void OnBeginPlay_Implementation(UObject* CallingOwner) override;
168 virtual void HandlePrePhysicsHandle(UGripMotionControllerComponent* GrippingController, const FBPActorGripInformation &GripInfo, FBPActorPhysicsHandleInformation* HandleInfo, FTransform& KinPose) override;
169 //virtual void HandlePostPhysicsHandle(UGripMotionControllerComponent* GrippingController, FBPActorPhysicsHandleInformation* HandleInfo) override;
171
172 // The name of the component that is used to orient the weapon along its primary axis
173 // If it does not exist then the weapon is assumed to be X+ facing.
174 // Also used to perform some calculations, make sure it is parented to the gripped object (root component for actors),
175 // and that the X+ vector of the orientation component is facing the forward direction of the weapon (gun tip for guns, ect).
176 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Weapon Settings")
177 FName WeaponRootOrientationComponent;
178 FTransform OrientationComponentRelativeFacing;
179 FQuat StoredRootOffset;
180
181 // (default false) If true will run through the entire simulation that the owning client uses for the gun. If false, does a lighter and more performant approximation.
182 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "GunSettings")
183 bool bUseHighQualityRemoteSimulation;
184
185 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GunSettings")
186 FGunTools_AdvSecondarySettings AdvSecondarySettings;
187
188 // Offset to apply to the pivot (good for centering pivot into the palm ect).
189 // For this to apply to the physical center of mass as well an OrientationComponent needs to be defined
190 // So that we have a valid directional vector to work off of, otherwise the pivot will be in component space and you
191 // will have a harder time aligning it if the weapon is off axis (still works, just less intuitive).
192 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pivot")
193 FVector_NetQuantize100 PivotOffset;
195 UFUNCTION(BlueprintCallable, Category = "VirtualStock")
196 void SetVirtualStockComponent(USceneComponent * NewStockComponent)
197 {
198 VirtualStockComponent = NewStockComponent;
199 }
200
201 UFUNCTION(BlueprintCallable, Category = "VirtualStock")
202 void SetVirtualStockEnabled(bool bAllowVirtualStock)
203 {
204 if (!bUseVirtualStock && bAllowVirtualStock)
205 ResetStockVariables();
207 bUseVirtualStock = bAllowVirtualStock;
208 }
209
210 void ResetStockVariables()
211 {
212 VirtualStockSettings.StockHandSmoothing.ResetSmoothingFilter();
213 }
214
215 void GetVirtualStockTarget(UGripMotionControllerComponent * GrippingController);
216
217 // Call to use an object
218 UPROPERTY(BlueprintAssignable, Category = "VirtualStock")
219 FVRVirtualStockModeChangedSignature OnVirtualStockModeChanged;
220
221 // Overrides the pivot location to be at this component instead
222 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
223 bool bUseVirtualStock;
224
225 FTransform MountWorldTransform;
226 bool bIsMounted;
227 FTransform RelativeTransOnSecondaryRelease;
228 TWeakObjectPtr<USceneComponent> CameraComponent;
229
230 // Overrides the default behavior of using the HMD location for the stock and uses this component instead
231 UPROPERTY(BlueprintReadWrite, Category = "VirtualStock")
232 TWeakObjectPtr<USceneComponent> VirtualStockComponent;
233
234 // Loads the global virtual stock settings on grip (only if locally controlled, you need to manually replicate and store the global settings
235 // In the character if networked).
236 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
237 bool bUseGlobalVirtualStockSettings;
239 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock", meta = (editcondition = "!bUseGlobalVirtualStockSettings"))
240 FBPVirtualStockSettings VirtualStockSettings;
241
242 // If this gun has recoil
243 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil")
244 bool bHasRecoil;
245
246 // If true then the recoil will be added as a physical force instead of logical blend
247 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil")
248 bool bApplyRecoilAsPhysicalForce;
249
250 // Maximum recoil addition
251 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil", meta = (editcondition = "bHasRecoil"))
252 FVector_NetQuantize100 MaxRecoilTranslation;
253
254 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil", meta = (editcondition = "bHasRecoil"))
255 FVector_NetQuantize100 MaxRecoilRotation;
256
257 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil", meta = (editcondition = "bHasRecoil"))
258 FVector_NetQuantize100 MaxRecoilScale;
259
260 // Recoil decay rate, how fast it decays back to baseline
261 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil", meta = (editcondition = "bHasRecoil"))
262 float DecayRate;
264 // Recoil lerp rate, how long it takes to lerp to the target recoil amount (0.0f would be instant)
265 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil", meta = (editcondition = "bHasRecoil"))
266 float LerpRate;
267
268 // Stores the current amount of recoil
269 FTransform BackEndRecoilStorage;
270
271 // Stores the target amount of recoil
272 FTransform BackEndRecoilTarget;
273
274 bool bHasActiveRecoil;
275
276 // Adds a recoil instance to the gun tools, the option location is for if using the physical recoil mode
277 // Physical recoil is in world space and positional only, logical recoil is in relative space to the mesh itself and uses all
278 // of the transforms properties.
279 UFUNCTION(BlueprintCallable, Category = "Recoil")
280 void AddRecoilInstance(const FTransform & RecoilAddition, FVector Optional_Location = FVector::ZeroVector);
281
282 UFUNCTION(BlueprintCallable, Category = "Recoil")
283 void ResetRecoil();
284
285 virtual bool GetWorldTransform_Implementation(UGripMotionControllerComponent * GrippingController, float DeltaTime, FTransform & WorldTransform, const FTransform &ParentTransform, FBPActorGripInformation &Grip, AActor * actor, UPrimitiveComponent * root, bool bRootHasInterface, bool bActorHasInterface, bool bIsForTeleport) override;
286
287 // Applies the two hand modifier, broke this out into a function so that we can handle late updates
288 static void ApplyTwoHandModifier(FTransform & OriginalTransform)
290
291
292 }
293
294 // Returns the smoothed value now
295 inline FVector GunTools_ApplySmoothingAndLerp(FBPActorGripInformation & Grip, FVector &frontLoc, FVector & frontLocOrig, float DeltaTime, bool bSkipHighQualitySimulations)
296 {
297 FVector SmoothedValue = frontLoc;
298
299 if (Grip.SecondaryGripInfo.GripLerpState == EGripLerpState::StartLerp) // Lerp into the new grip to smooth the transition
300 {
301 if (!bSkipHighQualitySimulations && AdvSecondarySettings.SecondaryGripScaler < 1.0f)
302 {
303 SmoothedValue = AdvSecondarySettings.SecondarySmoothing.RunFilterSmoothing(frontLoc, DeltaTime);
304 frontLoc = FMath::Lerp(frontLoc, SmoothedValue, AdvSecondarySettings.SecondaryGripScaler);
305
306 }
307 //Default_ApplySmoothingAndLerp(Grip, frontLoc, frontLocOrig, DeltaTime);
308 }
309 else if (!bSkipHighQualitySimulations && AdvSecondarySettings.bUseAdvancedSecondarySettings && AdvSecondarySettings.bUseConstantGripScaler) // If there is a frame by frame lerp
310 {
311 SmoothedValue = AdvSecondarySettings.SecondarySmoothing.RunFilterSmoothing(frontLoc, DeltaTime);
312 frontLoc = FMath::Lerp(frontLoc, SmoothedValue, AdvSecondarySettings.SecondaryGripScaler);
313 }
314
315 return SmoothedValue;
316 }
317};
318
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FVRVirtualStockModeChangedSignature, bool, IsVirtualStockEngaged)
UCLASS(NotBlueprintable, ClassGroup = (VRExpansionPlugin))
Definition GS_Default.h:17
UCLASS(NotBlueprintable, ClassGroup = (VRExpansionPlugin), hideCategories = TickSettings)
bool bUseGlobalVirtualStockSettings
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
bool bHasActiveRecoil
FVRVirtualStockModeChangedSignature OnVirtualStockModeChanged
UPROPERTY(BlueprintAssignable, Category = "VirtualStock")
FVector_NetQuantize100 PivotOffset
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pivot")
bool bApplyRecoilAsPhysicalForce
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil")
float LerpRate
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil", meta = (editcondition = "bHasRecoil"...
TWeakObjectPtr< USceneComponent > VirtualStockComponent
UPROPERTY(BlueprintReadWrite, Category = "VirtualStock")
static void ApplyTwoHandModifier(FTransform &OriginalTransform)
FTransform RelativeTransOnSecondaryRelease
FTransform OrientationComponentRelativeFacing
FVector GunTools_ApplySmoothingAndLerp(FBPActorGripInformation &Grip, FVector &frontLoc, FVector &frontLocOrig, float DeltaTime, bool bSkipHighQualitySimulations)
float DecayRate
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil", meta = (editcondition = "bHasRecoil"...
FBPVirtualStockSettings VirtualStockSettings
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock", meta = (editcondition = "!...
void SetVirtualStockComponent(USceneComponent *NewStockComponent)
UFUNCTION(BlueprintCallable, Category = "VirtualStock")
FTransform BackEndRecoilStorage
FVector_NetQuantize100 MaxRecoilTranslation
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil", meta = (editcondition = "bHasRecoil"...
FName WeaponRootOrientationComponent
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Weapon Settings")
bool bHasRecoil
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil")
bool bUseVirtualStock
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
bool bUseHighQualityRemoteSimulation
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "GunSettings")
FTransform BackEndRecoilTarget
void SetVirtualStockEnabled(bool bAllowVirtualStock)
UFUNCTION(BlueprintCallable, Category = "VirtualStock")
FQuat StoredRootOffset
FGunTools_AdvSecondarySettings AdvSecondarySettings
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GunSettings")
FTransform MountWorldTransform
FVector_NetQuantize100 MaxRecoilRotation
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil", meta = (editcondition = "bHasRecoil"...
void ResetStockVariables()
TWeakObjectPtr< USceneComponent > CameraComponent
FVector_NetQuantize100 MaxRecoilScale
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Recoil", meta = (editcondition = "bHasRecoil"...
UCLASS(Blueprintable, meta = (BlueprintSpawnableComponent), ClassGroup = MotionController)
USTRUCT(BlueprintType, Category = "VRExpansionLibrary")
FBPSecondaryGripInfo SecondaryGripInfo
UPROPERTY(BlueprintReadOnly, Category = "Settings")
USTRUCT(BlueprintType, Category = "VRExpansionLibrary")
USTRUCT(BlueprintType, Category = "VRExpansionLibrary")
FVector RunFilterSmoothing(const FVector &InRawValue, const float &InDeltaTime)
USTRUCT(BlueprintType, Category = "VRExpansionLibrary")
float MinCutoff
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "FilterSettings")
float DeltaCutoff
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "FilterSettings")
EGripLerpState GripLerpState
USTRUCT(BlueprintType, Category = "GunSettings")
Definition GS_GunTools.h:22
bool bSmoothStockHand
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock|Smoothing")
Definition GS_GunTools.h:81
void CopyFrom(FBPVirtualStockSettings &B)
FVector_NetQuantize100 StockSnapOffset
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
Definition GS_GunTools.h:65
float StockSnapLerpThreshold
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock", meta = (ClampMin = "0....
Definition GS_GunTools.h:50
float StockSnapDistance
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
Definition GS_GunTools.h:40
float StockLerpValue
UPROPERTY(BlueprintReadOnly, Category = "VirtualStock")
Definition GS_GunTools.h:57
bool bAdjustZOfStockToPrimaryHand
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
Definition GS_GunTools.h:73
bool bUseDistanceBasedStockSnapping
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock")
Definition GS_GunTools.h:32
FBPEuroLowPassFilterTrans StockHandSmoothing
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GunSettings|VirtualStock|Smoothing")
Definition GS_GunTools.h:98
float SmoothingValueForStock
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VirtualStock|Smoothing", meta = (editconditio...
Definition GS_GunTools.h:90
bool bDebugDrawVirtualStock
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GunSettings|VirtualStock|Debug")
USTRUCT(BlueprintType, Category = "VRExpansionLibrary")
bool bUseAdvancedSecondarySettings
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings")
FBPEuroLowPassFilter SecondarySmoothing
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|Smoothing")
float GripInfluenceDeadZone
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|DistanceInfluence",...
bool bUseConstantGripScaler
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|Smoothing",...
float GripInfluenceDistanceToZero
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|DistanceInfluence",...
bool bUseGlobalSmoothingSettings
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|Smoothing",...
float SecondaryGripScaler
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|Smoothing",...
bool bUseSecondaryGripDistanceInfluence
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AdvSecondarySettings|DistanceInfluence",...