열차 목업의 내부 확인용 프로젝트
smchoi
2024-07-24 ff74c0073046f0e086eb7d355950bda39937c92c
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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
 
public class SelectionController : Singleton<SelectionController>
{
    [SerializeField]
    private List<SelectObject> selections;
 
 
    [SerializeField]
    private Ray ray;
    private RaycastHit hit;
 
    private int layerMask;
 
    private Vector3 hitPos;
    public Vector3 HitPos { get { return hitPos; } }
 
    void Start()
    {
        layerMask = 1 << LayerMask.NameToLayer("Train");
    }
 
    void Update()
    {
        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 
        if (Input.GetMouseButtonDown(1))
        {
            if (!EventSystem.current.IsPointerOverGameObject() && Physics.Raycast(ray, out hit, 1000f,layerMask))
            {
                // Debug.Log("Hit Green " + hit.collider.gameObject.name);
                hitPos = hit.point;
                SelectObject selectObject = hit.collider.GetComponent<SelectObject>();
                AddSelectObject(selectObject, hitPos);
 
                
 
 
            }
          
        }
        else if(Input.GetMouseButtonUp(1)) 
        {
            ClearSelectObject();
        }
    }
 
 
 
    void AddSelectObject(SelectObject selectObject, Vector3 hitPos)
    {
        ClearSelectObject();
 
        selectObject.Select();
        if (!selections.Contains(selectObject))
        {
            selections.Add(selectObject);
        }
    }
 
    void ClearSelectObject()
    {
        for (int i = 0; i < selections.Count; i++)
        {
            selections[i].UnSelect();
        }
    }
}