Add range object archive function

This commit is contained in:
ben.qin 2022-04-21 17:20:03 +08:00
parent 597c7e9493
commit 1d36aac37d
2 changed files with 26 additions and 8 deletions

View File

@ -109,7 +109,7 @@ class CtrlObject extends LabelObject {
return this.deleteFlag; return this.deleteFlag;
} }
public toArchive(): IArchiveCtrlObject { public toArchive<T>(): IArchiveCtrlObject & T {
return { return {
displayName: this.displayName, displayName: this.displayName,
color: this.color.concat([]), color: this.color.concat([]),
@ -118,10 +118,10 @@ class CtrlObject extends LabelObject {
id: this.id, id: this.id,
renderParameter: parameter2ArchiveObject(this.renderParameter), renderParameter: parameter2ArchiveObject(this.renderParameter),
deleteFlag: !!this.deleteFlag deleteFlag: !!this.deleteFlag
}; } as any;
} }
public fromArchive(archive: IArchiveCtrlObject, paster?: IArchiveParseFn): void { public fromArchive<T>(archive: IArchiveCtrlObject & T, paster?: IArchiveParseFn): void {
this.displayName = archive.displayName; this.displayName = archive.displayName;
this.color = archive.color.concat([]); this.color = archive.color.concat([]);
this.display = !!archive.display; this.display = !!archive.display;

View File

@ -1,6 +1,11 @@
import { CtrlObject } from "@Model/CtrlObject"; import { CtrlObject, IArchiveCtrlObject } from "@Model/CtrlObject";
import { Model, ObjectID } from "@Model/Model"; import { Model } from "@Model/Model";
import { getDefaultValue } from "@Model/Parameter"; import { getDefaultValue, IArchiveParseFn, parameter2ArchiveObject } from "@Model/Parameter";
interface IArchiveRange {
position: Range["position"];
radius: Range["radius"];
}
/** /**
* *
@ -26,7 +31,20 @@ class Range extends CtrlObject {
} }
} }
public override toArchive<T>(): IArchiveCtrlObject & T {
return {
...super.toArchive(),
position: this.position.concat([]),
radius: this.radius.concat([])
};
} }
export default Range; public override fromArchive<T>(archive: IArchiveCtrlObject & T, paster?: IArchiveParseFn): void {
export { Range }; super.fromArchive(archive, paster);
this.position = (archive as any).position.concat([]),
this.radius = (archive as any).radius.concat([])
}
}
export { Range, IArchiveRange };