/// <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); }
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); }
// 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(); } }