提交 1da8e6fd 编写于 作者: T tanghai

调整Entity和Component继承关系,从继承Object改成继承Disposer,Disposer继承于Object

上级 7665068e
using System;
using Base;
using Model;
using MongoDB.Bson;
using NLog;
namespace App
......@@ -11,8 +12,8 @@ namespace App
{
try
{
ObjectManager.Instance.Register("Model", typeof(Game).Assembly);
ObjectManager.Instance.Register("Controller", DllHelper.GetController());
DisposerManager.Instance.Register("Model", typeof(Game).Assembly);
DisposerManager.Instance.Register("Controller", DllHelper.GetController());
StartConfig startConfig = Game.Scene.AddComponent<StartConfigComponent, string[]>(args).MyConfig;
......@@ -23,6 +24,9 @@ namespace App
Log.Info("server start........................");
Unit unit = new Unit(UnitType.Hero);
Log.Debug(unit.ToJson());
Game.Scene.AddComponent<EventComponent>();
Game.Scene.AddComponent<TimerComponent>();
......@@ -66,7 +70,7 @@ namespace App
while (true)
{
ObjectManager.Instance.Update();
DisposerManager.Instance.Update();
}
}
catch (Exception e)
......
......@@ -12,7 +12,7 @@ namespace Controller
A2M_Reload a2MReload = new A2M_Reload();
try
{
ObjectManager.Instance.Register("Controller", DllHelper.GetController());
DisposerManager.Instance.Register("Controller", DllHelper.GetController());
}
catch (Exception e)
{
......
......@@ -6,8 +6,8 @@ using Base;
namespace Model
{
[ObjectEvent]
public class AppManagerComponentEvent : ObjectEvent<AppManagerComponent>, IAwake
[DisposerEvent]
public class AppManagerComponentEvent : DisposerEvent<AppManagerComponent>, IAwake
{
public void Awake()
{
......
......@@ -3,8 +3,8 @@ using Base;
namespace Model
{
[ObjectEvent]
public class GateSessionKeyComponentEvent : ObjectEvent<GateSessionKeyComponent>, IAwake
[DisposerEvent]
public class GateSessionKeyComponentEvent : DisposerEvent<GateSessionKeyComponent>, IAwake
{
public void Awake()
{
......
......@@ -3,8 +3,8 @@ using Base;
namespace Model
{
[ObjectEvent]
public class RealmGateAddressComponentEvent : ObjectEvent<RealmGateAddressComponent>, IAwake
[DisposerEvent]
public class RealmGateAddressComponentEvent : DisposerEvent<RealmGateAddressComponent>, IAwake
{
public void Awake()
{
......
......@@ -6,8 +6,8 @@ using CommandLine;
namespace Model
{
[ObjectEvent]
public class StartConfigComponentEvent : ObjectEvent<StartConfigComponent>, IAwake<string[]>
[DisposerEvent]
public class StartConfigComponentEvent : DisposerEvent<StartConfigComponent>, IAwake<string[]>
{
public void Awake(string[] args)
{
......
......@@ -113,6 +113,9 @@
<Compile Include="..\..\Unity\Assets\Scripts\Entity\Session.cs">
<Link>Entity\Session.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Scripts\Entity\Unit.cs">
<Link>Entity\Unit.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Scripts\Event\AEventAttribute.cs">
<Link>Event\AEventAttribute.cs</Link>
</Compile>
......@@ -161,6 +164,15 @@
<Compile Include="..\..\Unity\Assets\Scripts\Object\Component.cs">
<Link>Object\Component.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Scripts\Object\Disposer.cs">
<Link>Object\Disposer.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Scripts\Object\DisposerEventAttribute.cs">
<Link>Object\DisposerEventAttribute.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Scripts\Object\DisposerManager.cs">
<Link>Object\DisposerManager.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Scripts\Object\Entity.cs">
<Link>Object\Entity.cs</Link>
</Compile>
......@@ -179,12 +191,6 @@
<Compile Include="..\..\Unity\Assets\Scripts\Object\Object.cs">
<Link>Object\Object.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Scripts\Object\ObjectEventAttribute.cs">
<Link>Object\ObjectEventAttribute.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Scripts\Object\ObjectManager.cs">
<Link>Object\ObjectManager.cs</Link>
</Compile>
<Compile Include="..\..\Unity\Assets\Scripts\Other\Options.cs">
<Link>Other\Options.cs</Link>
</Compile>
......
......@@ -11,7 +11,7 @@ namespace MyEditor
{
static EditorInit()
{
ObjectManager.Instance.Register("Editor", typeof(EditorInit).Assembly);
DisposerManager.Instance.Register("Editor", typeof(EditorInit).Assembly);
EditorApplication.update += Update;
}
......@@ -24,11 +24,11 @@ namespace MyEditor
try
{
ObjectManager.Instance.Update();
DisposerManager.Instance.Update();
}
catch (Exception e)
{
ObjectManager.Reset();
DisposerManager.Reset();
Log.Error(e.ToString());
}
}
......
......@@ -7,13 +7,13 @@ public class ObjectManagerToolsWindow : EditorWindow
[MenuItem("Tools/ObjectManagerTools/显示未Dispose的对象")]
private static void ShowUnDisposeObjects()
{
Log.Info(ObjectManager.Instance.ToString());
Log.Info(DisposerManager.Instance.ToString());
}
[MenuItem("Tools/ObjectManagerTools/清除所有对象")]
private static void ClearAllObjects()
{
ObjectManager.Reset();
DisposerManager.Reset();
}
}
\ No newline at end of file
......@@ -3,8 +3,8 @@ using Base;
namespace Model
{
[ObjectEvent]
public class BenchmakComponentEvent : ObjectEvent<BenchmakComponent>, IAwake<string>
[DisposerEvent]
public class BenchmakComponentEvent : DisposerEvent<BenchmakComponent>, IAwake<string>
{
public void Awake(string address)
{
......
......@@ -3,8 +3,8 @@ using Base;
namespace Model
{
[ObjectEvent]
public class ClientConfigComponentEvent : ObjectEvent<ClientConfigComponent>, IAwake
[DisposerEvent]
public class ClientConfigComponentEvent : DisposerEvent<ClientConfigComponent>, IAwake
{
public void Awake()
{
......
......@@ -10,7 +10,7 @@ namespace Model
public void Load()
{
Assembly assembly = ObjectManager.Instance.GetAssembly("Base");
Assembly assembly = DisposerManager.Instance.GetAssembly("Base");
this.allConfig = new Dictionary<Type, ICategory>();
Type[] types = assembly.GetTypes();
......
......@@ -5,8 +5,8 @@ using Base;
namespace Model
{
[ObjectEvent]
public class EventComponentEvent : ObjectEvent<EventComponent>, ILoader, IAwake
[DisposerEvent]
public class EventComponentEvent : DisposerEvent<EventComponent>, ILoader, IAwake
{
public void Load()
{
......@@ -29,7 +29,7 @@ namespace Model
public void Load()
{
this.allEvents = new Dictionary<EventIdType, List<object>>();
Assembly[] assemblies = ObjectManager.Instance.GetAssemblies();
Assembly[] assemblies = DisposerManager.Instance.GetAssemblies();
foreach (Assembly assembly in assemblies)
{
Type[] types = assembly.GetTypes();
......
......@@ -4,8 +4,8 @@ using Component = UnityEngine.Component;
namespace Model
{
[ObjectEvent]
public class GameObjectComponentEvent : ObjectEvent<GameObjectComponent>, IAwake<GameObject>
[DisposerEvent]
public class GameObjectComponentEvent : DisposerEvent<GameObjectComponent>, IAwake<GameObject>
{
public void Awake(GameObject gameObject)
{
......
......@@ -5,8 +5,8 @@ using Base;
namespace Model
{
[ObjectEvent]
public class MessageHandlerComponentEvent : ObjectEvent<MessageDispatherComponent>, ILoader, IAwake<AppType>
[DisposerEvent]
public class MessageHandlerComponentEvent : DisposerEvent<MessageDispatherComponent>, ILoader, IAwake<AppType>
{
public void Load()
{
......@@ -40,7 +40,7 @@ namespace Model
this.handlers = new Dictionary<ushort, List<IMHandler>>();
this.messageOpcode = new Dictionary<Type, MessageAttribute>();
Assembly[] assemblies = ObjectManager.Instance.GetAssemblies();
Assembly[] assemblies = DisposerManager.Instance.GetAssemblies();
foreach (Assembly assembly in assemblies)
{
......
......@@ -3,8 +3,8 @@ using Base;
namespace Model
{
[ObjectEvent]
public class NetInnerComponentEvent : ObjectEvent<NetInnerComponent>, IUpdate, IAwake, IAwake<string, int>
[DisposerEvent]
public class NetInnerComponentEvent : DisposerEvent<NetInnerComponent>, IUpdate, IAwake, IAwake<string, int>
{
public void Update()
{
......
......@@ -2,8 +2,8 @@
namespace Model
{
[ObjectEvent]
public class NetOuterComponentEvent : ObjectEvent<NetOuterComponent>, IUpdate, IAwake, IAwake<string, int>
[DisposerEvent]
public class NetOuterComponentEvent : DisposerEvent<NetOuterComponent>, IUpdate, IAwake, IAwake<string, int>
{
public void Update()
{
......
......@@ -2,8 +2,8 @@
namespace Model
{
[ObjectEvent]
public class RobotComponentEvent : ObjectEvent<RobotComponent>, IAwake
[DisposerEvent]
public class RobotComponentEvent : DisposerEvent<RobotComponent>, IAwake
{
public void Awake()
{
......
......@@ -12,8 +12,8 @@ namespace Model
public TaskCompletionSource<bool> tcs;
}
[ObjectEvent]
public class TimerComponentEvent : ObjectEvent<TimerComponent>, IUpdate
[DisposerEvent]
public class TimerComponentEvent : DisposerEvent<TimerComponent>, IUpdate
{
public void Update()
{
......
......@@ -6,8 +6,8 @@ using UnityEngine;
namespace Model
{
[ObjectEvent]
public class UIComponentEvent : ObjectEvent<UIComponent>, IAwake, ILoader
[DisposerEvent]
public class UIComponentEvent : DisposerEvent<UIComponent>, IAwake, ILoader
{
public void Load()
{
......@@ -63,7 +63,7 @@ namespace Model
{
this.UiTypes = new Dictionary<UIType, IUIFactory>();
Assembly[] assemblies = ObjectManager.Instance.GetAssemblies();
Assembly[] assemblies = DisposerManager.Instance.GetAssemblies();
foreach (Assembly assembly in assemblies)
{
Type[] types = assembly.GetTypes();
......
fileFormatVersion: 2
guid: a6777dcb4aea2ef4fb129b4bfd059aa7
folderAsset: yes
timeCreated: 1479442397
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
using Base;
namespace Model
{
public enum UnitType
{
Hero,
Npc,
}
public sealed class Unit: Entity
{
public UnitType UnitType { get; }
public override void Dispose()
{
if (this.Id == 0)
{
return;
}
base.Dispose();
}
public Unit(UnitType unitType) : base(EntityType.UI)
{
this.UnitType = unitType;
}
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 4da2290eec277924c88e511d3e4ae7b9
timeCreated: 1479694292
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -8,8 +8,8 @@ namespace Model
{
private void Start()
{
ObjectManager.Instance.Register("Model", typeof(Game).Assembly);
ObjectManager.Instance.Register("Controller", DllHelper.GetController());
DisposerManager.Instance.Register("Model", typeof(Game).Assembly);
DisposerManager.Instance.Register("Controller", DllHelper.GetController());
Game.Scene.AddComponent<EventComponent>().Run(EventIdType.InitSceneStart);
}
......@@ -18,7 +18,7 @@ namespace Model
{
try
{
ObjectManager.Instance.Update();
DisposerManager.Instance.Update();
}
catch (Exception e)
{
......
using System;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Bson.Serialization.Attributes;
namespace Model
{
[BsonKnownTypes(typeof(AConfigComponent))]
public abstract class Component : Object, IDisposable
public abstract class Component : Disposer
{
[BsonIgnore]
public Entity Owner { get; set; }
......@@ -16,12 +15,10 @@ namespace Model
protected Component()
{
ObjectManager.Instance.Add(this);
}
protected Component(long id): base(id)
{
ObjectManager.Instance.Add(this);
}
protected T GetComponent<T>() where T: Component
......@@ -37,8 +34,6 @@ namespace Model
}
base.Dispose();
ObjectManager.Instance.Remove(this);
}
}
}
\ No newline at end of file
using System;
using Base;
namespace Model
{
public abstract class Disposer : Object, IDisposable
{
protected Disposer(): base(IdGenerater.GenerateId())
{
DisposerManager.Instance.Add(this);
}
protected Disposer(long id): base(id)
{
DisposerManager.Instance.Add(this);
}
public virtual void Dispose()
{
DisposerManager.Instance.Remove(this);
this.Id = 0;
}
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 785b1815942ba374b9cea238401cd506
timeCreated: 1479695006
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -3,7 +3,7 @@
namespace Model
{
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class ObjectEventAttribute: Attribute
public class DisposerEventAttribute: Attribute
{
}
}
\ No newline at end of file
......@@ -7,13 +7,13 @@ using Base;
namespace Model
{
public interface IObjectEvent
public interface IDisposerEvent
{
Type ValueType();
void SetValue(object value);
}
public abstract class ObjectEvent<T> : IObjectEvent
public abstract class DisposerEvent<T> : IDisposerEvent
{
private T value;
......@@ -33,19 +33,19 @@ namespace Model
}
}
public sealed class ObjectManager : IDisposable
public sealed class DisposerManager : IDisposable
{
private readonly Dictionary<string, Assembly> assemblies = new Dictionary<string, Assembly>();
private Dictionary<Type, IObjectEvent> objectEvents;
private Dictionary<Type, IDisposerEvent> disposerEvents;
private readonly HashSet<Object> objects = new HashSet<Object>();
private readonly HashSet<Object> updates = new HashSet<Object>();
private readonly HashSet<Object> loaders = new HashSet<Object>();
private readonly HashSet<Disposer> disposers = new HashSet<Disposer>();
private readonly HashSet<Disposer> updates = new HashSet<Disposer>();
private readonly HashSet<Disposer> loaders = new HashSet<Disposer>();
private static ObjectManager instance = new ObjectManager();
private static DisposerManager instance = new DisposerManager();
public static ObjectManager Instance
public static DisposerManager Instance
{
get
{
......@@ -53,19 +53,19 @@ namespace Model
}
}
private ObjectManager()
private DisposerManager()
{
}
public static void Reset()
{
instance.Dispose();
instance = new ObjectManager();
instance = new DisposerManager();
}
public void Dispose()
{
foreach (Object o in this.objects.ToArray())
foreach (Disposer o in this.disposers.ToArray())
{
o.Dispose();
}
......@@ -75,13 +75,13 @@ namespace Model
{
this.assemblies[name] = assembly;
objectEvents = new Dictionary<Type, IObjectEvent>();
this.disposerEvents = new Dictionary<Type, IDisposerEvent>();
foreach (Assembly ass in this.assemblies.Values)
{
Type[] types = ass.GetTypes();
foreach (Type type in types)
{
object[] attrs = type.GetCustomAttributes(typeof(ObjectEventAttribute), false);
object[] attrs = type.GetCustomAttributes(typeof(DisposerEventAttribute), false);
if (attrs.Length == 0)
{
......@@ -89,12 +89,12 @@ namespace Model
}
object obj = Activator.CreateInstance(type);
IObjectEvent objectEvent = obj as IObjectEvent;
if (objectEvent == null)
IDisposerEvent disposerEvent = obj as IDisposerEvent;
if (disposerEvent == null)
{
Log.Error($"组件事件没有继承IComponentEvent: {type.Name}");
}
objectEvents[objectEvent.ValueType()] = objectEvent;
this.disposerEvents[disposerEvent.ValueType()] = disposerEvent;
}
}
......@@ -113,152 +113,152 @@ namespace Model
private void Load()
{
foreach (Object obj in this.loaders)
foreach (Disposer disposer in this.loaders)
{
IObjectEvent objectEvent;
if (!objectEvents.TryGetValue(obj.GetType(), out objectEvent))
IDisposerEvent disposerEvent;
if (!this.disposerEvents.TryGetValue(disposer.GetType(), out disposerEvent))
{
continue;
}
ILoader iLoader = objectEvent as ILoader;
ILoader iLoader = disposerEvent as ILoader;
if (iLoader == null)
{
continue;
}
objectEvent.SetValue(obj);
disposerEvent.SetValue(disposer);
iLoader.Load();
}
}
public void Add(Object obj)
public void Add(Disposer disposer)
{
if (objectEvents == null)
if (this.disposerEvents == null)
{
return;
}
this.objects.Add(obj);
IObjectEvent objectEvent;
if (!objectEvents.TryGetValue(obj.GetType(), out objectEvent))
this.disposers.Add(disposer);
IDisposerEvent disposerEvent;
if (!this.disposerEvents.TryGetValue(disposer.GetType(), out disposerEvent))
{
return;
}
IUpdate iUpdate = objectEvent as IUpdate;
IUpdate iUpdate = disposerEvent as IUpdate;
if (iUpdate != null)
{
this.updates.Add(obj);
this.updates.Add(disposer);
}
ILoader iLoader = objectEvent as ILoader;
ILoader iLoader = disposerEvent as ILoader;
if (iLoader != null)
{
this.loaders.Add(obj);
this.loaders.Add(disposer);
}
}
public void Remove(Object obj)
public void Remove(Disposer disposer)
{
this.objects.Remove(obj);
this.disposers.Remove(disposer);
IObjectEvent objectEvent;
if (!objectEvents.TryGetValue(obj.GetType(), out objectEvent))
IDisposerEvent disposerEvent;
if (!this.disposerEvents.TryGetValue(disposer.GetType(), out disposerEvent))
{
return;
}
IUpdate iUpdate = objectEvent as IUpdate;
IUpdate iUpdate = disposerEvent as IUpdate;
if (iUpdate != null)
{
this.updates.Remove(obj);
this.updates.Remove(disposer);
}
ILoader iLoader = objectEvent as ILoader;
ILoader iLoader = disposerEvent as ILoader;
if (iLoader != null)
{
this.loaders.Remove(obj);
this.loaders.Remove(disposer);
}
}
public void Awake(Object obj)
public void Awake(Disposer disposer)
{
IObjectEvent objectEvent;
if (!objectEvents.TryGetValue(obj.GetType(), out objectEvent))
IDisposerEvent disposerEvent;
if (!this.disposerEvents.TryGetValue(disposer.GetType(), out disposerEvent))
{
return;
}
IAwake iAwake = objectEvent as IAwake;
IAwake iAwake = disposerEvent as IAwake;
if (iAwake == null)
{
return;
}
objectEvent.SetValue(obj);
disposerEvent.SetValue(disposer);
iAwake.Awake();
}
public void Awake<P1>(Object obj, P1 p1)
public void Awake<P1>(Disposer disposer, P1 p1)
{
IObjectEvent objectEvent;
if (!objectEvents.TryGetValue(obj.GetType(), out objectEvent))
IDisposerEvent disposerEvent;
if (!this.disposerEvents.TryGetValue(disposer.GetType(), out disposerEvent))
{
return;
}
IAwake<P1> iAwake = objectEvent as IAwake<P1>;
IAwake<P1> iAwake = disposerEvent as IAwake<P1>;
if (iAwake == null)
{
return;
}
objectEvent.SetValue(obj);
disposerEvent.SetValue(disposer);
iAwake.Awake(p1);
}
public void Awake<P1, P2>(Object obj, P1 p1, P2 p2)
public void Awake<P1, P2>(Disposer disposer, P1 p1, P2 p2)
{
IObjectEvent objectEvent;
if (!objectEvents.TryGetValue(obj.GetType(), out objectEvent))
IDisposerEvent disposerEvent;
if (!this.disposerEvents.TryGetValue(disposer.GetType(), out disposerEvent))
{
return;
}
IAwake<P1, P2> iAwake = objectEvent as IAwake<P1, P2>;
IAwake<P1, P2> iAwake = disposerEvent as IAwake<P1, P2>;
if (iAwake == null)
{
return;
}
objectEvent.SetValue(obj);
disposerEvent.SetValue(disposer);
iAwake.Awake(p1, p2);
}
public void Awake<P1, P2, P3>(Object obj, P1 p1, P2 p2, P3 p3)
public void Awake<P1, P2, P3>(Disposer disposer, P1 p1, P2 p2, P3 p3)
{
IObjectEvent objectEvent;
if (!objectEvents.TryGetValue(obj.GetType(), out objectEvent))
IDisposerEvent disposerEvent;
if (!this.disposerEvents.TryGetValue(disposer.GetType(), out disposerEvent))
{
return;
}
IAwake<P1, P2, P3> iAwake = objectEvent as IAwake<P1, P2, P3>;
IAwake<P1, P2, P3> iAwake = disposerEvent as IAwake<P1, P2, P3>;
if (iAwake == null)
{
return;
}
objectEvent.SetValue(obj);
disposerEvent.SetValue(disposer);
iAwake.Awake(p1, p2, p3);
}
public void Update()
{
foreach (Object obj in updates)
foreach (Disposer disposer in updates)
{
IObjectEvent objectEvent;
if (!objectEvents.TryGetValue(obj.GetType(), out objectEvent))
IDisposerEvent disposerEvent;
if (!this.disposerEvents.TryGetValue(disposer.GetType(), out disposerEvent))
{
continue;
}
IUpdate iUpdate = objectEvent as IUpdate;
IUpdate iUpdate = disposerEvent as IUpdate;
if (iUpdate == null)
{
continue;
}
objectEvent.SetValue(obj);
disposerEvent.SetValue(disposer);
try
{
iUpdate.Update();
......@@ -273,7 +273,7 @@ namespace Model
public override string ToString()
{
var info = new Dictionary<string, int>();
foreach (Object obj in objects)
foreach (Disposer obj in this.disposers)
{
if (info.ContainsKey(obj.GetType().Name))
{
......@@ -292,7 +292,7 @@ namespace Model
sb.Append($"{info[key],10} {key}\r\n");
}
sb.Append($"\r\n update: {this.updates.Count} total: {this.objects.Count}");
sb.Append($"\r\n update: {this.updates.Count} total: {this.disposers.Count}");
return sb.ToString();
}
}
......
......@@ -6,7 +6,7 @@ using MongoDB.Bson.Serialization.Attributes;
namespace Model
{
public class Entity: Object
public class Entity: Disposer
{
public EntityType Type { get; set; }
......@@ -20,13 +20,12 @@ namespace Model
protected Entity(EntityType entityType)
{
this.Type = entityType;
ObjectManager.Instance.Add(this);
}
protected Entity(long id, EntityType entityType) : base(id)
{
this.Type = entityType;
ObjectManager.Instance.Add(this);
}
public override void Dispose()
......@@ -49,8 +48,6 @@ namespace Model
Log.Error(e.ToString());
}
}
ObjectManager.Instance.Remove(this);
}
public K AddComponent<K>() where K : Component, new()
......@@ -70,7 +67,7 @@ namespace Model
this.components.Add(component);
this.componentDict.Add(component.GetType(), component);
ObjectManager.Instance.Awake(component);
DisposerManager.Instance.Awake(component);
return component;
}
......@@ -91,7 +88,7 @@ namespace Model
this.components.Add(component);
this.componentDict.Add(component.GetType(), component);
ObjectManager.Instance.Awake(component, p1);
DisposerManager.Instance.Awake(component, p1);
return component;
}
......@@ -112,7 +109,7 @@ namespace Model
this.components.Add(component);
this.componentDict.Add(component.GetType(), component);
ObjectManager.Instance.Awake(component, p1, p2);
DisposerManager.Instance.Awake(component, p1, p2);
return component;
}
......@@ -134,7 +131,7 @@ namespace Model
this.components.Add(component);
this.componentDict.Add(component.GetType(), component);
ObjectManager.Instance.Awake(component, p1, p2, p3);
DisposerManager.Instance.Awake(component, p1, p2, p3);
return component;
}
......@@ -151,7 +148,7 @@ namespace Model
}
this.components.Add(component);
this.componentDict.Add(component.GetType(), component);
ObjectManager.Instance.Awake(component);
DisposerManager.Instance.Awake(component);
}
public void RemoveComponent<K>() where K : Component
......
......@@ -7,5 +7,6 @@
Session,
UI,
Config,
Unit,
}
}
\ No newline at end of file
......@@ -5,11 +5,11 @@ using MongoDB.Bson.Serialization.Attributes;
namespace Model
{
public abstract class Object: IDisposable, ISupportInitialize, ICloneable
public abstract class Object: ISupportInitialize, ICloneable
{
[BsonId]
[BsonIgnoreIfDefault]
public long Id { get; private set; }
public long Id { get; protected set; }
protected Object()
{
......@@ -30,18 +30,23 @@ namespace Model
}
public override string ToString()
{
return this.ToJson();
}
public string ToJson()
{
return MongoHelper.ToJson(this);
}
public virtual void Dispose()
public byte[] ToBson()
{
this.Id = 0;
return MongoHelper.ToBson(this);
}
public object Clone()
{
return MongoHelper.FromJson(this.GetType(), this.ToString());
return MongoHelper.FromBson(this.GetType(), this.ToBson());
}
}
}
\ No newline at end of file
......@@ -59,14 +59,6 @@
<Compile Include="UI\UILogin\Factory\UILoginFactory.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Unity.CSharp.csproj">
<Project>{4123f183-8f61-27ae-ea27-294dde0cc7eb}</Project>
<Name>Unity.CSharp</Name>
</ProjectReference>
<ProjectReference Include="..\Unity.CSharp.Plugins.csproj">
<Project>{1aa60596-6964-87f6-2427-6ca85bbaf27d}</Project>
<Name>Unity.CSharp.Plugins</Name>
</ProjectReference>
<ProjectReference Include="..\Unity.csproj">
<Project>{cf118143-7e37-744f-be45-3f55345fec40}</Project>
<Name>Unity</Name>
......
......@@ -13,11 +13,13 @@
<TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Unity Full v3.5</TargetFrameworkProfile>
<CompilerResponseFile></CompilerResponseFile>
<CompilerResponseFile>
</CompilerResponseFile>
<UnityProjectType>Game:1</UnityProjectType>
<UnityBuildTarget>StandaloneWindows:5</UnityBuildTarget>
<UnityVersion>5.4.1f1</UnityVersion>
<RootNamespace></RootNamespace>
<RootNamespace>
</RootNamespace>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugType>pdbonly</DebugType>
......@@ -109,6 +111,7 @@
<Compile Include="Assets\Scripts\Entity\Message\Message.cs" />
<Compile Include="Assets\Scripts\Entity\Scene.cs" />
<Compile Include="Assets\Scripts\Entity\Session.cs" />
<Compile Include="Assets\Scripts\Entity\Unit.cs" />
<Compile Include="Assets\Scripts\Entity\UI.cs" />
<Compile Include="Assets\Scripts\Event\AEventAttribute.cs" />
<Compile Include="Assets\Scripts\Event\Env.cs" />
......@@ -135,9 +138,10 @@
<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\Disposer.cs" />
<Compile Include="Assets\Scripts\Object\Object.cs" />
<Compile Include="Assets\Scripts\Object\ObjectEventAttribute.cs" />
<Compile Include="Assets\Scripts\Object\ObjectManager.cs" />
<Compile Include="Assets\Scripts\Object\DisposerEventAttribute.cs" />
<Compile Include="Assets\Scripts\Object\DisposerManager.cs" />
<Compile Include="Assets\Scripts\Other\Define.cs" />
<Compile Include="Assets\Scripts\Other\GameException.cs" />
<Compile Include="Assets\Scripts\Other\IUIFactory.cs" />
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册