CoreUtil.Event.waitAllMulti C# (CSharp) Method

waitAllMulti() static private method

static private waitAllMulti ( Array events, int millisecs ) : bool
events Array
millisecs int
return bool
		static bool waitAllMulti(Event[] events, int millisecs)
		{
			int numBlocks = (events.Length + 63) / 64;
			List<Event>[] list = new List<Event>[numBlocks];
			int i;
			for (i = 0; i < numBlocks; i++)
			{
				list[i] = new List<Event>();
			}
			for (i = 0; i < events.Length; i++)
			{
				list[i / 64].Add(events[i]);
			}

			double start = Time.NowDouble;
			double giveup = start + (double)millisecs / 1000.0;
			foreach (List<Event> o in list)
			{
				double now = Time.NowDouble;
				if (now <= giveup || millisecs < 0)
				{
					int waitmsecs;
					if (millisecs >= 0)
					{
						waitmsecs = (int)((giveup - now) * 1000.0);
					}
					else
					{
						waitmsecs = Timeout.Infinite;
					}

					bool ret = waitAllInner(o.ToArray(), waitmsecs);
					if (ret == false)
					{
						return false;
					}
				}
				else
				{
					return false;
				}
			}

			return true;
		}