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(); } }