auto-git:

[change] src/document/scene-document.ts
This commit is contained in:
2026-05-02 03:41:52 +02:00
parent 3001ed1ff1
commit 70ae4db6ea

View File

@@ -28,8 +28,15 @@ import {
type ProjectSequenceLibrary type ProjectSequenceLibrary
} from "../sequencer/project-sequences"; } from "../sequencer/project-sequences";
import type { Terrain } from "./terrains"; import type { Terrain } from "./terrains";
import {
createEmptyFoliageLayerRegistry,
createEmptyFoliagePrototypeRegistry,
type FoliageLayerRegistry,
type FoliagePrototypeRegistry
} from "../foliage/foliage";
export const SCENE_DOCUMENT_VERSION = 91 as const; export const SCENE_DOCUMENT_VERSION = 92 as const;
export const FOLIAGE_FOUNDATION_SCENE_DOCUMENT_VERSION = 92 as const;
export const PLAYER_START_EDGE_ASSIST_SCENE_DOCUMENT_VERSION = 91 as const; export const PLAYER_START_EDGE_ASSIST_SCENE_DOCUMENT_VERSION = 91 as const;
export const WHITEBOX_FACE_CLIMBABLE_SCENE_DOCUMENT_VERSION = 90 as const; export const WHITEBOX_FACE_CLIMBABLE_SCENE_DOCUMENT_VERSION = 90 as const;
export const GOD_RAYS_SOURCE_SIZE_SCENE_DOCUMENT_VERSION = 89 as const; export const GOD_RAYS_SOURCE_SIZE_SCENE_DOCUMENT_VERSION = 89 as const;
@@ -190,6 +197,7 @@ export interface ProjectScene {
world: WorldSettings; world: WorldSettings;
brushes: Record<string, Brush>; brushes: Record<string, Brush>;
terrains: Record<string, Terrain>; terrains: Record<string, Terrain>;
foliageLayers: FoliageLayerRegistry;
paths: Record<string, ScenePath>; paths: Record<string, ScenePath>;
modelInstances: Record<string, ModelInstance>; modelInstances: Record<string, ModelInstance>;
entities: Record<string, EntityInstance>; entities: Record<string, EntityInstance>;
@@ -207,6 +215,7 @@ export interface ProjectDocument {
materials: Record<string, MaterialDef>; materials: Record<string, MaterialDef>;
textures: Record<string, never>; textures: Record<string, never>;
assets: Record<string, ProjectAssetRecord>; assets: Record<string, ProjectAssetRecord>;
foliagePrototypes: FoliagePrototypeRegistry;
} }
export interface SceneDocument { export interface SceneDocument {
@@ -221,6 +230,8 @@ export interface SceneDocument {
assets: Record<string, ProjectAssetRecord>; assets: Record<string, ProjectAssetRecord>;
brushes: Record<string, Brush>; brushes: Record<string, Brush>;
terrains: Record<string, Terrain>; terrains: Record<string, Terrain>;
foliagePrototypes: FoliagePrototypeRegistry;
foliageLayers: FoliageLayerRegistry;
paths: Record<string, ScenePath>; paths: Record<string, ScenePath>;
modelInstances: Record<string, ModelInstance>; modelInstances: Record<string, ModelInstance>;
entities: Record<string, EntityInstance>; entities: Record<string, EntityInstance>;
@@ -246,6 +257,8 @@ export function createEmptySceneDocument(
assets: {}, assets: {},
brushes: {}, brushes: {},
terrains: {}, terrains: {},
foliagePrototypes: createEmptyFoliagePrototypeRegistry(),
foliageLayers: createEmptyFoliageLayerRegistry(),
paths: {}, paths: {},
modelInstances: {}, modelInstances: {},
entities: {}, entities: {},
@@ -273,6 +286,7 @@ export function createEmptyProjectScene(
world: overrides.world ?? createDefaultWorldSettings(), world: overrides.world ?? createDefaultWorldSettings(),
brushes: {}, brushes: {},
terrains: {}, terrains: {},
foliageLayers: createEmptyFoliageLayerRegistry(),
paths: {}, paths: {},
modelInstances: {}, modelInstances: {},
entities: {}, entities: {},
@@ -292,6 +306,7 @@ export function createEmptyProjectDocument(
| "materials" | "materials"
| "textures" | "textures"
| "assets" | "assets"
| "foliagePrototypes"
> >
> & { > & {
sceneId?: string; sceneId?: string;
@@ -320,7 +335,9 @@ export function createEmptyProjectDocument(
overrides.materials ?? createStarterMaterialRegistry() overrides.materials ?? createStarterMaterialRegistry()
), ),
textures: overrides.textures ?? {}, textures: overrides.textures ?? {},
assets: overrides.assets ?? {} assets: overrides.assets ?? {},
foliagePrototypes:
overrides.foliagePrototypes ?? createEmptyFoliagePrototypeRegistry()
}; };
} }
@@ -355,6 +372,8 @@ export function createSceneDocumentFromProject(
assets: projectDocument.assets, assets: projectDocument.assets,
brushes: scene.brushes, brushes: scene.brushes,
terrains: scene.terrains, terrains: scene.terrains,
foliagePrototypes: projectDocument.foliagePrototypes,
foliageLayers: scene.foliageLayers,
paths: scene.paths, paths: scene.paths,
modelInstances: scene.modelInstances, modelInstances: scene.modelInstances,
entities: scene.entities, entities: scene.entities,
@@ -383,6 +402,7 @@ export function createProjectDocumentFromSceneDocument(
world: sceneDocument.world, world: sceneDocument.world,
brushes: sceneDocument.brushes, brushes: sceneDocument.brushes,
terrains: sceneDocument.terrains, terrains: sceneDocument.terrains,
foliageLayers: sceneDocument.foliageLayers,
paths: sceneDocument.paths, paths: sceneDocument.paths,
modelInstances: sceneDocument.modelInstances, modelInstances: sceneDocument.modelInstances,
entities: sceneDocument.entities, entities: sceneDocument.entities,
@@ -391,7 +411,8 @@ export function createProjectDocumentFromSceneDocument(
}, },
materials: sceneDocument.materials, materials: sceneDocument.materials,
textures: sceneDocument.textures, textures: sceneDocument.textures,
assets: sceneDocument.assets assets: sceneDocument.assets,
foliagePrototypes: sceneDocument.foliagePrototypes
}; };
} }
@@ -411,6 +432,7 @@ export function applySceneDocumentToProject(
materials: sceneDocument.materials, materials: sceneDocument.materials,
textures: sceneDocument.textures, textures: sceneDocument.textures,
assets: sceneDocument.assets, assets: sceneDocument.assets,
foliagePrototypes: sceneDocument.foliagePrototypes,
scenes: { scenes: {
...projectDocument.scenes, ...projectDocument.scenes,
[sceneId]: { [sceneId]: {
@@ -419,6 +441,7 @@ export function applySceneDocumentToProject(
world: sceneDocument.world, world: sceneDocument.world,
brushes: sceneDocument.brushes, brushes: sceneDocument.brushes,
terrains: sceneDocument.terrains, terrains: sceneDocument.terrains,
foliageLayers: sceneDocument.foliageLayers,
paths: sceneDocument.paths, paths: sceneDocument.paths,
modelInstances: sceneDocument.modelInstances, modelInstances: sceneDocument.modelInstances,
entities: sceneDocument.entities, entities: sceneDocument.entities,