next-flow-interface 0.26.16 → 0.26.18
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 +91 -23
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -4979,11 +4979,38 @@ export declare class RsNodeService {
|
|
|
4979
4979
|
/**
|
|
4980
4980
|
* 生成节点指纹
|
|
4981
4981
|
*
|
|
4982
|
-
*
|
|
4983
|
-
*
|
|
4982
|
+
* 根据节点的多种几何属性生成唯一指纹字符串,用于区分同名节点。
|
|
4983
|
+
* 指纹包含节点的空间变换信息和网格几何特征。
|
|
4984
|
+
*
|
|
4985
|
+
* ## 指纹组成
|
|
4986
|
+
*
|
|
4987
|
+
* | 前缀 | 含义 | 适用类型 |
|
|
4988
|
+
* |------|------|----------|
|
|
4989
|
+
* | C | 子节点数量 | 所有 Node |
|
|
4990
|
+
* | P | 位置 (position) | TransformNode 及子类 |
|
|
4991
|
+
* | R | 旋转 (rotation) | TransformNode 及子类 |
|
|
4992
|
+
* | S | 缩放 (scaling) | TransformNode 及子类 |
|
|
4993
|
+
* | V | 顶点数量 | Mesh |
|
|
4994
|
+
* | I | 索引数量(面数×3) | Mesh |
|
|
4995
|
+
* | B | 包围盒 min/max | Mesh |
|
|
4996
|
+
* | D | 采样顶点坐标 | Mesh |
|
|
4997
|
+
*
|
|
4998
|
+
* ## 采样策略
|
|
4999
|
+
*
|
|
5000
|
+
* 对于 Mesh 节点,会采样 3.33%、50%、96.67% 位置的顶点坐标,
|
|
5001
|
+
* 以较小的数据量捕获网格的几何特征。
|
|
4984
5002
|
*
|
|
4985
5003
|
* @param node - Babylon.js 节点对象
|
|
4986
|
-
* @returns
|
|
5004
|
+
* @returns 指纹字符串,格式如 `C2P10000200003000R00000000000000S10000100001000V1234I5678B...D...`
|
|
5005
|
+
*
|
|
5006
|
+
* @example
|
|
5007
|
+
* ```typescript
|
|
5008
|
+
* const fingerprint = RsNodeService.instance.generateFingerprint(meshNode)
|
|
5009
|
+
* // fingerprint = "C0P10000200003000R00000000000000S10000100001000V1024I3072B..."
|
|
5010
|
+
* ```
|
|
5011
|
+
*
|
|
5012
|
+
* @see {@link matchOriginalNodes} 使用指纹进行节点匹配
|
|
5013
|
+
* @see {@link rescueGenerateSceneNode} 生成场景时调用此方法
|
|
4987
5014
|
*/
|
|
4988
5015
|
generateFingerprint(node: Node_2): string;
|
|
4989
5016
|
/**
|
|
@@ -5065,31 +5092,35 @@ export declare class RsNodeService {
|
|
|
5065
5092
|
*/
|
|
5066
5093
|
getMidByNid(nid: string): string | null;
|
|
5067
5094
|
/**
|
|
5068
|
-
*
|
|
5095
|
+
* 分析并加载指定模型的所有节点映射
|
|
5069
5096
|
*
|
|
5070
|
-
*
|
|
5071
|
-
*
|
|
5072
|
-
* 支持复制节点:带有 source.copy 的节点会从源节点 clone。
|
|
5097
|
+
* 当模型文件加载完成后调用此方法,将 RhineVar 协同数据中的 RvSceneNode
|
|
5098
|
+
* 与 Babylon.js 场景中的实际节点建立映射关系。
|
|
5073
5099
|
*
|
|
5074
|
-
*
|
|
5075
|
-
*
|
|
5076
|
-
|
|
5077
|
-
|
|
5078
|
-
/**
|
|
5079
|
-
* 匹配原始节点(非复制节点)
|
|
5100
|
+
* 执行流程:
|
|
5101
|
+
* 1. 从 RvSceneService 获取所有 source.mid 为该 mid 的原始节点(非复制节点)
|
|
5102
|
+
* 2. 调用 matchOriginalNodes 将协同数据节点与 Babylon 节点进行匹配
|
|
5103
|
+
* 3. 匹配成功后通过 addNodePair 建立 nid 到 Node 的映射
|
|
5080
5104
|
*
|
|
5081
|
-
* @param
|
|
5082
|
-
* @param root - Babylon.js
|
|
5083
|
-
*/
|
|
5084
|
-
private matchOriginalNodes;
|
|
5085
|
-
/**
|
|
5086
|
-
* 处理复制节点
|
|
5105
|
+
* @param mid - 模型ID,用于筛选属于该模型的 RvSceneNode
|
|
5106
|
+
* @param root - 模型的 Babylon.js 根节点对象
|
|
5087
5107
|
*
|
|
5088
|
-
*
|
|
5108
|
+
* @throws {Error} 当找不到任何属于该 mid 的 RvSceneNode 时抛出异常
|
|
5089
5109
|
*
|
|
5090
|
-
* @
|
|
5110
|
+
* @example
|
|
5111
|
+
* ```typescript
|
|
5112
|
+
* // 模型加载完成后建立节点映射
|
|
5113
|
+
* const root = loadedModel.rootNode
|
|
5114
|
+
* RsNodeService.instance.analyzeSceneNode('model-123', root)
|
|
5115
|
+
*
|
|
5116
|
+
* // 之后可以通过 nid 获取节点
|
|
5117
|
+
* const node = RsNodeService.instance.getNodeByNid('model-123--L0-N0')
|
|
5118
|
+
* ```
|
|
5119
|
+
*
|
|
5120
|
+
* @see {@link matchOriginalNodes} 内部匹配逻辑
|
|
5121
|
+
* @see {@link generateSceneNode} 首次生成场景节点(与此方法互补)
|
|
5091
5122
|
*/
|
|
5092
|
-
|
|
5123
|
+
analyzeSceneNode(mid: string, root: Node_2): void;
|
|
5093
5124
|
/**
|
|
5094
5125
|
* 根据模型ID获取文件ID (fid)
|
|
5095
5126
|
*
|
|
@@ -5163,7 +5194,35 @@ export declare class RsNodeService {
|
|
|
5163
5194
|
export declare class RsSceneService {
|
|
5164
5195
|
static get instance(): RsSceneService;
|
|
5165
5196
|
private constructor();
|
|
5197
|
+
/**
|
|
5198
|
+
* 同步所有 Babylon 节点与 RvSceneNode 协同数据
|
|
5199
|
+
*
|
|
5200
|
+
* 将 Babylon.js 场景中的节点树结构与 RhineVar 协同数据中的 RvSceneNode 完全对齐。
|
|
5201
|
+
*
|
|
5202
|
+
* ## 同步流程
|
|
5203
|
+
*
|
|
5204
|
+
* 1. **创建缺失的 copy 节点**:检查所有带 `source.copy` 的 RvSceneNode,
|
|
5205
|
+
* 若对应 Babylon 节点不存在则 clone 创建。按层级顺序处理,确保父节点先于子节点创建。
|
|
5206
|
+
* 2. **同步 parent 关系**:检查所有节点的父子关系,修正不一致的 parent 指向。
|
|
5207
|
+
* 3. **同步 deleted 状态**:将 RvSceneNode 的 `deleted` 字段同步到 Babylon 节点的 `enabled` 状态。
|
|
5208
|
+
*
|
|
5209
|
+
* @throws {Error} 当 copy 源节点不存在时抛出异常
|
|
5210
|
+
* @throws {Error} 当 Babylon clone 操作失败时抛出异常
|
|
5211
|
+
*/
|
|
5166
5212
|
syncAll(): void;
|
|
5213
|
+
/**
|
|
5214
|
+
* 同步单个节点的 Babylon 状态与 RvSceneNode 协同数据
|
|
5215
|
+
*
|
|
5216
|
+
* @param nid - 节点唯一标识符
|
|
5217
|
+
* @param sceneNode - RvSceneNode 协同数据,默认从 RvSceneService 获取
|
|
5218
|
+
* @param targetNode - 目标 Babylon 节点,默认从 RsNodeService 获取
|
|
5219
|
+
* @param parentNode - 父 Babylon 节点,默认从 RsNodeService 获取
|
|
5220
|
+
* @returns 是否发生了变更
|
|
5221
|
+
*
|
|
5222
|
+
* @throws {Error} 当非 copy 节点的 Babylon 节点不存在时抛出异常
|
|
5223
|
+
* @throws {Error} 当 copy 源节点不存在时抛出异常
|
|
5224
|
+
* @throws {Error} 当 Babylon clone 操作失败时抛出异常
|
|
5225
|
+
*/
|
|
5167
5226
|
sync(
|
|
5168
5227
|
nid: string,
|
|
5169
5228
|
sceneNode?: RvSceneNode | null,
|
|
@@ -5506,6 +5565,7 @@ export declare enum RvBasicType {
|
|
|
5506
5565
|
ICO_SPHERE = "ICO_SPHERE",
|
|
5507
5566
|
CAPSULE = "CAPSULE",
|
|
5508
5567
|
PLANE = "PLANE",
|
|
5568
|
+
TRANSFORM_NODE = "TRANSFORM_NODE",
|
|
5509
5569
|
}
|
|
5510
5570
|
|
|
5511
5571
|
/**
|
|
@@ -6042,6 +6102,7 @@ export declare class RvModelService {
|
|
|
6042
6102
|
has(mid: string): boolean;
|
|
6043
6103
|
hasFid(fid: string): boolean;
|
|
6044
6104
|
add(rvModel: RvModel): string;
|
|
6105
|
+
addTransformNode(): string;
|
|
6045
6106
|
remove(mid: string): boolean;
|
|
6046
6107
|
generateId(): string;
|
|
6047
6108
|
}
|
|
@@ -6343,10 +6404,11 @@ export declare class RvSceneService {
|
|
|
6343
6404
|
isAncestor(nid: string, of: string): boolean;
|
|
6344
6405
|
isParent(nid: string, of: string): boolean;
|
|
6345
6406
|
isChild(nid: string, of: string): boolean;
|
|
6407
|
+
newNode(fromNid?: string): void;
|
|
6346
6408
|
move(nid: string, newParent?: string): void;
|
|
6347
6409
|
delete(nid: string): void;
|
|
6348
6410
|
getDescendantsWithSelf(nid: string): string[];
|
|
6349
|
-
generateId(mid: string, layer
|
|
6411
|
+
generateId(mid: string, layer?: number, index?: number): string;
|
|
6350
6412
|
generateIdAndNameForCopy(fromNid: string): {
|
|
6351
6413
|
nid: string;
|
|
6352
6414
|
name: string;
|
|
@@ -6465,6 +6527,7 @@ export declare class SceneService {
|
|
|
6465
6527
|
offsetX: number;
|
|
6466
6528
|
offsetY: number;
|
|
6467
6529
|
};
|
|
6530
|
+
newNode(fromNid?: string): void;
|
|
6468
6531
|
/**
|
|
6469
6532
|
* 批量复制
|
|
6470
6533
|
*
|
|
@@ -6753,6 +6816,7 @@ export declare interface Status {
|
|
|
6753
6816
|
PluginPreLoaded: boolean;
|
|
6754
6817
|
FileLoaded: boolean;
|
|
6755
6818
|
ModelLoaded: boolean;
|
|
6819
|
+
SceneLoaded: boolean;
|
|
6756
6820
|
PluginPreRendered: boolean;
|
|
6757
6821
|
Rendered: boolean;
|
|
6758
6822
|
Shown: boolean;
|
|
@@ -6806,6 +6870,10 @@ export declare class StatusService {
|
|
|
6806
6870
|
unsubscribeModelLoaded(subscriber: StatusChangeSubscriber): void;
|
|
6807
6871
|
afterModelLoaded(subscriber: StatusChangeSubscriber): void;
|
|
6808
6872
|
waitModelLoaded(): Promise<boolean>;
|
|
6873
|
+
subscribeSceneLoaded(subscriber: StatusChangeSubscriber): () => void;
|
|
6874
|
+
unsubscribeSceneLoaded(subscriber: StatusChangeSubscriber): void;
|
|
6875
|
+
afterSceneLoaded(subscriber: StatusChangeSubscriber): void;
|
|
6876
|
+
waitSceneLoaded(): Promise<boolean>;
|
|
6809
6877
|
subscribePluginPreRendered(subscriber: StatusChangeSubscriber): () => void;
|
|
6810
6878
|
unsubscribePluginPreRendered(subscriber: StatusChangeSubscriber): void;
|
|
6811
6879
|
afterPluginPreRendered(subscriber: StatusChangeSubscriber): void;
|