EntityManager.EntityInstanceObject.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using GameFramework.ObjectPool;
  8. namespace GameFramework.Entity
  9. {
  10. internal sealed partial class EntityManager : GameFrameworkModule, IEntityManager
  11. {
  12. /// <summary>
  13. /// 实体实例对象。
  14. /// </summary>
  15. private sealed class EntityInstanceObject : ObjectBase
  16. {
  17. private object m_EntityAsset;
  18. private IEntityHelper m_EntityHelper;
  19. public EntityInstanceObject()
  20. {
  21. m_EntityAsset = null;
  22. m_EntityHelper = null;
  23. }
  24. public static EntityInstanceObject Create(string name, object entityAsset, object entityInstance, IEntityHelper entityHelper)
  25. {
  26. if (entityAsset == null)
  27. {
  28. throw new GameFrameworkException("Entity asset is invalid.");
  29. }
  30. if (entityHelper == null)
  31. {
  32. throw new GameFrameworkException("Entity helper is invalid.");
  33. }
  34. EntityInstanceObject entityInstanceObject = ReferencePool.Acquire<EntityInstanceObject>();
  35. entityInstanceObject.Initialize(name, entityInstance);
  36. entityInstanceObject.m_EntityAsset = entityAsset;
  37. entityInstanceObject.m_EntityHelper = entityHelper;
  38. return entityInstanceObject;
  39. }
  40. public override void Clear()
  41. {
  42. base.Clear();
  43. m_EntityAsset = null;
  44. m_EntityHelper = null;
  45. }
  46. public override void Release(bool isShutdown)
  47. {
  48. m_EntityHelper.ReleaseEntity(m_EntityAsset, Target);
  49. }
  50. }
  51. }
  52. }