unsafe public void CreateAttachmentPointFromHead(Vector3 frozenPosition, out AnchorId anchorId, out Vector3 locationFromAnchor) { FrozenWorld_AttachmentPoint att; FrozenWorld_Vector v = UtoF(frozenPosition); FrozenWorld_Tracking_CreateFromHead(&v, &att); checkError(); anchorId = (AnchorId)att.anchorId; locationFromAnchor = FtoU(att.locationFromAnchor); }
unsafe public Vector3 MoveAttachmentPoint(Vector3 newFrozenLocation, AnchorId anchorId, Vector3 locationFromAnchor) { FrozenWorld_Vector targetLocation = UtoF(newFrozenLocation); FrozenWorld_AttachmentPoint attachmentPoint = new FrozenWorld_AttachmentPoint { anchorId = (FrozenWorld_AnchorId)anchorId, locationFromAnchor = UtoF(locationFromAnchor) }; FrozenWorld_Tracking_Move(&targetLocation, &attachmentPoint); checkError(); return(FtoU(attachmentPoint.locationFromAnchor)); }
unsafe public void CreateAttachmentPointFromSpawner(AnchorId contextAnchorId, Vector3 contextLocationFromAnchor, Vector3 frozenPosition, out AnchorId anchorId, out Vector3 locationFromAnchor) { FrozenWorld_AttachmentPoint context = new FrozenWorld_AttachmentPoint { anchorId = (FrozenWorld_AnchorId)contextAnchorId, locationFromAnchor = UtoF(contextLocationFromAnchor) }; FrozenWorld_AttachmentPoint att; FrozenWorld_Vector v = UtoF(frozenPosition); FrozenWorld_Tracking_CreateFromSpawner(&context, &v, &att); checkError(); anchorId = (AnchorId)att.anchorId; locationFromAnchor = FtoU(att.locationFromAnchor); }
private Vector3 FtoU(FrozenWorld_Vector v) => new Vector3(v.x, v.y, v.z);