Beispiel #1
0
    public string AddUserAnchor(GameObject go)
    {
        UnityARUserAnchorData anchorData = UnityARSessionNativeInterface.GetARSessionNativeInterface().AddUserAnchorFromGameObject(go);

        _anchoredGameObjects.Add(anchorData.identifierStr, go);
        return(anchorData.identifierStr);
    }
Beispiel #2
0
    public static UnityARUserAnchorData ToUnityArUserAnchorData(this ARHitTestResult arHitTestResult)
    {
        var transform  = UnityARMatrixOps.GetMatrix(arHitTestResult.worldTransform);
        var anchorData = new UnityARUserAnchorData
        {
            transform = transform
        };

        return(anchorData);
    }
Beispiel #3
0
        public override void ApplyAnchor(ARAnchor arAnchor)
        {
            if (!IsRunning)
            {
                return;
            }

            Matrix4x4             matrix     = Matrix4x4.TRS(arAnchor.transform.position, arAnchor.transform.rotation, arAnchor.transform.localScale);
            UnityARUserAnchorData anchorData = new UnityARUserAnchorData();

            anchorData.transform.column0 = matrix.GetColumn(0);
            anchorData.transform.column1 = matrix.GetColumn(1);
            anchorData.transform.column2 = matrix.GetColumn(2);
            anchorData.transform.column3 = matrix.GetColumn(3);

            anchorData                   = UnityARSessionNativeInterface.GetARSessionNativeInterface().AddUserAnchor(anchorData);
            arAnchor.anchorID            = anchorData.identifierStr;
            m_Anchors[arAnchor.anchorID] = arAnchor;
        }
Beispiel #4
0
        public override void ApplyAnchor(ARKAnchor _anchor)
        {
            if (!IsRunning)
            {
                return;
            }

            Transform t      = _anchor.transform;
            Matrix4x4 matrix = Matrix4x4.TRS(t.position, t.rotation, t.localScale);

            var anchorData = new UnityARUserAnchorData();

            anchorData.transform.column0 = matrix.GetColumn(0);
            anchorData.transform.column1 = matrix.GetColumn(1);
            anchorData.transform.column2 = matrix.GetColumn(2);
            anchorData.transform.column3 = matrix.GetColumn(3);
            anchorData = NativeInterface.AddUserAnchor(anchorData);

            _anchor.id            = anchorData.identifierStr;
            m_anchors[_anchor.id] = _anchor;
        }
    /// <summary>
    /// Anchors the game object to world.
    /// </summary>
    /// <returns>The anchor Id, or empty string.</returns>
    /// <param name="gameObj">Game object.</param>
    /// <param name="worldPosition">World position.</param>
    /// <param name="worldRotation">World rotation.</param>
    public string AnchorGameObjectToWorld(GameObject gameObj, Vector3 worldPosition, Quaternion worldRotation)
    {
        string sAnchorId = string.Empty;

        if (!isInitialized || !arManager)
        {
            return(sAnchorId);
        }

        GameObject anchorObj = new GameObject();

        //GameObject anchorObj = GameObject.CreatePrimitive(PrimitiveType.Cube);
        anchorObj.transform.position = worldPosition;
        anchorObj.transform.rotation = worldRotation;
        //anchorObj.transform.localScale = new Vector3(0.1f, 0.2f, 0.1f);  // for debug only

        UnityARUserAnchorData anchorData = UnityARSessionNativeInterface.GetARSessionNativeInterface().AddUserAnchorFromGameObject(anchorObj);

        sAnchorId = anchorData.identifierStr;

        anchorObj.name = sAnchorId;
        DontDestroyOnLoad(anchorObj);          // don't destroy it accross scenes

        if (gameObj)
        {
            gameObj.transform.SetParent(anchorObj.transform, true);
            gameObj.transform.localPosition = Vector3.zero;
            gameObj.transform.localRotation = Quaternion.identity;
        }

        MultiARInterop.MultiARData arData = arManager.GetARData();
        arData.allAnchorsDict[sAnchorId] = new List <GameObject>();

        if (gameObj)
        {
            arData.allAnchorsDict[sAnchorId].Add(gameObj);
        }

        return(sAnchorId);
    }
Beispiel #6
0
 static void AddAnchor(UnityARUserAnchorData anchorData)
 {
     UnityARSessionNativeInterface.GetARSessionNativeInterface()
     .AddUserAnchor(anchorData);
 }
Beispiel #7
0
        public void SendToAllPeers(UnityARUserAnchorData anchorData)
        {
#if !UNITY_EDITOR && UNITY_IOS
            _sendARAnchorToAllPeers(nativeMCSession, anchorData);
#endif
        }
Beispiel #8
0
 static extern void _sendARAnchorToAllPeers(IntPtr nativeSession, UnityARUserAnchorData anchorData);
Beispiel #9
0
 void AnchorReceived(UnityARUserAnchorData anchorData)
 {
     AnchorReceivedEvent?.Invoke(anchorData);
 }
Beispiel #10
0
 static void SendAnchorToAllPeers(UnityARUserAnchorData anchorData)
 {
     UnityMCSessionNativeInterface.GetMcSessionNativeInterface()
     .SendToAllPeers(anchorData);
 }
Beispiel #11
0
    /* Anchor the origin to the camera */
    void anchorPosition(GameObject cube)
    {
        UnityARUserAnchorData anchor = UnityARUserAnchorData.UnityARUserAnchorDataFromGameObject(cube);

        UnityARSessionNativeInterface.GetARSessionNativeInterface().AddUserAnchor(anchor);
    }