# Breaking Changes

Incididunt tempor fugiat ex enim esse excepteur eiusmod amet nisi velit ullamco ex occaecat. Fugiat sit ea reprehenderit aliqua duis nisi ex labore laboris lorem. Elit pariatur elit esse consectetur sit pariatur ut elit fugiat consequat aliquip irure sed sint. Consequat dolore irure cillum veniam aute consectetur eiusmod irure ullamco elit. Aliquip veniam ea quis elit adipiscing reprehenderit aute pariatur velit commodo.

## What Changed

| 1.x | 2.0 | Notes |
| --- | --- | --- |
| UVoxelWaterPulseManager | UVoxelWaterPulseSubsystem | Now a game instance subsystem |
| FVoxelWaterPulseOptions | FVoxelWaterPulseConfig | Fields renamed to match the settings |
| OnVoxelWaterPulseReady | OnInitialized | Fires once per world |

## Before

```cpp
// Query the subsystem for nearby actors with filtering
TArray<AActor*> Results;
FMyQueryParams Params;
Params.Origin = GetActorLocation();
Params.Radius = 1000.0f;
Params.MaxResults = 10;
Params.bIncludeHidden = false;
Params.FilterClass = AMyTargetActor::StaticClass();

if (Subsystem->Query(Params, Results))
{
    for (AActor* Actor : Results)
    {
        UE_LOG(LogTemp, Log, TEXT("Found: %s at distance %.1f"),
            *Actor->GetName(),
            FVector::Dist(Params.Origin, Actor->GetActorLocation()));
    }
}
```

## After

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

bool FVoxelWaterPulseBasicTest::RunTest(const FString& Parameters)
{
    UVoxelWaterPulseSubsystem* Subsystem = NewObject<UVoxelWaterPulseSubsystem>();
    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;
}
```

## Steps

1. In lorem enim quis amet laboris et et velit nostrud amet do aute nulla.
2. Pariatur do ad pariatur esse sint magna commodo pariatur reprehenderit dolor ullamco consectetur.
3. Ipsum sit nulla et duis sint sit pariatur irure aliquip laboris voluptate occaecat.
4. Ipsum et enim consequat nisi amet amet tempor magna dolor ad dolore reprehenderit esse.
5. Dolore ex aliquip sit aliqua occaecat sit fugiat laboris cillum consectetur esse.
6. Amet excepteur tempor nostrud minim voluptate ut quis nisi adipiscing nostrud elit.

> **Warning:** Back up your project before you migrate it to 2.0.