private static void AddVirtualButton(ImageTargetBehaviour it, ConfigData.VirtualButtonData vb) { IEditorVirtualButtonBehaviour newVBBehaviour = it.CreateVirtualButton(vb.name, new Vector2(0.0f, 0.0f), new Vector2(1.0f, 1.0f)); if (newVBBehaviour != null) { newVBBehaviour.SetPosAndScaleFromButtonArea( new Vector2(vb.rectangle[0], vb.rectangle[1]), new Vector2(vb.rectangle[2], vb.rectangle[3])); VirtualButtonEditor.CreateVBMesh(newVBBehaviour); // Load default material. VirtualButtonEditor.CreateMaterial(newVBBehaviour); newVBBehaviour.enabled = vb.enabled; // Add Component to destroy VirtualButton meshes at runtime. newVBBehaviour.gameObject.AddComponent <TurnOffBehaviour>(); // Make sure Virtual Button is correctly aligned with Image Target newVBBehaviour.UpdatePose(); } else { Debug.LogError("VirtualButton could not be added!"); } }
/// <summary> /// Create or destroy the virtual button with the given name. /// </summary> public void ToggleVirtualButton(string name) { if (mImageTargetWood.ImageTarget != null) { // Get the virtual button if it exists. VirtualButton vb = mImageTargetWood.ImageTarget.GetVirtualButtonByName(name); if (vb != null) { // Destroy the virtual button if it exists. mImageTargetWood.DestroyVirtualButton(name); } else { // Get the position and scale originally used for this virtual button. Vector3 position, scale; if (mVBPositionDict.TryGetValue(name, out position) && mVBScaleDict.TryGetValue(name, out scale)) { // Deactivate the dataset before creating the virtual button. ObjectTracker objectTracker = TrackerManager.Instance.GetTracker <ObjectTracker>(); DataSet dataSet = objectTracker.GetActiveDataSets().First(); objectTracker.DeactivateDataSet(dataSet); // Create the virtual button. VirtualButtonBehaviour vbb = mImageTargetWood.CreateVirtualButton( name, new Vector2(position.x, position.z), new Vector2(scale.x, scale.z)) as VirtualButtonBehaviour; if (vbb != null) { // Register the button with the event handler on the Wood target. vbb.RegisterEventHandler(mImageTargetWood.GetComponent <VirtualButtonEventHandler>()); // Add a mesh to outline the button. CreateVBMesh(vbb); // If the Wood target isn't currently tracked hide the button. if (mImageTargetWood.CurrentStatus == TrackableBehaviour.Status.NOT_FOUND) { vbb.GetComponent <Renderer>().enabled = false; } } // Reactivate the dataset. objectTracker.ActivateDataSet(dataSet); } } } base.CloseMenu(); }
private static void AddVirtualButton(ImageTargetBehaviour it, ConfigData.VirtualButton vb) { VirtualButtonBehaviour newVBBehaviour = it.CreateVirtualButton(vb.name, new Vector2(0.0f, 0.0f), new Vector2(1.0f, 1.0f)); VirtualButtonEditor.SetPosAndScaleFromButtonArea( new Vector2(vb.rectangle[0], vb.rectangle[1]), new Vector2(vb.rectangle[2], vb.rectangle[3]), it, newVBBehaviour); VirtualButtonEditor.CreateVBMesh(newVBBehaviour); // Load default material. VirtualButtonEditor.CreateMaterial(newVBBehaviour); newVBBehaviour.enabled = vb.enabled; // Add Component to destroy VirtualButton meshes at runtime. newVBBehaviour.gameObject.AddComponent<TurnOffBehaviour>(); // Make sure Virtual Button is correctly aligned with Image Target newVBBehaviour.UpdatePose(); }