/* * Copyright (c) Meta Platforms, Inc. and affiliates. * All rights reserved. * * Licensed under the Oculus SDK License Agreement (the "License"); * you may not use the Oculus SDK except in compliance with the License, * which is provided at the time of installation or download, or which * otherwise accompanies this software in either electronic or hard copy form. * * You may obtain a copy of the License at * * https://developer.oculus.com/licenses/oculussdk/ * * Unless required by applicable law or agreed to in writing, the Oculus SDK * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using Meta.WitAi; using Meta.WitAi.Configuration; using Meta.WitAi.Requests; using UnityEngine; using UnityEngine.UI; namespace Oculus.VoiceSDK.UX { /// /// Simple button behaviour for activating audio on a referenced voice service /// [RequireComponent(typeof(Button))] public class VoiceActivationButton : MonoBehaviour { /// /// Reference to the voice service that will be activated or deactivated /// [Tooltip("Reference to the current voice service")] [SerializeField] private VoiceService _voiceService; /// /// Text to be shown while the voice service is not actively recording /// [Tooltip("Text to be shown while the voice service is not actively recording")] [SerializeField] private string _activateText = "Activate"; /// /// Whether to immediately send data to service or to wait for the audio threshold /// [Tooltip("Whether to immediately send data to service or to wait for the audio threshold")] [SerializeField] private bool _activateImmediately = false; /// /// Text to be shown while the voice service is actively recording /// [Tooltip("Text to be shown while the voice service is actively recording")] [SerializeField] private string _deactivateText = "Deactivate"; /// /// Whether to immediately abort request activation on deactivate /// [Tooltip("Whether to immediately abort request activation on deactivate")] [SerializeField] private bool _deactivateAndAbort = false; // The button to be observed private Button _button; // The button label to be adjusted with state private Text _buttonLabel; // Current audio request for specific deactivation private VoiceServiceRequest _request; // Whether an audio request is still activated or not private bool _isActive = false; // Get button, label & service if needed private void Awake() { _buttonLabel = GetComponentInChildren(); _button = GetComponent