18{
19 TRACE_CPUPROFILER_EVENT_SCOPE(AWeaponFramework::ServerShoot_Implementation);
20 SCOPE_CYCLE_COUNTER(STATGROUP_WeaponSystem_Weapons);
24
26 {
28 }
30
31
32
35
36
38 FVector ShotDirection;
40
41
42 FVector TracerEndPoint =
Hit.TraceEnd;
43 TArray<FVector> HitLocations;
44
45
46 if(!bSuccess)
47 {
48 TracerEndPoint =
Hit.TraceEnd;
49 HitLocations.Add(
Hit.TraceEnd);
51 {
53 }
55 return;
56 }
57
58
59 FVector MuzzleLocation =
Muzzle->GetComponentLocation();
60 FVector NormalVector = (MuzzleLocation -
Hit.Location);
61 NormalVector.Normalize(0.0001);
62 FVector ForwardVector = (FRotationMatrix(
TraceRotation).GetScaledAxis( EAxis::X ));
63 float VectorDistance = UKismetMathLibrary::Dot_VectorVector(NormalVector,(ForwardVector * -1));
65 {
66
67
69 if(BlindFireHit.bBlockingHit)
70 {
71 HitLocations.Add(BlindFireHit.Location);
75 {
77 }
78 LogDebugMessage(FString::Printf(TEXT(
"Hit 1: X %f,Y: %f,Z: %f"), BlindFireHit.Location.X, BlindFireHit.Location.Y, BlindFireHit.Location.Z));
79 }
80 else
81 {
82 HitLocations.Add(BlindFireHit.TraceEnd);
86 {
88 }
89 LogDebugMessage(FString::Printf(TEXT(
"Hit 1.5: X %f,Y: %f,Z: %f"), BlindFireHit.TraceEnd.X, BlindFireHit.TraceEnd.Y, BlindFireHit.TraceEnd.Z));
90 }
91 }
92 else
93 {
94
95
96
97
98
99 FHitResult HitCheck;
101
102
103
104 if(UKismetSystemLibrary::LineTraceSingle(this,
106 MuzzleLocation,
107 UEngineTypes::ConvertToTraceType(ECC_GameTraceChannel4),
109
111 true, FLinearColor::Blue,
113 {
115 if(BlindFireHit.bBlockingHit)
116 {
117 HitLocations.Add(BlindFireHit.Location);
121 {
123 }
124 LogDebugMessage(FString::Printf(TEXT(
"Hit 2: X %f,Y: %f,Z: %f"), BlindFireHit.Location.X, BlindFireHit.Location.Y, BlindFireHit.Location.Z));
125 }
126 else
127 {
128 HitLocations.Add(BlindFireHit.TraceEnd);
132 {
134 }
135 LogDebugMessage(FString::Printf(TEXT(
"Hit 2.5: X %f,Y: %f,Z: %f"), BlindFireHit.TraceEnd.X, BlindFireHit.TraceEnd.Y, BlindFireHit.TraceEnd.Z));
136 }
137 }
138 else
139 {
140
141 if(
Hit.GetActor() !=
nullptr)
142 {
145 HitLocations.Add(
Hit.Location);
148 {
150 }
151 }
152 }
153
155 }
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179}
FLinearColor MainTraceColor
Definition WeaponFramework.h:49
float GetAccuracyMultiplier() const
Definition WeaponFramework.h:133
bool bBottomlessClip
Definition WeaponFramework.h:39
APawn * OwnerPawn
Definition WeaponFramework.h:173
TArray< AActor * > ActorsToIgnore
Definition WeaponFramework.h:170
void ReceiveFire(FHitResult Hit, APawn *InstigatorPawn)
class UWeaponEffectsComponent * WeaponEffects
Definition WeaponFramework.h:193
float TraceDistanceTooClose
Definition WeaponFramework.h:59
FWeaponData_T WeaponData
Definition WeaponFramework.h:176
int32 CurrentAmmo
Definition WeaponStructs.h:880