/// <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); }
// This method creates a single data set from the trackables provided. // The method ignores the data set property in TrackableBehaviour and // adds all Trackables to a single file. // Default Trackables are not added to the data set. private ConfigData CreateDataSetFromTrackables(TrackableBehaviour[] trackables) { // Sanity check. if (trackables == null) { return(null); } ConfigData sceneData = new ConfigData(); foreach (TrackableBehaviour tb in trackables) { // Ignore non-data set trackables. if (!(tb is DataSetTrackableBehaviour)) { continue; } DataSetTrackableBehaviour trackable = (DataSetTrackableBehaviour)tb; string dataSetName = trackable.DataSetName; string trackableName = trackable.TrackableName; // We ignore default Trackables or undefined Trackables. if (dataSetName == QCARUtilities.GlobalVars.DEFAULT_DATA_SET_NAME || dataSetName == "" || trackableName == QCARUtilities.GlobalVars.DEFAULT_TRACKABLE_NAME || trackableName == "") { Debug.LogWarning("Ignoring default Trackable for export"); continue; } if (trackable.GetType() == typeof(ImageTargetBehaviour)) { ImageTargetBehaviour it = (ImageTargetBehaviour)trackable; ConfigData.ImageTarget itConfig = new ConfigData.ImageTarget(); itConfig.size = it.GetSize(); // Process Virtual Button list. VirtualButtonBehaviour[] vbs = it.GetComponentsInChildren <VirtualButtonBehaviour>(); itConfig.virtualButtons = new List <ConfigData.VirtualButton>(vbs.Length); foreach (VirtualButtonBehaviour vb in vbs) { Vector2 leftTop; Vector2 rightBottom; if (!vb.CalculateButtonArea(out leftTop, out rightBottom)) { // Invalid Button continue; } ConfigData.VirtualButton vbConfig = new ConfigData.VirtualButton(); vbConfig.name = vb.VirtualButtonName; vbConfig.enabled = vb.enabled; vbConfig.rectangle = new Vector4(leftTop.x, leftTop.y, rightBottom.x, rightBottom.y); vbConfig.sensitivity = vb.SensitivitySetting; itConfig.virtualButtons.Add(vbConfig); } sceneData.SetImageTarget(itConfig, it.TrackableName); } else if (trackable.GetType() == typeof(MultiTargetBehaviour)) { Debug.Log("Multi Targets not exported."); } } return(sceneData); }
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); }