From d63c733b853c6ddca74d141f7274f309ac0b7b69 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 8 Apr 2019 16:05:13 -0700 Subject: [PATCH] move undo edits after creates/deletes --- scripts/system/edit.js | 70 ++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 11fc88dcbd..479da62e49 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -2129,9 +2129,32 @@ var DELETED_ENTITY_MAP = {}; function applyEntityProperties(data) { var editEntities = data.editEntities; + var createEntities = data.createEntities; + var deleteEntities = data.deleteEntities; var selectedEntityIDs = []; - var selectEdits = data.createEntities.length === 0 || !data.selectCreated; + var selectEdits = createEntities.length === 0 || !data.selectCreated; var i, entityID, entityProperties; + for (i = 0; i < createEntities.length; i++) { + entityID = createEntities[i].entityID; + entityProperties = createEntities[i].properties; + var newEntityID = Entities.addEntity(entityProperties); + recursiveAdd(newEntityID, createEntities[i]); + DELETED_ENTITY_MAP[entityID] = newEntityID; + if (data.selectCreated) { + selectedEntityIDs.push(newEntityID); + } + } + for (i = 0; i < deleteEntities.length; i++) { + entityID = deleteEntities[i].entityID; + if (DELETED_ENTITY_MAP[entityID] !== undefined) { + entityID = DELETED_ENTITY_MAP[entityID]; + } + Entities.deleteEntity(entityID); + var index = selectedEntityIDs.indexOf(entityID); + if (index >= 0) { + selectedEntityIDs.splice(index, 1); + } + } for (i = 0; i < editEntities.length; i++) { entityID = editEntities[i].entityID; if (DELETED_ENTITY_MAP[entityID] !== undefined) { @@ -2145,27 +2168,6 @@ function applyEntityProperties(data) { selectedEntityIDs.push(entityID); } } - for (i = 0; i < data.createEntities.length; i++) { - entityID = data.createEntities[i].entityID; - entityProperties = data.createEntities[i].properties; - var newEntityID = Entities.addEntity(entityProperties); - recursiveAdd(newEntityID, data.createEntities[i]); - DELETED_ENTITY_MAP[entityID] = newEntityID; - if (data.selectCreated) { - selectedEntityIDs.push(newEntityID); - } - } - for (i = 0; i < data.deleteEntities.length; i++) { - entityID = data.deleteEntities[i].entityID; - if (DELETED_ENTITY_MAP[entityID] !== undefined) { - entityID = DELETED_ENTITY_MAP[entityID]; - } - Entities.deleteEntity(entityID); - var index = selectedEntityIDs.indexOf(entityID); - if (index >= 0) { - selectedEntityIDs.splice(index, 1); - } - } // We might be getting an undo while edit.js is disabled. If that is the case, don't set // our selections, causing the edit widgets to display. @@ -2523,18 +2525,18 @@ var PropertiesTool = function (opts) { propertyRanges: propertyRanges, }); } else if (data.type === "materialTargetRequest") { - var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); - var parentModel = properties.parentID !== Uuid.NULL && - Entities.getEntityProperties(properties.parentID, ["type"]).type === "Model"; - var parentModelData; - if (properties.type === "Material" && parentModel) { - parentModelData = Graphics.getModel(properties.parentID); - } - emitScriptEvent({ - type: 'materialTargetReply', - materialTargetData: parentModelData, - }); - } + var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); + var parentModel = properties.parentID !== Uuid.NULL && + Entities.getEntityProperties(properties.parentID, ["type"]).type === "Model"; + var parentModelData; + if (properties.type === "Material" && parentModel) { + parentModelData = Graphics.getModel(properties.parentID); + } + emitScriptEvent({ + type: 'materialTargetReply', + materialTargetData: parentModelData, + }); + } }; HMD.displayModeChanged.connect(function() {