using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using System;

public static class CommunicationEvents
{
    /*  public  class PointEvent : UnityEvent<RaycastHit,int>
      {

      }

      public class LineEvent : UnityEvent<int, int, int> {

      }



      public class FactEvent : UnityEvent<int>
      {

      }*/
    public class HitEvent : UnityEvent<RaycastHit>
    {

    }
    public class FactEvent : UnityEvent<Fact>
    {

    }

    public class MouseOverFactEvent : UnityEvent<Transform>
    {

    }
    public class ToolModeEvent : UnityEvent<ToolMode> {

    }

    public class ShinyEvent : UnityEvent<Fact> {

    }



    public static HitEvent SnapEvent = new HitEvent();
    public static HitEvent TriggerEvent = new HitEvent();

    public static ToolModeEvent ToolModeChangedEvent = new ToolModeEvent();
    /*
    public static FactEvent AddPointEvent = new FactEvent();
    public static FactEvent AddLineEvent = new FactEvent();
    public static FactEvent AddAngleEvent = new FactEvent();
    */
    public static FactEvent AddFactEvent = new FactEvent();
    public static FactEvent RemoveFactEvent = new FactEvent();

    //public static MouseOverFactEvent HighlightEvent = new MouseOverFactEvent();
    //public static MouseOverFactEvent EndHighlightEvent = new MouseOverFactEvent();

    public static ShinyEvent StartLineDrawingEvent = new ShinyEvent();
    public static ShinyEvent StopLineDrawingEvent = new ShinyEvent();
    public static ShinyEvent StartCurveDrawingEvent = new ShinyEvent();
    public static ShinyEvent StopCurveDrawingEvent = new ShinyEvent();
    //Event for stopping all previews -> Made When ToolMode is changed
    public static ShinyEvent StopPreviewsEvent = new ShinyEvent();
    public static ShinyEvent PushoutFactEvent = new ShinyEvent();




    //------------------------------------------------------------------------------------
    //-------------------------------Global Variables-------------------------------------
    //Global ActiveToolMode
    public static ToolMode ActiveToolMode { get; set; }


    //Global List of Facts
    public static List<Fact> Facts = new List<Fact>();

}