// using System; // using System.Collections; // using System.Collections.Generic; // using UnityEditor; // using UnityEditor.SceneManagement; // using UnityEngine; // using UnityEngine.UIElements; // // public class MapBuildPlacer : MonoBehaviour // { // [HideInInspector] public GameObject startPositionObject; // 坐标起始点 // [HideInInspector] public float cellSize = 2; // 单元格大小 // [HideInInspector] public Camera mainCamera; // [HideInInspector] public MapListener mapListener; // // private Collider2D hit_oldest; // private Color sprite_render_color; // private readonly Color sprite_render_unable_color = new Color32(166, 73, 73, 255); // private SpriteRenderer sprite_render_children; // private MapBuildableCell snap_grid; // 吸附的格子 // private bool is_trigger_with_has_build = false; // private bool isSnap = false; // private GameObject render_container; // private Vector2Int snap_grid_position_for_SO = Vector2Int.zero; // SO的坐标数据 , 不是世界坐标 // private Transform UIContainer; // private LayerMask buildable_layer; // private MapPlacerItem map_placer_item; // // private void Awake() // { // gameObject.AddComponent().isKinematic = true; // map_placer_item = gameObject.GetComponent(); // } // // private void Start() // { // render_container = transform.Find("RenderContainer").gameObject; // sprite_render_children = transform.Find("RenderContainer/RoomSpriteRender").GetComponent(); // UIContainer = transform.Find("RenderContainer/UI"); // sprite_render_color = sprite_render_children.color; // foreach (Transform ui_child in UIContainer.transform) // { // ui_child.GetComponent().color = Color.green; // } // // buildable_layer = 1 << LayerMask.NameToLayer("BuildableCell"); // } // // private void Update() // { // // render_container.SetActive(); // 设置吸附状态的响应 // self_move_with_mouse_with_ray(); // } // // // private void self__trigger_with_already_build(MapBuildableCell snap_grid) // // { // // switch (buildRoomType) // // { // // case HomeMapSO.RoomType.CageRoom: // // Vector2Int snap_position_ = _self_get_snap_position(); // // // is_trigger_with_has_build = // // // mapListener.m_send_SOMap_get_placeholder_area_has_room(snap_position_, buildRoomType); // // break; // // default: // // break; // // } // // // // Vector2Int _self_get_snap_position() => snap_grid.m_recv_get_grid_position_with_vector2(); // // } // // // 跟随鼠标移动使用射线检测 // private void self_move_with_mouse_with_ray() // { // Vector3 mouse_world_position = mainCamera.ScreenToWorldPoint(Input.mousePosition); // mouse_world_position.z = 0; // RaycastHit2D hit = Physics2D.Raycast( // origin: mouse_world_position, // direction: Vector2.zero, // distance: 0.1f, // layerMask: buildable_layer); // if (hit.collider) // 射线检测到格子, 吸附到格子坐标 // { // if (hit.collider != hit_oldest) // 射线检测到的格子发生变化 // { // snap_grid = hit.collider.GetComponent(); // hit_oldest = hit.collider; // } // // mm_self_gameobject_snap_move(); // } // else // { // mm_self_gameobject_free_move(); // } // // return; // // void mm_self_gameobject_snap_move() // 射线检测到格子, 吸附到格子坐标 // { // Vector3 snap_grid_position = startPositionObject.transform.position + // snap_grid.m_recv_get_grid_position_with_vector3() * cellSize; // transform.position = snap_grid_position; // isSnap = true; // snap_grid_position_for_SO = snap_grid.m_recv_get_grid_position_with_vector2(); // is_trigger_with_has_build = mapListener.m_send_SOMap_trigger_placeholder_area_has_room( // snap_grid_position_for_SO, map_placer_item // ); // sprite_render_children.color = is_trigger_with_has_build ? sprite_render_unable_color : sprite_render_color; // 更改SR颜色 // } // // void mm_self_gameobject_free_move() // 射线没有检测到格子, 自由移动 // { // sprite_render_children.color = sprite_render_unable_color; // 更改sr为不可建造的颜色 // transform.position = mouse_world_position; // isSnap = false; // is_trigger_with_has_build = true; // snap_grid_position_for_SO = Vector2Int.zero; // } // } // // public Vector2Int m_recv_placer_get_snap_grid_position_for_SO() => snap_grid_position_for_SO; // // public bool m_recv_placer_is_snap_to_grid() => isSnap; // // public bool m_recv_is_trigger_with_has_build() => is_trigger_with_has_build; // // // private void self_on_trigger_event(Collider2D other, bool status) // // { // // // 检测是否与某个图层的碰撞器相交 // // if (other.gameObject.layer == LayerMask.NameToLayer("AlreadyBuild")) // // { // // is_trigger_with_has_build = status; // // } // // } // // // // private void OnTriggerStay2D(Collider2D other) // // { // // self_on_trigger_event(other, true); // // } // // // // private void OnTriggerExit2D(Collider2D other) // // { // // self_on_trigger_event(other, false); // // } // }