コード例 #1
0
ファイル: Packet.cs プロジェクト: omidshahbazi/Game-Framework
        public static void ProcessReliablePackets(OutgoingUDPPacketsHolder Holder, Action <OutgoingUDPPacket> SendPacket)
        {
            ulong lastAckID = Holder.LastAckID;

            if (lastAckID == 0)
            {
                return;
            }

            ushort bitCount = Constants.UDP.ACK_MASK_SIZE * 8;

            ushort count = (ushort)Math.Min(Holder.LastAckID - 1, bitCount);

            for (short i = (short)count; i >= 0; --i)
            {
                ulong id = (ulong)((long)lastAckID - i);

                bool acked = (BitwiseHelper.IsEnabled(Holder.AckMask, (ushort)(bitCount - i)) || id == lastAckID);

                if (acked)
                {
                    Holder.PacketsMap.Remove(id);
                    continue;
                }

                OutgoingUDPPacket packet = Holder.PacketsMap[id];

                SendPacket(packet);
            }
        }
コード例 #2
0
 public static void SetCheckedItemsBitwiseHasFlag(this BaseCheckedListBoxControl chkl, int flags)
 {
     for (var i = 0; i < chkl.ItemCount; i++)
     {
         chkl.SetItemChecked(i, BitwiseHelper.HasFlag(flags, ConvertHelper.ToInt32(chkl.GetItemValue(i))));
     }
 }
コード例 #3
0
ファイル: Packet.cs プロジェクト: omidshahbazi/Game-Framework
        public static uint GetAckMask(IncomingUDPPacketsHolder IncomingHolder, uint AckMask)
        {
            AckMask <<= 1;

            ushort bitCount = Constants.UDP.ACK_MASK_SIZE * 8;

            for (ushort i = 0; i < bitCount; ++i)
            {
                ushort offset = (ushort)(i + 1);

                if (offset >= IncomingHolder.LastID)
                {
                    break;
                }

                ulong packetID = IncomingHolder.LastID - offset;

                IncomingUDPPacket packet = null;
                IncomingHolder.PacketsMap.TryGetValue(packetID, out packet);

                if (packet == null || packet.IsCompleted)
                {
                    AckMask = BitwiseHelper.Enable(AckMask, (ushort)(bitCount - offset));
                }
            }

            return(AckMask);
        }
コード例 #4
0
            private static object ReadPrimitive(BufferStream Buffer, Type Type)
            {
                uint size = Type.GetSizeOf();

                byte[] buffer = new byte[size];
                Buffer.ReadBytes(buffer, 0, size);

                return(BitwiseHelper.GetObject(Type, buffer));
            }
コード例 #5
0
        public GridNode[] GetAroundNodes(int X, int Y, int Offset, NodeStates StateMask)
        {
            List <GridNode> nodes = new List <GridNode>();

            GridNode node = null;

            node = GetNode(X - Offset, Y);
            if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
            {
                nodes.Add(node);
            }

            node = GetNode(X, Y - Offset);
            if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
            {
                nodes.Add(node);
            }

            node = GetNode(X + Offset, Y);
            if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
            {
                nodes.Add(node);
            }

            node = GetNode(X, Y + Offset);
            if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
            {
                nodes.Add(node);
            }

            node = GetNode(X - Offset, Y - Offset);
            if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
            {
                nodes.Add(node);
            }

            node = GetNode(X + Offset, Y - Offset);
            if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
            {
                nodes.Add(node);
            }

            node = GetNode(X - Offset, Y + Offset);
            if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
            {
                nodes.Add(node);
            }

            node = GetNode(X + Offset, Y + Offset);
            if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
            {
                nodes.Add(node);
            }

            return(nodes.ToArray());
        }
コード例 #6
0
        public static int GetCheckedItemsBitwiseAddFlag(this BaseCheckedListBoxControl chkl)
        {
            var flags = 0;

            for (var i = 0; i < chkl.CheckedItems.Count; i++)
            {
                flags = BitwiseHelper.AddFlag(flags, ConvertHelper.ToInt32(chkl.CheckedItems[i]));
            }
            return(flags);
        }
コード例 #7
0
        public override int GetHashCode()
        {
            const int prime  = 31;
            long      temp   = Convert.ToInt64(_lat);
            int       result = prime + (int)(temp ^ BitwiseHelper.ZeroFillRightShift(temp, 32));

            temp   = Convert.ToInt64(_lng);
            result = prime * result + (int)(temp ^ BitwiseHelper.ZeroFillRightShift(temp, 32));
            result = prime * result + (_normalized ? 1231 : 1237);

            return(result);
        }
コード例 #8
0
ファイル: Point2D.cs プロジェクト: stgwilli/ravendb
        public override int GetHashCode()
        {
            const int prime  = 31;
            int       result = 1;

            long temp = Convert.ToInt64(X);

            result = prime * result + (int)(temp ^ BitwiseHelper.ZeroFillRightShift(temp, 32));

            temp   = Convert.ToInt64(Y);
            result = prime * result + (int)(temp ^ BitwiseHelper.ZeroFillRightShift(temp, 32));

            return(result);
        }
コード例 #9
0
        public static int GetCheckedItemsBitwiseAddFlag(this BaseCheckedListBoxControl chkl, string name)
        {
            var flags = 0;

            FieldInfo    fi = null;
            PropertyInfo pi = null;

            if (chkl.ItemCount > 0)
            {
                fi = chkl.GetItem(0).GetType().GetField(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
                pi = chkl.GetItem(0).GetType().GetProperty(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
            }

            if (fi != null)
            {
                foreach (var item in chkl.CheckedItems)
                {
                    flags = BitwiseHelper.AddFlag(flags, ConvertHelper.ToInt32(fi.GetValue(item)));
                }
            }

            if (pi != null)
            {
                foreach (var item in chkl.CheckedItems)
                {
                    flags = BitwiseHelper.AddFlag(flags, ConvertHelper.ToInt32(pi.GetValue(item, null)));
                }
            }

            if (fi == null && pi == null && chkl.GetItem(0) is DataRowView)
            {
                foreach (var item in chkl.CheckedItems)
                {
                    flags = BitwiseHelper.AddFlag(flags, ConvertHelper.ToInt32(((DataRowView)item)[name]));
                }
            }

            return(flags);
        }
コード例 #10
0
 private static void WriteValue(BufferStream Buffer, object Value, Type Type)
 {
     if (Type.IsArray)
     {
         SerializeArray(Value, Buffer);
     }
     else if (Type.IsPrimitive)
     {
         Buffer.WriteBytes(BitwiseHelper.GetBytes(Value, Type));
     }
     else if (Type.IsEnum)
     {
         Buffer.WriteString(Value.ToString());
     }
     else if (Type == typeof(string))
     {
         Buffer.WriteString((string)Value);
     }
     else
     {
         SerializeObject(Value, Type, Buffer);
     }
 }
コード例 #11
0
        private GridNode GetNearestNode(Vector3 OriginPosition, int X, int Y, int Offset, Number SqrMaxRadius, NodeStates StateMask)
        {
            if ((Offset * TileSize) * (Offset * TileSize) > SqrMaxRadius)
            {
                return(null);
            }

            GridNode[] adjNode = GetAroundNodes(X, Y, Offset, NodeStates.Blocked | NodeStates.Walkable);

            bool isOutOfDistance = false;

            for (int i = 0; i < adjNode.Length; ++i)
            {
                GridNode node = adjNode[i];

                if ((node.Position - OriginPosition).SqrMagnitude > SqrMaxRadius)
                {
                    isOutOfDistance = true;
                    continue;
                }

                if (!BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
                {
                    continue;
                }

                return(node);
            }

            if (isOutOfDistance)
            {
                return(null);
            }

            return(GetNearestNode(OriginPosition, X, Y, Offset + 1, SqrMaxRadius, StateMask));
        }
コード例 #12
0
        public static void SetCheckedItemsBitwiseHasFlag(this BaseCheckedListBoxControl chkl, string name, int flags)
        {
            FieldInfo    fi = null;
            PropertyInfo pi = null;

            if (chkl.ItemCount > 0)
            {
                fi = chkl.GetItem(0).GetType().GetField(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
                pi = chkl.GetItem(0).GetType().GetProperty(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
            }


            if (fi != null)
            {
                for (var i = 0; i < chkl.ItemCount; i++)
                {
                    chkl.SetItemChecked(i, BitwiseHelper.HasFlag(flags, ConvertHelper.ToInt32(fi.GetValue(chkl.GetItem(i)))));
                }
            }

            if (pi != null)
            {
                for (var i = 0; i < chkl.ItemCount; i++)
                {
                    chkl.SetItemChecked(i, BitwiseHelper.HasFlag(flags, ConvertHelper.ToInt32(pi.GetValue(chkl.GetItem(i), null))));
                }
            }

            if (fi == null && pi == null && chkl.GetItem(0) is DataRowView)
            {
                for (var i = 0; i < chkl.ItemCount; i++)
                {
                    chkl.SetItemChecked(i, BitwiseHelper.HasFlag(flags, ConvertHelper.ToInt32(((DataRowView)chkl.GetItem(i))[name])));
                }
            }
        }
コード例 #13
0
 public static int AddPermissions(int permissions, params int[] permissionsToAdd)
 {
     return(BitwiseHelper.AddFlags(permissions, permissionsToAdd));
 }
コード例 #14
0
 public static int TogglePermission(int permissions, int permissionToToggle)
 {
     return(BitwiseHelper.ToggleFlag(permissions, permissionToToggle));
 }
コード例 #15
0
 public static int DeletePermissions(int permissions, params int[] permissionsToDelete)
 {
     return(BitwiseHelper.DeleteFlags(permissions, permissionsToDelete));
 }
コード例 #16
0
        public GridNode[] GetDirectionalAdjucentNodes(int X, int Y, int Offset, Directions Direction = Directions.All, NodeStates StateMask = NodeStates.Blocked | NodeStates.Walkable)
        {
            List <GridNode> nodes = new List <GridNode>();

            GridNode node = null;

            if (BitwiseHelper.IsEnabled((long)Direction, (ushort)Directions.North))
            {
                node = GetNode(X, Y + Offset);
                if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
                {
                    nodes.Add(node);
                }
            }

            if (BitwiseHelper.IsEnabled((long)Direction, (ushort)Directions.South))
            {
                node = GetNode(X, Y - Offset);
                if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
                {
                    nodes.Add(node);
                }
            }

            if (BitwiseHelper.IsEnabled((long)Direction, (ushort)Directions.East))
            {
                node = GetNode(X + Offset, Y);
                if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
                {
                    nodes.Add(node);
                }
            }

            if (BitwiseHelper.IsEnabled((long)Direction, (ushort)Directions.West))
            {
                node = GetNode(X - Offset, Y);
                if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
                {
                    nodes.Add(node);
                }
            }

            if (BitwiseHelper.IsEnabled((long)Direction, (ushort)Directions.NorthEast))
            {
                node = GetNode(X + Offset, Y + Offset);
                if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
                {
                    nodes.Add(node);
                }
            }

            if (BitwiseHelper.IsEnabled((long)Direction, (ushort)Directions.NorthWest))
            {
                node = GetNode(X - Offset, Y + Offset);
                if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
                {
                    nodes.Add(node);
                }
            }

            if (BitwiseHelper.IsEnabled((long)Direction, (ushort)Directions.SouthEast))
            {
                node = GetNode(X + Offset, Y - Offset);
                if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
                {
                    nodes.Add(node);
                }
            }

            if (BitwiseHelper.IsEnabled((long)Direction, (ushort)Directions.SouthWest))
            {
                node = GetNode(X - Offset, Y - Offset);
                if (node != null && BitwiseHelper.IsEnabled((int)StateMask, (ushort)node.State))
                {
                    nodes.Add(node);
                }
            }

            return(nodes.ToArray());
        }
コード例 #17
0
 /// <summary>
 /// უფლებების შემოწმება.
 /// </summary>
 /// <param name="permissions">ლოგიკური უფლება (1 | 2 | 4 | 8).</param>
 /// <param name="permissionToCheck">მოქმედება (ნახვა, დამატება, შეცვლა, წაშლა...).</param>
 /// <returns>აბრუნებს true-ს თუ აქვს უფლება.</returns>
 public static bool IsPermitted(int permissions, int permissionToCheck)
 {
     return(BitwiseHelper.HasFlag(permissions, permissionToCheck));
 }