1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- namespace YooAsset.Editor
- {
- public class BuildContext
- {
- private readonly Dictionary<System.Type, IContextObject> _contextObjects = new Dictionary<System.Type, IContextObject>();
- /// <summary>
- /// 清空所有情景对象
- /// </summary>
- public void ClearAllContext()
- {
- _contextObjects.Clear();
- }
- /// <summary>
- /// 设置情景对象
- /// </summary>
- public void SetContextObject(IContextObject contextObject)
- {
- if (contextObject == null)
- throw new ArgumentNullException("contextObject");
- var type = contextObject.GetType();
- if (_contextObjects.ContainsKey(type))
- throw new Exception($"Context object {type} is already existed.");
- _contextObjects.Add(type, contextObject);
- }
- /// <summary>
- /// 获取情景对象
- /// </summary>
- public T GetContextObject<T>() where T : IContextObject
- {
- var type = typeof(T);
- if (_contextObjects.TryGetValue(type, out IContextObject contextObject))
- {
- return (T)contextObject;
- }
- else
- {
- throw new Exception($"Not found context object : {type}");
- }
- }
- }
- }
|