bruce-cesium 0.0.5 → 0.0.7

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.
@@ -1673,6 +1673,62 @@ function unmarkEntity(visual) {
1673
1673
  }
1674
1674
  }
1675
1675
  }
1676
+ function select(visual) {
1677
+ var color = Color.fromAlpha(Color.YELLOW, 0.5);
1678
+ if (visual instanceof Entity) {
1679
+ var entities = EntityUtils.GatherEntity(visual);
1680
+ for (var i = 0; i < entities.length; i++) {
1681
+ var cEntity = entities[i];
1682
+ if (cEntity.point) {
1683
+ cEntity.point._orgColor = cEntity.point.color;
1684
+ cEntity.point.color = color.clone();
1685
+ }
1686
+ else if (cEntity.polyline) {
1687
+ cEntity.polyline._orgColor = cEntity.polyline.material;
1688
+ cEntity.polyline.material = color.clone();
1689
+ }
1690
+ else if (cEntity.polygon) {
1691
+ cEntity.polygon._orgColor = cEntity.polygon.material;
1692
+ cEntity.polygon.material = color.clone();
1693
+ }
1694
+ else if (cEntity.model) {
1695
+ cEntity.model._orgColor = cEntity.model.color;
1696
+ cEntity.model.color = color.clone();
1697
+ }
1698
+ }
1699
+ }
1700
+ else if (visual instanceof Primitive) ;
1701
+ else if (visual instanceof Cesium3DTileFeature) {
1702
+ var cPrim = visual;
1703
+ cPrim._orgColor = cPrim.color;
1704
+ cPrim.color = color.clone();
1705
+ }
1706
+ }
1707
+ function deselect(visual) {
1708
+ if (visual instanceof Entity) {
1709
+ var entities = EntityUtils.GatherEntity(visual);
1710
+ for (var i = 0; i < entities.length; i++) {
1711
+ var cEntity = entities[i];
1712
+ if (cEntity.point) {
1713
+ cEntity.point.color = cEntity.point._orgColor;
1714
+ }
1715
+ else if (cEntity.polyline) {
1716
+ cEntity.polyline.material = cEntity.polyline._orgColor;
1717
+ }
1718
+ else if (cEntity.polygon) {
1719
+ cEntity.polygon.material = cEntity.polygon._orgColor;
1720
+ }
1721
+ else if (cEntity.model) {
1722
+ cEntity.model.color = cEntity.model._orgColor;
1723
+ }
1724
+ }
1725
+ }
1726
+ else if (visual instanceof Primitive) ;
1727
+ else if (visual instanceof Cesium3DTileFeature) {
1728
+ var cPrim = visual;
1729
+ cPrim.color = cPrim._orgColor;
1730
+ }
1731
+ }
1676
1732
  /**
1677
1733
  * Manages a registry of all Bruce visuals being rendered by menu items.
1678
1734
  * If multiple stuff is registered with the same entity id, only the "best" one is left visible.
@@ -1684,6 +1740,7 @@ var VisualsRegister;
1684
1740
  this.id = ObjectUtils.UId();
1685
1741
  this.rego = {};
1686
1742
  this.onUpdate = null;
1743
+ this.selectedIds = [];
1687
1744
  this.viewer = viewer;
1688
1745
  }
1689
1746
  Object.defineProperty(Register.prototype, "Id", {
@@ -1695,11 +1752,55 @@ var VisualsRegister;
1695
1752
  });
1696
1753
  Object.defineProperty(Register.prototype, "OnUpdate", {
1697
1754
  get: function () {
1755
+ if (!this.onUpdate) {
1756
+ this.onUpdate = new BruceEvent();
1757
+ }
1698
1758
  return this.onUpdate;
1699
1759
  },
1700
1760
  enumerable: false,
1701
1761
  configurable: true
1702
1762
  });
1763
+ Register.prototype.Select = function (id) {
1764
+ if (this.selectedIds.indexOf(id) === -1) {
1765
+ this.selectedIds.push(id);
1766
+ var regos = this.rego[id];
1767
+ if (regos) {
1768
+ for (var i = 0; i < regos.length; i++) {
1769
+ var rego = regos[i];
1770
+ select(rego.visual);
1771
+ }
1772
+ }
1773
+ }
1774
+ };
1775
+ Register.prototype.Deselect = function (id) {
1776
+ var index = this.selectedIds.indexOf(id);
1777
+ if (index !== -1) {
1778
+ this.selectedIds.splice(index, 1);
1779
+ var regos = this.rego[id];
1780
+ if (regos) {
1781
+ for (var i = 0; i < regos.length; i++) {
1782
+ var rego = regos[i];
1783
+ deselect(rego.visual);
1784
+ }
1785
+ }
1786
+ }
1787
+ };
1788
+ Register.prototype.IsSelected = function (id) {
1789
+ return this.selectedIds.indexOf(id) !== -1;
1790
+ };
1791
+ Register.prototype.ClearSelected = function () {
1792
+ for (var i = 0; i < this.selectedIds.length; i++) {
1793
+ var id = this.selectedIds[i];
1794
+ var regos = this.rego[id];
1795
+ if (regos) {
1796
+ for (var i_1 = 0; i_1 < regos.length; i_1++) {
1797
+ var rego = regos[i_1];
1798
+ deselect(rego.visual);
1799
+ }
1800
+ }
1801
+ }
1802
+ this.selectedIds = [];
1803
+ };
1703
1804
  Register.prototype.Add = function (rego) {
1704
1805
  var _a, _b;
1705
1806
  this.Remove(rego.entityId, rego.menuItemId, false);
@@ -1709,6 +1810,9 @@ var VisualsRegister;
1709
1810
  this.rego[entityId] = entityRegos;
1710
1811
  markEntity(this, rego, rego.visual);
1711
1812
  updateEntity(this.viewer, this.rego[entityId]);
1813
+ if (this.selectedIds.includes(entityId)) {
1814
+ select(rego.visual);
1815
+ }
1712
1816
  (_b = this.onUpdate) === null || _b === void 0 ? void 0 : _b.Trigger({ rego: rego, isAdding: true });
1713
1817
  };
1714
1818
  Register.prototype.GetVisuals = function (entityId, menuItemId) {
@@ -2633,6 +2737,9 @@ var MenuItemManager;
2633
2737
  });
2634
2738
  Object.defineProperty(Manager.prototype, "OnUpdate", {
2635
2739
  get: function () {
2740
+ if (!this.onUpdate) {
2741
+ this.onUpdate = new BruceEvent();
2742
+ }
2636
2743
  return this.onUpdate;
2637
2744
  },
2638
2745
  enumerable: false,
@@ -2652,6 +2759,9 @@ var MenuItemManager;
2652
2759
  return __generator(this, function (_c) {
2653
2760
  switch (_c.label) {
2654
2761
  case 0:
2762
+ if (this.items.find(function (x) { return x.id == item.id; })) {
2763
+ return [2 /*return*/, item.id];
2764
+ }
2655
2765
  rItem = {
2656
2766
  id: (_a = item.id) !== null && _a !== void 0 ? _a : ObjectUtils.UId(),
2657
2767
  childIds: [],
@@ -2822,25 +2932,27 @@ var RenderHelper;
2822
2932
  }
2823
2933
  RenderHelper.RenderEntities = RenderEntities;
2824
2934
  function RenderEntityTypes(manager, api, typeIds) {
2825
- var _a;
2826
2935
  return __awaiter(this, void 0, void 0, function () {
2827
- var groupItem, i, typeId, menuItem;
2828
- return __generator(this, function (_b) {
2829
- switch (_b.label) {
2936
+ var renderedItemIds, i, typeId, menuItem, itemId;
2937
+ return __generator(this, function (_a) {
2938
+ switch (_a.label) {
2830
2939
  case 0:
2831
- groupItem = {
2832
- Caption: "Rendering Entity Types",
2833
- Type: MenuItem.EType.None,
2834
- id: ObjectUtils.UId(),
2835
- Children: []
2836
- };
2837
- for (i = 0; i < typeIds.length; i++) {
2838
- typeId = typeIds[i];
2839
- menuItem = MenuItem.CreateFromTypeId(typeId, 0);
2840
- (_a = groupItem.Children) === null || _a === void 0 ? void 0 : _a.push(menuItem);
2841
- }
2842
- return [4 /*yield*/, manager.RenderItem(api, groupItem)];
2843
- case 1: return [2 /*return*/, _b.sent()];
2940
+ renderedItemIds = [];
2941
+ i = 0;
2942
+ _a.label = 1;
2943
+ case 1:
2944
+ if (!(i < typeIds.length)) return [3 /*break*/, 4];
2945
+ typeId = typeIds[i];
2946
+ menuItem = MenuItem.CreateFromTypeId(typeId, 0);
2947
+ return [4 /*yield*/, manager.RenderItem(api, menuItem)];
2948
+ case 2:
2949
+ itemId = _a.sent();
2950
+ renderedItemIds.push(itemId);
2951
+ _a.label = 3;
2952
+ case 3:
2953
+ i++;
2954
+ return [3 /*break*/, 1];
2955
+ case 4: return [2 /*return*/, renderedItemIds];
2844
2956
  }
2845
2957
  });
2846
2958
  });
@@ -2858,17 +2970,36 @@ var RenderHelper;
2858
2970
  var _a, _b, _c, _d;
2859
2971
  return __awaiter(this, void 0, void 0, function () {
2860
2972
  function traverseItems(item) {
2861
- var _a;
2862
- if (enabledItemIds.includes(item.id)) {
2863
- (_a = groupItem.Children) === null || _a === void 0 ? void 0 : _a.push(item);
2864
- }
2865
- if (item.Children) {
2866
- for (var i = 0; i < item.Children.length; i++) {
2867
- traverseItems(item.Children[i]);
2868
- }
2869
- }
2973
+ return __awaiter(this, void 0, void 0, function () {
2974
+ var itemId, i;
2975
+ return __generator(this, function (_a) {
2976
+ switch (_a.label) {
2977
+ case 0:
2978
+ if (!enabledItemIds.includes(item.id)) return [3 /*break*/, 2];
2979
+ return [4 /*yield*/, manager.RenderItem(api, item)];
2980
+ case 1:
2981
+ itemId = _a.sent();
2982
+ renderedItemIds.push(itemId);
2983
+ _a.label = 2;
2984
+ case 2:
2985
+ if (!item.Children) return [3 /*break*/, 6];
2986
+ i = 0;
2987
+ _a.label = 3;
2988
+ case 3:
2989
+ if (!(i < item.Children.length)) return [3 /*break*/, 6];
2990
+ return [4 /*yield*/, traverseItems(item.Children[i])];
2991
+ case 4:
2992
+ _a.sent();
2993
+ _a.label = 5;
2994
+ case 5:
2995
+ i++;
2996
+ return [3 /*break*/, 3];
2997
+ case 6: return [2 /*return*/];
2998
+ }
2999
+ });
3000
+ });
2870
3001
  }
2871
- var view, bookmark, items, enabledItemIds, groupItem, i;
3002
+ var view, bookmark, items, enabledItemIds, renderedItemIds, i;
2872
3003
  return __generator(this, function (_e) {
2873
3004
  switch (_e.label) {
2874
3005
  case 0: return [4 /*yield*/, ProjectView.Get(api, viewId)];
@@ -2879,41 +3010,45 @@ var RenderHelper;
2879
3010
  bookmark = _e.sent();
2880
3011
  items = (_b = (_a = view.Settings) === null || _a === void 0 ? void 0 : _a.LayersMenu) !== null && _b !== void 0 ? _b : [];
2881
3012
  enabledItemIds = (_d = (_c = bookmark.Settings) === null || _c === void 0 ? void 0 : _c.selectedItemIds) !== null && _d !== void 0 ? _d : [];
2882
- groupItem = {
2883
- Caption: "Rendering Bookmark",
2884
- Type: MenuItem.EType.None,
2885
- id: ObjectUtils.UId(),
2886
- Children: []
2887
- };
2888
- for (i = 0; i < items.length; i++) {
2889
- traverseItems(items[i]);
2890
- }
2891
- return [4 /*yield*/, manager.RenderItem(api, groupItem)];
2892
- case 3: return [2 /*return*/, _e.sent()];
3013
+ renderedItemIds = [];
3014
+ i = 0;
3015
+ _e.label = 3;
3016
+ case 3:
3017
+ if (!(i < items.length)) return [3 /*break*/, 6];
3018
+ return [4 /*yield*/, traverseItems(items[i])];
3019
+ case 4:
3020
+ _e.sent();
3021
+ _e.label = 5;
3022
+ case 5:
3023
+ i++;
3024
+ return [3 /*break*/, 3];
3025
+ case 6: return [2 /*return*/, renderedItemIds];
2893
3026
  }
2894
3027
  });
2895
3028
  });
2896
3029
  }
2897
3030
  RenderHelper.RenderBookmarkItems = RenderBookmarkItems;
2898
3031
  function RenderMenuItems(manager, api, menuItems) {
2899
- var _a;
2900
3032
  return __awaiter(this, void 0, void 0, function () {
2901
- var groupItem, i, menuItem;
2902
- return __generator(this, function (_b) {
2903
- switch (_b.label) {
3033
+ var renderedItemIds, i, menuItem, itemId;
3034
+ return __generator(this, function (_a) {
3035
+ switch (_a.label) {
2904
3036
  case 0:
2905
- groupItem = {
2906
- Caption: "Rendering Menu Items",
2907
- Type: MenuItem.EType.None,
2908
- id: ObjectUtils.UId(),
2909
- Children: []
2910
- };
2911
- for (i = 0; i < menuItems.length; i++) {
2912
- menuItem = menuItems[i];
2913
- (_a = groupItem.Children) === null || _a === void 0 ? void 0 : _a.push(menuItem);
2914
- }
2915
- return [4 /*yield*/, manager.RenderItem(api, groupItem)];
2916
- case 1: return [2 /*return*/, _b.sent()];
3037
+ renderedItemIds = [];
3038
+ i = 0;
3039
+ _a.label = 1;
3040
+ case 1:
3041
+ if (!(i < menuItems.length)) return [3 /*break*/, 4];
3042
+ menuItem = menuItems[i];
3043
+ return [4 /*yield*/, manager.RenderItem(api, menuItem)];
3044
+ case 2:
3045
+ itemId = _a.sent();
3046
+ renderedItemIds.push(itemId);
3047
+ _a.label = 3;
3048
+ case 3:
3049
+ i++;
3050
+ return [3 /*break*/, 1];
3051
+ case 4: return [2 /*return*/, renderedItemIds];
2917
3052
  }
2918
3053
  });
2919
3054
  });