public IEnumerator LoadDimExplorer(List <Tag> nodes) { dimensionExpLorerLoaded = false; // clear any current children (must be in coroutine to ensure children are destroyed first yield return(StartCoroutine(ClearDimExplorer())); // create dimension explorer button groupings float dimExGrpPos = 0; float dimExFamilySpaing = 0.5f; float dimExGrpSpacing = 0.2f; foreach (var node in nodes) { // create gameobject group for parent GameObject dimExpGrpParent = new GameObject("DimExpGrpParent"); dimExpGrpParent.transform.parent = transform; dimExpGrpParent.transform.localPosition = new Vector3(dimExGrpPos, 0, 0); dimExpGrpParent.transform.localRotation = Quaternion.identity; dimExGrpPos += dimExGrpSpacing; // create gameobject group for siblings GameObject dimExpSiblings = new GameObject("DimExpGrpSiblings"); dimExpSiblings.transform.parent = transform; dimExpSiblings.transform.localPosition = new Vector3(dimExGrpPos, 0, 0); dimExpSiblings.transform.localRotation = Quaternion.identity; dimExGrpPos += dimExGrpSpacing; // create gameobject group for children GameObject dimExpChildren = new GameObject("DimExpGrpChildren"); dimExpChildren.transform.parent = transform; dimExpChildren.transform.localRotation = Quaternion.identity; dimExpChildren.transform.localPosition = new Vector3(dimExGrpPos, 0, 0); dimExGrpPos += dimExGrpSpacing; // assign tag's parent info ViRMA_DimExplorerGroup dimExpGrpParentGrp = dimExpGrpParent.AddComponent <ViRMA_DimExplorerGroup>(); dimExpGrpParentGrp.tagsInGroup = new List <Tag>() { node.Parent }; dimExpGrpParentGrp.parentDimExGrp = dimExpGrpParent; dimExpGrpParentGrp.siblingsDimExGrp = dimExpSiblings; dimExpGrpParentGrp.childrenDimExGrp = dimExpChildren; // assign tag and siblings info ViRMA_DimExplorerGroup dimExpSiblingsGrp = dimExpSiblings.AddComponent <ViRMA_DimExplorerGroup>(); dimExpSiblingsGrp.tagsInGroup = node.Siblings; dimExpSiblingsGrp.searchedForTagData = node; dimExpSiblingsGrp.parentDimExGrp = dimExpGrpParent; dimExpSiblingsGrp.siblingsDimExGrp = dimExpSiblings; dimExpSiblingsGrp.childrenDimExGrp = dimExpChildren; // assign tag's children info ViRMA_DimExplorerGroup dimExpChildrenGrp = dimExpChildren.AddComponent <ViRMA_DimExplorerGroup>(); dimExpChildrenGrp.tagsInGroup = node.Children; dimExpChildrenGrp.parentDimExGrp = dimExpGrpParent; dimExpChildrenGrp.siblingsDimExGrp = dimExpSiblings; dimExpChildrenGrp.childrenDimExGrp = dimExpChildren; //dimExGrpPos += 1; dimExGrpPos = dimExGrpPos + dimExFamilySpaing; } verticalRigidbodies.Clear(); foreach (Transform dimExGrp in transform) { verticalRigidbodies.Add(dimExGrp.GetComponent <Rigidbody>()); } // wait a second for DimExGroups to finish loading so AABB is calculated correctly yield return(new WaitForSeconds(1)); DimExgroupSpacingAdjustment(); CalculateBounds(); PositionDimExplorer(); dimensionExpLorerLoaded = true; dimExKeyboard.dimExQueryLoading = false; }
private void Start() { parentDimExGrp = transform.parent.GetComponent <ViRMA_DimExplorerGroup>(); }
private IEnumerator GetTraversedHierarchyNodes(Tag submittedTagData) { dimensionExpLorerLoaded = false; // assign parent groupings GameObject parentGroupObj = hoveredTagBtn.transform.parent.GetComponent <ViRMA_DimExplorerGroup>().parentDimExGrp; ViRMA_DimExplorerGroup parentGroup = parentGroupObj.GetComponent <ViRMA_DimExplorerGroup>(); Tag parentTagData = new Tag(); // assign children groupings GameObject childrenGroupObj = hoveredTagBtn.transform.parent.GetComponent <ViRMA_DimExplorerGroup>().childrenDimExGrp; ViRMA_DimExplorerGroup childrenGroup = childrenGroupObj.GetComponent <ViRMA_DimExplorerGroup>(); List <Tag> childrenTagData = new List <Tag>(); // assign siblings groupings GameObject siblingsGroupObj = hoveredTagBtn.transform.parent.GetComponent <ViRMA_DimExplorerGroup>().siblingsDimExGrp; ViRMA_DimExplorerGroup siblingsGroup = siblingsGroupObj.GetComponent <ViRMA_DimExplorerGroup>(); List <Tag> siblingsTagData = new List <Tag>(); // fetch and wait for parent data yield return(StartCoroutine(ViRMA_APIController.GetHierarchyParent(submittedTagData.Id, (response) => { parentTagData = response; }))); // fetch and wait for children data yield return(StartCoroutine(ViRMA_APIController.GetHierarchyChildren(submittedTagData.Id, (response) => { childrenTagData = response; }))); // fetch and wait for sibling data if (parentTagData.Id == 0) { // if the parent id is zero, it means we're at the top of hierarchy so replace normal siblings with previous parent instead yield return(StartCoroutine(ViRMA_APIController.GetHierarchyParent(childrenTagData[0].Id, (response) => { siblingsTagData = new List <Tag>() { response }; }))); } else { // if parent isn't zero, then just get the normal siblings like always yield return(StartCoroutine(ViRMA_APIController.GetHierarchyChildren(parentTagData.Id, (response) => { siblingsTagData = response; }))); } // reload parent dim ex group if (parentTagData.Label == null) { parentGroup.ClearDimExplorerGroup(); } else { parentGroup.tagsInGroup = new List <Tag>() { parentTagData }; StartCoroutine(parentGroup.LoadDimExplorerGroup()); } // reload childen dim ex grouo if (childrenTagData.Count < 1) { childrenGroup.ClearDimExplorerGroup(); } else { childrenGroup.tagsInGroup = childrenTagData; StartCoroutine(childrenGroup.LoadDimExplorerGroup()); } // reload sibling dim ex grouo if (siblingsTagData.Count < 1) { siblingsGroup.ClearDimExplorerGroup(); } else { siblingsGroup.searchedForTagData = submittedTagData; siblingsGroup.tagsInGroup = siblingsTagData; StartCoroutine(siblingsGroup.LoadDimExplorerGroup()); } dimensionExpLorerLoaded = true; }