// Fill out your copyright notice in the Description page of Project Settings. #include "Item.h" #include "ShooterCharacter.h" #include "Components/BoxComponent.h" #include "Components/SphereComponent.h" #include "Components/WidgetComponent.h" // Sets default values AItem::AItem() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; ItemMesh = CreateDefaultSubobject(TEXT("ItemMesh")); SetRootComponent(ItemMesh); CollisionBox = CreateDefaultSubobject(TEXT("CollisionBox")); CollisionBox->SetupAttachment(ItemMesh); CollisionBox->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore); CollisionBox->SetCollisionResponseToChannel(ECollisionChannel::ECC_Visibility, ECollisionResponse::ECR_Block); PickupWidget = CreateDefaultSubobject(TEXT("PickupWidget")); PickupWidget->SetupAttachment(GetRootComponent()); AreaSphere = CreateDefaultSubobject(TEXT("AreaSphere")); AreaSphere->SetupAttachment(GetRootComponent()); } // Called when the game starts or when spawned void AItem::BeginPlay() { Super::BeginPlay(); // Hide Pickup Widget PickupWidget->SetVisibility(false); // Setup overlap for AreaSphere AreaSphere->OnComponentBeginOverlap.AddDynamic(this, &AItem::OnSphereOverlap); AreaSphere->OnComponentEndOverlap.AddDynamic(this, &AItem::OnSphereEndOverlap); } // Called every frame void AItem::Tick(float DeltaTime) { Super::Tick(DeltaTime); } void AItem::OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) { if (OtherActor) { AShooterCharacter* ShooterCharacter = Cast(OtherActor); if (ShooterCharacter) { ShooterCharacter->IncrementOverlappedItemCount(1); } } } void AItem::OnSphereEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex) { if (OtherActor) { AShooterCharacter* ShooterCharacter = Cast(OtherActor); if (ShooterCharacter) { ShooterCharacter->IncrementOverlappedItemCount(-1); } } }