private void OnTrackedImagesChanged(ARTrackedImagesChangedEventArgs eventArgs) { foreach (var trackedImage in eventArgs.added) { // Give the initial image a reasonable default scale //trackedImage.transform.localScale = new Vector3(0.01f, 1f, 0.01f); Debug.Log("Added: " + trackedImage.referenceImage.name); if (trackedImage.referenceImage.name.StartsWith("A_")) { var points = int.Parse(trackedImage.referenceImage.name.Substring(2)); var spawnedMushroom = SpawnedMushrooms.Find(x => x.gameObject == m_spawnedObjects["SENE_" + (points < 10 ? "0" : "") + points]); var openCard = new OpenCard(trackedImage.gameObject, points); OpenCards.Add(openCard); OpenToSpawned.Add(openCard, spawnedMushroom); if (Debug.isDebugBuild) { SpawnedOpenTexts.Add(Instantiate(positionTextPrefab, canvas.transform)); } onCardOpen.Invoke(openCard); } else { MushroomData curData = null; for (int i = 0; i < mushrooms.Length; i++) { if (mushrooms[i].ToString().Equals(trackedImage.referenceImage.name)) { curData = mushrooms[i]; break; } } if (curData == null) { throw new System.Exception("curData: " + trackedImage.referenceImage.name + " not found!"); } var instance = Instantiate(curData.prefab, trackedImage.transform); mushroomSpawnAnimation.Play(instance.transform); m_spawnedObjects.Add(trackedImage.referenceImage.name, instance); SpawnedMushrooms.Add(new SpawnedMushroom(instance, curData.id)); if (StartPosition == null && SpawnedMushrooms.Count == 1) { StartPosition = SpawnedMushrooms[0].gameObject.transform.position; } if (Debug.isDebugBuild) { SpawnedPositionTexts.Add(Instantiate(positionTextPrefab, canvas.transform)); } } } foreach (var trackedImage in eventArgs.updated) { if (trackedImage.trackingState != TrackingState.Tracking) { if (m_spawnedObjects.ContainsKey(trackedImage.referenceImage.name)) { m_spawnedObjects[trackedImage.referenceImage.name].SetActive(false); } //var spawnedMushroom = SpawnedMushrooms.Find(x => x.gameObject == m_spawnedObjects[trackedImage.referenceImage.name]); //GameObject trackable = m_spawnedObjects[trackedImage.referenceImage.name]; //m_spawnedObjects.Remove(trackedImage.referenceImage.name); //SpawnedMushrooms.Remove(spawnedMushroom); //Destroy(trackable); } else { if (m_spawnedObjects.ContainsKey(trackedImage.referenceImage.name)) { m_spawnedObjects[trackedImage.referenceImage.name].SetActive(true); } //Debug.Log(trackedImage.transform.eulerAngles.y.ToString()); } } foreach (var trackedImage in eventArgs.removed) { if (m_spawnedObjects.ContainsKey(trackedImage.referenceImage.name)) { var spawnedMushroom = SpawnedMushrooms.Find(x => x.gameObject == m_spawnedObjects[trackedImage.referenceImage.name]); m_spawnedObjects.Remove(trackedImage.referenceImage.name); SpawnedMushrooms.Remove(spawnedMushroom); Destroy(m_spawnedObjects[trackedImage.referenceImage.name]); } } }
// Start is called before the first frame update void Start() { current = this; }