Files
VIVE-OpenXR-Unity/com.htc.upm.vive.openxr/Runtime/Toolkits/Spectator/Scripts/ISpectatorCameraSetting.cs
2024-12-06 15:44:37 +08:00

127 lines
4.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Copyright HTC Corporation All Rights Reserved.
using UnityEngine;
using VIVE.OpenXR.Toolkits.Spectator.Helper;
namespace VIVE.OpenXR.Toolkits.Spectator
{
/// <summary>
/// Name: ISpectatorCameraSetting.cs
/// Role: Contract
/// Responsibility: Define the setting attribute of the spectator camera.
/// </summary>
public interface ISpectatorCameraSetting
{
#region Property
/// <summary>
/// The struct UnityEngine.LayerMask defines which layer the camera can see or not.
/// </summary>
LayerMask LayerMask { get; set; }
/// <summary>
/// Whether or not to enable the feature of smoothing the spectator camera movement.
/// </summary>
bool IsSmoothCameraMovement { get; set; }
/// <summary>
/// The speed factor to control the smoothing impact.
/// </summary>
int SmoothCameraMovementSpeed { get; set; }
/// <summary>
/// True if visualize the spectator camera vertical FOV.
/// </summary>
bool IsFrustumShowed { get; set; }
/// <summary>
/// The spectator camera vertical FOV.
/// </summary>
float VerticalFov { get; set; }
/// <summary>
/// The panorama image resolution.
/// </summary>
SpectatorCameraHelper.SpectatorCameraPanoramaResolution PanoramaResolution { get; set; }
/// <summary>
/// The panorama image output format.
/// </summary>
TextureProcessHelper.PictureOutputFormat PanoramaOutputFormat { get; set; }
/// <summary>
/// The panorama types.
/// </summary>
TextureProcessHelper.PanoramaType PanoramaOutputType { get; set; }
/// <summary>
/// How many frustum lines will be shown?
/// </summary>
SpectatorCameraHelper.FrustumLineCount FrustumLineCount { get; set; }
/// <summary>
/// How many frustum center lines will be shown?
/// </summary>
SpectatorCameraHelper.FrustumCenterLineCount FrustumCenterLineCount { get; set; }
/// <summary>
/// Frustum line width.
/// </summary>
float FrustumLineWidth { get; set; }
/// <summary>
/// Frustum center line width.
/// </summary>
float FrustumCenterLineWidth { get; set; }
/// <summary>
/// Frustum line color.
/// </summary>
Color FrustumLineColor { get; set; }
/// <summary>
/// Frustum center line color.
/// </summary>
Color FrustumCenterLineColor { get; set; }
#endregion
#region Function
/// <summary>
/// Reset the spectator camera setting to the default value.
/// </summary>
void ResetSetting();
/// <summary>
/// Export the current spectator camera setting as a JSON file and then save it to the resource folder or persistent folder.
/// </summary>
/// <param name="attributeFileLocation">The enum SpectatorCameraHelper.AttributeFileLocation.</param>
void ExportSetting2JsonFile(in SpectatorCameraHelper.AttributeFileLocation attributeFileLocation);
/// <summary>
/// Load the setting (JSON) file via input full file path.
/// </summary>
/// <param name="jsonFilePath">The setting files full path (including file name and JSON extension).</param>
void LoadSettingFromJsonFile(in string jsonFilePath);
/// <summary>
/// Load the setting (JSON) file via input scene name, GameObject (hmd) name, and the file location (resource folder or persistent folder).
/// </summary>
/// <param name="sceneName">The scene name.</param>
/// <param name="gameObjectName">The GameObject name.</param>
/// <param name="attributeFileLocation"> The enum SpectatorCameraHelper.AttributeFileLocation.</param>
void LoadSettingFromJsonFile(
in string sceneName,
in string gameObjectName,
in SpectatorCameraHelper.AttributeFileLocation attributeFileLocation);
/// <summary>
/// Apply the spectator camera setting to the current component.
/// </summary>
/// <param name="data">The data you want to apply.</param>
void ApplyData(in SpectatorCameraHelper.SpectatorCameraAttribute data);
#endregion
}
}