WIP: Copy/paste locationing

This commit is contained in:
MatCat 2021-03-13 18:51:31 -08:00
parent 50320ff533
commit 187664e36a

View File

@ -365,6 +365,11 @@ function loadActiveContainer(Elements) {
let elementConnections = new Array(); let elementConnections = new Array();
let icelementConnections = new Array(); let icelementConnections = new Array();
let designatorMap = new Array(); let designatorMap = new Array();
let selectedObjects = new Array();
let lowestX = 9999999999;
let lowestY = 9999999999;
let highestX = 0;
let highestY = 0;
for (let a = 0; a < Elements.length; a++) { for (let a = 0; a < Elements.length; a++) {
if (Elements[a].IsIC) { if (Elements[a].IsIC) {
@ -379,10 +384,17 @@ function loadActiveContainer(Elements) {
let classRef = getElementInfo(Elements[a].Name).Class; let classRef = getElementInfo(Elements[a].Name).Class;
let newElement = new classRef(logicEngine.ActiveContainer,Elements[a],logicEngine,getElementInfo(Elements[a].Name).Args[0]); let newElement = new classRef(logicEngine.ActiveContainer,Elements[a],logicEngine,getElementInfo(Elements[a].Name).Args[0]);
if (newElement) selectedObjects.push(newElement);
logicEngine.ActiveContainer.AddElement(newElement); logicEngine.ActiveContainer.AddElement(newElement);
newElement.X -= logicEngine.Panning.OffsetX; newElement.X -= logicEngine.Panning.OffsetX;
newElement.Y -= logicEngine.Panning.OffsetY; newElement.Y -= logicEngine.Panning.OffsetY;
if (newElement.X < lowestX) lowestX = newElement.X;
if (newElement.X > highestX) highestX = newElement.X;
if (newElement.Y < lowestY) lowestY = newElement.Y;
if (newElement.Y > highestY) highestY = newElement.Y;
designatorMap.push({Old: Elements[a].Designator, New: newElement.Designator}); designatorMap.push({Old: Elements[a].Designator, New: newElement.Designator});
if (Elements[a].Outputs) { if (Elements[a].Outputs) {
@ -412,6 +424,23 @@ function loadActiveContainer(Elements) {
} }
} }
logicEngine.ActiveContainer.Selected = selectedObjects;
logicEngine.MovingElement = new Array(logicEngine.ActiveContainer.Selected.length);
for (let b = 0; b < logicEngine.ActiveContainer.Selected.length; b++) {
//logicEngine.ActiveContainer.Selected[b].X = (logicEngine.ActiveContainer.Selected[b].X - ((highestX-lowestX)/2)) + logicEngine.Mouse.x;
logicEngine.ActiveContainer.Selected[b].X = (logicEngine.ActiveContainer.Selected[b].X - lowestX) + logicEngine.Mouse.x - ((highestX-lowestX)/2);
//logicEngine.ActiveContainer.Selected[b].Y = (logicEngine.ActiveContainer.Selected[b].Y - ((highestY-lowestY)/2)) + logicEngine.Mouse.y;
logicEngine.ActiveContainer.Selected[b].Y = (logicEngine.ActiveContainer.Selected[b].Y - lowestY) + logicEngine.Mouse.y - ((highestY-lowestY)/2);
logicEngine.MovingElement[b] = {
StartX: logicEngine.ActiveContainer.Selected[b].X,
StartY: logicEngine.ActiveContainer.Selected[b].Y
};
logicEngine.MovingElementMouseStartX = logicEngine.Mouse.x;
logicEngine.MovingElementMouseStartY = logicEngine.Mouse.y;
}
logicEngine.MouseDown = true;
for (let a = 0; a < elementConnections.length; a++) { for (let a = 0; a < elementConnections.length; a++) {
let toElement = logicEngine.ActiveContainer.HasElement(getPastedElementDesignator(designatorMap,elementConnections[a].ToElement)); let toElement = logicEngine.ActiveContainer.HasElement(getPastedElementDesignator(designatorMap,elementConnections[a].ToElement));
if (toElement) { if (toElement) {