Remove restrict annotation from following Subspace API
`Subspace` now has an overload which takes a `FollowTarget` parameter.
This was previously restricted to library scope, but is now available
publicly as an experimental API along with `FollowTarget`, `FollowMode`,
and `TrackedDimensions`.
This API is intended to phase out the `FollowingSubspace` API.
The primary changes are:
- Hierarchy of the parameters (modes and dimensions are now configured on the target).
- `FollowTarget.ArDevice` is now called `FollowTarget.view` and no longer requires passing a `Session`.
- `FollowBehavior` is now called `FollowMode`.
- `FollowTarget.anchor` now takes an ARCore `Anchor` directly, eliminating the need to create and manage an `AnchorSpace`.
Head-locked content with previous API:
```
FollowingSubspace(
target = FollowTarget.ArDevice(session),
behavior = FollowBehavior.Soft(),
dimensions = TrackedDimensions.All,
) {}
```
Head-locked content with new API:
```
Subspace(
follow = FollowTarget.view(
mode = FollowMode.soft(
dimensions = TrackedDimensions.All,
),
),
) {}
```
Anchored content with previous API:
```
val anchor = (Anchor.create(session, pose) as AnchorCreateSuccess).anchor
val anchorSpace = AnchorSpace.create(session, anchor)
FollowingSubspace(
target = FollowTarget.Anchor(anchorSpace),
behavior = FollowBehavior.Soft(),
dimensions = TrackedDimensions.All,
) {}
```
Anchored content with new API:
```
val anchor = (Anchor.create(session, pose) as AnchorCreateSuccess).anchor
Subspace(
follow = FollowTarget.anchor(
anchor = anchor,
mode = FollowMode.soft(
dimensions = TrackedDimensions.All,
),
),
) {}
```
Bug: 541471606
Test: All unit tests passed. Tested on Moohan emulator.
Relnote: Exposed experimental `Subspace` overload taking a `FollowTarget` parameter to support following content.
Change-Id: Iec1a91ce1445cdcc16331dbf791333aa0c7fac60 E
Eric Hernandez committed
5cea382f4949cff87680db53d6b66a5948bed493
Parent: 1e29f63