OnComponentBeginOverlap not triggering on one of two components

Hello.

I’m in the process of creating a “machine” that will have an entrance and an exit box component. These box components are used for collision detection, and should trigger when certain objects enter them.

Consider the following header and cpp files:

Header

UCLASS()
class SOMEGAME_API AMachine
{
	GENERATED_BODY();

public:
	AMachine();

	UPROPERTY(VisibleAnywhere)
	UBoxComponent* In;

	UPROPERTY(VisibleAnywhere)
	UBoxComponent* Out;

private:

    UFUNCTION()
    void DoBuild();

	UFUNCTION()
	void OnInOverlapBegin(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);

	UFUNCTION()
	void OnOutOverlapBegin(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);

public:
    void BeginPlay() override;
    void Tick(float DeltaTime) override;
};

CPP

AMachine::AMachine()
{
	PrimaryActorTick.bCanEverTick = true;
	PrimaryActorTick.bStartWithTickEnabled = true;

	InCollision = CreateDefaultSubobject<UBoxComponent>(TEXT("InCollision"));
	InCollision->AttachToComponent(GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform);
	InCollision->SetCollisionObjectType(ECC_Machine);
	InCollision->SetCollisionResponseToAllChannels(ECR_Ignore);
	InCollision->SetGenerateOverlapEvents(true);

	OutCollision = CreateDefaultSubobject<UBoxComponent>(TEXT("OutCollision"));
	OutCollision->AttachToComponent(GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform);
	OutCollision->SetCollisionObjectType(ECC_Machine);
	OutCollision->SetCollisionResponseToAllChannels(ECR_Ignore);
	OutCollision->SetGenerateOverlapEvents(true);
}

void AMachine::BeginPlay()
{
	Super::BeginPlay();

	InCollision->OnComponentBeginOverlap.AddDynamic(this, &AIOMaster::OnInOverlapBegin);
	OutCollision->OnComponentBeginOverlap.AddDynamic(this, &AIOMaster::OnOutOverlapBegin);
}

void AMachine::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
}

void AMachine : DoBuild()
{
	InCollision->SetCollisionResponseToChannel(ECC_Room, ECR_Overlap);
	OutCollision->SetCollisionResponseToChannel(ECC_Room, ECR_Overlap);
}

void AIOMaster::OnInOverlapBegin(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
	// Do something
}

void AIOMaster::OnOutOverlapBegin(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
	// Do something
}

To quickly explain what’s going on, the machine in and out collision boxes, will change collision settings whenever the machine is built (this part is already working as expected, and the collision settings ARE changed), and should now collide with all actors with object type Room. I’ve set up a room actor, and made sure that the room will also collide with the machine.

Using the above cpp, the in collision box is currently triggering the overlap whenever the room overlaps the in collision. My issue however, is that this doesn’t seem to work for the out collision. Just for fun, I tried changing the delegate to trigger the OnInOverlapBegin to the out collision box, and for some strange reason, that seems to work just fine. I immediately tried to copy-paste the declaration, as I figured I must’ve forgotten some arguments, but this makes no difference.

Any help towards triggering the overlap event on the out collision, is highly appreciated.