Просмотр исходного кода

添加一个记录offset功能。b端使用

slambb 10 месяцев назад
Родитель
Сommit
7bc660d1b5

+ 72 - 0
Assets/BowArrow/InfraredCamera/InfraredDemo.cs

@@ -230,6 +230,11 @@ public class InfraredDemo : JCUnityLib.ViewBase
     //亮度过滤阈值  - 0.8
     public ParamFloatValue infraredFileterValue = new ParamFloatValue("ic_infraredFileterValue", 0.8f);
 
+    //准心的偏移值
+    public ParamVector2Value cameraLocationValue = new ParamVector2Value("ic_cameraLocation", Vector2.zero);
+    public ParamVector2Value screenUVValue = new ParamVector2Value("ic_screenUV", Vector2.zero);
+    
+
 
     //线段宽度阈值
     public ParamFloatValue lineWidth = new ParamFloatValue("ic_lineWidth", 4.0f);
@@ -1519,8 +1524,10 @@ public class InfraredDemo : JCUnityLib.ViewBase
                     Debug.Log("CameraLocation:"+buffer[i].CameraLocation.Value);
                     var centerOffset = infraredCameraHelper.GetCenterOffset(buffer[i].CameraLocation.Value, "CameraLocation");
                     Debug.Log("CenterOffset: " + centerOffset);
+                    cameraLocationValue.Set(centerOffset);
                     var uvCenterOffset  = infraredCameraHelper.GetCenterOffset(buffer[i].ScreenUV.Value, "ScreenUV");
                     Debug.Log("UvCenterOffset: " + uvCenterOffset);
+                    screenUVValue.Set(uvCenterOffset);
                     //如果是新手教程场景里面的校准
                     InfraredGuider infraredGuiderObj = FindObjectOfType<InfraredGuider>();
                     if (infraredGuiderObj != null)
@@ -1534,6 +1541,15 @@ public class InfraredDemo : JCUnityLib.ViewBase
 
 
     }
+    /// <summary>
+    /// 设置存储的中心偏移位置
+    /// </summary>
+    public void InitCenterOffset() {
+        infraredCameraHelper.SetCenterOffset(cameraLocationValue.Get(), "CameraLocation");
+        infraredCameraHelper.SetCenterOffset(screenUVValue.Get(), "ScreenUV");
+    }
+
+
     /// <summary>
     /// 重置中心点
     /// </summary>
@@ -1838,4 +1854,60 @@ public class ParamFloatValue
         PlayerPrefs.Save();
     }
 
+}
+/// <summary>
+/// 存储Vector2
+/// </summary>
+public class ParamVector2Value
+{
+    private string _saveKey;
+    private Vector2 _valueDefault;
+    private bool _valueLoaded;
+    private Vector2 _value;
+
+    public ParamVector2Value(string saveKey, Vector2 valueDefault)
+    {
+        _saveKey = saveKey;
+        _valueDefault = valueDefault;
+    }
+
+    public Vector2 Get()
+    {
+        if (!_valueLoaded)
+        {
+            float x = PlayerPrefs.GetFloat(_saveKey + "_x", _valueDefault.x);
+            float y = PlayerPrefs.GetFloat(_saveKey + "_y", _valueDefault.y);
+            _value = new Vector2(x, y);
+            _valueLoaded = true;
+        }
+        return _value;
+    }
+
+    public Vector2 GetDefault()
+    {
+        return _valueDefault;
+    }
+
+    public string GetKey()
+    {
+        return _saveKey;
+    }
+
+    public void Set(Vector2 value)
+    {
+        _value = value;
+        PlayerPrefs.SetFloat(_saveKey + "_x", _value.x);
+        PlayerPrefs.SetFloat(_saveKey + "_y", _value.y);
+        PlayerPrefs.Save();
+    }
+
+    /// <summary>
+    /// 重置成默认值
+    /// </summary>
+    public void Reset()
+    {
+        PlayerPrefs.SetFloat(_saveKey + "_x", _valueDefault.x);
+        PlayerPrefs.SetFloat(_saveKey + "_y", _valueDefault.y);
+        PlayerPrefs.Save();
+    }
 }

+ 11 - 0
Assets/InfraredProject/InfraredCamera/Scripts/InfraredCameraHelper.cs

@@ -235,6 +235,17 @@ namespace InfraredManager
             _screenLocate.QuitScreenLocateManual(points);
         }
         /// <summary>
+        /// 初始化中心点偏移量,用于有记录数据时候初始化
+        /// </summary>
+        /// <param name="inputPoint"></param>
+        /// <param name="type"> CameraLocation , ScreenUV</param>
+        /// <returns></returns>
+        public Vector2 SetCenterOffset(Vector2 inputPointOffset, string type = "CameraLocation")
+        {
+            // 获取偏移量
+            return _screenLocate.SetPointsOffset(inputPointOffset, type);
+        }
+        /// <summary>
         /// 获取中心点偏移量
         /// </summary>
         /// <param name="inputPoint"></param>

+ 21 - 0
Assets/InfraredProject/WebCamera/Script/ZIM/ScreenLocate.cs

@@ -1105,6 +1105,27 @@ public partial class ScreenLocate : MonoBehaviour
         }
     }
     /// <summary>
+    /// 初始化记录值
+    /// </summary>
+    /// <param name="inputPointOffset"></param>
+    /// <param name="type"></param>
+    /// <returns></returns>
+    public Vector2 SetPointsOffset(Vector2 inputPointOffset, string type = "CameraLocation")
+    {
+        // 计算从原始中心到输入点的偏移量
+        if (type == "CameraLocation")
+        {
+            OldCameraLocationOffset = CameraLocationOffset = inputPointOffset;
+            return CameraLocationOffset;
+        }
+        else
+        {
+            //ScreenUV
+            OldUVOffset = UVOffset = inputPointOffset;
+            return UVOffset;
+        }
+    }
+    /// <summary>
     /// 重置偏移量
     /// </summary>
     public void ResetPointsOffest()