@world-engines/spatial-authoring 0.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +46 -0
- package/dist/SpatialWorldCanvas.d.ts +18 -0
- package/dist/SpatialWorldCanvas.js +24 -0
- package/dist/SpatialWorldEditor.d.ts +38 -0
- package/dist/SpatialWorldEditor.js +61 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +12 -0
- package/dist/plane-generation.d.ts +48 -0
- package/dist/plane-generation.js +126 -0
- package/dist/plane-generator/package.json +15 -0
- package/dist/plane-generator/plane-generator.d.ts +57 -0
- package/dist/plane-generator/plane-generator.js +310 -0
- package/dist/plane-generator/plane-generator_bg.wasm +0 -0
- package/dist/plane-generator/plane-generator_bg.wasm.d.ts +13 -0
- package/dist/procedural-city.d.ts +135 -0
- package/dist/procedural-city.js +595 -0
- package/dist/protobuf-source-codec.d.ts +57 -0
- package/dist/protobuf-source-codec.js +317 -0
- package/dist/road-generation.d.ts +52 -0
- package/dist/road-generation.js +129 -0
- package/dist/road-parcels.d.ts +83 -0
- package/dist/road-parcels.js +1584 -0
- package/dist/schema.d.ts +47 -0
- package/dist/schema.js +82 -0
- package/dist/source-adapter.d.ts +15 -0
- package/dist/source-adapter.js +23 -0
- package/dist/spatial-runtime.d.ts +210 -0
- package/dist/spatial-runtime.js +1231 -0
- package/dist/spatial-templates.d.ts +117 -0
- package/dist/spatial-templates.js +200 -0
- package/dist/worker.d.ts +13 -0
- package/dist/worker.js +9 -0
- package/package.json +155 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { CityDescriptorV1, Point2D, ProceduralParcel } from "./procedural-city.js";
|
|
2
|
+
/** 来自 terrain-roads-v1 的单个道路采样点,单位为米。 */
|
|
3
|
+
export interface RoadParcelPoint extends Point2D {
|
|
4
|
+
readonly z: number;
|
|
5
|
+
}
|
|
6
|
+
export type RoadParcelSegmentKind = "surface" | "bridge" | "tunnel";
|
|
7
|
+
export type RoadParcelRoadKind = "intercity" | "arterial" | "local";
|
|
8
|
+
export type RoadParcelRoadClass = "street" | "motorway";
|
|
9
|
+
/**
|
|
10
|
+
* `id` 由道路 id 与 segment 下标隐式组成;不要把输入数组顺序作为 identity。
|
|
11
|
+
* bridge/tunnel 仅供渲染和通行,不能围出地面 block。
|
|
12
|
+
*/
|
|
13
|
+
export interface RoadParcelSegment {
|
|
14
|
+
readonly kind: RoadParcelSegmentKind;
|
|
15
|
+
readonly points: readonly RoadParcelPoint[];
|
|
16
|
+
}
|
|
17
|
+
export interface RoadParcelRoad {
|
|
18
|
+
readonly id: string;
|
|
19
|
+
/** terrain-roads-v1 必填道路等级;缺失/未知等级绝不可被当作可建街道。 */
|
|
20
|
+
readonly kind: RoadParcelRoadKind;
|
|
21
|
+
/** motorway 是禁建走廊,即使错误标有 cityId 也不可围 block。 */
|
|
22
|
+
readonly roadClass?: RoadParcelRoadClass;
|
|
23
|
+
readonly cityId?: string;
|
|
24
|
+
readonly widthMeters: number;
|
|
25
|
+
readonly points?: readonly RoadParcelPoint[];
|
|
26
|
+
readonly segments: readonly RoadParcelSegment[];
|
|
27
|
+
}
|
|
28
|
+
export interface RoadParcelTerrainGrid {
|
|
29
|
+
readonly width: number;
|
|
30
|
+
readonly height: number;
|
|
31
|
+
readonly widthMeters: number;
|
|
32
|
+
readonly heightMeters: number;
|
|
33
|
+
readonly originX: number;
|
|
34
|
+
readonly originY: number;
|
|
35
|
+
/** 行优先;单位米,和 WASM city bbox sampler 的输出一致。 */
|
|
36
|
+
readonly elevationsMeters: readonly number[];
|
|
37
|
+
/** 行优先;true/非零代表水面,false/零代表陆地。 */
|
|
38
|
+
readonly waterMask: readonly (boolean | number)[];
|
|
39
|
+
}
|
|
40
|
+
/** city extent adapter 的权威可建边界;unbuildable 明确禁止任何地块回退。 */
|
|
41
|
+
export interface RoadParcelBoundary {
|
|
42
|
+
readonly status: "bounded" | "unbuildable";
|
|
43
|
+
readonly points: readonly Point2D[];
|
|
44
|
+
}
|
|
45
|
+
export interface RoadParcelSettings {
|
|
46
|
+
/** 单个地块的最大面积;超出时按稳定语义切分。 */
|
|
47
|
+
readonly maxFaceAreaMeters?: number;
|
|
48
|
+
/** 从道路中心线额外退让的距离;道路半宽始终会计入。 */
|
|
49
|
+
readonly setbackMeters?: number;
|
|
50
|
+
/** terrain 四邻域允许的最大坡度(rise/run)。 */
|
|
51
|
+
readonly maxSlope?: number;
|
|
52
|
+
/** 防止退让、切分后产生不值得消费的碎片。 */
|
|
53
|
+
readonly minParcelAreaMeters?: number;
|
|
54
|
+
/** shape-filled-v10 的方向无关最长/最短方向比上限。 */
|
|
55
|
+
readonly maxAspectRatio?: number;
|
|
56
|
+
/** shape-filled-v10 的方向无关最短方向尺寸下限(米)。 */
|
|
57
|
+
readonly minShortSideMeters?: number;
|
|
58
|
+
}
|
|
59
|
+
export interface RoadParcelInput {
|
|
60
|
+
/** 缺省和 legacy-v6 保持既有地块切分;新 profile 必须显式选择。 */
|
|
61
|
+
readonly algorithm?: "legacy-v6" | "structured-v8" | "frontage-balanced-v9" | "shape-filled-v10";
|
|
62
|
+
readonly roads: readonly RoadParcelRoad[];
|
|
63
|
+
/** WASM cityLayouts.boundary 的 canonical world-meter、CCW、非闭合城市可建边界。 */
|
|
64
|
+
readonly boundary?: RoadParcelBoundary;
|
|
65
|
+
/** 缺失 terrain 时不生成地块,避免把未知水面或陡坡伪装成可建地。 */
|
|
66
|
+
readonly terrain?: RoadParcelTerrainGrid;
|
|
67
|
+
readonly settings?: RoadParcelSettings;
|
|
68
|
+
}
|
|
69
|
+
export interface RoadParcelLayout {
|
|
70
|
+
readonly parcels: readonly ProceduralParcel[];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 边界 touch 可共存;只要外轮廓有正面积交集即为冲突。
|
|
74
|
+
* 绝不能以内部 building safe bounds 作早退,因为两个外轮廓可相交而两个 safe square 分离。
|
|
75
|
+
*/
|
|
76
|
+
export declare function roadParcelPolygonsOverlapWithArea(a: readonly Point2D[], b: readonly Point2D[]): boolean;
|
|
77
|
+
/** 固定 city bbox grid 的最近点采样;水和过陡的 cell 均不可建。 */
|
|
78
|
+
export declare function sampleRoadParcelTerrain(grid: RoadParcelTerrainGrid, candidate: Point2D, maxSlope?: number): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* 从 surface road 的 planar faces 生成可重建的真实地块。缺少可采样 terrain 时有意返回空,
|
|
81
|
+
* 而非退回矩形棋盘或猜测水面;建筑需在角色进入 gate 后再以 parcel.bounds 生成。
|
|
82
|
+
*/
|
|
83
|
+
export declare function generateRoadParcels(worldSeed: number, city: CityDescriptorV1, input: RoadParcelInput): RoadParcelLayout;
|