using GameWrapper;
using UnityEngine;
///
/// 相机逻辑接口 定义在GameWrapper中 实现放在Gameplay命名空间
///
public interface ICameraLogic
{
void Initialize();
void Cleanup();
void Update();
void AdjustSelf();
void KeepCenter(Vector3 centerPos);
void CampKeepCenter(Vector3 centerPos);
void InitializeCameraPosition(Vector3 targetPosition, CameraInfoData cameraInfo = null);
void SetCameraFOVSize(float initialFOV);
void RecordStartPos();
void ResetToStartPos(float during = 0.3f);
}
///
/// 相机逻辑工厂
///
public static class CameraLogicFactory
{
///
/// 委托定义 创建CameraLogic的工厂方法
///
public delegate ICameraLogic CreateCameraLogicDelegate(CameraData cameraData);
///
/// 工厂方法 默认返回null
///
private static CreateCameraLogicDelegate _factoryMethod = null;
///
/// 注册相机逻辑工厂方法
///
public static void RegisterFactory(CreateCameraLogicDelegate factoryMethod)
{
_factoryMethod = factoryMethod;
Debug.Log("Registered CameraLogic factory method");
}
///
/// 创建相机逻辑实例
///
/// 相机数据
/// 相机逻辑实例,如果未注册工厂方法则返回null
public static ICameraLogic CreateCameraLogic(CameraData cameraData)
{
if (_factoryMethod == null)
{
Debug.LogError("CameraLogic factory method not registered!");
return null;
}
return _factoryMethod(cameraData);
}
}