# voxelwaterpulse.Debug

`voxelwaterpulse.Debug` belongs to the VoxelWaterPulse runtime module.

Veniam voluptate nulla eiusmod voluptate incididunt consectetur ut aliqua esse eiusmod labore lorem consectetur incididunt. Nisi esse occaecat amet nostrud aliqua reprehenderit duis consectetur aute commodo fugiat. Consectetur ullamco veniam nisi nulla irure sit sit voluptate elit dolor.

## Declaration

```cpp
// Load configuration from data asset
UMyConfigAsset* Config = LoadObject<UMyConfigAsset>(
    nullptr,
    TEXT("/Game/Config/DefaultPluginConfig.DefaultPluginConfig")
);

if (Config)
{
    Settings.MaxPoolSize = Config->MaxPoolSize;
    Settings.TickRate = Config->TickRate;
    Settings.bEnableDebugDraw = Config->bEnableDebugDraw;
    Settings.LogVerbosity = Config->LogVerbosity;

    UE_LOG(LogVoxelWaterPulse, Log, TEXT("Configuration loaded: PoolSize=%d, TickRate=%.2f"),
        Settings.MaxPoolSize, Settings.TickRate);
}
```

## Members

| Event | Parameters | Description |
| --- | --- | --- |
| OnStateChanged | EMyState NewState | Fired when state transitions |
| OnProgressUpdated | float Progress, FString Message | Fired on progress change |
| OnError | FString ErrorMessage, int32 Code | Fired on error |
| OnInitialized | bool bSuccess | Fired after initialization |

## Example

```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;
}
```