From 3c3723531ad341001e5763c33697230a91b094dc Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 11 Apr 2026 04:07:43 +0200 Subject: [PATCH] Add loading screen settings to scene document --- src/document/scene-document.ts | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/document/scene-document.ts b/src/document/scene-document.ts index a7749233..c1e414f9 100644 --- a/src/document/scene-document.ts +++ b/src/document/scene-document.ts @@ -28,12 +28,20 @@ export const FIRST_ROOM_POLISH_SCENE_DOCUMENT_VERSION = 5 as const; export const WORLD_ENVIRONMENT_SCENE_DOCUMENT_VERSION = 6 as const; export const ENTITY_SYSTEM_FOUNDATION_SCENE_DOCUMENT_VERSION = 7 as const; export const TRIGGER_ACTION_TARGET_FOUNDATION_SCENE_DOCUMENT_VERSION = 8 as const; +export const RUNNER_LOADING_SCREEN_SCENE_DOCUMENT_VERSION = 23 as const; export const DEFAULT_PROJECT_SCENE_ID = "scene-main" as const; +export interface SceneLoadingScreenSettings { + colorHex: string; + headline: string | null; + description: string | null; +} + export interface ProjectScene { id: string; name: string; + loadingScreen: SceneLoadingScreenSettings; world: WorldSettings; brushes: Record; modelInstances: Record; @@ -84,6 +92,7 @@ export function createEmptyProjectScene( return { id: overrides.id ?? createOpaqueId("scene"), name: overrides.name ?? "Untitled Scene", + loadingScreen: createDefaultSceneLoadingScreenSettings(), world: overrides.world ?? createDefaultWorldSettings(), brushes: {}, modelInstances: {}, @@ -165,6 +174,7 @@ export function createProjectDocumentFromSceneDocument( [sceneId]: { id: sceneId, name: sceneDocument.name, + loadingScreen: createDefaultSceneLoadingScreenSettings(), world: sceneDocument.world, brushes: sceneDocument.brushes, modelInstances: sceneDocument.modelInstances, @@ -205,3 +215,32 @@ export function applySceneDocumentToProject( } }; } + +export function createDefaultSceneLoadingScreenSettings(): SceneLoadingScreenSettings { + return { + colorHex: "#0d1117", + headline: null, + description: null + }; +} + +export function cloneSceneLoadingScreenSettings( + settings: SceneLoadingScreenSettings +): SceneLoadingScreenSettings { + return { + colorHex: settings.colorHex, + headline: settings.headline, + description: settings.description + }; +} + +export function areSceneLoadingScreenSettingsEqual( + left: SceneLoadingScreenSettings, + right: SceneLoadingScreenSettings +): boolean { + return ( + left.colorHex === right.colorHex && + left.headline === right.headline && + left.description === right.description + ); +}