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); } } }
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); }
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); }
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); } } } } }
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; } } } } }
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); } } } } } } }