using System;
using Fort23.Core;

#if !COMBAT_SERVER
using UnityEngine;
#endif

using Object = System.Object;

namespace Fort23.UTool
{
    /// <summary>
    /// 池子的 接口，不同池继承这个接口
    /// </summary>
    public interface IGObjectPoolInterface : IDisposable
    {
        string poolObjName { get; set; }
        bool isUse { get; set; }
        bool isDestroy { get; }
     
#if !COMBAT_SERVER
         AssetHandle AssetHandle { get; set; }
        GameObject own { get; }
               TimerEntity DestroyTimer { get; set; }
#endif
     

        void SetPosition(Vector3 pos);
        void SetScale(Vector3 scale);
        void SetRotation(Vector3 rotation);
        Vector3 GetPosition();
        Vector3 GetScale();
        Vector3 GettRotation();

        void SetActive(bool isActive);

        /// <summary>
        /// 回收时延迟回收
        /// </summary>
        /// <returns></returns>
        CTask DelayHide();
        
        /// <summary>
        /// 重置数据
        /// </summary>
        void ResetData();

        /// <summary>
        /// 激活对象
        /// </summary>
        void ActiveObj();

        /// <summary>
        /// 休眠
        /// </summary>
        void DormancyObj();

        /// <summary>
        /// 销毁
        /// </summary>
        void DestroyObj();
#if !COMBAT_SERVER
        void SetGameObject(GameObject gameObject);
#endif
        void Preset();
        
    }
}