Ejemplo n.º 1
0
    public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus,
                                        TrackableBehaviour.Status newStatus)
    {
        if (!gameObject.activeSelf)
        {
            return;  // avoid useless (but jarring) log message
        }
        if (!GetComponentInChildren <ImageTargetBehaviour>().enabled &&
            (newStatus == TrackableBehaviour.Status.TRACKED || newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED))
        {
            // if we receive a tracking event even though we have already disabled the marker, something went wrong
            Debug.LogError("Bad tracking event received started for disabled marker " + gameObject.name);
        }

        GameObject engine = GameObject.FindWithTag("AREngine");

        if (engine != null)
        {
            AREngineBehaviour engineBehaviour = engine.GetComponent <AREngineBehaviour>();
            if (newStatus == TrackableBehaviour.Status.TRACKED)
            {
                engineBehaviour.SetTarget(gameObject, true);
            }
            else if (newStatus != TrackableBehaviour.Status.EXTENDED_TRACKED || DeviceInput.isAttitudeYawStable)
            {
                // lose the tracking if:
                // 1. new status is neither tracked nor extended-tracked
                // 2. new status is extended-tracked, but the device yaw is valid (so we don't need it)
                engineBehaviour.SetTarget(gameObject, false);
            }

            _visible = (newStatus == TrackableBehaviour.Status.TRACKED);
        }
    }
Ejemplo n.º 2
0
    public void OnNewTrackableSource(TrackableSource trackableSource)
    {
        if (scanningDelay == -1)
        {
            scanningDelay = AREngineBehaviour.INITIALIZATION_DELAY;

            AREngineBehaviour engine = GameObject.FindWithTag("AREngine").GetComponent <AREngineBehaviour>();
            if (engine.markerState == IARMarkerState.LOST ||
                engine.currentlySeenARMarker.name != "ARTemporaryMarker" &&
                !engine.currentlySeenARMarker.GetComponent <ARMarkerBehaviour>().visible)
            {
                Debug.Log("Saving new marker...");
                if (dataSet != null)
                {
                    objectTracker.DeactivateDataSet(dataSet);
                    dataSet.DestroyAllTrackables(false);
                    dataSet.CreateTrackable(trackableSource, GetComponentInChildren <TrackableBehaviour>().gameObject);
                    objectTracker.ActivateDataSet(dataSet);
                }

                gameObject.GetComponent <ARMarkerBehaviour>().StartTracking();
            }
        }
    }