예제 #1
0
    private void CheckBodyReader()
    {
        // Assumes AstraUnityContext.Instance.IsUpdateAsyncComplete is already true

        ReaderFrame frame;

        if (_readerBody.TryOpenFrame(0, out frame))
        {
            using (frame)
            {
                BodyFrame bodyFrame = frame.GetFrame <BodyFrame>();

                if (bodyFrame != null)
                {
                    if (_lastBodyFrameIndex != bodyFrame.FrameIndex)
                    {
                        _lastBodyFrameIndex = bodyFrame.FrameIndex;

                        NewBodyFrameEvent.Invoke(_bodyStream, bodyFrame);
                        NewBodyMaskEvent.Invoke(bodyFrame.BodyMask);
                    }
                }
            }
        }
    }
예제 #2
0
    private void CheckNV21ColorReader()
    {
        // Assumes AstraUnityContext.Instance.IsUpdateAsyncComplete is already true

        ReaderFrame frame;

        if (_readerNV21Color == null)
        {
            return;
        }
        if (_readerNV21Color.TryOpenFrame(0, out frame))
        {
            using (frame)
            {
                ColorFrame colorFrame = frame.GetFrame <ColorFrame>(Astra.Core.StreamSubType.COLOR_NV21_SUBTYPE);

                if (colorFrame != null)
                {
                    if (_lastNV21ColorFrameIndex != colorFrame.FrameIndex)
                    {
                        _lastNV21ColorFrameIndex = colorFrame.FrameIndex;

                        NewNV21ColorFrameEvent.Invoke(colorFrame);
                    }
                }
            }
        }
    }
예제 #3
0
    private void CheckColorizedBodyReader()
    {
        // Assumes AstraUnityContext.Instance.IsUpdateAsyncComplete is already true

        ReaderFrame frame;

        if (_readerColorizedBody.TryOpenFrame(0, out frame))
        {
            using (frame)
            {
                ColorizedBodyFrame colorizedBodyFrame = frame.GetFrame <ColorizedBodyFrame>();

                if (colorizedBodyFrame != null)
                {
                    if (_lastColorizedBodyFrameIndex != colorizedBodyFrame.FrameIndex)
                    {
                        _lastColorizedBodyFrameIndex = colorizedBodyFrame.FrameIndex;

                        UpdateColorizedBodyTexture(colorizedBodyFrame);
                        OnNewColorizedBodyFrame.Invoke(colorizedBodyFrame);
                    }
                }
            }
        }
    }
예제 #4
0
    private void CheckMaskedColorReader()
    {
        // Assumes AstraUnityContext.Instance.IsUpdateAsyncComplete is already true

        ReaderFrame frame;

        if (_readerMaskedColor.TryOpenFrame(0, out frame))
        {
            using (frame)
            {
                MaskedColorFrame maskedColorFrame = frame.GetFrame <MaskedColorFrame>();

                if (maskedColorFrame != null)
                {
                    if (_lastMaskedColorFrameIndex != maskedColorFrame.FrameIndex)
                    {
                        _lastMaskedColorFrameIndex = maskedColorFrame.FrameIndex;

                        UpdateMaskedColorTexture(maskedColorFrame);
                        OnMaskedColorFrame.Invoke(maskedColorFrame);
                    }
                }
            }
        }
    }
예제 #5
0
    private void CheckDepthReader()
    {
        // Assumes AstraUnityContext.Instance.IsUpdateAsyncComplete is already true

        ReaderFrame frame;

        if (_readerDepth.TryOpenFrame(0, out frame))
        {
            using (frame)
            {
                DepthFrame depthFrame = frame.GetFrame <DepthFrame>();

                if (depthFrame != null)
                {
                    if (_lastDepthFrameIndex != depthFrame.FrameIndex)
                    {
                        _lastDepthFrameIndex = depthFrame.FrameIndex;

                        UpdateDepthTexture(depthFrame);
                        OnNewDepthFrame.Invoke(depthFrame);
                    }
                }
            }
        }
    }
예제 #6
0
    private void CheckPointReader()
    {
        // Assumes AstraUnityContext.Instance.IsUpdateAsyncComplete is already true

        ReaderFrame frame;

        if (_readerPoint.TryOpenFrame(0, out frame))
        {
            using (frame)
            {
                PointFrame pointFrame = frame.GetFrame <PointFrame>();

                if (pointFrame != null)
                {
                    if (_lastPointFrameIndex != pointFrame.FrameIndex)
                    {
                        _lastPointFrameIndex = pointFrame.FrameIndex;

                        NewPointFrameEvent.Invoke(pointFrame);
                    }
                }
            }
        }
    }