public override bool OnDragging(Ray ray) { bool flag = base.OnDragging(ray); rootGameObject.transform.position = BuildBlockManager.BestMatchPosition(rootGameObject.transform.position); CheckTreeAndSkEntity(); UpdateHeadTips(); return(flag && !mHasTree); }
void Update() { if (null != mOpBuilding) { if (Input.GetMouseButtonUp(0)) { TownEditor.Instance.PutBuildingDown(); } else if (Input.GetKeyUp(KeyCode.T)) { TownEditor.Instance.TurnBuilding(); } else if (Input.GetKeyUp(KeyCode.Escape)) { TownEditor.Instance.CancelSelect(); } else if (Input.GetKeyUp(KeyCode.Delete)) { TownEditor.Instance.DeletBuilding(); } else { if (null == UICamera.hoveredObject) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); float nearestDis = 10000f; RaycastHit[] hitInfos = Physics.RaycastAll(ray, 500f, 1 << Pathea.Layer.VFVoxelTerrain); if (hitInfos.Length > 0) { foreach (RaycastHit hit in hitInfos) { if (hit.distance < nearestDis && !hit.transform.name.Contains("B45Chnk")) { nearestDis = hit.distance; TownEditor.Instance.SetOpBuildingPosition(BuildBlockManager.BestMatchPosition(hit.point)); } } } } } } }