Skip to content

Commit d9a80c8

Browse files
committed
feat: 添加接口
1 parent 626edc2 commit d9a80c8

File tree

7 files changed

+106
-5
lines changed

7 files changed

+106
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "next-flow-interface",
3-
"version": "0.23.15",
3+
"version": "0.23.16",
44
"description": "Interface package for NEXT FlOW. You can use this package to build your own plugin that can control anything.",
55
"type": "module",
66
"module": "dist/index.js",

src/api/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import { UseLastSelectedInfo } from '@/hook/use-last-selected-info.type'
3838
import { UseSelectedInfo } from '@/hook/use-selected-info.type'
3939
import { UseSelectedMaterialInfo } from '@/hook/use-selected-material-info.type'
4040
import { UseStepOptions } from '@/hook/use-step-options.type'
41+
import { UseTNodeAttribute } from '@/hook/use-t-node-attribute.type'
4142
import { UseTNode } from '@/hook/use-t-node.type'
4243
import { UseTStep } from '@/hook/use-t-step.type'
4344
import RvLoopAttributeApi from '@/service/attributes/animation/loop/rv-loop-attribute-api'
@@ -101,6 +102,7 @@ import RvSceneServiceApi from '@/service/sync/scene/rv-scene-service-api'
101102
import RvNodeServiceApi from '@/service/sync/step/node/rv-node-service-api'
102103
import RvStepServiceApi from '@/service/sync/step/rv-step-service-api'
103104
import SyncServiceApi from '@/service/sync/sync-service-api'
105+
import TMultiNodeServiceApi from '@/service/target/t-multi-node-service-api'
104106
import TNodeServiceApi from '@/service/target/t-node-service-api'
105107
import TStepServiceApi from '@/service/target/t-step-service-api'
106108
import { MaterialSymbolOptions } from '@/utils/material-symbol-utils'
@@ -178,6 +180,7 @@ export let rvModelService: RvModelServiceApi
178180
export let rvNodeService: RvNodeServiceApi
179181
export let rvNodeMaterialAnalyzer: RvNodeMaterialAnalyzerApi
180182

183+
export let tMultiNodeService: TMultiNodeServiceApi
181184
export let tStepService: TStepServiceApi
182185
export let tNodeService: TNodeServiceApi
183186

@@ -190,6 +193,7 @@ export let useSelectedInfo: UseSelectedInfo
190193
export let useSelectedMaterialInfo: UseSelectedMaterialInfo
191194
export let useTStep: UseTStep
192195
export let useTNode: UseTNode
196+
export let useTNodeAttribute: UseTNodeAttribute
193197
export let useStepOptions: UseStepOptions
194198

195199
export let ThemeProvider: FunctionComponent<ThemeProviderProps>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { StoredRhineVar } from 'rhine-var'
2+
3+
import TNodeAttribute from '@/service/sync/attribute/dto/target/t-node-attribute.interface'
4+
5+
export interface UseTNodeAttribute<T extends object = never> {
6+
state: StoredRhineVar<T> | T
7+
sid: string
8+
sidList: string[]
9+
nid: string
10+
nidList: string[]
11+
tna: TNodeAttribute<T>
12+
}

src/index.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import {
1717
RvMaterialNodeInput,
1818
} from '@/service/sync/interface/step/node/material/node/rv-material-node.interface'
1919
import { RvMaterialPBR } from '@/service/sync/interface/step/node/material/pbr/rv-material-pbr.interface'
20+
import { RvPresetType } from '@/service/sync/interface/step/node/material/preset/rv-preset-type.enum'
21+
import { RvMaterialTexture } from '@/service/sync/interface/step/node/material/texture/rv-material-texture.interface'
2022
import RvNodeServiceApi from '@/service/sync/step/node/rv-node-service-api'
2123

2224
import { AntCheckboxProps } from './components/ant/ant-checkbox-props'
@@ -67,6 +69,7 @@ import { UseLastSelectedInfo } from './hook/use-last-selected-info.type'
6769
import { UseSelectedInfo } from './hook/use-selected-info.type'
6870
import { UseSelectedMaterialInfo } from './hook/use-selected-material-info.type'
6971
import { UseStepOptions } from './hook/use-step-options.type'
72+
import { UseTNodeAttribute } from './hook/use-t-node-attribute.type'
7073
import { UseTNode } from './hook/use-t-node.type'
7174
import { UseTStep } from './hook/use-t-step.type'
7275
import BasePlugin from './plugin/base-plugin'
@@ -233,6 +236,7 @@ import UserInfo from './service/main/user/dto/user-info.interface'
233236
import UserServiceApi from './service/main/user/user-service-api'
234237
import AttributeServiceApi from './service/sync/attribute/attribute-service-api'
235238
import { AttributeType } from './service/sync/attribute/dto/attribute-type.enum'
239+
import ITNodeAttribute from './service/sync/attribute/dto/target/t-node-attribute.interface'
236240
import AwarenessServiceApi, {
237241
AwarenessChanges,
238242
AwarenessChangeSubscriber,
@@ -280,16 +284,12 @@ import RvResource from './service/sync/interface/resource/rv-resource.interface'
280284
import RvBase from './service/sync/interface/rv-base.interface'
281285
import RvSceneNode from './service/sync/interface/scene/rv-scene-node.interface'
282286
import RvSeparate from './service/sync/interface/separate/rv-separate.interface'
283-
import { RvPresetType } from '@/service/sync/interface/step/node/material/preset/rv-preset-type.enum'
284-
285287
import RvAudio from './service/sync/interface/step/configuration/audio-info/rv-audio.interface'
286288
import RvConfiguration from './service/sync/interface/step/configuration/rv-configuration.interface'
287289
import RvCameraLocation from './service/sync/interface/step/environment/camera/location/rv-camera-location.interface'
288290
import RvCamera from './service/sync/interface/step/environment/camera/rv-camera.interface'
289291
import RvEnvironment from './service/sync/interface/step/environment/rv-environment.interface'
290292
import RvMaterial from './service/sync/interface/step/node/material/rv-material.interface'
291-
import { RvMaterialTexture } from '@/service/sync/interface/step/node/material/texture/rv-material-texture.interface'
292-
293293
import RvNode from './service/sync/interface/step/node/rv-node.interface'
294294
import RvStep from './service/sync/interface/step/rv-step.interface'
295295
import RvVersion from './service/sync/interface/version/rv-version.interface'
@@ -310,6 +310,7 @@ import SyncServiceApi from './service/sync/sync-service-api'
310310
import { TNodeSubscriber } from './service/target/dto/t-attributes-subscriber.type'
311311
import { TChangeType } from './service/target/dto/t-change-type.enum'
312312
import { TStepSubscriber } from './service/target/dto/t-step-subscriber.type'
313+
import TMultiNodeServiceApi from './service/target/t-multi-node-service-api'
313314
import TNodeServiceApi from './service/target/t-node-service-api'
314315
import TStepServiceApi from './service/target/t-step-service-api'
315316
import { C3, C4 } from './type/general/color.type'
@@ -566,6 +567,9 @@ export type {
566567
ShowAttributeContextMenu,
567568
ShowAttributeContextMenuOptions,
568569
StepBlockSelectProps,
570+
TMultiNodeServiceApi,
571+
UseTNodeAttribute,
572+
ITNodeAttribute,
569573
}
570574

571575
export {

src/service/sync/attribute/attribute-service-api.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import IGlobalAttribute from '@/service/sync/attribute/dto/instance/global-attri
66
import INodeAttribute from '@/service/sync/attribute/dto/instance/node-attribute.interface'
77
import IStepAttribute from '@/service/sync/attribute/dto/instance/step-attribute.interface'
88

9+
import ITNodeAttribute from './dto/target/t-node-attribute.interface'
10+
911
/**
1012
* 属性服务 API 接口
1113
*
@@ -56,6 +58,12 @@ export default interface AttributeServiceApi {
5658
// eslint-disable-next-line @typescript-eslint/no-explicit-any
5759
globalAttributes: IGlobalAttribute<any>[]
5860

61+
/**
62+
* 已注册的 TNode 类型属性列表
63+
*/
64+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
65+
tNodeAttributes: ITNodeAttribute<any>[]
66+
5967
/**
6068
* 注册属性
6169
*
@@ -89,6 +97,15 @@ export default interface AttributeServiceApi {
8997
*/
9098
getNodeAttribute<T extends object = never>(path: RvPath | string): INodeAttribute<T> | undefined
9199

100+
101+
/**
102+
* 通过路径获取 TNodeAttribute
103+
*
104+
* @param path - 属性路径,支持 RvPath 数组或字符串格式
105+
* @returns 匹配的 TNodeAttribute 实例,未找到返回 undefined
106+
*/
107+
getTNodeAttribute<T extends object = never>(path: RvPath | string): ITNodeAttribute<T> | undefined
108+
92109
/**
93110
* 通过路径获取 StepAttribute
94111
*
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { RecursiveCrossRhineVar, RvPath, StoredRhineVar } from 'rhine-var'
2+
3+
import { TChangeType } from '@/service/target/dto/t-change-type.enum'
4+
import TMultiNodeServiceApi from '@/service/target/t-multi-node-service-api'
5+
6+
import INodeAttribute from '../instance/node-attribute.interface'
7+
8+
export type TNodeAttributeSubscriber<T extends object = never> = (
9+
type: TChangeType,
10+
path: RvPath,
11+
value: unknown,
12+
oldValue: unknown,
13+
sid: string,
14+
nid: string,
15+
rvNode: StoredRhineVar<T> | null,
16+
) => void
17+
18+
export default interface ITNodeAttribute<T extends object = never> {
19+
attribute: INodeAttribute<T>
20+
tMultiNodeService: TMultiNodeServiceApi
21+
path(): RvPath
22+
sid(): string
23+
sidList(): string[]
24+
nid(): string
25+
nidList(): string[]
26+
initialize(nid: string): void
27+
isInitialize(nid: string): boolean
28+
multiInitialize(nidList: string[]): void
29+
isAllInitialized(nidList: string[]): boolean
30+
mark(path: string | RvPath, sid: string, nid: string): void
31+
multiMark(path: string | RvPath, sidList: string[], nidList: string[]): void
32+
get(sid: string, nid: string): RecursiveCrossRhineVar<T> | undefined
33+
multiGet(sidList: string[], nidList: string[]): Map<string, Map<string, StoredRhineVar<T>>>
34+
set(path: string | RvPath, value: unknown, sid: string, nid: string): void
35+
multiSet(path: string | RvPath, value: unknown, sidList: string[], nidList: string[]): void
36+
read(sid: string, nid: string): StoredRhineVar<T> | T | undefined
37+
multiRead(sidList: string[], nidList: string[]): Map<string, Map<string, StoredRhineVar<T> | T>>
38+
edit(path: string | RvPath, value: unknown, sid: string, nid: string): void
39+
multiEdit(path: string | RvPath, value: unknown, sidList: string[], nidList: string[]): void
40+
subscribe(subscriber: TNodeAttributeSubscriber<T>): () => void
41+
unsubscribe(subscriber: TNodeAttributeSubscriber<T>): void
42+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { RvPath, StoredRhineVar } from 'rhine-var'
2+
3+
import RvNode from '@/service/sync/interface/step/node/rv-node.interface'
4+
import { TNodeSubscriber } from '@/service/target/dto/t-attributes-subscriber.type'
5+
6+
export default interface TMultiNodeServiceApi {
7+
sid: string
8+
9+
nidList: string[]
10+
11+
lastNid: string
12+
13+
state: StoredRhineVar<RvNode> | null
14+
15+
get<T = unknown>(path: string | RvPath): T | null
16+
17+
set<T = unknown>(path: string | RvPath, value: T): void
18+
19+
subscribe(subscriber: TNodeSubscriber): () => void
20+
21+
unsubscribe(subscriber: TNodeSubscriber): void
22+
}

0 commit comments

Comments
 (0)