Exemple #1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="button"></param>
 /// <param name="pick"></param>
 public void ScreenClick(MouseButtons button, PickInformation pick)
 {
     if (sssEditor.SelectedIndex != -1 && button == MouseButtons.Right && MousePrevDown)
     {
         foreach (MEXStageIconEntry ico in sssEditor.SelectedObjects)
         {
             ico.PopPosition();
         }
         MousePrevDown = false;
         Dragging      = false;
     }
 }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="pick"></param>
        public void ScreenDoubleClick(PickInformation pick)
        {
            var planePoint = pick.GetPlaneIntersection(Vector3.UnitZ, Vector3.Zero);

            var key = OpenTK.Input.Keyboard.GetState();

            foreach (var i in Icons)
            {
                planePoint = pick.GetPlaneIntersection(Vector3.UnitZ, new Vector3(0, 0, i.Z));
                var rect = i.ToRectangle();
                if (rect.Contains(planePoint.X, planePoint.Y))
                {
                    sssEditor.SelectObject(i, key.IsKeyDown(OpenTK.Input.Key.ControlRight) || key.IsKeyDown(OpenTK.Input.Key.ControlLeft));
                    break;
                }
            }
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private PickInformation GetScreenPosition(Vector2 point)
        {
            float x = (2.0f * point.X) / panel1.Width - 1.0f;
            float y = 1.0f - (2.0f * point.Y) / panel1.Height;

            var inv = _camera.MvpMatrix.Inverted();

            Vector4 va = Vector4.Transform(new Vector4(x, y, -1.0f, 1.0f), inv);
            Vector4 vb = Vector4.Transform(new Vector4(x, y, 1.0f, 1.0f), inv);

            va.Xyz /= va.W;
            vb.Xyz /= vb.W;

            Vector3 p1 = va.Xyz;
            Vector3 p2 = p1 - ((va - (va + vb)).Xyz) * 100;

            CrossHair = p1;

            PickInformation info = new PickInformation(new Vector2(point.X, point.Y), p1, p2);

            return(info);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pick"></param>
        /// <param name="deltaX"></param>
        /// <param name="deltaY"></param>
        public void ScreenDrag(PickInformation pick, float deltaX, float deltaY)
        {
            _transWidget.Drag(pick);

            var keyState = Keyboard.GetState();

            bool drag = keyState.IsKeyDown(Key.AltLeft) || keyState.IsKeyDown(Key.AltRight);

            if (drag &&
                subActionList.SelectedItem is SubActionScript script &&
                script.CodeID == 11)
            {
                var desc       = script.SubactionDesc;
                var parameters = desc.GetParameters(script.data);

                // position
                // 7 8 9

                script.data = desc.Compile(parameters);
                subActionList.Invalidate();
                SaveSelectedActionChanges();
            }
        }
Exemple #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="viewport"></param>
        /// <param name="pick"></param>
        /// <param name="deltaX"></param>
        /// <param name="deltaY"></param>
        public void ScreenDrag(ViewportControl viewport, PickInformation pick, float deltaX, float deltaY)
        {
            var mouseDown = OpenTK.Input.Mouse.GetState().IsButtonDown(OpenTK.Input.MouseButton.Left);

            Dragging = false;

            if (mouseDown && viewport.IsAltAction)
            {
                Vector3 DragMove = Vector3.Zero;

                var planePoint = pick.GetPlaneIntersection(Vector3.UnitZ, Vector3.Zero);

                foreach (MEXStageIconEntry icon in sssEditor.SelectedObjects)
                {
                    if (!MousePrevDown)
                    {
                        icon.PushPosition();
                        prevPlanePoint = planePoint;
                    }
                    if (icon.ToRectangle().Contains(prevPlanePoint.X, prevPlanePoint.Y))
                    {
                        DragMove = new Vector3(prevPlanePoint.X - planePoint.X, prevPlanePoint.Y - planePoint.Y, 0);
                    }
                }
                prevPlanePoint = planePoint;

                foreach (MEXStageIconEntry icon in sssEditor.SelectedObjects)
                {
                    icon.X -= DragMove.X;
                    icon.Y -= DragMove.Y;

                    Dragging = true;
                }
            }

            MousePrevDown = mouseDown;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pick"></param>
        public void ScreenDoubleClick(PickInformation pick)
        {
            JointManager.Frame = viewport.Frame;
            JointManager.UpdateNoRender();
            SubactionProcess.SetFrame(viewport.Frame);

            var shortestDistance = float.MaxValue;

            foreach (var hb in SubactionProcess.Hitboxes)
            {
                if (hb.Active)
                {
                    if (pick.CheckSphereHit(hb.GetWorldPosition(JointManager), hb.Size, out float distance))
                    {
                        if (distance < shortestDistance)
                        {
                            shortestDistance = distance;
                            subActionList.ClearSelected();
                            subActionList.SelectedIndex = hb.CommandIndex;
                        }
                    }
                }
            }
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="start"></param>
 /// <param name="end"></param>
 public void ScreenSelectArea(PickInformation start, PickInformation end)
 {
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="button"></param>
 /// <param name="pick"></param>
 public void ScreenClick(MouseButtons button, PickInformation pick)
 {
 }