60 lines
1.7 KiB
C#
60 lines
1.7 KiB
C#
using GameWrapper;
|
||
using UnityEngine;
|
||
|
||
/// <summary>
|
||
/// 相机逻辑接口 定义在GameWrapper中 实现放在Gameplay命名空间
|
||
/// </summary>
|
||
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);
|
||
}
|
||
|
||
/// <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;
|
||
Debug.Log("Registered CameraLogic factory method");
|
||
}
|
||
|
||
/// <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);
|
||
}
|
||
} |