Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions com.htc.upm.vive.openxr/Runtime/Toolkits/Anchor/AnchorManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -282,11 +282,17 @@ public static void ReleasePersistedAnchorCollection()
});
}

private static XrResult CompletePA(IntPtr future) {
// Updated CompletePA to set isPersisted = true on success
private static XrResult CompletePA(IntPtr future, Anchor anchor) {
Debug.Log("AnchorManager: CompletePA");
var ret = feature.PersistSpatialAnchorComplete(future, out var completion);
if (ret == XrResult.XR_SUCCESS)
{
if (anchor != null && completion.futureResult == XrResult.XR_SUCCESS)
{
anchor.isPersisted = true;
anchor.isTrackable = true; // Persisted anchors are also trackable
}
return completion.futureResult;
}
else
Expand Down Expand Up @@ -319,7 +325,8 @@ public static FutureTask<XrResult> PersistAnchor(Anchor anchor, string persistan
{
// If no auto complete, you can cancel the task and no need to free resouce.
// Once it completed, you need handle the result.
return new FutureTask<XrResult>(future, CompletePA, 10, autoComplete: false);
// Pass anchor to CompletePA so it can update isPersisted/isTrackable
return new FutureTask<XrResult>(future, (fut) => CompletePA(fut, anchor), 10, autoComplete: false);
}

return FutureTask<XrResult>.FromResult(ret);
Expand Down Expand Up @@ -410,6 +417,7 @@ public static XrResult EnumeratePersistedAnchorNames(out string[] names)
return ret;
}

// Updated CompleteCreateSAfromPA to set isTrackable = true
private static (XrResult, Anchor) CompleteCreateSAfromPA(IntPtr future)
{
Debug.Log("AnchorManager: CompleteCreateSAfromPA");
Expand All @@ -418,6 +426,7 @@ private static (XrResult, Anchor) CompleteCreateSAfromPA(IntPtr future)
{
var anchor = new Anchor(completion.anchor);
anchor.isTrackable = true;
// If created from a persisted anchor, it is not necessarily persisted yet, so isPersisted remains false
return (completion.futureResult, anchor);
}
else
Expand Down