コード例 #1
0
        public void Update()
        {
            if (Image == null || Image.TrackingState != TrackingState.Tracking)
            {
                if (_gameObject != null)
                {
                    _gameObject.SetActive(false);
                    _first = true;
                }
                return;
            }

            var arObjectState = ArBehaviour.ArObjectState;

            if (arObjectState != null && TriggerObject != null && !_gameObjectCreated)
            {
                _gameObjectCreated = true;
                //_gameObject = Instantiate(TriggerObject.gameObject);

                lock (arObjectState)
                {
                    transform.position = Image.CenterPose.position;
                    transform.rotation = Image.CenterPose.rotation;

                    var result = ArBehaviour.CreateArObject(
                        arObjectState,
                        TriggerObject.gameObject,
                        null,
                        transform,
                        TriggerObject.poi,
                        TriggerObject.poi.id,
                        out _gameObject
                        );
                    if (!ArBehaviourPosition.IsEmpty(result))
                    {
                        ArBehaviour.ErrorMessage = result;
                        return;
                    }
                }
            }

            if (_gameObject != null)
            {
                _gameObject.SetActive(true);
                if (_first)
                {
                    _first = false;
                    _gameObject.transform.position = Image.CenterPose.position;
                    _gameObject.transform.rotation = Image.CenterPose.rotation;
                }
                else
                {
                    _gameObject.transform.position = Vector3.Lerp(_gameObject.transform.position, Image.CenterPose.position, 0.02f);
                    _gameObject.transform.rotation = Quaternion.Lerp(_gameObject.transform.rotation, Image.CenterPose.rotation, 0.02f);
                }
            }
        }
コード例 #2
0
ファイル: ArFlock.cs プロジェクト: Avatarchik/ARpoise
 protected float?SetParameter(bool setValue, string value, float?defaultValue)
 {
     if (setValue && !ArBehaviourPosition.IsEmpty(value))
     {
         float floatValue;
         if (float.TryParse(value, out floatValue))
         {
             return(floatValue);
         }
     }
     return(defaultValue);
 }
コード例 #3
0
ファイル: ArFlock.cs プロジェクト: Avatarchik/ARpoise
 protected int?SetParameter(bool setValue, string value, int?defaultValue)
 {
     if (setValue && !ArBehaviourPosition.IsEmpty(value))
     {
         int intValue;
         if (int.TryParse(value, out intValue))
         {
             return(intValue);
         }
     }
     return(defaultValue);
 }
コード例 #4
0
    private void AddImageAnchor(ARImageAnchor arImageAnchor)
    {
        //Debug.LogFormat("Anchor added[{0}] : tracked {1}, name '{2}'", arImageAnchor.Identifier, arImageAnchor.IsTracked, arImageAnchor.ReferenceImageName);
        int index;

        if (arImageAnchor.ReferenceImageName != null && int.TryParse(arImageAnchor.ReferenceImageName, out index) && index >= 0)
        {
            TriggerObject triggerObject;
            var           triggerObjects = TriggerObjects;
            if (triggerObjects != null && triggerObjects.TryGetValue(index, out triggerObject))
            {
                //Debug.LogFormat("Index {0} trigger object {1}", index, triggerObject != null);

                while (index >= _gameObjects.Count)
                {
                    _gameObjects.Add(null);
                }

                var arObjectState = ArBehaviour.ArObjectState;
                if (arObjectState != null && _gameObjects[index] == null)
                {
                    lock (arObjectState)
                    {
                        GameObject newGameObject;
                        var        result = ArBehaviour.CreateArObject(
                            arObjectState,
                            triggerObject.gameObject,
                            null,
                            transform,
                            triggerObject.poi,
                            triggerObject.poi.id,
                            out newGameObject
                            );
                        if (!ArBehaviourPosition.IsEmpty(result))
                        {
                            ArBehaviour.ErrorMessage = result;
                            return;
                        }
                        _gameObjects[index] = newGameObject;
                        newGameObject.SetActive(true);
                    }
                }
            }
        }
    }
コード例 #5
0
    private void AddImageAnchor(ARImageAnchor arImageAnchor)
    {
        Debug.LogFormat("image anchor added[{0}] : tracked => {1}", arImageAnchor.Identifier, arImageAnchor.IsTracked);
        if (arImageAnchor.ReferenceImageName == "dynamicImage")
        {
            Vector3    position = UnityARMatrixOps.GetPosition(arImageAnchor.Transform);
            Quaternion rotation = UnityARMatrixOps.GetRotation(arImageAnchor.Transform);

            var arObjectState = ArBehaviour.ArObjectState;
            if (arObjectState != null && TriggerObject != null && !_gameObjectCreated)
            {
                _gameObjectCreated = true;

                lock (arObjectState)
                {
                    transform.position = position;
                    transform.rotation = rotation;

                    var result = ArBehaviour.CreateArObject(
                        arObjectState,
                        TriggerObject.gameObject,
                        null,
                        transform,
                        TriggerObject.poi,
                        TriggerObject.poi.id,
                        out _gameObject
                        );
                    if (!ArBehaviourPosition.IsEmpty(result))
                    {
                        ArBehaviour.ErrorMessage = result;
                        return;
                    }
                }
            }
        }
    }
コード例 #6
0
    private void UpdateImageAnchor(ARImageAnchor arImageAnchor)
    {
        //Debug.LogFormat("Anchor updated[{0}] : tracked {1}, name '{2}' GOs {3}",
        //    arImageAnchor.Identifier, arImageAnchor.IsTracked, arImageAnchor.ReferenceImageName, _gameObjects.Count);
        int index;

        if (arImageAnchor.ReferenceImageName != null && int.TryParse(arImageAnchor.ReferenceImageName, out index) && index >= 0)
        {
            GameObject gameObjectToAHandle = null;
            if (index < _gameObjects.Count)
            {
                gameObjectToAHandle = _gameObjects[index];
            }
            //Debug.LogFormat("Index {0} game object {1}", index, gameObjectToAHandle != null);
            if (gameObjectToAHandle != null)
            {
                if (arImageAnchor.IsTracked)
                {
                    gameObjectToAHandle.transform.localPosition = UnityARMatrixOps.GetPosition(arImageAnchor.Transform);
                    gameObjectToAHandle.transform.localRotation = UnityARMatrixOps.GetRotation(arImageAnchor.Transform);
                    if (!gameObjectToAHandle.activeSelf)
                    {
                        gameObjectToAHandle.SetActive(true);
                    }
                }
                else if (gameObjectToAHandle.activeSelf)
                {
                    //gameObjectToAHandle.SetActive(false);
                }
            }
            else if (_hasTriggerObjects)
            {
                //Debug.LogFormat("Anchor re-added[{0}] : tracked {1}, name '{2}'", arImageAnchor.Identifier, arImageAnchor.IsTracked, arImageAnchor.ReferenceImageName);
                if (arImageAnchor.ReferenceImageName != null && int.TryParse(arImageAnchor.ReferenceImageName, out index) && index >= 0)
                {
                    TriggerObject triggerObject;
                    var           triggerObjects = TriggerObjects;
                    if (triggerObjects != null && triggerObjects.TryGetValue(index, out triggerObject))
                    {
                        //Debug.LogFormat("Index {0} trigger object {1}", index, triggerObject != null);

                        while (index >= _gameObjects.Count)
                        {
                            _gameObjects.Add(null);
                        }

                        var arObjectState = ArBehaviour.ArObjectState;
                        if (arObjectState != null && _gameObjects[index] == null)
                        {
                            lock (arObjectState)
                            {
                                GameObject newGameObject;
                                var        result = ArBehaviour.CreateArObject(
                                    arObjectState,
                                    triggerObject.gameObject,
                                    null,
                                    transform,
                                    triggerObject.poi,
                                    triggerObject.poi.id,
                                    out newGameObject
                                    );
                                if (!ArBehaviourPosition.IsEmpty(result))
                                {
                                    ArBehaviour.ErrorMessage = result;
                                    return;
                                }
                                _gameObjects[index] = newGameObject;
                                newGameObject.SetActive(true);
                            }
                        }
                    }
                }
            }
        }
    }