@vived/app 5.0.1 → 5.0.2
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/dist/cjs/Callouts/UC/CreateCalloutUC.js +1 -1
- package/dist/cjs/Callouts/UC/CreateCalloutUC.js.map +1 -1
- package/dist/cjs/Callouts/UC/CreateCalloutUC.test.js +3 -2
- package/dist/cjs/Callouts/UC/CreateCalloutUC.test.js.map +1 -1
- package/dist/cjs/Hideable/Entities/Hideable.js +1 -0
- package/dist/cjs/Hideable/Entities/Hideable.js.map +1 -1
- package/dist/cjs/Hideable/Entities/Hideable.test.js +6 -0
- package/dist/cjs/Hideable/Entities/Hideable.test.js.map +1 -1
- package/dist/cjs/Hideable/UCs/SerializeHideableObjects.js +1 -1
- package/dist/cjs/Hideable/UCs/SerializeHideableObjects.js.map +1 -1
- package/dist/cjs/Hideable/UCs/SerializeHideableObjects.test.js +8 -0
- package/dist/cjs/Hideable/UCs/SerializeHideableObjects.test.js.map +1 -1
- package/dist/cjs/Landmarks/Factories/setupLandmarks.js +8 -1
- package/dist/cjs/Landmarks/Factories/setupLandmarks.js.map +1 -1
- package/dist/cjs/Selection/UC/SelectAppObjectUC.js +10 -0
- package/dist/cjs/Selection/UC/SelectAppObjectUC.js.map +1 -1
- package/dist/cjs/Selection/UC/SelectAppObjectUC.test.js +31 -0
- package/dist/cjs/Selection/UC/SelectAppObjectUC.test.js.map +1 -1
- package/dist/esm/Callouts/UC/CreateCalloutUC.js +1 -1
- package/dist/esm/Callouts/UC/CreateCalloutUC.js.map +1 -1
- package/dist/esm/Callouts/UC/CreateCalloutUC.test.js +3 -2
- package/dist/esm/Callouts/UC/CreateCalloutUC.test.js.map +1 -1
- package/dist/esm/Hideable/Entities/Hideable.js +1 -0
- package/dist/esm/Hideable/Entities/Hideable.js.map +1 -1
- package/dist/esm/Hideable/Entities/Hideable.test.js +6 -0
- package/dist/esm/Hideable/Entities/Hideable.test.js.map +1 -1
- package/dist/esm/Hideable/UCs/SerializeHideableObjects.js +1 -1
- package/dist/esm/Hideable/UCs/SerializeHideableObjects.js.map +1 -1
- package/dist/esm/Hideable/UCs/SerializeHideableObjects.test.js +8 -0
- package/dist/esm/Hideable/UCs/SerializeHideableObjects.test.js.map +1 -1
- package/dist/esm/Landmarks/Factories/setupLandmarks.js +9 -2
- package/dist/esm/Landmarks/Factories/setupLandmarks.js.map +1 -1
- package/dist/esm/Selection/UC/SelectAppObjectUC.js +10 -0
- package/dist/esm/Selection/UC/SelectAppObjectUC.js.map +1 -1
- package/dist/esm/Selection/UC/SelectAppObjectUC.test.js +31 -0
- package/dist/esm/Selection/UC/SelectAppObjectUC.test.js.map +1 -1
- package/dist/types/Hideable/Entities/Hideable.d.ts +1 -0
- package/dist/types/Hideable/Entities/Hideable.d.ts.map +1 -1
- package/dist/types/Hideable/UCs/SerializeHideableObjects.d.ts.map +1 -1
- package/dist/types/Landmarks/Factories/setupLandmarks.d.ts.map +1 -1
- package/dist/types/Selection/UC/SelectAppObjectUC.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -45,7 +45,7 @@ class CreateCalloutUCImp extends CreateCalloutUC {
|
|
|
45
45
|
callout.labelTransform.worldPosition = core_1.Vector3.Add(labelBump, pickHit);
|
|
46
46
|
callout.labelTransform.worldRotation = core_1.Quaternion.FromYawPitchRoll(core_1.Angle.FromDegrees(180), core_1.Angle.FromDegrees(0), core_1.Angle.FromDegrees(0));
|
|
47
47
|
if (this.repoLabel) {
|
|
48
|
-
callout.label.default = this.repoLabel.
|
|
48
|
+
callout.label.default = this.repoLabel.display;
|
|
49
49
|
}
|
|
50
50
|
if (this.calloutGlobals) {
|
|
51
51
|
callout.size = this.calloutGlobals.lastSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateCalloutUC.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.ts"],"names":[],"mappings":";;;AAqCA,kDAEC;AAvCD,sCAOqB;AACrB,kEAA+D;AAE/D,+DAA4D;AAC5D,yDAAsD;AACtD,mEAAgE;AAEhE,MAAsB,eAAgB,SAAQ,kBAAW;IAAzD;;QAGW,uBAAkB,GAAG,IAAI,CAAC;IAkBrC,CAAC;IAVC,MAAM,CAAC,GAAG,CAAC,MAAiB;QAC1B,OAAO,MAAM,CAAC,YAAY,CAAkB,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,OAAO,CACZ,EAAU,EACV,UAAyB;QAEzB,OAAO,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,YAAY,CAAkB,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;;AApBH,0CAqBC;AApBiB,oBAAI,GAAG,iBAAiB,AAApB,CAAqB;AAsB3C,SAAgB,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAC9C,IAAY,IAAI;QACd,OAAO,IAAI,CAAC,uBAAuB,CAAc,yBAAW,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,+BAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,uBAAuB,CAAc,yBAAW,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ,CACN,OAAgB,EAChB,aAAsB,EACtB,WAAoB,IAAI;QAExB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAExC,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,OAAO,CAAC;QAC9C,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,iBAAU,CAAC,mBAAmB,CAClE,aAAa,CACd,CAAC;QAEF,MAAM,SAAS,GAAG,cAAO,CAAC,iBAAiB,CACzC,aAAa,EACb,IAAI,CAAC,kBAAkB,CACxB,CAAC;QACF,OAAO,CAAC,cAAc,CAAC,aAAa,GAAG,cAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvE,OAAO,CAAC,cAAc,CAAC,aAAa,GAAG,iBAAU,CAAC,gBAAgB,CAChE,YAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EACtB,YAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EACpB,YAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC5C,OAAO,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QACpE,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,6CAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF","sourcesContent":["import {\r\n Angle,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n Quaternion,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { LabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { CalloutEntity } from \"../Entities/CalloutEntity\";\r\nimport { CalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { CalloutRepo } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\nexport abstract class CreateCalloutUC extends AppObjectUC {\r\n static readonly type = \"CreateCalloutUC\";\r\n\r\n readonly newLabelBumpAmount = 0.01;\r\n\r\n abstract fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo?: boolean\r\n ): CalloutEntity | undefined;\r\n\r\n static get(appObj: AppObject): CreateCalloutUC | undefined {\r\n return appObj.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n\r\n static getById(\r\n id: string,\r\n appObjects: AppObjectRepo\r\n ): CreateCalloutUC | undefined {\r\n return appObjects.get(id)?.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n}\r\n\r\nexport function makeCreateCalloutUC(appObject: AppObject): CreateCalloutUC {\r\n return new CreateCalloutUCImp(appObject);\r\n}\r\n\r\nclass CreateCalloutUCImp extends CreateCalloutUC {\r\n private get repo() {\r\n return this.getCachedLocalComponent<CalloutRepo>(CalloutRepo.type);\r\n }\r\n\r\n private get calloutGlobals() {\r\n return this.getCachedSingleton<CalloutGlobals>(CalloutGlobals.type);\r\n }\r\n\r\n private get repoLabel() {\r\n return this.getCachedLocalComponent<LabelEntity>(LabelEntity.type);\r\n }\r\n\r\n fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo: boolean = true\r\n ): CalloutEntity {\r\n if (!this.repo) {\r\n throw new Error(\"No Callout Repo\");\r\n }\r\n\r\n const callout = this.repo.makeCallout();\r\n\r\n callout.rootTransform.worldPosition = pickHit;\r\n callout.rootTransform.worldRotation = Quaternion.FromDirectionVector(\r\n pickHitNormal\r\n );\r\n\r\n const labelBump = Vector3.NewVectorOfLength(\r\n pickHitNormal,\r\n this.newLabelBumpAmount\r\n );\r\n callout.labelTransform.worldPosition = Vector3.Add(labelBump, pickHit);\r\n callout.labelTransform.worldRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n if (this.repoLabel) {\r\n callout.label.default = this.repoLabel.
|
|
1
|
+
{"version":3,"file":"CreateCalloutUC.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.ts"],"names":[],"mappings":";;;AAqCA,kDAEC;AAvCD,sCAOqB;AACrB,kEAA+D;AAE/D,+DAA4D;AAC5D,yDAAsD;AACtD,mEAAgE;AAEhE,MAAsB,eAAgB,SAAQ,kBAAW;IAAzD;;QAGW,uBAAkB,GAAG,IAAI,CAAC;IAkBrC,CAAC;IAVC,MAAM,CAAC,GAAG,CAAC,MAAiB;QAC1B,OAAO,MAAM,CAAC,YAAY,CAAkB,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,OAAO,CACZ,EAAU,EACV,UAAyB;QAEzB,OAAO,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,YAAY,CAAkB,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;;AApBH,0CAqBC;AApBiB,oBAAI,GAAG,iBAAiB,AAApB,CAAqB;AAsB3C,SAAgB,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAmB,SAAQ,eAAe;IAC9C,IAAY,IAAI;QACd,OAAO,IAAI,CAAC,uBAAuB,CAAc,yBAAW,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,+BAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,uBAAuB,CAAc,yBAAW,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ,CACN,OAAgB,EAChB,aAAsB,EACtB,WAAoB,IAAI;QAExB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAExC,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,OAAO,CAAC;QAC9C,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,iBAAU,CAAC,mBAAmB,CAClE,aAAa,CACd,CAAC;QAEF,MAAM,SAAS,GAAG,cAAO,CAAC,iBAAiB,CACzC,aAAa,EACb,IAAI,CAAC,kBAAkB,CACxB,CAAC;QACF,OAAO,CAAC,cAAc,CAAC,aAAa,GAAG,cAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvE,OAAO,CAAC,cAAc,CAAC,aAAa,GAAG,iBAAU,CAAC,gBAAgB,CAChE,YAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EACtB,YAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EACpB,YAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC5C,OAAO,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QACpE,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,6CAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF","sourcesContent":["import {\r\n Angle,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n Quaternion,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { LabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { CalloutEntity } from \"../Entities/CalloutEntity\";\r\nimport { CalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { CalloutRepo } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\nexport abstract class CreateCalloutUC extends AppObjectUC {\r\n static readonly type = \"CreateCalloutUC\";\r\n\r\n readonly newLabelBumpAmount = 0.01;\r\n\r\n abstract fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo?: boolean\r\n ): CalloutEntity | undefined;\r\n\r\n static get(appObj: AppObject): CreateCalloutUC | undefined {\r\n return appObj.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n\r\n static getById(\r\n id: string,\r\n appObjects: AppObjectRepo\r\n ): CreateCalloutUC | undefined {\r\n return appObjects.get(id)?.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n}\r\n\r\nexport function makeCreateCalloutUC(appObject: AppObject): CreateCalloutUC {\r\n return new CreateCalloutUCImp(appObject);\r\n}\r\n\r\nclass CreateCalloutUCImp extends CreateCalloutUC {\r\n private get repo() {\r\n return this.getCachedLocalComponent<CalloutRepo>(CalloutRepo.type);\r\n }\r\n\r\n private get calloutGlobals() {\r\n return this.getCachedSingleton<CalloutGlobals>(CalloutGlobals.type);\r\n }\r\n\r\n private get repoLabel() {\r\n return this.getCachedLocalComponent<LabelEntity>(LabelEntity.type);\r\n }\r\n\r\n fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo: boolean = true\r\n ): CalloutEntity {\r\n if (!this.repo) {\r\n throw new Error(\"No Callout Repo\");\r\n }\r\n\r\n const callout = this.repo.makeCallout();\r\n\r\n callout.rootTransform.worldPosition = pickHit;\r\n callout.rootTransform.worldRotation = Quaternion.FromDirectionVector(\r\n pickHitNormal\r\n );\r\n\r\n const labelBump = Vector3.NewVectorOfLength(\r\n pickHitNormal,\r\n this.newLabelBumpAmount\r\n );\r\n callout.labelTransform.worldPosition = Vector3.Add(labelBump, pickHit);\r\n callout.labelTransform.worldRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n if (this.repoLabel) {\r\n callout.label.default = this.repoLabel.display;\r\n }\r\n\r\n if (this.calloutGlobals) {\r\n callout.size = this.calloutGlobals.lastSize;\r\n callout.overlayColor.overlayColor = this.calloutGlobals.lastColor;\r\n }\r\n\r\n if (undoRedo) {\r\n new CreateCalloutUndoRedo(callout.data, this.appObjects);\r\n }\r\n\r\n return callout;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, CreateCalloutUC.type);\r\n }\r\n}\r\n"]}
|
|
@@ -60,10 +60,11 @@ describe("Create Callout UC", () => {
|
|
|
60
60
|
const expectRot = core_1.Quaternion.FromYawPitchRoll(core_1.Angle.FromDegrees(180), core_1.Angle.FromDegrees(0), core_1.Angle.FromDegrees(0));
|
|
61
61
|
expect(core_1.Quaternion.Close(newCallout.labelTransform.worldRotation, expectRot)).toEqual(true);
|
|
62
62
|
});
|
|
63
|
-
it("Sets the default label the the repo's
|
|
63
|
+
it("Sets the default label the the repo's current label", () => {
|
|
64
64
|
const { uc, label } = makeTestRig();
|
|
65
|
+
label.custom = "a custom label";
|
|
65
66
|
const newCallout = uc.fromPick(core_1.Vector3.One(), new core_1.Vector3(1, 2, 3));
|
|
66
|
-
expect(newCallout.label.default).toEqual(label.
|
|
67
|
+
expect(newCallout.label.default).toEqual(label.custom);
|
|
67
68
|
});
|
|
68
69
|
it("Sets the callout to the global size", () => {
|
|
69
70
|
const { uc, calloutGlobals } = makeTestRig();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateCalloutUC.test.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CreateCalloutUC.test.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Angle, makeAppObjectRepo, Quaternion, Vector3 } from \"@vived/core\";\r\nimport { makeLabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { OverlayColorEnums } from \"../../OverlayColor/Entities/OverlayColor\";\r\nimport { makeCalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { makeCalloutRepoEntity } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUC, makeCreateCalloutUC } from \"./CreateCalloutUC\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\njest.mock(\"./CreateCalloutUndoRedo\");\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n\r\n const calloutGlobals = makeCalloutGlobals(\r\n appObjects.getOrCreate(\"CalloutGlobals\")\r\n );\r\n const repoObj = appObjects.getOrCreate(\"repoObj\");\r\n const repo = makeCalloutRepoEntity(repoObj);\r\n const label = makeLabelEntity(repoObj);\r\n\r\n label.default = \"a sick default label\";\r\n\r\n const uc = makeCreateCalloutUC(repoObj);\r\n\r\n return {\r\n appObjects,\r\n repoObj,\r\n repo,\r\n uc,\r\n label,\r\n calloutGlobals,\r\n };\r\n}\r\n\r\ndescribe(\"Create Callout UC\", () => {\r\n it(\"Gets the UC off an app object\", () => {\r\n const { repoObj, uc } = makeTestRig();\r\n expect(CreateCalloutUC.get(repoObj)).toEqual(uc);\r\n });\r\n\r\n it(\"Gets the UC by ID\", () => {\r\n const { appObjects, uc } = makeTestRig();\r\n expect(CreateCalloutUC.getById(\"repoObj\", appObjects)).toEqual(uc);\r\n });\r\n\r\n it(\"Sets the root position to the world pick point\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(new Vector3(1, 2, 3), Vector3.One());\r\n\r\n expect(newCallout?.rootTransform.worldPosition).toEqual(\r\n new Vector3(1, 2, 3)\r\n );\r\n });\r\n\r\n it(\"Sets the root world rotation to the pick normal\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n const expectRot = Quaternion.FromDirectionVector(new Vector3(1, 2, 3));\r\n\r\n expect(\r\n Quaternion.Close(newCallout!.rootTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the label position as the pick plus a little bump along the normal\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const pickPoint = new Vector3(1, 2, 3);\r\n const pickNormal = new Vector3(4, 5, 6);\r\n const newCallout = uc.fromPick(pickPoint, pickNormal)!;\r\n\r\n const bumpVector = Vector3.NewVectorOfLength(\r\n pickNormal,\r\n uc.newLabelBumpAmount\r\n );\r\n const expectedPos = Vector3.Add(bumpVector, pickPoint);\r\n\r\n expect(newCallout.labelTransform.worldPosition).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Sets the label rotation looking backwards\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n const expectRot = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(\r\n Quaternion.Close(newCallout.labelTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the default label the the repo's current label\", () => {\r\n const { uc, label } = makeTestRig();\r\n\r\n label.custom = \"a custom label\";\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.label.default).toEqual(label.custom);\r\n });\r\n\r\n it(\"Sets the callout to the global size\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastSize = 1.23;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.size).toEqual(1.23);\r\n });\r\n\r\n it(\"Sets the callout to the global color\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastColor = OverlayColorEnums.PINK;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.overlayColor.overlayColor).toEqual(\r\n OverlayColorEnums.PINK\r\n );\r\n });\r\n\r\n it(\"Creates an undo\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n expect(CreateCalloutUndoRedo).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hideable.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":";;;AAAA,sCAKqB;AAErB,MAAa,QAAS,SAAQ,sBAAe;IAG3C,MAAM,CAAC,YAAY,CAAC,MAAiB;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAW,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC,YAAY,CAAW,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;
|
|
1
|
+
{"version":3,"file":"Hideable.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":";;;AAAA,sCAKqB;AAErB,MAAa,QAAS,SAAQ,sBAAe;IAG3C,MAAM,CAAC,YAAY,CAAC,MAAiB;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAW,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC,YAAY,CAAW,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAKD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAc,CAAC;IAC9C,CAAC;IACD,IAAI,QAAQ,CAAC,GAAY;QACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,GAAG,CAAC;IAClC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAX3B,wBAAmB,GAAG,KAAK,CAAC;QAE3B,qBAAgB,GAAG,IAAI,sBAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAU3E,CAAC;;AAnCH,4BAoCC;AAnCiB,aAAI,GAAG,UAAU,AAAb,CAAc","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo,\r\n MemoizedBoolean,\r\n} from \"@vived/core\";\r\n\r\nexport class Hideable extends AppObjectEntity {\r\n static readonly type = \"HIDEABLE\";\r\n\r\n static addIfMissing(appObj: AppObject): Hideable {\r\n const existing = appObj.getComponent<Hideable>(this.type);\r\n if (existing) {\r\n return existing;\r\n } else {\r\n return new Hideable(appObj);\r\n }\r\n }\r\n\r\n static get(\r\n appObjID: string,\r\n appObjects: AppObjectRepo\r\n ): Hideable | undefined {\r\n const appObj = appObjects.get(appObjID);\r\n if (appObj === undefined) {\r\n return undefined;\r\n }\r\n return appObj.getComponent<Hideable>(Hideable.type);\r\n }\r\n\r\n public ignoreSerialization = false;\r\n\r\n private memoizedIsHidden = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isHidden(): boolean {\r\n return this.memoizedIsHidden.val as boolean;\r\n }\r\n set isHidden(val: boolean) {\r\n this.memoizedIsHidden.val = val;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, Hideable.type);\r\n }\r\n}\r\n"]}
|
|
@@ -45,5 +45,11 @@ describe("Hideable Entity", () => {
|
|
|
45
45
|
Hideable_1.Hideable.addIfMissing(newAO);
|
|
46
46
|
expect(newAO.hasComponent(Hideable_1.Hideable.type)).toEqual(true);
|
|
47
47
|
});
|
|
48
|
+
it("Has a property called ignoreSerialization that can be set", () => {
|
|
49
|
+
const { hideable } = makeTestRig();
|
|
50
|
+
expect(hideable.ignoreSerialization).toEqual(false);
|
|
51
|
+
hideable.ignoreSerialization = true;
|
|
52
|
+
expect(hideable.ignoreSerialization).toEqual(true);
|
|
53
|
+
});
|
|
48
54
|
});
|
|
49
55
|
//# sourceMappingURL=Hideable.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hideable.test.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.test.ts"],"names":[],"mappings":";;AAAA,sCAA+D;AAC/D,yCAAsC;AAEtC,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAErC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACpD,CAAC;AAED,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3C,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEnB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7C,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEzC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEzB,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAE/C,MAAM,CAAC,mBAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3C,MAAM,CAAC,mBAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAErC,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAElD,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEzD,mBAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObject, makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"./Hideable\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appID\", appObjects);\r\n const hideable = new Hideable(appObj);\r\n const observer = jest.fn();\r\n hideable.addChangeObserver(observer);\r\n\r\n return { hideable, observer, appObj, appObjects };\r\n}\r\n\r\ndescribe(\"Hideable Entity\", () => {\r\n it(\"Adds itself to the App Object\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(true);\r\n expect(appObj.getComponent(Hideable.type)).toEqual(hideable);\r\n });\r\n\r\n it(\"Removes itself from the App Object when disposed\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n hideable.dispose();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(false);\r\n });\r\n\r\n it(\"Notifies when the is hidden changes\", () => {\r\n const { hideable, observer } = makeTestRig();\r\n\r\n expect(hideable.isHidden).toEqual(false);\r\n\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n\r\n expect(observer).toHaveBeenCalledTimes(1);\r\n expect(hideable.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Gets the entity from an AO\", () => {\r\n const { hideable, appObjects } = makeTestRig();\r\n\r\n expect(Hideable.get(\"appID\", appObjects)).toEqual(hideable);\r\n });\r\n\r\n it(\"Returns the existing when calling add if missing \", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(Hideable.addIfMissing(appObj)).toEqual(hideable);\r\n });\r\n\r\n it(\"Creates a new one if addIfMissing is called\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n const newAO = appObjects.getOrCreate(\"anotherAO\");\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(false);\r\n\r\n Hideable.addIfMissing(newAO);\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(true);\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"Hideable.test.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObject, makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"./Hideable\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appID\", appObjects);\r\n const hideable = new Hideable(appObj);\r\n const observer = jest.fn();\r\n hideable.addChangeObserver(observer);\r\n\r\n return { hideable, observer, appObj, appObjects };\r\n}\r\n\r\ndescribe(\"Hideable Entity\", () => {\r\n it(\"Adds itself to the App Object\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(true);\r\n expect(appObj.getComponent(Hideable.type)).toEqual(hideable);\r\n });\r\n\r\n it(\"Removes itself from the App Object when disposed\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n hideable.dispose();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(false);\r\n });\r\n\r\n it(\"Notifies when the is hidden changes\", () => {\r\n const { hideable, observer } = makeTestRig();\r\n\r\n expect(hideable.isHidden).toEqual(false);\r\n\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n\r\n expect(observer).toHaveBeenCalledTimes(1);\r\n expect(hideable.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Gets the entity from an AO\", () => {\r\n const { hideable, appObjects } = makeTestRig();\r\n\r\n expect(Hideable.get(\"appID\", appObjects)).toEqual(hideable);\r\n });\r\n\r\n it(\"Returns the existing when calling add if missing \", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(Hideable.addIfMissing(appObj)).toEqual(hideable);\r\n });\r\n\r\n it(\"Creates a new one if addIfMissing is called\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n const newAO = appObjects.getOrCreate(\"anotherAO\");\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(false);\r\n\r\n Hideable.addIfMissing(newAO);\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(true);\r\n });\r\n\r\n it(\"Has a property called ignoreSerialization that can be set\", () => {\r\n const { hideable } = makeTestRig();\r\n expect(hideable.ignoreSerialization).toEqual(false);\r\n hideable.ignoreSerialization = true;\r\n expect(hideable.ignoreSerialization).toEqual(true);\r\n });\r\n});\r\n"]}
|
|
@@ -21,7 +21,7 @@ class SerializeHideableObjectsImp extends SerializeHideableObjects {
|
|
|
21
21
|
const hiddenObjects = [];
|
|
22
22
|
const allHideables = this.appObjects.getAllComponents(Hideable_1.Hideable.type);
|
|
23
23
|
allHideables.forEach((hideable) => {
|
|
24
|
-
if (hideable.isHidden)
|
|
24
|
+
if (hideable.isHidden && !hideable.ignoreSerialization)
|
|
25
25
|
hiddenObjects.push(hideable.appObject.id);
|
|
26
26
|
});
|
|
27
27
|
const state = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SerializeHideableObjects.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":";;;AAsBA,oEAIC;AA1BD,mDAAgD;AAChD,uFAGwD;AACxD,sCAAqD;AAErD,MAAsB,wBACpB,SAAQ,kBAAW;IADrB;;QAIE,SAAI,GAAW,kBAAkB,CAAC;IASpC,CAAC;;AAbD,4DAaC;AAViB,6BAAI,GAAG,0BAA0B,AAA7B,CAA8B;AAYpD,SAAgB,4BAA4B,CAC1C,SAAoB;IAEpB,OAAO,IAAI,2BAA2B,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,MAAa,2BAA4B,SAAQ,wBAAwB;IASvE,cAAc;QACZ,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CACnD,mBAAQ,CAAC,IAAI,CACd,CAAC;QAEF,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,QAAQ,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"SerializeHideableObjects.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":"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","sourcesContent":["import { Hideable } from \"../Entities/Hideable\";\r\nimport {\r\n SerializedSystem,\r\n StateMachineEntity,\r\n} from \"../../StateMachine/Entities/StateMachineEntity\";\r\nimport { AppObjectUC, AppObject } from \"@vived/core\";\r\n\r\nexport abstract class SerializeHideableObjects\r\n extends AppObjectUC\r\n implements SerializedSystem {\r\n static readonly type = \"SerializeHideableObjects\";\r\n name: string = \"hideable-objects\";\r\n abstract seriliziationVersion: number;\r\n abstract getSystemState(): object;\r\n abstract applySystemState(\r\n state: object,\r\n version: number,\r\n transitionDuration: number\r\n ): void;\r\n abstract applyDefaultState(transitionDuration: number): void;\r\n}\r\n\r\nexport function makeSerializeHideableObjects(\r\n appObject: AppObject\r\n): SerializeHideableObjects {\r\n return new SerializeHideableObjectsImp(appObject);\r\n}\r\n\r\nexport class SerializeHideableObjectsImp extends SerializeHideableObjects {\r\n seriliziationVersion = 1;\r\n\r\n selectChannelModelUC: () => void = () => {\r\n console.warn(\r\n \"[SerializeHideableObjects] Select Channel Model UC was not setup\"\r\n );\r\n };\r\n\r\n getSystemState(): object {\r\n const hiddenObjects: string[] = [];\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n if (hideable.isHidden && !hideable.ignoreSerialization)\r\n hiddenObjects.push(hideable.appObject.id);\r\n });\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects,\r\n };\r\n\r\n return state;\r\n }\r\n\r\n applySystemState(\r\n state: object,\r\n version: number,\r\n durationS: number\r\n ): Promise<void> | void {\r\n if (version === 1) {\r\n return this.applyStateV1(state as SerializedHideableObjectsV1, durationS);\r\n } else {\r\n this.applyDefaultState();\r\n }\r\n }\r\n\r\n private applyStateV1(state: SerializedHideableObjectsV1, durationS: number) {\r\n const { hiddenObjects } = state;\r\n\r\n let hiddenObjectsIds: string[] = [];\r\n if (hiddenObjects !== undefined && hiddenObjects.length > 0) {\r\n hiddenObjectsIds = [...hiddenObjects];\r\n } else {\r\n this.applyDefaultState();\r\n return;\r\n }\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n const appObjectId = hideable.appObject.id;\r\n\r\n if (hiddenObjectsIds.includes(appObjectId)) {\r\n hideable.isHidden = true;\r\n\r\n const index = hiddenObjectsIds.indexOf(appObjectId);\r\n if (index !== -1) {\r\n hiddenObjectsIds.splice(index, 1);\r\n }\r\n }\r\n });\r\n\r\n hiddenObjectsIds.forEach((remainingObjectId) => {\r\n const appObject = this.appObjects.getOrCreate(remainingObjectId);\r\n const hideable = Hideable.addIfMissing(appObject);\r\n hideable.isHidden = true;\r\n });\r\n }\r\n\r\n applyDefaultState(): void {\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n hideable.isHidden = false;\r\n });\r\n }\r\n\r\n constructor(appObj: AppObject) {\r\n super(appObj, SerializeHideableObjects.type);\r\n\r\n const stateMachine = this.appObjects.getSingleton<StateMachineEntity>(\r\n StateMachineEntity.type\r\n );\r\n if (stateMachine) {\r\n stateMachine.registerSerializedSystem(this);\r\n } else {\r\n this.warn(\"Unable to find StateMachineEntity\");\r\n }\r\n }\r\n}\r\n\r\nexport interface SerializedHideableObjectsV1 {\r\n hiddenObjects: string[];\r\n}\r\n"]}
|
|
@@ -90,5 +90,13 @@ describe("Serialize Dissectable Object", () => {
|
|
|
90
90
|
expect(hideable3).toBeDefined();
|
|
91
91
|
expect(hideable3.isHidden).toEqual(true);
|
|
92
92
|
});
|
|
93
|
+
it("Does not serialize hidden objects that have ignoreSerialization set to true", () => {
|
|
94
|
+
const { appObjects, serializer, obj1, obj2 } = makeTestRig();
|
|
95
|
+
const hideable1 = Entities_1.Hideable.get(obj1.id, appObjects);
|
|
96
|
+
hideable1.isHidden = true;
|
|
97
|
+
hideable1.ignoreSerialization = true;
|
|
98
|
+
const state = serializer.getSystemState();
|
|
99
|
+
expect(state.hiddenObjects).toHaveLength(0);
|
|
100
|
+
});
|
|
93
101
|
});
|
|
94
102
|
//# sourceMappingURL=SerializeHideableObjects.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SerializeHideableObjects.test.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"../Entities\";\r\nimport {\r\n makeSerializeHideableObjects,\r\n SerializedHideableObjectsV1,\r\n} from \"./SerializeHideableObjects\";\r\nimport { MockStateMachine } from \"../../StateMachine\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"ao\");\r\n const stateMachine = new MockStateMachine(ao);\r\n\r\n const obj1 = appObjects.getOrCreate(\"id1\");\r\n const obj2 = appObjects.getOrCreate(\"id2\");\r\n\r\n Hideable.addIfMissing(obj1);\r\n Hideable.addIfMissing(obj2);\r\n\r\n const serializer = makeSerializeHideableObjects(ao);\r\n\r\n return {\r\n appObjects,\r\n serializer,\r\n obj1,\r\n obj2,\r\n stateMachine,\r\n };\r\n}\r\n\r\ndescribe(\"Serialize Dissectable Object\", () => {\r\n it(\"Registers with the Serialized System on construction\", () => {\r\n const { serializer, stateMachine } = makeTestRig();\r\n\r\n expect(stateMachine.registerSerializedSystem).toHaveBeenCalledWith(\r\n serializer\r\n );\r\n });\r\n\r\n it(\"Gets the initial state with no hidden objects\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n\r\n it(\"Gets object state with hidden objects\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(2);\r\n expect(state.hiddenObjects[0]).toEqual(obj1.id);\r\n expect(state.hiddenObjects[1]).toEqual(obj2.id);\r\n });\r\n\r\n it(\"Sets all active objects not hidden when applyDefaultState is called\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n serializer.applyDefaultState(1);\r\n\r\n expect(hideable1?.isHidden).toEqual(false);\r\n expect(hideable2?.isHidden).toEqual(false);\r\n });\r\n\r\n it(\"Calls the default state when an unsupported version is passed in\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, -1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Calls the default state if the state cannot be desrialized\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets hidden objects when applying the state\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = false;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = false;\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id2\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(hideable1?.isHidden).toEqual(true);\r\n expect(hideable2?.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Adds a hideable component to any objects in the hidden objects list that are missing one\", () => {\r\n const { appObjects, serializer } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"id3\");\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id3\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n const hideable3 = Hideable.get(\"id3\", appObjects);\r\n\r\n expect(hideable3).toBeDefined();\r\n expect(hideable3!.isHidden).toEqual(true);\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"SerializeHideableObjects.test.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"../Entities\";\r\nimport {\r\n makeSerializeHideableObjects,\r\n SerializedHideableObjectsV1,\r\n} from \"./SerializeHideableObjects\";\r\nimport { MockStateMachine } from \"../../StateMachine\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"ao\");\r\n const stateMachine = new MockStateMachine(ao);\r\n\r\n const obj1 = appObjects.getOrCreate(\"id1\");\r\n const obj2 = appObjects.getOrCreate(\"id2\");\r\n\r\n Hideable.addIfMissing(obj1);\r\n Hideable.addIfMissing(obj2);\r\n\r\n const serializer = makeSerializeHideableObjects(ao);\r\n\r\n return {\r\n appObjects,\r\n serializer,\r\n obj1,\r\n obj2,\r\n stateMachine,\r\n };\r\n}\r\n\r\ndescribe(\"Serialize Dissectable Object\", () => {\r\n it(\"Registers with the Serialized System on construction\", () => {\r\n const { serializer, stateMachine } = makeTestRig();\r\n\r\n expect(stateMachine.registerSerializedSystem).toHaveBeenCalledWith(\r\n serializer\r\n );\r\n });\r\n\r\n it(\"Gets the initial state with no hidden objects\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n\r\n it(\"Gets object state with hidden objects\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(2);\r\n expect(state.hiddenObjects[0]).toEqual(obj1.id);\r\n expect(state.hiddenObjects[1]).toEqual(obj2.id);\r\n });\r\n\r\n it(\"Sets all active objects not hidden when applyDefaultState is called\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n serializer.applyDefaultState(1);\r\n\r\n expect(hideable1?.isHidden).toEqual(false);\r\n expect(hideable2?.isHidden).toEqual(false);\r\n });\r\n\r\n it(\"Calls the default state when an unsupported version is passed in\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, -1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Calls the default state if the state cannot be desrialized\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets hidden objects when applying the state\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = false;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = false;\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id2\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(hideable1?.isHidden).toEqual(true);\r\n expect(hideable2?.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Adds a hideable component to any objects in the hidden objects list that are missing one\", () => {\r\n const { appObjects, serializer } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"id3\");\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id3\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n const hideable3 = Hideable.get(\"id3\", appObjects);\r\n\r\n expect(hideable3).toBeDefined();\r\n expect(hideable3!.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Does not serialize hidden objects that have ignoreSerialization set to true\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n hideable1!.ignoreSerialization = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n});\r\n"]}
|
|
@@ -28,11 +28,18 @@ function setupLandmarks(appObjects) {
|
|
|
28
28
|
(0, OverlayColor_1.makeOverlayColorPM)(previewAO);
|
|
29
29
|
(0, Selection_1.makeSelectableStatePM)(previewAO);
|
|
30
30
|
(0, Hideable_1.makeIsHiddenPM)(previewAO);
|
|
31
|
+
const previewHidable = Hideable_1.Hideable.get(previewAO.id, appObjects);
|
|
32
|
+
if (previewHidable) {
|
|
33
|
+
previewHidable.ignoreSerialization = true;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
appObjects.submitError("setupLandmarks", "Unable to find Hideable on preview landmark");
|
|
37
|
+
}
|
|
31
38
|
globals.previewLandmark = preview;
|
|
32
39
|
// Setup Tool
|
|
33
40
|
const toolRepo = Tools_1.ToolRepository.get(appObjects);
|
|
34
41
|
if (!toolRepo) {
|
|
35
|
-
appObjects.
|
|
42
|
+
appObjects.submitError("setupLandmarks", "Unable to find tool repo");
|
|
36
43
|
return landmarksAO;
|
|
37
44
|
}
|
|
38
45
|
toolRepo.makeToolFromData({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupLandmarks.js","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"setupLandmarks.js","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":";;AAgBA,wCAqDC;AApED,6CAA0D;AAC1D,qDAAwD;AACxD,+CAAwD;AACxD,uCAA6C;AAC7C,mDAAsD;AACtD,8CAAqE;AACrE,0CAAsE;AACtE,0CAKqB;AACrB,+DAAgE;AAEhE,SAAgB,cAAc,CAAC,UAAyB;IACtD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAA,8BAAmB,EAAC,WAAW,CAAC,CAAC;IAEjD,OAAO,CAAC,mBAAmB,GAAG,IAAA,6CAAuB,EAAC,UAAU,CAAC,CAAC;IAElE,MAAM;IACN,IAAI,6BAAkB,CAAC,WAAW,CAAC,CAAC;IACpC,IAAA,mCAAwB,EAAC,WAAW,CAAC,CAAC;IACtC,IAAA,+BAAoB,EAAC,WAAW,CAAC,CAAC;IAElC,cAAc;IACd,IAAA,8BAAiB,EAAC,WAAW,CAAC,CAAC;IAC/B,IAAA,8BAAiB,EAAC,WAAW,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAA,6BAAkB,EAAC,SAAS,CAAC,CAAC;IAE9C,IAAA,iCAAsB,EAAC,SAAS,CAAC,CAAC;IAElC,IAAA,+BAAiB,EAAC,SAAS,CAAC,CAAC;IAC7B,IAAA,iCAAkB,EAAC,SAAS,CAAC,CAAC;IAC9B,IAAA,iCAAqB,EAAC,SAAS,CAAC,CAAC;IACjC,IAAA,yBAAc,EAAC,SAAS,CAAC,CAAC;IAE1B,MAAM,cAAc,GAAG,mBAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC9D,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,WAAW,CACpB,gBAAgB,EAChB,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;IAElC,aAAa;IACb,MAAM,QAAQ,GAAG,sBAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;QACrE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,gBAAgB,CAAC;QACxB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,UAAU;QACjB,aAAa,EAAE,GAAG;QAClB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { Hideable, makeIsHiddenPM } from \"../../Hideable\";\r\nimport { makeOverlayColorPM } from \"../../OverlayColor\";\r\nimport { makeSelectableStatePM } from \"../../Selection\";\r\nimport { ToolRepository } from \"../../Tools\";\r\nimport { makeTransform3DPM } from \"../../Transform3D\";\r\nimport { makeMouseLandmark, makeTouchLandmark } from \"../Controller\";\r\nimport { makeLandmarkEntity, makeLandmarkGlobals } from \"../Entities\";\r\nimport {\r\n makeDeleteAllLandmarksUC,\r\n makeTryAddLandmarkUC,\r\n makeTryPreviewLandmark,\r\n SerializeLandmarks,\r\n} from \"../UseCases\";\r\nimport { makeLandmarkRepoFactory } from \"./landmarkRepoFactory\";\r\n\r\nexport function setupLandmarks(appObjects: AppObjectRepo): AppObject {\r\n const landmarksAO = appObjects.getOrCreate(\"Landmarks\");\r\n const globals = makeLandmarkGlobals(landmarksAO);\r\n\r\n globals.landmarkRepoFactory = makeLandmarkRepoFactory(appObjects);\r\n\r\n // UCs\r\n new SerializeLandmarks(landmarksAO);\r\n makeDeleteAllLandmarksUC(landmarksAO);\r\n makeTryAddLandmarkUC(landmarksAO);\r\n\r\n // Controllers\r\n makeMouseLandmark(landmarksAO);\r\n makeTouchLandmark(landmarksAO);\r\n\r\n const previewAO = appObjects.getOrCreate(\"LandmarkPreview\");\r\n const preview = makeLandmarkEntity(previewAO);\r\n\r\n makeTryPreviewLandmark(previewAO);\r\n\r\n makeTransform3DPM(previewAO);\r\n makeOverlayColorPM(previewAO);\r\n makeSelectableStatePM(previewAO);\r\n makeIsHiddenPM(previewAO);\r\n\r\n const previewHidable = Hideable.get(previewAO.id, appObjects);\r\n if (previewHidable) {\r\n previewHidable.ignoreSerialization = true;\r\n } else {\r\n appObjects.submitError(\r\n \"setupLandmarks\",\r\n \"Unable to find Hideable on preview landmark\"\r\n );\r\n }\r\n\r\n globals.previewLandmark = preview;\r\n\r\n // Setup Tool\r\n const toolRepo = ToolRepository.get(appObjects);\r\n if (!toolRepo) {\r\n appObjects.submitError(\"setupLandmarks\", \"Unable to find tool repo\");\r\n return landmarksAO;\r\n }\r\n\r\n toolRepo.makeToolFromData({\r\n toolType: \"LANDMARK\",\r\n isDefault: false,\r\n label: \"Landmark\",\r\n shortcutLabel: \"l\",\r\n hotkeys: [{ keyCode: \"KeyL\" }],\r\n });\r\n\r\n return landmarksAO;\r\n}\r\n"]}
|
|
@@ -5,6 +5,7 @@ exports.makeSelectAppObject = makeSelectAppObject;
|
|
|
5
5
|
const core_1 = require("@vived/core");
|
|
6
6
|
const Babylon_1 = require("../../Babylon");
|
|
7
7
|
const BaseApp_1 = require("../../BaseApp");
|
|
8
|
+
const Tools_1 = require("../../Tools");
|
|
8
9
|
const Selectable_1 = require("../Entities/Selectable");
|
|
9
10
|
const Selection_1 = require("../Entities/Selection");
|
|
10
11
|
class SelectAppObjectUC extends core_1.AppObjectUC {
|
|
@@ -24,6 +25,9 @@ class SelectAppObjectUCImp extends SelectAppObjectUC {
|
|
|
24
25
|
get baseApp() {
|
|
25
26
|
return this.getCachedSingleton(BaseApp_1.BaseAppState.type);
|
|
26
27
|
}
|
|
28
|
+
get toolRepo() {
|
|
29
|
+
return this.getCachedSingleton(Tools_1.ToolRepository.type);
|
|
30
|
+
}
|
|
27
31
|
constructor(appObject) {
|
|
28
32
|
super(appObject, SelectAppObjectUC.type);
|
|
29
33
|
this.allowSelect = () => {
|
|
@@ -36,6 +40,12 @@ class SelectAppObjectUCImp extends SelectAppObjectUC {
|
|
|
36
40
|
if (!this.baseApp) {
|
|
37
41
|
return false;
|
|
38
42
|
}
|
|
43
|
+
if (this.toolRepo?.activeTool?.toolType === "CALLOUT") {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
if (this.toolRepo?.activeTool?.toolType === "LANDMARK") {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
39
49
|
return this.baseApp.isAuthoring;
|
|
40
50
|
};
|
|
41
51
|
this.trySelectAppObject = (ray) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectAppObjectUC.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"SelectAppObjectUC.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent,\r\n ParametricLine,\r\n} from \"@vived/core\";\r\nimport { SceneRayPick, sceneRayPick } from \"../../Babylon\";\r\nimport { BaseAppState } from \"../../BaseApp\";\r\nimport { ToolRepository } from \"../../Tools\";\r\nimport { Selectable } from \"../Entities/Selectable\";\r\nimport { Selection } from \"../Entities/Selection\";\r\n\r\nexport abstract class SelectAppObjectUC extends AppObjectUC {\r\n static readonly type = \"SelectAppObjectUC\";\r\n\r\n abstract allowSelect(): boolean;\r\n abstract allowTrySelect(): boolean;\r\n abstract selectAppObject: (id: string, isSelected: boolean) => void;\r\n abstract trySelectAppObject: (ray: ParametricLine) => void;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<SelectAppObjectUC>(\r\n SelectAppObjectUC.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeSelectAppObject(appObject: AppObject): SelectAppObjectUC {\r\n return new SelectAppObjectUCImp(appObject);\r\n}\r\n\r\nclass SelectAppObjectUCImp extends SelectAppObjectUC {\r\n private get selection() {\r\n return this.getCachedSingleton<Selection>(Selection.type);\r\n }\r\n\r\n private get baseApp() {\r\n return this.getCachedSingleton<BaseAppState>(BaseAppState.type);\r\n }\r\n\r\n private get toolRepo() {\r\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\r\n }\r\n\r\n allowSelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n allowTrySelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n if (this.toolRepo?.activeTool?.toolType === \"CALLOUT\") {\r\n return false;\r\n }\r\n\r\n if (this.toolRepo?.activeTool?.toolType === \"LANDMARK\") {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n trySelectAppObject = (ray: ParametricLine) => {\r\n if (!this.selection) return;\r\n if (!this.allowTrySelect()) return;\r\n\r\n const rayPick: SceneRayPick | undefined = sceneRayPick(\r\n ray,\r\n this.appObjects\r\n );\r\n if (!rayPick?.appObjectID) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n const selectable = this.appObjects.getAppObjectComponent<Selectable>(\r\n rayPick.appObjectID,\r\n Selectable.type\r\n );\r\n if (!selectable) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n this.selection.selectedObjectId = rayPick.appObjectID;\r\n };\r\n\r\n selectAppObject = (id: string, isSelected: boolean) => {\r\n if (!this.selection) return;\r\n if (!this.allowSelect()) return;\r\n\r\n if (isSelected) {\r\n this.selection.selectedObjectId = id;\r\n } else if (id === this.selection.selectedObjectId) {\r\n this.selection.selectedObjectId = null;\r\n }\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SelectAppObjectUC.type);\r\n\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const core_1 = require("@vived/core");
|
|
4
4
|
const Babylon_1 = require("../../Babylon");
|
|
5
5
|
const BaseApp_1 = require("../../BaseApp");
|
|
6
|
+
const Tools_1 = require("../../Tools");
|
|
6
7
|
const Selectable_1 = require("../Entities/Selectable");
|
|
7
8
|
const Selection_1 = require("../Entities/Selection");
|
|
8
9
|
const SelectAppObjectUC_1 = require("./SelectAppObjectUC");
|
|
@@ -19,6 +20,11 @@ function makeTestRig() {
|
|
|
19
20
|
mockPickUC.sceneRayPick = mockPick;
|
|
20
21
|
const baseApp = (0, BaseApp_1.makeBaseAppState)(appObjects.getOrCreate("BaseApp"));
|
|
21
22
|
baseApp.isAuthoring = true;
|
|
23
|
+
const toolRepo = (0, Tools_1.makeToolRepo)(appObjects.getOrCreate("ToolRepo"));
|
|
24
|
+
toolRepo.makeTool("CALLOUT");
|
|
25
|
+
toolRepo.makeTool("LANDMARK");
|
|
26
|
+
toolRepo.makeTool("OTHER");
|
|
27
|
+
toolRepo.triggerTool("OTHER");
|
|
22
28
|
const selectSceneObject = (0, SelectAppObjectUC_1.makeSelectAppObject)(baseAppObj);
|
|
23
29
|
return {
|
|
24
30
|
appObjects,
|
|
@@ -28,6 +34,7 @@ function makeTestRig() {
|
|
|
28
34
|
mockPick,
|
|
29
35
|
registerSpy,
|
|
30
36
|
baseApp,
|
|
37
|
+
toolRepo,
|
|
31
38
|
};
|
|
32
39
|
}
|
|
33
40
|
describe("Select Scene Object UC", () => {
|
|
@@ -96,5 +103,29 @@ describe("Select Scene Object UC", () => {
|
|
|
96
103
|
expect(selectSceneObject.allowSelect()).toEqual(false);
|
|
97
104
|
expect(selectSceneObject.allowTrySelect()).toEqual(false);
|
|
98
105
|
});
|
|
106
|
+
it("Does not change the selected object ID the callout tool is enabled", () => {
|
|
107
|
+
const { appObjects, selectSceneObject, selection, mockPick, toolRepo, } = makeTestRig();
|
|
108
|
+
const selectabelAppObj = appObjects.getOrCreate("currentObjID");
|
|
109
|
+
const selectable = (0, Selectable_1.makeSelectable)(selectabelAppObj);
|
|
110
|
+
selection.addSelectable(selectable);
|
|
111
|
+
toolRepo.triggerTool("CALLOUT");
|
|
112
|
+
mockPick.mockReturnValue({ appObjectID: "selectableAppObj" });
|
|
113
|
+
selection.selectedObjectId = "currentObjID";
|
|
114
|
+
expect(selection.selectedObjectId).toEqual("currentObjID");
|
|
115
|
+
selectSceneObject.trySelectAppObject(core_1.ParametricLine.Forward());
|
|
116
|
+
expect(selection.selectedObjectId).toEqual("currentObjID");
|
|
117
|
+
});
|
|
118
|
+
it("Does not change the selected object ID the landmark tool is enabled", () => {
|
|
119
|
+
const { appObjects, selectSceneObject, selection, mockPick, toolRepo, } = makeTestRig();
|
|
120
|
+
const selectabelAppObj = appObjects.getOrCreate("currentObjID");
|
|
121
|
+
const selectable = (0, Selectable_1.makeSelectable)(selectabelAppObj);
|
|
122
|
+
selection.addSelectable(selectable);
|
|
123
|
+
toolRepo.triggerTool("LANDMARK");
|
|
124
|
+
mockPick.mockReturnValue({ appObjectID: "selectableAppObj" });
|
|
125
|
+
selection.selectedObjectId = "currentObjID";
|
|
126
|
+
expect(selection.selectedObjectId).toEqual("currentObjID");
|
|
127
|
+
selectSceneObject.trySelectAppObject(core_1.ParametricLine.Forward());
|
|
128
|
+
expect(selection.selectedObjectId).toEqual("currentObjID");
|
|
129
|
+
});
|
|
99
130
|
});
|
|
100
131
|
//# sourceMappingURL=SelectAppObjectUC.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makeSelectAppObject, SelectAppObjectUC } from \"./SelectAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockPickUC = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn();\r\n mockPickUC.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const selectSceneObject = makeSelectAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n selectSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n };\r\n}\r\n\r\ndescribe(\"Select Scene Object UC\", () => {\r\n it(\"Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-selects if the id is currently selected\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n selectSceneObject.selectAppObject(\"some other id\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected object ID if it pick on it\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't hit anything\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't an app object\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't a selectable object\", () => {\r\n const { selectSceneObject, selection, mockPick, appObjects } =\r\n makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { selectSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(SelectAppObjectUC.get(appObjects)).toEqual(selectSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { selectSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(selectSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { selectSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(true);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(false);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(false);\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"SelectAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeToolRepo } from \"../../Tools\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makeSelectAppObject, SelectAppObjectUC } from \"./SelectAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockPickUC = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn();\r\n mockPickUC.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"ToolRepo\"));\r\n toolRepo.makeTool(\"CALLOUT\");\r\n toolRepo.makeTool(\"LANDMARK\");\r\n toolRepo.makeTool(\"OTHER\");\r\n toolRepo.triggerTool(\"OTHER\");\r\n\r\n const selectSceneObject = makeSelectAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n selectSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n toolRepo,\r\n };\r\n}\r\n\r\ndescribe(\"Select Scene Object UC\", () => {\r\n it(\"Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-selects if the id is currently selected\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n selectSceneObject.selectAppObject(\"some other id\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected object ID if it pick on it\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't hit anything\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't an app object\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't a selectable object\", () => {\r\n const { selectSceneObject, selection, mockPick, appObjects } =\r\n makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { selectSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(SelectAppObjectUC.get(appObjects)).toEqual(selectSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { selectSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(selectSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { selectSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(true);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(false);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(false);\r\n });\r\n\r\n it(\"Does not change the selected object ID the callout tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"CALLOUT\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n\r\n it(\"Does not change the selected object ID the landmark tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"LANDMARK\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n});\r\n"]}
|
|
@@ -40,7 +40,7 @@ class CreateCalloutUCImp extends CreateCalloutUC {
|
|
|
40
40
|
callout.labelTransform.worldPosition = Vector3.Add(labelBump, pickHit);
|
|
41
41
|
callout.labelTransform.worldRotation = Quaternion.FromYawPitchRoll(Angle.FromDegrees(180), Angle.FromDegrees(0), Angle.FromDegrees(0));
|
|
42
42
|
if (this.repoLabel) {
|
|
43
|
-
callout.label.default = this.repoLabel.
|
|
43
|
+
callout.label.default = this.repoLabel.display;
|
|
44
44
|
}
|
|
45
45
|
if (this.calloutGlobals) {
|
|
46
46
|
callout.size = this.calloutGlobals.lastSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateCalloutUC.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n Angle,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n Quaternion,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { LabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { CalloutEntity } from \"../Entities/CalloutEntity\";\r\nimport { CalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { CalloutRepo } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\nexport abstract class CreateCalloutUC extends AppObjectUC {\r\n static readonly type = \"CreateCalloutUC\";\r\n\r\n readonly newLabelBumpAmount = 0.01;\r\n\r\n abstract fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo?: boolean\r\n ): CalloutEntity | undefined;\r\n\r\n static get(appObj: AppObject): CreateCalloutUC | undefined {\r\n return appObj.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n\r\n static getById(\r\n id: string,\r\n appObjects: AppObjectRepo\r\n ): CreateCalloutUC | undefined {\r\n return appObjects.get(id)?.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n}\r\n\r\nexport function makeCreateCalloutUC(appObject: AppObject): CreateCalloutUC {\r\n return new CreateCalloutUCImp(appObject);\r\n}\r\n\r\nclass CreateCalloutUCImp extends CreateCalloutUC {\r\n private get repo() {\r\n return this.getCachedLocalComponent<CalloutRepo>(CalloutRepo.type);\r\n }\r\n\r\n private get calloutGlobals() {\r\n return this.getCachedSingleton<CalloutGlobals>(CalloutGlobals.type);\r\n }\r\n\r\n private get repoLabel() {\r\n return this.getCachedLocalComponent<LabelEntity>(LabelEntity.type);\r\n }\r\n\r\n fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo: boolean = true\r\n ): CalloutEntity {\r\n if (!this.repo) {\r\n throw new Error(\"No Callout Repo\");\r\n }\r\n\r\n const callout = this.repo.makeCallout();\r\n\r\n callout.rootTransform.worldPosition = pickHit;\r\n callout.rootTransform.worldRotation = Quaternion.FromDirectionVector(\r\n pickHitNormal\r\n );\r\n\r\n const labelBump = Vector3.NewVectorOfLength(\r\n pickHitNormal,\r\n this.newLabelBumpAmount\r\n );\r\n callout.labelTransform.worldPosition = Vector3.Add(labelBump, pickHit);\r\n callout.labelTransform.worldRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n if (this.repoLabel) {\r\n callout.label.default = this.repoLabel.
|
|
1
|
+
{"version":3,"file":"CreateCalloutUC.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n Angle,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n Quaternion,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { LabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { CalloutEntity } from \"../Entities/CalloutEntity\";\r\nimport { CalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { CalloutRepo } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\nexport abstract class CreateCalloutUC extends AppObjectUC {\r\n static readonly type = \"CreateCalloutUC\";\r\n\r\n readonly newLabelBumpAmount = 0.01;\r\n\r\n abstract fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo?: boolean\r\n ): CalloutEntity | undefined;\r\n\r\n static get(appObj: AppObject): CreateCalloutUC | undefined {\r\n return appObj.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n\r\n static getById(\r\n id: string,\r\n appObjects: AppObjectRepo\r\n ): CreateCalloutUC | undefined {\r\n return appObjects.get(id)?.getComponent<CreateCalloutUC>(this.type);\r\n }\r\n}\r\n\r\nexport function makeCreateCalloutUC(appObject: AppObject): CreateCalloutUC {\r\n return new CreateCalloutUCImp(appObject);\r\n}\r\n\r\nclass CreateCalloutUCImp extends CreateCalloutUC {\r\n private get repo() {\r\n return this.getCachedLocalComponent<CalloutRepo>(CalloutRepo.type);\r\n }\r\n\r\n private get calloutGlobals() {\r\n return this.getCachedSingleton<CalloutGlobals>(CalloutGlobals.type);\r\n }\r\n\r\n private get repoLabel() {\r\n return this.getCachedLocalComponent<LabelEntity>(LabelEntity.type);\r\n }\r\n\r\n fromPick(\r\n pickHit: Vector3,\r\n pickHitNormal: Vector3,\r\n undoRedo: boolean = true\r\n ): CalloutEntity {\r\n if (!this.repo) {\r\n throw new Error(\"No Callout Repo\");\r\n }\r\n\r\n const callout = this.repo.makeCallout();\r\n\r\n callout.rootTransform.worldPosition = pickHit;\r\n callout.rootTransform.worldRotation = Quaternion.FromDirectionVector(\r\n pickHitNormal\r\n );\r\n\r\n const labelBump = Vector3.NewVectorOfLength(\r\n pickHitNormal,\r\n this.newLabelBumpAmount\r\n );\r\n callout.labelTransform.worldPosition = Vector3.Add(labelBump, pickHit);\r\n callout.labelTransform.worldRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n if (this.repoLabel) {\r\n callout.label.default = this.repoLabel.display;\r\n }\r\n\r\n if (this.calloutGlobals) {\r\n callout.size = this.calloutGlobals.lastSize;\r\n callout.overlayColor.overlayColor = this.calloutGlobals.lastColor;\r\n }\r\n\r\n if (undoRedo) {\r\n new CreateCalloutUndoRedo(callout.data, this.appObjects);\r\n }\r\n\r\n return callout;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, CreateCalloutUC.type);\r\n }\r\n}\r\n"]}
|
|
@@ -58,10 +58,11 @@ describe("Create Callout UC", () => {
|
|
|
58
58
|
const expectRot = Quaternion.FromYawPitchRoll(Angle.FromDegrees(180), Angle.FromDegrees(0), Angle.FromDegrees(0));
|
|
59
59
|
expect(Quaternion.Close(newCallout.labelTransform.worldRotation, expectRot)).toEqual(true);
|
|
60
60
|
});
|
|
61
|
-
it("Sets the default label the the repo's
|
|
61
|
+
it("Sets the default label the the repo's current label", () => {
|
|
62
62
|
const { uc, label } = makeTestRig();
|
|
63
|
+
label.custom = "a custom label";
|
|
63
64
|
const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));
|
|
64
|
-
expect(newCallout.label.default).toEqual(label.
|
|
65
|
+
expect(newCallout.label.default).toEqual(label.custom);
|
|
65
66
|
});
|
|
66
67
|
it("Sets the callout to the global size", () => {
|
|
67
68
|
const { uc, calloutGlobals } = makeTestRig();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateCalloutUC.test.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CreateCalloutUC.test.js","sourceRoot":"","sources":["../../../../src/Callouts/UC/CreateCalloutUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Angle, makeAppObjectRepo, Quaternion, Vector3 } from \"@vived/core\";\r\nimport { makeLabelEntity } from \"../../Label/Entities/LabelEntity\";\r\nimport { OverlayColorEnums } from \"../../OverlayColor/Entities/OverlayColor\";\r\nimport { makeCalloutGlobals } from \"../Entities/CalloutGlobals\";\r\nimport { makeCalloutRepoEntity } from \"../Entities/CalloutRepo\";\r\nimport { CreateCalloutUC, makeCreateCalloutUC } from \"./CreateCalloutUC\";\r\nimport { CreateCalloutUndoRedo } from \"./CreateCalloutUndoRedo\";\r\n\r\njest.mock(\"./CreateCalloutUndoRedo\");\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n\r\n const calloutGlobals = makeCalloutGlobals(\r\n appObjects.getOrCreate(\"CalloutGlobals\")\r\n );\r\n const repoObj = appObjects.getOrCreate(\"repoObj\");\r\n const repo = makeCalloutRepoEntity(repoObj);\r\n const label = makeLabelEntity(repoObj);\r\n\r\n label.default = \"a sick default label\";\r\n\r\n const uc = makeCreateCalloutUC(repoObj);\r\n\r\n return {\r\n appObjects,\r\n repoObj,\r\n repo,\r\n uc,\r\n label,\r\n calloutGlobals,\r\n };\r\n}\r\n\r\ndescribe(\"Create Callout UC\", () => {\r\n it(\"Gets the UC off an app object\", () => {\r\n const { repoObj, uc } = makeTestRig();\r\n expect(CreateCalloutUC.get(repoObj)).toEqual(uc);\r\n });\r\n\r\n it(\"Gets the UC by ID\", () => {\r\n const { appObjects, uc } = makeTestRig();\r\n expect(CreateCalloutUC.getById(\"repoObj\", appObjects)).toEqual(uc);\r\n });\r\n\r\n it(\"Sets the root position to the world pick point\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(new Vector3(1, 2, 3), Vector3.One());\r\n\r\n expect(newCallout?.rootTransform.worldPosition).toEqual(\r\n new Vector3(1, 2, 3)\r\n );\r\n });\r\n\r\n it(\"Sets the root world rotation to the pick normal\", () => {\r\n const { uc } = makeTestRig();\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n const expectRot = Quaternion.FromDirectionVector(new Vector3(1, 2, 3));\r\n\r\n expect(\r\n Quaternion.Close(newCallout!.rootTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the label position as the pick plus a little bump along the normal\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const pickPoint = new Vector3(1, 2, 3);\r\n const pickNormal = new Vector3(4, 5, 6);\r\n const newCallout = uc.fromPick(pickPoint, pickNormal)!;\r\n\r\n const bumpVector = Vector3.NewVectorOfLength(\r\n pickNormal,\r\n uc.newLabelBumpAmount\r\n );\r\n const expectedPos = Vector3.Add(bumpVector, pickPoint);\r\n\r\n expect(newCallout.labelTransform.worldPosition).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Sets the label rotation looking backwards\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n const expectRot = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(180),\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(0)\r\n );\r\n\r\n expect(\r\n Quaternion.Close(newCallout.labelTransform.worldRotation, expectRot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the default label the the repo's current label\", () => {\r\n const { uc, label } = makeTestRig();\r\n\r\n label.custom = \"a custom label\";\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.label.default).toEqual(label.custom);\r\n });\r\n\r\n it(\"Sets the callout to the global size\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastSize = 1.23;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.size).toEqual(1.23);\r\n });\r\n\r\n it(\"Sets the callout to the global color\", () => {\r\n const { uc, calloutGlobals } = makeTestRig();\r\n\r\n calloutGlobals.lastColor = OverlayColorEnums.PINK;\r\n const newCallout = uc.fromPick(Vector3.One(), new Vector3(1, 2, 3))!;\r\n\r\n expect(newCallout.overlayColor.overlayColor).toEqual(\r\n OverlayColorEnums.PINK\r\n );\r\n });\r\n\r\n it(\"Creates an undo\", () => {\r\n const { uc } = makeTestRig();\r\n\r\n uc.fromPick(Vector3.One(), new Vector3(1, 2, 3));\r\n\r\n expect(CreateCalloutUndoRedo).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hideable.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEf,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,QAAS,SAAQ,eAAe;IAG3C,MAAM,CAAC,YAAY,CAAC,MAAiB;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAW,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC,YAAY,CAAW,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;
|
|
1
|
+
{"version":3,"file":"Hideable.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEf,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,QAAS,SAAQ,eAAe;IAG3C,MAAM,CAAC,YAAY,CAAC,MAAiB;QACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAW,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CACR,QAAgB,EAChB,UAAyB;QAEzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC,YAAY,CAAW,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAKD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAc,CAAC;IAC9C,CAAC;IACD,IAAI,QAAQ,CAAC,GAAY;QACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,GAAG,CAAC;IAClC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAX3B,wBAAmB,GAAG,KAAK,CAAC;QAE3B,qBAAgB,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAU3E,CAAC;;AAlCe,aAAI,GAAG,UAAU,AAAb,CAAc","sourcesContent":["import {\r\n AppObject,\r\n AppObjectEntity,\r\n AppObjectRepo,\r\n MemoizedBoolean,\r\n} from \"@vived/core\";\r\n\r\nexport class Hideable extends AppObjectEntity {\r\n static readonly type = \"HIDEABLE\";\r\n\r\n static addIfMissing(appObj: AppObject): Hideable {\r\n const existing = appObj.getComponent<Hideable>(this.type);\r\n if (existing) {\r\n return existing;\r\n } else {\r\n return new Hideable(appObj);\r\n }\r\n }\r\n\r\n static get(\r\n appObjID: string,\r\n appObjects: AppObjectRepo\r\n ): Hideable | undefined {\r\n const appObj = appObjects.get(appObjID);\r\n if (appObj === undefined) {\r\n return undefined;\r\n }\r\n return appObj.getComponent<Hideable>(Hideable.type);\r\n }\r\n\r\n public ignoreSerialization = false;\r\n\r\n private memoizedIsHidden = new MemoizedBoolean(false, this.notifyOnChange);\r\n get isHidden(): boolean {\r\n return this.memoizedIsHidden.val as boolean;\r\n }\r\n set isHidden(val: boolean) {\r\n this.memoizedIsHidden.val = val;\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, Hideable.type);\r\n }\r\n}\r\n"]}
|
|
@@ -43,5 +43,11 @@ describe("Hideable Entity", () => {
|
|
|
43
43
|
Hideable.addIfMissing(newAO);
|
|
44
44
|
expect(newAO.hasComponent(Hideable.type)).toEqual(true);
|
|
45
45
|
});
|
|
46
|
+
it("Has a property called ignoreSerialization that can be set", () => {
|
|
47
|
+
const { hideable } = makeTestRig();
|
|
48
|
+
expect(hideable.ignoreSerialization).toEqual(false);
|
|
49
|
+
hideable.ignoreSerialization = true;
|
|
50
|
+
expect(hideable.ignoreSerialization).toEqual(true);
|
|
51
|
+
});
|
|
46
52
|
});
|
|
47
53
|
//# sourceMappingURL=Hideable.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hideable.test.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObject, makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"./Hideable\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appID\", appObjects);\r\n const hideable = new Hideable(appObj);\r\n const observer = jest.fn();\r\n hideable.addChangeObserver(observer);\r\n\r\n return { hideable, observer, appObj, appObjects };\r\n}\r\n\r\ndescribe(\"Hideable Entity\", () => {\r\n it(\"Adds itself to the App Object\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(true);\r\n expect(appObj.getComponent(Hideable.type)).toEqual(hideable);\r\n });\r\n\r\n it(\"Removes itself from the App Object when disposed\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n hideable.dispose();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(false);\r\n });\r\n\r\n it(\"Notifies when the is hidden changes\", () => {\r\n const { hideable, observer } = makeTestRig();\r\n\r\n expect(hideable.isHidden).toEqual(false);\r\n\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n\r\n expect(observer).toHaveBeenCalledTimes(1);\r\n expect(hideable.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Gets the entity from an AO\", () => {\r\n const { hideable, appObjects } = makeTestRig();\r\n\r\n expect(Hideable.get(\"appID\", appObjects)).toEqual(hideable);\r\n });\r\n\r\n it(\"Returns the existing when calling add if missing \", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(Hideable.addIfMissing(appObj)).toEqual(hideable);\r\n });\r\n\r\n it(\"Creates a new one if addIfMissing is called\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n const newAO = appObjects.getOrCreate(\"anotherAO\");\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(false);\r\n\r\n Hideable.addIfMissing(newAO);\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(true);\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"Hideable.test.js","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObject, makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"./Hideable\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appID\", appObjects);\r\n const hideable = new Hideable(appObj);\r\n const observer = jest.fn();\r\n hideable.addChangeObserver(observer);\r\n\r\n return { hideable, observer, appObj, appObjects };\r\n}\r\n\r\ndescribe(\"Hideable Entity\", () => {\r\n it(\"Adds itself to the App Object\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(true);\r\n expect(appObj.getComponent(Hideable.type)).toEqual(hideable);\r\n });\r\n\r\n it(\"Removes itself from the App Object when disposed\", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n hideable.dispose();\r\n\r\n expect(appObj.hasComponent(Hideable.type)).toEqual(false);\r\n });\r\n\r\n it(\"Notifies when the is hidden changes\", () => {\r\n const { hideable, observer } = makeTestRig();\r\n\r\n expect(hideable.isHidden).toEqual(false);\r\n\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n hideable.isHidden = true;\r\n\r\n expect(observer).toHaveBeenCalledTimes(1);\r\n expect(hideable.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Gets the entity from an AO\", () => {\r\n const { hideable, appObjects } = makeTestRig();\r\n\r\n expect(Hideable.get(\"appID\", appObjects)).toEqual(hideable);\r\n });\r\n\r\n it(\"Returns the existing when calling add if missing \", () => {\r\n const { hideable, appObj } = makeTestRig();\r\n\r\n expect(Hideable.addIfMissing(appObj)).toEqual(hideable);\r\n });\r\n\r\n it(\"Creates a new one if addIfMissing is called\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n const newAO = appObjects.getOrCreate(\"anotherAO\");\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(false);\r\n\r\n Hideable.addIfMissing(newAO);\r\n\r\n expect(newAO.hasComponent(Hideable.type)).toEqual(true);\r\n });\r\n\r\n it(\"Has a property called ignoreSerialization that can be set\", () => {\r\n const { hideable } = makeTestRig();\r\n expect(hideable.ignoreSerialization).toEqual(false);\r\n hideable.ignoreSerialization = true;\r\n expect(hideable.ignoreSerialization).toEqual(true);\r\n });\r\n});\r\n"]}
|
|
@@ -16,7 +16,7 @@ export class SerializeHideableObjectsImp extends SerializeHideableObjects {
|
|
|
16
16
|
const hiddenObjects = [];
|
|
17
17
|
const allHideables = this.appObjects.getAllComponents(Hideable.type);
|
|
18
18
|
allHideables.forEach((hideable) => {
|
|
19
|
-
if (hideable.isHidden)
|
|
19
|
+
if (hideable.isHidden && !hideable.ignoreSerialization)
|
|
20
20
|
hiddenObjects.push(hideable.appObject.id);
|
|
21
21
|
});
|
|
22
22
|
const state = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SerializeHideableObjects.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAEL,kBAAkB,GACnB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AAErD,MAAM,OAAgB,wBACpB,SAAQ,WAAW;IADrB;;QAIE,SAAI,GAAW,kBAAkB,CAAC;IASpC,CAAC;;AAViB,6BAAI,GAAG,0BAA0B,AAA7B,CAA8B;AAYpD,MAAM,UAAU,4BAA4B,CAC1C,SAAoB;IAEpB,OAAO,IAAI,2BAA2B,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,OAAO,2BAA4B,SAAQ,wBAAwB;IASvE,cAAc;QACZ,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CACnD,QAAQ,CAAC,IAAI,CACd,CAAC;QAEF,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,IAAI,QAAQ,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"SerializeHideableObjects.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":"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","sourcesContent":["import { Hideable } from \"../Entities/Hideable\";\r\nimport {\r\n SerializedSystem,\r\n StateMachineEntity,\r\n} from \"../../StateMachine/Entities/StateMachineEntity\";\r\nimport { AppObjectUC, AppObject } from \"@vived/core\";\r\n\r\nexport abstract class SerializeHideableObjects\r\n extends AppObjectUC\r\n implements SerializedSystem {\r\n static readonly type = \"SerializeHideableObjects\";\r\n name: string = \"hideable-objects\";\r\n abstract seriliziationVersion: number;\r\n abstract getSystemState(): object;\r\n abstract applySystemState(\r\n state: object,\r\n version: number,\r\n transitionDuration: number\r\n ): void;\r\n abstract applyDefaultState(transitionDuration: number): void;\r\n}\r\n\r\nexport function makeSerializeHideableObjects(\r\n appObject: AppObject\r\n): SerializeHideableObjects {\r\n return new SerializeHideableObjectsImp(appObject);\r\n}\r\n\r\nexport class SerializeHideableObjectsImp extends SerializeHideableObjects {\r\n seriliziationVersion = 1;\r\n\r\n selectChannelModelUC: () => void = () => {\r\n console.warn(\r\n \"[SerializeHideableObjects] Select Channel Model UC was not setup\"\r\n );\r\n };\r\n\r\n getSystemState(): object {\r\n const hiddenObjects: string[] = [];\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n if (hideable.isHidden && !hideable.ignoreSerialization)\r\n hiddenObjects.push(hideable.appObject.id);\r\n });\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects,\r\n };\r\n\r\n return state;\r\n }\r\n\r\n applySystemState(\r\n state: object,\r\n version: number,\r\n durationS: number\r\n ): Promise<void> | void {\r\n if (version === 1) {\r\n return this.applyStateV1(state as SerializedHideableObjectsV1, durationS);\r\n } else {\r\n this.applyDefaultState();\r\n }\r\n }\r\n\r\n private applyStateV1(state: SerializedHideableObjectsV1, durationS: number) {\r\n const { hiddenObjects } = state;\r\n\r\n let hiddenObjectsIds: string[] = [];\r\n if (hiddenObjects !== undefined && hiddenObjects.length > 0) {\r\n hiddenObjectsIds = [...hiddenObjects];\r\n } else {\r\n this.applyDefaultState();\r\n return;\r\n }\r\n\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n const appObjectId = hideable.appObject.id;\r\n\r\n if (hiddenObjectsIds.includes(appObjectId)) {\r\n hideable.isHidden = true;\r\n\r\n const index = hiddenObjectsIds.indexOf(appObjectId);\r\n if (index !== -1) {\r\n hiddenObjectsIds.splice(index, 1);\r\n }\r\n }\r\n });\r\n\r\n hiddenObjectsIds.forEach((remainingObjectId) => {\r\n const appObject = this.appObjects.getOrCreate(remainingObjectId);\r\n const hideable = Hideable.addIfMissing(appObject);\r\n hideable.isHidden = true;\r\n });\r\n }\r\n\r\n applyDefaultState(): void {\r\n const allHideables = this.appObjects.getAllComponents<Hideable>(\r\n Hideable.type\r\n );\r\n\r\n allHideables.forEach((hideable) => {\r\n hideable.isHidden = false;\r\n });\r\n }\r\n\r\n constructor(appObj: AppObject) {\r\n super(appObj, SerializeHideableObjects.type);\r\n\r\n const stateMachine = this.appObjects.getSingleton<StateMachineEntity>(\r\n StateMachineEntity.type\r\n );\r\n if (stateMachine) {\r\n stateMachine.registerSerializedSystem(this);\r\n } else {\r\n this.warn(\"Unable to find StateMachineEntity\");\r\n }\r\n }\r\n}\r\n\r\nexport interface SerializedHideableObjectsV1 {\r\n hiddenObjects: string[];\r\n}\r\n"]}
|
|
@@ -88,5 +88,13 @@ describe("Serialize Dissectable Object", () => {
|
|
|
88
88
|
expect(hideable3).toBeDefined();
|
|
89
89
|
expect(hideable3.isHidden).toEqual(true);
|
|
90
90
|
});
|
|
91
|
+
it("Does not serialize hidden objects that have ignoreSerialization set to true", () => {
|
|
92
|
+
const { appObjects, serializer, obj1, obj2 } = makeTestRig();
|
|
93
|
+
const hideable1 = Hideable.get(obj1.id, appObjects);
|
|
94
|
+
hideable1.isHidden = true;
|
|
95
|
+
hideable1.ignoreSerialization = true;
|
|
96
|
+
const state = serializer.getSystemState();
|
|
97
|
+
expect(state.hiddenObjects).toHaveLength(0);
|
|
98
|
+
});
|
|
91
99
|
});
|
|
92
100
|
//# sourceMappingURL=SerializeHideableObjects.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SerializeHideableObjects.test.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"../Entities\";\r\nimport {\r\n makeSerializeHideableObjects,\r\n SerializedHideableObjectsV1,\r\n} from \"./SerializeHideableObjects\";\r\nimport { MockStateMachine } from \"../../StateMachine\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"ao\");\r\n const stateMachine = new MockStateMachine(ao);\r\n\r\n const obj1 = appObjects.getOrCreate(\"id1\");\r\n const obj2 = appObjects.getOrCreate(\"id2\");\r\n\r\n Hideable.addIfMissing(obj1);\r\n Hideable.addIfMissing(obj2);\r\n\r\n const serializer = makeSerializeHideableObjects(ao);\r\n\r\n return {\r\n appObjects,\r\n serializer,\r\n obj1,\r\n obj2,\r\n stateMachine,\r\n };\r\n}\r\n\r\ndescribe(\"Serialize Dissectable Object\", () => {\r\n it(\"Registers with the Serialized System on construction\", () => {\r\n const { serializer, stateMachine } = makeTestRig();\r\n\r\n expect(stateMachine.registerSerializedSystem).toHaveBeenCalledWith(\r\n serializer\r\n );\r\n });\r\n\r\n it(\"Gets the initial state with no hidden objects\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n\r\n it(\"Gets object state with hidden objects\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(2);\r\n expect(state.hiddenObjects[0]).toEqual(obj1.id);\r\n expect(state.hiddenObjects[1]).toEqual(obj2.id);\r\n });\r\n\r\n it(\"Sets all active objects not hidden when applyDefaultState is called\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n serializer.applyDefaultState(1);\r\n\r\n expect(hideable1?.isHidden).toEqual(false);\r\n expect(hideable2?.isHidden).toEqual(false);\r\n });\r\n\r\n it(\"Calls the default state when an unsupported version is passed in\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, -1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Calls the default state if the state cannot be desrialized\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets hidden objects when applying the state\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = false;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = false;\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id2\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(hideable1?.isHidden).toEqual(true);\r\n expect(hideable2?.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Adds a hideable component to any objects in the hidden objects list that are missing one\", () => {\r\n const { appObjects, serializer } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"id3\");\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id3\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n const hideable3 = Hideable.get(\"id3\", appObjects);\r\n\r\n expect(hideable3).toBeDefined();\r\n expect(hideable3!.isHidden).toEqual(true);\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"SerializeHideableObjects.test.js","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Hideable } from \"../Entities\";\r\nimport {\r\n makeSerializeHideableObjects,\r\n SerializedHideableObjectsV1,\r\n} from \"./SerializeHideableObjects\";\r\nimport { MockStateMachine } from \"../../StateMachine\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"ao\");\r\n const stateMachine = new MockStateMachine(ao);\r\n\r\n const obj1 = appObjects.getOrCreate(\"id1\");\r\n const obj2 = appObjects.getOrCreate(\"id2\");\r\n\r\n Hideable.addIfMissing(obj1);\r\n Hideable.addIfMissing(obj2);\r\n\r\n const serializer = makeSerializeHideableObjects(ao);\r\n\r\n return {\r\n appObjects,\r\n serializer,\r\n obj1,\r\n obj2,\r\n stateMachine,\r\n };\r\n}\r\n\r\ndescribe(\"Serialize Dissectable Object\", () => {\r\n it(\"Registers with the Serialized System on construction\", () => {\r\n const { serializer, stateMachine } = makeTestRig();\r\n\r\n expect(stateMachine.registerSerializedSystem).toHaveBeenCalledWith(\r\n serializer\r\n );\r\n });\r\n\r\n it(\"Gets the initial state with no hidden objects\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n\r\n it(\"Gets object state with hidden objects\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(2);\r\n expect(state.hiddenObjects[0]).toEqual(obj1.id);\r\n expect(state.hiddenObjects[1]).toEqual(obj2.id);\r\n });\r\n\r\n it(\"Sets all active objects not hidden when applyDefaultState is called\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = true;\r\n\r\n serializer.applyDefaultState(1);\r\n\r\n expect(hideable1?.isHidden).toEqual(false);\r\n expect(hideable2?.isHidden).toEqual(false);\r\n });\r\n\r\n it(\"Calls the default state when an unsupported version is passed in\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, -1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Calls the default state if the state cannot be desrialized\", () => {\r\n const { serializer } = makeTestRig();\r\n\r\n serializer.applyDefaultState = jest.fn();\r\n\r\n const state = { foo: \"bar\" };\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(serializer.applyDefaultState).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets hidden objects when applying the state\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = false;\r\n const hideable2 = Hideable.get(obj2.id, appObjects);\r\n hideable2!.isHidden = false;\r\n\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id2\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n expect(hideable1?.isHidden).toEqual(true);\r\n expect(hideable2?.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Adds a hideable component to any objects in the hidden objects list that are missing one\", () => {\r\n const { appObjects, serializer } = makeTestRig();\r\n\r\n appObjects.getOrCreate(\"id3\");\r\n const state: SerializedHideableObjectsV1 = {\r\n hiddenObjects: [\"id1\", \"id3\"],\r\n };\r\n\r\n serializer.applySystemState(state, 1, 2);\r\n\r\n const hideable3 = Hideable.get(\"id3\", appObjects);\r\n\r\n expect(hideable3).toBeDefined();\r\n expect(hideable3!.isHidden).toEqual(true);\r\n });\r\n\r\n it(\"Does not serialize hidden objects that have ignoreSerialization set to true\", () => {\r\n const { appObjects, serializer, obj1, obj2 } = makeTestRig();\r\n\r\n const hideable1 = Hideable.get(obj1.id, appObjects);\r\n hideable1!.isHidden = true;\r\n hideable1!.ignoreSerialization = true;\r\n\r\n const state = serializer.getSystemState() as SerializedHideableObjectsV1;\r\n\r\n expect(state.hiddenObjects).toHaveLength(0);\r\n });\r\n});\r\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { makeIsHiddenPM } from "../../Hideable";
|
|
1
|
+
import { Hideable, makeIsHiddenPM } from "../../Hideable";
|
|
2
2
|
import { makeOverlayColorPM } from "../../OverlayColor";
|
|
3
3
|
import { makeSelectableStatePM } from "../../Selection";
|
|
4
4
|
import { ToolRepository } from "../../Tools";
|
|
@@ -25,11 +25,18 @@ export function setupLandmarks(appObjects) {
|
|
|
25
25
|
makeOverlayColorPM(previewAO);
|
|
26
26
|
makeSelectableStatePM(previewAO);
|
|
27
27
|
makeIsHiddenPM(previewAO);
|
|
28
|
+
const previewHidable = Hideable.get(previewAO.id, appObjects);
|
|
29
|
+
if (previewHidable) {
|
|
30
|
+
previewHidable.ignoreSerialization = true;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
appObjects.submitError("setupLandmarks", "Unable to find Hideable on preview landmark");
|
|
34
|
+
}
|
|
28
35
|
globals.previewLandmark = preview;
|
|
29
36
|
// Setup Tool
|
|
30
37
|
const toolRepo = ToolRepository.get(appObjects);
|
|
31
38
|
if (!toolRepo) {
|
|
32
|
-
appObjects.
|
|
39
|
+
appObjects.submitError("setupLandmarks", "Unable to find tool repo");
|
|
33
40
|
return landmarksAO;
|
|
34
41
|
}
|
|
35
42
|
toolRepo.makeToolFromData({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupLandmarks.js","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"setupLandmarks.js","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,cAAc,CAAC,UAAyB;IACtD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEjD,OAAO,CAAC,mBAAmB,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAElE,MAAM;IACN,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACpC,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACtC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAElC,cAAc;IACd,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC/B,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE9C,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAElC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7B,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC9B,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACjC,cAAc,CAAC,SAAS,CAAC,CAAC;IAE1B,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC9D,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,WAAW,CACpB,gBAAgB,EAChB,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC;IAElC,aAAa;IACb,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,0BAA0B,CAAC,CAAC;QACrE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,gBAAgB,CAAC;QACxB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,UAAU;QACjB,aAAa,EAAE,GAAG;QAClB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { Hideable, makeIsHiddenPM } from \"../../Hideable\";\r\nimport { makeOverlayColorPM } from \"../../OverlayColor\";\r\nimport { makeSelectableStatePM } from \"../../Selection\";\r\nimport { ToolRepository } from \"../../Tools\";\r\nimport { makeTransform3DPM } from \"../../Transform3D\";\r\nimport { makeMouseLandmark, makeTouchLandmark } from \"../Controller\";\r\nimport { makeLandmarkEntity, makeLandmarkGlobals } from \"../Entities\";\r\nimport {\r\n makeDeleteAllLandmarksUC,\r\n makeTryAddLandmarkUC,\r\n makeTryPreviewLandmark,\r\n SerializeLandmarks,\r\n} from \"../UseCases\";\r\nimport { makeLandmarkRepoFactory } from \"./landmarkRepoFactory\";\r\n\r\nexport function setupLandmarks(appObjects: AppObjectRepo): AppObject {\r\n const landmarksAO = appObjects.getOrCreate(\"Landmarks\");\r\n const globals = makeLandmarkGlobals(landmarksAO);\r\n\r\n globals.landmarkRepoFactory = makeLandmarkRepoFactory(appObjects);\r\n\r\n // UCs\r\n new SerializeLandmarks(landmarksAO);\r\n makeDeleteAllLandmarksUC(landmarksAO);\r\n makeTryAddLandmarkUC(landmarksAO);\r\n\r\n // Controllers\r\n makeMouseLandmark(landmarksAO);\r\n makeTouchLandmark(landmarksAO);\r\n\r\n const previewAO = appObjects.getOrCreate(\"LandmarkPreview\");\r\n const preview = makeLandmarkEntity(previewAO);\r\n\r\n makeTryPreviewLandmark(previewAO);\r\n\r\n makeTransform3DPM(previewAO);\r\n makeOverlayColorPM(previewAO);\r\n makeSelectableStatePM(previewAO);\r\n makeIsHiddenPM(previewAO);\r\n\r\n const previewHidable = Hideable.get(previewAO.id, appObjects);\r\n if (previewHidable) {\r\n previewHidable.ignoreSerialization = true;\r\n } else {\r\n appObjects.submitError(\r\n \"setupLandmarks\",\r\n \"Unable to find Hideable on preview landmark\"\r\n );\r\n }\r\n\r\n globals.previewLandmark = preview;\r\n\r\n // Setup Tool\r\n const toolRepo = ToolRepository.get(appObjects);\r\n if (!toolRepo) {\r\n appObjects.submitError(\"setupLandmarks\", \"Unable to find tool repo\");\r\n return landmarksAO;\r\n }\r\n\r\n toolRepo.makeToolFromData({\r\n toolType: \"LANDMARK\",\r\n isDefault: false,\r\n label: \"Landmark\",\r\n shortcutLabel: \"l\",\r\n hotkeys: [{ keyCode: \"KeyL\" }],\r\n });\r\n\r\n return landmarksAO;\r\n}\r\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AppObjectUC, getSingletonComponent, } from "@vived/core";
|
|
2
2
|
import { sceneRayPick } from "../../Babylon";
|
|
3
3
|
import { BaseAppState } from "../../BaseApp";
|
|
4
|
+
import { ToolRepository } from "../../Tools";
|
|
4
5
|
import { Selectable } from "../Entities/Selectable";
|
|
5
6
|
import { Selection } from "../Entities/Selection";
|
|
6
7
|
export class SelectAppObjectUC extends AppObjectUC {
|
|
@@ -19,6 +20,9 @@ class SelectAppObjectUCImp extends SelectAppObjectUC {
|
|
|
19
20
|
get baseApp() {
|
|
20
21
|
return this.getCachedSingleton(BaseAppState.type);
|
|
21
22
|
}
|
|
23
|
+
get toolRepo() {
|
|
24
|
+
return this.getCachedSingleton(ToolRepository.type);
|
|
25
|
+
}
|
|
22
26
|
constructor(appObject) {
|
|
23
27
|
super(appObject, SelectAppObjectUC.type);
|
|
24
28
|
this.allowSelect = () => {
|
|
@@ -31,6 +35,12 @@ class SelectAppObjectUCImp extends SelectAppObjectUC {
|
|
|
31
35
|
if (!this.baseApp) {
|
|
32
36
|
return false;
|
|
33
37
|
}
|
|
38
|
+
if (this.toolRepo?.activeTool?.toolType === "CALLOUT") {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (this.toolRepo?.activeTool?.toolType === "LANDMARK") {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
34
44
|
return this.baseApp.isAuthoring;
|
|
35
45
|
};
|
|
36
46
|
this.trySelectAppObject = (ray) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectAppObjectUC.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,qBAAqB,GAEtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgB,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,OAAgB,iBAAkB,SAAQ,WAAW;IAQzD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,iBAAiB,CAAC,IAAI,EACtB,UAAU,CACX,CAAC;IACJ,CAAC;;AAZe,sBAAI,GAAG,mBAAmB,CAAC;AAe7C,MAAM,UAAU,mBAAmB,CAAC,SAAoB;IACtD,OAAO,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,oBAAqB,SAAQ,iBAAiB;IAClD,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAe,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;
|
|
1
|
+
{"version":3,"file":"SelectAppObjectUC.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC,\r\n getSingletonComponent,\r\n ParametricLine,\r\n} from \"@vived/core\";\r\nimport { SceneRayPick, sceneRayPick } from \"../../Babylon\";\r\nimport { BaseAppState } from \"../../BaseApp\";\r\nimport { ToolRepository } from \"../../Tools\";\r\nimport { Selectable } from \"../Entities/Selectable\";\r\nimport { Selection } from \"../Entities/Selection\";\r\n\r\nexport abstract class SelectAppObjectUC extends AppObjectUC {\r\n static readonly type = \"SelectAppObjectUC\";\r\n\r\n abstract allowSelect(): boolean;\r\n abstract allowTrySelect(): boolean;\r\n abstract selectAppObject: (id: string, isSelected: boolean) => void;\r\n abstract trySelectAppObject: (ray: ParametricLine) => void;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<SelectAppObjectUC>(\r\n SelectAppObjectUC.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeSelectAppObject(appObject: AppObject): SelectAppObjectUC {\r\n return new SelectAppObjectUCImp(appObject);\r\n}\r\n\r\nclass SelectAppObjectUCImp extends SelectAppObjectUC {\r\n private get selection() {\r\n return this.getCachedSingleton<Selection>(Selection.type);\r\n }\r\n\r\n private get baseApp() {\r\n return this.getCachedSingleton<BaseAppState>(BaseAppState.type);\r\n }\r\n\r\n private get toolRepo() {\r\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\r\n }\r\n\r\n allowSelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n allowTrySelect = (): boolean => {\r\n if (!this.baseApp) {\r\n return false;\r\n }\r\n\r\n if (this.toolRepo?.activeTool?.toolType === \"CALLOUT\") {\r\n return false;\r\n }\r\n\r\n if (this.toolRepo?.activeTool?.toolType === \"LANDMARK\") {\r\n return false;\r\n }\r\n\r\n return this.baseApp.isAuthoring;\r\n };\r\n\r\n trySelectAppObject = (ray: ParametricLine) => {\r\n if (!this.selection) return;\r\n if (!this.allowTrySelect()) return;\r\n\r\n const rayPick: SceneRayPick | undefined = sceneRayPick(\r\n ray,\r\n this.appObjects\r\n );\r\n if (!rayPick?.appObjectID) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n const selectable = this.appObjects.getAppObjectComponent<Selectable>(\r\n rayPick.appObjectID,\r\n Selectable.type\r\n );\r\n if (!selectable) {\r\n this.selection.selectedObjectId = null;\r\n return;\r\n }\r\n\r\n this.selection.selectedObjectId = rayPick.appObjectID;\r\n };\r\n\r\n selectAppObject = (id: string, isSelected: boolean) => {\r\n if (!this.selection) return;\r\n if (!this.allowSelect()) return;\r\n\r\n if (isSelected) {\r\n this.selection.selectedObjectId = id;\r\n } else if (id === this.selection.selectedObjectId) {\r\n this.selection.selectedObjectId = null;\r\n }\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SelectAppObjectUC.type);\r\n\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { makeAppObjectRepo, ParametricLine } from "@vived/core";
|
|
2
2
|
import { makeMockSceneRayPickUC } from "../../Babylon";
|
|
3
3
|
import { makeBaseAppState } from "../../BaseApp";
|
|
4
|
+
import { makeToolRepo } from "../../Tools";
|
|
4
5
|
import { makeSelectable } from "../Entities/Selectable";
|
|
5
6
|
import { makeSelection } from "../Entities/Selection";
|
|
6
7
|
import { makeSelectAppObject, SelectAppObjectUC } from "./SelectAppObjectUC";
|
|
@@ -17,6 +18,11 @@ function makeTestRig() {
|
|
|
17
18
|
mockPickUC.sceneRayPick = mockPick;
|
|
18
19
|
const baseApp = makeBaseAppState(appObjects.getOrCreate("BaseApp"));
|
|
19
20
|
baseApp.isAuthoring = true;
|
|
21
|
+
const toolRepo = makeToolRepo(appObjects.getOrCreate("ToolRepo"));
|
|
22
|
+
toolRepo.makeTool("CALLOUT");
|
|
23
|
+
toolRepo.makeTool("LANDMARK");
|
|
24
|
+
toolRepo.makeTool("OTHER");
|
|
25
|
+
toolRepo.triggerTool("OTHER");
|
|
20
26
|
const selectSceneObject = makeSelectAppObject(baseAppObj);
|
|
21
27
|
return {
|
|
22
28
|
appObjects,
|
|
@@ -26,6 +32,7 @@ function makeTestRig() {
|
|
|
26
32
|
mockPick,
|
|
27
33
|
registerSpy,
|
|
28
34
|
baseApp,
|
|
35
|
+
toolRepo,
|
|
29
36
|
};
|
|
30
37
|
}
|
|
31
38
|
describe("Select Scene Object UC", () => {
|
|
@@ -94,5 +101,29 @@ describe("Select Scene Object UC", () => {
|
|
|
94
101
|
expect(selectSceneObject.allowSelect()).toEqual(false);
|
|
95
102
|
expect(selectSceneObject.allowTrySelect()).toEqual(false);
|
|
96
103
|
});
|
|
104
|
+
it("Does not change the selected object ID the callout tool is enabled", () => {
|
|
105
|
+
const { appObjects, selectSceneObject, selection, mockPick, toolRepo, } = makeTestRig();
|
|
106
|
+
const selectabelAppObj = appObjects.getOrCreate("currentObjID");
|
|
107
|
+
const selectable = makeSelectable(selectabelAppObj);
|
|
108
|
+
selection.addSelectable(selectable);
|
|
109
|
+
toolRepo.triggerTool("CALLOUT");
|
|
110
|
+
mockPick.mockReturnValue({ appObjectID: "selectableAppObj" });
|
|
111
|
+
selection.selectedObjectId = "currentObjID";
|
|
112
|
+
expect(selection.selectedObjectId).toEqual("currentObjID");
|
|
113
|
+
selectSceneObject.trySelectAppObject(ParametricLine.Forward());
|
|
114
|
+
expect(selection.selectedObjectId).toEqual("currentObjID");
|
|
115
|
+
});
|
|
116
|
+
it("Does not change the selected object ID the landmark tool is enabled", () => {
|
|
117
|
+
const { appObjects, selectSceneObject, selection, mockPick, toolRepo, } = makeTestRig();
|
|
118
|
+
const selectabelAppObj = appObjects.getOrCreate("currentObjID");
|
|
119
|
+
const selectable = makeSelectable(selectabelAppObj);
|
|
120
|
+
selection.addSelectable(selectable);
|
|
121
|
+
toolRepo.triggerTool("LANDMARK");
|
|
122
|
+
mockPick.mockReturnValue({ appObjectID: "selectableAppObj" });
|
|
123
|
+
selection.selectedObjectId = "currentObjID";
|
|
124
|
+
expect(selection.selectedObjectId).toEqual("currentObjID");
|
|
125
|
+
selectSceneObject.trySelectAppObject(ParametricLine.Forward());
|
|
126
|
+
expect(selection.selectedObjectId).toEqual("currentObjID");
|
|
127
|
+
});
|
|
97
128
|
});
|
|
98
129
|
//# sourceMappingURL=SelectAppObjectUC.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makeSelectAppObject, SelectAppObjectUC } from \"./SelectAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockPickUC = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn();\r\n mockPickUC.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const selectSceneObject = makeSelectAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n selectSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n };\r\n}\r\n\r\ndescribe(\"Select Scene Object UC\", () => {\r\n it(\"Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-selects if the id is currently selected\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n selectSceneObject.selectAppObject(\"some other id\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected object ID if it pick on it\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't hit anything\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't an app object\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't a selectable object\", () => {\r\n const { selectSceneObject, selection, mockPick, appObjects } =\r\n makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { selectSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(SelectAppObjectUC.get(appObjects)).toEqual(selectSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { selectSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(selectSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { selectSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(true);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(false);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(false);\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"SelectAppObjectUC.test.js","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo, ParametricLine } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon\";\r\nimport { makeBaseAppState } from \"../../BaseApp\";\r\nimport { makeToolRepo } from \"../../Tools\";\r\nimport { makeSelectable } from \"../Entities/Selectable\";\r\nimport { makeSelection } from \"../Entities/Selection\";\r\nimport { makeSelectAppObject, SelectAppObjectUC } from \"./SelectAppObjectUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const baseAppObj = appObjects.getOrCreate(\"baseAppObj\");\r\n const selection = makeSelection(baseAppObj);\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"selectableAppObj\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n const mockPickUC = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn();\r\n mockPickUC.sceneRayPick = mockPick;\r\n\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n baseApp.isAuthoring = true;\r\n\r\n const toolRepo = makeToolRepo(appObjects.getOrCreate(\"ToolRepo\"));\r\n toolRepo.makeTool(\"CALLOUT\");\r\n toolRepo.makeTool(\"LANDMARK\");\r\n toolRepo.makeTool(\"OTHER\");\r\n toolRepo.triggerTool(\"OTHER\");\r\n\r\n const selectSceneObject = makeSelectAppObject(baseAppObj);\r\n\r\n return {\r\n appObjects,\r\n selectSceneObject,\r\n selectable,\r\n selection,\r\n mockPick,\r\n registerSpy,\r\n baseApp,\r\n toolRepo,\r\n };\r\n}\r\n\r\ndescribe(\"Select Scene Object UC\", () => {\r\n it(\"Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Un-Selects by ID\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Only un-selects if the id is currently selected\", () => {\r\n const { selectSceneObject, selection } = makeTestRig();\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n selectSceneObject.selectAppObject(\"some other id\", false);\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected object ID if it pick on it\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(\"selectableAppObj\");\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't hit anything\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({});\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't an app object\", () => {\r\n const { selectSceneObject, selection, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"something weired\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Sets the selected to null if the pick doesn't a selectable object\", () => {\r\n const { selectSceneObject, selection, mockPick, appObjects } =\r\n makeTestRig();\r\n\r\n appObjects.getOrCreate(\"unselectableAppObject\");\r\n mockPick.mockReturnValue({ appObjectID: \"unselectableAppObject\" });\r\n\r\n selectSceneObject.selectAppObject(\"selectableAppObj\", true);\r\n\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward()); // Ray doesn't matter since we hijack the pick\r\n\r\n expect(selection.selectedObjectId).toEqual(null);\r\n });\r\n\r\n it(\"Gets the singleton\", () => {\r\n const { selectSceneObject, appObjects } = makeTestRig();\r\n\r\n expect(SelectAppObjectUC.get(appObjects)).toEqual(selectSceneObject);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { selectSceneObject, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(selectSceneObject);\r\n });\r\n\r\n it(\"Allows while authoring\", () => {\r\n const { selectSceneObject, baseApp } = makeTestRig();\r\n\r\n baseApp.isAuthoring = true;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(true);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(true);\r\n\r\n baseApp.isAuthoring = false;\r\n\r\n expect(selectSceneObject.allowSelect()).toEqual(false);\r\n expect(selectSceneObject.allowTrySelect()).toEqual(false);\r\n });\r\n\r\n it(\"Does not change the selected object ID the callout tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"CALLOUT\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n\r\n it(\"Does not change the selected object ID the landmark tool is enabled\", () => {\r\n const {\r\n appObjects,\r\n selectSceneObject,\r\n selection,\r\n mockPick,\r\n toolRepo,\r\n } = makeTestRig();\r\n\r\n const selectabelAppObj = appObjects.getOrCreate(\"currentObjID\");\r\n const selectable = makeSelectable(selectabelAppObj);\r\n selection.addSelectable(selectable);\r\n\r\n toolRepo.triggerTool(\"LANDMARK\");\r\n\r\n mockPick.mockReturnValue({ appObjectID: \"selectableAppObj\" });\r\n\r\n selection.selectedObjectId = \"currentObjID\";\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n selectSceneObject.trySelectAppObject(ParametricLine.Forward());\r\n\r\n expect(selection.selectedObjectId).toEqual(\"currentObjID\");\r\n });\r\n});\r\n"]}
|
|
@@ -3,6 +3,7 @@ export declare class Hideable extends AppObjectEntity {
|
|
|
3
3
|
static readonly type = "HIDEABLE";
|
|
4
4
|
static addIfMissing(appObj: AppObject): Hideable;
|
|
5
5
|
static get(appObjID: string, appObjects: AppObjectRepo): Hideable | undefined;
|
|
6
|
+
ignoreSerialization: boolean;
|
|
6
7
|
private memoizedIsHidden;
|
|
7
8
|
get isHidden(): boolean;
|
|
8
9
|
set isHidden(val: boolean);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hideable.d.ts","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,qBAAa,QAAS,SAAQ,eAAe;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAc;IAElC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ;IAShD,MAAM,CAAC,GAAG,CACR,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,aAAa,GACxB,QAAQ,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"Hideable.d.ts","sourceRoot":"","sources":["../../../../src/Hideable/Entities/Hideable.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EAEd,MAAM,aAAa,CAAC;AAErB,qBAAa,QAAS,SAAQ,eAAe;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAc;IAElC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ;IAShD,MAAM,CAAC,GAAG,CACR,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,aAAa,GACxB,QAAQ,GAAG,SAAS;IAQhB,mBAAmB,UAAS;IAEnC,OAAO,CAAC,gBAAgB,CAAmD;IAC3E,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,EAExB;gBAEW,SAAS,EAAE,SAAS;CAGjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SerializeHideableObjects.d.ts","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAEjB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,8BAAsB,wBACpB,SAAQ,WACR,YAAW,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,8BAA8B;IAClD,IAAI,EAAE,MAAM,CAAsB;IAClC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,IAAI,MAAM;IACjC,QAAQ,CAAC,gBAAgB,CACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,GACzB,IAAI;IACP,QAAQ,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI;CAC7D;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,SAAS,GACnB,wBAAwB,CAE1B;AAED,qBAAa,2BAA4B,SAAQ,wBAAwB;IACvE,oBAAoB,SAAK;IAEzB,oBAAoB,EAAE,MAAM,IAAI,CAI9B;IAEF,cAAc,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"SerializeHideableObjects.d.ts","sourceRoot":"","sources":["../../../../src/Hideable/UCs/SerializeHideableObjects.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAEjB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,8BAAsB,wBACpB,SAAQ,WACR,YAAW,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,8BAA8B;IAClD,IAAI,EAAE,MAAM,CAAsB;IAClC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,IAAI,MAAM;IACjC,QAAQ,CAAC,gBAAgB,CACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,GACzB,IAAI;IACP,QAAQ,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI;CAC7D;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,SAAS,GACnB,wBAAwB,CAE1B;AAED,qBAAa,2BAA4B,SAAQ,wBAAwB;IACvE,oBAAoB,SAAK;IAEzB,oBAAoB,EAAE,MAAM,IAAI,CAI9B;IAEF,cAAc,IAAI,MAAM;IAmBxB,gBAAgB,CACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAQvB,OAAO,CAAC,YAAY;IAmCpB,iBAAiB,IAAI,IAAI;gBAUb,MAAM,EAAE,SAAS;CAY9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupLandmarks.d.ts","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgBvD,wBAAgB,cAAc,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"setupLandmarks.d.ts","sourceRoot":"","sources":["../../../../src/Landmarks/Factories/setupLandmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgBvD,wBAAgB,cAAc,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,CAqDnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectAppObjectUC.d.ts","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,EACb,WAAW,EAEX,cAAc,EACf,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"SelectAppObjectUC.d.ts","sourceRoot":"","sources":["../../../../src/Selection/UC/SelectAppObjectUC.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,EACb,WAAW,EAEX,cAAc,EACf,MAAM,aAAa,CAAC;AAOrB,8BAAsB,iBAAkB,SAAQ,WAAW;IACzD,MAAM,CAAC,QAAQ,CAAC,IAAI,uBAAuB;IAE3C,QAAQ,CAAC,WAAW,IAAI,OAAO;IAC/B,QAAQ,CAAC,cAAc,IAAI,OAAO;IAClC,QAAQ,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IAE3D,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa;CAMrC;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,iBAAiB,CAE3E"}
|