2025-04-28 15:26:51 +08:00
|
|
|
|
using GameWrapper;
|
|
|
|
|
|
using UnityEngine;
|
2025-04-29 13:16:40 +08:00
|
|
|
|
using UnityEngine.EventSystems;
|
2025-04-28 15:26:51 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 相机逻辑接口 定义在GameWrapper中 实现放在Gameplay命名空间
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public interface ICameraLogic
|
|
|
|
|
|
{
|
2025-04-29 13:16:40 +08:00
|
|
|
|
bool UseOrthographicMode { get; }
|
2025-04-28 15:26:51 +08:00
|
|
|
|
void Update();
|
|
|
|
|
|
void AdjustSelf();
|
|
|
|
|
|
void KeepCenter(Vector3 centerPos);
|
|
|
|
|
|
void CampKeepCenter(Vector3 centerPos);
|
2025-04-29 13:16:40 +08:00
|
|
|
|
void InitializeCameraPosition(Vector3 targetPosition, MapData.CameraInfo cameraInfo = null);
|
2025-04-28 15:26:51 +08:00
|
|
|
|
void SetCameraFOVSize(float initialFOV);
|
|
|
|
|
|
void RecordStartPos();
|
|
|
|
|
|
void ResetToStartPos(float during = 0.3f);
|
2025-04-29 13:16:40 +08:00
|
|
|
|
void OnFingersMove(float delta);
|
|
|
|
|
|
void OnEndDrag(PointerEventData pointerData);
|
|
|
|
|
|
void OnDragMove(PointerEventData pointerData);
|
2025-04-28 15:26:51 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 相机逻辑工厂
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static class CameraLogicFactory
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 委托定义 创建CameraLogic的工厂方法
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public delegate ICameraLogic CreateCameraLogicDelegate(CameraData cameraData);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 工厂方法 默认返回null
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private static CreateCameraLogicDelegate _factoryMethod = null;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 注册相机逻辑工厂方法
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static void RegisterFactory(CreateCameraLogicDelegate factoryMethod)
|
|
|
|
|
|
{
|
|
|
|
|
|
_factoryMethod = factoryMethod;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 创建相机逻辑实例
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="cameraData">相机数据</param>
|
|
|
|
|
|
/// <returns>相机逻辑实例,如果未注册工厂方法则返回null</returns>
|
|
|
|
|
|
public static ICameraLogic CreateCameraLogic(CameraData cameraData)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_factoryMethod == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
Debug.LogError("CameraLogic factory method not registered!");
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return _factoryMethod(cameraData);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|