Select Git revision
WorldCursor.cs
WorldCursor.cs 12.04 KiB
using System;
using System.Globalization;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using System.Linq;
using static GadgetManager;
public class WorldCursor : MonoBehaviour
{
public RaycastHit Hit;
// TODO experimentell for multiple hits
public RaycastHit[] MultipleHits;
public string deactivateSnapKey;
private Camera Cam;
private int layerMask;
public LayerMask snapLayerMask;
public float MaxRange = 10f;
public bool useCamCurser = false;
private void Awake()
{
this.layerMask = LayerMask.GetMask("Player", "TalkingZone");
//Ignore player and TalkingZone
this.layerMask = ~this.layerMask;
}
void Start()
{
Cam = Camera.main;
//Set MarkPointMode as the default ActiveToolMode
// ActiveToolMode = ToolMode.ExtraMode;//ToolMode.MarkPointMode;
// CommunicationEvents.ToolModeChangedEvent.Invoke(activeGadget.id);
CultureInfo.CurrentCulture = new CultureInfo("en-US");
}
public void setLayerMask(int layerMask)
{
this.layerMask = layerMask;
}
//void Update()
//{
// Ray ray = useCamCurser ? new Ray(Cam.transform.position, Cam.transform.forward) : Cam.ScreenPointToRay(Input.mousePosition);
// this.Hit = new RaycastHit();
// transform.up = Cam.transform.forward;
// transform.position = ray.GetPoint(GlobalBehaviour.GadgetPhysicalDistance);
// int rayCastMask;
// if (Input.GetButton(this.deactivateSnapKey))
// rayCastMask = this.layerMask & ~this.snapLayerMask.value;
// else
// rayCastMask = this.layerMask;
// if (Physics.Raycast(ray, out Hit, MaxRange, rayCastMask)
// || (MaxRange <= GlobalBehaviour.GadgetPhysicalDistance
// && Physics.Raycast(transform.position, Vector3.down, out Hit, GlobalBehaviour.GadgetPhysicalDistance, rayCastMask)))
// {
// if ((Hit.collider.transform.CompareTag("SnapZone") || Hit.collider.transform.CompareTag("Selectable"))
// && !Input.GetButton(this.deactivateSnapKey))
// {
// if(Hit.collider.gameObject.layer == LayerMask.NameToLayer("Ray")
// || Hit.collider.gameObject.layer == LayerMask.NameToLayer("Line"))
// {
// var id = Hit.collider.gameObject.GetComponent<FactObject>().URI;
// AbstractLineFact lineFact = StageStatic.stage.factState[id] as AbstractLineFact;