next-flow-interface 0.26.19 → 0.26.21
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/index.d.ts +141 -34
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -917,26 +917,6 @@ export declare interface ContextMenuCreateOptions {
|
|
|
917
917
|
* 该服务提供了一个集中管理系统,用于创建、显示和控制右键菜单。
|
|
918
918
|
* 采用单例模式,确保整个应用程序中只存在一个实例。
|
|
919
919
|
*
|
|
920
|
-
* @example
|
|
921
|
-
* 基础用法:
|
|
922
|
-
* ```typescript
|
|
923
|
-
* const menuController = ContextMenuService.instance.create({
|
|
924
|
-
* x: 100,
|
|
925
|
-
* y: 200,
|
|
926
|
-
* lines: [
|
|
927
|
-
* {
|
|
928
|
-
* text: '复制',
|
|
929
|
-
* onClick: () => console.log('Copy clicked')
|
|
930
|
-
* },
|
|
931
|
-
* {
|
|
932
|
-
* text: '粘贴',
|
|
933
|
-
* onClick: () => console.log('Paste clicked')
|
|
934
|
-
* }
|
|
935
|
-
* ]
|
|
936
|
-
* })
|
|
937
|
-
* menuController.show()
|
|
938
|
-
* ```
|
|
939
|
-
*
|
|
940
920
|
* @public
|
|
941
921
|
*/
|
|
942
922
|
export declare class ContextMenuService {
|
|
@@ -1630,6 +1610,15 @@ export declare class DomNotFoundError extends NotFoundError {
|
|
|
1630
1610
|
constructor(message: string);
|
|
1631
1611
|
}
|
|
1632
1612
|
|
|
1613
|
+
declare interface DragNodeInfo {
|
|
1614
|
+
nid: string;
|
|
1615
|
+
location: StoredRhineVar<RvLocation>;
|
|
1616
|
+
initialPosition: V3;
|
|
1617
|
+
initialRotation?: V3;
|
|
1618
|
+
initialRotationQuaternion?: V4;
|
|
1619
|
+
initialScale: V3;
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1633
1622
|
/**
|
|
1634
1623
|
* @public
|
|
1635
1624
|
*/
|
|
@@ -5298,6 +5287,7 @@ export declare class RsSelectionService {
|
|
|
5298
5287
|
branchMode: boolean;
|
|
5299
5288
|
materialInfo: RsSelectionMaterialInfo;
|
|
5300
5289
|
highlight: HighLightInfo[];
|
|
5290
|
+
getSelectedNidList(): string[];
|
|
5301
5291
|
changeBranchMode(value?: boolean, message?: boolean): void;
|
|
5302
5292
|
toAllChildren(log?: boolean): boolean;
|
|
5303
5293
|
subscribe(subscriber: SelectedSubscriber): () => void;
|
|
@@ -5318,44 +5308,104 @@ export declare interface RsSelectionState {
|
|
|
5318
5308
|
}
|
|
5319
5309
|
|
|
5320
5310
|
/**
|
|
5321
|
-
*
|
|
5311
|
+
* 材质分离渲染服务
|
|
5312
|
+
*
|
|
5313
|
+
* 在 BabylonJS 渲染层执行实际的材质分离操作。
|
|
5314
|
+
* 当多个 mesh 共享同一材质时,通过 clone 材质实现独立编辑,
|
|
5315
|
+
* 避免修改一个节点的材质影响其他节点。
|
|
5316
|
+
*
|
|
5317
|
+
* @remarks
|
|
5318
|
+
* 采用"按需分离"策略,只在需要独立编辑时才 clone 材质,节省内存。
|
|
5319
|
+
*
|
|
5320
|
+
* 典型流程:
|
|
5321
|
+
* 1. 文件加载后调用 {@link analyzeByMeshes} 分析共享材质的节点
|
|
5322
|
+
* 2. 编辑材质时调用 {@link get} 或 {@link getWithEnsureType} 获取独立材质
|
|
5323
|
+
*
|
|
5324
|
+
* @example
|
|
5325
|
+
* ```typescript
|
|
5326
|
+
* // 获取节点的独立材质(按需分离)
|
|
5327
|
+
* const material = await RsSeparateService.instance.get(nid)
|
|
5328
|
+
*
|
|
5329
|
+
* // 获取并确保材质类型匹配
|
|
5330
|
+
* const material = await RsSeparateService.instance.getWithEnsureType(nid, rvMaterial)
|
|
5331
|
+
* ```
|
|
5332
|
+
*
|
|
5333
|
+
* @see {@link RvSeparateService} 协同数据层材质分离服务
|
|
5322
5334
|
*/
|
|
5323
5335
|
export declare class RsSeparateService {
|
|
5336
|
+
/**
|
|
5337
|
+
* 获取单例实例
|
|
5338
|
+
*
|
|
5339
|
+
* @returns 服务单例
|
|
5340
|
+
*/
|
|
5324
5341
|
static get instance(): RsSeparateService;
|
|
5325
5342
|
private constructor();
|
|
5343
|
+
/**
|
|
5344
|
+
* 已完成材质分离的节点 nid 列表
|
|
5345
|
+
*
|
|
5346
|
+
* 记录在当前会话中已经执行过材质 clone 的节点,避免重复分离。
|
|
5347
|
+
*/
|
|
5326
5348
|
separated: string[];
|
|
5349
|
+
/**
|
|
5350
|
+
* 检查节点是否已完成材质分离
|
|
5351
|
+
*
|
|
5352
|
+
* @param nid - 节点唯一标识符
|
|
5353
|
+
* @returns 是否已分离
|
|
5354
|
+
*/
|
|
5327
5355
|
has(nid: string): boolean;
|
|
5356
|
+
/**
|
|
5357
|
+
* 标记节点为已分离,并可选地设置材质
|
|
5358
|
+
*
|
|
5359
|
+
* @param nid - 节点唯一标识符
|
|
5360
|
+
* @param mesh - 目标 mesh(可选)
|
|
5361
|
+
* @param material - 要设置的材质(可选)
|
|
5362
|
+
*/
|
|
5328
5363
|
add(nid: string, mesh?: AbstractMesh, material?: Material | null): void;
|
|
5329
5364
|
/**
|
|
5330
5365
|
* 获取节点分离后的材质
|
|
5331
5366
|
*
|
|
5332
|
-
*
|
|
5367
|
+
* 如果节点在分离组中但尚未分离,则 clone 原材质并赋给该 mesh。
|
|
5368
|
+
* 如果已分离或不在分离组中,直接返回当前材质。
|
|
5333
5369
|
*
|
|
5334
|
-
* @param nid -
|
|
5335
|
-
* @param node -
|
|
5370
|
+
* @param nid - 节点唯一标识符
|
|
5371
|
+
* @param node - 可选的已知节点,避免重复查找
|
|
5372
|
+
* @returns 分离后的材质,若节点无材质则返回 null
|
|
5336
5373
|
*/
|
|
5337
5374
|
get(nid: string, node?: Node_2): Promise<Material | null>;
|
|
5338
5375
|
/**
|
|
5339
|
-
*
|
|
5376
|
+
* 获取节点分离后的材质,并确保材质类型匹配
|
|
5340
5377
|
*
|
|
5341
|
-
*
|
|
5378
|
+
* 会检查当前材质类型是否与协同数据中定义的类型一致,
|
|
5379
|
+
* 不一致则创建新的对应类型材质。
|
|
5342
5380
|
*
|
|
5343
|
-
*
|
|
5344
|
-
*
|
|
5345
|
-
* @param
|
|
5346
|
-
* @
|
|
5347
|
-
* @param node -
|
|
5381
|
+
* @param nid - 节点唯一标识符
|
|
5382
|
+
* @param rvMaterial - 协同数据中的材质定义
|
|
5383
|
+
* @param node - 可选的已知节点,避免重复查找
|
|
5384
|
+
* @returns 类型匹配的分离材质,若无法创建则返回 null
|
|
5348
5385
|
*/
|
|
5349
5386
|
getWithEnsureType(
|
|
5350
5387
|
nid: string,
|
|
5351
5388
|
rvMaterial: RvMaterial,
|
|
5352
5389
|
node?: Node_2,
|
|
5353
5390
|
): Promise<Material | null>;
|
|
5391
|
+
/**
|
|
5392
|
+
* 检查材质实例是否匹配指定类型
|
|
5393
|
+
*
|
|
5394
|
+
* @param material - BabylonJS 材质实例
|
|
5395
|
+
* @param type - 期望的材质类型枚举值
|
|
5396
|
+
* @returns 是否匹配
|
|
5397
|
+
*/
|
|
5354
5398
|
checkMaterialType(material: Material, type: RvMaterialType): boolean;
|
|
5355
5399
|
/**
|
|
5356
|
-
*
|
|
5400
|
+
* 分析一组 mesh,找出共享材质的节点并写入协同数据
|
|
5357
5401
|
*
|
|
5358
|
-
*
|
|
5402
|
+
* 遍历所有 mesh,按材质 uniqueId 分组,将共享同一材质的节点 nid 记录到
|
|
5403
|
+
* {@link RvSeparateService} 的协同数据中。
|
|
5404
|
+
*
|
|
5405
|
+
* @remarks
|
|
5406
|
+
* 通常在文件加载完成后调用,用于初始化材质分离信息。
|
|
5407
|
+
*
|
|
5408
|
+
* @param meshes - 要分析的 mesh 数组
|
|
5359
5409
|
*/
|
|
5360
5410
|
analyzeByMeshes(meshes: AbstractMesh[]): void;
|
|
5361
5411
|
}
|
|
@@ -6422,7 +6472,64 @@ export declare class RvSceneService {
|
|
|
6422
6472
|
* @public
|
|
6423
6473
|
*/
|
|
6424
6474
|
export declare interface RvSeparate {
|
|
6425
|
-
groups: RhineVarArray<RhineVarArray
|
|
6475
|
+
groups: RhineVarArray<RhineVarArray<string>>;
|
|
6476
|
+
}
|
|
6477
|
+
|
|
6478
|
+
/**
|
|
6479
|
+
* 材质分离协同数据服务
|
|
6480
|
+
*
|
|
6481
|
+
* 管理材质分离相关的 RhineVar 协同数据,记录哪些节点共享同一材质。
|
|
6482
|
+
* 当 GLB 文件中多个 mesh 共用材质时,需要记录这些共享关系,
|
|
6483
|
+
* 以便在用户编辑某个节点材质时进行按需分离。
|
|
6484
|
+
*
|
|
6485
|
+
* @remarks
|
|
6486
|
+
* 数据结构 `RvSeparate.groups: string[][]`,每个 group 是一组共享同一材质的节点 nid 列表。
|
|
6487
|
+
*
|
|
6488
|
+
* @example
|
|
6489
|
+
* ```typescript
|
|
6490
|
+
* // 检查节点是否与其他节点共享材质
|
|
6491
|
+
* if (RvSeparateService.instance.has(nid)) {
|
|
6492
|
+
* // 需要分离材质
|
|
6493
|
+
* }
|
|
6494
|
+
* ```
|
|
6495
|
+
*
|
|
6496
|
+
* @see {@link RsSeparateService} 渲染层材质分离服务
|
|
6497
|
+
*/
|
|
6498
|
+
export declare class RvSeparateService {
|
|
6499
|
+
private static _instance;
|
|
6500
|
+
/**
|
|
6501
|
+
* 获取单例实例
|
|
6502
|
+
*
|
|
6503
|
+
* @returns 服务单例
|
|
6504
|
+
*/
|
|
6505
|
+
static get instance(): RvSeparateService;
|
|
6506
|
+
private constructor();
|
|
6507
|
+
/**
|
|
6508
|
+
* 材质分离协同数据
|
|
6509
|
+
*
|
|
6510
|
+
* 包含 `groups` 字段,记录所有共享材质的节点分组。
|
|
6511
|
+
*/
|
|
6512
|
+
separate: StoredRhineVar<RvSeparate>;
|
|
6513
|
+
/**
|
|
6514
|
+
* 检查节点是否在任意材质分离组中
|
|
6515
|
+
*
|
|
6516
|
+
* 若返回 true,表示该节点与其他节点共享材质,编辑前需要进行材质分离。
|
|
6517
|
+
*
|
|
6518
|
+
* @param nid - 节点唯一标识符
|
|
6519
|
+
* @returns 是否在分离组中
|
|
6520
|
+
*/
|
|
6521
|
+
has(nid: string): boolean;
|
|
6522
|
+
/**
|
|
6523
|
+
* 将新节点与源节点加入同一材质分离组
|
|
6524
|
+
*
|
|
6525
|
+
* 用于复制节点时,确保复制出的节点与原节点共享材质分离信息。
|
|
6526
|
+
* 如果源节点已在某个分离组中,则将新节点加入该组;
|
|
6527
|
+
* 否则创建一个新的分离组包含这两个节点。
|
|
6528
|
+
*
|
|
6529
|
+
* @param fromNid - 源节点 nid
|
|
6530
|
+
* @param newNid - 新复制的节点 nid
|
|
6531
|
+
*/
|
|
6532
|
+
addCopyToGroup(fromNid: string, newNid: string): void;
|
|
6426
6533
|
}
|
|
6427
6534
|
|
|
6428
6535
|
/**
|