unsafe public AnchorFragmentPose[] GetFrozenAnchors()
        {
            int numAnchors = FrozenWorld_GetNumAnchors(FrozenWorld_Snapshot.FROZEN);

            checkError();

            var res = new AnchorFragmentPose[numAnchors];

            if (numAnchors > 0)
            {
                FrozenWorld_Anchor *fwa = stackalloc FrozenWorld_Anchor[numAnchors];

                numAnchors = FrozenWorld_GetAnchors(FrozenWorld_Snapshot.FROZEN, numAnchors, fwa);
                checkError();

                for (int i = 0; i < numAnchors; i++)
                {
                    res[i] = new AnchorFragmentPose()
                    {
                        anchorId     = (AnchorId)fwa[i].anchorId,
                        fragmentPose = new FragmentPose()
                        {
                            fragmentId = (FragmentId)fwa[i].fragmentId,
                            pose       = FtoU(fwa[i].transform)
                        }
                    };
                }
            }

            return(res);
        }
        unsafe public void AddSpongyAnchors(List <AnchorPose> anchors)
        {
            if (anchors.Count == 0)
            {
                return;
            }

            FrozenWorld_Anchor *fwa = stackalloc FrozenWorld_Anchor[anchors.Count];

            for (int i = 0; i < anchors.Count; ++i)
            {
                fwa[i].anchorId   = (FrozenWorld_AnchorId)anchors[i].anchorId;
                fwa[i].fragmentId = UNKNOWN_FRAGMENT_ID;
                fwa[i].transform  = UtoF(anchors[i].pose);
            }

            FrozenWorld_AddAnchors(FrozenWorld_Snapshot.SPONGY, anchors.Count, fwa);
            checkError();
        }
        unsafe public AnchorId[] GetFrozenAnchorIds()
        {
            int numAnchors = FrozenWorld_GetNumAnchors(FrozenWorld_Snapshot.FROZEN);

            checkError();

            var res = new AnchorId[numAnchors];

            if (numAnchors > 0)
            {
                FrozenWorld_Anchor *fwa = stackalloc FrozenWorld_Anchor[numAnchors];

                numAnchors = FrozenWorld_GetAnchors(FrozenWorld_Snapshot.FROZEN, numAnchors, fwa);
                checkError();

                for (int i = 0; i < numAnchors; i++)
                {
                    res[i] = (AnchorId)fwa[i].anchorId;
                }
            }

            return(res);
        }
 [DllImport("FrozenWorldPlugin")] public static extern void FrozenWorld_AddAnchors(FrozenWorld_Snapshot snapshot, int numAnchors, FrozenWorld_Anchor *anchors);
 [DllImport("FrozenWorldPlugin")] public static extern int FrozenWorld_GetAnchors(FrozenWorld_Snapshot snapshot, int anchorsBufferSize, FrozenWorld_Anchor *anchorsOut);