using UnityEngine; using System.Collections.Generic; using System.Collections; using UnityEngine.UI; using System.Globalization; using UnityEditor; public class HitObject : MonoBehaviour { static Plane _plane; static string _hitName; static GameObject _hitObject; public static GameObject _createdGameObject; public static void CheckHIT() { bool isMouseButtonDown = Input.GetMouseButtonDown(0); // if(isMouseButtonDown) // { // if(Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out RaycastHit hit)) // { // Debug.Log("Object Hit " + hit.transform.gameObject.name); // } // } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.ShowTips)) { SceneModeManager.Instance.SetSceneMode(SceneModes.Navigate); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.Calcule)) { SceneModeManager.Instance.SetSceneMode(SceneModes.Navigate); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.ZoomTouch)) { SceneModeManager.Instance.SetSceneMode(SceneModes.Navigate); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.Navigate)) { print(SceneModes.Navigate); HandleNavigate(); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.Install) && _G.addOBJ != "")//--------------------------------------------PC { HandleInstall(); } if (SceneModeManager.CompareSceneMode(SceneModes.Follow)) { FollowDrag(); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.Panel)) { if (SceneModeManager.Instance._previousSM == SceneModes.Start) { SceneModeManager.Instance.SetSceneMode(SceneModes.Start); } else { DOIT.CloseALLPNL(); } } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.ReadyMove)) { HandleReadyMove(); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.CopyingDoor)) { HandleCopyDoor(); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.Paint)) { HandlePaint(); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.Ai)) { HandleAi(); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.InstallOnCab) && _G.addOBJ != "") { HandleInstallOnCab(); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.SnapOn) && _G.addOBJ == "")//--------------------------------------------PC { //print("Reach HandleSnapOn------------------------0---"); HandleSnapOn(); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.Measure) && _G.addOBJ == "")//--------------------------------------------PC //if (Input.simulateMouseWithTouches = false && _G.SM == "measure" && _G.addOBJ == "")//--------------------------------------------Android { HandleMeasure(); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.Align) && _G.addOBJ == "")//--------------------------------------------PC //if (Input.simulateMouseWithTouches = false && _G.SM == "align" && _G.addOBJ == "")//--------------------------------------------Android { HandleAlign(); } //--------------------------------------------PC //if (Input.simulateMouseWithTouches = false && _G.SM == "Ceramic")//--------------------------------------------Android if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.Ceramic)) { HandleCeramic(); } if (isMouseButtonDown && SceneModeManager.CompareSceneMode(SceneModes.GroupMove)) { HandleGroupMove(); } if (Input.GetMouseButtonUp(0) && SceneModeManager.CompareSceneMode(SceneModes.Hit)) { MouseUp(); } } private static void HandleCopyDoor() { Camera.main.GetComponent().Hide(); RaycastHit hitInfo = new RaycastHit(); bool hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo); if (_G.TOUCH) hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.touches[0].position), out hitInfo); _hitName = hit ? hitInfo.transform.name : null; if(hit && _hitName[..4] == "cabi") { //PanelPNL.CreatePanelWithDoorInfo(Get.GetObjectIndex(_hitName)); } } private static void HandleNavigate() { //string ObjectSelectedname= SceneModeManager.SelectedName; if(!Input.GetKey(KeyCode.LeftShift))_G.SELECEDLIST.Clear(); DOIT.CloseALLMenu(); DOIT.CloseALLPNL(); Mesure.Hide(destroyAll: true); } private static void HandleReadyMove() { RaycastHit hitInfo = new(); bool hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo); if (_G.TOUCH) hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.touches[0].position), out hitInfo); if (hit == true) _hitName = hitInfo.transform.gameObject.name; else _hitName = "NONE"; if (_hitName != SceneModeManager.SelectedName) { _G.SELECEDLIST = new(); DOIT.AllSelOff(); DOIT.ResetRoomSelect(); DOIT.CloseALLPNL(); } } private static void HandlePaint() { bool hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out RaycastHit hitInfo); if (_G.TOUCH) hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.touches[0].position), out hitInfo); if (hit == true) _hitName = hitInfo.transform.gameObject.name; else _hitName = "NONE"; //print("_hitName====" + _hitName); selectionShow(_hitName); } private static void HandleAi() { bool hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out RaycastHit hitInfo); if (_G.TOUCH) hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.touches[0].position), out hitInfo); if (hit == true) _hitName = hitInfo.transform.gameObject.name; else _hitName = "NONE"; print("_hitName===2222=" + _hitName); AiButton.Instance.GetButtonGoNext().SetActive(false); if (_hitName[..1] == "m") { if (AI.WallSelected.Contains(_hitName)) { AI.WallSelected.Remove(_hitName); } else { AI.WallSelected.Add(_hitName); Get.o2("HIDER", "MESSAGE").SetActive(false); } if (_hitName.Contains("m") && _hitName.Length < 4) { SelectionWallShow(_hitName); AiButton.Instance.GetButtonGoNext().SetActive(true); } } SceneModeManager.Instance.SetSceneMode(SceneModes.Ai); } private static void HandleInstallOnCab() { bool hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out RaycastHit hitInfo); if (_G.TOUCH) hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.touches[0].position), out hitInfo); if (hit == true) _hitName = hitInfo.transform.gameObject.name; else _hitName = "NONE"; _G.TARGET = _hitName; int nO = Get.GetObjectIndex(_G.TARGET); //_G._beforeDataTemp = CommandHandler.CopyObjectData(_G.OBJs[nO]); if (nO != 299) { if (_hitName[..2] == "ca" && ThisOnly.SinkCheck(nO)) { string[] beforeData = CommandHandler.CopyObjectData(_G.OBJs[nO]); if (_G.SC[0][..4] == "SINK") { _G.OBJs[nO][67] = _G.SC[0] + "," + _G.SC[1] + "," + _G.SC[2] + "," + _G.SC[4]; ConstructSink.AddSink(nO); DOIT.REDOCAB(nO); } if (_G.SC[0][..4] == "FAUC") { _G.OBJs[nO][68] = _G.SC[0] + "," + _G.OBJs[nO][7] + "," + _G.OBJs[nO][8] + "," + _G.SC[4]; ConstructFaucet.addfaucet(nO); } string[] afterData = CommandHandler.CopyObjectData(_G.OBJs[nO]); UniversalModifyCommand uniCommand = new("Universal", nO, beforeData, afterData); CommandHandler.Instance.AddToHistory(uniCommand); GameObject.Find("HIDER").transform.Find("MESSAGE").gameObject.SetActive(false); _G.addOBJ = ""; SceneModeManager.Instance.SetSceneMode(SceneModes.Navigate); } else { _M.PH(5, 230, "ffffff", 1, 1); } } } private static void HandleSnapOn() { //print("Reach HandleSnapOn---------------------------"); Camera.main.GetComponent().Hide(); RaycastHit hitInfo = new(); bool hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo); if (_G.TOUCH) hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.touches[0].position), out hitInfo); _hitName = hit ? hitInfo.transform.name : null; //print("HN===" + _hitName); if (_hitName[..1] != "m" && _hitName[..2] != "sf" && _hitName[..2] != "sc" && _hitName != SceneModeManager.SelectedName) { //print("Reach HandleSnapOn-----------2----------------"); GameObject.Find("PNL").transform.Find("ADDTO").gameObject.SetActive(true); Get.o2("PNL/ADDTO", "Square").SetActive(false); Get.o2("PNL/ADDTO", "A_Square").SetActive(false); Get.o2("PNL/ADDTO", "SETTING").SetActive(false); Get.o1("PNL/ADDTO").transform.localPosition = new Vector3(0, 120, 0); Get.o2("HIDER", "MESSAGE").SetActive(false); _G.TARGET = _hitName; if (SceneModeManager.SelectedName.Length > 4 && _G.TARGET.Length > 4) { //print("Reach HandleSnapOn-----------3----------------"+_G.TARGET); int ntO = Get.GetObjectIndex(_G.TARGET); Addto.Box(ntO); } } } private static void HandleMeasure() { //print("MESSSUUURREEEE"); RaycastHit hitInfo = new(); bool hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo); if (_G.TOUCH) hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.touches[0].position), out hitInfo); if (hit == true) _hitName = hitInfo.transform.gameObject.name; else _hitName = "NONE"; if (_hitName[..1] != "m" && _hitName[..2] != "fl" && _hitName[..2] != "ce") { _G.TARGET = _hitName; _G.SELECEDLIST = new(); DOIT.AllSelOff(); Mesure.TwoObjectDistance(); string M = MESURE.get(SceneModeManager.SelectedName, _G.TARGET); GameObject.Find("HIDER").transform.Find("MESSAGE").gameObject.transform.GetChild(1).gameObject.GetComponent().text = "|---" + M + "---|"; DOIT.ResetRoomSelect(); GameObject.Find("HIDER").transform.Find("CONTROL").gameObject.SetActive(false); GameObject.Find("HIDER").transform.Find("MESSAGE").gameObject.SetActive(false); Set.alpha(Get.o2("Canvas","Language"),true); SceneModeManager.Instance.SetSceneMode(SceneModes.Navigate); } else { _M.PH(9, 101, "ffffff", 1, 1); } } private static void HandleAlign() { RaycastHit hitInfo = new RaycastHit(); bool hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo); if (_G.TOUCH) Physics.Raycast(Camera.main.ScreenPointToRay(Input.touches[0].position), out hitInfo); if (hit == true) _hitName = hitInfo.transform.gameObject.name; else _hitName = "NONE"; if (_hitName[..1] != "m" && _hitName[..2] != "fl" && _hitName[..2] != "ce") { _G.TARGET = _hitName; GameObject.Find("HIDER").transform.Find("MESSAGE").gameObject.SetActive(false); GameObject.Find("HIDER").transform.Find("ALIGN").gameObject.SetActive(true); Align.SetAlignPNL(); } } private static void HandleCeramic() { RaycastHit hitInfo = new RaycastHit(); bool hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo); if (_G.TOUCH) hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.touches[0].position), out hitInfo); if (hit == true) _hitName = hitInfo.transform.gameObject.name; else _hitName = "NONE"; } private static void HandleGroupMove() { RaycastHit hitInfo = new RaycastHit(); bool hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo); if (_G.TOUCH) hit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.touches[0].position), out hitInfo); if (hit == true) _hitName = hitInfo.transform.gameObject.name; else _hitName = "NONE"; // _G.TARGET = HN; if ( _hitName.IndexOf("cabi") > -1 || _hitName.IndexOf("frid") > -1 || _hitName.IndexOf("hoow") > -1 || _hitName.IndexOf("hooc") > -1 || _hitName.IndexOf("stov") > -1 || _hitName.IndexOf("dish") > -1 || _hitName.IndexOf("micr") > -1 || _hitName.IndexOf("lamp") > -1 || _hitName.IndexOf("stoo") > -1 || _hitName.IndexOf("vase") > -1 || _hitName.IndexOf("smal") > -1 || _hitName.IndexOf("bloc") > -1 || _hitName.IndexOf("pict") > -1 || _hitName.IndexOf("wind") > -1 || _hitName.IndexOf("door") > -1 || _hitName.IndexOf("open") > -1 || _hitName.IndexOf("slid") > -1 || _hitName.IndexOf("pati") > -1 || _hitName.IndexOf("deco") > -1 || _hitName.IndexOf("toil") > -1 || _hitName.IndexOf("bath") > -1 || _hitName.IndexOf("shaw") > -1 || _hitName.IndexOf("basi") > -1 || _hitName.IndexOf("pane") > -1 || _hitName.IndexOf("chai") > -1 || _hitName.IndexOf("tabl") > -1 || _hitName.IndexOf("orna") > -1 ) { // grouping.Group(GameObject.Find(_G.SELECTED), GameObject.Find(HN)); GameObject SEL = GameObject.Find(SceneModeManager.SelectedName); GameObject TAR = GameObject.Find(_hitName); bool oknew = false; if (SEL.transform.Find("Group") == null) { oknew = true; } else { if (Get.o2(SceneModeManager.SelectedName, "Group").transform.Find(_hitName) == null) { oknew = true; } //else { print("else====exist"); } } if (oknew) { TAR.GetComponent().material = _G.GBT; Vector3 rot = SEL.transform.eulerAngles; SEL.transform.eulerAngles = new Vector3(0, 0, 0); Vector3 TARpos = TAR.transform.position; Quaternion TARrot = TAR.transform.rotation; Vector3 TARscale = TAR.transform.localScale; if (SEL.transform.Find("Group") == null) { GameObject Group = new GameObject("Group"); Group.transform.SetParent(SEL.transform, true); TAR.transform.SetParent(Group.transform, true); } else { GameObject Group = SEL.transform.Find("Group").gameObject; Group.transform.SetParent(SEL.transform, false); TAR.transform.SetParent(Group.transform, true); //TAR.transform.localPosition=TARpos; //TAR.transform.rotation=TARrot; } SEL.transform.eulerAngles = rot; TAR.transform.rotation = TARrot; TAR.transform.position = TARpos; TAR.GetComponent()?.SetToMove(true); } if (_hitName == SceneModeManager.SelectedName) { SceneModeManager.Instance.SetSceneMode(SceneModes.Move); }// "movinggroup"; } } //------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------ public static void HandleInstall() { _createdGameObject = null; RaycastHit hitInfo = CastRay(); if (hitInfo.transform != null) { Vector3 targetPosition = hitInfo.point; _hitObject = hitInfo.transform.gameObject; //Debug.Log("Hit Object for Install == " + _hitObject.name); Debug.DrawLine(targetPosition, _hitObject.transform.forward * 10f); string selectionName = _hitObject.name; if (_G.GHOSTLIST.Contains(selectionName)) { int ind = Get.GetObjectIndex(selectionName); SceneModeManager.SelectedName = ""; selectionName = _G.OBJs[ind][22].Replace("w", "m"); } bool isSelectionRedefined = HandleIntelligentSelection(ref selectionName); DOIT.CloseALLPNL(); AddObjectOnSelection(selectionName); UpdateCreatedObjectInitialPosition(targetPosition, isSelectionRedefined); } } // public static void HandleInstall(bool bypassRay) // { // _createdGameObject = null; // _hitObject = GameObject.Find("sfloor"); // Vector3 targetPosition = new Vector3(0, _hitObject.transform.position.y, 0); // //Debug.Log("Hit Object for Install == " + _hitObject.name); // Debug.DrawLine(targetPosition, _hitObject.transform.forward * 10f); // string selectionName = "sfloor"; // if (_G.GHOSTLIST.Contains(selectionName)) // { // int ind = Get.GetObjectIndex(selectionName); // SceneModeManager.SelectedName = ""; // selectionName = _G.OBJs[ind][22].Replace("w", "m"); // } // bool isSelectionRedefined = HandleIntelligentSelection(ref selectionName); // DOIT.CloseALLPNL(); // AddObjectOnSelection(selectionName); // UpdateCreatedObjectInitialPosition(targetPosition, isSelectionRedefined); //} private static RaycastHit CastRay() { RaycastHit hitInfo = new RaycastHit(); Ray ray = _G.TOUCH ? Camera.main.ScreenPointToRay(Input.touches[0].position) : Camera.main.ScreenPointToRay(Input.mousePosition); Physics.Raycast(ray, out hitInfo); return hitInfo; } static IEnumerator GetSelectedObjectAndUpdatePosition(Vector3 targetPosition, bool isSelectionRedefined, SceneModes entryMode) { string newObjectName = _G.OBJs[_G.OBJnum - 1][0]; //Debug.Log("Initial Target Position == " + targetPosition); Transform createdObject = SceneModeManager.GetObjectInScene(newObjectName); float attemptTimer = 5f; while (createdObject == null && attemptTimer > 0f) { yield return null; attemptTimer -= Time.deltaTime; createdObject = SceneModeManager.GetObjectInScene(newObjectName); } if (attemptTimer <= 0f) { Debug.Log("No Selected Object Found When trying to update Position"); yield break; } int createdObjectNumber = Get.GetObjectIndex(createdObject.name); Transform attachedTo = SceneModeManager.GetObjectInRoom(_G.OBJs[createdObjectNumber][22]); if (attachedTo == null) { Debug.Log("No Object Attached To to create Offset From"); yield break; } //createdObject.GetComponent().material = _G.GGT; Vector3 currentPos = createdObject.transform.position; Vector3 delta = currentPos - targetPosition; delta.y = 0; if (!(attachedTo == SceneModeManager.Floor || attachedTo == SceneModeManager.Ceil)) { float direction = Vector3.Dot(delta, attachedTo.transform.right) > 0 ? 1f : -1f; // Restrict movement to the right/left direction of attachedTo delta = direction * delta.magnitude * attachedTo.transform.right; } Vector3 position = createdObject.transform.position - delta; //Debug.Log("Calculated Target Position == " + position); createdObject.transform.position = position; PositionObjectWithinRoomBounds(createdObject.gameObject); if (SceneModeManager.CompareSceneMode(SceneModes.SnapOn)) { MoveObjectCategory category = createdObject.GetComponent(); if (category.IsDecoration()) { Vector3 targetPositionOnHitObject = _hitObject.transform.position; targetPositionOnHitObject.y += (createdObject.transform.localScale.y - 0.5f + _hitObject.transform.localScale.y - 0.5f) * 0.5f; createdObject.transform.position = targetPositionOnHitObject; } } //createdObject.GetComponent().WaitForPlacement = false; _createdGameObject = createdObject.gameObject; if (entryMode != SceneModes.SnapOn) { CommandHandler.Instance?.AddToHistory(new CreateCommand(_G.OBJnum - 1)); } else { GameObject panelAddTo = GameObject.Find("ADDTO"); Debug.Log("addto active : " + panelAddTo.activeInHierarchy); while (panelAddTo.activeInHierarchy) { yield return null; } CreateCommand createCommand = new CreateCommand(_G.OBJnum - 1); if (Addto.WereChangesSaved) { CommandHandler.Instance?.AddToHistory(createCommand); } else { createCommand.Undo(); } } if (isSelectionRedefined) { MouseUp(); } } static void UpdateCreatedObjectInitialPosition(Vector3 targetPosition, bool isSelectionRedefined) { StaticCoroutine.Start(GetSelectedObjectAndUpdatePosition(targetPosition, isSelectionRedefined, SceneModeManager.Instance.GetSceneMode())); } static void SelectionWallShow(string name) { GameObject Wall = Get.GetGameObjectByName(name); AI.ShowWallSelected(); if (!AI.WallSelected.Contains(name)) { Wall.GetComponent().material = _G.INV; } else { Wall.GetComponent().material = _G.MESH; DOIT.SetSizeTex(Wall, 60f, 60f, 0, 0, 0, 0, 90, 90); } } static void selectionShow(string name) { //print("Hit name===" + name); _G.SELECEDLIST = new(); DOIT.ResetRoomSelect(); for (var i = 1; i < _G.NW + 1; i++) { var str = "m" + i.ToString(); if (name == str) { var str2 = "w" + i.ToString(); Get.GetGameObjectByName(str).GetComponent().material = _G.MESH; float w = _G.WallsWidth[i - 1]; _G.WS = str2; GameObject Wall = Get.GetGameObjectByName(name); Wall.GetComponent().material = _G.MESH; //obj.GetComponent().material.mainTextureScale = new Vector2(w / 12, _G.HEIGHT / 12); DOIT.SetSizeTex(Wall, 60f, 60f, 0, 0, 0, 0, 90, 90); PAINT.SEL = str2; } } if (name[..2] == "do" || name[..2] == "pa") { PAINT.SEL = name; Get.GetGameObjectByName(name).GetComponent().material = _G.GGT; } if (name.Substring(0, 2) == "wi") { PAINT.SEL = name; Get.GetGameObjectByName(name).GetComponent().material = _G.GGT; } if (name.Substring(0, 2) == "bl") { PAINT.SEL = name; Get.GetGameObjectByName(name).GetComponent().material = _G.GGT; } if (name.Substring(0, 2) == "co") { PAINT.SEL = name; Get.GetGameObjectByName(name).GetComponent().material = _G.GGT; } if (name.Substring(0, 2) == "ho") { PAINT.SEL = name; Get.GetGameObjectByName(name).GetComponent().material = _G.GGT; } for (int i = 0; i < _G.CeilingPoints.Length; i++) { if (name == "sceil" + i.ToString()) { GameObject sceil = Get.GetGameObjectByName(name); if (sceil != null) { sceil.GetComponent().material = _G.MESH; sceil.GetComponent().material.mainTextureScale = new Vector2(_G.WIDE / 12, _G.DEPTH / 12); PAINT.SEL = SceneModeManager.Ceil.name; if (_G.addOBJ != "") AddObject(); } } } if (name == "sfloor") { //print("------------------Selecting with paint-----------------------paint"); GameObject sfloor = Get.GetGameObjectByName(name); if (sfloor != null) { sfloor.GetComponent().material = _G.MESH; sfloor.GetComponent().material.mainTextureScale = new Vector2(_G.WIDE / 12, _G.DEPTH / 12); PAINT.SEL = SceneModeManager.Floor.name; } } } static void AddObjectOnSelection(string selectionName) { // DOIT.ResetRoomSelect(); // DOIT.AllSelOff(); if (selectionName[..1] == "m") { AddObjectOnWall(selectionName); } for(int i=0; i<_G.CeilingPoints.Length; i++){ if (selectionName == "sceil"+i.ToString()) { AddObjectOnCeiling(); } } if (selectionName == "sfloor") { AddObjectOnFloor(); } if(Get.Bool(selectionName[..2],"ca_bl_fr_st_ho_di_wi_pa_de_ta_ch_or")){ AddObjectWithSnapOn(selectionName); } GameObject.Find("HIDER").transform.Find("MESSAGE").gameObject.SetActive(false); _G.addOBJ = ""; } private static void AddObjectOnWall(string selectionName) { for (var i = 1; i < _G.NW + 1; i++) { string str = "m" + i.ToString(); if (selectionName == str) { string str2 = "w" + i.ToString(); GameObject.Find(str).GetComponent().material = _G.MESH; float w = _G. WallsWidth[i - 1]; _G.WS = str2; GameObject.Find(str).GetComponent().material.mainTextureScale = new Vector2(w / 12, _G.HEIGHT / 12); PAINT.SEL = str2; //print("str2================"+str2); //Color C = GameObject.Find(str2).transform.GetChild(0).GetComponent().material.color; if (_G.addOBJ != "") AddObject(); return; } } } private static void AddObjectWithSnapOn(string selectionName) { //_G.SELECTED = _G.addOBJ; Get.o2("PNL", "ADDTO").SetActive(true); Get.o1("PNL/ADDTO").transform.localPosition = new Vector3(0, 120, 0); Get.o2("PNL/ADDTO", "Square").SetActive(false); Get.o2("PNL/ADDTO", "A_Square").SetActive(false); SceneModeManager.Instance.SetSceneMode(SceneModes.SnapOn); _G.TARGET = selectionName; int ntO = Get.GetObjectIndex(_G.TARGET); PAINT.SEL = _G.OBJs[ntO][22]; _G.SC[14]=_G.OBJs[ntO][42]; //print("C[42]=====HO1"+_G.OBJs[ntO][42]); switch (_G.addOBJ[..4]) { case "cabi": CreateCAB.AddCab(); break; case "bloc": CreateBloc.AddBloc(); break; case "frid": CreateFRIDGE.AddFridge(); break; case "stov": CreateSTOVE.AddStove(); break; case "buil": CreateSTOVE.AddStove(); break; case "tops": CreateSTOVE.AddStove(); break; case "micr": CreateMICROWAVE.AddMicrowave(); break; case "coun": CreateCounter.AddCounter(); break; case "hoow": CreateHOOD.AddHood(); break; case "hooc": CreateHOOD.AddHood(); break; case "pane": CreatePnl.addpnl(); break; case "smal": CreateSmallelectro.AddSmallElectro(); break; case "dish": CreateDISHWASHER.AddDishwasher(); break; case "cell": CreateWINER.AddWiner(); break; case "wadr": CreateWD.AddWD(); break; case "deco": CreateDECO.AddDeco(); break; case "basi": CreateBathSink.AddBathSink(); break; case "vase": CreateVase.AddVase(); break; case "pict": CreatePicture.AddPicture(); break; case "mirr": CreateMirror.AddMirror(); break; case "toil": CreateToilet.AddToilet(); break; case "bath": CreateBath.AddBath(); break; case "show": CreateShower.AddShower(); break; case "stoo": CreateStool.AddStool(); break; case "chai": CreateChair.AddChair(); break; case "tabl": CreateTable.AddTable(); break; case "orna": CreateOrnament.AddOrnament(); break; } } private static void AddObjectOnCeiling() { for(int i=0; i<_G.CeilingPoints.Length; i++){ if(GameObject.Find("sceil"+i.ToString())){ GameObject CeilingSelector=GameObject.Find("sceil"+i.ToString()); CeilingSelector.GetComponent().material = _G.MESH; CeilingSelector.GetComponent().material.mainTextureScale = new Vector2(_G.WIDE / 12, _G.HEIGHT / 12); } } PAINT.SEL = SceneModeManager.Ceil.name; if (_G.addOBJ != "") AddObject(); SceneModeManager.Instance.SetSceneMode(SceneModes.Follow); } private static void AddObjectOnFloor() { //print("--------------------Selecting with object----------------------object"); GameObject.Find("sfloor").GetComponent().material = _G.MESH; GameObject.Find("sfloor").GetComponent().material.mainTextureScale = new Vector2(_G.WIDE / 12, _G.HEIGHT / 12); PAINT.SEL = "floor"; if (_G.addOBJ != "") AddObject(); SceneModeManager.Instance.SetSceneMode(SceneModes.Follow); } private static bool HandleIntelligentSelection(ref string selectionName) { bool isSelectionRedefined = false; string cabinetCategory = ""; if (SceneModeManager.SelectedName.IndexOf("cabi") != -1) { cabinetCategory = Get.LibraryValue(_G.SC[0], CsvHeaders.Cab_Category); } if (cabinetCategory == "WA" || cabinetCategory == "CW") { if (selectionName == "sfloor") { selectionName = "sceil0"; isSelectionRedefined = true; } } else if (selectionName == "sceil0") { string addOBJ = _G.addOBJ; if (!string.IsNullOrEmpty(addOBJ) && !addOBJ.Equals("lamp")) { selectionName = "sfloor"; isSelectionRedefined = true; } } else { string addOBJ = _G.addOBJ; if (!string.IsNullOrEmpty(addOBJ) && addOBJ.Equals("lamp")) { selectionName = "sceil0"; isSelectionRedefined = true; } } return isSelectionRedefined; } static void AddObject() { _G.Drag = true; if(_G.SC[13]=="DUPLICATE" && _G.OBJs[_G.OBJnum][0]!=null){ SceneModeManager.SelectedName = _G.OBJs[_G.OBJnum][0]; DUPLICATE.ConstructPosition(_G.OBJs[_G.OBJnum][5], _G.OBJs[_G.OBJnum][0]); _G.OBJnum += 1; _G.CODEPATERN = ""; _G.CODEPATERN2 = ""; } else{ switch (_G.addOBJ[..4]) { case "cabi": CreateCAB.AddCab(); break; case "bloc": CreateBloc.AddBloc(); break; case "frid": CreateFRIDGE.AddFridge(); break; case "stov": CreateSTOVE.AddStove(); break; case "buil": CreateSTOVE.AddStove(); break; case "tops": CreateSTOVE.AddStove(); break; case "micr": CreateMICROWAVE.AddMicrowave(); break; case "coun": CreateCounter.AddCounter(); break; case "hoow": CreateHOOD.AddHood(); break; case "hooc": CreateHOOD.AddHood(); break; case "pane": CreatePnl.addpnl(); break; case "smal": CreateSmallelectro.AddSmallElectro(); break; case "dish": CreateDISHWASHER.AddDishwasher(); break; case "cell": CreateWINER.AddWiner(); break; case "wind": CreateWindow.AddWindow(); break; case "door": CreateDoor.AddDoor(); break; case "open": CreateOpen.AddOpen(); break; case "pati": CreatePatio.AddPatio(); break; case "slid": CreateSlider.AddSlider(); break; case "vase": CreateVase.AddVase(); break; case "stoo": CreateStool.AddStool(); break; case "lamp": CreateLamp.AddLamp(); break; case "pict": CreatePicture.AddPicture(); break; case "deco": CreateDECO.AddDeco(); break; case "wadr": CreateWD.AddWD(); break; case "toil": CreateToilet.AddToilet(); break; case "bath": CreateBath.AddBath(); break; case "basi": CreateBathSink.AddBathSink(); break; case "show": CreateShower.AddShower(); break; case "mirr": CreateMirror.AddMirror(); break; case "chai": CreateChair.AddChair(); break; case "tabl": CreateTable.AddTable(); break; case "orna": CreateOrnament.AddOrnament(); break; } //print("-----------aaadddddd-------------------------------------"); //CommandHandler.Instance?.AddToHistory(new CreateCommand(_G.OBJnum - 1)); //Object } _G.SC[13]=""; GameObject.Find("HIDER").transform.Find("MESSAGE").gameObject.SetActive(false); GameObject.Find("HIDER").transform.Find("CONTROL").gameObject.SetActive(true); StaticCoroutine.Start(AddPlaneCoroutine()); } static IEnumerator AddPlaneCoroutine() { yield return new WaitUntil(() => _G.Load == true); SceneModeManager.Instance.SetSceneMode(SceneModes.Follow); GameObject selected = SceneModeManager.Selected; if (selected) { _plane.SetNormalAndPosition(selected.transform.forward, selected.transform.position); } _G.addOBJ = ""; } static void FollowDrag() { MouseUp(); } static void MouseUp() { Get.o1("URL").GetComponent().text = "--Mouse Up--" + PAINT.SEL + "--" + SceneModeManager.Instance._currentSM.ToString(); if (!SceneModeManager.CompareSceneMode(SceneModes.GroupMove) && !SceneModeManager.CompareSceneMode(SceneModes.ReadyMove) && SceneModeManager.SelectedName != "" && !SceneModeManager.CompareSceneMode(SceneModes.Paint)) { Camera.main.GetComponent().Hide(); //CameraAround.Hide(); if (SceneModeManager.CompareSceneMode(SceneModes.Hit) || SceneModeManager.CompareSceneMode(SceneModes.Follow)) { GameObject.Find("HIDER").transform.Find("CONTROL").gameObject.SetActive(false); GameObject SEL = GameObject.Find(SceneModeManager.SelectedName); Set.alpha(Get.o2("Canvas","Language"),true); if (SEL != null) { DOIT.SaveObjectPositionInData(SEL); List names = new List(); foreach (Transform child in SEL.transform) { string obj = child.name; if (obj.IndexOf("cabi") > -1) { names.Add(child.name); } if (obj.IndexOf("frid") > -1) { names.Add(child.name); } if (obj.IndexOf("hoow") > -1) { names.Add(child.name); } if (obj.IndexOf("hooc") > -1) { names.Add(child.name); } if (obj.IndexOf("stov") > -1) { names.Add(child.name); } if (obj.IndexOf("buil") > -1) { names.Add(child.name); } if (obj.IndexOf("tops") > -1) { names.Add(child.name); } if (obj.IndexOf("dish") > -1) { names.Add(child.name); } if (obj.IndexOf("micr") > -1) { names.Add(child.name); } if (obj.IndexOf("lamp") > -1) { names.Add(child.name); } if (obj.IndexOf("stoo") > -1) { names.Add(child.name); } if (obj.IndexOf("vase") > -1) { names.Add(child.name); } if (obj.IndexOf("smal") > -1) { names.Add(child.name); } if (obj.IndexOf("bloc") > -1) { names.Add(child.name); } if (obj.IndexOf("pict") > -1) { names.Add(child.name); } if (obj.IndexOf("wind") > -1) { names.Add(child.name); } if (obj.IndexOf("door") > -1) { names.Add(child.name); } if (obj.IndexOf("open") > -1) { names.Add(child.name); } if (obj.IndexOf("slid") > -1) { names.Add(child.name); } if (obj.IndexOf("pati") > -1) { names.Add(child.name); } if (obj.IndexOf("cell") > -1) { names.Add(child.name); } if (obj.IndexOf("mirr") > -1) { names.Add(child.name); } if (obj.IndexOf("pane") > -1) { names.Add(child.name); } if (obj.IndexOf("chai") > -1) { names.Add(child.name); } if (obj.IndexOf("tabl") > -1) { names.Add(child.name); } if (obj.IndexOf("orna") > -1) { names.Add(child.name); } } foreach (string childname in names) { GameObject child = GameObject.Find(childname); if (child != null) { child.transform.SetParent(SceneModeManager.Scene); DOIT.SaveObjectPositionInData(child.transform); } } string cO = SceneModeManager.SelectedName[..4]; if (cO == "wind" || cO == "door" || cO == "pati" || cO == "open") { HOLE.RefreshAllWalls(); }// HOLE.wall(_G.OBJs[nO][22]); } //Grid.SnapOn(SceneModeManager.SelectedName); } if (SceneModeManager.CompareSceneMode(SceneModes.Follow)) { DOIT.CloseALLPNL();} if (!SceneModeManager.CompareSceneMode(SceneModes.Panel)) _MOL.SetMolding(); if (GameObject.Find("PS") != null && _G.PATH == "demo") GameObject.Find("PS").GetComponent().text = "---"; } PRICE.Calprice();//Fake calculation for demo Mesure.Hide(); } public static Vector3 OPosition(Vector3 Opos, float Yfact) { Vector3 OB = SceneModeManager.Selected.GetComponent().bounds.size; float W = OB.x - 0.5f; float H = OB.y - 0.5f; float D = OB.z - 0.5f; if (Opos.x > _G.WIDE * 0.5f) { Opos.x = _G.WIDE * 0.5f - W * 0.5f; } if (Opos.x < -_G.WIDE * 0.5f) { Opos.x = -_G.WIDE * 0.5f + W * 0.5f; } if (Opos.z < -_G.DEPTH * 0.5f) { Opos.z = -_G.DEPTH * 0.5f + D * 0.5f; } if (Opos.z > _G.DEPTH * 0.5f) { Opos.z = _G.DEPTH * 0.5f - D * 0.5f; } return new Vector3(Opos.x, Opos.y + H * 0.5f * Yfact, Opos.z); } static public void PositionObjectWithinRoomBounds(GameObject createdObject) { string objType = createdObject.name[..4]; if (objType == "wind" || objType == "pati" || objType == "door" || objType == "open") { return; } Vector3 objectExtents = createdObject.GetComponent().bounds.extents; Vector3 position = createdObject.transform.position; Vector3 initPosition = position; float roomBoundX = (_G.WIDE + 0.5f) / 2.0f - objectExtents.x; if (position.x > roomBoundX) { position.x = roomBoundX; } else if (position.x < -roomBoundX) { position.x = -roomBoundX; } float roomBoundY = (_G.HEIGHT + 0.5f) / 2.0f - objectExtents.y; if (position.y > roomBoundY) { position.y = roomBoundY; } else if (position.y < -roomBoundY) { position.y = -roomBoundY; } float roomBoundZ = (_G.DEPTH + 0.5f) / 2.0f - objectExtents.z; if (position.z > roomBoundZ) { position.z = roomBoundZ; } else if (position.z < -roomBoundZ) { position.z = -roomBoundZ; } createdObject.transform.position = position; if (initPosition != position) { Debug.Log("ReCalculated Target Position == " + position); } } }