using System.Collections; using System.Collections.Generic; using UnityEngine; public class ShinyThings : MonoBehaviour { public WorldCursor Cursor; //Attributes for Highlighting of Facts when Mouse-Over private string selectableTag = "Selectable"; private Transform lastFactSelection; public Material defaultMaterial; public Material highlightMaterial; //Attributes for simulating the drawing of a line public LineRenderer lineRenderer; private List<Vector3> linePositions = new List<Vector3>(); private bool lineRendererActivated; //Visual helpers // Start is called before the first frame update void Start() { if(Cursor == null)Cursor = GetComponent<WorldCursor>(); // CommunicationEvents.HighlightEvent.AddListener(OnMouseOverFact); // CommunicationEvents.EndHighlightEvent.AddListener(OnMouseOverFactEnd); } // Update is called once per frame void Update() { //SELECTION-HIGHLIGHTING-PART //Check if a Fact was Hit RaycastHit Hit = Cursor.Hit; if (Hit.transform != null) { Transform selection = Hit.transform; //Set the last Fact unselected if (this.lastFactSelection != null) { //Invoke the EndHighlightEvent that will be handled in FactSpawner // CommunicationEvents.EndHighlightEvent.Invoke(this.lastFactSelection); OnMouseOverFactEnd(lastFactSelection); this.lastFactSelection = null; } //Set the Fact that was Hit as selected if (selection.CompareTag(selectableTag)) { //Invoke the HighlightEvent that will be handled in FactSpawner this.lastFactSelection = selection; //CommunicationEvents.HighlightEvent.Invoke(selection); OnMouseOverFact(lastFactSelection); } //SELECTION-HIGHLIGHTING-PART-END } } public void OnMouseOverFactEnd(Transform selection) { Renderer selectionRenderer; if (selection != null) { selectionRenderer = selection.GetComponent<Renderer>(); if (selectionRenderer != null) { //Set the Material of the fact back to default selectionRenderer.material = defaultMaterial; } } } public void OnMouseOverFact(Transform selection) { Renderer selectionRenderer; selectionRenderer = selection.GetComponent<Renderer>(); if (selectionRenderer != null) { //Set the Material of the Fact, where the mouse is over, to a special one selectionRenderer.material = highlightMaterial; } } void DeactivateLineRenderer() { //Reset the first points this.lineRenderer.SetPosition(0, Vector3.zero); this.lineRenderer.SetPosition(1, Vector3.zero); if (linePositions.Count > 0) this.linePositions.Clear(); this.lineRendererActivated = false; } //Updates the second-point of the Line when First Point was selected in LineMode void UpdateLineRenderer(Vector3 currentPosition) { // if (this.ActiveToolMode == ToolMode.CreateLineMode) { if (this.lineRendererActivated) { this.linePositions[1] = currentPosition; this.lineRenderer.SetPosition(1, this.linePositions[1]); } } } }