using System.Collections; using System.Collections.Generic; using UnityEngine; using Valve.VR; using Valve.VR.InteractionSystem; public class BackpackAccessor : MonoBehaviour { public Backpack Backpack; [Header("Actions")] public SteamVR_Action_Boolean[] GrabActions; [Tooltip("Should GrabAction become true or false when grabbing?")] public bool GrabOnBoolean = false; public SteamVR_Action_Boolean[] StoreActions; [Tooltip("Should StoreAction become true or false when dropping an item in the backpack?")] public bool StoreOnBoolean = false; private Hand Hand; private void OnEnable() { Hand = GetComponent(); foreach (SteamVR_Action_Boolean GrabAction in GrabActions) { GrabAction.AddOnChangeListener(OnGrabActionChange, Hand.handType); } foreach (SteamVR_Action_Boolean StoreAction in StoreActions) { StoreAction.AddOnChangeListener(OnStoreActionChange, Hand.handType); } } private void OnDisable() { foreach (SteamVR_Action_Boolean GrabAction in GrabActions) { GrabAction.RemoveOnChangeListener(OnGrabActionChange, Hand.handType); } foreach (SteamVR_Action_Boolean StoreAction in StoreActions) { StoreAction.RemoveOnChangeListener(OnStoreActionChange, Hand.handType); } } private void OnGrabActionChange(SteamVR_Action_Boolean actionIn, SteamVR_Input_Sources inputSources, bool newValue) { if (newValue == GrabOnBoolean) { Backpack.Grab(Hand); } } private void OnStoreActionChange(SteamVR_Action_Boolean actionIn, SteamVR_Input_Sources inputSources, bool newValue) { if (newValue == StoreOnBoolean) { Backpack.Store(Hand); } } }