public SelectState3D getSelectState3D(string stateName) { if (stateDic.ContainsKey(stateName) == false) { return(null); } SelectState3D state = stateDic[stateName] as SelectState3D; return(state); }
private void ToSelectGoodsState(ProductData productData) { GoodsView view_2 = view2D.getGoodsView(productData); Goods3DView view_3 = view3D.getGoodsView(productData); SelectState state = getSelectState(SelectGoodsState2D.NAME); state.viewTarget = view_2; SelectState3D state3D = getSelectState3D(SelectGoodsState3D.NAME); state3D.viewTarget = view_3; setState(SelectGoodsState2D.NAME); }
public override void mUpdate() { base.mUpdate(); if (Input.GetMouseButtonDown(0) && uguiHitUI.uiHited == false) { colli = null; //RaycastHit hit; Ray ray = inputCamera.ScreenPointToRay(Input.mousePosition); //bool hited = Physics.Raycast(ray, out hit); //if (hited == true) //{ // colli = hit.collider; //} int count = Physics.RaycastNonAlloc(ray, raycastArr); if (count > 0) { raycastList.Clear(); for (int i = 0; i < count; i++) { raycastList.Add(raycastArr[i]); } //raycastList.Sort( // delegate (RaycastHit hit1, RaycastHit hit2) // { // if (hit1.distance > hit2.distance) return 1; // else return -1; // } //); SortDis(raycastList); float rayhitdis = float.MaxValue; for (int i = 0; i < count; i++) { if (colli != null && raycastList[i].distance > raycastList[0].distance + 5) { break; } float dis; bool hit = raycastFunc.RaycastMesh(Input.mousePosition, raycastList[i].collider.gameObject, out dis); if (hit == true) { if (dis < rayhitdis) { colli = raycastList[i].collider; rayhitdis = dis; } } } if (colli == null) { colli = raycastList[0].collider; } } //if (colli == null) //{ // return; //} } if (colli != null && Input.GetMouseButtonUp(0)) { Collider colli2 = null; //RaycastHit hit; Ray ray = inputCamera.ScreenPointToRay(Input.mousePosition); //bool hited = Physics.Raycast(ray, out hit); //if (hited == true) //{ // colli2 = hit.collider; //} int count = Physics.RaycastNonAlloc(ray, raycastArr); if (count > 0) { raycastList.Clear(); for (int i = 0; i < count; i++) { raycastList.Add(raycastArr[i]); } // raycastList.Sort( // delegate (RaycastHit hit1, RaycastHit hit2) // { // if (hit1.distance > hit2.distance) return 1; // else return -1; // } //); SortDis(raycastList); float rayhitdis = float.MaxValue; for (int i = 0; i < count; i++) { if (colli != null && raycastList[i].distance > raycastList[0].distance + 5) { break; } float dis; bool hit = raycastFunc.RaycastMesh(Input.mousePosition, raycastList[i].collider.gameObject, out dis); if (hit == true) { if (dis < rayhitdis) { colli2 = raycastList[i].collider; rayhitdis = dis; } } } if (count > 0 && colli2 == null) { colli2 = raycastList[0].collider; } } if (colli2 == null) { return; } if (colli2 != colli) { colli = null; return; } ObjView view; if (colli.name == "colli") { view = colli.transform.parent.GetComponent <ObjView>(); } else { view = colli.GetComponent <ObjView>(); } if (view == null) { return; } string stateName = view.GetState(); SelectState3D state = getSelectState3D(stateName); if (state == null) { Debug.LogError("stateName = {0}未注册!" + stateName); return; } state.viewTarget = view; setState(stateName); } }
public override void mPhoneUpdate() { base.mPhoneUpdate(); if (Input.touchCount != 1 || uguiHitUI.uiHited == true) { return; } Touch touch = Input.GetTouch(0); switch (touch.phase) { case TouchPhase.Began: { colli = null; //RaycastHit hit; Ray ray = inputCamera.ScreenPointToRay(touch.position); //bool hited = Physics.Raycast(ray, out hit); //if (hited == true) //{ // colli = hit.collider; //} int count = Physics.RaycastNonAlloc(ray, raycastArr); if (count > 0) { raycastList.Clear(); for (int i = 0; i < count; i++) { raycastList.Add(raycastArr[i]); } //raycastList.Sort( // delegate (RaycastHit hit1, RaycastHit hit2) // { // if (hit1.distance > hit2.distance) return 1; // else return -1; // } //); SortDis(raycastList); float rayhitdis = float.MaxValue; for (int i = 0; i < count; i++) { if (colli != null && raycastList[i].distance > raycastList[0].distance + 5) { break; } float dis; bool hit = raycastFunc.RaycastMesh(touch.position, raycastList[i].collider.gameObject, out dis); if (hit == true) { if (dis < rayhitdis) { colli = raycastList[i].collider; rayhitdis = dis; } } } if (colli == null) { colli = raycastList[0].collider; } } } return; case TouchPhase.Moved: if (colli != null) { colli = null; } return; case TouchPhase.Ended: break; case TouchPhase.Stationary: case TouchPhase.Canceled: default: return; } if (colli != null) { Collider colli2 = null; //RaycastHit hit; Ray ray = inputCamera.ScreenPointToRay(touch.position); //bool hited = Physics.Raycast(ray, out hit); //if (hited == true) //{ // colli2 = hit.collider; //} int count = Physics.RaycastNonAlloc(ray, raycastArr); if (count > 0) { raycastList.Clear(); for (int i = 0; i < count; i++) { raycastList.Add(raycastArr[i]); } // raycastList.Sort( // delegate (RaycastHit hit1, RaycastHit hit2) // { // if (hit1.distance > hit2.distance) return 1; // else return -1; // } //); SortDis(raycastList); float rayhitdis = float.MaxValue; for (int i = 0; i < count; i++) { if (colli != null && raycastList[i].distance > raycastList[0].distance + 5) { break; } float dis; bool hit = raycastFunc.RaycastMesh(touch.position, raycastList[i].collider.gameObject, out dis); if (hit == true) { if (dis < rayhitdis) { colli2 = raycastList[i].collider; rayhitdis = dis; } } } if (count > 0 && colli2 == null) { colli2 = raycastList[0].collider; } } if (colli2 != colli) { colli = null; return; } ObjView view; if (colli.name == "colli") { view = colli.transform.parent.GetComponent <ObjView>(); } else { view = colli.GetComponent <ObjView>(); } if (view == null) { return; } string stateName = view.GetState(); SelectState3D state = getSelectState3D(stateName); if (state == null) { return; } state.viewTarget = view; setState(stateName); } }
public override void mPhoneUpdate() { base.mPhoneUpdate(); if (uguiHitUI.uiHited == true || Input.touchCount != 1) { return; } Touch touch = Input.GetTouch(0); if (touch.phase == TouchPhase.Began) { onhandle = false; moved = false; canMove = false; colli = null; Ray ray = inputCamera.ScreenPointToRay(touch.position); //RaycastHit hit; //bool hited = Physics.Raycast(ray, out hit); //if (hited == false) //{ // colli = null; // return; //} //colli = hit.collider; int count = Physics.RaycastNonAlloc(ray, raycastArr); if (count > 0) { raycastList.Clear(); for (int i = 0; i < count; i++) { raycastList.Add(raycastArr[i]); } // raycastList.Sort( // delegate (RaycastHit hit1, RaycastHit hit2) // { // if (hit1.distance > hit2.distance) return 1; // else return -1; // } //); SortDis(raycastList); float rayhitdis = float.MaxValue; for (int i = 0; i < count; i++) { if (colli != null && raycastList[i].distance > raycastList[0].distance + 5) { break; } float dis; bool hit = raycastFunc.RaycastMesh(touch.position, raycastList[i].collider.gameObject, out dis); if (hit == true) { if (dis < rayhitdis) { colli = raycastList[i].collider; rayhitdis = dis; } } } if (colli == null) { colli = raycastList[0].collider; } } if (colli == null) { return; } HandleView handle = colli.GetComponent <HandleView>(); if (handle != null) { handle.SetState(selectMachine); onhandle = true; return; } ObjView view; if (colli.name == "colli") { view = colli.transform.parent.GetComponent <ObjView>(); } else { view = colli.GetComponent <ObjView>(); } if (view != null && view == viewTarget) { canMove = true; } } else if (touch.phase == TouchPhase.Moved) { moved = true; } else if (touch.phase == TouchPhase.Canceled || touch.phase == TouchPhase.Ended) { onhandle = false; if (moved == true) { return; } if (colli == null) { changed = true; setState(FreeState3D.NAME); return; } HandleView handle = colli.GetComponent <HandleView>(); if (handle != null) { return; } ObjView view; if (colli.name == "colli") { view = colli.transform.parent.GetComponent <ObjView>(); } else { view = colli.GetComponent <ObjView>(); } if (view == null) { changed = true; setState(FreeState3D.NAME); return; } else if (view == viewTarget) { } else { changed = true; string stateName = view.GetState(); SelectState3D state = getSelectState3D(stateName); if (state == null) { return; } state.viewTarget = view; setState(stateName); } } }
public override void mUpdate() { base.mUpdate(); if (Input.GetMouseButtonDown(0) == true && uguiHitUI.uiHited == false) { canMove = false; onhandle = false; dowmPos = Input.mousePosition; colli = null; Ray ray = inputCamera.ScreenPointToRay(dowmPos); //RaycastHit hit; //bool hited = Physics.Raycast(ray, out hit); //if (hited == false) //{ // colli = null; // //setState(FreeState3D.NAME); // return; //} //colli = hit.collider; int count = Physics.RaycastNonAlloc(ray, raycastArr); if (count > 0) { raycastList.Clear(); for (int i = 0; i < count; i++) { raycastList.Add(raycastArr[i]); } // raycastList.Sort( // delegate (RaycastHit hit1, RaycastHit hit2) // { // if (hit1.distance > hit2.distance) return 1; // else return -1; // } //); SortDis(raycastList); float rayhitdis = float.MaxValue; for (int i = 0; i < count; i++) { if (colli != null && raycastList[i].distance > raycastList[0].distance + 5) { break; } float dis; bool hit = raycastFunc.RaycastMesh(Input.mousePosition, raycastList[i].collider.gameObject, out dis); if (hit == true) { if (dis < rayhitdis) { colli = raycastList[i].collider; rayhitdis = dis; } } } if (colli == null) { colli = raycastList[0].collider; } } if (colli == null) { return; } HandleView handle = colli.GetComponent <HandleView>(); if (handle != null) { handle.SetState(selectMachine); onhandle = true; return; } ObjView view; if (colli.name == "colli") { view = colli.transform.parent.GetComponent <ObjView>(); } else { view = colli.GetComponent <ObjView>(); } if (view == null) { } if (view == viewTarget) { canMove = true; } } else if (Input.GetMouseButtonUp(0) == true) { onhandle = false; if (uguiHitUI.uiHited == true) { return; } Collider colli2; Vector2 upPos = Input.mousePosition; if (Vector2.Distance(dowmPos, upPos) > 5f) { return; } colli2 = null; Ray ray = inputCamera.ScreenPointToRay(upPos); //RaycastHit hit; //bool hited = Physics.Raycast(ray, out hit); //if (hited == false) //{ // colli2 = null; // if (colli == colli2) // { // changed = true; // setState(FreeState3D.NAME); // } // return; //} //colli2 = hit.collider; int count = Physics.RaycastNonAlloc(ray, raycastArr); if (count > 0) { raycastList.Clear(); for (int i = 0; i < count; i++) { raycastList.Add(raycastArr[i]); } // raycastList.Sort( // delegate (RaycastHit hit1, RaycastHit hit2) // { // if (hit1.distance > hit2.distance) return 1; // else return -1; // } //); SortDis(raycastList); float rayhitdis = float.MaxValue; for (int i = 0; i < count; i++) { if (colli != null && raycastList[i].distance > raycastList[0].distance + 5) { break; } float dis; bool hit = raycastFunc.RaycastMesh(Input.mousePosition, raycastList[i].collider.gameObject, out dis); if (hit == true) { if (dis < rayhitdis) { colli2 = raycastList[i].collider; rayhitdis = dis; } } } if (colli2 == null) { colli2 = raycastList[0].collider; } } if (colli2 == null) { if (colli == colli2) { changed = true; setState(FreeState3D.NAME); } return; } if (colli2 != colli) { return; } HandleView handle = colli.GetComponent <HandleView>(); if (handle != null) { return; } ObjView view; if (colli2.name == "colli") { view = colli2.transform.parent.GetComponent <ObjView>(); } else { view = colli2.GetComponent <ObjView>(); } if (view == null) { changed = true; setState(FreeState3D.NAME); return; } else if (view == viewTarget) { //canMove = true; //return; } else { changed = true; string stateName = view.GetState(); SelectState3D state = getSelectState3D(stateName); if (state == null) { return; } state.viewTarget = view; setState(stateName); } } }