Danghor před 2 roky
rodič
revize
98e2c43cfb

+ 13 - 0
Assets/Logging/DetectionFrameLogger.cs

@@ -0,0 +1,13 @@
+using System;
+using UnityEngine;
+
+namespace Assets.Logging
+{
+    internal class DetectionFrameLogger : ILogger<DetectionFrame>
+    {
+        public void Log(DetectionFrame frame)
+        {
+            Debug.Log($"{DateTime.Now}: Detected {frame.objectCount} objects.");
+        }
+    }
+}

+ 7 - 0
Assets/Logging/ILogger.cs

@@ -0,0 +1,7 @@
+namespace Assets.Logging
+{
+    interface ILogger<in TClass>
+    {
+        void Log(TClass objectToLog);
+    }
+}

+ 4 - 2
Assets/ZED/Examples/Object Detection/Scripts/ZED3DObjectVisualizer.cs

@@ -2,6 +2,8 @@
 using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
+using Assets.Logging;
+using Assets.ZED.SDK.Helpers.Scripts;
 using UnityEngine;
 
 /// <summary>
@@ -20,9 +22,9 @@ public class ZED3DObjectVisualizer : MonoBehaviour
     /// </summary>
     [Tooltip("The scene's ZEDManager.\r\n" +
              "If you want to visualize detections from multiple ZEDs at once you will need multiple ZED3DObjectVisualizer commponents in the scene. ")]
-    public IZEDManager ZedManager => zedManagerLazy.Value;
+    IZEDManager ZedManager => zedManagerLazy.Value;
 
-    public Lazy<IZEDManager> zedManagerLazy = new(FindObjectOfType<ZEDManager>);
+    readonly Lazy<IZEDManager> zedManagerLazy = new(new LoggingZEDManager(FindObjectOfType<ZEDManager>(), new DetectionFrameLogger()));
 
     /// <summary>
     /// If true, the ZED Object Detection manual will be started as soon as the ZED is initiated.

+ 13 - 2
Assets/ZED/SDK/Helpers/Scripts/LoggingZEDManager.cs

@@ -3,17 +3,28 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using Assets.Logging;
+using Palmmedia.ReportGenerator.Core.Logging;
 using sl;
+using static ZEDManager;
 
 namespace Assets.ZED.SDK.Helpers.Scripts
 {
     internal class LoggingZEDManager : IZEDManager
     {
-        ZEDManager zedManager;
+        readonly ZEDManager zedManager;
+        readonly ILogger<DetectionFrame> detectionFrameLogger;
 
-        public LoggingZEDManager(ZEDManager zedManager)
+        public LoggingZEDManager(ZEDManager zedManager, ILogger<DetectionFrame> detectionFrameLogger)
         {
             this.zedManager = zedManager;
+            this.detectionFrameLogger = detectionFrameLogger;
+            zedManager.OnObjectDetection += ZedManager_OnObjectDetection;
+        }
+
+        void ZedManager_OnObjectDetection(DetectionFrame objFrame)
+        {
+            detectionFrameLogger.Log(objFrame);
         }
 
         public bool IsObjectDetectionRunning => zedManager.IsObjectDetectionRunning;