@i3yun/editor
Version:
修复字符串的一个问题
288 lines (274 loc) • 9.64 kB
TypeScript
///<reference types="@i3yun/viewer" />
declare namespace NBYC {
class ContainerHost {
static Current: {
Get<T>(type: { new(): T }): T
Set<T>(type: { new(): T }, build?: () => T): void;
Clear(): void;
}
static CreateContainer(): {
Get<T>(type: { new(): T }): T
Set<T>(type: { new(): T }, build?: () => T): void;
Clear(): void;
}
}
class AppSetting {
GuiScriptBaseUrl: string
GuiDefaultVisible: boolean
ViewerScriptBaseUrl: string
ViewerDataBaseUrl: string
ViewerEnableGL2: false | true;
ViewerEnableGui: "0" | "1";
ViewerEnableEdit: false | true;
ViewerElementId: string
StartSceneUrl: string
}
class AppService {
LoadFile(sceneFileName: string): Promise<void>;
ModelManService: Services.ModelManService;
GroupManService: Services.GroupManService;
MarkupManService: Services.MarkupManService;
ViewManService: Services.ViewPointManService;
SettingService: Services.SettingService;
}
namespace Services {
class DataService {
}
class ViewerService {
viewer: Sippreep.Viewing.Viewer3D;
ViewerPromise: Promise<Sippreep.Viewing.Viewer3D>;
}
class ModelManService {
getData(): { modelLayers: { url: string, name: string, hide?: boolean, transparent?: boolean }[] }
updateViewer(): Promise<void>;
}
class GroupManService {
getData(): { groups: { name: string, color: Array<number>, disableColor?: boolean, selection: { name: string, dbIds: Array<number> }[] }[] }
updateViewer(): Promise<void>;
}
class MarkupManService {
getData(): { items: { name: string, visible: boolean, color: number[], face: boolean, connect: boolean, anchorValue: number[][] }[] };
updateViewer(): Promise<void>;
OnItemClick: (item: { name: string, visible: boolean, color: number[], face: boolean, connect: boolean, anchorValue: number[][] }) => void
}
class ViewPointManService {
getData(): { name: string, view: any }[]
viewSelect(index: number): void;
}
class SettingService {
getData(): {
setting: {
AOradius: number;
AOintensity: number;
AOopacity: number;
lightPreset: number;
ambientShadows: boolean;
lightValue: number;
toggleShadows: boolean;
toggleGhosting: boolean;
backTopColor: number[];
backBottomColor: number[];
ghostingOpacity: number;
ghostingColor: number[];
FPSTargets: number;
}
};
updateViewer(): Promise<void>;
}
class EditorService {
InitPromise: Promise<void>;
events: {
sceneChanged: EventHandler<ObjectApp>,
nodeChanged: EventHandler<ObjectNode>,
nodeSelected: EventHandler<ObjectNode>,
nodeFocused: EventHandler<ObjectNode>,
playerEnableChanged: EventHandler<boolean>,
playerTimeChanged: EventHandler<number>,
playerSpeedChanged: EventHandler<number>,
pickToolCallbackedV2: EventHandler<{ point: [number, number, number], node: ObjectNode }>,
pickToolCallbacked: EventHandler<[number, number, number]>,
pickToolEnableChanged: EventHandler<boolean>,
transformModeChanged: EventHandler<"translate" | "rotate" | "scale">,
modelPartRenderCreating: EventHandler<ModelRenderComponent>,
parameterChanged: EventHandler<{ [name: string]: any }>,
firstPersonToolEnableChanged: EventHandler<boolean>,
}
getScene(): ObjectApp;
setScene(value: ObjectApp): void;
fitView(): void;
play(): void;
stop(): void;
findNode(uuid: string): ObjectNode;
findParent(node: ObjectNode): ObjectNode | undefined;
findComponent(uuid: string): ObjectComponent;
findComponentNode(component: ObjectComponent): ObjectNode | undefined;
moveNode(node: ObjectNode, parent: ObjectNode, before?: ObjectNode): void;
setNodeState(node: ObjectNode, state: ObjectState, excludeChildren?: boolean, excludeComponent?: boolean): void;
getAnimationState(node: ObjectNode, excludeChildren?: boolean): any;
setAnimationState(node: ObjectNode, state: any): void;
getViewPointState(): {
position: [number, number, number],
target: [number, number, number]
};
setViewPointState(state: {
position: [number, number, number],
target: [number, number, number]
}, progressive?: boolean): void;
}
}
class EventHandler<T = any> {
dispatchEvent(data?: T, sender?: any): void;
addEventListener(handle: (data: T, sender: any) => void): void;
removeEventListener(handle: (data: T, sender: any) => void): void;
}
class HelperTool {
static FromQuery(url?: string): any;
static httpGet(requestURL: string): Promise<any>
}
type ObjectApp = {
metadata: { type: string }
scene: ObjectNode
}
type ObjectNode = {
uuid: string,
name: string,
state: ObjectState,
/**
* 位置
*/
position: [number, number, number],
/**
* 角度(0-360)
*/
rotation: [number, number, number],
/**
* 大小
*/
scale: [number, number, number],
children: ObjectNode[],
components: ObjectComponent[],
}
/**
* 对象状态
*/
enum ObjectState {
/**
* 对象被改变
*/
change,
/**
* 对象被删除
*/
delete,
/**
* 对象被完成
*/
done,
}
type ObjectComponent = {
uuid: string,
type: string,
state: ObjectState,
active: boolean
}
type ModelRenderComponent = ObjectComponent &
{
url: string,
/**
* 大小为(1,1,1)的模型自身坐标系的位移偏移量
*/
offset?: [number, number, number]
transparent?: boolean
}
type ModelPartRenderComponent = ObjectComponent & {
part: string,
/**
* 局部坐标
*/
offset?: [number, number, number]
transparent?: boolean
}
type PathAnimationComponent = ObjectComponent & {
time: number,
pathNode: string,
}
type RotateAnimationComponent = ObjectComponent & {
time: number,
directionNode: string,
}
type MarkPanelComponent = ObjectComponent & {
content: string
}
type AnimationComponent = ObjectComponent & {
frames: {
time: number,
state: any
}[]
}
type ParameterComponent = ObjectComponent & {
formula: string,
frames: {
time: number
state: {
position: [number, number, number],
rotation: [number, number, number],
scale: [number, number, number],
},
}[]
}
type ViewPointAnimationComponent = ObjectComponent & {
play: boolean
frames: {
time: number,
state: {
position: [number, number, number],
target: [number, number, number]
},
}[]
}
/**
* 时间线动画系统组件
*
* 帧 组成 动作,动作 组成 时间线动画
*
* 此组件记录了当前物体的多个动作(sublist)
* 每个动作由多个帧(frames)组成
* 每帧记录position、rotation、scale信息
*/
type TimeActionComponent = ObjectComponent & {
subList: {
frames: {
time: number,
state: {
position: [number, number, number],
rotation: [number, number, number],
scale: [number, number, number],
},
}[]
}[]
}
/**
* 时间线动画系统组件
*
* 帧 组成 动作,动作 组成 时间线动画
*
* 此组件与当前物体无关。
* 此组件记录了多个动作的时间排布
* 每个fragments记录了一个物体的一个动作及其开始与持续时间
*/
type TimeActionLineComponent = ObjectComponent & {
// 是否响应播放开关
play: boolean
fragments: {
actionNodeId: string,
actionSubIndex: number,
startTime: number,
duration: number,
}[]
}
/**
* 相机控制组件
*/
type CameraCtrlComponent = ObjectComponent & {
}
}