UP-Viagg-io/Viagg-io/Assets/Packages/MyBT/BTC/Handlers/NamedGrabEvent.cs

117 lines
3.2 KiB
C#
Raw Normal View History

//============= Copyright (c) Ludic GmbH, All rights reserved. ==============
//
// Purpose: Part of the My Behaviour Tree Controller Code
//
//=============================================================================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using MyBT;
using UnityEngine.XR.Interaction.Toolkit;
#if UNITY_EDITOR
using UnityEditor;
[CustomEditor(typeof(NamedGrabEvent))]
public class NamedGrabEventInspector : ComponentHandlerInspector {
}
#endif
public class NamedGrabEvent : ComponentHandler {
public override string TypeLabel () {
return "NamedGrabEvent";
}
public override string ContentLabel() {
UpdateComponent();
return objName;
}
public override void UpdateComponent() {
base.UpdateComponent();
if (GetComponent<XRGrabInteractable>())
{
GetComponent<XRGrabInteractable>().selectEntered.AddListener(SelectEnterEventHandler);
2024-08-14 17:33:21 +02:00
GetComponent<XRGrabInteractable>().selectExited.AddListener(SelectExitEventHandler);
}
else {
Debug.LogWarning($"NamedGrabEvent '{gameObject.name}' could not attach grab event (missing XR Grab Interactable?)");
}
}
public string objName = "GrabObjXY";
2024-08-14 17:33:21 +02:00
private bool selectEnterTriggered = false;
private bool selectExitTriggered = false;
2024-08-14 17:33:21 +02:00
private void SelectEnterEventHandler(SelectEnterEventArgs args)
{
2024-08-14 17:33:21 +02:00
selectEnterTriggered = true;
}
private void SelectExitEventHandler(SelectExitEventArgs args)
{
selectExitTriggered = true;
}
public override string titleText {
get {
2024-08-14 17:33:21 +02:00
return "Run: Will Succeed on Select Enter and Exit Event";
}
}
public override string[][] helpText {
get {
return new string[][] {
2024-08-14 17:33:21 +02:00
new string[] {"Run", "Return Success on Select Enter and Exit Event", $"BTC.Run(\"{roomId}\", \"{gameObject.name}\")"},
};
}
}
public override void Run(MyBT.NodeState nodeState) {
if (nodeState == NodeState.FirstRun) {
// reset event trigger at start
2024-08-14 17:33:21 +02:00
selectEnterTriggered = false;
}
if (nodeState == NodeState.Aborting) {
2024-08-14 17:33:21 +02:00
selectEnterTriggered = false;
}
if (selectEnterTriggered) {
2024-09-24 17:33:08 +02:00
Debug.Log($"NamedGrabEvent: Select entered event from {gameObject.name} fired.");
2024-08-14 17:33:21 +02:00
Task.SetSucceeded();
return;
}
2024-09-24 17:33:08 +02:00
}
2024-09-24 17:33:08 +02:00
public override void ListenToEvent(MyBT.NodeState nodeState)
{
if (nodeState == NodeState.FirstRun)
2024-08-14 17:33:21 +02:00
{
2024-09-24 17:33:08 +02:00
// reset event trigger at start
selectExitTriggered = false;
Debug.Log("Enter ListenToEvent");
}
2024-09-24 17:33:08 +02:00
if (nodeState == NodeState.Aborting)
{
selectExitTriggered = false;
}
if (nodeState == NodeState.Running)
{
if (selectExitTriggered)
{
Debug.Log($"NamedGrabEvent: Select exited event from {gameObject.name} fired.");
Task.SetSucceeded();
return;
}
}
}
}