forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using UnityEngine;
 | 
						|
using UnityEngine.XR.Interaction.Toolkit;
 | 
						|
 | 
						|
namespace Bow
 | 
						|
{
 | 
						|
    public class Quiver : XRSocketInteractor
 | 
						|
    {
 | 
						|
        public GameObject arrowPrefab = null;
 | 
						|
        private Vector3 _attachOffset = Vector3.zero;
 | 
						|
 | 
						|
        protected override void Awake()
 | 
						|
        {
 | 
						|
            base.Awake();
 | 
						|
            CreateAndSelectArrow();
 | 
						|
            SetAttachOffset();
 | 
						|
        }
 | 
						|
 | 
						|
        protected override void OnSelectExited(XRBaseInteractable interactable)
 | 
						|
        {
 | 
						|
            base.OnSelectExited(interactable);
 | 
						|
            CreateAndSelectArrow();
 | 
						|
        }
 | 
						|
 | 
						|
        private void CreateAndSelectArrow()
 | 
						|
        {
 | 
						|
            Arrow arrow = CreateArrow();
 | 
						|
            interactionManager.ForceSelect(this, arrow);
 | 
						|
        }
 | 
						|
 | 
						|
        private Arrow CreateArrow()
 | 
						|
        {
 | 
						|
            var transform1 = transform;
 | 
						|
            GameObject arrowObject = Instantiate(arrowPrefab, transform1.position - _attachOffset, transform1.rotation);
 | 
						|
            return arrowObject.GetComponent<Arrow>();
 | 
						|
        }
 | 
						|
 | 
						|
        private void SelectArrow(Arrow arrow)
 | 
						|
        {
 | 
						|
            OnSelectEntered(arrow);
 | 
						|
            arrow.OnSelectEntered(this);
 | 
						|
        }
 | 
						|
 | 
						|
        private void SetAttachOffset()
 | 
						|
        {
 | 
						|
            if (selectTarget is XRGrabInteractable interactable)
 | 
						|
            {
 | 
						|
                _attachOffset = interactable.attachTransform.localPosition;
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |