public void Update(CamViewState state, Point mouseLoc, Point beginLoc, Vector3 beginLocSpace, Vector3 lastLocSpace, Vector3 selectionCenter, float selectionRadius, CamViewState.LockedAxis lockedAxis)
        {
            state.ValidateSelectionStats();

            float zMovement = state.CameraObj.Transform.Pos.Z - lastLocSpace.Z;
            Vector3 target = state.GetSpaceCoord(new Vector3(mouseLoc.X, mouseLoc.Y, selectionCenter.Z + zMovement));
            Vector3 movLock = beginLocSpace - lastLocSpace;
            Vector3 mov = target - lastLocSpace;
            mov.Z = zMovement;
            target.Z = 0;

            if (lockedAxis == CamViewState.LockedAxis.X)
            {
                mov = new Vector3(mov.X, 0, 0);
            }
            else if (lockedAxis == CamViewState.LockedAxis.Y)
            {
                mov = new Vector3(0, mov.Y, 0);
            }
            else
            {
                mov = state.ApplyAxisLock(mov, movLock, target + (Vector3.UnitZ * state.CameraObj.Transform.Pos.Z) - beginLocSpace);
            }

            state.MoveSelectionBy(mov);

            state.ActionLastLocSpace += mov;
        }
Exemple #2
0
        public void Update(CamViewState state, Point mouseLoc, Point beginLoc, Vector3 beginLocSpace, Vector3 lastLocSpace, Vector3 selectionCenter, float selectionRadius, CamViewState.LockedAxis lockedAxis)
        {
            state.ValidateSelectionStats();

            float   zMovement = state.CameraObj.Transform.Pos.Z - lastLocSpace.Z;
            Vector3 target    = state.GetSpaceCoord(new Vector3(mouseLoc.X, mouseLoc.Y, selectionCenter.Z + zMovement));
            Vector3 movLock   = beginLocSpace - lastLocSpace;
            Vector3 mov       = target - lastLocSpace;

            mov.Z    = zMovement;
            target.Z = 0;

            if (lockedAxis == CamViewState.LockedAxis.X)
            {
                mov = new Vector3(mov.X, 0, 0);
            }
            else if (lockedAxis == CamViewState.LockedAxis.Y)
            {
                mov = new Vector3(0, mov.Y, 0);
            }
            else
            {
                mov = state.ApplyAxisLock(mov, movLock, target + (Vector3.UnitZ * state.CameraObj.Transform.Pos.Z) - beginLocSpace);
            }

            state.MoveSelectionBy(mov);

            state.ActionLastLocSpace += mov;
        }
        public void Update(CamViewState state, Point mouseLoc, Point beginLoc, Vector3 beginLocSpace, Vector3 lastLocSpace, Vector3 selectionCenter, float selectionRadius, CamViewState.LockedAxis lockedAxis)
        {
            state.ValidateSelectionStats();

            Vector3 spaceCoord = state.GetSpaceCoord(new Vector3(mouseLoc.X, mouseLoc.Y, selectionCenter.Z));
            float   lastAngle  = MathF.Angle(selectionCenter.X, selectionCenter.Y, lastLocSpace.X, lastLocSpace.Y);
            float   curAngle   = MathF.Angle(selectionCenter.X, selectionCenter.Y, spaceCoord.X, spaceCoord.Y);
            float   rotation   = curAngle - lastAngle;

            state.RotateSelectionBy(rotation);

            state.ActionLastLocSpace = spaceCoord;
        }
        public void Update(CamViewState state, Point mouseLoc, Point beginLoc, Vector3 beginLocSpace, Vector3 lastLocSpace, Vector3 selectionCenter, float selectionRadius, CamViewState.LockedAxis lockedAxis)
        {
            state.ValidateSelectionStats();

            Vector3 spaceCoord = state.GetSpaceCoord(new Vector3(mouseLoc.X, mouseLoc.Y, selectionCenter.Z));
            float lastAngle = MathF.Angle(selectionCenter.X, selectionCenter.Y, lastLocSpace.X, lastLocSpace.Y);
            float curAngle = MathF.Angle(selectionCenter.X, selectionCenter.Y, spaceCoord.X, spaceCoord.Y);
            float rotation = curAngle - lastAngle;

            state.RotateSelectionBy(rotation);

            state.ActionLastLocSpace = spaceCoord;
        }
        public void Update(CamViewState state, Point mouseLoc, Point beginLoc, Vector3 beginLocSpace, Vector3 lastLocSpace, Vector3 selectionCenter, float selectionRadius, CamViewState.LockedAxis lockedAxis)
        {
            state.ValidateSelectionStats();
            if (selectionRadius == 0.0f) return;

            Vector3 spaceCoord = state.GetSpaceCoord(new Vector3(mouseLoc.X, mouseLoc.Y, selectionCenter.Z));
            float lastRadius = selectionRadius;
            float curRadius = (selectionCenter - spaceCoord).Length;
            float scale = MathF.Clamp(curRadius / lastRadius, 0.0001f, 10000.0f);

            state.ScaleSelectionBy(scale);

            state.ActionLastLocSpace = spaceCoord;
            state.Invalidate();
        }
        public void Update(CamViewState state, Point mouseLoc, Point beginLoc, Vector3 beginLocSpace, Vector3 lastLocSpace, Vector3 selectionCenter, float selectionRadius, CamViewState.LockedAxis lockedAxis)
        {
            state.ValidateSelectionStats();
            if (selectionRadius == 0.0f)
            {
                return;
            }

            Vector3 spaceCoord = state.GetSpaceCoord(new Vector3(mouseLoc.X, mouseLoc.Y, selectionCenter.Z));
            float   lastRadius = selectionRadius;
            float   curRadius  = (selectionCenter - spaceCoord).Length;
            float   scale      = MathF.Clamp(curRadius / lastRadius, 0.0001f, 10000.0f);

            state.ScaleSelectionBy(scale);

            state.ActionLastLocSpace = spaceCoord;
            state.Invalidate();
        }