Auto-call OnRep on server after editor property change + ForceNetUpdate

- After ImportText, automatically call the property's RepNotifyFunc via reflection
- ForceNetUpdate ensures replication to clients (OnRep fires on both server and client)
- No BP changes needed — fully transparent for replicated properties

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-14 19:50:20 +02:00
parent 6c39b5888f
commit 1f11b79222

View File

@@ -2121,10 +2121,28 @@ void UPS_Editor_MainWidget::ApplyPropertyFromUI(int32 RowIndex)
UE_LOG(LogTemp, Warning, TEXT("PS_Editor: ApplyProperty '%s' = '%s' -> Import %s"),
*Row.Key, *NewValueText, ImportResult ? TEXT("OK") : TEXT("FAILED"));
// Refresh rendering
// Refresh rendering + force network replication (triggers OnRep on clients)
if (UActorComponent* Comp = Cast<UActorComponent>(Target))
{
Comp->MarkRenderStateDirty();
if (AActor* OwnerActor = Comp->GetOwner())
{
OwnerActor->ForceNetUpdate();
}
}
else
{
Actor->ForceNetUpdate();
}
// Auto-call OnRep on the server (ImportText bypasses replication notify)
if (!Row.CachedProperty->RepNotifyFunc.IsNone())
{
if (UFunction* RepFunc = Target->FindFunction(Row.CachedProperty->RepNotifyFunc))
{
Target->ProcessEvent(RepFunc, nullptr);
UE_LOG(LogTemp, Log, TEXT("PS_Editor: Called %s on %s"), *Row.CachedProperty->RepNotifyFunc.ToString(), *Target->GetName());
}
}
// Export new value after import (normalized form for undo)