static FString DescribeTaskHelper(const UGameplayTask& TaskOb) { const UObject* OwnerOb = Cast<const UObject>(TaskOb.GetTaskOwner()); return FString::Printf(TEXT("\n {white}%s%s {%s}%s:%d {white}Owner:{yellow}%s {white}Res:{yellow}%s"), *TaskOb.GetName(), TaskOb.GetInstanceName() != NAME_None ? *FString::Printf(TEXT(" {yellow}[%s]"), *TaskOb.GetInstanceName().ToString()) : TEXT(""), TaskOb.IsActive() ? TEXT("green") : TEXT("orange"), *TaskOb.GetTaskStateName(), TaskOb.GetPriority(), *GetNameSafe(OwnerOb), TaskOb.GetRequiredResources().IsEmpty() ? TEXT("None") : *TaskOb.GetRequiredResources().GetDebugDescription()); }
void UGameplayTask::OnGameplayTaskDeactivated(UGameplayTask& Task) { // cleanup after deactivation if (&Task == ChildTask) { UE_VLOG(GetGameplayTasksComponent(), LogGameplayTasks, Verbose, TEXT("%s> Child task deactivated: %s (state: %s)"), *GetName(), *Task.GetName(), *Task.GetTaskStateName()); if (Task.IsFinished()) { ChildTask = nullptr; } } }