Fusion.Core.Shell.Invoker.ExecuteQueue C# (CSharp) Method

ExecuteQueue() public method

Executes enqueued commands. Updates delayed commands.
public ExecuteQueue ( GameTime gameTime, CommandAffinity affinity, bool forceDelayed = false ) : void
gameTime Fusion.Engine.Common.GameTime
affinity CommandAffinity
forceDelayed bool
return void
		public void ExecuteQueue ( GameTime gameTime, CommandAffinity affinity, bool forceDelayed = false )
		{
			var delta = (int)gameTime.Elapsed.TotalMilliseconds;

			lock (lockObject) {

				delayed.Clear();

				while (queue.Any()) {
					
					var cmd = queue.Dequeue();

					if ( cmd.Affinity == affinity ) {

						if ( cmd.Delay<=0 || forceDelayed ) {
							//	execute :
							cmd.Execute();

							if (cmd.Result!=null) {
								Log.Message( "// Result: {0} //", cmd.GetStringResult() );
							}

							//	push to history :
							if (!cmd.NoRollback && cmd.Affinity==CommandAffinity.Default) {
								history.Push( cmd );
							}

						} else {

							cmd.Delay -= delta;

							delayed.Enqueue( cmd );

						}

					} else {
						
						delayed.Enqueue( cmd );

					}

				}

				Misc.Swap( ref delayed, ref queue );
			}
		}