bruce-cesium 7.6.1 → 7.6.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.
Files changed (87) hide show
  1. package/dist/bruce-cesium.es5.js +2031 -343
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +2024 -340
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/bruce-cesium.js +2 -1
  6. package/dist/lib/bruce-cesium.js.map +1 -1
  7. package/dist/lib/rendering/cesium-animated-property.js +63 -107
  8. package/dist/lib/rendering/cesium-animated-property.js.map +1 -1
  9. package/dist/lib/rendering/entity-gatherer.js +11 -3
  10. package/dist/lib/rendering/entity-gatherer.js.map +1 -1
  11. package/dist/lib/rendering/menu-item-manager.js +83 -10
  12. package/dist/lib/rendering/menu-item-manager.js.map +1 -1
  13. package/dist/lib/rendering/relation-render-engine.js +24 -5
  14. package/dist/lib/rendering/relation-render-engine.js.map +1 -1
  15. package/dist/lib/rendering/render-managers/common/entity-label-group.js +13 -9
  16. package/dist/lib/rendering/render-managers/common/entity-label-group.js.map +1 -1
  17. package/dist/lib/rendering/render-managers/common/entity-label.js +68 -7
  18. package/dist/lib/rendering/render-managers/common/entity-label.js.map +1 -1
  19. package/dist/lib/rendering/render-managers/common/entity-rerender-maintain-state.js +44 -5
  20. package/dist/lib/rendering/render-managers/common/entity-rerender-maintain-state.js.map +1 -1
  21. package/dist/lib/rendering/render-managers/common/entity-simulation.js +483 -0
  22. package/dist/lib/rendering/render-managers/common/entity-simulation.js.map +1 -0
  23. package/dist/lib/rendering/render-managers/common/historic-trail.js +123 -0
  24. package/dist/lib/rendering/render-managers/common/historic-trail.js.map +1 -0
  25. package/dist/lib/rendering/render-managers/common/historic-utils.js +17 -6
  26. package/dist/lib/rendering/render-managers/common/historic-utils.js.map +1 -1
  27. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js +3 -2
  28. package/dist/lib/rendering/render-managers/entities/entities-datalab-render-manager.js.map +1 -1
  29. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +10 -2
  30. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -1
  31. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +3 -2
  32. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
  33. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +18 -5
  34. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  35. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +1 -1
  36. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
  37. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js +745 -106
  38. package/dist/lib/rendering/render-managers/other/assembly-render-manager.js.map +1 -1
  39. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js +23 -1
  40. package/dist/lib/rendering/render-managers/other/legacy-relations-render-manager.js.map +1 -1
  41. package/dist/lib/rendering/render-managers/other/relations-render-manager.js +23 -1
  42. package/dist/lib/rendering/render-managers/other/relations-render-manager.js.map +1 -1
  43. package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
  44. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +2 -0
  45. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -1
  46. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +130 -40
  47. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  48. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +3 -0
  49. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
  50. package/dist/lib/rendering/tileset-styler.js +1 -1
  51. package/dist/lib/rendering/tileset-styler.js.map +1 -1
  52. package/dist/lib/rendering/visual-register-culler.js +2 -0
  53. package/dist/lib/rendering/visual-register-culler.js.map +1 -1
  54. package/dist/lib/rendering/visuals-register.js +89 -20
  55. package/dist/lib/rendering/visuals-register.js.map +1 -1
  56. package/dist/lib/utils/entity-utils.js +43 -2
  57. package/dist/lib/utils/entity-utils.js.map +1 -1
  58. package/dist/lib/widgets/widget-info-view.js +20 -7
  59. package/dist/lib/widgets/widget-info-view.js.map +1 -1
  60. package/dist/types/bruce-cesium.d.ts +2 -1
  61. package/dist/types/rendering/cesium-animated-property.d.ts +8 -6
  62. package/dist/types/rendering/entity-gatherer.d.ts +6 -1
  63. package/dist/types/rendering/menu-item-manager.d.ts +33 -1
  64. package/dist/types/rendering/relation-render-engine.d.ts +10 -0
  65. package/dist/types/rendering/render-managers/common/entity-label-group.d.ts +3 -2
  66. package/dist/types/rendering/render-managers/common/entity-label.d.ts +4 -0
  67. package/dist/types/rendering/render-managers/common/entity-rerender-maintain-state.d.ts +20 -0
  68. package/dist/types/rendering/render-managers/common/entity-simulation.d.ts +126 -0
  69. package/dist/types/rendering/render-managers/common/historic-trail.d.ts +30 -0
  70. package/dist/types/rendering/render-managers/common/historic-utils.d.ts +4 -0
  71. package/dist/types/rendering/render-managers/entities/entities-datalab-render-manager.d.ts +2 -0
  72. package/dist/types/rendering/render-managers/entities/entities-ids-render-manager.d.ts +2 -0
  73. package/dist/types/rendering/render-managers/entities/entities-loaded-render-manager.d.ts +2 -0
  74. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +2 -0
  75. package/dist/types/rendering/render-managers/entities/entity-render-manager.d.ts +2 -0
  76. package/dist/types/rendering/render-managers/other/assembly-render-manager.d.ts +79 -2
  77. package/dist/types/rendering/render-managers/other/legacy-relations-render-manager.d.ts +5 -0
  78. package/dist/types/rendering/render-managers/other/relations-render-manager.d.ts +5 -0
  79. package/dist/types/rendering/render-managers/render-manager.d.ts +4 -0
  80. package/dist/types/rendering/render-managers/tilesets/tileset-arb-render-manager.d.ts +3 -0
  81. package/dist/types/rendering/render-managers/tilesets/tileset-cad-render-manager.d.ts +11 -1
  82. package/dist/types/rendering/render-managers/tilesets/tileset-entities-render-manager.d.ts +3 -0
  83. package/dist/types/rendering/tileset-styler.d.ts +2 -0
  84. package/dist/types/rendering/visuals-register.d.ts +13 -0
  85. package/dist/types/utils/entity-utils.d.ts +6 -0
  86. package/dist/types/widgets/widget-info-view.d.ts +1 -0
  87. package/package.json +2 -2
@@ -5,12 +5,41 @@ exports.EntityReRenderMaintainState = void 0;
5
5
  * Tracks per-entity rerender state for unsaved blob maintenance and stale API response suppression.
6
6
  */
7
7
  class EntityReRenderMaintainState {
8
- constructor() {
8
+ constructor(simulation, pointInTime) {
9
+ this.simulation = simulation;
10
+ this.pointInTime = pointInTime;
9
11
  this.maintainedEntitiesById = {};
10
12
  this.apiRevisionByEntityId = {};
11
13
  this.skipApiRunByEntityId = {};
12
14
  this.checkRunId = 0;
13
15
  }
16
+ /*
17
+ * Lays each Entity's simulated record for the current point over it, when the manager reads at one.
18
+ */
19
+ atPoint(entities) {
20
+ var _a;
21
+ const point = (_a = this.pointInTime) === null || _a === void 0 ? void 0 : _a.call(this);
22
+ if (!point || !this.simulation || this.simulation.IsEmpty || !(entities === null || entities === void 0 ? void 0 : entities.length)) {
23
+ return entities;
24
+ }
25
+ return entities.map((entity) => this.simulation.ApplyAt(entity, point.timeMs, point.attrKey));
26
+ }
27
+ /**
28
+ * Whether a simulated stand-in replaces this Entity, so nothing from the API may replace what is drawn.
29
+ */
30
+ isSimulated(entityId) {
31
+ var _a;
32
+ return Boolean(entityId && ((_a = this.simulation) === null || _a === void 0 ? void 0 : _a.HasEntity(entityId)));
33
+ }
34
+ /**
35
+ * Swaps any simulated Entity in a set the API returned for its stand-in, or lays its patch over it.
36
+ */
37
+ withSimulated(entities) {
38
+ if (!this.simulation || this.simulation.IsEmpty || !(entities === null || entities === void 0 ? void 0 : entities.length)) {
39
+ return entities;
40
+ }
41
+ return this.atPoint(entities.map((entity) => { var _a, _b; return (_b = this.simulation.Resolve((_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID, entity)) !== null && _b !== void 0 ? _b : entity; }));
42
+ }
14
43
  setMaintainedEntities(entities) {
15
44
  var _a;
16
45
  for (let i = 0; i < entities.length; i++) {
@@ -32,15 +61,21 @@ class EntityReRenderMaintainState {
32
61
  }
33
62
  }
34
63
  getMaintainedEntities(entityIds) {
64
+ var _a;
35
65
  const entities = [];
36
66
  for (let i = 0; i < entityIds.length; i++) {
37
67
  const id = entityIds[i];
38
68
  if (!id) {
39
69
  continue;
40
70
  }
41
- const entity = this.maintainedEntitiesById[id];
42
- if (entity) {
43
- entities.push(entity);
71
+ // A maintained blob is this manager's own unsaved edit, newer than a simulation, so it is drawn as is.
72
+ const maintained = this.maintainedEntitiesById[id];
73
+ const simulated = maintained ? null : (_a = this.simulation) === null || _a === void 0 ? void 0 : _a.GetEntity(id);
74
+ if (maintained) {
75
+ entities.push(maintained);
76
+ }
77
+ else if (simulated) {
78
+ entities.push(this.atPoint([simulated])[0]);
44
79
  }
45
80
  }
46
81
  return entities;
@@ -97,7 +132,7 @@ class EntityReRenderMaintainState {
97
132
  }
98
133
  filterCurrentApiEntities(params) {
99
134
  const { entities, revisions, runId } = params;
100
- return entities.filter((entity) => {
135
+ const current = entities.filter((entity) => {
101
136
  var _a, _b, _c;
102
137
  const id = (_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID;
103
138
  if (!id) {
@@ -106,8 +141,12 @@ class EntityReRenderMaintainState {
106
141
  if (runId != null && this.shouldSkipInRun(id, runId)) {
107
142
  return false;
108
143
  }
144
+ if (this.isSimulated(id)) {
145
+ return false;
146
+ }
109
147
  return ((_b = this.apiRevisionByEntityId[id]) !== null && _b !== void 0 ? _b : 0) === ((_c = revisions[id]) !== null && _c !== void 0 ? _c : 0);
110
148
  });
149
+ return this.atPoint(this.simulation && !this.simulation.IsEmpty ? current.map((entity) => this.simulation.Overlay(entity)) : current);
111
150
  }
112
151
  }
113
152
  exports.EntityReRenderMaintainState = EntityReRenderMaintainState;
@@ -1 +1 @@
1
- {"version":3,"file":"entity-rerender-maintain-state.js","sourceRoot":"","sources":["../../../../../src/rendering/render-managers/common/entity-rerender-maintain-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-rerender-maintain-state.js","sourceRoot":"","sources":["../../../../../src/rendering/render-managers/common/entity-rerender-maintain-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,483 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntitySimulation = void 0;
4
+ const bruce_models_1 = require("bruce-models");
5
+ /**
6
+ * Entity data a caller asserts instead of what the API says, held for every menu item until it is cleared.
7
+ */
8
+ var EntitySimulation;
9
+ (function (EntitySimulation) {
10
+ const VIEWER_KEY = "_nextspaceSimulation";
11
+ /**
12
+ * The set used when a caller does not name one.
13
+ */
14
+ EntitySimulation.DEFAULT_SET = "default";
15
+ // Record parts replaced whole rather than merged field by field, eg. a matrix or a geometry.
16
+ const WHOLE_RECORD_PARTS = new Set(["geometry", "boundaries", "assemblyPosition"]);
17
+ // Record parts that carry Entity data, in the order they are laid over an Entity.
18
+ const RECORD_PARTS = ["location", "transform", "geometry", "boundaries", "assemblyPosition", "data"];
19
+ /**
20
+ * The store for a viewer, made on first use and shared by everything drawing into that scene.
21
+ */
22
+ function Get(viewer) {
23
+ if (!viewer) {
24
+ return null;
25
+ }
26
+ if (!viewer[VIEWER_KEY]) {
27
+ viewer[VIEWER_KEY] = new Store();
28
+ }
29
+ return viewer[VIEWER_KEY];
30
+ }
31
+ EntitySimulation.Get = Get;
32
+ function isPlainObject(value) {
33
+ return value != null && typeof value === "object" && !Array.isArray(value);
34
+ }
35
+ // Entity values replaced whole by a patch, since half of one geometry over another describes neither.
36
+ const WHOLE_ENTITY_PARTS = new Set(["VectorGeometry", "Boundaries", "AssemblyPosition"]);
37
+ /**
38
+ * Returns base with patch laid over it: objects merge key by key, anything else replaces.
39
+ * @param whole names keys at the top level, or under Bruce, whose value is replaced rather than merged.
40
+ */
41
+ function Overlay(base, patch, whole = WHOLE_ENTITY_PARTS) {
42
+ const lay = (into, over, depth, underBruce) => {
43
+ if (over === undefined) {
44
+ return into;
45
+ }
46
+ if (!isPlainObject(over) || !isPlainObject(into)) {
47
+ return over;
48
+ }
49
+ const merged = { ...into };
50
+ for (const key of Object.keys(over)) {
51
+ const replace = (depth === 0 || underBruce) && whole.has(key);
52
+ merged[key] = replace ? over[key] : lay(merged[key], over[key], depth + 1, depth === 0 && key === "Bruce");
53
+ }
54
+ return merged;
55
+ };
56
+ return lay(base, patch, 0, false);
57
+ }
58
+ EntitySimulation.Overlay = Overlay;
59
+ /*
60
+ * Lays one record's parts over another's, each part replaced whole where a part is one value.
61
+ */
62
+ function overlayRecord(base, over) {
63
+ return Overlay(base, over, WHOLE_RECORD_PARTS);
64
+ }
65
+ /**
66
+ * Each value a record names, as a path into the record. A part replaced whole is one value.
67
+ */
68
+ function recordPaths(record) {
69
+ const paths = [];
70
+ const walk = (value, path) => {
71
+ if (isPlainObject(value) && !(path.length === 1 && WHOLE_RECORD_PARTS.has(path[0]))) {
72
+ for (const key of Object.keys(value)) {
73
+ walk(value[key], [...path, key]);
74
+ }
75
+ return;
76
+ }
77
+ if (value !== undefined) {
78
+ paths.push(path);
79
+ }
80
+ };
81
+ for (const part of RECORD_PARTS) {
82
+ if ((record === null || record === void 0 ? void 0 : record[part]) != null) {
83
+ walk(record[part], [part]);
84
+ }
85
+ }
86
+ return paths;
87
+ }
88
+ /*
89
+ * A copy of the record without the values at these paths, dropping objects left empty.
90
+ */
91
+ function withoutPaths(record, paths) {
92
+ const strip = (value, path) => {
93
+ if (!isPlainObject(value) || !(path[0] in value)) {
94
+ return value;
95
+ }
96
+ const copy = { ...value };
97
+ if (path.length === 1) {
98
+ delete copy[path[0]];
99
+ }
100
+ else {
101
+ const inner = strip(copy[path[0]], path.slice(1));
102
+ if (isPlainObject(inner) && !Object.keys(inner).length) {
103
+ delete copy[path[0]];
104
+ }
105
+ else {
106
+ copy[path[0]] = inner;
107
+ }
108
+ }
109
+ return copy;
110
+ };
111
+ let stripped = record;
112
+ for (const path of paths) {
113
+ stripped = strip(stripped, path);
114
+ }
115
+ return stripped;
116
+ }
117
+ /*
118
+ * Whether a record still says anything about its Entity.
119
+ */
120
+ function hasContent(record) {
121
+ return RECORD_PARTS.some(part => {
122
+ const value = record === null || record === void 0 ? void 0 : record[part];
123
+ return value != null && !(isPlainObject(value) && !Object.keys(value).length);
124
+ });
125
+ }
126
+ function timeOf(record) {
127
+ return (record === null || record === void 0 ? void 0 : record.dateTime) ? new Date(record.dateTime).getTime() : NaN;
128
+ }
129
+ class Store {
130
+ constructor() {
131
+ // Insertion order is precedence: a later set wins.
132
+ this.sets = new Map();
133
+ this.onChanged = new bruce_models_1.BruceEvent();
134
+ }
135
+ /**
136
+ * Triggered after anything is simulated or cleared, naming the Entities affected.
137
+ */
138
+ get OnChanged() {
139
+ return this.onChanged;
140
+ }
141
+ /**
142
+ * Whether anything at all is simulated, so a caller can skip the work when nothing is.
143
+ */
144
+ get IsEmpty() {
145
+ for (const set of this.sets.values()) {
146
+ if (set.entities.size || set.patches.size || set.records.size) {
147
+ return false;
148
+ }
149
+ }
150
+ return true;
151
+ }
152
+ /**
153
+ * The names of the sets holding anything, oldest first.
154
+ */
155
+ GetSets() {
156
+ return Array.from(this.sets.keys());
157
+ }
158
+ /**
159
+ * The time each set's records span, oldest set first, for sets holding any records.
160
+ */
161
+ GetSetRanges() {
162
+ const ranges = [];
163
+ for (const [name, set] of this.sets) {
164
+ let startMs = Infinity;
165
+ let endMs = -Infinity;
166
+ for (const byTime of set.records.values()) {
167
+ for (const ms of byTime.keys()) {
168
+ startMs = Math.min(startMs, ms);
169
+ endMs = Math.max(endMs, ms);
170
+ }
171
+ }
172
+ if (set.records.size) {
173
+ ranges.push({ set: name, startMs, endMs, entityIds: Array.from(set.records.keys()) });
174
+ }
175
+ }
176
+ return ranges;
177
+ }
178
+ setFor(name) {
179
+ const key = name || EntitySimulation.DEFAULT_SET;
180
+ let set = this.sets.get(key);
181
+ if (!set) {
182
+ set = { entities: new Map(), patches: new Map(), records: new Map() };
183
+ this.sets.set(key, set);
184
+ }
185
+ return set;
186
+ }
187
+ /**
188
+ * Replaces the stand-in for each Entity given, within a set.
189
+ */
190
+ SetEntities(entities, set) {
191
+ this.setBlobs(entities, set, false);
192
+ }
193
+ /**
194
+ * Replaces the patch for each Entity given, within a set. A patch names only the data it changes.
195
+ */
196
+ SetPatches(patches, set) {
197
+ this.setBlobs(patches, set, true);
198
+ }
199
+ setBlobs(blobs, set, patch) {
200
+ var _a;
201
+ const ids = [];
202
+ for (const blob of blobs || []) {
203
+ const id = (_a = blob === null || blob === void 0 ? void 0 : blob.Bruce) === null || _a === void 0 ? void 0 : _a.ID;
204
+ if (!id) {
205
+ continue;
206
+ }
207
+ const held = this.setFor(set);
208
+ (patch ? held.patches : held.entities).set(id, blob);
209
+ ids.push(id);
210
+ }
211
+ if (ids.length) {
212
+ this.onChanged.Trigger({ entityIds: ids, entities: true, records: false, set: set || EntitySimulation.DEFAULT_SET });
213
+ }
214
+ }
215
+ /**
216
+ * Adds records to each Entity's simulated history within a set, replacing any at the same instant.
217
+ */
218
+ SetRecords(records, set) {
219
+ const ids = new Set();
220
+ for (const record of records || []) {
221
+ const id = record === null || record === void 0 ? void 0 : record.entityId;
222
+ const timeMs = timeOf(record);
223
+ if (!id || isNaN(timeMs)) {
224
+ continue;
225
+ }
226
+ const held = this.setFor(set);
227
+ let byTime = held.records.get(id);
228
+ if (!byTime) {
229
+ byTime = new Map();
230
+ held.records.set(id, byTime);
231
+ }
232
+ byTime.set(timeMs, record);
233
+ ids.add(id);
234
+ }
235
+ if (ids.size) {
236
+ this.onChanged.Trigger({ entityIds: Array.from(ids), entities: false, records: true, set: set || EntitySimulation.DEFAULT_SET });
237
+ }
238
+ }
239
+ /**
240
+ * Forgets what is simulated for these Entities, or for every Entity when none are named.
241
+ * @param params.set the set to clear. By default every set.
242
+ * @param params.entities clear the stand-ins and patches. Default true.
243
+ * @param params.records clear the historic records. Default true.
244
+ */
245
+ Clear(params) {
246
+ var _a, _b;
247
+ const entities = (params === null || params === void 0 ? void 0 : params.entities) !== false;
248
+ const records = (params === null || params === void 0 ? void 0 : params.records) !== false;
249
+ const names = (params === null || params === void 0 ? void 0 : params.set) ? [params.set] : Array.from(this.sets.keys());
250
+ const cleared = new Set();
251
+ for (const name of names) {
252
+ const set = this.sets.get(name);
253
+ if (!set) {
254
+ continue;
255
+ }
256
+ const ids = (_a = params === null || params === void 0 ? void 0 : params.entityIds) !== null && _a !== void 0 ? _a : [...set.entities.keys(), ...set.patches.keys(), ...set.records.keys()];
257
+ for (const id of ids) {
258
+ const hadEntity = entities && set.entities.delete(id);
259
+ const hadPatch = entities && set.patches.delete(id);
260
+ const hadRecords = records && set.records.delete(id);
261
+ if (hadEntity || hadPatch || hadRecords) {
262
+ cleared.add(id);
263
+ }
264
+ }
265
+ if (!set.entities.size && !set.patches.size && !set.records.size) {
266
+ this.sets.delete(name);
267
+ }
268
+ }
269
+ if (cleared.size) {
270
+ this.onChanged.Trigger({ entityIds: Array.from(cleared), entities, records, set: (_b = params === null || params === void 0 ? void 0 : params.set) !== null && _b !== void 0 ? _b : null });
271
+ }
272
+ }
273
+ /**
274
+ * The Entity's stand-in, with any patches laid over it, or null when nothing stands in for it.
275
+ */
276
+ GetEntity(entityId) {
277
+ var _a;
278
+ let standIn = null;
279
+ for (const set of this.sets.values()) {
280
+ standIn = (_a = set.entities.get(entityId)) !== null && _a !== void 0 ? _a : standIn;
281
+ }
282
+ return standIn ? this.Overlay(standIn) : null;
283
+ }
284
+ /**
285
+ * Whether a stand-in replaces this Entity, so the API need not be asked for it.
286
+ */
287
+ HasEntity(entityId) {
288
+ for (const set of this.sets.values()) {
289
+ if (set.entities.has(entityId)) {
290
+ return true;
291
+ }
292
+ }
293
+ return false;
294
+ }
295
+ /**
296
+ * Whether a stand-in or a patch changes this Entity.
297
+ */
298
+ HasBlob(entityId) {
299
+ for (const set of this.sets.values()) {
300
+ if (set.entities.has(entityId) || set.patches.has(entityId)) {
301
+ return true;
302
+ }
303
+ }
304
+ return false;
305
+ }
306
+ /**
307
+ * Returns an Entity with its simulated patches laid over it. The input is never changed.
308
+ */
309
+ Overlay(entity) {
310
+ var _a;
311
+ const id = (_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID;
312
+ if (!id) {
313
+ return entity;
314
+ }
315
+ let result = entity;
316
+ for (const set of this.sets.values()) {
317
+ const patch = set.patches.get(id);
318
+ if (patch) {
319
+ result = Overlay(result, patch);
320
+ }
321
+ }
322
+ return result;
323
+ }
324
+ /**
325
+ * The Entity as simulated: its stand-in if there is one, otherwise what was read with patches laid over it.
326
+ * @param entityId the Entity.
327
+ * @param read what the API gave for it, if it was asked.
328
+ */
329
+ Resolve(entityId, read) {
330
+ var _a;
331
+ return (_a = this.GetEntity(entityId)) !== null && _a !== void 0 ? _a : (read ? this.Overlay(read) : null);
332
+ }
333
+ /**
334
+ * Every Entity with a simulated stand-in or patch.
335
+ */
336
+ GetEntityIds() {
337
+ const ids = new Set();
338
+ for (const set of this.sets.values()) {
339
+ set.entities.forEach((_, id) => ids.add(id));
340
+ set.patches.forEach((_, id) => ids.add(id));
341
+ }
342
+ return Array.from(ids);
343
+ }
344
+ /**
345
+ * Every Entity with simulated history.
346
+ */
347
+ GetRecordEntityIds() {
348
+ const ids = new Set();
349
+ for (const set of this.sets.values()) {
350
+ set.records.forEach((_, id) => ids.add(id));
351
+ }
352
+ return Array.from(ids);
353
+ }
354
+ /**
355
+ * An Entity's simulated history for a historic key, oldest first, every set's record at an instant merged.
356
+ */
357
+ GetRecords(entityId, attrKey) {
358
+ const byTime = new Map();
359
+ for (const set of this.sets.values()) {
360
+ for (const [ms, record] of set.records.get(entityId) || []) {
361
+ if (attrKey && record.attrKey && record.attrKey !== attrKey) {
362
+ continue;
363
+ }
364
+ const held = byTime.get(ms);
365
+ byTime.set(ms, held ? overlayRecord(held, record) : record);
366
+ }
367
+ }
368
+ return Array.from(byTime.entries()).sort(([a], [b]) => a - b).map(([, record]) => record);
369
+ }
370
+ /**
371
+ * Each value an Entity's simulated history names, with the instant from which it is the simulation's.
372
+ */
373
+ ownedFrom(records) {
374
+ const owned = new Map();
375
+ for (const record of records) {
376
+ const ms = timeOf(record);
377
+ for (const path of recordPaths(record)) {
378
+ const key = path.join("\u0000");
379
+ if (!owned.has(key)) {
380
+ owned.set(key, { path, fromMs: ms });
381
+ }
382
+ }
383
+ }
384
+ return Array.from(owned.values());
385
+ }
386
+ /**
387
+ * An Entity as it stands at an instant, with each value its simulated records have named by then laid over it.
388
+ * @param entity the Entity as read for that instant, from the API or a simulated stand-in.
389
+ * @param timeMs the instant in milliseconds.
390
+ * @param attrKey the historic attribute key being followed, or null for any.
391
+ */
392
+ ApplyAt(entity, timeMs, attrKey) {
393
+ var _a, _b, _c;
394
+ const id = (_a = entity === null || entity === void 0 ? void 0 : entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID;
395
+ if (!id || timeMs == null || isNaN(timeMs)) {
396
+ return entity;
397
+ }
398
+ // Laid oldest first, each record replacing only what it names, which leaves every value at its newest.
399
+ let state = null;
400
+ let stateMs = -Infinity;
401
+ for (const record of this.GetRecords(id, attrKey)) {
402
+ const ms = timeOf(record);
403
+ if (ms > timeMs) {
404
+ break;
405
+ }
406
+ const parts = {};
407
+ for (const part of RECORD_PARTS) {
408
+ if (record[part] != null) {
409
+ parts[part] = record[part];
410
+ }
411
+ }
412
+ state = state ? overlayRecord(state, parts) : parts;
413
+ stateMs = ms;
414
+ }
415
+ if (!state) {
416
+ return entity;
417
+ }
418
+ const bruce = { ...entity.Bruce };
419
+ if (state.location) {
420
+ bruce.Location = Overlay(bruce.Location, state.location);
421
+ }
422
+ if (state.transform) {
423
+ bruce.Transform = Overlay(bruce.Transform, state.transform);
424
+ }
425
+ if (state.geometry) {
426
+ bruce.VectorGeometry = state.geometry;
427
+ }
428
+ if (state.boundaries) {
429
+ bruce.Boundaries = state.boundaries;
430
+ }
431
+ if (state.assemblyPosition) {
432
+ bruce.AssemblyPosition = state.assemblyPosition;
433
+ }
434
+ // Says the newest record the Entity now reflects, the way a read at a point does.
435
+ const outline = entity.Bruce.Outline || [];
436
+ const readAt = outline.find(x => !!x.DateTime);
437
+ const readMs = readAt ? new Date(readAt.DateTime).getTime() : -Infinity;
438
+ const dated = {
439
+ ...(readAt || { "Source.Name": "Simulation", Editable: false, Kind: bruce_models_1.Entity.EOutlineKind.Attribute }),
440
+ DateTime: new Date(Math.max(readMs, stateMs)).toISOString(),
441
+ ForeignKey: (_b = readAt === null || readAt === void 0 ? void 0 : readAt.ForeignKey) !== null && _b !== void 0 ? _b : attrKey
442
+ };
443
+ bruce.Outline = [dated, ...outline.filter(x => x !== readAt)];
444
+ const data = state.data ? Overlay({ ...entity, Bruce: undefined }, state.data) : entity;
445
+ return { ...data, Bruce: Overlay(bruce, (_c = state.data) === null || _c === void 0 ? void 0 : _c.Bruce) };
446
+ }
447
+ /**
448
+ * API records with the simulated ones joined in, for the named Entities or every simulated one.
449
+ */
450
+ MergeRecords(recordsByIds, attrKey, entityIds) {
451
+ if (this.IsEmpty) {
452
+ return recordsByIds;
453
+ }
454
+ const ids = entityIds !== null && entityIds !== void 0 ? entityIds : this.GetRecordEntityIds();
455
+ let merged = null;
456
+ for (const id of ids) {
457
+ const simulated = this.GetRecords(id, attrKey);
458
+ if (!simulated.length) {
459
+ continue;
460
+ }
461
+ const owned = this.ownedFrom(simulated);
462
+ const byTime = new Map();
463
+ for (const record of (recordsByIds === null || recordsByIds === void 0 ? void 0 : recordsByIds[id]) || []) {
464
+ const ms = timeOf(record);
465
+ const kept = withoutPaths(record, owned.filter(x => x.fromMs <= ms).map(x => x.path));
466
+ if (hasContent(kept)) {
467
+ byTime.set(ms, kept);
468
+ }
469
+ }
470
+ for (const record of simulated) {
471
+ const ms = timeOf(record);
472
+ const held = byTime.get(ms);
473
+ byTime.set(ms, held ? overlayRecord(held, record) : record);
474
+ }
475
+ merged = merged !== null && merged !== void 0 ? merged : { ...(recordsByIds || {}) };
476
+ merged[id] = Array.from(byTime.entries()).sort(([a], [b]) => a - b).map(([, record]) => record);
477
+ }
478
+ return merged !== null && merged !== void 0 ? merged : recordsByIds;
479
+ }
480
+ }
481
+ EntitySimulation.Store = Store;
482
+ })(EntitySimulation = exports.EntitySimulation || (exports.EntitySimulation = {}));
483
+ //# sourceMappingURL=entity-simulation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-simulation.js","sourceRoot":"","sources":["../../../../../src/rendering/render-managers/common/entity-simulation.ts"],"names":[],"mappings":"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"}