using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static CommunicationEvents;

public class Pointer : Gadget
{
    public WorldCursor Cursor;

    void Awake()
    {
        if (FactManager == null) FactManager = GameObject.FindObjectOfType<FactManager>();
        CommunicationEvents.TriggerEvent.AddListener(OnHit);
        if (this.Cursor == null) this.Cursor = GameObject.FindObjectOfType<WorldCursor>();
        this.UiName = "Point Mode";
    }

    /*
    public override void activate() {
        this.activated = true;
        this.Cursor.setLayerMask(this.layerMask);
    }
    */

    void OnEnable()
    {
        this.Cursor.setLayerMask(~this.ignoreLayerMask.value);
    }

    public override void OnHit(RaycastHit hit)
    {
        if (!this.isActiveAndEnabled) return;
        var pid = FactManager.GetFirstEmptyID();
        CommunicationEvents.AddFactEvent.Invoke(FactManager.AddPointFact(hit, pid));
        if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Ray"))
        {

            var oLid = FactManager.GetFirstEmptyID();
            Facts.Insert(oLid, new OnLineFact(oLid, pid, hit.transform.GetComponent<FactObject>().Id));
        }
    }
  
}