FittsLaw/Assets/Oculus/VR/Scripts/Util/OVRMixedRealityCaptureSettings.cs
2018-10-08 23:54:11 -04:00

123 lines
5.2 KiB
C#

using UnityEngine;
using System;
using System.IO;
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
public class OVRMixedRealityCaptureSettings : ScriptableObject
{
public bool enableMixedReality = false;
public LayerMask extraHiddenLayers;
public OVRManager.CompositionMethod compositionMethod = OVRManager.CompositionMethod.External;
public OVRManager.CameraDevice capturingCameraDevice = OVRManager.CameraDevice.WebCamera0;
public bool flipCameraFrameHorizontally = false;
public bool flipCameraFrameVertically = false;
public float handPoseStateLatency = 0.0f;
public float sandwichCompositionRenderLatency = 0.0f;
public int sandwichCompositionBufferedFrames = 8;
public Color chromaKeyColor = Color.green;
public float chromaKeySimilarity = 0.6f;
public float chromaKeySmoothRange = 0.03f;
public float chromaKeySpillRange = 0.04f;
public bool useDynamicLighting = false;
public OVRManager.DepthQuality depthQuality = OVRManager.DepthQuality.Medium;
public float dynamicLightingSmoothFactor = 8.0f;
public float dynamicLightingDepthVariationClampingValue = 0.001f;
public OVRManager.VirtualGreenScreenType virtualGreenScreenType = OVRManager.VirtualGreenScreenType.Off;
public float virtualGreenScreenTopY;
public float virtualGreenScreenBottomY;
public bool virtualGreenScreenApplyDepthCulling = false;
public float virtualGreenScreenDepthTolerance = 0.2f;
public void ReadFrom(OVRManager manager)
{
enableMixedReality = manager.enableMixedReality;
compositionMethod = manager.compositionMethod;
extraHiddenLayers = manager.extraHiddenLayers;
capturingCameraDevice = manager.capturingCameraDevice;
flipCameraFrameHorizontally = manager.flipCameraFrameHorizontally;
flipCameraFrameVertically = manager.flipCameraFrameVertically;
handPoseStateLatency = manager.handPoseStateLatency;
sandwichCompositionRenderLatency = manager.sandwichCompositionRenderLatency;
sandwichCompositionBufferedFrames = manager.sandwichCompositionBufferedFrames;
chromaKeyColor = manager.chromaKeyColor;
chromaKeySimilarity = manager.chromaKeySimilarity;
chromaKeySmoothRange = manager.chromaKeySmoothRange;
chromaKeySpillRange = manager.chromaKeySpillRange;
useDynamicLighting = manager.useDynamicLighting;
depthQuality = manager.depthQuality;
dynamicLightingSmoothFactor = manager.dynamicLightingSmoothFactor;
dynamicLightingDepthVariationClampingValue = manager.dynamicLightingDepthVariationClampingValue;
virtualGreenScreenType = manager.virtualGreenScreenType;
virtualGreenScreenTopY = manager.virtualGreenScreenTopY;
virtualGreenScreenBottomY = manager.virtualGreenScreenBottomY;
virtualGreenScreenApplyDepthCulling = manager.virtualGreenScreenApplyDepthCulling;
virtualGreenScreenDepthTolerance = manager.virtualGreenScreenDepthTolerance;
}
public void ApplyTo(OVRManager manager)
{
manager.enableMixedReality = enableMixedReality;
manager.compositionMethod = compositionMethod;
manager.extraHiddenLayers = extraHiddenLayers;
manager.capturingCameraDevice = capturingCameraDevice;
manager.flipCameraFrameHorizontally = flipCameraFrameHorizontally;
manager.flipCameraFrameVertically = flipCameraFrameVertically;
manager.handPoseStateLatency = handPoseStateLatency;
manager.sandwichCompositionRenderLatency = sandwichCompositionRenderLatency;
manager.sandwichCompositionBufferedFrames = sandwichCompositionBufferedFrames;
manager.chromaKeyColor = chromaKeyColor;
manager.chromaKeySimilarity = chromaKeySimilarity;
manager.chromaKeySmoothRange = chromaKeySmoothRange;
manager.chromaKeySpillRange = chromaKeySpillRange;
manager.useDynamicLighting = useDynamicLighting;
manager.depthQuality = depthQuality;
manager.dynamicLightingSmoothFactor = dynamicLightingSmoothFactor;
manager.dynamicLightingDepthVariationClampingValue = dynamicLightingDepthVariationClampingValue;
manager.virtualGreenScreenType = virtualGreenScreenType;
manager.virtualGreenScreenTopY = virtualGreenScreenTopY;
manager.virtualGreenScreenBottomY = virtualGreenScreenBottomY;
manager.virtualGreenScreenApplyDepthCulling = virtualGreenScreenApplyDepthCulling;
manager.virtualGreenScreenDepthTolerance = virtualGreenScreenDepthTolerance;
}
const string configFileName = "mrc.config";
public void WriteToConfigurationFile()
{
string text = JsonUtility.ToJson(this, true);
try
{
string configPath = Path.Combine(Application.dataPath, configFileName);
Debug.Log("Write OVRMixedRealityCaptureSettings to " + configPath);
File.WriteAllText(configPath, text);
}
catch(Exception e)
{
Debug.LogWarning("Exception caught " + e.Message);
}
}
public void CombineWithConfigurationFile()
{
try
{
string configPath = Path.Combine(Application.dataPath, configFileName);
if (File.Exists(configPath))
{
Debug.Log("MixedRealityCapture configuration file found at " + configPath);
string text = File.ReadAllText(configPath);
Debug.Log("Apply MixedRealityCapture configuration");
JsonUtility.FromJsonOverwrite(text, this);
}
else
{
Debug.Log("MixedRealityCapture configuration file doesn't exist at " + configPath);
}
}
catch(Exception e)
{
Debug.LogWarning("Exception caught " + e.Message);
}
}
}
#endif