move undo edits after creates/deletes

This commit is contained in:
unknown 2019-04-08 16:05:13 -07:00
parent 78256fb5bb
commit d63c733b85

View file

@ -2129,9 +2129,32 @@ var DELETED_ENTITY_MAP = {};
function applyEntityProperties(data) { function applyEntityProperties(data) {
var editEntities = data.editEntities; var editEntities = data.editEntities;
var createEntities = data.createEntities;
var deleteEntities = data.deleteEntities;
var selectedEntityIDs = []; var selectedEntityIDs = [];
var selectEdits = data.createEntities.length === 0 || !data.selectCreated; var selectEdits = createEntities.length === 0 || !data.selectCreated;
var i, entityID, entityProperties; 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++) { for (i = 0; i < editEntities.length; i++) {
entityID = editEntities[i].entityID; entityID = editEntities[i].entityID;
if (DELETED_ENTITY_MAP[entityID] !== undefined) { if (DELETED_ENTITY_MAP[entityID] !== undefined) {
@ -2145,27 +2168,6 @@ function applyEntityProperties(data) {
selectedEntityIDs.push(entityID); 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 // 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. // our selections, causing the edit widgets to display.
@ -2523,18 +2525,18 @@ var PropertiesTool = function (opts) {
propertyRanges: propertyRanges, propertyRanges: propertyRanges,
}); });
} else if (data.type === "materialTargetRequest") { } else if (data.type === "materialTargetRequest") {
var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]); var properties = Entities.getEntityProperties(data.entityID, ["type", "parentID"]);
var parentModel = properties.parentID !== Uuid.NULL && var parentModel = properties.parentID !== Uuid.NULL &&
Entities.getEntityProperties(properties.parentID, ["type"]).type === "Model"; Entities.getEntityProperties(properties.parentID, ["type"]).type === "Model";
var parentModelData; var parentModelData;
if (properties.type === "Material" && parentModel) { if (properties.type === "Material" && parentModel) {
parentModelData = Graphics.getModel(properties.parentID); parentModelData = Graphics.getModel(properties.parentID);
} }
emitScriptEvent({ emitScriptEvent({
type: 'materialTargetReply', type: 'materialTargetReply',
materialTargetData: parentModelData, materialTargetData: parentModelData,
}); });
} }
}; };
HMD.displayModeChanged.connect(function() { HMD.displayModeChanged.connect(function() {