using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; public class SelectionController : Singleton { [SerializeField] private List 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(); 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(); } } }