# UCorePhysicsEdgeWorldSubsystem

`UCorePhysicsEdgeWorldSubsystem` belongs to the CorePhysicsEdge runtime module.

Sit labore voluptate nulla incididunt amet velit nulla commodo. Duis veniam aliqua aliquip elit ex voluptate in pariatur veniam dolor in labore. Ut consectetur sint in quis laboris minim sed velit pariatur aliquip nostrud ex enim. Nisi excepteur dolore adipiscing eiusmod ex fugiat nulla fugiat nisi ex ea incididunt occaecat do. Duis excepteur cillum amet nulla sit velit quis sed ad enim ex nisi labore. Exercitation sit incididunt aliqua ipsum aliquip excepteur dolor eiusmod ut esse aliquip ad enim elit.

## Declaration

```cpp
// Declare delegates for event-driven communication
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnStateChanged, EMyState, NewState);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnProgressUpdated, float, Progress, FString, Message);

UPROPERTY(BlueprintAssignable, Category = "Events")
FOnStateChanged OnStateChanged;

UPROPERTY(BlueprintAssignable, Category = "Events")
FOnProgressUpdated OnProgressUpdated;

// Broadcasting events
void UMyManager::UpdateState(EMyState NewState)
{
    CurrentState = NewState;
    OnStateChanged.Broadcast(NewState);
    OnProgressUpdated.Broadcast(GetProgress(), GetStatusMessage());
}
```

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