using System; using System.Collections.Generic; using ICD.Common.Utils.Extensions; namespace ICD.Common.Utils { public static class GuidUtils { /// /// Generates a pseudo-random guid from the given seed. /// public static Guid GenerateSeeded(int seed) { Random seeded = new Random(seed); byte[] bytes = new byte[16]; seeded.NextBytes(bytes); return new Guid(bytes); } /// /// Combines the two guids to make a new, deterministic guid. /// public static Guid Combine(Guid a, Guid b) { byte[] aBytes = a.ToByteArray(); byte[] bBytes = b.ToByteArray(); for (int index = 0; index < aBytes.Length; index++) aBytes[index] = (byte)(aBytes[index] ^ bBytes[index]); return new Guid(aBytes); } /// /// Combines the guids in the given order to make a new, deterministic guid. /// public static Guid Combine(IEnumerable guids) { return guids.AggregateOrDefault(Combine, default(Guid)); } } }