public override int GetHashCode() { if (_storedAction is null) { return(direction.GetHashCode()); } return(_storedAction.GetHashCode() ^ direction.GetHashCode()); }
public override int GetHashCode() { int hashCode = base.GetHashCode(); hashCode = hashCode * 31 + _portalTarget.GetHashCode(); return(hashCode); }
public override int GetHashCode() { int hash = 17; hash = hash * 23 + start.GetHashCode(); hash = hash * 23 + dir.GetHashCode(); return(hash); }
public MWCRandom(IntVector2 p, int seed) { m_z = Hash.HashUInt32((uint)p.GetHashCode()); m_w = (uint)seed; if (m_z == 0) m_z = 1; if (m_w == 0) m_w = 1; }
public override int GetHashCode() { var hashCode = 500944194; hashCode = hashCode * -1521134295 + Enabled.GetHashCode(); hashCode = hashCode * -1521134295 + Position.GetHashCode(); hashCode = hashCode * -1521134295 + Motion.GetHashCode(); return(hashCode); }
private void RandomNumberTest(int radius) { HashSet <IntVector2> vectors = new HashSet <IntVector2>(); HashSet <int> hashCodes = new HashSet <int>(); for (int i = 0; i < 10000; i++) { IntVector2 vector = new IntVector2(Random.Range(-radius, radius), Random.Range(-radius, radius)); vectors.Add(vector); hashCodes.Add(vector.GetHashCode()); } Debug.Log("Random " + radius + " Test: " + ((float)hashCodes.Count / (float)vectors.Count) + " / " + ((float)vectors.Count / 10000f)); }
private void ChessBoardTest() { HashSet <IntVector2> vectors = new HashSet <IntVector2>(); HashSet <int> hashCodes = new HashSet <int>(); for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { IntVector2 vector = new IntVector2(i, j); vectors.Add(vector); hashCodes.Add(vector.GetHashCode()); } } Debug.Log("Chess Test: " + hashCodes.Count + " / " + vectors.Count); }
public override int GetHashCode() { return(leftPos.GetHashCode() + rightPos.GetHashCode()); }
public List <IntVector2> FindPath(IntVector2 fromCoord, IntVector2 toCoord) { if (!MapDataManager.Instance.IsValidTileCoord(fromCoord.x, fromCoord.y)) { return(null); } if (!MapDataManager.Instance.IsValidTileCoord(toCoord.x, toCoord.y)) { return(null); } mOpenList.Clear(); mCloseSet.Clear(); AStarNode node = new AStarNode(); node.coord = fromCoord; node.valueG = 0; node.valueH = CallDisH(fromCoord, toCoord); mOpenList.Add(node); AStarNode finallyNode = null; IntVector2[] moveDirectionArray = new IntVector2[6]; System.Text.StringBuilder logSb = new System.Text.StringBuilder(); while (mOpenList.Count > 0) { AStarNode curNode = mOpenList [0]; if (curNode.coord == toCoord) { finallyNode = curNode; break; } mOpenList.RemoveAt(0); int dirCount = MapLayout.Instance.GetNextCoordList(curNode.coord, moveDirectionArray); for (int i = 0; i < dirCount; ++i) { IntVector2 childCoord = moveDirectionArray [i]; if (MapDataManager.Instance.IsBlock(childCoord.x, childCoord.y)) { continue; } bool isChildNodeInOpen = false; for (int j = 0; j < mOpenList.Count; ++j) { AStarNode openNode = mOpenList [j]; if (openNode.coord == childCoord) { //当前的childCoord已经在了openListh中了 if (openNode.valueG > curNode.valueG + CallDisG(curNode.coord, openNode.coord)) { //openNode的路径值大于了当前节点的路径值和当前点到openNode的路径值的和。代表从当前点连接到openNode是更快捷的路径 openNode.previousNode = curNode; openNode.valueG = curNode.valueG + CallDisG(curNode.coord, openNode.coord); } else { //不需要修改openNode的前节点,当前openNode是快捷的 } isChildNodeInOpen = true; } } if (!isChildNodeInOpen && !mCloseSet.Contains(childCoord.GetHashCode())) { AStarNode childNode = new AStarNode(); childNode.previousNode = curNode; childNode.valueG = curNode.valueG + CallDisG(curNode.coord, childNode.coord); childNode.coord = childCoord; childNode.valueH = CallDisH(childCoord, toCoord); mOpenList.Add(childNode); } } mOpenList.Sort(delegate(AStarNode x, AStarNode y) { return(x.valueF.CompareTo(y.valueF)); }); mCloseSet.Add(curNode.coord.GetHashCode()); } if (null != finallyNode) { List <IntVector2> retList = new List <IntVector2> (); while (finallyNode != null) { retList.Add(finallyNode.coord); finallyNode = finallyNode.previousNode; } retList.Reverse(); return(retList); } return(null); }
public override int GetHashCode() { return(coordinates.GetHashCode()); }