예제 #1
0
		void addThreadCommand(ThreadCommandType command, bool topPriority, params object[] args)
		{
			ThreadCommand cmd = new ThreadCommand();
			cmd.Type = command;
			cmd.Params = args;

			lock (threadCommands)
			{
				if (cmd.Type == ThreadCommandType.Stop)
				{
					foreach (ThreadCommand c in threadCommands)
						if (c.Type == ThreadCommandType.LoadTexture)
							(c.Params[0] as SceneNode).Drop();

					threadCommands.Clear();
				}

				if (topPriority && threadCommands.Count > 0)
				{
					ThreadCommand[] a = threadCommands.ToArray();
					threadCommands.Clear();
					threadCommands.Enqueue(cmd);
					for (int i = 0; i < a.Length; i++)
						threadCommands.Enqueue(a[i]);
				}
				else
				{
					threadCommands.Enqueue(cmd);
				}
			}
		}