void Update()
 {
     try
     {
         if (_streamReader.TryOpenFrame(10, out var frame))
         {
             using (frame)
             {
                 if (BodyTrackingEnabled)
                 {
                     var bodyFrame = frame.GetFrame <Astra.BodyFrame>();
                     bodyFrame.CopyBodyData(ref _bodies);
                     OnBodyTrackEvent?.Invoke(_bodies);
                 }
                 if (DepthEnabled)
                 {
                     AstraSdkInterop.SetDepthRegistration(_depthStream, HasDepthRegistration);
                     var _depthFrame = frame.GetFrame <Astra.DepthFrame>();
                     OnDepthFrameEvent?.Invoke(_depthFrame);
                 }
                 if (ColorEnabled)
                 {
                     var _colorFrame = frame.GetFrame <Astra.ColorFrame>();
                     OnColorFrameEvent?.Invoke(_colorFrame);
                 }
             }
         }
     }
     catch (Astra.AstraException exc)
     {
         // As a rule, exception here means that sensor was unplugged.
         print(exc.Message);
         return;
     }
 }
    void Start()
    {
        // set up Astra
        AstraDotNetAssemblyResolver.Init();
        Astra.Context.Initialize();
        AstraSdkInterop.SetLicenceKey("<INSERT YOUR LICENCE KEY>");
        var connectionString = $"device/sensor{SENSOR_INDEX}";

        _streamSet    = Astra.StreamSet.Open(connectionString);
        _streamReader = _streamSet.CreateReader();

        // set up body stream
        if (BodyTrackingEnabled)
        {
            _bodyStream = _streamReader.GetStream <Astra.BodyStream>();
            _bodyStream.Start();
        }

        // set up depth stream
        if (DepthEnabled)
        {
            _depthStream = _streamReader.GetStream <Astra.DepthStream>();
            var mode = _depthStream.AvailableModes
                       .FirstOrDefault(m =>
                                       m.FramesPerSecond == AstraConstants.Fps &&
                                       m.Width == AstraConstants.Width &&
                                       m.Height == AstraConstants.Height);
            if (mode != null)
            {
                _depthStream.SetMode(mode);
            }
            else
            {
                UnityEngine.Debug.LogWarning("Depth mode defined in AstraConstants not available on camera");
            }
            _depthStream.Start();
        }

        // set up color stream
        if (ColorEnabled)
        {
            _colorStream = _streamReader.GetStream <Astra.ColorStream>();
            var mode = _colorStream.AvailableModes
                       .FirstOrDefault(m =>
                                       m.FramesPerSecond == AstraConstants.Fps &&
                                       m.Width == AstraConstants.Width &&
                                       m.Height == AstraConstants.Height);
            if (mode != null)
            {
                _colorStream.SetMode(mode);
            }
            else
            {
                UnityEngine.Debug.LogWarning("Color mode defined in AstraConstants not available on camera");
            }
            _colorStream.Start();
        }
    }