---@class BP_CharacterTrigger_C:AActor ---@field Box UBoxComponent ---@field DefaultSceneRoot USceneComponent --Edit Below-- local BP_ArenaArea = { InRangePlayerPawn = {} }; function BP_ArenaArea:ReceiveBeginPlay() BP_ArenaArea.SuperClass.ReceiveBeginPlay(self) if self:HasAuthority() then self.InRangePlayerPawn = {} self.PlayerPawnClass = UE.LoadClass(BPClassPath.PlayerPawn) self.Box.OnComponentBeginOverlap:Add(BP_ArenaArea.Box_OnComponentBeginOverlap,self) self.Box.OnComponentEndOverlap:Add(BP_ArenaArea.Box_OnComponentEndOverlap,self) end end function BP_ArenaArea:ReceiveEndPlay() if self:HasAuthority() then self.PlayerPawnClass = nil self.InRangePlayerPawn = nil self.Box.OnComponentBeginOverlap:Remove(BP_ArenaArea.Box_OnComponentBeginOverlap,self) self.Box.OnComponentEndOverlap:Remove(BP_ArenaArea.Box_OnComponentEndOverlap,self) end BP_ArenaArea.SuperClass.ReceiveEndPlay(self) end function BP_ArenaArea:UpdatePlayerPawnInRange(InPlayerPawn, IsAdd) if IsAdd then table.insert(self.InRangePlayerPawn, InPlayerPawn) InPlayerPawn.IsInArena = true else table.removeValue(self.InRangePlayerPawn, InPlayerPawn) InPlayerPawn.IsInArena = false end EventSystem:SendEvent(EventType.PlayerPawnInArenaChanged, self.InRangePlayerPawn) end function BP_ArenaArea:Box_OnComponentBeginOverlap(OverlappedComponent, OtherActor, OtherComp, OtherBodyIndex, bFromSweep, SweepResult) if UE.IsValid(OtherActor) and UE.IsA(OtherActor, self.PlayerPawnClass) then self:UpdatePlayerPawnInRange(OtherActor, true) end end function BP_ArenaArea:Box_OnComponentEndOverlap(OverlappedComponent, OtherActor, OtherComp, OtherBodyIndex) if UE.IsValid(OtherActor) and UE.IsA(OtherActor, self.PlayerPawnClass) then self:UpdatePlayerPawnInRange(OtherActor, false) end end return BP_ArenaArea;