コード例 #1
0
    // Computation of the absolute x and z coordinates for each node
    private void SecondWalk(GenericOperator nodeN, float x, float z, float l, float t)
    {
        IconProperties np  = nodeN.GetIcon().GetComponent <IconProperties>();
        Vector3        pos = new Vector3(x, 2, z);

        l = np.depth / (np.depth + 1);

        nodeN.GetIcon().transform.position = pos;
        float dd        = l * np.d;
        float p         = t + Mathf.PI;
        float freeSpace = (nodeN.Children.Count == 0 ? 0 : np.f / (nodeN.Children.Count + 1));
        float previous  = 0;

        foreach (var child in nodeN.Children)
        {
            IconProperties cp = child.GetIcon().GetComponent <IconProperties>();
            float          aa = np.c * cp.a;
            float          rr = np.d * Mathf.Tan(aa) / (1 - Mathf.Tan(aa));
            p += previous + aa + freeSpace;
            float xx = (l * rr + dd) * Mathf.Cos(p);
            float zz = (l * rr + dd) * Mathf.Sin(p);
            previous = aa;
            SecondWalk(child, x + xx, z + zz, l * np.c, p);
        }
    }
コード例 #2
0
    private void drawConnectionToChildren(GenericOperator go)
    {
        if (go.Children == null || go.Children.Count == 0)
        {
            return;
        }
        foreach (GenericOperator child in go.Children)
        {
            if (go.GetIcon() == null || child == null || child.GetIcon() == null)
            {
                continue;
            }

            GameObject   line         = new GameObject();
            LineRenderer lineRenderer = line.AddComponent <LineRenderer>();
            lineRenderer.SetWidth(0.01f, 0.01f);

            lineRenderer.SetPositions(new Vector3[] {
                go.GetIcon().transform.position + new Vector3(0, 0, 0.001f), child.GetIcon().transform.position + new Vector3(0, 0, 0.001f)
            });
            line.transform.parent         = Container.transform;
            lineRenderer.transform.parent = Container.transform;
            graphEdges.Add(line);
        }
    }
コード例 #3
0
        public void displayOptions()
        {
            optionIconPrefabs = new List <GenericIcon>();
            lines             = new List <GameObject>();
            var prefabs = GetOperator().Observer.GetOperatorPrefabs();

            operatorPrefabs = new List <GameObject>();

            foreach (GameObject prefab in prefabs)
            {
                //first validate if the respective prefab can be used with the current parent
                if (prefab.GetComponent <GenericOperator>().ValidateIfOperatorPossibleForParents(ClickedOp))
                {
                    optionIconPrefabs.Add(prefab.GetComponent <GenericOperator>().GetComponentInChildren <GenericIcon>());
                    operatorPrefabs.Add(prefab);
                }
            }

            optionIcons = new List <GenericIcon>();
            foreach (GenericIcon optionIcon in optionIconPrefabs)
            {
                GenericIcon  instance = GameObject.Instantiate(optionIcon);
                Targetable[] scripts  = instance.GetComponentsInChildren <Targetable>();
                foreach (Targetable script in scripts)
                {
                    Destroy(script);
                }

                instance.transform.parent     = ClickedOp.GetIcon().transform.parent;
                instance.transform.localScale = ClickedOp.GetIcon().transform.localScale;
                instance.transform.position   = getSpawnPositionOffsetForButton(ClickedOp.GetIcon().transform, optionIcons.Count, optionIconPrefabs.Count);

                foreach (Transform child in instance.gameObject.GetComponentsInChildren <Transform>())
                {
                    child.gameObject.AddComponent <NewIconInteractionButton>();
                    child.gameObject.GetComponent <NewIconInteractionButton>().controller = this;
                    child.gameObject.GetComponent <NewIconInteractionButton>().id         = optionIcons.Count;
                }

                optionIcons.Add(instance);

                // add lines between the icons
                GameObject   line         = new GameObject();
                LineRenderer lineRenderer = line.AddComponent <LineRenderer>();
                lineRenderer.SetWidth(0.01f, 0.01f);
                lineRenderer.SetPositions(new Vector3[] {
                    GetOperator().GetIcon().transform.position + new Vector3(0, 0, 0.001f), instance.transform.position + new Vector3(0, 0, 0.001f)
                });

                lines.Add(line);
            }
            optionsDisplayed = true;
        }
コード例 #4
0
    public void moveToSpawnPosition(GenericOperator op)
    {
        if (op.GetType().Equals((typeof(NewOperator))) && op.Parents != null)
        {
            op.GetIcon().transform.position = op.Parents[0].GetIcon().transform.position + new Vector3(1, 0, 0);
        }

        if (op.Parents != null && op.Parents.Count > 0 && op.Parents[0].Children != null)
        {
            op.GetIcon().transform.position += new Vector3(0, (op.Parents[0].Children.Count - 1) * 0.3f, 0);
        }
    }
コード例 #5
0
    IEnumerator SetIconLocation(GenericOperator op, Vector3 position)
    {
        yield return(0);

        op.GetIcon().transform.position = position;
        op.Fetchdata();
        op.Process();
    }
コード例 #6
0
 // Update is called once per frame
 void Update()
 {
     if (runConeTree)
     {
         root        = observer.GetOperators()[0];
         _anchor     = root.GetIcon().transform.position;
         runConeTree = false;
         Layout(root, _anchor.x, _anchor.z);
     }
 }
コード例 #7
0
 public void moveNewIconAndDestroyOperator(GenericOperator genericOperator)
 {
     if (spawnedPrefab.GetComponent <GenericOperator>() == genericOperator) //genericOperator.GetType().Equals((typeof(NewOperator))) &&
     {
         genericOperator.GetIcon().gameObject.transform.localPosition =
             GetOperator().GetIcon().transform.localPosition;
         GetOperator().Observer.NewOperatorInitializedAndRunnningEvent -= moveNewIconAndDestroyOperator;
         GetOperator().Observer.DestroyOperator(GetOperator());
     }
 }
コード例 #8
0
    /* Bottom up proceeding, computing value for distances
     * possibly computing scaling factor for children and
     * computing radius of circles
     */
    private void FirstWalk(GenericOperator node)
    {
        IconProperties np = node.GetIcon().GetComponent <IconProperties>();

        np.d = 0;
        float s = 0;

        foreach (var child in node.Children)
        {
            FirstWalk(child);
            IconProperties cp = child.GetIcon().GetComponent <IconProperties>();
            np.d = Mathf.Max(np.d, cp.r);
            cp.a = Mathf.Atan(cp.r / (np.d + cp.r));
            s   += cp.a;
        }
        AdjustChildren(np, s);
        SetRadius(np);
    }
コード例 #9
0
 public void InstallNewIcon(GenericOperator op)
 {
     op.GetIcon().gameObject.transform.parent = GameObject.Find("ControlWall").transform;
     op.GetIcon().gameObject.transform.localPosition = new Vector3(-0.4f, 0, 0);
     op.GetIcon().gameObject.transform.localScale = _scale;
 }
コード例 #10
0
 private void ApplyForce(GenericOperator op, Vector3 force)
 {
     op.GetIcon().GetComponent <IconProperties>().ApplyForce(force);
 }