Skip to content
Snippets Groups Projects
Tape.cs 2.17 KiB
Newer Older
  • Learn to ignore specific revisions
  • Richard Marcus's avatar
    Richard Marcus committed
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using static CommunicationEvents;
    
    public class Tape : Gadget
    {
    
        public override void OnHit(RaycastHit hit)
        {
            if (!this.isActiveAndEnabled) return;
            if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Point"))
            {
                Fact tempFact = Facts[hit.transform.GetComponent<FactObject>().Id];
    
                //we can only reach points that are lower than that with the measuring tape
                if (ActiveToolMode == ToolMode.CreateLineMode && tempFact.Representation.transform.position.y > 2.5f)
                    return;
    
                //no 0 distances
                if (FactManager.lineModeIsFirstPointSelected && FactManager.lineModeFirstPointSelected.Id != tempFact.Id)
                {
                    //Event for end of line-drawing in "ShinyThings"
                    CommunicationEvents.StopLineDrawingEvent.Invoke(null);
                    //Create LineFact
                    //Check if exactle the same line/distance already exists
                    if (!FactManager.factAlreadyExists(new int[] { FactManager.lineModeFirstPointSelected.Id, tempFact.Id }))
                        if (ActiveToolMode == ToolMode.CreateLineMode)
                            CommunicationEvents.AddFactEvent.Invoke(FactManager.AddLineFact(FactManager.lineModeFirstPointSelected.Id, tempFact.Id, FactManager.GetFirstEmptyID()));
                        else
                        {
                            CommunicationEvents.AddFactEvent.Invoke(FactManager.AddRayFact(FactManager.lineModeFirstPointSelected.Id, tempFact.Id, FactManager.GetFirstEmptyID()));
    
                        }
    
                    FactManager.lineModeIsFirstPointSelected = false;
                    FactManager.lineModeFirstPointSelected = null;
                }
                else
                {
                    //Activate LineDrawing for preview
                    FactManager.lineModeIsFirstPointSelected = true;
                    FactManager.lineModeFirstPointSelected = tempFact;
                    //Event for start line-drawing in "ShinyThings"
                    CommunicationEvents.StartLineDrawingEvent.Invoke(FactManager.lineModeFirstPointSelected);
                }
            }
        }
    
    }