Example #1
0
    private void RepopulateRoute()
    {
        // Repopulate attached nodes.
        this.nodes.ForEach(n => Destroy(n.gameObject));
        this.nodes.Clear();
        float squaredLength = 0;
        Node  previous      = null;

        foreach (Node node in this.Route.Nodes.Skip(this.NodeIndex))
        {
            NodeDisplay display = this.NewNodeDisplay(false, node);
            this.nodes.Add(display);

            if (previous == null && this.isActiveAndEnabled)
            {
                display.Select(true);
            }

            if (node.Type == NodeType.Teleport)
            {
                break;
            }

            if (previous != null)
            {
                squaredLength += (previous.Position - node.Position).sqrMagnitude;
                if (squaredLength > SquaredMaxRouteLength)
                {
                    break;
                }
            }

            previous = node;
        }

        // Update route display.
        Vector3[] positions = this.nodes.Select(n => n.transform.position).ToArray();
        this.RouteDisplay.positionCount = positions.Length;
        this.RouteDisplay.SetPositions(positions);

        // Update route display material.
        this.RouteDisplay.material = this.FollowMaterial;
        foreach (Node node in this.Route.Nodes.Take(this.NodeIndex).Reverse())
        {
            if (node.Type == NodeType.HeartWall)
            {
                break;
            }

            if (node.Type == NodeType.Heart)
            {
                this.RouteDisplay.material = this.HeartMaterial;
                break;
            }
        }

        // Repopulate detached nodes.
        this.detachedNodes.ForEach(n => Destroy(n.gameObject));
        this.detachedNodes = this.Route.DetachedNodes.Select(n => this.NewNodeDisplay(true, n)).ToList();
    }
Example #2
0
    public static NodeDisplay NewNodeDisplay(this INodeRoute nodeRoute, bool detached, Node node)
    {
        NodeDisplay display = nodeRoute.GetRouteDisplay().transform.Instantiate(nodeRoute.GetNodePrefab());

        display.SetUp(nodeRoute.UserConfig.NodeSize, detached, node);
        return(display);
    }
Example #3
0
    private void AddVisualNode(Node node, bool detached = false, int at = -1)
    {
        GameObject  gameObject = Instantiate(this.NodePrefab, this.RouteDisplay.transform);
        NodeDisplay display    = gameObject.GetComponent <NodeDisplay>();

        display.Node = node;

        display.SetMesh(detached);

        if (detached)
        {
            this.detachedNodes.Add(display);
        }
        else
        {
            if (at == -1)
            {
                this.nodes.Add(display);
            }
            else
            {
                this.nodes.Insert(at, display);
            }

            this.UpdatePath();
        }
    }
Example #4
0
    public static NodeDisplay NewNodeDisplay(this INodeRoute nr, bool detached, Node node)
    {
        NodeDisplay display = Object.Instantiate(nr.GetNodePrefab().gameObject, nr.GetRouteDisplay().transform).GetComponent <NodeDisplay>();

        display.SetUp(nr.UserConfig.NodeSize, detached, node);
        return(display);
    }
Example #5
0
    private void RepopulateRoute()
    {
        // Repopulate attached nodes.
        this.nodes.ForEach(n => Destroy(n.gameObject));
        this.nodes.Clear();
        float squaredLength = 0;
        Node  previous      = null;

        foreach (Node node in this.Route.Nodes.Skip(this.nodeIndex))
        {
            if (squaredLength > SquaredMaxRouteLength)
            {
                break;
            }

            GameObject  gameObject = (GameObject)Instantiate(this.NodePrefab, this.RouteDisplay.transform);
            NodeDisplay display    = gameObject.GetComponent <NodeDisplay>();
            display.Node = node;
            display.SetMesh(false);
            this.nodes.Add(display);

            if (node.Type == NodeType.Waypoint)
            {
                break;
            }

            if (previous == null)
            {
                display.Select(true);
            }
            else
            {
                squaredLength += (previous.Position - node.Position).sqrMagnitude;
            }
            previous = node;
        }

        // Update route display.
        this.RouteDisplay.numPositions = 0;  // TODO: Find out if this is needed.
        Vector3[] positions = this.nodes.Select(n => n.transform.position).ToArray();
        this.RouteDisplay.numPositions = positions.Length;
        this.RouteDisplay.SetPositions(positions);

        // Repopulate detached nodes.
        this.detachedNodes.ForEach(n => Destroy(n.gameObject));
        this.detachedNodes.Clear();
        foreach (Node node in this.Route.DetachedNodes)
        {
            GameObject  gameObject = (GameObject)Instantiate(this.NodePrefab, this.RouteDisplay.transform);
            NodeDisplay display    = gameObject.GetComponent <NodeDisplay>();
            display.Node = node;
            display.SetMesh(true);
            this.detachedNodes.Add(display);
        }
    }
Example #6
0
    public Node(GameObject obj, GameObjectPool doorAnchorPool, RoomInfo roomInfo)
    {
        this.nodeObject   = obj;
        this.display      = obj.GetComponent <NodeDisplay>();
        this.roomInfo     = roomInfo;
        this.neighbors    = new List <Node>();
        doorAnchorObjects = new Dictionary <DoorAnchor, GameObject>();

        foreach (DoorAnchor da in roomInfo.doorAnchors)
        {
            GameObject daObject = doorAnchorPool.DePool();
            daObject.transform.parent        = nodeObject.transform;
            daObject.transform.localPosition = da.position.normalized / 2;
            doorAnchorObjects.Add(da, daObject);
        }
    }
Example #7
0
        public static void Reset()
        {
            NodeDisplayMode   = NodeDisplay.Name;
            LinkDisplayMode   = LinkDisplay.Name;
            StreamDisplayMode = StreamDisplay.Name;
            DomainDisplayMode = DomainDisplay.Name;

            RenderNode       = true;
            RenderNodeText   = true;
            RenderLink       = true;
            RenderLinkText   = true;
            RenderStream     = true;
            RenderStreamText = true;
            RenderDomain     = true;
            RenderDomainText = true;
        }
Example #8
0
    public void enableNode()
    {
        display = nodeObject.GetComponent <NodeDisplay>();
        if (startFromNode)
        {
            display.node          = startingNode;
            display.startWithNode = true;
        }
        else
        {
            display.startingTexture = startingTexture;
            display.startingColor   = color;
            display.startWithNode   = false;
        }

        display.layerInt = layerNum;
        nodeObject.SetActive(true);
    }
Example #9
0
 public static bool canConnect(NodeDisplay display)
 {
     if (firstClicked == null)
     {
         return(true);
     }
     else if (firstClicked.node.isSame(display.node))  //click on the same node twice to cancel connection
     {
         return(true);
     }
     else if (firstClicked.layerInt != (display.layerInt - 1))
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
Example #10
0
    public static void nodeClicked(NodeDisplay display, bool isPositive)
    {
        if (firstClicked == null)
        {
            firstClicked = display;
            GameObject        cObj = Instantiate(staticPrefab);
            ConnectionDisplay line = cObj.GetComponent <ConnectionDisplay>();
            line.startingNode = display;
            connections.Add(line);
        }
        else
        {
            ConnectionDisplay line = connections[connections.Count - 1];

            if (firstClicked.node.isSame(display.node))
            {
                removeConnection(line);
                Destroy(line.gameObject);
                firstClicked.unconnect();
                display.unconnect();
            }
            else if (firstClicked.layerInt != (display.layerInt - 1))
            {
                removeConnection(line);
                Destroy(line.gameObject);
                firstClicked.unconnect();
                display.unconnect();
            }
            else
            {
                line.isPositive = isPositive;
                line.endingNode = display;
                display.updateNode();
                //firstClicked.showConnected();
                //display.showConnected();
            }
            firstClicked = null;
        }
    }
Example #11
0
    private void AddVisualNode(Node node, bool detached = false, int at = -1)
    {
        NodeDisplay display = this.NewNodeDisplay(detached, node);

        if (detached)
        {
            this.detachedNodes.Add(display);
        }
        else
        {
            if (at == -1)
            {
                this.nodes.Add(display);
            }
            else
            {
                this.nodes.Insert(at, display);
            }

            this.UpdatePath();
        }
    }
Example #12
0
 // Start is called before the first frame update
 void Start()
 {
     //nodeObject.SetActive(false);
     display = nodeObject.GetComponent <NodeDisplay>();
 }
Example #13
0
 public Node(GameObject obj)
 {
     this.nodeObject = obj;
     this.display    = obj.GetComponent <NodeDisplay>();
     this.neighbors  = new List <Node>();
 }
Example #14
0
 /// <summary>
 /// change the node and position of a nodeDisplay to a node at the given index
 /// </summary>
 /// <param name="display"></param> NodeDisplay to modify
 /// <param name="index"></param> index of node to change display to
 public void setUpNodeDisplay(NodeDisplay display, int index)
 {
     display.changeNode(get_ith_node(index));
     display.setPosition(get_ith_position(index));
 }
Example #15
0
    void Update()
    {
        //Debug.DrawRay(cam.transform.position, cam.transform.TransformDirection(Vector3.forward), Color.red);
        RaycastHit hit;

        if (Physics.Raycast(cam.transform.position, cam.transform.TransformDirection(Vector3.forward), out hit, range))
        {
            if (hit.collider.tag == "Node")
            {
                if (nodeEssence != null)
                {
                    info.SetActive(false);
                }
                nodeEssence = hit.collider.gameObject.GetComponent <NodeEssence>();

                info = nodeEssence.info;
                info.SetActive(true);

                if (onScan) //IF SCANNING
                {
                    //Debug.Log("gets scanned");
                    if (time <= 0)
                    {
                        //Debug.Log("timer is 0");
                        time = drainPower;
                        for (int i = 0; i < nodeEssence.nodeEssenceObjects.Length; i++)
                        {
                            nodeDisplay = nodeEssence.nodeEssenceObjects[i].GetComponent <NodeDisplay>();

                            if (!OneTimeRun)
                            {
                                OneTimeRun      = true;
                                essencesScanned = new Essence[nodeEssence.nodeEssenceObjects.Length];
                                essencesAmount  = new int[nodeEssence.nodeEssenceObjects.Length];
                                for (int j = 0; j < essencesScanned.Length; j++)
                                {
                                    bool gotten = true;
                                    for (int k = 0; k < knownEssences.knownEssences.Length; k++)
                                    {
                                        if (nodeEssence.nodeEssences[j] == knownEssences.knownEssences[k])
                                        {
                                            gotten = true;
                                            Debug.Log("GET IT");
                                            break;
                                        }
                                        else
                                        {
                                            gotten = false;
                                        }
                                    }
                                    if (!gotten)
                                    {
                                        Essence[] temp = new Essence[knownEssences.knownEssences.Length + 1];
                                        knownEssences.knownEssences.CopyTo(temp, 0);
                                        knownEssences.knownEssences = temp;

                                        knownEssences.knownEssences[knownEssences.knownEssences.Length - 1] = nodeEssence.nodeEssences[j];
                                    }
                                }
                            }

                            if (nodeDisplay.amount > 0)
                            {
                                essencesScanned[i]  = nodeDisplay.nodeEssence;
                                nodeDisplay.amount -= 1;
                                nodeDisplay.UpdateAmount();
                                essencesAmount[i] += 1;
                                nodeEssence.nodeEssences[i].amount += 1;
                                mobileInput.Vibrate();
                            }
                            Debug.Log(essencesScanned[i] + " " + essencesAmount[i].ToString()); //INFO OUTPUT essence + amount
                        }
                    }
                    else
                    {
                        //Debug.Log("timer goes down");
                        time -= Time.deltaTime;
                    }
                }
            }
            else
            {
                //if its not a node
                if (nodeEssence != null)
                {
                    info.SetActive(false);
                }
            }
        }
        else
        {
            if (nodeEssence != null)
            {
                info.SetActive(false);
            }

            if (OneTimeRun)
            {
                OneTimeRun = false; //resets
            }
        }
    }