Rev 1468 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BurutaruEditor.file;
namespace BurutaruEditor.interaction
{
public class SelectMove : Interaction
{
public const int MOVE_ALL = -1;
private bool mLeftDown = false;
private int mLastX = 0;
private int mLastY = 0;
private LevelObject mSelectedObject = null;
private int mSelectedObjectPart = -1;
private bool mDocPartSelected = false;
private LevelObject mHoverObject = null;
private int mHoverObjectPart = -1;
public SelectMove(MainForm owner)
: base(owner)
{
}
public override void MouseDown(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mLeftDown = true;
mSelectedObject = Owner.View.FindObjectAt(e.X, e.Y, out mSelectedObjectPart, true);
if (mSelectedObject == null)
{
// choose Document
Owner.Properties.SelectedObject = Owner.Doc;
Owner.View.SelectedObject = null;
mSelectedObjectPart = Owner.View.FindDocumentObjectPart(e.X, e.Y);
if (mSelectedObjectPart != -1)
{
mDocPartSelected = true;
}
Owner.Properties.ExpandAllGridItems();
}
else
{
Owner.View.SelectedObject = mSelectedObject;
Owner.View.SelectedObjectPart = mSelectedObjectPart;
Owner.Properties.SelectedObject = mSelectedObject;
Owner.Properties.ExpandAllGridItems();
}
}
mLastX = e.X;
mLastY = e.Y;
}
public override void MouseMove(MouseEventArgs e)
{
if (mLeftDown && ((mSelectedObject != null) || (mDocPartSelected)))
{
float dx = e.X - mLastX;
float dy = e.Y - mLastY;
if (mSelectedObject != null)
{
mSelectedObject.MoveBy(dx, dy, mSelectedObjectPart);
Owner.Properties.Refresh();
}
else
{
// move Document part
Owner.View.MoveDocPartBy(dx, dy, mSelectedObjectPart);
Owner.Properties.Refresh();
}
}
else
{
mHoverObject = Owner.View.FindObjectAt(e.X, e.Y, out mHoverObjectPart);
if (mHoverObject == null)
{
mHoverObjectPart = Owner.View.FindDocumentObjectPart(e.X, e.Y);
if (mHoverObjectPart != -1)
Owner.GlView.Cursor = Cursors.SizeAll;
else
Owner.GlView.Cursor = Cursors.Arrow;
}
else
{
Owner.GlView.Cursor = Cursors.SizeAll;
}
}
mLastX = e.X;
mLastY = e.Y;
}
public override void MouseUp(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mLeftDown = false;
mSelectedObject = null;
mSelectedObjectPart = -1;
mDocPartSelected = false;
}
}
public override void Render()
{
if (mHoverObject != null)
mHoverObject.RenderSelected(mHoverObjectPart, true);
}
}
}