GetHashCode() public method

public GetHashCode ( ) : int
return int
Example #1
0
 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);
    }
Example #4
0
 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;
 }
Example #5
0
            public override int GetHashCode()
            {
                var hashCode = 500944194;

                hashCode = hashCode * -1521134295 + Enabled.GetHashCode();
                hashCode = hashCode * -1521134295 + Position.GetHashCode();
                hashCode = hashCode * -1521134295 + Motion.GetHashCode();
                return(hashCode);
            }
Example #6
0
    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));
    }
Example #7
0
    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);
    }
Example #8
0
 public override int GetHashCode()
 {
     return(leftPos.GetHashCode() + rightPos.GetHashCode());
 }
Example #9
0
    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);
    }
Example #10
0
 public override int GetHashCode()
 {
     return(coordinates.GetHashCode());
 }