Просмотр исходного кода

1.修复了一个命令行解析bug
2.ComonentEvent改成EntityEvent,只有Entity和Component支持Awake Load Update

tanghai 9 лет назад
Родитель
Сommit
41d4c39934
40 измененных файлов с 114 добавлено и 196 удалено
  1. 5 4
      Server/App/Program.cs
  2. 1 1
      Server/Controller/Component/RealmGateAddressComponent.cs
  3. 1 1
      Server/Controller/Message/M2A_ReloadHandler.cs
  4. 1 1
      Server/Model/Component/AppManagerComponent.cs
  5. 1 1
      Server/Model/Component/GateSessionKeyComponent.cs
  6. 1 1
      Server/Model/Component/OptionComponent.cs
  7. 1 1
      Server/Model/Component/StartConfigComponent.cs
  8. 1 1
      Server/Model/Component/Unit/LockComponent.cs
  9. 1 1
      Server/Model/Component/Unit/MasterComponent.cs
  10. 6 15
      Server/Model/Server.Model.csproj
  11. 2 2
      Unity/Assets/Editor/EditorInit.cs
  12. 1 1
      Unity/Assets/Scripts/Component/ClientConfigComponent.cs
  13. 1 1
      Unity/Assets/Scripts/Component/ConfigComponent.cs
  14. 2 2
      Unity/Assets/Scripts/Component/EventComponent.cs
  15. 1 1
      Unity/Assets/Scripts/Component/GameObjectComponent.cs
  16. 2 2
      Unity/Assets/Scripts/Component/MessageDispatherComponent.cs
  17. 1 1
      Unity/Assets/Scripts/Component/NetInnerComponent.cs
  18. 1 1
      Unity/Assets/Scripts/Component/NetOuterComponent.cs
  19. 1 1
      Unity/Assets/Scripts/Component/RobotComponent.cs
  20. 1 1
      Unity/Assets/Scripts/Component/TimerComponent.cs
  21. 2 2
      Unity/Assets/Scripts/Component/UIComponent.cs
  22. 3 3
      Unity/Assets/Scripts/Entity/Game.cs
  23. 3 3
      Unity/Assets/Scripts/Init.cs
  24. 10 3
      Unity/Assets/Scripts/Object/Component.cs
  25. 0 1
      Unity/Assets/Scripts/Object/Disposer.cs
  26. 12 5
      Unity/Assets/Scripts/Object/Entity.cs
  27. 2 2
      Unity/Assets/Scripts/Object/EntityEventAttribute.cs
  28. 0 0
      Unity/Assets/Scripts/Object/EntityEventAttribute.cs.meta
  29. 39 39
      Unity/Assets/Scripts/Object/EntityEventManager.cs
  30. 0 0
      Unity/Assets/Scripts/Object/EntityEventManager.cs.meta
  31. 0 25
      Unity/Assets/Scripts/Object/IAwake.cs
  32. 0 12
      Unity/Assets/Scripts/Object/IAwake.cs.meta
  33. 0 10
      Unity/Assets/Scripts/Object/ILoader.cs
  34. 0 12
      Unity/Assets/Scripts/Object/ILoader.cs.meta
  35. 0 10
      Unity/Assets/Scripts/Object/IUpdate.cs
  36. 0 12
      Unity/Assets/Scripts/Object/IUpdate.cs.meta
  37. 1 10
      Unity/Assets/Scripts/Object/Object.cs
  38. 1 1
      Unity/Controller/Component/BenchmarkComponentE.cs
  39. 2 5
      Unity/Unity.csproj
  40. 7 1
      Unity/Unity.sln.DotSettings

+ 5 - 4
Server/App/Program.cs

@@ -1,6 +1,7 @@
 using System;
 using Base;
 using Model;
+using MongoDB.Bson;
 using NLog;
 
 namespace App
@@ -11,10 +12,10 @@ namespace App
 		{
 			try
 			{
-				Game.ComponentEventManager.Register("Model", typeof(Game).Assembly);
-				Game.ComponentEventManager.Register("Controller", DllHelper.GetController());
+				Game.EntityEventManager.Register("Model", typeof(Game).Assembly);
+				Game.EntityEventManager.Register("Controller", DllHelper.GetController());
 
-				Options options = Game.Scene.AddComponent<OptionComponent>().Options;
+				Options options = Game.Scene.AddComponent<OptionComponent, string[]>(args).Options;
 				StartConfig startConfig = Game.Scene.AddComponent<StartConfigComponent, string, int>(options.Config, options.AppId).StartConfig;
 
 				IdGenerater.AppId = options.AppId;
@@ -68,7 +69,7 @@ namespace App
 				{
 					try
 					{
-						Game.ComponentEventManager.Update();
+						Game.EntityEventManager.Update();
 					}
 					catch (Exception e)
 					{

+ 1 - 1
Server/Controller/Component/RealmGateAddressComponent.cs

@@ -2,7 +2,7 @@
 
 namespace Controller
 {
-	[ComponentEvent(typeof(RealmGateAddressComponent))]
+	[EntityEvent(typeof(RealmGateAddressComponent))]
 	public static class RealmGateAddressComponentE
 	{
 		public static void Awake(this RealmGateAddressComponent component)

+ 1 - 1
Server/Controller/Message/M2A_ReloadHandler.cs

@@ -12,7 +12,7 @@ namespace Controller
 			A2M_Reload response = new A2M_Reload();
 			try
 			{
-				Game.ComponentEventManager.Register("Controller", DllHelper.GetController());
+				Game.EntityEventManager.Register("Controller", DllHelper.GetController());
 				reply(response);
 			}
 			catch (Exception e)

+ 1 - 1
Server/Model/Component/AppManagerComponent.cs

@@ -6,7 +6,7 @@ using Base;
 
 namespace Model
 {
-	[ComponentEvent(typeof(AppManagerComponent))]
+	[EntityEvent(typeof(AppManagerComponent))]
 	public class AppManagerComponent: Component
 	{
 		private readonly Dictionary<int, Process> processes = new Dictionary<int, Process>();

+ 1 - 1
Server/Model/Component/GateSessionKeyComponent.cs

@@ -3,7 +3,7 @@ using Base;
 
 namespace Model
 {
-	[ComponentEvent(typeof(GateSessionKeyComponent))]
+	[EntityEvent(typeof(GateSessionKeyComponent))]
 	public class GateSessionKeyComponent : Component
 	{
 		private TimerComponent timerComponent;

+ 1 - 1
Server/Model/Component/OptionComponent.cs

@@ -3,7 +3,7 @@ using CommandLine;
 
 namespace Model
 {
-	[ComponentEvent(typeof(OptionComponent))]
+	[EntityEvent(typeof(OptionComponent))]
 	public class OptionComponent : Component
 	{
 		public Options Options { get; } = new Options();

+ 1 - 1
Server/Model/Component/StartConfigComponent.cs

@@ -5,7 +5,7 @@ using Base;
 
 namespace Model
 {
-	[ComponentEvent(typeof(StartConfigComponent))]
+	[EntityEvent(typeof(StartConfigComponent))]
 	public class StartConfigComponent: Component
 	{
 		private readonly List<StartConfig> allConfigs = new List<StartConfig>();

+ 1 - 1
Server/Model/Component/Unit/LockComponent.cs

@@ -15,7 +15,7 @@ namespace Model
 	/// <summary>
 	/// 分布式锁组件,Unit对象可能在不同进程上有镜像,访问该对象的时候需要对他加锁
 	/// </summary>
-	[ComponentEvent(typeof(LockComponent))]
+	[EntityEvent(typeof(LockComponent))]
 	public class LockComponent: Component
 	{
 		private LockStatus status = LockStatus.LockedNot;

+ 1 - 1
Server/Model/Component/Unit/MasterComponent.cs

@@ -16,7 +16,7 @@ namespace Model
 		}
 	}
 
-	[ComponentEvent(typeof(MasterComponent))]
+	[EntityEvent(typeof(MasterComponent))]
 	public class MasterComponent : Component
 	{
 		private readonly List<string> slavesAddress = new List<string>();

+ 6 - 15
Server/Model/Server.Model.csproj

@@ -170,29 +170,20 @@
     <Compile Include="..\..\Unity\Assets\Scripts\Object\Component.cs">
       <Link>Object\Component.cs</Link>
     </Compile>
-    <Compile Include="..\..\Unity\Assets\Scripts\Object\ComponentEventAttribute.cs">
-      <Link>Object\ComponentEventAttribute.cs</Link>
-    </Compile>
-    <Compile Include="..\..\Unity\Assets\Scripts\Object\ComponentEventManager.cs">
-      <Link>Object\ComponentEventManager.cs</Link>
-    </Compile>
     <Compile Include="..\..\Unity\Assets\Scripts\Object\Disposer.cs">
       <Link>Object\Disposer.cs</Link>
     </Compile>
     <Compile Include="..\..\Unity\Assets\Scripts\Object\Entity.cs">
       <Link>Object\Entity.cs</Link>
     </Compile>
-    <Compile Include="..\..\Unity\Assets\Scripts\Object\EntityType.cs">
-      <Link>Object\EntityType.cs</Link>
+    <Compile Include="..\..\Unity\Assets\Scripts\Object\EntityEventAttribute.cs">
+      <Link>Object\EntityEventAttribute.cs</Link>
     </Compile>
-    <Compile Include="..\..\Unity\Assets\Scripts\Object\IAwake.cs">
-      <Link>Object\IAwake.cs</Link>
+    <Compile Include="..\..\Unity\Assets\Scripts\Object\EntityEventManager.cs">
+      <Link>Object\EntityEventManager.cs</Link>
     </Compile>
-    <Compile Include="..\..\Unity\Assets\Scripts\Object\ILoader.cs">
-      <Link>Object\ILoader.cs</Link>
-    </Compile>
-    <Compile Include="..\..\Unity\Assets\Scripts\Object\IUpdate.cs">
-      <Link>Object\IUpdate.cs</Link>
+    <Compile Include="..\..\Unity\Assets\Scripts\Object\EntityType.cs">
+      <Link>Object\EntityType.cs</Link>
     </Compile>
     <Compile Include="..\..\Unity\Assets\Scripts\Object\Object.cs">
       <Link>Object\Object.cs</Link>

+ 2 - 2
Unity/Assets/Editor/EditorInit.cs

@@ -10,7 +10,7 @@ namespace MyEditor
 	{
 		static EditorInit()
 		{
-			Game.ComponentEventManager.Register("Editor", typeof(EditorInit).Assembly);
+			Game.EntityEventManager.Register("Editor", typeof(EditorInit).Assembly);
 			EditorApplication.update += Update;
 		}
 
@@ -23,7 +23,7 @@ namespace MyEditor
 
 			try
 			{
-				Game.ComponentEventManager.Update();
+				Game.EntityEventManager.Update();
 			}
 			catch (Exception e)
 			{

+ 1 - 1
Unity/Assets/Scripts/Component/ClientConfigComponent.cs

@@ -3,7 +3,7 @@ using Base;
 
 namespace Model
 {
-	[ComponentEvent(typeof(ClientConfigComponent))]
+	[EntityEvent(typeof(ClientConfigComponent))]
 	public class ClientConfigComponent : Component
     {
 		public StartConfig Config { get; private set; }

+ 1 - 1
Unity/Assets/Scripts/Component/ConfigComponent.cs

@@ -11,7 +11,7 @@ namespace Model
 
 		private void Load()
 		{
-			Assembly assembly = Game.ComponentEventManager.GetAssembly("Base");
+			Assembly assembly = Game.EntityEventManager.GetAssembly("Base");
 
 			this.allConfig = new Dictionary<Type, ICategory>();
 			Type[] types = assembly.GetTypes();

+ 2 - 2
Unity/Assets/Scripts/Component/EventComponent.cs

@@ -8,7 +8,7 @@ namespace Model
 	/// <summary>
 	/// 事件分发
 	/// </summary>
-	[ComponentEvent(typeof(EventComponent))]
+	[EntityEvent(typeof(EventComponent))]
 	public class EventComponent: Component
 	{
 		private Dictionary<EventIdType, List<object>> allEvents;
@@ -21,7 +21,7 @@ namespace Model
 		private void Load()
 		{
 			this.allEvents = new Dictionary<EventIdType, List<object>>();
-			Assembly[] assemblies = Game.ComponentEventManager.GetAssemblies();
+			Assembly[] assemblies = Game.EntityEventManager.GetAssemblies();
 			foreach (Assembly assembly in assemblies)
 			{
 				Type[] types = assembly.GetTypes();

+ 1 - 1
Unity/Assets/Scripts/Component/GameObjectComponent.cs

@@ -2,7 +2,7 @@
 
 namespace Model
 {
-	[ComponentEvent(typeof(GameObjectComponent))]
+	[EntityEvent(typeof(GameObjectComponent))]
 	public class GameObjectComponent : Component
     {
 		public GameObject GameObject { get; private set; }

+ 2 - 2
Unity/Assets/Scripts/Component/MessageDispatherComponent.cs

@@ -8,7 +8,7 @@ namespace Model
 	/// <summary>
 	/// 消息分发组件
 	/// </summary>
-	[ComponentEvent(typeof(MessageDispatherComponent))]
+	[EntityEvent(typeof(MessageDispatherComponent))]
 	public class MessageDispatherComponent: Component
 	{
 		private AppType AppType;
@@ -26,7 +26,7 @@ namespace Model
 			this.handlers = new Dictionary<ushort, List<IMHandler>>();
 			this.messageOpcode = new Dictionary<Type, MessageAttribute>();
 
-			Assembly[] assemblies = Game.ComponentEventManager.GetAssemblies();
+			Assembly[] assemblies = Game.EntityEventManager.GetAssemblies();
 
 			foreach (Assembly assembly in assemblies)
 			{

+ 1 - 1
Unity/Assets/Scripts/Component/NetInnerComponent.cs

@@ -3,7 +3,7 @@ using Base;
 
 namespace Model
 {
-	[ComponentEvent(typeof(NetInnerComponent))]
+	[EntityEvent(typeof(NetInnerComponent))]
 	public class NetInnerComponent : NetworkComponent
 	{
 		private readonly Dictionary<string, Session> adressSessions = new Dictionary<string, Session>();

+ 1 - 1
Unity/Assets/Scripts/Component/NetOuterComponent.cs

@@ -2,7 +2,7 @@
 
 namespace Model
 {
-	[ComponentEvent(typeof(NetOuterComponent))]
+	[EntityEvent(typeof(NetOuterComponent))]
 	public class NetOuterComponent : NetworkComponent
 	{
 		private void Awake()

+ 1 - 1
Unity/Assets/Scripts/Component/RobotComponent.cs

@@ -1,6 +1,6 @@
 namespace Model
 {
-	[ComponentEvent(typeof(RobotComponent))]
+	[EntityEvent(typeof(RobotComponent))]
 	public class RobotComponent : Component
     {
 		private void Awake()

+ 1 - 1
Unity/Assets/Scripts/Component/TimerComponent.cs

@@ -12,7 +12,7 @@ namespace Model
 		public TaskCompletionSource<bool> tcs;
 	}
 
-	[ComponentEvent(typeof(TimerComponent))]
+	[EntityEvent(typeof(TimerComponent))]
 	public class TimerComponent: Component
 	{
 		private readonly Dictionary<long, Timer> timers = new Dictionary<long, Timer>();

+ 2 - 2
Unity/Assets/Scripts/Component/UIComponent.cs

@@ -10,7 +10,7 @@ namespace Model
 	/// <summary>
 	/// 管理所有UI
 	/// </summary>
-	[ComponentEvent(typeof(UIComponent))]
+	[EntityEvent(typeof(UIComponent))]
 	public class UIComponent: Component
 	{
         private UI Root;
@@ -50,7 +50,7 @@ namespace Model
 		{
 			this.UiTypes = new Dictionary<UIType, IUIFactory>();
 
-			Assembly[] assemblies = Game.ComponentEventManager.GetAssemblies();
+			Assembly[] assemblies = Game.EntityEventManager.GetAssemblies();
 			foreach (Assembly assembly in assemblies)
 			{
 				Type[] types = assembly.GetTypes();

+ 3 - 3
Unity/Assets/Scripts/Entity/Game.cs

@@ -9,7 +9,7 @@ namespace Base
 	{
 		private static readonly HashSet<Disposer> disposers = new HashSet<Disposer>();
 
-		private static ComponentEventManager componentEventManager;
+		private static EntityEventManager entityEventManager;
 
 		private static Scene scene;
 
@@ -36,11 +36,11 @@ namespace Base
 			disposers.Clear();
 		}
 
-		public static ComponentEventManager ComponentEventManager
+		public static EntityEventManager EntityEventManager
 		{
 			get
 			{
-				return componentEventManager ?? (componentEventManager = new ComponentEventManager());
+				return entityEventManager ?? (entityEventManager = new EntityEventManager());
 			}
 		}
 

+ 3 - 3
Unity/Assets/Scripts/Init.cs

@@ -8,8 +8,8 @@ namespace Model
 	{
 		private void Start()
 		{
-			Game.ComponentEventManager.Register("Model", typeof(Game).Assembly);
-			Game.ComponentEventManager.Register("Controller", DllHelper.GetController());
+			Game.EntityEventManager.Register("Model", typeof(Game).Assembly);
+			Game.EntityEventManager.Register("Controller", DllHelper.GetController());
 
 			Game.Scene.AddComponent<EventComponent>().Run(EventIdType.InitSceneStart);
 		}
@@ -18,7 +18,7 @@ namespace Model
 		{
 			try
 			{
-				Game.ComponentEventManager.Update();
+				Game.EntityEventManager.Update();
 			}
 			catch (Exception e)
 			{

+ 10 - 3
Unity/Assets/Scripts/Object/Component.cs

@@ -16,12 +16,12 @@ namespace Model
 
 		protected Component()
 		{
-			Game.ComponentEventManager.Add(this);
+			Game.EntityEventManager.Add(this);
 		}
 
 		protected Component(long id): base(id)
 		{
-			Game.ComponentEventManager.Add(this);
+			Game.EntityEventManager.Add(this);
 		}
 
 		public T GetComponent<T>() where T: Component
@@ -38,7 +38,14 @@ namespace Model
 
 			base.Dispose();
 
-			Game.ComponentEventManager.Remove(this);
+			Game.EntityEventManager.Remove(this);
+		}
+
+		public override void EndInit()
+		{
+			base.EndInit();
+
+			Game.EntityEventManager.Add(this);
 		}
 	}
 }

+ 0 - 1
Unity/Assets/Scripts/Object/Disposer.cs

@@ -24,7 +24,6 @@ namespace Model
 
 		public override void EndInit()
 		{
-			Game.ComponentEventManager.Add(this);
 		}
 	}
 }

+ 12 - 5
Unity/Assets/Scripts/Object/Entity.cs

@@ -20,11 +20,13 @@ namespace Model
 		protected Entity(EntityType entityType)
 		{
 			this.Type = entityType;
+			Game.EntityEventManager.Add(this);
 		}
 
 		protected Entity(long id, EntityType entityType) : base(id)
 		{
 			this.Type = entityType;
+			Game.EntityEventManager.Add(this);
 		}
 		
 		public override void Dispose()
@@ -47,6 +49,8 @@ namespace Model
 					Log.Error(e.ToString());
 				}
 			}
+
+			Game.EntityEventManager.Remove(this);
 		}
 
 		public K AddComponent<K>() where K : Component, new()
@@ -66,7 +70,7 @@ namespace Model
 
 			this.components.Add(component);
 			this.componentDict.Add(component.GetType(), component);
-			Game.ComponentEventManager.Awake(component);
+			Game.EntityEventManager.Awake(component);
 			return component;
 		}
 
@@ -87,7 +91,7 @@ namespace Model
 
 			this.components.Add(component);
 			this.componentDict.Add(component.GetType(), component);
-			Game.ComponentEventManager.Awake(component, p1);
+			Game.EntityEventManager.Awake(component, p1);
 			return component;
 		}
 
@@ -108,7 +112,7 @@ namespace Model
 
 			this.components.Add(component);
 			this.componentDict.Add(component.GetType(), component);
-			Game.ComponentEventManager.Awake(component, p1, p2);
+			Game.EntityEventManager.Awake(component, p1, p2);
 			return component;
 		}
 
@@ -130,7 +134,7 @@ namespace Model
 
 			this.components.Add(component);
 			this.componentDict.Add(component.GetType(), component);
-			Game.ComponentEventManager.Awake(component, p1, p2, p3);
+			Game.EntityEventManager.Awake(component, p1, p2, p3);
 			return component;
 		}
 
@@ -147,7 +151,7 @@ namespace Model
 			}
 			this.components.Add(component);
 			this.componentDict.Add(component.GetType(), component);
-			Game.ComponentEventManager.Awake(component);
+			Game.EntityEventManager.Awake(component);
 		}
 
 		public void RemoveComponent<K>() where K : Component
@@ -192,6 +196,9 @@ namespace Model
 		public override void EndInit()
 		{
 			base.EndInit();
+
+			Game.EntityEventManager.Add(this);
+
 			if (this.components.Count == 0)
 			{
 				this.components = null;

+ 2 - 2
Unity/Assets/Scripts/Object/ComponentEventAttribute.cs → Unity/Assets/Scripts/Object/EntityEventAttribute.cs

@@ -3,11 +3,11 @@
 namespace Model
 {
 	[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
-	public class ComponentEventAttribute: Attribute
+	public class EntityEventAttribute: Attribute
 	{
 		public Type ClassType;
 
-		public ComponentEventAttribute(Type classType)
+		public EntityEventAttribute(Type classType)
 		{
 			this.ClassType = classType;
 		}

+ 0 - 0
Unity/Assets/Scripts/Object/ComponentEventAttribute.cs.meta → Unity/Assets/Scripts/Object/EntityEventAttribute.cs.meta


+ 39 - 39
Unity/Assets/Scripts/Object/ComponentEventManager.cs → Unity/Assets/Scripts/Object/EntityEventManager.cs

@@ -8,7 +8,7 @@ using Base;
 namespace Model
 {
 	[Flags]
-	public enum DisposerEventType
+	public enum EntityEventType
 	{
 		Awake = 1,
 		Awake1 = 2,
@@ -18,11 +18,11 @@ namespace Model
 		Load = 32,
 	}
 
-	public class DisposerTypeInfo
+	public class EntityTypeInfo
 	{
-		private readonly Dictionary<DisposerEventType, MethodInfo> infos = new Dictionary<DisposerEventType, MethodInfo>();
+		private readonly Dictionary<EntityEventType, MethodInfo> infos = new Dictionary<EntityEventType, MethodInfo>();
 
-		public void Add(DisposerEventType type, MethodInfo methodInfo)
+		public void Add(EntityEventType type, MethodInfo methodInfo)
 		{
 			try
 			{
@@ -34,14 +34,14 @@ namespace Model
 			}
 		}
 
-		public MethodInfo Get(DisposerEventType type)
+		public MethodInfo Get(EntityEventType type)
 		{
 			MethodInfo methodInfo;
 			this.infos.TryGetValue(type, out methodInfo);
 			return methodInfo;
 		}
 
-		public DisposerEventType[] GetDisposerEvent2Types()
+		public EntityEventType[] GetDisposerEvent2Types()
 		{
 			return this.infos.Keys.ToArray();
 		}
@@ -49,7 +49,7 @@ namespace Model
 		public override string ToString()
 		{
 			StringBuilder sb = new StringBuilder();
-			foreach (DisposerEventType disposerEventType in this.infos.Keys.ToArray())
+			foreach (EntityEventType disposerEventType in this.infos.Keys.ToArray())
 			{
 				sb.Append($"{disposerEventType} {this.infos[disposerEventType].Name} ");
 			}
@@ -57,17 +57,17 @@ namespace Model
 		}
 	}
 
-	public sealed class ComponentEventManager
+	public sealed class EntityEventManager
 	{
 		private readonly Dictionary<string, Assembly> assemblies = new Dictionary<string, Assembly>();
 
-		private readonly Dictionary<DisposerEventType, HashSet<Disposer>> disposers = new Dictionary<DisposerEventType, HashSet<Disposer>>();
+		private readonly Dictionary<EntityEventType, HashSet<Disposer>> disposers = new Dictionary<EntityEventType, HashSet<Disposer>>();
 
-		private Dictionary<Type, DisposerTypeInfo> eventInfo;
+		private Dictionary<Type, EntityTypeInfo> eventInfo;
 
-		public ComponentEventManager()
+		public EntityEventManager()
 		{
-			foreach (DisposerEventType t in Enum.GetValues(typeof(DisposerEventType)))
+			foreach (EntityEventType t in Enum.GetValues(typeof(EntityEventType)))
 			{
 				this.disposers.Add(t, new HashSet<Disposer>());
 			}
@@ -75,7 +75,7 @@ namespace Model
 
 		public void Register(string name, Assembly assembly)
 		{
-			this.eventInfo = new Dictionary<Type, DisposerTypeInfo>();
+			this.eventInfo = new Dictionary<Type, EntityTypeInfo>();
 
 			this.assemblies[name] = assembly;
 			
@@ -84,19 +84,19 @@ namespace Model
 				Type[] types = ass.GetTypes();
 				foreach (Type type in types)
 				{
-					object[] attrs = type.GetCustomAttributes(typeof(ComponentEventAttribute), true);
+					object[] attrs = type.GetCustomAttributes(typeof(EntityEventAttribute), true);
 					if (attrs.Length == 0)
 					{
 						continue;
 					}
 
-					ComponentEventAttribute componentEventAttribute = attrs[0] as ComponentEventAttribute;
+					EntityEventAttribute entityEventAttribute = attrs[0] as EntityEventAttribute;
 
-					Type type2 = componentEventAttribute.ClassType;
+					Type type2 = entityEventAttribute.ClassType;
 
 					if (!this.eventInfo.ContainsKey(type2))
 					{
-						this.eventInfo.Add(type2, new DisposerTypeInfo());
+						this.eventInfo.Add(type2, new EntityTypeInfo());
 					}
 
 					foreach (MethodInfo methodInfo in type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly))
@@ -107,13 +107,13 @@ namespace Model
 							--n;
 						}
 						string sn = n > 0? $"{methodInfo.Name}{n}" : methodInfo.Name;
-						foreach (string s in Enum.GetNames(typeof(DisposerEventType)))
+						foreach (string s in Enum.GetNames(typeof(EntityEventType)))
 						{
 							if (s != sn)
 							{
 								continue;
 							}
-							DisposerEventType t = EnumHelper.FromString<DisposerEventType>(s);
+							EntityEventType t = EnumHelper.FromString<EntityEventType>(s);
 							this.eventInfo[type2].Add(t, methodInfo);
 							break;
 						}
@@ -126,13 +126,13 @@ namespace Model
 
 		public void Add(Disposer disposer)
 		{
-			DisposerTypeInfo disposerTypeInfo;
-			if (!this.eventInfo.TryGetValue(disposer.GetType(), out disposerTypeInfo))
+			EntityTypeInfo entityTypeInfo;
+			if (!this.eventInfo.TryGetValue(disposer.GetType(), out entityTypeInfo))
 			{
 				return;
 			}
 
-			foreach (DisposerEventType disposerEvent2Type in disposerTypeInfo.GetDisposerEvent2Types())
+			foreach (EntityEventType disposerEvent2Type in entityTypeInfo.GetDisposerEvent2Types())
 			{
 				this.disposers[disposerEvent2Type].Add(disposer);
 			}
@@ -140,13 +140,13 @@ namespace Model
 
 		public void Remove(Disposer disposer)
 		{
-			DisposerTypeInfo disposerTypeInfo;
-			if (!this.eventInfo.TryGetValue(disposer.GetType(), out disposerTypeInfo))
+			EntityTypeInfo entityTypeInfo;
+			if (!this.eventInfo.TryGetValue(disposer.GetType(), out entityTypeInfo))
 			{
 				return;
 			}
 
-			foreach (DisposerEventType disposerEvent2Type in disposerTypeInfo.GetDisposerEvent2Types())
+			foreach (EntityEventType disposerEvent2Type in entityTypeInfo.GetDisposerEvent2Types())
 			{
 				this.disposers[disposerEvent2Type].Remove(disposer);
 			}
@@ -165,52 +165,52 @@ namespace Model
 		private void Load()
 		{
 			HashSet<Disposer> list;
-			if (!this.disposers.TryGetValue(DisposerEventType.Update, out list))
+			if (!this.disposers.TryGetValue(EntityEventType.Update, out list))
 			{
 				return;
 			}
 			foreach (Disposer disposer in list)
 			{
-				DisposerTypeInfo disposerTypeInfo = this.eventInfo[disposer.GetType()];
-				disposerTypeInfo.Get(DisposerEventType.Load).Run(disposer);
+				EntityTypeInfo entityTypeInfo = this.eventInfo[disposer.GetType()];
+				entityTypeInfo.Get(EntityEventType.Load).Run(disposer);
 			}
 		}
 
 		public void Awake(Disposer disposer)
 		{
-			DisposerTypeInfo disposerTypeInfo = this.eventInfo[disposer.GetType()];
-			disposerTypeInfo.Get(DisposerEventType.Awake)?.Run(disposer);
+			EntityTypeInfo entityTypeInfo = this.eventInfo[disposer.GetType()];
+			entityTypeInfo.Get(EntityEventType.Awake)?.Run(disposer);
 		}
 
 		public void Awake(Disposer disposer, object p1)
 		{
-			DisposerTypeInfo disposerTypeInfo = this.eventInfo[disposer.GetType()];
-			disposerTypeInfo.Get(DisposerEventType.Awake1)?.Run(disposer, p1);
+			EntityTypeInfo entityTypeInfo = this.eventInfo[disposer.GetType()];
+			entityTypeInfo.Get(EntityEventType.Awake1)?.Run(disposer, p1);
 		}
 
 		public void Awake(Disposer disposer, object p1, object p2)
 		{
-			DisposerTypeInfo disposerTypeInfo = this.eventInfo[disposer.GetType()];
-			disposerTypeInfo.Get(DisposerEventType.Awake2)?.Run(disposer, p1, p2 );
+			EntityTypeInfo entityTypeInfo = this.eventInfo[disposer.GetType()];
+			entityTypeInfo.Get(EntityEventType.Awake2)?.Run(disposer, p1, p2 );
 		}
 
 		public void Awake(Disposer disposer, object p1, object p2, object p3)
 		{
-			DisposerTypeInfo disposerTypeInfo = this.eventInfo[disposer.GetType()];
-			disposerTypeInfo.Get(DisposerEventType.Awake3)?.Run(disposer, p1, p2, p3 );
+			EntityTypeInfo entityTypeInfo = this.eventInfo[disposer.GetType()];
+			entityTypeInfo.Get(EntityEventType.Awake3)?.Run(disposer, p1, p2, p3 );
 		}
 
 		public void Update()
 		{
 			HashSet<Disposer> list;
-			if (!this.disposers.TryGetValue(DisposerEventType.Update, out list))
+			if (!this.disposers.TryGetValue(EntityEventType.Update, out list))
 			{
 				return;
 			}
 			foreach (Disposer disposer in list)
 			{
-				DisposerTypeInfo disposerTypeInfo = this.eventInfo[disposer.GetType()];
-				disposerTypeInfo.Get(DisposerEventType.Update).Run(disposer);
+				EntityTypeInfo entityTypeInfo = this.eventInfo[disposer.GetType()];
+				entityTypeInfo.Get(EntityEventType.Update).Run(disposer);
 			}
 		}
 

+ 0 - 0
Unity/Assets/Scripts/Object/ComponentEventManager.cs.meta → Unity/Assets/Scripts/Object/EntityEventManager.cs.meta


+ 0 - 25
Unity/Assets/Scripts/Object/IAwake.cs

@@ -1,25 +0,0 @@
-namespace Model
-{
-	/// <summary>
-	/// World的Componet实现该接口后,会在World.Start时调用该Start方法
-	/// </summary>
-	public interface IAwake
-	{
-		void Awake();
-	}
-
-	public interface IAwake<in P1>
-	{
-		void Awake(P1 p1);
-	}
-
-	public interface IAwake<in P1, in P2>
-	{
-		void Awake(P1 p1, P2 p2);
-	}
-
-	public interface IAwake<in P1, in P2, in P3>
-	{
-		void Awake(P1 p1, P2 p2, P3 p3);
-	}
-}

+ 0 - 12
Unity/Assets/Scripts/Object/IAwake.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: c70dab810e082bc49aa93d60d5bb7305
-timeCreated: 1474942922
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 10
Unity/Assets/Scripts/Object/ILoader.cs

@@ -1,10 +0,0 @@
-namespace Model
-{
-	/// <summary>
-	/// World的Componet实现该接口,World.Load会调用Load方法
-	/// </summary>
-	public interface ILoader
-	{
-		void Load();
-	}
-}

+ 0 - 12
Unity/Assets/Scripts/Object/ILoader.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 9f92efb4b66795c4c992cc21dbd9b6dd
-timeCreated: 1474942922
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 10
Unity/Assets/Scripts/Object/IUpdate.cs

@@ -1,10 +0,0 @@
-namespace Model
-{
-	/// <summary>
-	/// 实现了该接口的World Componet会每帧刷新
-	/// </summary>
-	public interface IUpdate
-	{
-		void Update();
-	}
-}

+ 0 - 12
Unity/Assets/Scripts/Object/IUpdate.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: f7e6123682051ba429ec5029bb66c7e6
-timeCreated: 1474942922
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 1 - 10
Unity/Assets/Scripts/Object/Object.cs

@@ -1,6 +1,7 @@
 using System;
 using System.ComponentModel;
 using Base;
+using MongoDB.Bson;
 using MongoDB.Bson.Serialization.Attributes;
 
 namespace Model
@@ -34,16 +35,6 @@ namespace Model
 			return this.ToJson();
 		}
 
-		public string ToJson()
-		{
-			return MongoHelper.ToJson(this);
-		}
-
-		public byte[] ToBson()
-		{
-			return MongoHelper.ToBson(this);
-		}
-
 		public object Clone()
 		{
 			return MongoHelper.FromBson(this.GetType(), this.ToBson());

+ 1 - 1
Unity/Controller/Component/BenchmarkComponentE.cs

@@ -4,7 +4,7 @@ using Model;
 
 namespace Controller
 {
-	[ComponentEvent(typeof(BenchmakComponent))]
+	[EntityEvent(typeof(BenchmakComponent))]
 	public static class BenchmakComponentE
 	{
 		private static async void Awake(this BenchmakComponent component, string address)

+ 2 - 5
Unity/Unity.csproj

@@ -136,13 +136,10 @@
     <Compile Include="Assets\Scripts\Message\RpcException.cs" />
     <Compile Include="Assets\Scripts\Object\Component.cs" />
     <Compile Include="Assets\Scripts\Object\Disposer.cs" />
-    <Compile Include="Assets\Scripts\Object\ComponentEventAttribute.cs" />
-    <Compile Include="Assets\Scripts\Object\ComponentEventManager.cs" />
+    <Compile Include="Assets\Scripts\Object\EntityEventAttribute.cs" />
+    <Compile Include="Assets\Scripts\Object\EntityEventManager.cs" />
     <Compile Include="Assets\Scripts\Object\Entity.cs" />
     <Compile Include="Assets\Scripts\Object\EntityType.cs" />
-    <Compile Include="Assets\Scripts\Object\IAwake.cs" />
-    <Compile Include="Assets\Scripts\Object\ILoader.cs" />
-    <Compile Include="Assets\Scripts\Object\IUpdate.cs" />
     <Compile Include="Assets\Scripts\Object\Object.cs" />
     <Compile Include="Assets\Scripts\Other\Define.cs" />
     <Compile Include="Assets\Scripts\Other\GameException.cs" />

+ 7 - 1
Unity/Unity.sln.DotSettings

@@ -35,8 +35,9 @@
 	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UseNullPropagation/@EntryIndexedValue">DO_NOT_SHOW</s:String>
 	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UseObjectOrCollectionInitializer/@EntryIndexedValue">DO_NOT_SHOW</s:String>
 	
-	<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=Unity/@EntryIndexedValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;Profile name="Unity"&gt;&lt;CSArrangeThisQualifier&gt;True&lt;/CSArrangeThisQualifier&gt;&lt;CSRemoveCodeRedundancies&gt;True&lt;/CSRemoveCodeRedundancies&gt;&lt;CSMakeFieldReadonly&gt;True&lt;/CSMakeFieldReadonly&gt;&lt;CSUseVar&gt;&lt;BehavourStyle&gt;DISABLED&lt;/BehavourStyle&gt;&lt;LocalVariableStyle&gt;IMPLICIT_WHEN_INITIALIZER_HAS_TYPE&lt;/LocalVariableStyle&gt;&lt;ForeachVariableStyle&gt;IMPLICIT_EXCEPT_SIMPLE_TYPES&lt;/ForeachVariableStyle&gt;&lt;/CSUseVar&gt;&lt;CSOptimizeUsings&gt;&lt;OptimizeUsings&gt;True&lt;/OptimizeUsings&gt;&lt;EmbraceInRegion&gt;False&lt;/EmbraceInRegion&gt;&lt;RegionName&gt;&lt;/RegionName&gt;&lt;/CSOptimizeUsings&gt;&lt;CSShortenReferences&gt;True&lt;/CSShortenReferences&gt;&lt;CSReformatCode&gt;True&lt;/CSReformatCode&gt;&lt;CSMakeAutoPropertyGetOnly&gt;True&lt;/CSMakeAutoPropertyGetOnly&gt;&lt;CSUseAutoProperty&gt;True&lt;/CSUseAutoProperty&gt;&lt;RemoveCodeRedundancies&gt;True&lt;/RemoveCodeRedundancies&gt;&lt;/Profile&gt;</s:String>
+	<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=Unity/@EntryIndexedValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;Profile name="Unity"&gt;&lt;CSArrangeThisQualifier&gt;True&lt;/CSArrangeThisQualifier&gt;&lt;CSRemoveCodeRedundancies&gt;True&lt;/CSRemoveCodeRedundancies&gt;&lt;CSMakeFieldReadonly&gt;True&lt;/CSMakeFieldReadonly&gt;&lt;CSUseVar&gt;&lt;BehavourStyle&gt;DISABLED&lt;/BehavourStyle&gt;&lt;LocalVariableStyle&gt;IMPLICIT_WHEN_INITIALIZER_HAS_TYPE&lt;/LocalVariableStyle&gt;&lt;ForeachVariableStyle&gt;IMPLICIT_EXCEPT_SIMPLE_TYPES&lt;/ForeachVariableStyle&gt;&lt;/CSUseVar&gt;&lt;CSOptimizeUsings&gt;&lt;OptimizeUsings&gt;True&lt;/OptimizeUsings&gt;&lt;EmbraceInRegion&gt;False&lt;/EmbraceInRegion&gt;&lt;RegionName&gt;&lt;/RegionName&gt;&lt;/CSOptimizeUsings&gt;&lt;CSShortenReferences&gt;True&lt;/CSShortenReferences&gt;&lt;CSReformatCode&gt;True&lt;/CSReformatCode&gt;&lt;CSMakeAutoPropertyGetOnly&gt;True&lt;/CSMakeAutoPropertyGetOnly&gt;&lt;CSUseAutoProperty&gt;True&lt;/CSUseAutoProperty&gt;&lt;RemoveCodeRedundancies&gt;True&lt;/RemoveCodeRedundancies&gt;&lt;CSCodeStyleAttributes ArrangeTypeAccessModifier="False" ArrangeTypeMemberAccessModifier="False" SortModifiers="True" RemoveRedundantParentheses="False" AddMissingParentheses="False" ArrangeAttributes="False" /&gt;&lt;/Profile&gt;</s:String>
 	<s:String x:Key="/Default/CodeStyle/CodeCleanup/RecentlyUsedProfile/@EntryValue">tanghai</s:String>
+	<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/APPLY_ON_COMPLETION/@EntryValue">True</s:Boolean>
 	
 	
 	<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/ThisQualifier/INSTANCE_MEMBERS_QUALIFY_MEMBERS/@EntryValue">All</s:String>
@@ -315,6 +316,11 @@ II.2.12 &lt;HandlesEvent /&gt;&#xD;
 	<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/UserRules/=XAML_005FFIELD/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
 	
 	<s:String x:Key="/Default/Environment/Editor/MatchingBraceHighlighting/Position/@EntryValue">BOTH_SIDES</s:String>
+	<s:Boolean x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=AAEDA4BE1B62904F98E5EA2E32B739DB/@KeyIndexDefined">True</s:Boolean>
+	<s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=AAEDA4BE1B62904F98E5EA2E32B739DB/AbsolutePath/@EntryValue">D:\Source\Egametang\Unity\Unity.sln.DotSettings</s:String>
+	<s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=AAEDA4BE1B62904F98E5EA2E32B739DB/RelativePath/@EntryValue"></s:String>
+	<s:Boolean x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=FileAAEDA4BE1B62904F98E5EA2E32B739DB/@KeyIndexDefined">True</s:Boolean>
+	<s:Double x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=FileAAEDA4BE1B62904F98E5EA2E32B739DB/RelativePriority/@EntryValue">1</s:Double>