/** unequip weapon from pawn */ void AWeapon::OnUnEquip() { if (HasAuthority()) { // UE_LOG(LogHeliWeapon, Log, TEXT("AWeapon::OnUnEquip() ---> Set owning pawn to NULL")); SetOwningPawn(NULL); } if (IsAttachedToPawn()) { StopFire(); DetachMeshFromPawn(); bIsEquipped = false; if (bPendingReload) { bPendingReload = false; GetWorldTimerManager().ClearTimer(TimerHandle_ReloadWeapon); } DetermineWeaponState(); } }
void ASWeapon::OnEquip(bool bPlayAnimation) { bPendingEquip = true; DetermineWeaponState(); if (bPlayAnimation) { float Duration = PlayWeaponAnimation(EquipAnim); if (Duration <= 0.0f) { // Failsafe in case animation is missing Duration = NoEquipAnimDuration; } EquipStartedTime = GetWorld()->TimeSeconds; EquipDuration = Duration; GetWorldTimerManager().SetTimer(EquipFinishedTimerHandle, this, &ASWeapon::OnEquipFinished, Duration, false); } else { /* Immediately finish equipping */ OnEquipFinished(); } if (MyPawn && MyPawn->IsLocallyControlled()) { PlayWeaponSound(EquipSound); } }
void AShooterWeapon::OnUnEquip() { DetachMeshFromPawn(); bIsEquipped = false; StopFire(); if (bPendingReload) { StopWeaponAnimation(ReloadAnim); bPendingReload = false; GetWorldTimerManager().ClearTimer(TimerHandle_StopReload); GetWorldTimerManager().ClearTimer(TimerHandle_ReloadWeapon); } if (bPendingEquip) { StopWeaponAnimation(EquipAnim); bPendingEquip = false; GetWorldTimerManager().ClearTimer(TimerHandle_OnEquipFinished); } DetermineWeaponState(); }
void ASWeapon::StartReload(bool bFromReplication) { /* Push the request to server */ if (!bFromReplication && Role < ROLE_Authority) { ServerStartReload(); } /* If local execute requested or we are running on the server */ if (bFromReplication || CanReload()) { bPendingReload = true; DetermineWeaponState(); float AnimDuration = PlayWeaponAnimation(ReloadAnim); if (AnimDuration <= 0.0f) { AnimDuration = NoAnimReloadDuration; } GetWorldTimerManager().SetTimer(TimerHandle_StopReload, this, &ASWeapon::StopSimulateReload, AnimDuration, false); if (Role == ROLE_Authority) { GetWorldTimerManager().SetTimer(TimerHandle_ReloadWeapon, this, &ASWeapon::ReloadWeapon, FMath::Max(0.1f, AnimDuration - 0.1f), false); } if (MyPawn && MyPawn->IsLocallyControlled()) { PlayWeaponSound(ReloadSound); } } }
void AShooterWeapon::StartReload(bool bFromReplication) { if (!bFromReplication && Role < ROLE_Authority) { ServerStartReload(); } if (bFromReplication || CanReload()) { bPendingReload = true; DetermineWeaponState(); float AnimDuration = PlayWeaponAnimation(ReloadAnim); if (AnimDuration <= 0.0f) { AnimDuration = WeaponConfig.NoAnimReloadDuration; } GetWorldTimerManager().SetTimer(TimerHandle_StopReload, this, &AShooterWeapon::StopReload, AnimDuration, false); if (Role == ROLE_Authority) { GetWorldTimerManager().SetTimer(TimerHandle_ReloadWeapon, this, &AShooterWeapon::ReloadWeapon, FMath::Max(0.1f, AnimDuration - 0.1f), false); } if (MyPawn && MyPawn->IsLocallyControlled()) { PlayWeaponSound(ReloadSound); } } }
void AShooterWeapon::OnEquip(const AShooterWeapon* LastWeapon) { AttachMeshToPawn(); bPendingEquip = true; DetermineWeaponState(); // Only play animation if last weapon is valid if (LastWeapon) { float Duration = PlayWeaponAnimation(EquipAnim); if (Duration <= 0.0f) { // failsafe Duration = 0.5f; } EquipStartedTime = GetWorld()->GetTimeSeconds(); EquipDuration = Duration; GetWorldTimerManager().SetTimer(TimerHandle_OnEquipFinished, this, &AShooterWeapon::OnEquipFinished, Duration, false); } else { OnEquipFinished(); } if (MyPawn && MyPawn->IsLocallyControlled()) { PlayWeaponSound(EquipSound); } }
void AWeapon::StopReload() { if (CurrentState == EWeaponState::Reloading) { bPendingReload = false; DetermineWeaponState(); } }
void AWeapon::OnEquipFinished(){ AttachMeshToPawn(); SetEquiped(true); bPendingEquip = false; DetermineWeaponState(); }
void AMagicBattleSoccerWeapon::OnUnEquip() { DetachMeshFromPawn(); bIsEquipped = false; StopFire(); DetermineWeaponState(); }
void AMagicBattleSoccerWeapon::OnEquip(FName InSocketName) { AttachMeshToPawn(InSocketName); bIsEquipped = true; // Determine the state so that the can reload checks will work DetermineWeaponState(); }
void ASWeapon::OnEquipFinished() { AttachMeshToPawn(); bIsEquipped = true; bPendingEquip = false; DetermineWeaponState(); }
void AShooterWeapon::StopReload() { if (CurrentState == EWeaponState::Reloading) { bPendingReload = false; DetermineWeaponState(); StopWeaponAnimation(ReloadAnim); } }
void AWeapon::StopAttack(){ if (Role < ROLE_Authority) { ServerStopAttack(); } if (bWantsToAttack) { bWantsToAttack = false; DetermineWeaponState(); } }
void AShooterWeapon::StartFire() { if (Role < ROLE_Authority) { ServerStartFire(); } if (!bWantsToFire) { bWantsToFire = true; DetermineWeaponState(); } }
void AShooterWeapon::StopFire() { if (Role < ROLE_Authority) { ServerStopFire(); } if (bWantsToFire) { bWantsToFire = false; DetermineWeaponState(); } }
void ASWeapon::OnUnEquip() { if (bPendingEquip) { StopWeaponAnimation(EquipAnim); bPendingEquip = false; GetWorldTimerManager().ClearTimer(EquipFinishedTimerHandle); } StopFire(); AttachMeshToPawn(StorageSlot); bIsEquipped = false; DetermineWeaponState(); }
void AWeapon::UnEquip(AMutagenCharacter* entity) { DetachMeshFromPawn(); SetEquiped(true); StopAttack(); if (bPendingEquip) { StopWeaponAnimation(equipAnimation); bPendingEquip = false; //GetWorldTimerManager().ClearTimer(this, &AWeapon::OnEquipFinished); GetWorldTimerManager().ClearTimer(equipTimerHandle); } DetermineWeaponState(); }
void AAWeapon::OnEquipFinished() { AttachMeshToPawn(); bIsEquipped = true; bPendingEquip = false; DetermineWeaponState(); if (MyPawn) { if (MyPawn->IsLocallyControlled() && CurrentAmmoInClip <= 0 && CanReload()) { StartReload(); } } }
void AWeapon::StartReload(bool bFromReplication) { if (!bFromReplication && Role < ROLE_Authority) { ServerStartReload(); } if (bFromReplication || CanReload()) { bPendingReload = true; DetermineWeaponState(); GetWorldTimerManager().SetTimer(TimerHandle_StopReload, this, &AWeapon::StopReload, ReloadDuration, false); if (Role == ROLE_Authority) { GetWorldTimerManager().SetTimer(TimerHandle_ReloadWeapon, this, &AWeapon::ReloadWeapon, FMath::Max(0.1f, ReloadDuration - 0.1f), false); } } }
void AWeapon::Equip(AMutagenCharacter* entity){ AttachMeshToPawn(); bPendingEquip = true; DetermineWeaponState(); float duration = PlayWeaponAnimation(equipAnimation); if (duration <= 0.0f) { duration = 0.5f; } EquipStartedTime = GetWorld()->GetTimeSeconds(); EquipDuration = duration; //GetWorldTimerManager().SetTimer(this, &AWeapon::OnEquipFinished, duration, false); GetWorldTimerManager().SetTimer(equipTimerHandle, this, &AWeapon::OnEquipFinished, duration, false); if (GetItemOwner() && GetItemOwner()->IsLocallyControlled()) { //play weapon equip sound } }
void ASWeapon::OnUnEquip() { bIsEquipped = false; StopFire(); if (bPendingEquip) { StopWeaponAnimation(EquipAnim); bPendingEquip = false; GetWorldTimerManager().ClearTimer(EquipFinishedTimerHandle); } if (bPendingReload) { StopWeaponAnimation(ReloadAnim); bPendingReload = false; GetWorldTimerManager().ClearTimer(TimerHandle_ReloadWeapon); } DetermineWeaponState(); }
void ASWeapon::OnEquip() { AttachMeshToPawn(); bPendingEquip = true; DetermineWeaponState(); float Duration = PlayWeaponAnimation(EquipAnim); if (Duration <= 0.0f) { // Failsafe Duration = 0.5f; } EquipStartedTime = GetWorld()->TimeSeconds; EquipDuration = Duration; GetWorldTimerManager().SetTimer(EquipFinishedTimerHandle, this, &ASWeapon::OnEquipFinished, Duration, false); if (MyPawn && MyPawn->IsLocallyControlled()) { PlayWeaponSound(EquipSound); } }
void AShooterWeapon::OnEquipFinished() { AttachMeshToPawn(); bIsEquipped = true; bPendingEquip = false; // Determine the state so that the can reload checks will work DetermineWeaponState(); if (MyPawn) { // try to reload empty clip if (MyPawn->IsLocallyControlled() && CurrentAmmoInClip <= 0 && CanReload()) { StartReload(); } } }
/** weapon is being equipped by owner pawn */ void AWeapon::OnEquip() { AttachMeshToPawn(); DetermineWeaponState(); }