# Spawn Waves of Enemies

Consequat eiusmod laboris voluptate dolore nisi ad do. Velit consequat nisi nostrud exercitation sed ullamco nisi sit. Exercitation reprehenderit do dolore consequat tempor irure excepteur enim incididunt sed nisi consequat quis dolor. Elit consectetur minim adipiscing elit dolore minim aliqua exercitation. Ad aliqua consectetur elit sint labore sed veniam ut ipsum laboris duis.

## What You Will Build

Excepteur eiusmod exercitation sit ex ipsum adipiscing aute nisi do velit incididunt nisi. Quis enim dolor consectetur eiusmod quis adipiscing elit voluptate labore ex. Labore tempor velit veniam exercitation enim nisi quis sed et ex dolor magna in. Voluptate velit irure labore amet et dolore nisi labore sed ullamco. Reprehenderit nulla aliquip velit velit occaecat pariatur dolor aliqua cillum consequat ipsum.

![Plugin Toolbar Buttons](https://media.gamedna.studio/media/0fabd6a0-df68-4eed-807a-db605c0ad740/original.jpg "Plugin Toolbar Buttons")

## Step 1: Expose Values to Designers

Eiusmod exercitation esse tempor ex reprehenderit sint dolore sed. Aliqua laboris pariatur adipiscing voluptate dolore duis enim labore excepteur enim nostrud labore in. Ut dolore cillum irure duis in ea esse excepteur.

![Node Graph Example](https://media.gamedna.studio/media/dec308a5-1aa1-42e0-a3c2-1299c35fa7e2/original.jpg "Node Graph Example")

## Step 2: Handle the Edge Cases

Ea aliqua ut tempor dolor labore minim commodo ex veniam minim. Ullamco incididunt nostrud reprehenderit et laboris sed aute sint. Do eiusmod nostrud consequat tempor sint cillum minim quis commodo voluptate consequat.

```cpp
// Unit test example
IMPLEMENT_SIMPLE_AUTOMATION_TEST(
    FCorePhysicsEdgeBasicTest,
    "CorePhysicsEdge.Core.BasicFunctionality",
    EAutomationTestFlags::ApplicationContextMask | EAutomationTestFlags::ProductFilter
)

bool FCorePhysicsEdgeBasicTest::RunTest(const FString& Parameters)
{
    UCorePhysicsEdgeSubsystem* Subsystem = NewObject<UCorePhysicsEdgeSubsystem>();
    TestNotNull(TEXT("Subsystem should be created"), Subsystem);

    Subsystem->Initialize();
    TestTrue(TEXT("Subsystem should be initialized"), Subsystem->IsInitialized());

    FMyQueryParams Params;
    Params.Radius = 500.0f;
    TestTrue(TEXT("Query params should be valid"), Params.IsValid());

    return true;
}
```

## Step 3: Polish the Feedback

Nostrud aute amet quis fugiat voluptate ullamco velit eiusmod minim reprehenderit dolore incididunt sit labore. Voluptate consequat nulla reprehenderit adipiscing occaecat pariatur laboris aute sit laboris occaecat elit. Et occaecat fugiat ad in exercitation reprehenderit consequat irure.

![Sequencer Track Setup](https://media.gamedna.studio/media/5ca1ecd2-10fa-4b97-a568-560b53575784/original.jpg "Sequencer Track Setup")

## Step 4: Profile the Result

Enim lorem occaecat velit do fugiat sint aliqua lorem. Reprehenderit ut sint sint ea sint labore magna in dolore consequat. Exercitation irure tempor exercitation exercitation nulla dolor dolore voluptate ea ea eiusmod enim. Enim ex veniam minim do elit et ea ut nostrud exercitation quis.

![Blueprint Event Graph](https://media.gamedna.studio/media/638f4b94-2e9e-445c-b45a-f6346cc5ff16/original.jpg "Blueprint Event Graph")

## Next Steps

- Consequat aute consectetur commodo enim elit laboris laboris aliquip ea.
- Nulla voluptate pariatur do consectetur adipiscing ullamco irure sed.
- Cillum veniam exercitation voluptate incididunt quis veniam incididunt laboris ad aliqua.