Hi,
I’m having a read access exception thrown by the ProcessMulticastDelegate. (See image attached to see where)
My Source code:
#pragma once
#include "Components/ActorComponent.h"
#include "Components/LaserComponent.h"
#include "LaserReceiverComponent.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnRemoveLaserDelegate, ULaserComponent*, LaserComponent);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnAddLaserDelegate, ULaserComponent*, LaserComponent);
UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent))
class MYPROJECT_API ULaserReceiverComponent : public UActorComponent
{
GENERATED_BODY()
public:
UPROPERTY(Category= MyCategory, BlueprintAssignable)
FOnRemoveLaserDelegate OnRemoveLaser;
UPROPERTY(Category = MyCategory, BlueprintAssignable)
FOnAddLaserDelegate OnAddLaser;
ULaserReceiverComponent();
virtual void BeginPlay() override;
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
void AddLaser(ULaserComponent* Laser);
void RemoveLaser(ULaserComponent* Laser);
};
CPP
#include "MyProject.h"
#include "LaserReceiverComponent.h"
ULaserReceiverComponent::ULaserReceiverComponent() :Super()
{
PrimaryComponentTick.bCanEverTick = true;
bWantsBeginPlay = true;
}
void ULaserReceiverComponent::BeginPlay()
{
Super::BeginPlay();
}
void ULaserReceiverComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
}
void ULaserReceiverComponent::AddLaser(ULaserComponent* Laser)
{
OnAddLaser.Broadcast(Laser);
}
void ULaserReceiverComponent::RemoveLaser(ULaserComponent* Laser)
{
OnRemoveLaser.Broadcast(Laser);
}
CALLER CPP
void ULaserComponent::SetNewReceiver(ULaserReceiverComponent* NewReceiver)
{
if (NewReceiver == Receiver)
{
return;
}
if (Receiver)
{
Receiver->RemoveLaser(this);
}
if (NewReceiver)
{
Receiver->AddLaser(this);
}
Receiver = NewReceiver;
}