You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Protect against null access crashes for the lyra team subsystem, ensure when it definitely should exist
#jira UE-176207 #rb ben.hoffman #preflight none [CL 24085332 by ben zeigler in ue5-main branch]
This commit is contained in:
@@ -20,6 +20,11 @@ UTDM_PlayerSpawningManagmentComponent::UTDM_PlayerSpawningManagmentComponent(con
|
||||
AActor* UTDM_PlayerSpawningManagmentComponent::OnChoosePlayerStart(AController* Player, TArray<ALyraPlayerStart*>& PlayerStarts)
|
||||
{
|
||||
ULyraTeamSubsystem* TeamSubsystem = GetWorld()->GetSubsystem<ULyraTeamSubsystem>();
|
||||
if (!ensure(TeamSubsystem))
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const int32 PlayerTeamId = TeamSubsystem->FindTeamFromObject(Player);
|
||||
|
||||
// We should have a TeamId by now, but early login stuff before post login can try to do stuff, ignore it.
|
||||
|
||||
@@ -90,7 +90,10 @@ void ULyraDamageExecution::Execute_Implementation(const FGameplayEffectCustomExe
|
||||
if (HitActor)
|
||||
{
|
||||
ULyraTeamSubsystem* TeamSubsystem = HitActor->GetWorld()->GetSubsystem<ULyraTeamSubsystem>();
|
||||
DamageInteractionAllowedMultiplier = TeamSubsystem->CanCauseDamage(EffectCauser, HitActor) ? 1.0 : 0.0;
|
||||
if (ensure(TeamSubsystem))
|
||||
{
|
||||
DamageInteractionAllowedMultiplier = TeamSubsystem->CanCauseDamage(EffectCauser, HitActor) ? 1.0 : 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
// Determine distance
|
||||
|
||||
@@ -40,7 +40,11 @@ void ALyraTeamInfoBase::EndPlay(const EEndPlayReason::Type EndPlayReason)
|
||||
if (TeamId != INDEX_NONE)
|
||||
{
|
||||
ULyraTeamSubsystem* TeamSubsystem = GetWorld()->GetSubsystem<ULyraTeamSubsystem>();
|
||||
TeamSubsystem->UnregisterTeamInfo(this);
|
||||
if (TeamSubsystem)
|
||||
{
|
||||
// EndPlay can happen at weird times where the subsystem has already been destroyed
|
||||
TeamSubsystem->UnregisterTeamInfo(this);
|
||||
}
|
||||
}
|
||||
|
||||
Super::EndPlay(EndPlayReason);
|
||||
@@ -56,7 +60,10 @@ void ALyraTeamInfoBase::TryRegisterWithTeamSubsystem()
|
||||
if (TeamId != INDEX_NONE)
|
||||
{
|
||||
ULyraTeamSubsystem* TeamSubsystem = GetWorld()->GetSubsystem<ULyraTeamSubsystem>();
|
||||
RegisterWithTeamSubsystem(TeamSubsystem);
|
||||
if (ensure(TeamSubsystem))
|
||||
{
|
||||
RegisterWithTeamSubsystem(TeamSubsystem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user