Space Plunder
Loading...
Searching...
No Matches
ALSCharacterAnimInstance.h
Go to the documentation of this file.
1// Copyright: Copyright (C) 2022 Doğa Can Yanıkoğlu
2// Source Code: https://github.com/dyanikoglu/ALS-Community
3
4#pragma once
5
6#include "CoreMinimal.h"
7#include "Animation/AnimInstance.h"
8#include "Data/BaseData.h"
13
14#include "ALSCharacterAnimInstance.generated.h"
15
16// forward declarations
19class UCurveFloat;
20class UAnimSequence;
21class UCurveVector;
22
26UCLASS(Blueprintable, BlueprintType)
27class ALSV4_CPP_API UALSCharacterAnimInstance : public UAnimInstance, public ICustomAnimInstance, public IALSAnimInterface
28{
29 GENERATED_BODY()
30
31public:
32 virtual void NativeInitializeAnimation() override;
33
34 virtual void NativeBeginPlay() override;
35
36 virtual void NativeUpdateAnimation(float DeltaSeconds) override;
37 virtual void NativeThreadSafeUpdateAnimation(float DeltaSeconds) override;
38
39 UFUNCTION(BlueprintCallable, Category = "ALS|Animation")
40 void PlayTransition(const FALSDynamicMontageParams& Parameters);
41
42 UFUNCTION(BlueprintCallable, Category = "ALS|Animation")
43 void PlayTransitionChecked(const FALSDynamicMontageParams& Parameters);
44
45 UFUNCTION(BlueprintCallable, Category = "ALS|Animation")
46 void PlayDynamicTransition(float ReTriggerDelay, FALSDynamicMontageParams Parameters);
47
48 UFUNCTION(BlueprintCallable, Category = "ALS|Event")
49 void OnJumped();
50
51 UFUNCTION(BlueprintCallable, Category = "ALS|Event")
52 void OnPivot();
53
54
55 //~ Custom Anim Instance ~//
56
58 virtual void SetFiringWeapon(const bool bValue) override;
59
61 virtual void SetRecoilTransform(const FTransform& Transform) override;
63 virtual void SetPivotPoint(const FTransform& Transform) override;
65 virtual void DisableFootIK(const float DelayTime) override;
66
67 virtual void SetInjured(const EBodyPartName BodyPartName, const float InjuredAmount) override;
68
69
70 //~ Custom Anim Instance ~//
71
72 UFUNCTION(BlueprintImplementableEvent, Category="Custom ALS")
73 void OnDisableFootIK(const float DelayTime);
74 UFUNCTION(BlueprintImplementableEvent, Category="Custom ALS")
75 void OnInjured(const EBodyPartName BodyPartName, const float InjuredAmount);
76
77 UFUNCTION(BlueprintCallable, Category="Custom ALS")
78 bool GetFiringWeapon() const{return bFiringWeapon;};
79
80 virtual void SetEssentialInfo(const FALSAnimValues& Value) override;
81 virtual void SetOptimize(const bool bValue) override;
82 virtual void SetMovementState(const FALSMovementState& Value) override;
83 virtual void SetOverlayOverrideState(const int32 Value) override;
84 virtual void SetGait(const FALSGait& Value) override;
85 virtual void SetStance(const FALSStance& Value) override;
86 virtual void SetViewMode(const EALSViewMode Value) override;
87 virtual void SetOverlayState(const FALSOverlayState& Value) override;
88 virtual void SetNewGroundedEntryState(const FALSGroundedEntryState& Value) override;
89 virtual void SetRotationMode(const FALSRotationMode Value) override;
90
91
92 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="ALS|Debug")
93 bool bOptimize = false;
94
95 UFUNCTION(BlueprintCallable, Category="Custom ALS")
96 FRotator GetRecoilRotation() const {return RecoilTransform.Rotator();};
97 UFUNCTION(BlueprintCallable, Category="Custom ALS")
98 FVector GetPivotPointLocation() const {return PivotPoint.GetLocation() + GunOffset;};
99 UFUNCTION(BlueprintCallable, Category="Custom ALS")
100 bool GetShouldOverlayStateUsePRASIK() const;
101
102protected:
103
104 UFUNCTION(BlueprintCallable, Category = "ALS|Grounded")
105 void SetTrackedHipsDirection(EALSHipsDirection HipsDirection)
106 {
107 Grounded.TrackedHipsDirection = HipsDirection;
108 }
109
110 UFUNCTION(BlueprintCallable, Category = "ALS|Grounded")
111 void SetGroundedEntryState(EALSGroundedEntryState NewState)
112 {
113 GroundedEntryState = NewState;
114 }
115
117 UFUNCTION(BlueprintCallable, Category = "ALS|Grounded")
118 bool ShouldMoveCheck() const;
119
121 UFUNCTION(BlueprintCallable, Category = "ALS|Grounded")
122 bool CanRotateInPlace() const;
123
129 UFUNCTION(BlueprintCallable, Category = "ALS|Grounded")
130 bool CanTurnInPlace() const;
131
137 UFUNCTION(BlueprintCallable, Category = "ALS|Grounded")
138 bool CanDynamicTransition() const;
139
140private:
141 void PlayDynamicTransitionDelay();
142
143 void OnJumpedDelay();
144
145 void OnPivotDelay();
146
149 void UpdateAimingValues(float DeltaSeconds);
150
151 void UpdateLayerValues();
152
153 void UpdateFootIK(float DeltaSeconds);
154
155 void UpdateMovementValues(float DeltaSeconds);
156
157 void UpdateRotationValues();
158
159 void UpdateInAirValues(float DeltaSeconds);
160
161 void UpdateRagdollValues();
162
165 void SetFootLocking(float DeltaSeconds, FName EnableFootIKCurve, FName FootLockCurve, FName IKFootBone,
166 float& CurFootLockAlpha, bool& UseFootLockCurve,
167 FVector& CurFootLockLoc, FRotator& CurFootLockRot) const;
168
169 void SetFootLockOffsets(float DeltaSeconds, FVector& LocalLoc, FRotator& LocalRot) const;
170
171 void SetPelvisIKOffset(float DeltaSeconds, FVector FootOffsetLTarget, FVector FootOffsetRTarget);
172
173 void ResetIKOffsets(float DeltaSeconds);
174
175 void SetFootOffsets(float DeltaSeconds, FName EnableFootIKCurve, FName IKFootBone, FName RootBone,
176 FVector& CurLocationTarget, FVector& CurLocationOffset, FRotator& CurRotationOffset) const;
177
180 void RotateInPlaceCheck();
181
182 void TurnInPlaceCheck(float DeltaSeconds);
183
184 void DynamicTransitionCheck();
185
186 FALSVelocityBlend CalculateVelocityBlend() const;
187
188 void TurnInPlace(FRotator TargetRotation, float PlayRateScale, float StartTime, bool OverrideCurrent);
189
192 FVector CalculateRelativeAccelerationAmount() const;
193
194 float CalculateStrideBlend() const;
195
196 float CalculateWalkRunBlend() const;
197
198 float CalculateStandingPlayRate() const;
199
200 float CalculateDiagonalScaleAmount() const;
201
202 float CalculateCrouchingPlayRate() const;
203
204 float CalculateLandPrediction() const;
205
206 FALSLeanAmount CalculateAirLeanAmount() const;
207
208 EALSMovementDirection CalculateMovementDirection() const;
209
212 float GetAnimCurveClamped(const FName& Name, float Bias, float ClampMin, float ClampMax) const;
213
214public:
216 UPROPERTY(BlueprintReadOnly, Category = "Read Only Data|Character Information")
217 TObjectPtr<AALSBaseCharacter> Character = nullptr;
218
220 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Character Information", Meta = (
221 ShowOnlyInnerProperties))
222 FALSAnimCharacterInformation CharacterInformation;
223
224 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Character Information")
226
227 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Character Information")
229
230 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Character Information")
232
233 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Character Information")
235
236 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Character Information")
238
239 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Character Information")
241
243 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Grounded", Meta = (
244 ShowOnlyInnerProperties))
246
247 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Grounded")
248 FALSVelocityBlend VelocityBlend;
249
250 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Grounded")
251 FALSLeanAmount LeanAmount;
252
253 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Grounded")
254 FVector RelativeAccelerationAmount = FVector::ZeroVector;
255
256 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Grounded")
258
259 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Grounded")
261
263 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - In Air", Meta = (
264 ShowOnlyInnerProperties))
266
268 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Aiming Values", Meta = (
269 ShowOnlyInnerProperties))
270 FALSAnimGraphAimingValues AimingValues;
271
272 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Aiming Values")
273 FVector2D SmoothedAimingAngle = FVector2D::ZeroVector;
274
276 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Ragdoll")
277 float FlailRate = 0.0f;
278
280 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Layer Blending", Meta = (
281 ShowOnlyInnerProperties))
282 FALSAnimGraphLayerBlending LayerBlendingValues;
283
285 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Foot IK", Meta = (
286 ShowOnlyInnerProperties))
287 FALSAnimGraphFootIK FootIKValues;
288
290 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Turn In Place", Meta = (
291 ShowOnlyInnerProperties))
292 FALSAnimTurnInPlace TurnInPlaceValues;
293
295 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Rotate In Place", Meta = (
296 ShowOnlyInnerProperties))
297 FALSAnimRotateInPlace RotateInPlace;
298
300 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Main Configuration", Meta = (
301 ShowOnlyInnerProperties))
303
306 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Blend Curves")
307 TObjectPtr<UCurveFloat> DiagonalScaleAmountCurve = nullptr;
308
309 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Blend Curves")
310 TObjectPtr<UCurveFloat> StrideBlend_N_Walk = nullptr;
311
312 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Blend Curves")
313 TObjectPtr<UCurveFloat> StrideBlend_N_Run = nullptr;
314
315 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Blend Curves")
316 TObjectPtr<UCurveFloat> StrideBlend_C_Walk = nullptr;
317
318 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Blend Curves")
319 TObjectPtr<UCurveFloat> LandPredictionCurve = nullptr;
320
321 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Blend Curves")
322 TObjectPtr<UCurveFloat> LeanInAirCurve = nullptr;
323
324 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Blend Curves")
325 TObjectPtr<UCurveVector> YawOffset_FB = nullptr;
326
327 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Blend Curves")
328 TObjectPtr<UCurveVector> YawOffset_LR = nullptr;
329
330 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Dynamic Transition")
331 TObjectPtr<UAnimSequenceBase> TransitionAnim_R = nullptr;
332
333 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Dynamic Transition")
334 TObjectPtr<UAnimSequenceBase> TransitionAnim_L = nullptr;
335
337 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Anim Graph - Foot IK")
338 FName IkFootL_BoneName = FName(TEXT("ik_foot_l"));
339
340 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Configuration|Anim Graph - Foot IK")
341 FName IkFootR_BoneName = FName(TEXT("ik_foot_r"));
342
343
344 //~ Custom Anim Vars ~//
345 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Recoil")
346 FVector GunOffset = FVector::ZeroVector;
347 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Recoil")
348 FTransform RecoilTransform;
349 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Recoil")
350 FTransform PivotPoint;
351 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Recoil")
352 bool bFiringWeapon = false;
353 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Injured")
355 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Read Only Data|Anim Graph - Injured")
356 float InjuredAlpha = 0.0f;
357 //~ Custom Anim Vars ~//
358
359
360private:
361 FTimerHandle OnPivotTimer;
362
363 FTimerHandle PlayDynamicTransitionTimer;
364
365 FTimerHandle OnJumpedTimer;
366
367 bool bCanPlayDynamicTransition = true;
368
369 UPROPERTY()
370 TObjectPtr<UALSDebugComponent> ALSDebugComponent = nullptr;
371
372
373};
EALSMovementDirection
Definition ALSCharacterEnumLibrary.h:169
EALSGait
Definition ALSCharacterEnumLibrary.h:29
EALSViewMode
Definition ALSCharacterEnumLibrary.h:119
EALSGroundedEntryState
Definition ALSCharacterEnumLibrary.h:143
EALSHipsDirection
Definition ALSCharacterEnumLibrary.h:150
EALSMovementState
Definition ALSCharacterEnumLibrary.h:55
EALSRotationMode
Definition ALSCharacterEnumLibrary.h:97
EALSStance
Definition ALSCharacterEnumLibrary.h:108
EALSMovementAction
Definition ALSCharacterEnumLibrary.h:41
EALSOverlayState
Definition ALSCharacterEnumLibrary.h:68
EBodyPartName
Definition BaseData.h:133
UCLASS(Blueprintable, BlueprintType, ClassGroup=(BucciGames), meta=(BlueprintSpawnableComponent)) class CHATSYSTEM_API UChatSystemComponent
Definition ChatSystemComponent.h:13
Definition ALSBaseCharacter.h:38
Definition ALSAnimInterface.h:21
Definition CustomAnimInstance.h:23
Definition ALSCharacterAnimInstance.h:28
Definition ALSDebugComponent.h:17
Definition ALSAnimationStructLibrary.h:91
Definition ALSAnimationStructLibrary.h:472
Definition ALSAnimationStructLibrary.h:235
Definition ALSAnimationStructLibrary.h:343
Definition ALSAnimationStructLibrary.h:163
Definition ALSAnimationStructLibrary.h:217
Definition ALSAnimationStructLibrary.h:265
Definition ALSAnimationStructLibrary.h:448
Definition ALSAnimationStructLibrary.h:400
Definition ALSAnimationStructLibrary.h:144
Definition ALSAnimationStructLibrary.h:19
Definition ALSStructEnumLibrary.h:237
Definition ALSStructEnumLibrary.h:416
Definition ALSAnimationStructLibrary.h:40
Definition ALSStructEnumLibrary.h:187
Definition ALSStructEnumLibrary.h:139
Definition ALSStructEnumLibrary.h:14
Definition ALSStructEnumLibrary.h:283
Definition ALSStructEnumLibrary.h:99
Definition ALSStructEnumLibrary.h:64
Definition ALSAnimationStructLibrary.h:52