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