diff --git a/EndlessVendetta/.idea/.idea.EndlessVendetta.dir/.idea/vcs.xml b/EndlessVendetta/.idea/.idea.EndlessVendetta.dir/.idea/vcs.xml
new file mode 100644
index 00000000..6c0b8635
--- /dev/null
+++ b/EndlessVendetta/.idea/.idea.EndlessVendetta.dir/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset
index bbee618c..802959cb 100644
--- a/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:30855616c4941635f2b4e9f78ebe1f4d7b43f219e4ae180257f666326433e4c6
-size 42742
+oid sha256:dd6b7d124efa1086acb80f4b16e1d8a0db25e05e081f914d61cfce0bbb4191e9
+size 42329
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_BaseAssaultRifle.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_BaseAssaultRifle.uasset
index 7a6aaf5e..534c1e9e 100644
--- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_BaseAssaultRifle.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/AssaultRifles/BP_BaseAssaultRifle.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:687cf147ebf43e160b9c018f570186e7fd789493317c6c28e6bba9c92095f005
-size 37868
+oid sha256:215d949e3ea1df83d937e0387115975c9c3e14077a879a6f834831241c154f18
+size 39178
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset
index dc2d119d..e3885a88 100644
--- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_BaseWeapon.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:af36276c4e513a207e06ec1eaa8f5c4273ab5634330a999db47ac9128e7d02ec
-size 29776
+oid sha256:1de9565906296c664bb7dd6b3f700d135fa5244e1f625f9f792eba15a9880ae8
+size 48226
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset
index a24df98a..cc04228d 100644
--- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/BP_GunCameraShake.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5b5bc4f06eaeb74c61b627c02ff6e49dedeebfe047bc79fbfa8941b25c4674ef
+oid sha256:4358c8520e164b973fae2ae1a18307f0eb691ecfd94b433cbda1052b8b2751fa
size 7209
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset
index ea240160..75a10fe3 100644
--- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/Pistols/BP_BasePistolWeapon.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:71b1463641785fe268bbea7f26c1e1d12cb0703f47b2ec1c50afd19ed3f061ed
-size 30046
+oid sha256:246a8220f9708873776922ca6683ec085b4447eecd1efd89fd0572c94b9d5956
+size 49471
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_AmmoCount.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_AmmoCount.uasset
new file mode 100644
index 00000000..42f932a9
--- /dev/null
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WBP_AmmoCount.uasset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:652402df45503ab3169e329879f397101d9b5bf17551404301cca7b5b292eb68
+size 62076
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WeaonRecoil/AssaultRecoilPattern.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WeaonRecoil/AssaultRecoilPattern.uasset
index 423c7283..e0afe7ed 100644
--- a/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WeaonRecoil/AssaultRecoilPattern.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/BaseWeapons/WeaonRecoil/AssaultRecoilPattern.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b63c754fc78a67f950a91e30dd31a6778bac31a485191b9cc14560515d5012a5
+oid sha256:136afa1f1b4d7d302c0824edcbaeff1061de8ca41532af1ff390294a8baeda7a
size 2033
diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset
index bdd28701..b36651a3 100644
--- a/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset
+++ b/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a3c0a70c5b68ec66372ae8e29abcb76deb385319f24202e43395c9061b3d0f8a
-size 24854
+oid sha256:f29a879021fde175da0f45dcffaa1e4b4765574bb429977dc552cd51b2ad899a
+size 24819
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp
index b820ef3d..e348490a 100644
--- a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp
@@ -23,6 +23,9 @@ ABaseWeaponClass::ABaseWeaponClass()
void ABaseWeaponClass::BeginPlay()
{
Super::BeginPlay();
+
+ collisionParams.AddIgnoredActor(playerInWorld);
+ collisionParams.AddIgnoredActor(this);
// Attempt to find the player character
APlayerController* PlayerController = UGameplayStatics::GetPlayerController(this, 0);
@@ -60,6 +63,13 @@ void ABaseWeaponClass::Tick(float DeltaTime)
{
ApplyRecoil(DeltaTime);
}
+ UE_LOG(LogTemp, Display, TEXT("currnt pitch: %f"), currentPitch);
+ if (currentPitch < 0 && bStopShooting)
+ {
+ float increment = currentPitch * DeltaTime * 8;
+ currentPitch -= increment;
+ playerInWorld->AddControllerPitchInput(-increment);
+ }
}
@@ -72,7 +82,11 @@ void ABaseWeaponClass::GenerateRecoilVector()
recoilResultYaw = FMath::Sin(FMath::DegreesToRadians(angle));
recoilResultPitch = FMath::Cos(FMath::DegreesToRadians(angle));
-
+
+ if (bulletCountShoot >= howMnyShotsTillRclStop)
+ {
+ recoilResultPitch = 0;
+ }
//scaling direction to magnitude
recoilResultPitch *= -tempMag;
recoilResultYaw *= tempMag;
@@ -87,11 +101,13 @@ void ABaseWeaponClass::ApplyRecoil(float DeltaTime)
{
float amplitude = RecoilCurve->GetFloatValue(recoilTime); //get current value of curve in time
recoilTime += DeltaTime;
- if (bulletCountShoot <= 3) playerInWorld->AddControllerPitchInput(GetRecoilPitch(amplitude, recoilTime));
- traceEnd = traceStart + (UKismetMathLibrary::GetForwardVector(playerInWorld->GetControlRotation() * GetRecoilPitch(amplitude, recoilTime)));
- //UE_LOG(LogTemp, Warning, TEXT("Controller pitch: Pitch: %f Yaw: %f, Roll: %f"), playerInWorld->GetControlRotation().Pitch, playerInWorld->GetControlRotation().Yaw, playerInWorld->GetControlRotation().Roll);
+ if (bulletCountShoot <= 3)
+ {
+ playerInWorld->AddControllerPitchInput(GetRecoilPitch(amplitude, recoilTime));
+ currentPitch += GetRecoilPitch(amplitude,recoilTime);
+ }
+ GunStartArrow->AddRelativeRotation(FRotator(-GetRecoilPitch(amplitude, recoilTime), 0, 0));
playerInWorld->AddControllerYawInput(GetRecoilYaw(amplitude, recoilTime));
- //UE_LOG(LogTemp, Warning, TEXT("recoilTime: %f"), recoilTime);
UpdateSamples(amplitude, recoilTime);
}
}
@@ -139,8 +155,13 @@ void ABaseWeaponClass::ClickDetectionTimer()
void ABaseWeaponClass::CancelFire()
{
GetWorldTimerManager().ClearTimer(timerHandle);
+ if (bulletCountShoot <= 0) return;
UE_LOG(LogTemp, Display, TEXT("FireCancelled"));
bulletCountShoot = 0;
+ GunStartArrow->SetRelativeRotation(FRotator(0));
+ //playerInWorld->GetController()->SetControlRotation(FRotator(0, playerInWorld->GetActorRotation().Yaw, playerInWorld->GetActorRotation().Roll));
+ bStopShooting = true;
+ nullSamples();
}
void ABaseWeaponClass::Fire()
@@ -150,26 +171,17 @@ void ABaseWeaponClass::Fire()
//do damage fallof based off distance
traceStart = GunStartArrow->GetComponentLocation();
traceEnd = traceStart + (GunStartArrow->GetForwardVector() * BulletDistance);
- FCollisionQueryParams collisionParams;
- collisionParams.AddIgnoredActor(playerInWorld);
- collisionParams.AddIgnoredActor(this);
- /*RecoilVerticalLimit(outHit);*/
- if (GetWorldTimerManager().IsTimerActive(timerHandle))
- {
- return;
- }
+ if (GetWorldTimerManager().IsTimerActive(timerHandle)) return;
GetWorld()->LineTraceSingleByChannel(outHit, traceStart, traceEnd, ECC_Visibility, collisionParams);
- //Debug line to see where the trace hit
- DrawDebugLine(this->GetWorld(), traceStart, traceEnd, FColor::Red, false, 0.2f, 0U, 1);
+ DrawDebugLine(this->GetWorld(), traceStart, traceEnd, FColor::Red, false, 5.0f, 0U, 1.5f);
playerControllerRef->PlayerCameraManager->StartCameraShake(CameraShakeClass, 1);
currentAmmoCount -= 1;
- UE_LOG(LogTemp, Display, TEXT("Ammo Count: %d"), currentAmmoCount);
GenerateRecoilVector();
ClickDetectionTimer();
bulletCountShoot += 1;
+ bStopShooting = false;
if (outHit.bBlockingHit)
{
- UE_LOG(LogTemp, Display, TEXT("Ammo Count: %s"), *outHit.GetActor()->GetName());
if (!Cast(outHit.GetActor())) return;
Cast(outHit.GetActor())->TakeDamage(WeaponDamage, FPointDamageEvent(), GetWorld()->GetFirstPlayerController(), this);
}
@@ -185,10 +197,10 @@ void ABaseWeaponClass::WeaponScopedFire()
{
if (endlessVendettaChar->bIsScoped)
{
- recoilMagnitude -= 0.2f;
- recoilMaxAngleLeft /= 2.f;
- recoilMaxAngleRight /= 2.f;
- recoilMinMultiplier -= 0.2f;
+ recoilMagnitude = scopedRecoilMag;
+ recoilMaxAngleLeft = scopedMaxAngleLeft;
+ recoilMaxAngleRight = scopedMaxAngleRight;
+ recoilMinMultiplier = scopedMinMultiplier;
}
else
diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h
index 0edef8f6..2ea5b812 100644
--- a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h
+++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.h
@@ -24,9 +24,9 @@ protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
- void GenerateRecoilVector();
-
void ApplyRecoil(float DeltaTime);
+
+ void GenerateRecoilVector();
void nullSamples();
@@ -44,7 +44,7 @@ protected:
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
-
+
UPROPERTY(EditAnywhere)
FName WeaponName;
@@ -54,12 +54,31 @@ public:
UPROPERTY(EditAnywhere)
float FireRate;
- UPROPERTY(EditAnywhere)
+ UPROPERTY(EditAnywhere, BlueprintReadWrite)
int MagazineSize;
+ //how many bullets until the recoil stops going up
UPROPERTY(EditAnywhere)
+ int howMnyShotsTillRclStop;
+
+ UPROPERTY(BlueprintReadWrite)
+ int currentAmmoCount;
+
+ UPROPERTY(EditAnywhere, BlueprintReadWrite)
UTexture2D* WeaponImage;
+ UPROPERTY(EditAnywhere, Category = "ScopedFire")
+ float scopedRecoilMag;
+
+ UPROPERTY(EditAnywhere, Category = "ScopedFire")
+ float scopedMaxAngleLeft;
+
+ UPROPERTY(EditAnywhere, Category = "ScopedFire")
+ float scopedMaxAngleRight;
+
+ UPROPERTY(EditAnywhere, Category = "ScopedFire")
+ float scopedMinMultiplier;
+
UFUNCTION(BlueprintCallable, Category = "Weapons")
virtual void Fire();
@@ -116,6 +135,8 @@ public:
FHitResult outHit;
FVector traceStart;
FVector traceEnd;
+ FVector newTraceEnd;
+ FCollisionQueryParams collisionParams;
//UFUNCTION(BlueprintCallable, Category = "Weapons")
//void RecoilVerticalLimit(FHitResult Outhit);
@@ -135,6 +156,6 @@ private:
float originalMaxAngleRight;
float originalMinMultiplier;
- int currentAmmoCount;
-
+ float currentPitch;
+ bool bStopShooting = false;
};