42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using SRF.Service;
 | |
| 
 | |
| namespace SRDebugger.Internal
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Workaround for the debug panel not being initialized on startup.
 | |
|     /// SROptions needs to register itself but not cause auto-initialization.
 | |
|     /// This class buffers requests to register contains until there is a handler in place to deal with them.
 | |
|     /// Once the handler is in place, all buffered requests are passed in and future requests invoke the handler directly.
 | |
|     /// </summary>
 | |
|     [Service(typeof(InternalOptionsRegistry))]
 | |
|     public sealed class InternalOptionsRegistry
 | |
|     {
 | |
|         private List<object> _registeredContainers = new List<object>();
 | |
|         private Action<object> _handler;
 | |
| 
 | |
|         public void AddOptionContainer(object obj)
 | |
|         {
 | |
|             if (_handler != null)
 | |
|             {
 | |
|                 _handler(obj);
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             _registeredContainers.Add(obj);
 | |
|         }
 | |
| 
 | |
|         public void SetHandler(Action<object> action)
 | |
|         {
 | |
|             _handler = action;
 | |
| 
 | |
|             foreach (object o in _registeredContainers)
 | |
|             {
 | |
|                 _handler(o);
 | |
|             }
 | |
| 
 | |
|             _registeredContainers = null;
 | |
|         }
 | |
|     }
 | |
| } |