//============= 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()) { GetComponent().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; } } }