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(); }
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); }
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(); } }
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); }
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); } }
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); } }
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; }
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); }
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); } }
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; } }
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(); } }
// Start is called before the first frame update void Start() { //nodeObject.SetActive(false); display = nodeObject.GetComponent <NodeDisplay>(); }
public Node(GameObject obj) { this.nodeObject = obj; this.display = obj.GetComponent <NodeDisplay>(); this.neighbors = new List <Node>(); }
/// <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)); }
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 } } }