Exemplo n.º 1
0
    /// <summary>
    /// Takes a given GameObject to add a new ImageTargetBehaviour to. This new Behaviour is associated with the given ImageTarget
    /// </summary>
    public ImageTargetBehaviour FindOrCreateImageTargetBehaviourForTrackable(ImageTarget trackable, GameObject gameObject, DataSet dataSet)
    {
        DataSetTrackableBehaviour trackableBehaviour = gameObject.GetComponent <DataSetTrackableBehaviour>();

        // add an ImageTargetBehaviour if none is attached yet
        if (trackableBehaviour == null)
        {
            trackableBehaviour = gameObject.AddComponent <ImageTargetBehaviour>();
            ((IEditorTrackableBehaviour)trackableBehaviour).SetInitializedInEditor(true);
        }

        // configure the new ImageTargetBehaviour instance:
        if (!(trackableBehaviour is ImageTargetBehaviour))
        {
            Debug.LogError(
                string.Format("DataSet.CreateTrackable: Trackable of type ImageTarget was created, but behaviour of type {0} was provided!",
                              trackableBehaviour.GetType()));
            return(null);
        }

        IEditorImageTargetBehaviour editorImgTargetBehaviour = (ImageTargetBehaviour)trackableBehaviour;

        if (dataSet != null)
        {
            editorImgTargetBehaviour.SetDataSetPath(dataSet.Path);
        }
        editorImgTargetBehaviour.SetImageTargetType(trackable.ImageTargetType);
        editorImgTargetBehaviour.SetNameForTrackable(trackable.Name);
        editorImgTargetBehaviour.InitializeImageTarget(trackable);

        mTrackableBehaviours[trackable.ID] = trackableBehaviour;

        return(trackableBehaviour as ImageTargetBehaviour);
    }
Exemplo n.º 2
0
    internal ImageTargetAbstractBehaviour FindOrCreateImageTargetBehaviourForTrackable(ImageTarget trackable, GameObject gameObject, DataSet dataSet)
    {
        DataSetTrackableBehaviour component = gameObject.GetComponent <DataSetTrackableBehaviour>();

        if (component == null)
        {
            component = BehaviourComponentFactory.Instance.AddImageTargetBehaviour(gameObject);
            ((IEditorTrackableBehaviour)component).SetInitializedInEditor(true);
        }
        if (!(component is ImageTargetAbstractBehaviour))
        {
            Debug.LogError(string.Format("DataSet.CreateTrackable: Trackable of type ImageTarget was created, but behaviour of type {0} was provided!", component.GetType()));
            return(null);
        }
        IEditorImageTargetBehaviour behaviour2 = (ImageTargetAbstractBehaviour)component;

        if (dataSet != null)
        {
            behaviour2.SetDataSetPath(dataSet.Path);
        }
        behaviour2.SetImageTargetType(trackable.ImageTargetType);
        behaviour2.SetNameForTrackable(trackable.Name);
        behaviour2.InitializeImageTarget(trackable);
        this.mTrackableBehaviours[trackable.ID] = component;
        return(component as ImageTargetAbstractBehaviour);
    }
Exemplo n.º 3
0
    // Lets the user choose a Image Target from a drop down list. Image Target
    // must be defined in the "config.xml" file.
    public override void OnInspectorGUI()
    {
        EditorGUIUtility.LookLikeInspector();

        DrawDefaultInspector();

        ImageTargetBehaviour        itb       = (ImageTargetBehaviour)target;
        IEditorImageTargetBehaviour editorItb = itb;

        if (QCARUtilities.GetPrefabType(itb) == PrefabType.Prefab)
        {
            GUILayout.Label("You can't choose a target for a prefab.");
        }
        else
        {
            ImageTargetType oldType = editorItb.ImageTargetType;

            // show dropdown for type selection (predefined TMS target vs. user defined target)
            string[] typeNames =
                new[] { QCARUtilities.GlobalVars.PREDEFINED_TARGET_DROPDOWN_TEXT,
                        QCARUtilities.GlobalVars.USER_CREATED_TARGET_DROPDOWN_TEXT,
                        QCARUtilities.GlobalVars.CLOUD_RECO_DROPDOWN_TEXT };
            ImageTargetType[] typeValues =
                new [] { ImageTargetType.PREDEFINED,
                         ImageTargetType.USER_DEFINED,
                         ImageTargetType.CLOUD_RECO };
            editorItb.SetImageTargetType(typeValues[EditorGUILayout.Popup("Type", typeValues.ToList().IndexOf(editorItb.ImageTargetType), typeNames)]);

            bool typeChanged = editorItb.ImageTargetType != oldType;

            if (editorItb.ImageTargetType == ImageTargetType.PREDEFINED)
            {
                DrawPredefinedTargetInsprectorUI(itb, typeChanged);
            }
            else if (editorItb.ImageTargetType == ImageTargetType.USER_DEFINED)
            {
                DrawUserDefinedTargetInspectorUI(itb, typeChanged);
            }
            else
            {
                DrawCloudRecoTargetInspectorUI(itb, typeChanged);
            }
        }

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

            SceneManager.Instance.SceneUpdated();
        }
    }
    public override void OnInspectorGUI()
    {
        EditorGUIUtility.LookLikeInspector();
        base.DrawDefaultInspector();
        ImageTargetAbstractBehaviour target     = (ImageTargetAbstractBehaviour)base.target;
        IEditorImageTargetBehaviour  behaviour2 = target;

        if (QCARUtilities.GetPrefabType(target) == PrefabType.Prefab)
        {
            GUILayout.Label("You can't choose a target for a prefab.", new GUILayoutOption[0]);
        }
        else
        {
            ImageTargetType   imageTargetType  = behaviour2.ImageTargetType;
            string[]          displayedOptions = new string[] { "Predefined", "User Defined", "Cloud Reco" };
            ImageTargetType[] typeArray2       = new ImageTargetType[3];
            typeArray2[1] = ImageTargetType.USER_DEFINED;
            typeArray2[2] = ImageTargetType.CLOUD_RECO;
            ImageTargetType[] source = typeArray2;
            behaviour2.SetImageTargetType(source[EditorGUILayout.Popup("Type", source.ToList <ImageTargetType>().IndexOf(behaviour2.ImageTargetType), displayedOptions, new GUILayoutOption[0])]);
            bool typeChanged = behaviour2.ImageTargetType != imageTargetType;
            if (behaviour2.ImageTargetType == ImageTargetType.PREDEFINED)
            {
                this.DrawPredefinedTargetInsprectorUI(target, typeChanged);
            }
            else if (behaviour2.ImageTargetType == ImageTargetType.USER_DEFINED)
            {
                this.DrawUserDefinedTargetInspectorUI(target, typeChanged);
            }
            else
            {
                this.DrawCloudRecoTargetInspectorUI(target, typeChanged);
            }
        }
        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
            SceneManager.Instance.SceneUpdated();
        }
    }