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