Esempio n. 1
0
    /// <summary>
    /// Initializes the Word-Behaviour when it is drag-dropped into the scene
    /// </summary>
    public void OnEnable()
    {
        var behaviour = (WordBehaviour)target;

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

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

        IEditorWordBehaviour editorBehaviour = behaviour;

        if (!editorBehaviour.InitializedInEditor && !EditorApplication.isPlaying)
        {
            //default values
            editorBehaviour.SetMode(WordTemplateMode.Template);
            editorBehaviour.SetSpecificWord("Word");

            //define appearance
            UpdateMesh(behaviour);

            editorBehaviour.SetInitializedInEditor(true);

            // Inform Unity that the behaviour properties have changed.
            EditorUtility.SetDirty(behaviour);
        }
    }
    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);
        }
    }
    public override void OnInspectorGUI()
    {
        EditorGUIUtility.LookLikeInspector();

        DrawDefaultInspector();

        DataSetLoadBehaviour dslb = (DataSetLoadBehaviour)target;

        // If this instance is a prefab don't show anything in the inspector.
        if (QCARUtilities.GetPrefabType(dslb) == PrefabType.Prefab)
        {
            return;
        }

        // We know that the data set manager also has a default data set that we don't want to use => "num - 1".
        string[] dataSetList = new string[ConfigDataManager.Instance.NumConfigDataObjects - 1];
        // Fill list with available data sets.
        ConfigDataManager.Instance.GetConfigDataNames(dataSetList, false);

        DrawDataSets(dslb, dataSetList);

        if (GUI.changed)
        {
            EditorUtility.SetDirty(dslb);
        }
    }
Esempio n. 4
0
    // This method updates the respective Trackable properties (e.g. size)
    // with data set data.
    public override void ApplyDataSetProperties()
    {
        // Prefabs should not be editable
        if (QCARUtilities.GetPrefabType(mTarget) == PrefabType.Prefab)
        {
            return;
        }

        IEditorMultiTargetBehaviour mtb = (MultiTargetBehaviour)mTarget;

        ConfigData.MultiTargetData mtConfig;
        if (TrackableInDataSet(mtb.TrackableName, mtb.DataSetName))
        {
            ConfigData dataSetData = ConfigDataManager.Instance.GetConfigData(mtb.DataSetName);
            dataSetData.GetMultiTarget(mtb.TrackableName, out mtConfig);
        }
        else
        {
            // If the Trackable has been removed from the data set we reset it to default.
            ConfigData dataSetData = ConfigDataManager.Instance.GetConfigData(QCARUtilities.GlobalVars.DEFAULT_DATA_SET_NAME);
            dataSetData.GetMultiTarget(QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME, out mtConfig);
            mtb.SetDataSetPath(QCARUtilities.GlobalVars.DEFAULT_DATA_SET_NAME);
            mtb.SetNameForTrackable(QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME);
        }

        List <ConfigData.MultiTargetPartData> prtConfigs = mtConfig.parts;

        MultiTargetEditor.UpdateParts(mtb, prtConfigs.ToArray());
    }
 public override void ApplyDataSetProperties()
 {
     if (QCARUtilities.GetPrefabType(base.mTarget) != PrefabType.Prefab)
     {
         ConfigData.ImageTargetData   data;
         ImageTargetAbstractBehaviour mTarget    = (ImageTargetAbstractBehaviour)base.mTarget;
         IEditorImageTargetBehaviour  behaviour2 = mTarget;
         if (this.TrackableInDataSet(behaviour2.TrackableName, behaviour2.DataSetName))
         {
             ConfigDataManager.Instance.GetConfigData(behaviour2.DataSetName).GetImageTarget(behaviour2.TrackableName, out data);
         }
         else if (behaviour2.ImageTargetType != ImageTargetType.PREDEFINED)
         {
             data = QCARUtilities.CreateDefaultImageTarget();
         }
         else
         {
             ConfigDataManager.Instance.GetConfigData("--- EMPTY ---").GetImageTarget("--- EMPTY ---", out data);
             behaviour2.SetDataSetPath("--- EMPTY ---");
             behaviour2.SetNameForTrackable("--- EMPTY ---");
         }
         ImageTargetEditor.UpdateScale(mTarget, data.size);
         ImageTargetEditor.UpdateVirtualButtons(mTarget, data.virtualButtons.ToArray());
     }
 }
    // This method updates the respective Trackable appearance (e.g.
    // aspect ratio and texture) with data set data.
    public override void ApplyDataSetAppearance()
    {
        // Prefabs should not be changed
        if (QCARUtilities.GetPrefabType(mTarget) == PrefabType.Prefab)
        {
            return;
        }

        // Update the aspect ratio, visualization and scale of the target:
        ImageTargetBehaviour itb = (ImageTargetBehaviour)mTarget;

        ConfigData.ImageTarget itConfig;
        if (TrackableInDataSet(itb.TrackableName, itb.DataSetName))
        {
            ConfigData dataSetData = ConfigDataManager.Instance.GetConfigData(itb.DataSetName);
            dataSetData.GetImageTarget(itb.TrackableName, out itConfig);
        }
        else
        {
            // If the Trackable has been removed from the data set we reset it to default.
            ConfigData dataSetData = ConfigDataManager.Instance.GetConfigData(QCARUtilities.GlobalVars.DEFAULT_DATA_SET_NAME);
            dataSetData.GetImageTarget(QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME, out itConfig);
            itb.DataSetPath   = QCARUtilities.GlobalVars.DEFAULT_DATA_SET_NAME;
            itb.TrackableName = QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME;
        }

        ImageTargetEditor.UpdateAspectRatio(itb, itConfig.size);
        ImageTargetEditor.UpdateMaterial(itb);
    }
Esempio n. 7
0
    // This method updates the respective Trackable appearance (e.g.
    // aspect ratio and texture) with data set data.
    public override void ApplyDataSetAppearance()
    {
        // Prefabs should not be editable
        if (QCARUtilities.GetPrefabType(mTarget) == PrefabType.Prefab)
        {
            return;
        }

        IEditorCylinderTargetBehaviour ctb = (CylinderTargetBehaviour)mTarget;

        ConfigData.CylinderTargetData ctConfig;
        if (TrackableInDataSet(ctb.TrackableName, ctb.DataSetName))
        {
            ConfigData dataSetData = ConfigDataManager.Instance.GetConfigData(ctb.DataSetName);
            dataSetData.GetCylinderTarget(ctb.TrackableName, out ctConfig);
        }
        else
        {
            // If the Trackable has been removed from the data set we reset it to default.
            ConfigData dataSetData =
                ConfigDataManager.Instance.GetConfigData(QCARUtilities.GlobalVars.DEFAULT_DATA_SET_NAME);
            dataSetData.GetCylinderTarget(QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME, out ctConfig);
            ctb.SetDataSetPath(QCARUtilities.GlobalVars.DEFAULT_DATA_SET_NAME);
            ctb.SetNameForTrackable(QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME);
        }

        //update geometry based on properties from dataset
        CylinderTargetEditor.UpdateAspectRatio(ctb, ctConfig);
    }
    //// Sets position and scale in the transform component of the Virtual Button
    //// game object. The values are calculated from rectangle values (top-left
    //// and bottom-right corners).
    //// Returns false if Virtual Button is not child of an Image Target.
    //public static bool SetPosAndScaleFromButtonArea(Vector2 topLeft,
    //                                                Vector2 bottomRight,
    //                                                ImageTargetBehaviour it,
    //                                                VirtualButtonBehaviour vb)
    //{
    //    if (it == null)
    //    {
    //        return false;
    //    }

    //    float itScale = it.transform.lossyScale[0];

    //    Vector2 pos = (topLeft + bottomRight) * 0.5f;

    //    Vector2 scale = new Vector2(bottomRight[0] - topLeft[0],
    //                                topLeft[1] - bottomRight[1]);

    //    Vector3 vbPosITSpace =
    //        new Vector3(pos[0] / itScale, VirtualButtonBehaviour.TARGET_OFFSET,
    //                    pos[1] / itScale);


    //    Vector3 vbScaleITSpace =
    //        new Vector3(scale[0],
    //                    (scale[0] + scale[1]) * 0.5f,
    //                    scale[1]);

    //    vb.transform.position = it.transform.TransformPoint(vbPosITSpace);

    //    // Image Target scale is canceled out (included in both scales)
    //    vb.transform.localScale =
    //        vbScaleITSpace / vb.transform.parent.lossyScale[0];

    //    // Done:
    //    return true;
    //}

    #endregion // PUBLIC_METHODS



    #region UNITY_EDITOR_METHODS

    // Initializes the Virtual Button when it is drag-dropped into the scene.
    public void OnEnable()
    {
        if (QCARUtilities.GetPrefabType(target) == PrefabType.Prefab)
        {
            return;
        }

        if (!SceneManager.Instance.SceneInitialized)
        {
            SceneManager.Instance.InitScene();
        }

        // Create the virtual button mesh and update pose:
        VirtualButtonBehaviour vb = (VirtualButtonBehaviour)target;

        // Update the pose if required:
        if (!vb.mHasUpdatedPose)
        {
            vb.UpdatePose();
        }

        // Create the mesh for visualization if required:
        if (!IsVBMeshCreated(vb))
        {
            CreateVBMesh(vb);
        }

        // Validate virtual buttons:
        Validate();
    }
Esempio n. 9
0
    // This method is called when new configuration values are available and
    // need to be applied to Image Target objects in the scene.
    public override void ApplyDataSetProperties()
    {
        // Prefabs should not be changed
        if (QCARUtilities.GetPrefabType(mTarget) == PrefabType.Prefab)
        {
            return;
        }

        // Update the aspect ratio, visualization and scale of the target:
        ImageTargetBehaviour        itb       = (ImageTargetBehaviour)mTarget;
        IEditorImageTargetBehaviour editorItb = itb;

        ConfigData.ImageTargetData itConfig;
        if (TrackableInDataSet(editorItb.TrackableName, editorItb.DataSetName))
        {
            ConfigData dataSetData = ConfigDataManager.Instance.GetConfigData(editorItb.DataSetName);
            dataSetData.GetImageTarget(editorItb.TrackableName, out itConfig);
        }
        else if (editorItb.ImageTargetType != ImageTargetType.PREDEFINED)
        {
            itConfig = QCARUtilities.CreateDefaultImageTarget();
        }
        else
        {
            // If the Trackable has been removed from the data set we reset it to default.
            ConfigData dataSetData = ConfigDataManager.Instance.GetConfigData(QCARUtilities.GlobalVars.DEFAULT_DATA_SET_NAME);
            dataSetData.GetImageTarget(QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME, out itConfig);
            editorItb.SetDataSetPath(QCARUtilities.GlobalVars.DEFAULT_DATA_SET_NAME);
            editorItb.SetNameForTrackable(QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME);
        }

        ImageTargetEditor.UpdateScale(itb, itConfig.size);
        ImageTargetEditor.UpdateVirtualButtons(itb,
                                               itConfig.virtualButtons.ToArray());
    }
Esempio n. 10
0
    // Initializes the Image Target when it is drag-dropped into the scene.
    public void OnEnable()
    {
        ImageTargetBehaviour itb = (ImageTargetBehaviour)target;

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

        // Make sure the scene and config.xml file are synchronized.
        if (!SceneManager.Instance.SceneInitialized)
        {
            SceneManager.Instance.InitScene();
        }

        // Only setup target if it has not been set up previously.
        if (!itb.mInitializedInEditor)
        {
            ConfigData.ImageTarget itConfig;

            ConfigData dataSetData = ConfigDataManager.Instance.GetConfigData(QCARUtilities.GlobalVars.DEFAULT_DATA_SET_NAME);
            dataSetData.GetImageTarget(QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME, out itConfig);

            UpdateAspectRatio(itb, itConfig.size);
            UpdateScale(itb, itConfig.size);
            UpdateMaterial(itb);
            itb.DataSetPath          = QCARUtilities.GlobalVars.DEFAULT_DATA_SET_NAME;
            itb.TrackableName        = QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME;
            itb.mInitializedInEditor = true;
        }

        // Cache the current scale of the target:
        itb.mPreviousScale = itb.transform.localScale;
    }
Esempio n. 11
0
    public override void OnInspectorGUI()
    {
        EditorGUIUtility.LookLikeInspector();
        base.DrawDefaultInspector();
        WordAbstractBehaviour target     = (WordAbstractBehaviour)base.target;
        IEditorWordBehaviour  behaviour2 = target;

        if (QCARUtilities.GetPrefabType(target) == PrefabType.Prefab)
        {
            GUILayout.Label("You can't choose a target for a prefab.", new GUILayoutOption[0]);
        }
        else if (EditorGUILayout.Toggle("Template", behaviour2.IsTemplateMode, new GUILayoutOption[0]))
        {
            behaviour2.SetMode(WordTemplateMode.Template);
        }
        else
        {
            behaviour2.SetMode(WordTemplateMode.SpecificWord);
            string word = EditorGUILayout.TextField("Specific Word", behaviour2.SpecificWord, new GUILayoutOption[0]);
            if (word != behaviour2.SpecificWord)
            {
                if (word.Length == 0)
                {
                    Debug.LogWarning("Empty string used as word: This trackable and its augmentation will never be selected at runtime.");
                }
                behaviour2.SetSpecificWord(word);
            }
        }
        if (GUI.changed)
        {
            UpdateMesh(target);
            EditorUtility.SetDirty(target);
            SceneManager.Instance.SceneUpdated();
        }
    }
Esempio n. 12
0
    // Draws a drop down list to choose a data set to activate.
    private void DrawDataSetToActivate(DataSetLoadBehaviour dslb, string[] dataSetList)
    {
        string[] dataSetListDropDownList = new string[dataSetList.Length + 1];
        dataSetListDropDownList[0] = "None";
        dataSetList.CopyTo(dataSetListDropDownList, 1);

        int currentDataSetIndex = QCARUtilities.GetIndexFromString(dslb.DataSetToActivate, dataSetListDropDownList);

        if (currentDataSetIndex < 0)
        {
            currentDataSetIndex = 0;
        }

        int newDataSetIndex = EditorGUILayout.Popup("Activate Data Set",
                                                    currentDataSetIndex,
                                                    dataSetListDropDownList);

        if (newDataSetIndex < 1)
        {
            dslb.DataSetToActivate = null;
        }
        else
        {
            dslb.DataSetToActivate = dataSetListDropDownList[newDataSetIndex];
        }
    }
    public void OnEnable()
    {
        ImageTargetAbstractBehaviour target = (ImageTargetAbstractBehaviour)base.target;

        if (QCARUtilities.GetPrefabType(target) != PrefabType.Prefab)
        {
            if (!SceneManager.Instance.SceneInitialized)
            {
                SceneManager.Instance.InitScene();
            }
            IEditorImageTargetBehaviour it = target;
            if (!it.InitializedInEditor && !EditorApplication.isPlaying)
            {
                ConfigData.ImageTargetData data;
                ConfigDataManager.Instance.GetConfigData("--- EMPTY ---").GetImageTarget("--- EMPTY ---", out data);
                UpdateAspectRatio(target, data.size);
                UpdateScale(target, data.size);
                UpdateMaterial(target);
                it.SetDataSetPath("--- EMPTY ---");
                it.SetNameForTrackable("--- EMPTY ---");
                it.SetInitializedInEditor(true);
            }
            else if (!EditorApplication.isPlaying)
            {
                CheckMesh(it);
            }
            it.SetPreviousScale(target.transform.localScale);
        }
    }
    public void OnEnable()
    {
        MultiTargetAbstractBehaviour target = (MultiTargetAbstractBehaviour)base.target;

        if (QCARUtilities.GetPrefabType(target) != PrefabType.Prefab)
        {
            if (!SceneManager.Instance.SceneInitialized)
            {
                SceneManager.Instance.InitScene();
            }
            IEditorMultiTargetBehaviour mt = target;
            if (!mt.InitializedInEditor && !EditorApplication.isPlaying)
            {
                ConfigData.MultiTargetData data;
                ConfigDataManager.Instance.GetConfigData("--- EMPTY ---").GetMultiTarget("--- EMPTY ---", out data);
                mt.SetDataSetPath("--- EMPTY ---");
                mt.SetNameForTrackable("--- EMPTY ---");
                UpdateParts(mt, data.parts.ToArray());
                mt.SetInitializedInEditor(true);
            }
            else if (!EditorApplication.isPlaying)
            {
                CheckMesh(target);
            }
            mt.SetPreviousScale(target.transform.localScale);
        }
    }
 private void DrawPredefinedTargetInsprectorUI(IEditorImageTargetBehaviour itb, bool typeChanged)
 {
     if (typeChanged)
     {
         UpdateMaterial(itb);
     }
     if (ConfigDataManager.Instance.NumConfigDataObjects > 1)
     {
         string[] configDataNames = new string[ConfigDataManager.Instance.NumConfigDataObjects];
         ConfigDataManager.Instance.GetConfigDataNames(configDataNames);
         int indexFromString = QCARUtilities.GetIndexFromString(itb.DataSetName, configDataNames);
         if (indexFromString < 0)
         {
             indexFromString = 0;
         }
         int        index       = EditorGUILayout.Popup("Data Set", indexFromString, configDataNames, new GUILayoutOption[0]);
         string     dataSetName = configDataNames[index];
         ConfigData configData  = ConfigDataManager.Instance.GetConfigData(dataSetName);
         string[]   arrayToFill = new string[configData.NumImageTargets];
         configData.CopyImageTargetNames(arrayToFill, 0);
         int selectedIndex = QCARUtilities.GetIndexFromString(itb.TrackableName, arrayToFill);
         if (selectedIndex < 0)
         {
             selectedIndex = 0;
         }
         if (index != indexFromString)
         {
             selectedIndex = 0;
         }
         int   num5  = EditorGUILayout.Popup("Image Target", selectedIndex, arrayToFill, new GUILayoutOption[0]);
         float width = EditorGUILayout.FloatField("Width", itb.GetSize().x, new GUILayoutOption[0]);
         if (width != itb.GetSize().x)
         {
             itb.SetWidth(width);
         }
         float height = EditorGUILayout.FloatField("Height ", itb.GetSize().y, new GUILayoutOption[0]);
         if (height != itb.GetSize().y)
         {
             itb.SetHeight(height);
         }
         itb.SetExtendedTracking(EditorGUILayout.Toggle("Extended tracking", itb.ExtendedTracking, new GUILayoutOption[0]));
         itb.SetPreserveChildSize(EditorGUILayout.Toggle("Preserve child size", itb.PreserveChildSize, new GUILayoutOption[0]));
         if ((arrayToFill.Length > 0) && (((index != indexFromString) || (num5 != selectedIndex)) || typeChanged))
         {
             ConfigData.ImageTargetData data2;
             itb.SetDataSetPath("QCAR/" + configDataNames[index] + ".xml");
             string name = arrayToFill[num5];
             itb.SetNameForTrackable(name);
             configData.GetImageTarget(itb.TrackableName, out data2);
             UpdateAspectRatio(itb, data2.size);
             UpdateScale(itb, data2.size);
             UpdateMaterial(itb);
         }
     }
     else if (GUILayout.Button("No targets defined. Press here for target creation!", new GUILayoutOption[0]))
     {
         SceneManager.Instance.GoToTargetManagerPage();
     }
 }
    public void OnEnable()
    {
        TextRecoAbstractBehaviour target = (TextRecoAbstractBehaviour)base.target;

        if ((QCARUtilities.GetPrefabType(target) != PrefabType.Prefab) && !SceneManager.Instance.SceneInitialized)
        {
            SceneManager.Instance.InitScene();
        }
    }
    // Create a default dataset for use in the editor.
    private ConfigData CreateDefaultDataSet()
    {
        ConfigData defaultDataSetData = new ConfigData();

        defaultDataSetData.SetImageTarget(QCARUtilities.CreateDefaultImageTarget(), QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME);
        defaultDataSetData.SetMultiTarget(CreateDefaultMultiTarget(), QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME);
        defaultDataSetData.SetCylinderTarget(CreateDefaultCylinderTarget(), QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME);
        return(defaultDataSetData);
    }
    private ConfigData CreateDefaultDataSet()
    {
        ConfigData data = new ConfigData();

        data.SetImageTarget(QCARUtilities.CreateDefaultImageTarget(), "--- EMPTY ---");
        data.SetMultiTarget(this.CreateDefaultMultiTarget(), "--- EMPTY ---");
        data.SetCylinderTarget(this.CreateDefaultCylinderTarget(), "--- EMPTY ---");
        data.SetRigidBodyTarget(this.CreateDefaultRigidBodyTarget(), "--- EMPTY ---");
        return(data);
    }
    // Create Multi Target from default Image Targets
    private List <ConfigData.MultiTargetPartData> CreateDefaultParts()
    {
        List <ConfigData.MultiTargetPartData> prts =
            new List <ConfigData.MultiTargetPartData>(6);

        // Get default Image Target and use it as template for MT parts.
        ConfigData.ImageTargetData it = QCARUtilities.CreateDefaultImageTarget();

        // We assume a square default target.
        float offset = it.size.x * 0.5f;

        // Front
        ConfigData.MultiTargetPartData frontPart = new ConfigData.MultiTargetPartData();
        frontPart.translation = new Vector3(0, offset, 0);
        frontPart.rotation    = Quaternion.AngleAxis(0, new Vector3(1, 0, 0));
        frontPart.name        = QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME;
        prts.Add(frontPart);

        // Back
        ConfigData.MultiTargetPartData backPart = new ConfigData.MultiTargetPartData();
        backPart.translation = new Vector3(0, -offset, 0);
        backPart.rotation    = Quaternion.AngleAxis(180, new Vector3(1, 0, 0));
        backPart.name        = QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME;
        prts.Add(backPart);

        // Left
        ConfigData.MultiTargetPartData leftPart = new ConfigData.MultiTargetPartData();
        leftPart.translation = new Vector3(-offset, 0, 0);
        leftPart.rotation    = Quaternion.AngleAxis(90, new Vector3(0, 0, 1));
        leftPart.name        = QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME;
        prts.Add(leftPart);

        // Right
        ConfigData.MultiTargetPartData rightPart = new ConfigData.MultiTargetPartData();
        rightPart.translation = new Vector3(offset, 0, 0);
        rightPart.rotation    = Quaternion.AngleAxis(-90, new Vector3(0, 0, 1));
        rightPart.name        = QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME;
        prts.Add(rightPart);

        // Top
        ConfigData.MultiTargetPartData topPart = new ConfigData.MultiTargetPartData();
        topPart.translation = new Vector3(0, 0, offset);
        topPart.rotation    = Quaternion.AngleAxis(90, new Vector3(1, 0, 0));
        topPart.name        = QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME;
        prts.Add(topPart);

        // Bottom
        ConfigData.MultiTargetPartData btmPart = new ConfigData.MultiTargetPartData();
        btmPart.translation = new Vector3(0, 0, -offset);
        btmPart.rotation    = Quaternion.AngleAxis(-90, new Vector3(1, 0, 0));
        btmPart.name        = QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME;
        prts.Add(btmPart);

        return(prts);
    }
    public override void OnInspectorGUI()
    {
        EditorGUIUtility.LookLikeInspector();
        base.DrawDefaultInspector();
        MultiTargetAbstractBehaviour target     = (MultiTargetAbstractBehaviour)base.target;
        IEditorMultiTargetBehaviour  behaviour2 = target;

        if (QCARUtilities.GetPrefabType(target) == PrefabType.Prefab)
        {
            GUILayout.Label("You can't choose a target for a prefab.", new GUILayoutOption[0]);
        }
        else if (ConfigDataManager.Instance.NumConfigDataObjects > 1)
        {
            string[] configDataNames = new string[ConfigDataManager.Instance.NumConfigDataObjects];
            ConfigDataManager.Instance.GetConfigDataNames(configDataNames);
            int indexFromString = QCARUtilities.GetIndexFromString(behaviour2.DataSetName, configDataNames);
            if (indexFromString < 0)
            {
                indexFromString = 0;
            }
            int        index       = EditorGUILayout.Popup("Data Set", indexFromString, configDataNames, new GUILayoutOption[0]);
            string     dataSetName = configDataNames[index];
            ConfigData configData  = ConfigDataManager.Instance.GetConfigData(dataSetName);
            string[]   arrayToFill = new string[configData.NumMultiTargets];
            configData.CopyMultiTargetNames(arrayToFill, 0);
            int selectedIndex = QCARUtilities.GetIndexFromString(behaviour2.TrackableName, arrayToFill);
            if (selectedIndex < 0)
            {
                selectedIndex = 0;
            }
            int num4 = EditorGUILayout.Popup("Multi Target", selectedIndex, arrayToFill, new GUILayoutOption[0]);
            if ((arrayToFill.Length > 0) && ((index != indexFromString) || (num4 != selectedIndex)))
            {
                behaviour2.SetDataSetPath("QCAR/" + configDataNames[index] + ".xml");
                behaviour2.SetNameForTrackable(arrayToFill[num4]);
            }
            behaviour2.SetExtendedTracking(EditorGUILayout.Toggle("Extended tracking", behaviour2.ExtendedTracking, new GUILayoutOption[0]));
        }
        else if (GUILayout.Button("No targets defined. Press here for target creation!", new GUILayoutOption[0]))
        {
            SceneManager.Instance.GoToTargetManagerPage();
        }
        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
            TrackableAccessor accessor = AccessorFactory.Create(target);
            if (accessor != null)
            {
                accessor.ApplyDataSetProperties();
            }
            SceneManager.Instance.SceneUpdated();
        }
    }
 private void DrawCloudRecoTargetInspectorUI(IEditorImageTargetBehaviour itb, bool typeChanged)
 {
     if (typeChanged)
     {
         ConfigData.ImageTargetData data = QCARUtilities.CreateDefaultImageTarget();
         itb.SetNameForTrackable(string.Empty);
         UpdateAspectRatio(itb, data.size);
         UpdateMaterial(itb);
     }
     itb.SetExtendedTracking(EditorGUILayout.Toggle("Extended tracking", itb.ExtendedTracking, new GUILayoutOption[0]));
     itb.SetPreserveChildSize(EditorGUILayout.Toggle("Preserve child size", itb.PreserveChildSize, new GUILayoutOption[0]));
 }
Esempio n. 22
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();
        }
    }
Esempio n. 23
0
    // 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();
        }
    }
Esempio n. 24
0
    public override void OnInspectorGUI()
    {
        SetBGCameraLayerAbstractBehaviour target = (SetBGCameraLayerAbstractBehaviour)base.target;

        EditorGUILayout.HelpBox("Here you can enter the index of the layer that will be used as the layer for background that is rendered for this camera. \nThe ARCamera will also be configured to not draw this layer.", MessageType.None);
        target.CameraLayer = EditorGUILayout.IntField("Render Texture Layer", target.CameraLayer, new GUILayoutOption[0]);
        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
            if (QCARUtilities.GetPrefabType(target) != PrefabType.Prefab)
            {
                SceneManager.Instance.SceneUpdated();
            }
        }
    }
Esempio n. 25
0
    public void OnEnable()
    {
        var trb = (TextRecoBehaviour)target;

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

        // Make sure the scene and config.xml file are synchronized.
        if (!SceneManager.Instance.SceneInitialized)
        {
            SceneManager.Instance.InitScene();
        }
    }
Esempio n. 26
0
    public void OnEnable()
    {
        WebCamBehaviour webCam = (WebCamBehaviour)target;

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

        // Initialize scene manager
        if (!SceneManager.Instance.SceneInitialized)
        {
            SceneManager.Instance.InitScene();
        }
    }
Esempio n. 27
0
    // Lets the user choose a Marker by specifying an ID.
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        MarkerBehaviour mb = (MarkerBehaviour)target;

        if (QCARUtilities.GetPrefabType(mb) == PrefabType.Prefab)
        {
            // Only allow initial values for prefabs.
            mb.MarkerID = -1;
            EditorGUILayout.IntField("Marker ID", mb.MarkerID);
            EditorGUILayout.Toggle("Preserve child size",
                                   mb.mPreserveChildSize);
        }
        else
        {
            int newMarkerID = EditorGUILayout.IntField("Marker ID",
                                                       mb.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 != mb.MarkerID)
            {
                mb.MarkerID = newMarkerID;
            }

            mb.mPreserveChildSize =
                EditorGUILayout.Toggle("Preserve child size",
                                       mb.mPreserveChildSize);
        }

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

            SceneManager.Instance.SceneUpdated();
        }
    }
 private void DrawUserDefinedTargetInspectorUI(IEditorImageTargetBehaviour itb, bool typeChanged)
 {
     if (typeChanged)
     {
         ConfigData.ImageTargetData data = QCARUtilities.CreateDefaultImageTarget();
         itb.SetNameForTrackable(string.Empty);
         UpdateAspectRatio(itb, data.size);
         UpdateMaterial(itb);
     }
     if (itb.TrackableName.Length > 0x40)
     {
         EditorGUILayout.HelpBox("Target name must not exceed 64 character limit!", MessageType.Error);
     }
     itb.SetNameForTrackable(EditorGUILayout.TextField("Target Name", itb.TrackableName, new GUILayoutOption[0]));
     itb.SetExtendedTracking(EditorGUILayout.Toggle("Extended tracking", itb.ExtendedTracking, new GUILayoutOption[0]));
     itb.SetPreserveChildSize(EditorGUILayout.Toggle("Preserve child size", itb.PreserveChildSize, new GUILayoutOption[0]));
 }
Esempio n. 29
0
    private void DrawCloudRecoTargetInspectorUI(IEditorImageTargetBehaviour itb, bool typeChanged)
    {
        if (typeChanged)
        {
            ConfigData.ImageTargetData itConfig = QCARUtilities.CreateDefaultImageTarget();
            itb.SetNameForTrackable(string.Empty);

            // Update the aspect ratio and mesh used for visualisation:
            UpdateAspectRatio(itb, itConfig.size);

            // Update the material:
            UpdateMaterial(itb);
        }

        // Draw check box to de-/activate "preserve child size" mode.
        itb.SetPreserveChildSize(EditorGUILayout.Toggle("Preserve child size", itb.PreserveChildSize));
    }
Esempio n. 30
0
    public override void OnInspectorGUI()
    {
        EditorGUIUtility.LookLikeInspector();
        base.DrawDefaultInspector();
        DataSetLoadAbstractBehaviour target = (DataSetLoadAbstractBehaviour)base.target;

        if (QCARUtilities.GetPrefabType(target) != PrefabType.Prefab)
        {
            string[] configDataNames = new string[ConfigDataManager.Instance.NumConfigDataObjects - 1];
            ConfigDataManager.Instance.GetConfigDataNames(configDataNames, false);
            this.DrawDataSets(target, configDataNames);
            if (GUI.changed)
            {
                EditorUtility.SetDirty(target);
            }
        }
    }