Пример #1
0
        //!
        //! single touch start (called by Mouse or Touch Input)
        //! @param      pos     screen position of pointer
        //!
        public void singlePointerStarted(Vector3 pos)
        {
            pointerDown = true;

            if (mainController.helpActive)
            {
                helpMenu.initPos(pos);
                return;
            }
            if (!pointerOnGUI())
            {
                //pointToMove active
                if (mainController.ActiveMode == MainController.Mode.pointToMoveMode)
                {
                    Transform selection = mainController.getCurrentSelection();
                    targetPlane = new Plane(Vector3.up, scene.transform.position);
                    mainController.showPointToMoveIdentifier(planeRaycast(pos, targetPlane));
                    return;
                }

                //standard modification modes (modifier active)
                if (mainController.ActiveMode == MainController.Mode.translationMode ||
                    mainController.ActiveMode == MainController.Mode.rotationMode ||
                    mainController.ActiveMode == MainController.Mode.scaleMode ||
                    mainController.ActiveMode == MainController.Mode.animationEditing)
                {
                    //editing mode is active
                    GameObject hitObject = cameraRaycast(pos, 256);                     //raycast only RenderInFront Layer (layer 9 -> 256)
                    if (hitObject)
                    {
                        //Modifier object was hit
                        if (hitObject.tag == "Modifier")
                        {
                            //modifier was hit
                            mainController.handleModifier(hitObject.transform);
                            hitPositionBuffer = planeRaycast(pos, mainController.helperPlane);
                            pointerOnModifier = true;
                        }
                        hitObject = null;
                    }
                    else
                    {
                        //no modifier was hit
                        hitObject = cameraRaycast(pos, defaultLayermask);
                        if (hitObject)
                        {
                            //other object was hit
                            mainController.handleSelection(hitObject.transform);
                            pause     = true;
                            hitObject = null;
                        }
                        else
                        {
                            mainController.handleSelection();
                        }
                    }
                }
            }
            else
            {
                pause = true;
            }
        }
Пример #2
0
        //!
        //! single touch start (called by Mouse or Touch Input)
        //! @param      pos     screen position of pointer
        //!
        public void singlePointerStarted(Vector3 pos)
        {
            pointerDown = true;
            //light editing mode

            /*
             * if (mainController.ActiveMode == MainController.Mode.lightSettingsMode)
             * {
             * if (mainController.isOnLightSettingsPicker(pos))
             * {
             * mainController.updateLight(pos);
             * editingLight = true;
             * return;
             * }
             * else if (!pointerOnGUI())
             *      {
             *              //selection mode is active
             *              GameObject hitObject = cameraRaycast(pos,defaultLayermask);
             *              if (hitObject) {
             *                      //Object was hit
             *                      mainController.handleSelection(hitObject.transform);
             *                      hitObject = null;
             *  pause = true;
             *              }
             *              //mainController.openMenu();
             *              return;
             *      }
             * }
             */

            if (!pointerOnGUI())
            {
                //oneForAll mode
                if (mainController.ActiveMode == MainController.Mode.oneForAllMode)
                {
                    mainController.rotationCollider.gameObject.transform.position = mainController.getSelectionPosition();
                    mainController.rotationCollider.transform.localScale          = Vector3.one * (Vector3.Distance(Camera.main.transform.position, mainController.getSelectionPosition()) / 100);
                    hitPositionBuffer = objectRaycast(pos, mainController.rotationCollider);
                    return;
                }

                //pointToMove active
                if (mainController.ActiveMode == MainController.Mode.pointToMoveMode ||
                    mainController.ActiveMode == MainController.Mode.pointShootTranslation)
                {
                    mainController.showPointToMoveIdentifier(objectRaycast(pos, groundPlane));
                    return;
                }

                //standard modification modes (modifier active)
                if (mainController.ActiveMode == MainController.Mode.translationMode ||
                    mainController.ActiveMode == MainController.Mode.rotationMode ||
                    mainController.ActiveMode == MainController.Mode.scaleMode ||
                    mainController.ActiveMode == MainController.Mode.animationEditing)
                {
                    //editing mode is active
                    GameObject hitObject = cameraRaycast(pos, 256);                     //raycast only RenderInFront Layer (layer 9 -> 256)
                    if (hitObject)
                    {
                        //Modifier object was hit
                        if (hitObject.tag == "Modifier")
                        {
                            //modifier was hit
                            mainController.handleModifier(hitObject.transform);
                            hitPositionBuffer = objectRaycast(pos, mainController.helperCollider);
                            pointerOnModifier = true;
                        }
                        hitObject = null;
                    }
                    else
                    {
                        //no modifier was hit
                        hitObject = cameraRaycast(pos, defaultLayermask);
                        if (hitObject)
                        {
                            //other object was hit
                            mainController.handleSelection(hitObject.transform);
                            pause     = true;
                            hitObject = null;
                        }
                        //mainController.openMenu();
                    }
                }
            }
            else
            {
                pause = true;
            }
        }