Quartz UI ↗
Browse docs
On this page
Private preview · 0.57.0-devView Markdown

QuartzUIEditorDevServer: declaration reference

0.57.0-dev · beta source documentation. Native, Blueprint, Editor and rendering examples are source-reviewed, not executed in Unreal during this scan. See validation and limits.

Pinned source (source: Source/QuartzUIEditor/Public/QuartzUIEditorDevServer.h) · integration recipe · practical guide

FQuartzUIEditorDevServerLaunch

Editor type. Editor Dev Server Launch: a declared type in validated project-local vite process and redirect lifetime; use its exact fields/operations below.

Prerequisites / integration: Installed source plugin; Editor tools additionally require a compiled compatible host Editor target. Use the QuartzUIEditorDevServer recipe in the host module QuartzUIEditor.

Minimal example / lifecycle: Set project frontend root then Start/Stop Vite Dev Server. Editor owns and stops only its launched process tree.

Avoid: Installing dependencies implicitly or silently changing ports. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIEditor/Public/QuartzUIEditorDevServer.h#L6)

FQuartzUIEditorDevServerPolicy

Internal type. Validates the fixed Node + project-local Vite command assembled by the Editor.

Prerequisites / integration: Installed source plugin; Editor tools additionally require a compiled compatible host Editor target. Use the QuartzUIEditorDevServer recipe in the host module QuartzUIEditor.

Minimal example / lifecycle: Set project frontend root then Start/Stop Vite Dev Server. Editor owns and stops only its launched process tree.

Avoid: Installing dependencies implicitly or silently changing ports. This named helper is runtime-owned; inspect/use it through the owner above rather than constructing it in gameplay.

Exact source line (source: Source/QuartzUIEditor/Public/QuartzUIEditorDevServer.h#L15)

FQuartzUIEditorDevServer

Editor type. Owns exactly one child process and never searches for or kills unrelated processes.

Prerequisites / integration: Installed source plugin; Editor tools additionally require a compiled compatible host Editor target. Use the QuartzUIEditorDevServer recipe in the host module QuartzUIEditor.

Minimal example / lifecycle: Set project frontend root then Start/Stop Vite Dev Server. Editor owns and stops only its launched process tree.

Avoid: Installing dependencies implicitly or silently changing ports. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIEditor/Public/QuartzUIEditorDevServer.h#L33)

Complete header

Source snapshot, not an additional example. Unreal annotations distinguish exposed Blueprint nodes from native-only/private methods.

#pragma once

#include "CoreMinimal.h"
#include "QuartzUIDevelopmentPolicy.h"

struct QUARTZUIEDITOR_API FQuartzUIEditorDevServerLaunch
{
	FString Executable;
	FString Parameters;
	FString WorkingDirectory;
	FQuartzUIDevelopmentEndpoint Endpoint;
};

/** Validates the fixed Node + project-local Vite command assembled by the Editor. */
class QUARTZUIEDITOR_API FQuartzUIEditorDevServerPolicy final
{
public:
	static constexpr int32 MaxCapturedLineLength = 4096;

	static bool TryBuildLaunch(
		FName AppId,
		const FString& FrontendRoot,
		const FString& NodeExecutable,
		int32 Port,
		const FString& EntryPath,
		FQuartzUIEditorDevServerLaunch& OutLaunch,
		FString& OutError);
	/** Removes terminal escape/control sequences and applies the log allocation bound. */
	static FString SanitizeOutputLine(const FString& Line);
};

/** Owns exactly one child process and never searches for or kills unrelated processes. */
class QUARTZUIEDITOR_API FQuartzUIEditorDevServer final
{
public:
	FQuartzUIEditorDevServer();
	~FQuartzUIEditorDevServer();

	bool Start(const FQuartzUIEditorDevServerLaunch& Launch, FString& OutError);
	void Stop();
	void Refresh();
	bool IsRunning();
	FString GetUrl() const;

private:
	TUniquePtr<class FMonitoredProcess> Process;
	TOptional<FQuartzUIDevelopmentEndpoint> ActiveEndpoint;
};