/// <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; } }
/// <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; } } }
/// <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(); } }
/// <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) { }