public void OnEnable()
    {
        MarkerAbstractBehaviour target = (MarkerAbstractBehaviour)base.target;

        if (QCARUtilities.GetPrefabType(target) != PrefabType.Prefab)
        {
            if (!SceneManager.Instance.SceneInitialized)
            {
                SceneManager.Instance.InitScene();
            }
            IEditorMarkerBehaviour behaviour2 = target;
            if (!behaviour2.InitializedInEditor && !EditorApplication.isPlaying)
            {
                behaviour2.SetMarkerID(SceneManager.Instance.GetNextFrameMarkerID());
                CreateMesh(target);
                behaviour2.SetNameForTrackable("FrameMarker" + behaviour2.MarkerID);
                target.name = "FrameMarker" + behaviour2.MarkerID;
                behaviour2.SetInitializedInEditor(true);
                EditorUtility.SetDirty(target);
                SceneManager.Instance.SceneUpdated();
            }
            else if (!EditorApplication.isPlaying)
            {
                CheckMesh(target);
            }
            behaviour2.SetPreviousScale(target.transform.localScale);
        }
    }
    // Lets the user choose a Marker by specifying an ID.
    public override void OnInspectorGUI()
    {
        EditorGUIUtility.LookLikeInspector();

        DrawDefaultInspector();

        MarkerBehaviour        mb       = (MarkerBehaviour)target;
        IEditorMarkerBehaviour editorMb = mb;

        if (QCARUtilities.GetPrefabType(mb) == PrefabType.Prefab)
        {
            // Only allow initial values for prefabs.
            editorMb.SetMarkerID(-1);
            EditorGUILayout.IntField("Marker ID", editorMb.MarkerID);
            EditorGUILayout.Toggle("Preserve child size",
                                   editorMb.PreserveChildSize);
        }
        else
        {
            int newMarkerID = EditorGUILayout.IntField("Marker ID",
                                                       editorMb.MarkerID);

            if (newMarkerID < 0)
            {
                newMarkerID = 0;
            }
            else if (newMarkerID >=
                     QCARUtilities.GlobalVars.MAX_NUM_FRAME_MARKERS)
            {
                newMarkerID =
                    QCARUtilities.GlobalVars.MAX_NUM_FRAME_MARKERS - 1;
            }

            if (newMarkerID != editorMb.MarkerID)
            {
                editorMb.SetMarkerID(newMarkerID);
                editorMb.SetNameForTrackable("FrameMarker" + newMarkerID);
            }

            editorMb.SetPreserveChildSize(EditorGUILayout.Toggle("Preserve child size",
                                                                 editorMb.PreserveChildSize));
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(mb);

            SceneManager.Instance.SceneUpdated();
        }
    }
Beispiel #3
0
    internal MarkerAbstractBehaviour CreateNewMarkerBehaviourForMarker(Marker trackable, GameObject gameObject)
    {
        MarkerAbstractBehaviour behaviour = BehaviourComponentFactory.Instance.AddMarkerBehaviour(gameObject);
        float size = trackable.GetSize();

        Debug.Log(string.Concat(new object[] { "Creating Marker with values: \n MarkerID:     ", trackable.MarkerID, "\n TrackableID:  ", trackable.ID, "\n Name:         ", trackable.Name, "\n Size:         ", size, "x", size }));
        IEditorMarkerBehaviour behaviour2 = behaviour;

        behaviour2.SetMarkerID(trackable.MarkerID);
        behaviour2.SetNameForTrackable(trackable.Name);
        behaviour2.transform.localScale = new Vector3(size, size, size);
        behaviour2.InitializeMarker(trackable);
        this.mTrackableBehaviours[trackable.ID] = behaviour;
        return(behaviour);
    }
    // Initializes the Marker when it is drag-dropped into the scene.
    public void OnEnable()
    {
        MarkerBehaviour markerBehaviour = (MarkerBehaviour)target;

        // We don't want to initialize if this is a prefab.
        if (QCARUtilities.GetPrefabType(markerBehaviour) == PrefabType.Prefab)
        {
            return;
        }

        // Initialize scene manager
        if (!SceneManager.Instance.SceneInitialized)
        {
            SceneManager.Instance.InitScene();
        }

        IEditorMarkerBehaviour editorMarkerBehaviour = markerBehaviour;

        // Only setup marker if it has not been set up previously.
        if (!editorMarkerBehaviour.InitializedInEditor && !EditorApplication.isPlaying)
        {
            editorMarkerBehaviour.SetMarkerID(SceneManager.Instance.GetNextFrameMarkerID());

            CreateMesh(markerBehaviour);
            editorMarkerBehaviour.SetNameForTrackable("FrameMarker" + editorMarkerBehaviour.MarkerID);
            markerBehaviour.name = "FrameMarker" + editorMarkerBehaviour.MarkerID;
            editorMarkerBehaviour.SetInitializedInEditor(true);

            // Inform Unity that the behaviour properties have changed.
            EditorUtility.SetDirty(markerBehaviour);

            // Inform the scene manager about the newly added marker (to get validation).
            SceneManager.Instance.SceneUpdated();
        }
        else if (!EditorApplication.isPlaying)
        {
            CheckMesh(markerBehaviour);
        }

        // Cache the current scale of the marker:
        editorMarkerBehaviour.SetPreviousScale(markerBehaviour.transform.localScale);
    }
    /// <summary>
    /// Takes a given GameObject to add a new MarkerBehaviour to. This new Behaviour is associated with the given Marker
    /// </summary>
    public MarkerBehaviour CreateNewMarkerBehaviourForMarker(Marker trackable, GameObject gameObject)
    {
        MarkerBehaviour newMB =
            gameObject.AddComponent <MarkerBehaviour>();

        float markerSize = trackable.GetSize();

        Debug.Log("Creating Marker with values: " +
                  "\n MarkerID:     " + trackable.MarkerID +
                  "\n TrackableID:  " + trackable.ID +
                  "\n Name:         " + trackable.Name +
                  "\n Size:         " + markerSize + "x" + markerSize);

        IEditorMarkerBehaviour newEditorMB = newMB;

        newEditorMB.SetMarkerID(trackable.MarkerID);
        newEditorMB.SetNameForTrackable(trackable.Name);
        newEditorMB.transform.localScale = new Vector3(markerSize, markerSize, markerSize);
        newEditorMB.InitializeMarker(trackable);

        return(newMB);
    }
    public override void OnInspectorGUI()
    {
        EditorGUIUtility.LookLikeInspector();
        base.DrawDefaultInspector();
        MarkerAbstractBehaviour target     = (MarkerAbstractBehaviour)base.target;
        IEditorMarkerBehaviour  behaviour2 = target;

        if (QCARUtilities.GetPrefabType(target) == PrefabType.Prefab)
        {
            behaviour2.SetMarkerID(-1);
            EditorGUILayout.IntField("Marker ID", behaviour2.MarkerID, new GUILayoutOption[0]);
            EditorGUILayout.Toggle("Preserve child size", behaviour2.PreserveChildSize, new GUILayoutOption[0]);
        }
        else
        {
            int markerID = EditorGUILayout.IntField("Marker ID", behaviour2.MarkerID, new GUILayoutOption[0]);
            if (markerID < 0)
            {
                markerID = 0;
            }
            else if (markerID >= 0x200)
            {
                markerID = 0x1ff;
            }
            if (markerID != behaviour2.MarkerID)
            {
                behaviour2.SetMarkerID(markerID);
                behaviour2.SetNameForTrackable("FrameMarker" + markerID);
            }
            behaviour2.SetPreserveChildSize(EditorGUILayout.Toggle("Preserve child size", behaviour2.PreserveChildSize, new GUILayoutOption[0]));
        }
        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
            SceneManager.Instance.SceneUpdated();
        }
    }