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); } }
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)))); } }
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); }
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)); }
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()); }
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); }
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); }
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); }
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); }
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); } }
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)); }
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]))); } } }
public static int AddPermissions(int permissions, params int[] permissionsToAdd) { return(BitwiseHelper.AddFlags(permissions, permissionsToAdd)); }
public static int TogglePermission(int permissions, int permissionToToggle) { return(BitwiseHelper.ToggleFlag(permissions, permissionToToggle)); }
public static int DeletePermissions(int permissions, params int[] permissionsToDelete) { return(BitwiseHelper.DeleteFlags(permissions, permissionsToDelete)); }
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()); }
/// <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)); }