using System.Collections.Generic;
using UnityEngine;
namespace EasyInject.Utils
{
public interface IIoC
{
///
/// 创建一个GameObject作为Bean
///
/// 原型
/// 名字
/// Bean类型
/// Bean实例
T CreateGameObjectAsBean(GameObject original, string beanName) where T : MonoBehaviour;
///
/// 创建一个GameObject作为Bean
///
/// 原型
/// 名字
/// 父物体
/// Bean类型
/// Bean实例
T CreateGameObjectAsBean(GameObject original, string beanName, Transform parent) where T : MonoBehaviour;
///
/// 创建一个GameObject作为Bean
///
/// 原型
/// 名字
/// 父物体
/// 是否在世界空间中实例化
/// Bean类型
/// Bean实例
T CreateGameObjectAsBean(GameObject original, string beanName, Transform parent,
bool instantiateInWorldSpace) where T : MonoBehaviour;
///
/// 创建一个GameObject作为Bean
///
/// 原型
/// 名字
/// 位置
/// 旋转
/// Bean类型
/// Bean实例
T CreateGameObjectAsBean(GameObject original, string beanName, Vector3 position, Quaternion rotation)
where T : MonoBehaviour;
///
/// 创建一个GameObject作为Bean
///
/// 原型
/// 名字
/// 位置
/// 旋转
/// 父物体
/// Bean类型
/// Bean实例
T CreateGameObjectAsBean(GameObject original, string beanName, Vector3 position, Quaternion rotation,
Transform parent) where T : MonoBehaviour;
///
/// 删除一个游戏物体Bean
///
/// Bean实例
/// Bean名字
/// 是否删除游戏物体
/// 延迟时间
/// Bean类型
/// 是否删除成功
bool DeleteGameObjBean(T bean, string beanName = "", bool deleteGameObj = false, float t = 0.0F)
where T : MonoBehaviour;
///
/// 立即删除一个游戏物体Bean
///
/// Bean实例
/// Bean名字
/// 是否删除游戏物体
/// Bean类型
/// 是否删除成功
bool DeleteGameObjBeanImmediate(T bean, string beanName = "", bool deleteGameObj = false)
where T : MonoBehaviour;
///
/// 只添加实例Bean
///
///
/// Bean实例
/// Bean名字
///
bool AddBean(T bean, string beanName)
where T : MonoBehaviour;
///
/// 获取一个Bean
///
/// Bean的名字
/// Bean的类型
/// Bean实例
T GetBean(string name = "") where T : class;
List GetBeans() where T : class;
///
/// 获取场景中需要注入的MonoBehaviour实例
///
void Init();
///
/// 清空该场景的Bean
///
/// 场景名称
/// 是否清空跨场景的Bean
void ClearBeans(string scene = null, bool clearAcrossScenesBeans = false);
///
/// 清空该场景的Bean
///
/// 是否清空跨场景的Bean
void ClearBeans(bool clearAcrossScenesBeans);
}
}