Add support for spline corridor junctions and clip intervals in runtime scene definition
This commit is contained in:
@@ -91,6 +91,7 @@ import {
|
|||||||
type SplineCorridorBoxCollider
|
type SplineCorridorBoxCollider
|
||||||
} from "../spline-corridor/spline-corridor-colliders";
|
} from "../spline-corridor/spline-corridor-colliders";
|
||||||
import { resolveSplineCorridorJunctionClipIntervals } from "../spline-corridor/spline-corridor-junctions";
|
import { resolveSplineCorridorJunctionClipIntervals } from "../spline-corridor/spline-corridor-junctions";
|
||||||
|
import type { SplineCorridorPathClipIntervalMap } from "../spline-corridor/spline-corridor-clips";
|
||||||
import {
|
import {
|
||||||
cloneWorldSettings,
|
cloneWorldSettings,
|
||||||
type WorldSettings
|
type WorldSettings
|
||||||
@@ -544,6 +545,9 @@ export interface RuntimePath {
|
|||||||
totalLength: number;
|
totalLength: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface RuntimeSplineCorridorJunction
|
||||||
|
extends SplineCorridorJunction {}
|
||||||
|
|
||||||
export interface RuntimeFoliageDefinition {
|
export interface RuntimeFoliageDefinition {
|
||||||
terrains: Terrain[];
|
terrains: Terrain[];
|
||||||
layers: FoliageLayerRegistry;
|
layers: FoliageLayerRegistry;
|
||||||
@@ -584,6 +588,8 @@ export interface RuntimeSceneDefinition {
|
|||||||
foliage: RuntimeFoliageDefinition;
|
foliage: RuntimeFoliageDefinition;
|
||||||
modelInstances: RuntimeModelInstance[];
|
modelInstances: RuntimeModelInstance[];
|
||||||
paths: RuntimePath[];
|
paths: RuntimePath[];
|
||||||
|
splineCorridorJunctions: RuntimeSplineCorridorJunction[];
|
||||||
|
splineCorridorClipIntervalsByPath: SplineCorridorPathClipIntervalMap;
|
||||||
npcDefinitions: RuntimeNpcDefinition[];
|
npcDefinitions: RuntimeNpcDefinition[];
|
||||||
entities: RuntimeEntityCollection;
|
entities: RuntimeEntityCollection;
|
||||||
interactionLinks: InteractionLink[];
|
interactionLinks: InteractionLink[];
|
||||||
@@ -2047,9 +2053,19 @@ export function buildRuntimeSceneFromDocument(
|
|||||||
const paths = getScenePaths(document.paths)
|
const paths = getScenePaths(document.paths)
|
||||||
.filter((path) => path.enabled)
|
.filter((path) => path.enabled)
|
||||||
.map((path) => buildRuntimePath(path, enabledTerrains, document));
|
.map((path) => buildRuntimePath(path, enabledTerrains, document));
|
||||||
|
const splineCorridorJunctions = getSplineCorridorJunctions(
|
||||||
|
document.splineCorridorJunctions
|
||||||
|
).filter((junction) => junction.enabled);
|
||||||
|
const splineCorridorClipIntervalsByPath =
|
||||||
|
resolveSplineCorridorJunctionClipIntervals({
|
||||||
|
paths: getScenePaths(document.paths),
|
||||||
|
junctions: splineCorridorJunctions,
|
||||||
|
terrains: enabledTerrains
|
||||||
|
});
|
||||||
const splineCorridorColliders = deriveSplineCorridorBoxColliders({
|
const splineCorridorColliders = deriveSplineCorridorBoxColliders({
|
||||||
paths,
|
paths,
|
||||||
terrains: enabledTerrains
|
terrains: enabledTerrains,
|
||||||
|
clipIntervalsByPath: splineCorridorClipIntervalsByPath
|
||||||
});
|
});
|
||||||
const collections = buildRuntimeSceneCollections(
|
const collections = buildRuntimeSceneCollections(
|
||||||
document,
|
document,
|
||||||
@@ -2189,6 +2205,8 @@ export function buildRuntimeSceneFromDocument(
|
|||||||
foliage,
|
foliage,
|
||||||
modelInstances,
|
modelInstances,
|
||||||
paths,
|
paths,
|
||||||
|
splineCorridorJunctions,
|
||||||
|
splineCorridorClipIntervalsByPath,
|
||||||
npcDefinitions: collections.npcDefinitions,
|
npcDefinitions: collections.npcDefinitions,
|
||||||
entities: collections.entities,
|
entities: collections.entities,
|
||||||
interactionLinks,
|
interactionLinks,
|
||||||
|
|||||||
Reference in New Issue
Block a user