StellarXipher/Assets/Puzzles/Untangle/Scripts/Point.cs
EthanPisani 3b12b691cf
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
add most of untangle game
2025-04-20 19:28:52 -04:00

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();
}
}