Heroes_of_Hiis/Assets/Oculus/Voice/Demo/Scripts/InteractionHandler.cs

87 lines
2.8 KiB
C#
Raw Normal View History

2022-03-07 15:52:41 +00:00
/**************************************************************************************************
* Copyright : Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved.
*
* Your use of this SDK or tool is subject to the Oculus SDK License Agreement, available at
* https://developer.oculus.com/licenses/oculussdk/
*
* Unless required by applicable law or agreed to in writing, the Utilities 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 Facebook.WitAi;
using Facebook.WitAi.Lib;
using UnityEngine;
using UnityEngine.UI;
namespace Oculus.Voice.Demo.UIShapesDemo
{
public class InteractionHandler : MonoBehaviour
{
[Header("Default States"), Multiline]
[SerializeField] private string freshStateText = "Try pressing the Activate button and saying \"Make the cube red\"";
[Header("UI")]
[SerializeField] private Text textArea;
[SerializeField] private bool showJson;
[Header("Voice")]
[SerializeField] private AppVoiceExperience appVoiceExperience;
private string pendingText;
private void OnEnable()
{
appVoiceExperience.events.OnRequestCreated.AddListener(OnRequestStarted);
}
private void OnDisable()
{
appVoiceExperience.events.OnRequestCreated.RemoveListener(OnRequestStarted);
}
private void OnRequestStarted(WitRequest r)
{
// The raw response comes back on a different thread. We store the
// message received for display on the next frame.
if (showJson) r.onRawResponse = (response) => pendingText = response;
}
private void Update()
{
if (null != pendingText)
{
textArea.text = pendingText;
pendingText = null;
}
}
public void OnResponse(WitResponseNode response)
{
if (!string.IsNullOrEmpty(response["text"]))
{
textArea.text = "I heard: " + response["text"];
}
else
{
textArea.text = freshStateText;
}
}
public void OnError(string error, string message)
{
textArea.text = $"<color=\"red\">Error: {error}\n\n{message}</color>";
}
public void ToggleActivation()
{
if (appVoiceExperience.Active) appVoiceExperience.Deactivate();
else
{
appVoiceExperience.Activate();
}
}
}
}