LEAP Documentation 40220
Documentation for the LEAP project
ProjectXCharacterAnimInstance3P.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2022. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Animation/AnimInstance.h"
7#include "ProjectXCharacterAnimInstance3P.generated.h"
8
9UENUM(BlueprintType)
10enum class EPlayerClassAnimation : uint8
11{
12 SpecOps,
14 Heavy,
16};
17
18class UAnimSequence;
19class UCurveFloat;
20class UHookshotComponent;
21
22UCLASS()
23class PROJECTX_API UProjectXCharacterAnimInstance3P : public UAnimInstance
24{
25 GENERATED_BODY()
26
27protected:
28 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Character")
29 UCurveFloat* LeanCurve = nullptr;
30 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Character")
31 float MaxLean = 35.0f;
32 UPROPERTY(BlueprintReadOnly, Category="Character")
33 FRotator LookDirection = FRotator::ZeroRotator;
34 UPROPERTY(BlueprintReadOnly, Category="Character")
35 FVector TargetVelocity = FVector::ZeroVector;
36 UPROPERTY(BlueprintReadOnly, Category="Character")
37 FVector DirectionIntentVector = FVector::ZeroVector;
38 UPROPERTY(BlueprintReadOnly, Category = "Character")
39 FVector SmoothedDirectionIntentVector = FVector::ZeroVector;
40 UPROPERTY(BlueprintReadOnly, Category="Character")
41 FVector Velocity = FVector::ZeroVector;
42 UPROPERTY(BlueprintReadOnly, Category="Character")
43 FVector JetPackRootDeviation = FVector::ZeroVector;
44 UPROPERTY(BlueprintReadOnly, Category="Character")
45 FVector2D JetpackLateralAndForwardSpeed = FVector2D::ZeroVector;
46 UPROPERTY(BlueprintReadOnly, Category="Character")
47 float Speed = 0.0f;
48 UPROPERTY(BlueprintReadWrite, Category = "Character")
49 bool bIsDiving = false;
50 UPROPERTY(BlueprintReadOnly, Category="Character")
51 bool bIsDead = false;
52 /* If the conditions for using the IK solver are met, this will be true */
53 UPROPERTY(BlueprintReadOnly, Category = "Character")
54 bool bCanUseIKSolver = false;
55 /* Should we use an IK solver for the left hand so it aligns with the right hand (Weapons only) */
56 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Character")
57 bool bUseLeftHandIK = false;
58 UPROPERTY(BlueprintReadOnly, Category="Character")
59 bool bIsInAir = false;
60 UPROPERTY(BlueprintReadOnly, Category="Character")
61 bool bHookshotting = false;
62 UPROPERTY(BlueprintReadOnly, Category="Character")
63 bool bHasJetPack = false;
64 UPROPERTY(BlueprintReadOnly, Category="Character")
65 bool bCrouching = false;
66 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Character")
67 bool bIsInVehicle = false;
68 UPROPERTY(BlueprintReadOnly, Category = "Character")
69 bool bIsTightAiming = false;
70 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Character")
71 float CharacterHeight = 200.0f;
72 UPROPERTY(BlueprintReadOnly, Category = "Character")
73 float TargetPitchLean = 0.0f;
74 UPROPERTY(BlueprintReadOnly, Category = "Character")
75 float CurrentGroundDeviationAmount = 0.0f;
76 UPROPERTY(BlueprintReadOnly, Category = "Character")
77 FRotator PitchLean = FRotator::ZeroRotator;
78 UPROPERTY(BlueprintReadOnly, Category = "Character")
79 FRotator DivingAdjustedPitch = FRotator::ZeroRotator;
80 UPROPERTY(BlueprintReadOnly, Category = "Character")
81 FVector ProjectedGroundDeviationOnLean = FVector::ZeroVector;
82 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Character")
83 float SmoothedDirectionIntentVectorInterpSpeed = 5.0f;
84 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Character")
85 float JetpackIntentVectorScale = 25.0f;
86
87 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category="Vehicle")
88 UAnimSequence* InVehicleIdleSequence = nullptr;
89 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category="Vehicle")
90 float VehicleLeanInterpSpeed = 5.0f;
91 UPROPERTY(BlueprintReadOnly, Category="Vehicle")
92 float ExplicitIdleTime = 0.0f;
93 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category="Vehicle")
94 float VehicleMaxYawDistanceToDriveLean = 25.0f;
95 UPROPERTY(BlueprintReadOnly, Category="Vehicle")
96 FVector TargetVehicleAcceleration = FVector::ZeroVector;
97 UPROPERTY(BlueprintReadOnly, Category="Vehicle")
98 FVector LerpedVehicleAcceleration = FVector::ZeroVector;
99 UPROPERTY(BlueprintReadOnly, Category="Vehicle")
100 float VehicleYawDifferenceFromAim = 0.0f;
101 UPROPERTY(BlueprintReadOnly, Category="Vehicle")
102 float VehicleRotationTiltAmount = 0.0f;
103 UPROPERTY(BlueprintReadOnly, Category="Vehicle")
104 float LateralAccelerationBS = 0.0f;
105 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category="Vehicle")
106 bool bAlsoConsiderVehicleTiltOnPoses = false;
107 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category="Vehicle")
108 bool bUseDynamicDrivingGraph = false;
109 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Vehicle")
110 bool bUsePersonalVehicleLeans = false;
111
112 UPROPERTY(BlueprintReadOnly, Category="Blending")
113 bool bBlendArmsSlot = false;
114 UPROPERTY(BlueprintReadOnly, Category="Blending")
115 bool bIsHookshottingOrHasJetPack = false;
116 UPROPERTY(BlueprintReadOnly, Category="Blending")
117 bool bIsInAirOrHookshotting = false;
118 UPROPERTY(BlueprintReadOnly, Category="Blending")
119 bool bActivelyDrivingVehicle = false;
120 UPROPERTY(BlueprintReadOnly, Category="Blending")
121 FRotator SpineRotationAdjustment = FRotator::ZeroRotator;
122 UPROPERTY(BlueprintReadOnly, Category="Blending")
123 float AnimationPlayRate = 0.0f;
124
125 // the below functions are the native overrides for each phase
126 // Native initialization override point
127 virtual void NativeInitializeAnimation();
128 // Native update override point. It is usually a good idea to simply gather data in this step and
129 // for the bulk of the work to be done in NativeUpdateAnimation.
130 virtual void NativeUpdateAnimation(float DeltaSeconds);
131 // Native Uninitialize override point
132 virtual void NativeUninitializeAnimation();
133
134 void HandleVehicleLeans(AProjectXCharacter* const ProjectXCharacter, float DeltaTime);
135 void HandleJetpackLean(AProjectXCharacter* const ProjectXCharacter);
136 void HandleIntentVector(AProjectXCharacter* const ProjectXCharacter, float DeltaTime);
137 void HandleLateralLean(AProjectXCharacter* const ProjectXCharacter, float DeltaTime);
138 void HandleDivingTransforms(AProjectXCharacter* const ProjectXCharacter);
139 void HandlePersonalVehicleLeans(AProjectXCharacter* const ProjectXCharacter, float DeltaTime);
140
141 UFUNCTION()
142 void TightAimStart();
143 UFUNCTION()
144 void TightAimStop();
145 UFUNCTION()
146 void HookshotStart(const UHookshotComponent* HookshotComponent);
147 UFUNCTION()
148 void HookshotStop(const UHookshotComponent* HookshotComponent);
149 UFUNCTION()
150 void CrouchChanged(bool bToggle);
151 UFUNCTION()
152 void OnVehicleChanged(AProjectXCharacter* Driver, AProjectXVehicle* CurrentVehicle, AProjectXVehicle* PreviousVehicle);
153
154private:
155 bool bWasDiving = false;
156};
EPlayerClassAnimation
Definition: ProjectXCharacterAnimInstance3P.h:11
Definition: ProjectXCharacter.h:128
Definition: ProjectXVehicle.h:56
Definition: ProjectXCharacterAnimInstance3P.h:24