Add loading screen settings to scene document

This commit is contained in:
2026-04-11 04:07:43 +02:00
parent 4200b4ea04
commit 3c3723531a

View File

@@ -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<string, Brush>;
modelInstances: Record<string, ModelInstance>;
@@ -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
);
}