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; };