import type { Brush } from "./brushes"; import type { ModelInstance } from "../assets/model-instances"; import type { ProjectAssetRecord } from "../assets/project-assets"; import type { EntityInstance } from "../entities/entity-instances"; import type { InteractionLink } from "../interactions/interaction-links"; import { cloneMaterialRegistry, createStarterMaterialRegistry, type MaterialDef } from "../materials/starter-material-library"; import { areAdvancedRenderingSettingsEqual, cloneAdvancedRenderingSettings, createDefaultAdvancedRenderingSettings, createDefaultWorldSettings, isAdvancedRenderingShadowMapSize, isAdvancedRenderingShadowType, isAdvancedRenderingToneMappingMode, type AdvancedRenderingAmbientOcclusionSettings, type AdvancedRenderingBloomSettings, type AdvancedRenderingDepthOfFieldSettings, type AdvancedRenderingSettings, type AdvancedRenderingShadowMapSize, type AdvancedRenderingShadowType, type AdvancedRenderingShadowsSettings, type AdvancedRenderingToneMappingMode, type WorldSettings } from "./world-settings"; export const SCENE_DOCUMENT_VERSION = 14 as const; export const SPATIAL_AUDIO_SCENE_DOCUMENT_VERSION = 13 as const; export const ANIMATION_PLAYBACK_SCENE_DOCUMENT_VERSION = 12 as const; export const LOCAL_LIGHTS_AND_SKYBOX_SCENE_DOCUMENT_VERSION = 10 as const; export const MODEL_ASSET_PIPELINE_SCENE_DOCUMENT_VERSION = 9 as const; export const FOUNDATION_SCENE_DOCUMENT_VERSION = 1 as const; export const BOX_BRUSH_SCENE_DOCUMENT_VERSION = 2 as const; export const FACE_MATERIALS_SCENE_DOCUMENT_VERSION = 3 as const; export const RUNNER_V1_SCENE_DOCUMENT_VERSION = 4 as const; 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 interface SceneDocument { version: typeof SCENE_DOCUMENT_VERSION; name: string; world: WorldSettings; materials: Record; textures: Record; assets: Record; brushes: Record; modelInstances: Record; entities: Record; interactionLinks: Record; } export function createEmptySceneDocument(overrides: Partial> = {}): SceneDocument { return { version: SCENE_DOCUMENT_VERSION, name: overrides.name ?? "Untitled Scene", world: overrides.world ?? createDefaultWorldSettings(), materials: cloneMaterialRegistry(overrides.materials ?? createStarterMaterialRegistry()), textures: {}, assets: {}, brushes: {}, modelInstances: {}, entities: {}, interactionLinks: {} }; } export type { AdvancedRenderingAmbientOcclusionSettings, AdvancedRenderingBloomSettings, AdvancedRenderingDepthOfFieldSettings, AdvancedRenderingSettings, AdvancedRenderingShadowMapSize, AdvancedRenderingShadowType, AdvancedRenderingShadowsSettings, AdvancedRenderingToneMappingMode, WorldAmbientLightSettings, WorldBackgroundMode, WorldBackgroundSettings, WorldImageBackgroundSettings, WorldSolidBackgroundSettings, WorldSettings, WorldSunLightSettings, WorldVerticalGradientBackgroundSettings } from "./world-settings"; export { areAdvancedRenderingSettingsEqual, areWorldSettingsEqual, changeWorldBackgroundMode, cloneWorldBackgroundSettings, cloneAdvancedRenderingSettings, cloneWorldSettings, createDefaultWorldSettings, createDefaultAdvancedRenderingSettings, isAdvancedRenderingShadowMapSize, isAdvancedRenderingShadowType, isAdvancedRenderingToneMappingMode, isHexColorString } from "./world-settings";