//using NUnit.Framework.Constraints; //using System; //using System.Collections; //using System.Collections.Generic; //using System.Linq; //using UnityEngine; //using UnityEngine.EventSystems; //using UnityEngine.Tilemaps; //using UnityEngine.UI; //using static Unity.Cinemachine.IInputAxisOwner.AxisDescriptor; //using static UnityEngine.RuleTile.TilingRuleOutput; //[CreateAssetMenu(menuName = "Custom/BuilderHandler", fileName = "NewBuilderHandler")] //public class BuildHandler : ScriptableObject { // [Header("Build Dependencies")] // public GameObject PrefabToSpawn; // public GameObject PrefabToSpawnPreviewAsset; // [Header("VFX Dependencies")] // public VfxHandlerBase Sparkle; // private GameObject PreviewObj; // private Vector3 SnappedPosition; // private bool BuildMode = false; // private Vector2 SpriteSize; // private CapsuleDirection2D CapsuleDirection = CapsuleDirection2D.Vertical; // private void OnEnable() { // InitializePreviewObj(); // } // private void InitializePreviewObj() { // PreviewObj = Instantiate(PrefabToSpawnPreviewAsset, new Vector3(), Quaternion.identity); // PreviewObj.SetActive(false); // SpriteRenderer sprite = PreviewObj.GetComponent(); // Sprite s = PreviewObj.GetComponent().sprite; // Vector2 pivot = s.pivot / s.pixelsPerUnit; // SpriteSize = s.rect.size / s.pixelsPerUnit; // if (SpriteSize.x > SpriteSize.y) // CapsuleDirection = CapsuleDirection2D.Horizontal; // } // public void SetBuildMode(bool mode) { // if (PreviewObj == null) InitializePreviewObj(); // PreviewObj.SetActive(mode); // BuildMode = mode; // } // Vector3 GetSnappedPosition(Vector3 worldPos, float gridSize) { // float x = Mathf.Round(worldPos.x / gridSize) * gridSize; // float y = Mathf.Round(worldPos.y / gridSize) * gridSize; // return new Vector3(x, y, 0); // } // public void UpdatePreview(float gridSize) { // if (!BuildMode) return; // Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); // Vector3 offset = new Vector3(0, 0, 3); // mousePos += offset; // SnappedPosition = GetSnappedPosition(mousePos, gridSize / 2); // PreviewObj.transform.position = SnappedPosition; // } // public void PlaceObject() { // if (!BuildMode) return; // if (!IsTileUnderMouse()) return; // Sparkle?.PlayAll(SnappedPosition); // GameObject newObj = Instantiate(PrefabToSpawn, SnappedPosition, Quaternion.identity); // SpriteRenderer image = newObj.GetComponent(); // } // public bool IsTileUnderMouse() { // Vector3 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); // worldPos.z = 0f; // GameObject groundGO = GameObject.FindGameObjectWithTag("Ground"); // if (!groundGO) return false; // Tilemap tilemap = groundGO.GetComponent(); // if (!tilemap) return false; // Vector3Int cellPos = tilemap.WorldToCell(worldPos); // TileBase tile = tilemap.GetTile(cellPos); // if (!tile) return false; // return tile; // } // public void DrawGizmos() { // Vector2 center = SnappedPosition; // Vector2 size = SpriteSize; // float radius = size.x / 2 * 0.8f; // float height = size.y / 2 * 0.8f; // if (SpriteSize.x != SpriteSize.y) { // Vector2 top = center + Vector2.up * (height / 2 - radius); // Vector2 bottom = center + Vector2.down * (height / 2 - radius); // Gizmos.color = Color.green; // Gizmos.DrawWireCube(center, new Vector2(size.x, height - 2 * radius)); // Gizmos.DrawWireSphere(top, radius); // Gizmos.DrawWireSphere(bottom, radius); // } else { // Gizmos.color = Color.green; // Gizmos.DrawWireSphere(center, radius); // } // } //}