// Create uility tools for each node public void ShowingNodeUtilityGroup(GameObject _GameObject_NodeUtilityGroup, GameObject _NodeGroup) { Vector3 DefaultNodeUtilityLocation = new Vector3(0, 0, 0); GameObject[] AllNodes = GetAllNodeGameObjects(); foreach (GameObject EachAllNode in AllNodes) { NewNodeUtilityGroup = Instantiate(_GameObject_NodeUtilityGroup, DefaultNodeUtilityLocation, Quaternion.identity, _NodeGroup.transform) as GameObject; NewNodeUtilityGroup.GetComponent <NodeUtilityGroupRenderer> ().UpdateInformation(EachAllNode.transform.localPosition, EachAllNode); NewNodeUtilityGroup.name = EachAllNode.name + "UtilityGroup"; EachAllNode.transform.parent = NewNodeUtilityGroup.transform; EachAllNode.GetComponent <NodeRenderer> ().NodeCentralize(); } }
// Destroy uility tools on all nodes public void DestoryNodeUtilityGroup(GameObject _NodeGroup) { GameObject[] AllNodeUtilities = GetAllNodeUtilityGameObjects(); GameObject[] AllNodes = GetAllNodeGameObjects(); Vector2 NewNodePositionIndex = new Vector2(0, 0); foreach (GameObject EachAllNode in AllNodes) { NewNodePositionIndex = EachAllNode.GetComponent <NodeRenderer> ().GetNodePositionIndex(); EachAllNode.transform.parent = _NodeGroup.transform; EachAllNode.GetComponent <NodeRenderer> ().UpdateLocation(NewNodePositionIndex); } foreach (GameObject EachAllNodeUtilities in AllNodeUtilities) { Destroy(EachAllNodeUtilities); } }
// Get All Possible Position // Vector3 <X, Y, 0 or 1 (0 = Empty, 1 = Occupied)> public List <Vector3> GetAllPossiblePosition() { Vector2 NodePositionIndex = NewNode.GetComponent <NodeRenderer>().GetNodePositionIndex(); GameObject[] AllNodes = GameObject.FindGameObjectsWithTag("Node"); List <Vector2> OccupiedNodePositionIndexs = new List <Vector2> (); List <Vector3> AllPossibleNodePositionIndexs = new List <Vector3> (); foreach (GameObject EachAllNode in AllNodes) { OccupiedNodePositionIndexs.Add(EachAllNode.GetComponent <NodeRenderer> ().GetNodePositionIndex()); } Vector2 PossibleNodePositionIndex_Limit_Lower = NodePositionIndex - new Vector2(GameConstants.Node_ExpensionLevel, GameConstants.Node_ExpensionLevel); Vector2 PossibleNodePositionIndex_Limit_Upper = NodePositionIndex + new Vector2(GameConstants.Node_ExpensionLevel, GameConstants.Node_ExpensionLevel); Vector2 NewPossiblePositionIndex = new Vector2(0, 0); for (int PositionIndex_X = (int)PossibleNodePositionIndex_Limit_Lower.x; PositionIndex_X <= (int)PossibleNodePositionIndex_Limit_Upper.x; PositionIndex_X++) { for (int PositionIndex_Y = (int)PossibleNodePositionIndex_Limit_Lower.y; PositionIndex_Y <= (int)PossibleNodePositionIndex_Limit_Upper.y; PositionIndex_Y++) { NewPossiblePositionIndex = new Vector2(PositionIndex_X, PositionIndex_Y); if (NewPossiblePositionIndex != NodePositionIndex) { if (OccupiedNodePositionIndexs.Contains(NewPossiblePositionIndex)) { AllPossibleNodePositionIndexs.Add(new Vector3(PositionIndex_X, PositionIndex_Y, 1)); } else { AllPossibleNodePositionIndexs.Add(new Vector3(PositionIndex_X, PositionIndex_Y, 0)); } } } } return(AllPossibleNodePositionIndexs); }