123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- export class Tools {
- public static LookForItem(item: any, selectedEntity: any): boolean {
- if (item === selectedEntity) {
- return true;
- }
- const children = item.getChildren ? item.getChildren() : item.children;
- if (children) {
- for (var child of children) {
- if (Tools.LookForItem(child, selectedEntity)) {
- return true;
- }
- }
- }
- return false;
- }
- private static _RecursiveRemoveHiddenMeshesAndHoistChildren(items: Array<any>) {
- let result: Array<any> = [];
- for (let i of items) {
- // If the mesh is hidden, add it's children that are not hidden, this will handle the case of bounding box parenting for bounding box gizmo
- if (i.reservedDataStore && i.reservedDataStore.hidden && i.getChildMeshes) {
- Tools._RecursiveRemoveHiddenMeshesAndHoistChildren(i.getChildMeshes()).forEach((m) => {
- result.push(m);
- });
- } else {
- result.push(i);
- }
- }
- return result;
- }
- public static SortAndFilter(parent: any, items: any[]): any[] {
- if (!items) {
- return [];
- }
- const finalArray = Tools._RecursiveRemoveHiddenMeshesAndHoistChildren(items);
- if (parent && parent.reservedDataStore && parent.reservedDataStore.detachedChildren) {
- finalArray.push(...parent.reservedDataStore.detachedChildren);
- }
- return finalArray.sort((a: any, b: any) => {
- const lowerCaseA = (a.name || "").toLowerCase();
- const lowerCaseB = (b.name || "").toLowerCase();
- if (lowerCaseA === lowerCaseB) {
- return 0;
- }
- if (lowerCaseA > lowerCaseB) {
- return 1;
- }
- return -1;
- });
- }
- }
|