private void makePath(GameObject PathGameObject, Graph g, List <string> path) { // Generate Node Elements for path GameObject NodeGameObject = PathGameObject.transform.GetChild(0).gameObject; bool isFirst = true; Vector3 nodePos; //UnityEngine.Debug.Log("Size: " + path.Count); foreach (string nodeID in path) { Graph.Node node = g.nodeIdNodeDict[nodeID]; Vector2d xy = world.toXY(node.lat, node.lon); nodePos = new Vector3((float)xy[0], 0.71f, (float)xy[1]); if (isFirst) { NodeGameObject.transform.position = (nodePos); isFirst = false; } else { GameObject childObject = Instantiate(NodeGameObject) as GameObject; childObject.transform.position = (nodePos); childObject.transform.SetParent(PathGameObject.transform); } } }
void Start() { Graph upperTerrain = new Graph(xNumOfNodes, zNumOfNodes); //models the part of terrain where we are going to generate an unicursal path. Stack <Graph.Node> path = upperTerrain.makeUnicursal(xNumOfNodes / 2, 0, xNumOfNodes / 2, zNumOfNodes - 1); //make a path that starts and end at middle in x-direction numberOfAvailableNodeTiles = path.Count; desiredProjectileSourceProba = (8f / path.Count) * 1.25f; //we want at least 8 projectile sources to appear, so the probability should be a bit over 8/totalTiles. Vector3 prevTilePos = new Vector3(0, 0, 0); //needed to paint the link tile between two nodes Boolean firstPass = true; while (path.Count > 0) //visit the nodes in the path stack one by one { Graph.Node cur = path.Pop(); //pop the top node Vector3 currentPosition = paintNode(cur); //paint it in the terrain if (firstPass) { firstPass = false; } else { paintEdge(prevTilePos, currentPosition); //paint the link between the previous and current node } prevTilePos = currentPosition; } projectileSourceController.GetComponent <ProjectileSourceCtrl>().setTotalNumberOfProjSourceUncollected(numOfProjectileSourceCreated); //let the projectile source controller know about the total number of projectile sources that we have created. }
// Update is called once per frame void Update() { float distToPlayer = Vector3.Distance(transform.position, player.transform.position); if (alert || distToPlayer < chaseRadius) { transform.LookAt(player.transform.position); transform.position = Vector3.MoveTowards(transform.position, player.transform.position, chaseSpeed * Time.deltaTime); if (distToPlayer < fireRange && loaded) { StartCoroutine(Fire()); } } else { transform.LookAt(target.m_position); transform.position = Vector3.MoveTowards(transform.position, target.m_position, patrolSpeed * Time.deltaTime); float distToTarget = Vector3.Distance(transform.position, target.m_position); if (distToTarget < 1.0f) { target = target.m_nextNode; } } //SceneMode allows you to view each patrolbot's route in it's own specific colour foreach (Graph.Node node in route.GetRoute()) { Debug.DrawLine(node.m_position, node.m_nextNode.m_position, color); } }
static void TestGraph() { var graph = new Graph <int>(); var node0 = new Graph.Node <int>(0); var node1 = new Graph.Node <int>(1); var node2 = new Graph.Node <int>(2); var node3 = new Graph.Node <int>(3); var node4 = new Graph.Node <int>(4); var node5 = new Graph.Node <int>(5); node0.AddEdge(node1); node1.AddEdge(node3); node1.AddEdge(node2); node5.AddEdge(node4); node2.AddEdge(node5); graph.AddNode(node0); graph.AddNode(node1); graph.AddNode(node2); graph.AddNode(node3); graph.AddNode(node4); graph.AddNode(node5); graph.BFS(node1); Console.WriteLine(); graph.DFS(node1); //Console.WriteLine("Before removing node 1: "); //Console.WriteLine(graph.ToString()); //graph.RemoveNode(node1); //Console.WriteLine("--------------------"); //Console.WriteLine("After removing node 1: "); //Console.WriteLine(graph.ToString()); }
void Traverse(Graph.Node node) { // Visit the node visitedVertices.Add(node); // Fisher-Yates Shuffle to randomize edge indices, this approach allows easy looping recursion with randomization // Can handle almost 5 times as many vertices as a non-looped recursion! Shuffle(node.Edges); foreach (Graph.Edge edge in node.Edges) { // If either node on the edge is unvisited, then Traverse to it. Otherwise fall through and return to previous recursive layer if (!visitedVertices.Contains(edge.Node_f) || !visitedVertices.Contains(edge.Node_s)) { // When generating at runtime, use Destroy(). When generating in EditMode use DestroyImmediate() if (Application.isPlaying) { Object.Destroy(edge.Wall); edge.Wall = null; } else { Object.DestroyImmediate(edge.Wall); edge.Wall = null; } // Ternary Conditional operator to pass the unvisited node Traverse(visitedVertices.Contains(edge.Node_s) ? edge.Node_f : edge.Node_s); } } }
public ArrayList[] getGraphPaths(int citiesNumber, int pathsCount, ArrayList[] list) { string[] lineSplit; int source = 0; int dest = 0; int count = 0; int pathLength = 0; for (int i = 0; i < pathsCount; i++) { lineSplit = fileStream.ReadLine().Split(' '); source = int.Parse(lineSplit[0]); dest = int.Parse(lineSplit[1]); pathLength = int.Parse(lineSplit[2]); Node n = new Node((dest - 1), pathLength); Node n1 = new Graph.Node((source - 1), pathLength); if (pathLength < 0) { throw new Exception("Distance can`t be less than 0"); } else { list[source - 1].Add(n); list[dest - 1].Add(n1); count++; } } return(list); }
/// <summary> /// Generates a new path for the player based on the path provided /// If it is a new round then all AI car paths will be reset too /// </summary> /// <param name="path">List of all node IDs for the player to use as a path</param> /// <param name="newRound">Boolean indicating whether the path is being made for a new round</param> /// <param name="newCurrentNode">Integer indicating which is the next current node (used for changing existing paths)</param> public void makePath(List <string> path, bool newRound = true, int newCurrentNode = 0) { // Generate Node Elements for path GameObject NodeGameObject = PathGameObject.transform.GetChild(0).gameObject; bool isFirst = true; Vector3 nodePos; foreach (string nodeID in path) { Graph.Node node = g.nodeIdNodeDict[nodeID]; Vector2d xy = world.toXY(node.lat, node.lon); nodePos = new Vector3((float)xy[0], 0.71f, (float)xy[1]); if (isFirst) { NodeGameObject.transform.position = (nodePos); isFirst = false; } else { GameObject childObject = Instantiate(NodeGameObject) as GameObject; childObject.transform.position = (nodePos); childObject.transform.SetParent(PathGameObject.transform); } } av = GetComponentInChildren <AVController>(); av.setPath(path); av.currentNode = newCurrentNode; av.resetPaths(newRound); av.setOneWayRoads(path); }
/// <summary> /// Create list of one way roads, with index matching up with currentNode travelling towards /// </summary> /// <param name="pathNodes">List of all nodes on the car's path</param> /// <returns>Whether the next road is oneway</returns> public Vector3 setOneWayRoads(List <string> pathNodes) { oneWays = new List <bool>(); oneWays.Add(false); // travelling to node 0, shouldnt occur for (int i = 1; i < pathNodes.Count; i++) { String currNode = pathNodes[i]; String prevNode = pathNodes[i - 1]; Graph.Node n = g.nodeIdNodeDict[prevNode]; List <Graph.Node.Neighbour> neighbours = n.neighbours; // check if the path from prevNode to currNode is one way foreach (Graph.Node.Neighbour neighbour in neighbours) { if (neighbour.neighbourId == currNode) { oneWays.Add(neighbour.isOneWay); break; } } } if (oneWays[1]) { return(new Vector3(0, 0, 0)); } else { drivingOffset = leftSideOffset; return(new Vector3(-drivingOffset, 0, 0)); } }
void GeneratePillarFill() { int xJunctions = (int)(l.graphScale.x - l.cellSize * 2) / 2; int zJunctions = (int)(l.graphScale.z - l.cellSize * 2) / 2; for (int x = -xJunctions; x <= xJunctions; x += (int)l.cellSize) { for (int z = -zJunctions; z <= zJunctions; z += (int)l.cellSize) { GameObject pillar = Object.Instantiate(l.wall, labyrinth.transform); pillar.transform.localPosition = new Vector3(x, l.cellSize / 2, z); pillar.transform.localScale = new Vector3(wallThickness, l.cellSize * wallYScale, wallThickness); pillar.transform.rotation = Quaternion.identity; AddFillerPillar(pillar); } } void AddFillerPillar(GameObject pillarObj) { Filler_Pillar pillar = new Filler_Pillar(pillarObj); Graph.Node root = l.Graph.Nodes.Find(n => n.CellCenter == new Vector3(pillarObj.transform.position.x - l.cellSize / 2, pillarObj.transform.position.y - l.cellSize / 2, pillarObj.transform.position.z - l.cellSize / 2)); pillar.PopulateEdges(l.Graph.GetRectEdges(root, 2, 2, l.cellSize)); l.fillerPillars.Add(pillar); } }
/// <summary> /// Gets the priority of the next segment of road where vehicles on lower priority roads will need to give way to vehicles on higher priority roads /// /// lowest prioirty /// 1 - one way E-W /// 2 - one way N-S /// 3 - two way E-W /// 4 - two way N-S /// </summary> /// <returns>The priority of the next segment of road to travel</returns> private void getBearingAndPriority() { if (currentNode >= pathList.Count - 2 || currentNode == 0) { roadPriority = 5; return; } Graph.Node currNode = g.nodeIdNodeDict[pathList[currentNode]]; Graph.Node prevNode = g.nodeIdNodeDict[pathList[currentNode - 1]]; double startLat = prevNode.lat; double startLon = prevNode.lon; double endLat = currNode.lat; double endLon = currNode.lon; startLat = startLat * Math.PI / 180; startLon = startLon * Math.PI / 180; endLat = endLat * Math.PI / 180; endLon = endLon * Math.PI / 180; double x = Math.Sin(endLon - startLon) * Math.Cos(endLat); double y = Math.Cos(startLat) * Math.Sin(endLat) - Math.Sin(startLat) * Math.Cos(endLat) * Math.Cos(endLat - startLat); double theta = Math.Atan2(y, x); double brng = (theta * 180 / Math.PI + 360) % 360; if (brng == 0) { brng = 360; } if (brng >= 315 || brng < 45) { currentBearing = bearing.north; } else if (brng >= 45 && brng < 135) { currentBearing = bearing.east; } else if (brng >= 135 && brng < 225) { currentBearing = bearing.south; } else { currentBearing = bearing.west; } bool isOneWay = onOneWay(); if (currentBearing == bearing.east || currentBearing == bearing.west) { roadPriority = isOneWay ? 1 : 3; } else { roadPriority = isOneWay ? 2 : 5; } }
public void Begin(Graph.Node graph) { if (Ongoing) { return; } from = graph; }
public IEnumerator getGraphFromNode(string title) { Debug.Log("reached getGraphFromNode"); yield return(StartCoroutine(parseContentFromHTML(title))); Graph graph = new Graph(); Graph.Information info = new Graph.Information(title); Graph.Node firstNode = new Graph.Node(info); firstNode.setPosition(0.0f, 0.0f, 0.0f); graph.addNode(firstNode); //we assume that we don't go deeper here. //another approach would be to go the same route as Coroutine "getGraph" //we use this approach here because it's easier to implement and unterstand //plus the depth is unlikely to go deeper if (activeNode.getSubchapters() != null) { foreach (Graph.Information.Chapter subChapter in activeNode.getSubchapters()) { Graph.Information neighborInfo = new Graph.Information(subChapter.getTitle()); Graph.Node nextNode = new Graph.Node(neighborInfo); nextNode.setPosition(Random.Range(-DEFAULT_WIDTH / 2, DEFAULT_WIDTH / 2), Random.Range(-DEFAULT_HEIGHT / 2, DEFAULT_HEIGHT / 2), Random.Range(-DEFAULT_LENGTH / 2, DEFAULT_LENGTH / 2)); Graph.Edge nextedge = new Graph.Edge(firstNode, nextNode); graph.addNode(nextNode); graph.addEdge(nextedge); if (subChapter.getSubchapters() != null) { foreach (Graph.Information.Chapter subSubChapter in subChapter.getSubchapters()) { Graph.Information subNeighborInfo = new Graph.Information(subSubChapter.getTitle()); Graph.Node subNextNode = new Graph.Node(subNeighborInfo); subNextNode.setPosition(Random.Range(-DEFAULT_WIDTH / 2, DEFAULT_WIDTH / 2), Random.Range(-DEFAULT_HEIGHT / 2, DEFAULT_HEIGHT / 2), Random.Range(-DEFAULT_LENGTH / 2, DEFAULT_LENGTH / 2)); Graph.Edge subNextedge = new Graph.Edge(nextNode, subNextNode); graph.addNode(subNextNode); graph.addEdge(subNextedge); if (subSubChapter.getSubchapters() != null) { foreach (Graph.Information.Chapter subSubSubChapter in subChapter.getSubchapters()) { Graph.Information subSubNeighborInfo = new Graph.Information(subSubChapter.getTitle()); Graph.Node subSubNextNode = new Graph.Node(subSubNeighborInfo); subSubNextNode.setPosition(Random.Range(-DEFAULT_WIDTH / 2, DEFAULT_WIDTH / 2), Random.Range(-DEFAULT_HEIGHT / 2, DEFAULT_HEIGHT / 2), Random.Range(-DEFAULT_LENGTH / 2, DEFAULT_LENGTH / 2)); Graph.Edge subSubNextedge = new Graph.Edge(subNextNode, subSubNextNode); graph.addNode(subSubNextNode); graph.addEdge(subSubNextedge); } } } } } } setGraph(graph, 100.0f, 100.0f, 100.0f); drawGraph(); }
private Dictionary <string, Graph.Node> CreateGraph() { Graph.Node nodeA = new Graph.Node(); Graph.Node nodeB = new Graph.Node(); Graph.Node nodeC = new Graph.Node(); Graph.Node nodeD = new Graph.Node(); Graph.Node nodeE = new Graph.Node(); Graph.Node nodeF = new Graph.Node(); Graph.Node nodeG = new Graph.Node(); Graph.Node nodeH = new Graph.Node(); Graph.Node nodeI = new Graph.Node(); Graph.Node nodeJ = new Graph.Node(); Graph.Node nodeK = new Graph.Node(); nodeA.AddNeighbor(6, nodeB); nodeA.AddNeighbor(2, nodeC); nodeA.AddNeighbor(7, nodeJ); nodeB.AddNeighbor(6, nodeA); nodeB.AddNeighbor(1, nodeD); nodeB.AddNeighbor(4, nodeE); nodeC.AddNeighbor(2, nodeA); nodeC.AddNeighbor(8, nodeE); nodeC.AddNeighbor(5, nodeH); nodeD.AddNeighbor(1, nodeB); nodeD.AddNeighbor(7, nodeE); nodeD.AddNeighbor(3, nodeF); nodeE.AddNeighbor(4, nodeB); nodeE.AddNeighbor(8, nodeC); nodeE.AddNeighbor(7, nodeD); nodeE.AddNeighbor(5, nodeH); nodeE.AddNeighbor(9, nodeG); nodeF.AddNeighbor(3, nodeD); nodeG.AddNeighbor(9, nodeE); nodeG.AddNeighbor(6, nodeH); nodeH.AddNeighbor(4, nodeJ); nodeH.AddNeighbor(5, nodeC); nodeH.AddNeighbor(6, nodeG); nodeH.AddNeighbor(5, nodeE); nodeH.AddNeighbor(7, nodeI); nodeI.AddNeighbor(7, nodeH); nodeJ.AddNeighbor(4, nodeH); nodeJ.AddNeighbor(7, nodeA); return(new Dictionary <string, Graph.Node>() { { "a", nodeA }, { "b", nodeB }, { "c", nodeC }, { "d", nodeD }, { "e", nodeE }, { "f", nodeF }, { "g", nodeG }, { "h", nodeH }, { "i", nodeI }, { "j", nodeJ }, { "k", nodeK } }); }
public Vector2 ExitToWorldPos(Graph.Node exit) { if (exit == null) { return(Vector2.one * -1); } Graph.Node parent = Rooms.FindNodeByValue(exit.value); return(parent.pos + exit.pos.Clamp01() * parent.size); }
private void DrawExit(Graph.Node exit, Color color) { Vector2 p = ExitToScreenPos(exit), s = ScreenSize(exit.size); bool isConnectFrom = exit.Equals(connectExits.from); EditorGUI.DrawRect(new Rect(p, s), isConnectFrom ? HighlightColor : color); DrawOutline(ExitToScreenPos(exit), s, 2, Color.black, default); DrawConnectionPanel(connectExits, exit, ExitToScreenPos, "o", EXIT_MENU_POS); }
IEnumerator stepMovement(float objectSpeed) { Graph.Node start = movementPath.Dequeue(); Graph.Node end = movementPath.Peek(); actualNodeNumber = end.number; obj.GetComponent <SpriteRenderer>().sortingOrder = start.getZIndex(end); int sign = System.Math.Sign(end.coordinates.x - start.coordinates.x) >= 0? 1: -1; transform.localScale = new Vector3(System.Math.Abs(transform.localScale.x) * sign, transform.localScale.y, transform.localScale.z); yield return(StartCoroutine(MoveObject(transform, start, end, objectSpeed))); }
IEnumerator MoveObject(Transform thisTransform, Graph.Node start, Graph.Node end, float time) { var i = 0.0f; var rate = 1.0f / time; while (i < 1.0f) { i += Time.deltaTime * rate; transform.position = Vector3.Lerp(start.coordinates, end.coordinates, i); yield return(null); } }
public void Toggle(Graph.Node node) { if (!Ongoing) { Begin(node); } else { graph.ToggleConnection(from, node); End(); } }
// Start is called before the first frame update void Start() { Graph mazeGraph = new Graph(5, 5); //create a graph that represents the maze we're making Graph.Node[,] maze = mazeGraph.makeUST(); /*//for debug below * Graph.Node[,] maze = new Graph.Node[5,5]; * for(int i=0;i<5; i++) * { * for (int j=0;j<5;j++) * { * maze[i, j] = new Graph.Node(i, j); * if(i!=4) maze[i, j].rightEdge = true; * if(j!=4) maze[i, j].upEdge = true; * } * } * * //for debug above*/ GameObject[,] tiles = new GameObject[maze.GetLength(0), maze.GetLength(1)]; //make an array of maze tiles, their indeices correponding to the maze matrix. for (int i = 0; i < maze.GetLength(0); i++) //create the maze, initializing only the heart { float tilePosX = mazeLeftLimit + i * (completeTileSideLength + gapBetweenTile) + (0.5f) * completeTileSideLength; for (int j = 0; j < maze.GetLength(1); j++) { float tilePosZ = mazeSouthLimit + j * (completeTileSideLength + gapBetweenTile) + (0.5f) * completeTileSideLength; Vector3 location = new Vector3(tilePosX, yOffset, tilePosZ); tiles[i, j] = Instantiate(completeTile, location, completeTile.transform.rotation); } } for (int i = 0; i < tiles.GetLength(0); i++) { for (int j = 0; j < tiles.GetLength(1); j++) { GameObject thisTile = tiles[i, j]; //thisTile and thisNode are corresponding Graph.Node thisNode = maze[i, j]; if (thisNode.rightEdge) //if this node has a right edge { thisTile.transform.GetChild((int)TileChildren.EAST).gameObject.SetActive(true); //activate the right extension of this tile tiles[i + 1, j].transform.GetChild((int)TileChildren.WEST).gameObject.SetActive(true); //activate the left extension of the game object on the right side } if (thisNode.upEdge) //if this node has an up (north) edge { thisTile.transform.GetChild((int)TileChildren.NORTH).gameObject.SetActive(true); //activate the up extension of this tile tiles[i, j + 1].transform.GetChild((int)TileChildren.SOUTH).gameObject.SetActive(true); //activate the south extension of the tile to the north //this would not cause out of bound since there wouldn't be an edge in that direction to start with } } } mazeController.GetComponent <MazeControl>().initialize(tiles); //initialize the maze controller who will keep track of whether the maze is still solvable }
public void TestPath1() { Dictionary <string, Graph.Node> graphMap = CreateGraph(); Graph.Node srcNode = graphMap["a"]; Graph.Node destNode = graphMap["g"]; LinkedList <Graph.Edge> path = Graph.PathFinder.AStarSearch(srcNode, destNode); AssertPathResult( new Dictionary <double, Graph.Node>() { { 0, graphMap["a"] }, { 2, graphMap["c"] }, { 5, graphMap["h"] }, { 6, graphMap["g"] } }, path); }
public IActionResult AddNode([FromBody] Graph.Node node) { try { Startup.MainGraph.AddNode(node); } catch (Exception e) { Console.WriteLine(e); return(StatusCode(500)); } return(NoContent()); }
public void GetNodeTestInvalid() { // Arrange Graph testGraph = new Graph(); testGraph.AddNode(1, new Graph.Node(1, "spin")); Graph.Node expected = null; // Act var actual = testGraph.GetNode(2); // Assert Assert.AreEqual(expected, actual); }
public void TestPath3() { Dictionary <string, Graph.Node> graphMap = CreateGraph(); Graph.Node srcNode = graphMap["i"]; Graph.Node destNode = graphMap["f"]; LinkedList <Graph.Edge> path = Graph.PathFinder.AStarSearch(srcNode, destNode); AssertPathResult( new Dictionary <double, Graph.Node>() { { 0, graphMap["i"] }, { 7, graphMap["h"] }, { 5, graphMap["e"] }, { 4, graphMap["b"] }, { 1, graphMap["d"] }, { 3, graphMap["f"] } }, path); }
/// <summary> /// Determines if a node is an intersection /// currently defining intersection as node with multiple neighbours /// @TODO merging when turning left onto one way main road or roundabout /// </summary> /// <param name="nodeID">The Node Id of the node to check</param> /// <returns>True if the node is an intersection</returns> private bool isIntersection(string nodeID) { Graph.Node node = g.nodeIdNodeDict[nodeID]; if (node.neighbours.Count > 2) { return true; } else if (node.neighbours.Count == 2 && node.neighbours[0].isOneWay) { return true; } return false; }
/// <summary> /// Calculates the direction of a novel fromNode toNode pair where: /// 0 --> North /// 1 --> East /// 2 --> South /// 3 --> West /// </summary> /// <param name="fromNode">String representing the first node</param> /// <param name="toNode">String representing the second node</param> /// <returns>Integer indicating directionality</returns> private int calcBearing(string fromNode, string toNode) { // Load node info Graph.Node startNode = g.nodeIdNodeDict[fromNode]; double[] start = new double[2]; start[0] = startNode.lat * Math.PI / 180; start[1] = startNode.lon * Math.PI / 180; Graph.Node endNode = g.nodeIdNodeDict[toNode]; double[] end = new double[2]; end[0] = endNode.lat * Math.PI / 180; end[1] = endNode.lon * Math.PI / 180; // Calculate the bearing double x = Math.Sin(end[1] - start[1]) * Math.Cos(end[0]); double y = Math.Cos(start[0]) * Math.Sin(end[0]) - Math.Sin(start[0]) * Math.Cos(end[0]) * Math.Cos(end[1] - start[1]); double theta = Math.Atan2(y, x); double brng = (theta * 180 / Math.PI + 360) % 360; //UnityEngine.Debug.Log("brng: " + brng); // Calculate the direction int direction = -1; if (brng >= 315 || brng < 45) { // North direction = 0; } else if (brng >= 45 && brng < 135) { // East direction = 1; } else if (brng >= 135 && brng < 225) { // South direction = 2; } else { // West direction = 3; } // Make traffic light object appear createTrafficLightObject(fromNode, toNode, direction); return(direction); }
// Start is called before the first frame update void Start() { color = new Color(Random.Range(0, 255), Random.Range(0, 255), Random.Range(0, 255), 100); body.GetComponent <MeshRenderer>().material.color = color; head.GetComponent <MeshRenderer>().material.color = color; //Constructs it's patrol route randomly between all existing waypoints List <GameObject> waypointList = new List <GameObject>(); waypointList.AddRange(GameObject.FindGameObjectsWithTag("Waypoint")); route = new Graph(waypointList); //Starts with a randomly selected node in the patrol route target = route.RandomTarget(); }
private void AssertPathResult(Dictionary <double, Graph.Node> expectedPath, LinkedList <Graph.Edge> path) { Assert.AreEqual(expectedPath.Count, path.Count); LinkedListNode <Graph.Edge> edge = path.First; foreach (KeyValuePair <double, Graph.Node> entry in expectedPath) { double expectedWeight = entry.Key; Graph.Node expectedNode = entry.Value; Assert.AreEqual(expectedWeight, edge.Value.Weight); Assert.AreEqual(expectedNode, edge.Value.Node); edge = edge.Next; } }
private void graphNodes_SelectedIndexChanged(object sender, EventArgs e) { graphEdges.Items.Clear(); Graph.Node current = null; foreach (Graph.Node N in demoGraph.nodes) { if (N.name == graphNodes.SelectedItem.ToString()) { current = N; } } foreach (Graph.Arrow N in current.edges) { graphEdges.Items.Add(N.target.name + " (" + N.weight + ")"); } }
private void DrawConnectionPanel(ConnectionManager connect, Graph.Node node, Func <Graph.Node, Vector2> toScreenPosFunc, string symbol, Vector2 posOffset) { if (ConnectedWithOngoing(connect, node)) { symbol = "x"; } Vector2 p = toScreenPosFunc == null ? node.pos : toScreenPosFunc(node); if (!connect.Ongoing ? Rooms.AnySelected(node.value) : (connect.from.value != node.value)) { if (GUI.Button(new Rect(p + posOffset, Vector2.one * 20), symbol)) { CommitConnection(connect, node); } } }
/// <summary> /// Gets the priority of the next segment of road where vehicles on lower priority roads will need to give way to vehicles on higher priority roads /// /// lowest prioirty /// 1 - one way E-W /// 2 - one way N-S /// 3 - two way E-W /// 4 - two way N-S /// </summary> /// <returns>The priority of the next segment of road to travel</returns> private int getPriority() { if (currentNode >= pathList.Count - 2 || currentNode == 0) { return 5; } Graph.Node currNode = g.nodeIdNodeDict[pathList[currentNode]]; Graph.Node prevNode = g.nodeIdNodeDict[pathList[currentNode -1]]; double startLat = prevNode.lat; double startLon = prevNode.lon; double endLat = currNode.lat; double endLon = currNode.lon; startLat = startLat * Math.PI/180; startLon = startLon * Math.PI/180; endLat = endLat * Math.PI/180; endLon = endLon * Math.PI/180; double x = Math.Sin(endLon-startLon) * Math.Cos(endLat); double y = Math.Cos(startLat)*Math.Sin(endLat) - Math.Sin(startLat)*Math.Cos(endLat)*Math.Cos(endLat-startLat); double theta = Math.Atan2(y,x); double brng = (theta*180/Math.PI + 360) % 360; if (brng == 0) { brng = 360; } if (onOneWay()) { // if E-W if (brng > 45 && brng < 135 || brng > 225 && brng < 315) { return 1; } return 2; } else { // if E-W if (brng > 45 && brng < 135 || brng > 225 && brng < 315) { return 3; } return 4; } }
public override void initialize() { _liveObjectsNodes = new List<Graph.Node>(); //PIANO 0 - STANZA 0 _liveObjectsNodes.Add(new Graph.Node( 0, 0, new Vector2(-12.50f, -4.10f), Graph.Node.Type.Main)); _liveObjectsNodes.Add(new Graph.Node( 1, 0, new Vector2(-12.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 2, 0, new Vector2(-11.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 3, 0, new Vector2(-11.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 4, 0, new Vector2(-10.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 5, 0, new Vector2(-10.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 6, 0, new Vector2(-09.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 7, 0, new Vector2(-09.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 8, 0, new Vector2(-08.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 9, 0, new Vector2(-08.00f, -4.10f), Graph.Node.Type.Main)); //PIANO 0 - STANZA 1 _liveObjectsNodes.Add(new Graph.Node( 10, 1, new Vector2(-07.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 11, 1, new Vector2(-07.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 12, 1, new Vector2(-06.30f, -4.10f), Graph.Node.Type.Main)); _liveObjectsNodes.Add(new Graph.Node( 13, 1, new Vector2(-06.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 14, 1, new Vector2(-05.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 15, 1, new Vector2(-05.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 16, 1, new Vector2(-04.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 17, 1, new Vector2(-04.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 18, 1, new Vector2(-03.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 19, 1, new Vector2(-03.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 20, 1, new Vector2(-02.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 21, 1, new Vector2(-02.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 22, 1, new Vector2(-01.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 23, 1, new Vector2(-01.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 24, 1, new Vector2(-00.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 25, 1, new Vector2( 00.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 26, 1, new Vector2( 00.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 27, 1, new Vector2( 01.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 28, 1, new Vector2( 01.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 29, 1, new Vector2( 02.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 30, 1, new Vector2( 02.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 31, 1, new Vector2( 03.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 32, 1, new Vector2( 03.50f, -4.10f), Graph.Node.Type.Main)); //PIANO 0 - STANZA 2 _liveObjectsNodes.Add(new Graph.Node( 33, 2, new Vector2( 04.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 34, 2, new Vector2( 04.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 35, 2, new Vector2( 05.00f, -4.10f), Graph.Node.Type.Main)); _liveObjectsNodes.Add(new Graph.Node( 36, 2, new Vector2( 05.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 37, 2, new Vector2( 06.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 38, 2, new Vector2( 06.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 39, 2, new Vector2( 07.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 40, 2, new Vector2( 07.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 41, 2, new Vector2( 08.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 42, 2, new Vector2( 08.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 43, 2, new Vector2( 09.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 44, 2, new Vector2( 09.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 45, 2, new Vector2( 10.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 46, 2, new Vector2( 10.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 47, 2, new Vector2( 11.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 48, 2, new Vector2( 11.50f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 49, 2, new Vector2( 12.00f, -4.10f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 50, 2, new Vector2( 12.50f, -4.10f), Graph.Node.Type.Main)); //PIANO 1 - STANZA 3 _liveObjectsNodes.Add(new Graph.Node( 51, 3, new Vector2(-12.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 52, 3, new Vector2(-12.00f, -0.05f), Graph.Node.Type.Main)); _liveObjectsNodes.Add(new Graph.Node( 53, 3, new Vector2(-11.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 54, 3, new Vector2(-11.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 55, 3, new Vector2(-10.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 56, 3, new Vector2(-10.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 57, 3, new Vector2(-09.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 58, 3, new Vector2(-09.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 59, 3, new Vector2(-08.50f, -0.05f), Graph.Node.Type.Main)); //PIANO 1 - STANZA 4 _liveObjectsNodes.Add(new Graph.Node( 60, 4, new Vector2(-08.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 61, 4, new Vector2(-07.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 62, 4, new Vector2(-07.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 63, 4, new Vector2(-06.50f, -0.05f), Graph.Node.Type.Main)); _liveObjectsNodes.Add(new Graph.Node( 64, 4, new Vector2(-06.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 65, 4, new Vector2(-05.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 66, 4, new Vector2(-05.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 67, 4, new Vector2(-04.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 68, 4, new Vector2(-04.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 69, 4, new Vector2(-03.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 70, 4, new Vector2(-03.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 71, 4, new Vector2(-02.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 72, 4, new Vector2(-02.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 73, 4, new Vector2(-01.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 74, 4, new Vector2(-01.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 75, 4, new Vector2(-00.50f, -0.05f), Graph.Node.Type.Main)); //PIANO 1 - STANZA 5 _liveObjectsNodes.Add(new Graph.Node( 76, 5, new Vector2( 00.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 77, 5, new Vector2( 00.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 78, 5, new Vector2( 01.00f, -0.05f), Graph.Node.Type.Main)); _liveObjectsNodes.Add(new Graph.Node( 79, 5, new Vector2( 01.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 80, 5, new Vector2( 02.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 81, 5, new Vector2( 02.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 82, 5, new Vector2( 03.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 83, 5, new Vector2( 03.50f, -0.05f), Graph.Node.Type.Main)); //PIANO 1 - STANZA 6 _liveObjectsNodes.Add(new Graph.Node( 84, 6, new Vector2( 04.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 85, 6, new Vector2( 04.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 86, 6, new Vector2( 05.00f, -0.05f), Graph.Node.Type.Main)); _liveObjectsNodes.Add(new Graph.Node( 87, 6, new Vector2( 05.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 88, 6, new Vector2( 06.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 89, 6, new Vector2( 06.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 90, 6, new Vector2( 07.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 91, 6, new Vector2( 07.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 92, 6, new Vector2( 08.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 93, 6, new Vector2( 08.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 94, 6, new Vector2( 09.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 95, 6, new Vector2( 09.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 96, 6, new Vector2( 10.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 97, 6, new Vector2( 10.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 98, 6, new Vector2( 11.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node( 99, 6, new Vector2( 11.50f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(100, 6, new Vector2( 12.00f, -0.05f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(101, 6, new Vector2( 12.50f, -0.05f), Graph.Node.Type.Main)); //PIANO 2 - STANZA 7 _liveObjectsNodes.Add(new Graph.Node(102, 7, new Vector2(-12.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(103, 7, new Vector2(-12.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(104, 7, new Vector2(-11.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(105, 7, new Vector2(-11.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(106, 7, new Vector2(-10.50f, 4.11f), Graph.Node.Type.Main)); _liveObjectsNodes.Add(new Graph.Node(107, 7, new Vector2(-10.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(108, 7, new Vector2(-09.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(109, 7, new Vector2(-09.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(110, 7, new Vector2(-08.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(111, 7, new Vector2(-08.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(112, 7, new Vector2(-07.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(113, 7, new Vector2(-07.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(114, 7, new Vector2(-06.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(115, 7, new Vector2(-06.00f, 4.11f), Graph.Node.Type.Main)); //PIANO 2 - STANZA 8 _liveObjectsNodes.Add(new Graph.Node(116, 8, new Vector2(-05.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(117, 8, new Vector2(-05.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(118, 8, new Vector2(-04.50f, 4.11f), Graph.Node.Type.Main)); _liveObjectsNodes.Add(new Graph.Node(119, 8, new Vector2(-04.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(120, 8, new Vector2(-03.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(121, 8, new Vector2(-03.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(122, 8, new Vector2(-02.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(123, 8, new Vector2(-02.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(124, 8, new Vector2(-01.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(125, 8, new Vector2(-01.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(126, 8, new Vector2(-00.50f, 4.11f), Graph.Node.Type.Main)); //PIANO 2 - STANZA 9 _liveObjectsNodes.Add(new Graph.Node(127, 9, new Vector2(00.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(128, 9, new Vector2(00.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(129, 9, new Vector2(01.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(130, 9, new Vector2(01.50f, 4.11f), Graph.Node.Type.Main)); _liveObjectsNodes.Add(new Graph.Node(131, 9, new Vector2(02.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(132, 9, new Vector2(02.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(133, 9, new Vector2(03.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(134, 9, new Vector2(03.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(135, 9, new Vector2(04.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(136, 9, new Vector2(04.50f, 4.11f), Graph.Node.Type.Main)); //PIANO 2 - STANZA 10 _liveObjectsNodes.Add(new Graph.Node(137, 10, new Vector2(05.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(138, 10, new Vector2(05.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(139, 10, new Vector2(06.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(140, 10, new Vector2(06.50f, 4.11f), Graph.Node.Type.Main)); _liveObjectsNodes.Add(new Graph.Node(141, 10, new Vector2(07.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(142, 10, new Vector2(07.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(143, 10, new Vector2(08.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(144, 10, new Vector2(08.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(145, 10, new Vector2(09.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(146, 10, new Vector2(09.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(147, 10, new Vector2(10.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(148, 10, new Vector2(10.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(149, 10, new Vector2(11.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(150, 10, new Vector2(11.50f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(151, 10, new Vector2(12.00f, 4.11f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(152, 10, new Vector2(12.50f, 4.11f), Graph.Node.Type.Main)); //SCALA 0 - 1 _liveObjectsNodes.Add(new Graph.Node(153, 1, new Vector2(-06.00f, -3.80f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(154, 1, new Vector2(-05.50f, -3.40f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(155, 1, new Vector2(-05.00f, -3.00f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(156, 1, new Vector2(-04.50f, -2.60f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(157, 1, new Vector2(-04.00f, -2.20f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(158, 1, new Vector2(-03.50f, -1.80f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(159, 1, new Vector2(-03.00f, -1.40f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(160, 1, new Vector2(-02.50f, -1.00f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(161, 1, new Vector2(-02.00f, -0.60f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(162, 1, new Vector2(-01.50f, -0.20f), Graph.Node.Type.Generic)); //SCALA 1 - 2 _liveObjectsNodes.Add(new Graph.Node(163, 1, new Vector2(-06.00f, 0.40f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(164, 1, new Vector2(-05.50f, 0.80f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(165, 1, new Vector2(-05.00f, 1.20f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(166, 1, new Vector2(-04.50f, 1.60f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(167, 1, new Vector2(-04.00f, 2.00f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(168, 1, new Vector2(-03.50f, 2.40f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(169, 1, new Vector2(-03.00f, 2.80f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(170, 1, new Vector2(-02.50f, 3.20f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(171, 1, new Vector2(-02.00f, 3.60f), Graph.Node.Type.Generic)); _liveObjectsNodes.Add(new Graph.Node(172, 1, new Vector2(-01.50f, 4.00f), Graph.Node.Type.Generic)); _liveObjectsLinks = new List<Graph.Connection>(); //SCALA 0 - 1 _liveObjectsLinks.Add(new Graph.Connection(12, 153, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(162, 75, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(153, 154, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(154, 155, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(155, 156, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(156, 157, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(157, 158, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(158, 159, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(159, 160, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(160, 161, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(161, 162, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); //SCALA 1 - 2 _liveObjectsLinks.Add(new Graph.Connection(63, 163, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(172, 126, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(163, 164, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(164, 165, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(165, 166, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(166, 167, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(167, 168, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(168, 169, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(169, 170, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(170, 171, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(171, 172, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); //PIANO 0 _liveObjectsLinks.Add(new Graph.Connection( 0, 1, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 1, 2, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 2, 3, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 3, 4, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 4, 5, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 5, 6, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 6, 7, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 7, 8, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 8, 9, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 9, 10, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 10, 11, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 11, 12, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 12, 13, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 13, 14, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 14, 15, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 15, 16, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 16, 17, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 17, 18, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 18, 19, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 19, 20, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 20, 21, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 21, 22, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 22, 23, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 23, 24, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 24, 25, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 25, 26, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 26, 27, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 27, 28, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 28, 29, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 29, 30, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 30, 31, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 31, 32, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 32, 33, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 33, 34, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 34, 35, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 35, 36, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 36, 37, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 37, 38, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 38, 39, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 39, 40, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 40, 41, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 41, 42, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 42, 43, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 43, 44, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 44, 45, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 45, 46, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 46, 47, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 47, 48, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 48, 49, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 49, 50, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); //PIANO 1 _liveObjectsLinks.Add(new Graph.Connection( 51, 52, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 52, 53, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 53, 54, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 54, 55, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 55, 56, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 56, 57, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 57, 58, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 58, 59, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 59, 60, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 60, 61, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 61, 62, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 62, 63, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 63, 64, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 64, 65, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 65, 66, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 66, 67, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 67, 68, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 68, 69, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 69, 70, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 70, 71, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 71, 72, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 72, 73, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 73, 74, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 74, 75, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 75, 76, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 76, 77, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 77, 78, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 78, 79, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 79, 80, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 80, 81, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 81, 82, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 82, 83, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 83, 84, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 84, 85, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 85, 86, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 86, 87, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 87, 88, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 88, 89, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 89, 90, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 90, 91, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 91, 92, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 92, 93, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 93, 94, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 94, 95, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 95, 96, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 96, 97, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 97, 98, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 98, 99, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection( 99, 100, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(100, 101, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); //PIANO 2 _liveObjectsLinks.Add(new Graph.Connection(102, 103, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(103, 104, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(104, 105, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(105, 106, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(106, 107, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(107, 108, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(108, 109, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(109, 110, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(110, 111, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(111, 112, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(112, 113, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(113, 114, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(114, 115, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(115, 116, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); liveObjectsLinks.Add(new Graph.Connection(116, 117, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(117, 118, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(118, 119, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(119, 120, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(120, 121, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(121, 122, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(122, 123, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(123, 124, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(124, 125, 1, Costants.Z_INDEX_LIVE_OVER_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(125, 126, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(126, 127, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(127, 128, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(128, 129, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(129, 130, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(130, 131, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(131, 132, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(132, 133, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(133, 134, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(134, 135, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(135, 136, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(136, 137, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(137, 138, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(138, 139, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(139, 140, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(140, 141, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(141, 142, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(142, 143, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(143, 144, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(144, 145, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(145, 146, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(146, 147, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(147, 148, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(148, 149, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(149, 150, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(150, 151, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _liveObjectsLinks.Add(new Graph.Connection(151, 152, 1, Costants.Z_INDEX_LIVE_BEHIND_FOREGROUND)); _rooms = new List<Rect>(); //MiniMap _rooms.Add(new Rect(-118.80f, -32.10f, 53.70f, 27.80f)); //Map _rooms.Add(new Rect(-318.40f, -142.70f, 170.90f, 12.00f)); _rooms.Add(new Rect( -33.68f, -32.10f, 109.25f, 27.80f)); _rooms.Add(new Rect( -44.8f, -142.7f, 351.60f, 12f)); _rooms.Add(new Rect(65.20f, -32.10f, 81.70f, 27.80f)); _rooms.Add(new Rect( 274.8f, -142.7f, 260.60f, 12f)); _rooms.Add(new Rect(-118.80f, 0.05f, 53.70f, 27.80f)); _rooms.Add(new Rect(-319.4f, -39.7f, 172.30f, 12f)); _rooms.Add(new Rect( -56.80f, 0.05f, 63.00f, 27.80f)); _rooms.Add(new Rect(-118.7f, -39.7f, 201.70f, 12f)); _rooms.Add(new Rect(10.75f, 0.05f, 63.80f, 27.80f)); _rooms.Add(new Rect( 99.7f, -39.7f, 206.50f, 12f)); _rooms.Add(new Rect(76.20f, 0.05f, 59.70f, 27.80f)); _rooms.Add(new Rect( 310.7f, -39.7f, 188.85f, 12f)); _rooms.Add(new Rect(-110.60f, 31.95f, 70.10f, 27.80f)); _rooms.Add(new Rect(-292.9f, 63.8f, 224.20f, 12f)); _rooms.Add(new Rect(-46.70f, 31.95f, 51.10f, 27.80f)); _rooms.Add(new Rect( -84.5f, 63.8f, 160.50f, 12f)); _rooms.Add(new Rect(7.60f, 31.95f, 50.70f, 27.80f)); _rooms.Add(new Rect( 90.6f, 63.8f, 162.10f, 12f)); _rooms.Add(new Rect(71.30f, 31.95f, 69.40f, 27.80f)); _rooms.Add(new Rect( 295f, 63.8f, 220.20f, 12f)); _termitesNodes = new Graph.Node[0]; _termitesLinks = new Graph.Connection[0]; _cameraCenter = new Vector3( 7.31f, -2.93f, -50); _humans = new HumanPlaceholder[0]; _availableTermites = 1000; _floorColliders = new Vector2[6][]; Vector2[] points = new Vector2[2]; points[0] = new Vector2(-10.3f, 3.02f); points[1] = new Vector2( 14.1f, 3.02f); _floorColliders[0] = points; points = new Vector2[2]; points[0] = new Vector2(-13.54f, 2.57f); points[1] = new Vector2(14.1f, 2.57f); _floorColliders[1] = points; points = new Vector2[2]; points[0] = new Vector2(-14.3f, -6.73f); points[1] = new Vector2( 14.1f, -6.73f); _floorColliders[2] = points; points = new Vector2[2]; points[0] = new Vector2(-10.3f, -1.06f); points[1] = new Vector2(14.1f, -1.06f); _floorColliders[3] = points; points = new Vector2[2]; points[0] = new Vector2(-13.54f, -2.09f); points[1] = new Vector2(14.1f, -2.09f); _floorColliders[4] = points; points = new Vector2[2]; points[0] = new Vector2(-10.3f, -5.01f); points[1] = new Vector2(14.1f, -5.01f); _floorColliders[5] = points; _objects = new List<ObjectPlaceholder>(); _objects.Add(new ObjectPlaceholder( 00, Costants.Z_INDEX_OBJ_1, new Vector3(-10.44f, -2.98f, 0), "L1_F1_KITCHEN_RACK2", "RACK", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 00, Costants.Z_INDEX_OBJ_1, new Vector3(-10.49f, -4.44f, 0), "L1_F1_KITCHEN_RACK1", "RACK", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 00, Costants.Z_INDEX_OBJ_2, new Vector3(-08.27f, -3.85f, 0), "L1_F1_KITCHEN_FRIDGE", "FRIDGE", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 00, Costants.Z_INDEX_OBJ_2, new Vector3(-12.08f, -4.43f, 0), "L1_F1_KITCHEN_LAMPx3", "LAMP", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 00, Costants.Z_INDEX_OBJ_2, new Vector3(-11.28f, -4.43f, 0), "L1_F1_KITCHEN_LAMPx3", "LAMP", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 00, Costants.Z_INDEX_OBJ_4, new Vector3(-12.00f, -5.19f, 0), "L1_F1_KITCHEN_CHAIR2", "CHAIR", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 00, Costants.Z_INDEX_OBJ_4, new Vector3(-11.24f, -5.19f, 0), "L1_F1_KITCHEN_CHAIR2", "CHAIR", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 00, Costants.Z_INDEX_OBJ_5, new Vector3(-11.94f, -5.71f, 0), "L1_F1_KITCHEN_TABLE", "TABLE", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 00, Costants.Z_INDEX_OBJ_6, new Vector3(-11.96f, -5.17f, 0), "L1_F1_KITCHEN_VASE", "VASE", GenericObject.Model.Hard, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 00, Costants.Z_INDEX_OBJ_7, new Vector3(-12.78f, -6.16f, 0), "L1_F1_KITCHEN_CHAIR1", "CHAIR", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 00, Costants.Z_INDEX_OBJ_7, new Vector3(-11.74f, -6.16f, 0), "L1_F1_KITCHEN_CHAIR1", "CHAIR", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 01, Costants.Z_INDEX_OBJ_1, new Vector3(-00.21f, -2.92f, 0), "L1_F1_LIVING_POSTER5", "POSTER", GenericObject.Model.Soft, isHanging: true)); _objects.Add(new ObjectPlaceholder( 01, Costants.Z_INDEX_OBJ_2, new Vector3(-00.25f, -4.32f, 0), "L1_F1_LIVING_COACH1", "COACH", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 01, Costants.Z_INDEX_OBJ_1, new Vector3( 02.68f, -4.42f, 0), "L1_F1_LIVING_SHELF", "SHELF", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 01, Costants.Z_INDEX_OBJ_2, new Vector3( 03.01f, -3.73f, 0), "L1_F1_LIVING_TV", "TV", GenericObject.Model.Hard, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 01, Costants.Z_INDEX_OBJ_4, new Vector3(-03.39f, -5.83f, 0), "L1_F1_LIVING_COACH2", "COACH", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 01, Costants.Z_INDEX_OBJ_4, new Vector3( 02.00f, -6.09f, 0), "L1_F1_LIVING_COACH3", "COACH", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 01, Costants.Z_INDEX_OBJ_4, new Vector3(-02.00f, -5.60f, 0), "L1_F1_LIVING_LAMP", "LAMP", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 01, Costants.Z_INDEX_OBJ_4, new Vector3(-00.38f, -5.80f, 0), "L1_F1_LIVING_TABLE2", "TABLE", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 02, Costants.Z_INDEX_OBJ_1, new Vector3( 06.81f, -3.65f, 0), "L1_F1_GARAGE_SHELF", "SHELF", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 02, Costants.Z_INDEX_OBJ_2, new Vector3( 05.84f, -3.12f, 0), "L1_F1_GARAGE_BOX1", "BOX", GenericObject.Model.Soft, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 02, Costants.Z_INDEX_OBJ_2, new Vector3( 08.64f, -3.12f, 1), "L1_F1_GARAGE_BOX2", "BOX", GenericObject.Model.Hard, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 02, Costants.Z_INDEX_OBJ_3, new Vector3( 05.20f, -3.94f, 0), "L1_F1_GARAGE_BOX3", "BOX", GenericObject.Model.Soft, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 02, Costants.Z_INDEX_OBJ_2, new Vector3( 05.68f, -3.94f, 0), "L1_F1_GARAGE_BOX3", "BOX", GenericObject.Model.Soft, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 02, Costants.Z_INDEX_OBJ_2, new Vector3( 07.28f, -3.94f, 0), "L1_F1_GARAGE_BOX3", "BOX", GenericObject.Model.Soft, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 02, Costants.Z_INDEX_OBJ_4, new Vector3( 08.58f, -5.50f, 0), "L1_F1_GARAGE_CAR", "CAR", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 03, Costants.Z_INDEX_OBJ_1, new Vector3(-12.49f, -0.10f, 0), "L1_F2_ROOM3_CLOSET-B", "CLOSET", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 03, Costants.Z_INDEX_OBJ_2, new Vector3(-09.05f, -0.60f, 0), "L1_F2_ROOM3_BEED2", "BED", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 03, Costants.Z_INDEX_OBJ_1, new Vector3(-09.20f, -0.27f, 0), "L1_F2_ROOM3_POSTER3", "POSTER", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 04, Costants.Z_INDEX_OBJ_1, new Vector3(-01.68f, -0.57f, 0), "L1_F2_HALL2_RACK", "RACK", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 04, Costants.Z_INDEX_OBJ_2, new Vector3(-00.95f, 0.32f, 0), "L1_F2_HALL2_PLANT_", "PLANT", GenericObject.Model.Soft, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 05, Costants.Z_INDEX_OBJ_1, new Vector3( 01.30f, 0.26f, 0), "L1_F2_ROOM4_BOOKSHELF", "BOOKSHELF",GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 05, Costants.Z_INDEX_OBJ_1, new Vector3( 03.54f, -0.40f, 0), "L1_F2_ROOM4_BED", "BED", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 05, Costants.Z_INDEX_OBJ_2, new Vector3( 00.95f, 0.88f, 0), "L1_F2_ROOM4_TOY1_", "TOY", GenericObject.Model.Hard, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 05, Costants.Z_INDEX_OBJ_2, new Vector3( 01.30f, 0.88f, 0), "L1_F2_ROOM4_TOY2_", "TOY", GenericObject.Model.Hard, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 05, Costants.Z_INDEX_OBJ_2, new Vector3( 01.62f, 0.88f, 0), "L1_F2_ROOM4_TOY3_", "TOY", GenericObject.Model.Hard, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 05, Costants.Z_INDEX_OBJ_2, new Vector3( 01.26f, 0.00f, 0), "L1_F2_ROOM4_TOY4_", "TOY", GenericObject.Model.Hard, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 05, Costants.Z_INDEX_OBJ_4, new Vector3( 00.94f, -1.19f, 0), "L1_F2_ROOM4_ARMCHAIR", "ARMCHAIR", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 06, Costants.Z_INDEX_OBJ_1, new Vector3( 06.89f, -0.47f, 0), "L1_F2_ROOM5_DESK2", "DESK", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 06, Costants.Z_INDEX_OBJ_1, new Vector3( 07.01f, 0.28f, 0), "L1_F2_ROOM5_POSTER4", "POSTER", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 06, Costants.Z_INDEX_OBJ_1, new Vector3( 08.78f, 0.28f, 0), "L1_F2_ROOM5_POSTER5", "POSTER", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 06, Costants.Z_INDEX_OBJ_2, new Vector3( 06.63f, 0.42f, 0), "L1_F2_ROOM5_PC", "MAC", GenericObject.Model.Hard, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 06, Costants.Z_INDEX_OBJ_2, new Vector3( 07.76f, 0.19f, 1), "L1_F2_ROOM5_PRINTER", "PRINTER", GenericObject.Model.Hard, isOnSomething: true)); _objects.Add(new ObjectPlaceholder( 06, Costants.Z_INDEX_OBJ_3, new Vector3( 06.87f, -0.53f, 0), "L1_F2_ROOM5_CHAIR-BLACK", "CHAIR", GenericObject.Model.Hard, isHFlipped:true)); _objects.Add(new ObjectPlaceholder( 07, Costants.Z_INDEX_OBJ_1, new Vector3(-11.36f, 3.47f, 0), "L1_F3_ROOM1_BED", "BED", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 07, Costants.Z_INDEX_OBJ_1, new Vector3(-08.89f, 3.47f, 0), "L1_F3_ROOM1_DESK", "DESK", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 07, Costants.Z_INDEX_OBJ_1, new Vector3(-06.50f, 4.42f, 0), "L1_F3_ROOM1_CLOSET-S", "CLOSET", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 07, Costants.Z_INDEX_OBJ_1, new Vector3(-08.76f, 5.16f, 0), "L1_F3_ROOM1_POSTER1", "POSTER", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 07, Costants.Z_INDEX_OBJ_2, new Vector3(-08.99f, 3.52f, 0), "L1_F2_ROOM5_CHAIR-BLACK", "CHAIR", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 07, Costants.Z_INDEX_OBJ_2, new Vector3(-08.77f, 4.23f, 0), "L1_F2_ROOM5_PC", "MAC", GenericObject.Model.Hard, isOnSomething: true, isHFlipped: true)); _objects.Add(new ObjectPlaceholder( 08, Costants.Z_INDEX_OBJ_1, new Vector3(-02.58f, 4.24f, 0), "L1_F3_HALL1_POSTER2", "POSTER", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 09, Costants.Z_INDEX_OBJ_1, new Vector3( 01.46f, 4.65f, 0), "L1_F3_BATHROOM_SHOWER", "SHOWER", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 09, Costants.Z_INDEX_OBJ_1, new Vector3( 03.08f, 3.62f, 0), "L1_F3_BATHROOM_SINK", "SINK", GenericObject.Model.Soft)); // _objects.Add(new ObjectPlaceholder( 09, Costants.Z_INDEX_OBJ_1, new Vector3( 03.10f, 3.97f, 0), "L1_F3_BATHROOM_MIRROR_B", "MIRROR", GenericObject.Model.Soft)); // _objects.Add(new ObjectPlaceholder( 09, Costants.Z_INDEX_OBJ_2, new Vector3( 03.10f, 4.75f, 0), "L1_F3_BATHROOM_MIRROR", "MIRROR", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 09, Costants.Z_INDEX_OBJ_1, new Vector3( 04.00f, 4.20f, 0), "L1_F3_BATHROOM_CLOSET-S", "CLOSET", GenericObject.Model.Soft)); _objects.Add(new ObjectPlaceholder( 09, Costants.Z_INDEX_OBJ_4, new Vector3( 01.02f, 3.16f, 0), "L1_F3_BATHROOM_TOILET", "TOILET", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 10, Costants.Z_INDEX_OBJ_1, new Vector3( 06.90f, 4.62f, 0), "L1_F3_ROOM2_LAMPx3", "LAMP", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 10, Costants.Z_INDEX_OBJ_1, new Vector3( 08.15f, 4.62f, 0), "L1_F3_ROOM2_LAMPx3", "LAMP", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 10, Costants.Z_INDEX_OBJ_1, new Vector3( 09.40f, 4.62f, 0), "L1_F3_ROOM2_LAMPx3", "LAMP", GenericObject.Model.Hard)); _objects.Add(new ObjectPlaceholder( 10, Costants.Z_INDEX_OBJ_4, new Vector3( 08.28f, 3.27f, 0), "L1_F3_ROOM2_BILLARD", "BILLARD", GenericObject.Model.Soft)); }