コード例 #1
0
    public SelectState3D getSelectState3D(string stateName)
    {
        if (stateDic.ContainsKey(stateName) == false)
        {
            return(null);
        }
        SelectState3D state = stateDic[stateName] as SelectState3D;

        return(state);
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    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);
        }
    }
コード例 #4
0
    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);
        }
    }
コード例 #5
0
    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);
            }
        }
    }
コード例 #6
0
    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);
            }
        }
    }