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();
|
}
|
}
|
}
|