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

82 lines
2.1 KiB
C#

//============= 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);
}
else {
Debug.LogWarning($"NamedGrabEvent '{gameObject.name}' could not attach grab event (missing XR Grab Interactable?)");
}
}
public string objName = "GrabObjXY";
private bool triggered = false;
public void SelectEnterEventHandler(SelectEnterEventArgs args)
{
triggered = true;
}
public override string titleText {
get {
return "Run: Will Succeed on Select Enter Event";
}
}
public override string[][] helpText {
get {
return new string[][] {
new string[] {"Run", "Return Success on Select Enter Event", $"BTC.Run(\"{roomId}\", \"{gameObject.name}\")"},
};
}
}
public override void Run(MyBT.NodeState nodeState) {
if (nodeState == NodeState.FirstRun) {
// reset event trigger at start
triggered = false;
}
if (nodeState == NodeState.Aborting) {
triggered = false;
}
if (triggered) {
Task.SetSucceeded();
return;
}
}
}