Some checks failed
Build project / Build for (StandaloneWindows64, 6000.0.37f1) (push) Has been cancelled
Build project / Publish to itch.io (StandaloneLinux64) (push) Has been cancelled
Build project / Publish to itch.io (StandaloneWindows64) (push) Has been cancelled
Build project / Build for (StandaloneLinux64, 6000.0.37f1) (push) Has been cancelled
50 lines
1.5 KiB
C#
50 lines
1.5 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Rendering.Universal;
|
|
using System.Linq; // for FirstOrDefault()
|
|
|
|
public class Point : MonoBehaviour
|
|
{
|
|
public int id;
|
|
public UntangleGameManager manager;
|
|
|
|
// optional: assign in inspector or else we'll try to find it
|
|
[SerializeField] private Camera uiOverlayCamera;
|
|
|
|
private Vector3 offset;
|
|
|
|
void Awake()
|
|
{
|
|
if (uiOverlayCamera == null && Camera.main != null)
|
|
{
|
|
var extra = Camera.main.GetComponent<UniversalAdditionalCameraData>();
|
|
if (extra != null)
|
|
{
|
|
// look for the camera named "UIOverlayCamera"
|
|
uiOverlayCamera = extra.cameraStack
|
|
.FirstOrDefault(cam => cam.name == "UIOverlayCamera");
|
|
}
|
|
}
|
|
}
|
|
|
|
void OnMouseDown()
|
|
{
|
|
// pick UI overlay if we have it, otherwise fallback
|
|
var cam = uiOverlayCamera != null ? uiOverlayCamera : Camera.main;
|
|
Vector3 worldPoint = cam.ScreenToWorldPoint(Input.mousePosition);
|
|
worldPoint.z = 0;
|
|
offset = transform.position - worldPoint;
|
|
Debug.Log($"Point {id} clicked. Offset (from {cam.name}): {offset}");
|
|
}
|
|
|
|
void OnMouseDrag()
|
|
{
|
|
var cam = uiOverlayCamera != null ? uiOverlayCamera : Camera.main;
|
|
Vector3 raw = cam.ScreenToWorldPoint(Input.mousePosition);
|
|
raw.z = transform.position.z;
|
|
transform.position = raw + offset;
|
|
manager.CheckIfSolved();
|
|
foreach (var c in manager.connections)
|
|
c.UpdateLine();
|
|
}
|
|
}
|