열차 목업의 내부 확인용 프로젝트
smchoi
2024-07-24 ec231f4110c782d44ea2820a1eaaa7a5711c6f16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//Allows us to use the Input System to get values for the thumbstick
using UnityEngine.InputSystem;
using UnityEngine.XR.Interaction.Toolkit;
 
public class TeleportationManager : MonoBehaviour
{
    static private bool _teleportIsActive = false;
 
    public enum ControllerType
    {
        RightHand,
        LeftHand
    }
 
    public ControllerType targetController;
 
    public InputActionAsset inputAction;
 
    public XRRayInteractor rayInteractor;
 
    public TeleportationProvider teleportationProvider;
 
    private InputAction _thumbstickInputAction;
 
    private InputAction _teleportActivate;
 
    private InputAction _teleportCancel;
 
    void Start()
    {
        rayInteractor.enabled = false;
 
        Debug.Log("XRI " + targetController.ToString());
        _teleportActivate = inputAction.FindActionMap("XRI " + targetController.ToString() + " Locomotion").FindAction("Teleport Mode Activate");
        _teleportActivate.Enable();
        //_teleportActivate.performed += OnTeleportActivate;
        
        _teleportCancel = inputAction.FindActionMap("XRI " + targetController.ToString() + " Locomotion" ).FindAction("Teleport Mode Cancel");
        _teleportCancel.Enable();
        _teleportCancel.performed += OnTeleportCancel;
 
        _thumbstickInputAction = inputAction.FindActionMap("XRI " + targetController.ToString() + " Locomotion").FindAction("Move");
        _thumbstickInputAction.Enable();
    }
 
    private void OnDestroy()
    {
        _teleportActivate.performed -= OnTeleportActivate;
        _teleportCancel.performed -= OnTeleportCancel;
    }
    void Update()
    {
        Debug.Log(_teleportIsActive);
        if (!_teleportIsActive)
        {
            return;
        }
        if (!rayInteractor.enabled)
        {
            return;
        }
 
        //if (!rayInteractor.TryGetCurrent3DRaycastHit(out RaycastHit raycastHit))
        //{
        //    rayInteractor.enabled = false;
        //    _teleportIsActive = false;
        //    return;
        //}
 
        //TeleportRequest teleportRequest = new TeleportRequest()
        //{
        //    destinationPosition = raycastHit.point,
        //};
 
        //teleportationProvider.QueueTeleportRequest(teleportRequest);
 
        //rayInteractor.enabled = false;
        //_teleportIsActive = false;
    }
 
    public void ActivateRayInteractor()
    {
 
            rayInteractor.enabled = true;
            
        
    }
 
    
 
    private void OnTeleportActivate(InputAction.CallbackContext context)
    {
        if (!_teleportIsActive)
        {
            rayInteractor.enabled = true;
            _teleportIsActive = true;
        }
 
    }
 
    
 
    private void OnTeleportCancel(InputAction.CallbackContext context)
    {
        if ( rayInteractor.enabled == true)
        {
            rayInteractor.enabled = false;
            _teleportIsActive = false;
        }
 
    }
}