Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "TriggerComponent.h"
- UTriggerComponent::UTriggerComponent()
- {
- OpenForTag = "PressurePlateActivator";
- }
- void UTriggerComponent::BeginPlay()
- {
- Super::BeginPlay();
- if (TargetActor)
- {
- TargetMoverComponent = TargetActor->FindComponentByClass<UMoverComponent>();
- if (!TargetMoverComponent)
- {
- UE_LOG(LogTemp, Warning, TEXT("Actor %s linked to %s doesn't have a UMoverComponent"), *TargetActor->GetName(), *GetName());
- }
- }
- else
- {
- UE_LOG(LogTemp, Warning, TEXT("%s is not linked to an Actor"), *GetName());
- }
- OnComponentBeginOverlap.AddDynamic(this, &UTriggerComponent::OnOverlapBegin);
- OnComponentEndOverlap.AddDynamic(this, &UTriggerComponent::OnOverlapEnd);
- }
- void UTriggerComponent::OnOverlapBegin(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
- {
- if (OtherActor && OtherActor->ActorHasTag(OpenForTag))
- {
- TriggeringActorCount++;
- if (!bIsTriggered)
- {
- HandleDerivateOverlapBegin(OverlappedComp, OtherActor, OtherComp, OtherBodyIndex, bFromSweep, SweepResult);
- SetTrigger(true);
- }
- }
- }
- void UTriggerComponent::OnOverlapEnd(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)
- {
- if (bIsTriggered && OtherActor && OtherActor->ActorHasTag(OpenForTag))
- {
- TriggeringActorCount--;
- if (TriggeringActorCount == 0 && bIsTriggered)
- {
- HandleDerivateOverlapEnd(OverlappedComp, OtherActor, OtherComp, OtherBodyIndex);
- SetTrigger(false);
- }
- }
- }
- void UTriggerComponent::HandleDerivateOverlapBegin(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
- {
- }
- void UTriggerComponent::HandleDerivateOverlapEnd(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)
- {
- }
- void UTriggerComponent::SetTrigger(bool bNewState)
- {
- bIsTriggered = bNewState;
- if (TargetMoverComponent)
- {
- TargetMoverComponent->Trigger(bIsTriggered);
- }
- }
- void UTriggerComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
- {
- Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
- }
Advertisement
Add Comment
Please, Sign In to add comment