# FQuestSystemOnStateChanged

`FQuestSystemOnStateChanged` belongs to the QuestSystem runtime module.

Enim sit duis ad ullamco esse irure reprehenderit veniam esse. Sit cillum consectetur dolor nostrud aute aliquip fugiat minim do commodo eiusmod nostrud exercitation. Nulla ullamco lorem velit commodo velit dolor occaecat adipiscing.

## Declaration

```cpp
UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))
class QUEST_SYSTEM_API UMyComponent : public UActorComponent
{
    GENERATED_BODY()

public:
    UMyComponent();

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Settings")
    float UpdateInterval = 0.1f;

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Settings")
    bool bAutoActivate = true;

    UFUNCTION(BlueprintCallable, Category = "QuestSystem")
    void SetConfiguration(const FMyConfig& Config);

protected:
    virtual void BeginPlay() override;
    virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;

private:
    FMyConfig CurrentConfig;
    float TimeSinceLastUpdate = 0.0f;
};
```

## 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

```ini
; DefaultEngine.ini
[/Script/QuestSystem.QuestSystemSettings]
bEnabled=true
MaxPoolSize=100
TickRate=60.0
LogVerbosity=Warning
bEnableDebugDraw=false

[/Script/QuestSystem.QuestSystemNetworkSettings]
bReplicateState=true
UpdateFrequency=10.0
MaxReplicationDistance=10000.0
```

> **Warning:** Debug visualization has a measurable performance cost. Always disable it in shipping builds.