Do not register player as agent
This commit is contained in:
parent
ffe8b932f9
commit
494102d1ea
|
@ -37,11 +37,21 @@ void UAgentComponent::AcceptVisitor(IAgentComponentVisitor &Visitor) const
|
|||
void UAgentComponent::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
GetDataRouter(GetWorld()).RegisterAgent(this);
|
||||
|
||||
if (bRegisterAgentComponent)
|
||||
{
|
||||
GetDataRouter(GetWorld()).RegisterAgent(this);
|
||||
bAgentComponentIsRegistered = true;
|
||||
}
|
||||
}
|
||||
|
||||
void UAgentComponent::EndPlay(const EEndPlayReason::Type EndPlayReason)
|
||||
{
|
||||
GetDataRouter(GetWorld()).DeregisterAgent(this);
|
||||
if (bAgentComponentIsRegistered)
|
||||
{
|
||||
GetDataRouter(GetWorld()).DeregisterAgent(this);
|
||||
bAgentComponentIsRegistered = false;
|
||||
}
|
||||
|
||||
Super::EndPlay(EndPlayReason);
|
||||
}
|
||||
|
|
|
@ -36,4 +36,16 @@ protected:
|
|||
virtual void BeginPlay() override;
|
||||
|
||||
virtual void EndPlay(EEndPlayReason::Type EndPlayReason) override;
|
||||
|
||||
protected:
|
||||
|
||||
/** If true, this component will be registered at BeginPlay. */
|
||||
UPROPERTY(Category = "Agent Component", EditAnywhere)
|
||||
bool bRegisterAgentComponent = true;
|
||||
|
||||
private:
|
||||
|
||||
/** Whether this component has been registered. */
|
||||
UPROPERTY(Category = "Agent Component", VisibleAnywhere, AdvancedDisplay)
|
||||
bool bAgentComponentIsRegistered = false;
|
||||
};
|
||||
|
|
|
@ -11,6 +11,12 @@
|
|||
|
||||
#include "Vehicle/CarlaWheeledVehicle.h"
|
||||
|
||||
static bool IsPlayer(const ACarlaWheeledVehicle &Vehicle)
|
||||
{
|
||||
auto *Controller = Cast<AWheeledVehicleAIController>(Vehicle.GetController());
|
||||
return (Controller != nullptr) && Controller->IsPossessingThePlayer();
|
||||
}
|
||||
|
||||
UVehicleAgentComponent::UVehicleAgentComponent(const FObjectInitializer &ObjectInitializer)
|
||||
: Super(ObjectInitializer) {}
|
||||
|
||||
|
@ -19,5 +25,8 @@ void UVehicleAgentComponent::BeginPlay()
|
|||
WheeledVehicle = Cast<ACarlaWheeledVehicle>(GetOwner());
|
||||
checkf(WheeledVehicle != nullptr, TEXT("UVehicleAgentComponent can only be attached to ACarlaWheeledVehicle"));
|
||||
|
||||
// We only want to register non-player agents.
|
||||
bRegisterAgentComponent = !IsPlayer(*WheeledVehicle);
|
||||
|
||||
Super::BeginPlay();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue