|
1 | 1 | import { Matrix4, Quaternion, Vector3 } from 'three'
|
2 | 2 | import { XRStore } from './store.js'
|
| 3 | +import { toDOMPointInit } from './utils.js' |
3 | 4 |
|
4 | 5 | const OneVector = new Vector3(1, 1, 1)
|
5 | 6 | const ZeroVector = new Vector3(0, 0, 0)
|
@@ -84,10 +85,7 @@ export type XRAnchorSpaceOptions = {
|
84 | 85 | export async function requestXRAnchor(store: XRStore<any>, options: XRAnchorOptions): Promise<XRAnchor | undefined> {
|
85 | 86 | if (options.relativeTo === 'hit-test-result') {
|
86 | 87 | return options.hitTestResult.createAnchor?.(
|
87 |
| - new XRRigidTransform( |
88 |
| - options.offsetPosition == null ? undefined : { ...options.offsetPosition, w: 1 }, |
89 |
| - options.offsetQuaternion == null ? undefined : { ...options.offsetQuaternion }, |
90 |
| - ), |
| 88 | + new XRRigidTransform(toDOMPointInit(options.offsetPosition), toDOMPointInit(options.offsetQuaternion)), |
91 | 89 | )
|
92 | 90 | }
|
93 | 91 | let frame: XRFrame
|
@@ -118,5 +116,8 @@ export async function requestXRAnchor(store: XRStore<any>, options: XRAnchorOpti
|
118 | 116 | positionHelper.copy(offsetPosition ?? ZeroVector)
|
119 | 117 | quaternionHelper.copy(offsetQuaternion ?? NeutralQuaternion)
|
120 | 118 | }
|
121 |
| - return frame.createAnchor?.(new XRRigidTransform({ ...positionHelper, w: 1 }, { ...quaternionHelper }), space) |
| 119 | + return frame.createAnchor?.( |
| 120 | + new XRRigidTransform(toDOMPointInit(positionHelper), toDOMPointInit(quaternionHelper)), |
| 121 | + space, |
| 122 | + ) |
122 | 123 | }
|
0 commit comments