예제 #1
0
        public ARSharedData SaveSharedData()
        {
            long dataSize = GetSaveLimit();
            long usedSize = 0;

            ARSharedData.ARRawData rawdata = new ARSharedData.ARRawData(dataSize);
            NDKARStatus            status  = NDKAPI.HwArSession_save(m_ndkSession.SessionHandle, rawdata.m_pinAddr, dataSize,
                                                                     ref usedSize);

            ARExceptionAdapter.ExtractException(status);

            rawdata.DataSize = usedSize > 0? usedSize : 0;
            return(new ARSharedData(rawdata));
        }
예제 #2
0
        public ARSharedData SerializeAnchors(List <ARAnchor> anchorList, bool isNeedAlign)
        {
            long   dataSize         = GetSerializeAnchorsLimit();
            long   usedSize         = 0;
            IntPtr anchorListHandle = m_ndkSession.AnchorAdapter.CreateList();

            foreach (ARAnchor anchor in anchorList)
            {
                m_ndkSession.AnchorAdapter.AddListItem(anchorListHandle, anchor.m_anchorHandle);
            }
            ARSharedData.ARRawData rawData = new ARSharedData.ARRawData(dataSize);
            NDKARStatus            status  = NDKAPI.HwArSession_serializeAnchors(m_ndkSession.SessionHandle,
                                                                                 anchorListHandle, isNeedAlign, rawData.m_pinAddr, dataSize, ref usedSize);

            ARExceptionAdapter.ExtractException(status);
            rawData.DataSize = usedSize;
            return(new ARSharedData(rawData));
        }