Esempio n. 1
0
    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]);
            }
        }
    }
Esempio n. 2
0
 // Start is called before the first frame update
 void Start()
 {
     current = this;
 }