NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/GameWrapper/Camera/ICameraLogic.cs

60 lines
1.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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);
}
}