Ejemplo n.º 1
0
    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;
    }
Ejemplo n.º 2
0
 private void Start()
 {
     parentDimExGrp = transform.parent.GetComponent <ViRMA_DimExplorerGroup>();
 }
Ejemplo n.º 3
0
    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;
    }