示例#1
0
        //!
        //! single pointer down & moving (drag) (called by Mouse or Touch Input)
        //! @param      pos     screen position of pointer
        //!
        public void singlePointerDrag(Vector3 pos)
        {
            //light editing mode

            /*
             * if (mainController.ActiveMode == MainController.Mode.lightSettingsMode)
             * {
             * if (mainController.isOnLightSettingsPicker(pos))
             * {
             * mainController.updateLight(pos);
             * return;
             * }
             * }
             */

            //GUI creation mode
            //if (pos.y < 30 && !menuInteraction &&
            //    (mainController.activeMode == MainController.Mode.idle ||
            //    mainController.activeMode == MainController.Mode.lightMenuMode ||
            //    mainController.activeMode == MainController.Mode.objectMenuMode))
            //{
            //    menuInteraction = true;
            //}
            //was dragging menu

            /*if (menuInteraction) {
             * mainController.dragMenu(new Vector3(Screen.width,Screen.height,0) - pos);
             * return;
             * }*/

            if (!pointerOnGUI())
            {
                if (!pause)
                {
                    //oneForAll mode
                    if (mainController.ActiveMode == MainController.Mode.oneForAllMode)
                    {
                        Vector3 newHitPosition = objectRaycast(pos, mainController.rotationCollider);
                        if (newHitPosition != nullVector && hitPositionBuffer != nullVector)
                        {
                            mainController.rotateSelection(hitPositionBuffer, newHitPosition);
                        }
                        hitPositionBuffer = newHitPosition;
                        return;
                    }

                    //pointToMove active
                    if (mainController.ActiveMode == MainController.Mode.pointToMoveMode ||
                        mainController.ActiveMode == MainController.Mode.pointShootTranslation)
                    {
                        mainController.movePointToMoveIdentifier(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)
                    {
                        if (pointerOnModifier)
                        {
                            //Pointer is down on modifier
                            Vector3 newHitPosition = objectRaycast(pos, mainController.helperCollider);


                            // print( "hitPositionBuffer " + hitPositionBuffer + " newHitPosition " + newHitPosition );


                            if (newHitPosition != nullVector && hitPositionBuffer != nullVector)
                            {
                                mainController.pointerDrag(hitPositionBuffer, newHitPosition);
                            }
                            hitPositionBuffer = newHitPosition;
                        }
                    }
                }
            }
            else if (!float.IsNaN(lastTime))
            {
                if (Time.time - lastTime > 1.0f)
                {
                    // TODO: check was this did

                    /*
                     * switch (mainController.getGuiElementId(pos)){
                     * case 0: //translation
                     * mainController.resetSelectionPosition();
                     * break;
                     * case 1: //rotation
                     * mainController.resetSelectionRotation();
                     * break;
                     * case 2: //scale
                     * mainController.resetSelectionScale();
                     * break;
                     * default:
                     * break;
                     *
                     * }
                     */
                    lastTime = float.NaN;
                }
            }
            else if (float.IsNaN(lastTime))
            {
                lastTime = Time.time;
            }
        }