//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 loyalsoft. All rights reserved. // Homepage: http://www.game7000.com/ // Feedback: http://www.game7000.com/ //------------------------------------------------------------ using GameFramework.ObjectPool; namespace GameFramework.Entity { internal sealed partial class EntityManager : GameFrameworkModule, IEntityManager { /// /// 实体实例对象。 /// private sealed class EntityInstanceObject : ObjectBase { private object m_EntityAsset; private IEntityHelper m_EntityHelper; public EntityInstanceObject() { m_EntityAsset = null; m_EntityHelper = null; } public static EntityInstanceObject Create(string name, object entityAsset, object entityInstance, IEntityHelper entityHelper) { if (entityAsset == null) { throw new GameFrameworkException("Entity asset is invalid."); } if (entityHelper == null) { throw new GameFrameworkException("Entity helper is invalid."); } EntityInstanceObject entityInstanceObject = ReferencePool.Acquire(); entityInstanceObject.Initialize(name, entityInstance); entityInstanceObject.m_EntityAsset = entityAsset; entityInstanceObject.m_EntityHelper = entityHelper; return entityInstanceObject; } public override void Clear() { base.Clear(); m_EntityAsset = null; m_EntityHelper = null; } public override void Release(bool isShutdown) { m_EntityHelper.ReleaseEntity(m_EntityAsset, Target); } } } }