Merge pull request #2024 from John3/SnapToMenu

snapTo Menu
This commit is contained in:
Areloch 2019-03-31 14:32:50 -05:00 committed by GitHub
commit fa6bdd9027
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 83 additions and 1 deletions

View file

@ -897,6 +897,64 @@ function EditorDropTypeMenu::setupDefaultState(%this)
//////////////////////////////////////////////////////////////////////////
function EditorSnapToMenu::onSelectItem(%this, %id, %text)
{
EWorldEditor.SnapTo(%id);
}
function EditorSnapToMenu::setupDefaultState(%this)
{
Parent::setupDefaultState(%this);
}
function WorldEditor::snapTo(%this, %id)
{
if(%this.getSelectionSize() > 2)
{
error("Please select two objects before selecting a Snap To function.");
return;
}
%objTarget = %this.getSelectedObject(0);
%objToSnap = %this.getSelectedObject(%this.getSelectionSize()-1);
switch$(%id)
{
case 0:
%objToSnap.setTransform(setWord(%objToSnap.getTransform(), 0, getWord(%objTarget.getTransform(), 0)));
case 1:
%objTargetXEdge = getWord(%objTarget.getTransform(), 0) + getWord(%objTarget.getObjectBox(), 0);
%objToSnapXEdge = %objTargetXEdge - getWord(%objToSnap.getObjectBox(), 3);
%objToSnap.setTransform(setWord(%objToSnap.getTransform(), 0, %objToSnapXEdge));
case 2:
%objTargetXEdge = getWord(%objTarget.getTransform(), 0) + getWord(%objTarget.getObjectBox(), 3);
%objToSnapXEdge = %objTargetXEdge - getWord(%objToSnap.getObjectBox(), 0);
%objToSnap.setTransform(setWord(%objToSnap.getTransform(), 0, %objToSnapXEdge));
case 3:
%objToSnap.setTransform(setWord(%objToSnap.getTransform(), 1, getWord(%objTarget.getTransform(), 1)));
case 4:
%objTargetXEdge = getWord(%objTarget.getTransform(), 1) + getWord(%objTarget.getObjectBox(), 1);
%objToSnapXEdge = %objTargetXEdge - getWord(%objToSnap.getObjectBox(), 4);
%objToSnap.setTransform(setWord(%objToSnap.getTransform(), 1, %objToSnapXEdge));
case 5:
%objTargetXEdge = getWord(%objTarget.getTransform(), 1) + getWord(%objTarget.getObjectBox(), 4);
%objToSnapXEdge = %objTargetXEdge - getWord(%objToSnap.getObjectBox(), 1);
%objToSnap.setTransform(setWord(%objToSnap.getTransform(), 1, %objToSnapXEdge));
case 6:
%objToSnap.setTransform(setWord(%objToSnap.getTransform(), 2, getWord(%objTarget.getTransform(), 2)));
case 7:
%objTargetXEdge = getWord(%objTarget.getTransform(), 2) + getWord(%objTarget.getObjectBox(), 2);
%objToSnapXEdge = %objTargetXEdge - getWord(%objToSnap.getObjectBox(), 5);
%objToSnap.setTransform(setWord(%objToSnap.getTransform(), 2, %objToSnapXEdge));
case 8:
%objTargetXEdge = getWord(%objTarget.getTransform(), 2) + getWord(%objTarget.getObjectBox(), 5);
%objToSnapXEdge = %objTargetXEdge - getWord(%objToSnap.getObjectBox(), 2);
%objToSnap.setTransform(setWord(%objToSnap.getTransform(), 2, %objToSnapXEdge));
}
}
//////////////////////////////////////////////////////////////////////////
function EditorAlignBoundsMenu::onSelectItem(%this, %id, %text)
{
// Have the editor align all selected objects by the selected bounds.

View file

@ -233,8 +233,32 @@ function EditorGui::buildMenus(%this)
Item[15] = "Manage Bookmarks..." TAB "Ctrl-Shift B" TAB "EditorGui.toggleCameraBookmarkWindow();";
item[16] = "Jump to Bookmark" TAB %this.cameraBookmarksMenu;
};
%this.menuBar.insert(%cameraMenu);
// Snap Menu
%snapToMenu = new PopupMenu()
{
superClass = "MenuBuilder";
class = "EditorSnapToMenu";
barTitle = "SnapTo";
// The onSelectItem() callback for this menu re-purposes the command field
// as the MenuBuilder version is not used.
item[0] = "Snap 2nd Object To 1st X" TAB "" TAB "X";
item[1] = "Snap 2nd Object To 1st X+" TAB "" TAB "X+";
item[2] = "Snap 2nd Object To 1st X-" TAB "" TAB "X-";
item[3] = "Snap 2nd Object To 1st Y" TAB "" TAB "Y";
item[4] = "Snap 2nd Object to 1st Y+" TAB "" TAB "Y+";
item[5] = "Snap 2nd Object to 1st Y-" TAB "" TAB "Y-";
item[6] = "Snap 2nd Object To 1st Z" TAB "" TAB "Z";
item[7] = "Snap 2nd Object to 1st Z+" TAB "" TAB "Z+";
item[8] = "Snap 2nd Object to 1st Z-" TAB "" TAB "Z-";
};
%this.menuBar.insert(%snapToMenu);
// Editors Menu
%editorsMenu = new PopupMenu()
{