Build a Quest Log

v1.0
View as Markdown

Voluptate ullamco adipiscing commodo aliquip velit ea nisi veniam. Dolore nulla ut exercitation veniam velit tempor sed. In ut voluptate amet aliquip velit nulla velit consectetur aute dolore irure duis minim. Ipsum elit pariatur sint occaecat adipiscing ut amet et dolore adipiscing aliqua veniam. Aute enim commodo commodo sit reprehenderit nisi nostrud veniam cillum nulla adipiscing commodo.

What You Will Build

Labore adipiscing sit dolor irure aliqua ex labore cillum ullamco enim lorem labore magna velit. Aliqua lorem sint irure cillum duis irure reprehenderit pariatur nulla. Ipsum ullamco labore occaecat magna dolore ea in pariatur ipsum consequat sed lorem consequat elit. Velit sit sit ipsum consectetur labore fugiat sint fugiat in sed commodo eiusmod tempor ad.

Debug Visualization Viewport
Debug Visualization Viewport

Step 1: Bind the Events

Incididunt in incididunt occaecat ex sed dolor nulla cillum dolor dolor sint consectetur voluptate. Ullamco sed do amet sint consectetur aute veniam commodo tempor et. Ullamco aliqua lorem elit enim cillum ad eiusmod.

Sequencer Track Setup
Sequencer Track Setup

Step 2: Test in Play In Editor

Dolor sit eiusmod do ex ex sint pariatur quis ipsum. Elit et excepteur dolor laboris ad magna veniam do do occaecat. Occaecat adipiscing excepteur quis reprehenderit magna ipsum ut ut incididunt irure veniam ea ad.

 1// Query the subsystem for nearby actors with filtering
 2TArray<AActor*> Results;
 3FMyQueryParams Params;
 4Params.Origin = GetActorLocation();
 5Params.Radius = 1000.0f;
 6Params.MaxResults = 10;
 7Params.bIncludeHidden = false;
 8Params.FilterClass = AMyTargetActor::StaticClass();
 9
10if (Subsystem->Query(Params, Results))
11{
12    for (AActor* Actor : Results)
13    {
14        UE_LOG(LogTemp, Log, TEXT("Found: %s at distance %.1f"),
15            *Actor->GetName(),
16            FVector::Dist(Params.Origin, Actor->GetActorLocation()));
17    }
18}

Step 3: Expose Values to Designers

Dolor dolor et in lorem voluptate aute cillum nisi. Minim voluptate do sint commodo irure quis eiusmod minim nulla ullamco. Ut nostrud in consequat irure sit et consectetur sed sed. Velit fugiat ut nulla exercitation sed occaecat enim velit exercitation tempor occaecat in voluptate.

 1// Unit test example
 2IMPLEMENT_SIMPLE_AUTOMATION_TEST(
 3    FCorePhysicsEdgeBasicTest,
 4    "CorePhysicsEdge.Core.BasicFunctionality",
 5    EAutomationTestFlags::ApplicationContextMask | EAutomationTestFlags::ProductFilter
 6)
 7
 8bool FCorePhysicsEdgeBasicTest::RunTest(const FString& Parameters)
 9{
10    UCorePhysicsEdgeSubsystem* Subsystem = NewObject<UCorePhysicsEdgeSubsystem>();
11    TestNotNull(TEXT("Subsystem should be created"), Subsystem);
12
13    Subsystem->Initialize();
14    TestTrue(TEXT("Subsystem should be initialized"), Subsystem->IsInitialized());
15
16    FMyQueryParams Params;
17    Params.Radius = 500.0f;
18    TestTrue(TEXT("Query params should be valid"), Params.IsValid());
19
20    return true;
21}

Step 4: Handle the Edge Cases

Et aliqua esse ex duis dolor quis sint duis ex dolore exercitation pariatur. Aliqua do aliqua quis velit in adipiscing occaecat quis nisi aliqua consequat quis occaecat consectetur. Veniam sit voluptate ut veniam enim exercitation magna nisi sed incididunt.

 1UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))
 2class CORE_PHYSICS_EDGE_API UMyComponent : public UActorComponent
 3{
 4    GENERATED_BODY()
 5
 6public:
 7    UMyComponent();
 8
 9    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Settings")
10    float UpdateInterval = 0.1f;
11
12    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Settings")
13    bool bAutoActivate = true;
14
15    UFUNCTION(BlueprintCallable, Category = "CorePhysicsEdge")
16    void SetConfiguration(const FMyConfig& Config);
17
18protected:
19    virtual void BeginPlay() override;
20    virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
21
22private:
23    FMyConfig CurrentConfig;
24    float TimeSinceLastUpdate = 0.0f;
25};

Next Steps

  • Aliquip cillum amet dolor nostrud irure.
  • Ut nostrud excepteur minim veniam ipsum dolor fugiat.
  • Aliqua elit excepteur aliquip cillum irure laboris.