From 4ae3c6749369a0a17514c7df2d55433af6e2952e Mon Sep 17 00:00:00 2001 From: milad Date: Fri, 15 Nov 2019 11:45:05 -0800 Subject: [PATCH 1/4] added Entities.isLoaded --- scripts/system/create/edit.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index a036cf384d..36166de726 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -570,6 +570,25 @@ var toolBar = (function () { } entityID = Entities.addEntity(properties); + + // Make sure the entity is loaded before we try to figure out + // it's dimensions. + var MAX_LOADED_CHECKS = 10; + var LOADED_CHECK_INTERVAL = 200; + var isLoadedCheckCount = 0; + var entityIsLoadedCheck = function() { + isLoadedCheckCount++; + if (isLoadedCheckCount === MAX_LOADED_CHECKS) { + return; + } + if (EntityisLoaded(entityID)) { + return; + } else { + Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); + } + } + Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); + SelectionManager.addEntity(entityID, false, this); SelectionManager.saveProperties(); pushCommandForSelections([{ From 481e239a370cfff4b65870ced560e6a661348293 Mon Sep 17 00:00:00 2001 From: MiladNazeri Date: Fri, 15 Nov 2019 12:43:25 -0800 Subject: [PATCH 2/4] Update scripts/system/create/edit.js Co-Authored-By: Zach Fox --- scripts/system/create/edit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 36166de726..47246705f9 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -572,7 +572,7 @@ var toolBar = (function () { entityID = Entities.addEntity(properties); // Make sure the entity is loaded before we try to figure out - // it's dimensions. + // its dimensions. var MAX_LOADED_CHECKS = 10; var LOADED_CHECK_INTERVAL = 200; var isLoadedCheckCount = 0; From 87adae6c6fd8cf841a7763af7ddcdc3bde4ed9e7 Mon Sep 17 00:00:00 2001 From: milad Date: Fri, 15 Nov 2019 12:48:32 -0800 Subject: [PATCH 3/4] cr --- scripts/system/create/edit.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index 47246705f9..e56d59b234 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -578,14 +578,10 @@ var toolBar = (function () { var isLoadedCheckCount = 0; var entityIsLoadedCheck = function() { isLoadedCheckCount++; - if (isLoadedCheckCount === MAX_LOADED_CHECKS) { + if (isLoadedCheckCount === MAX_LOADED_CHECKS || Entity.isLoaded(entityID)) { return; } - if (EntityisLoaded(entityID)) { - return; - } else { - Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); - } + Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); } Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); From 2fc0f01928bf94bf1bd3dfafbd7b1b84c4d68ae9 Mon Sep 17 00:00:00 2001 From: milad Date: Fri, 15 Nov 2019 15:16:09 -0800 Subject: [PATCH 4/4] added natural dimensions after loading --- scripts/system/create/edit.js | 66 +++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index e56d59b234..828fd70e6f 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -569,16 +569,53 @@ var toolBar = (function () { } } + if (type === "Model") { + properties.visible = false; + } + entityID = Entities.addEntity(properties); + var dimensionsCheckCallback = function(){ + var POST_ADJUST_ENTITY_TYPES = ["Model"]; + if (POST_ADJUST_ENTITY_TYPES.indexOf(properties.type) !== -1) { + // Adjust position of entity per bounding box after it has been created and auto-resized. + var initialDimensions = Entities.getEntityProperties(entityID, ["dimensions"]).dimensions; + var DIMENSIONS_CHECK_INTERVAL = 200; + var MAX_DIMENSIONS_CHECKS = 10; + var dimensionsCheckCount = 0; + var dimensionsCheckFunction = function () { + dimensionsCheckCount++; + var properties = Entities.getEntityProperties(entityID, ["dimensions", "registrationPoint", "rotation"]); + if (!Vec3.equal(properties.dimensions, initialDimensions)) { + position = adjustPositionPerBoundingBox(position, direction, properties.registrationPoint, + properties.dimensions, properties.rotation); + position = grid.snapToSurface(grid.snapToGrid(position, false, properties.dimensions), + properties.dimensions); + Entities.editEntity(entityID, { + position: position + }); + selectionManager._update(false, this); + } else if (dimensionsCheckCount < MAX_DIMENSIONS_CHECKS) { + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); + } + }; + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); + } + } // Make sure the entity is loaded before we try to figure out // its dimensions. var MAX_LOADED_CHECKS = 10; - var LOADED_CHECK_INTERVAL = 200; + var LOADED_CHECK_INTERVAL = 100; var isLoadedCheckCount = 0; var entityIsLoadedCheck = function() { isLoadedCheckCount++; - if (isLoadedCheckCount === MAX_LOADED_CHECKS || Entity.isLoaded(entityID)) { + if (isLoadedCheckCount === MAX_LOADED_CHECKS || Entities.isLoaded(entityID)) { + var naturalDimensions = Entities.getEntityProperties(entityID, "naturalDimensions").naturalDimensions + Entities.editEntity(entityID, { + visible: true, + dimensions: naturalDimensions + }) + dimensionsCheckCallback(); return; } Script.setTimeout(entityIsLoadedCheck, LOADED_CHECK_INTERVAL); @@ -592,31 +629,6 @@ var toolBar = (function () { properties: properties }], [], true); - var POST_ADJUST_ENTITY_TYPES = ["Model"]; - if (POST_ADJUST_ENTITY_TYPES.indexOf(properties.type) !== -1) { - // Adjust position of entity per bounding box after it has been created and auto-resized. - var initialDimensions = Entities.getEntityProperties(entityID, ["dimensions"]).dimensions; - var DIMENSIONS_CHECK_INTERVAL = 200; - var MAX_DIMENSIONS_CHECKS = 10; - var dimensionsCheckCount = 0; - var dimensionsCheckFunction = function () { - dimensionsCheckCount++; - var properties = Entities.getEntityProperties(entityID, ["dimensions", "registrationPoint", "rotation"]); - if (!Vec3.equal(properties.dimensions, initialDimensions)) { - position = adjustPositionPerBoundingBox(position, direction, properties.registrationPoint, - properties.dimensions, properties.rotation); - position = grid.snapToSurface(grid.snapToGrid(position, false, properties.dimensions), - properties.dimensions); - Entities.editEntity(entityID, { - position: position - }); - selectionManager._update(false, this); - } else if (dimensionsCheckCount < MAX_DIMENSIONS_CHECKS) { - Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); - } - }; - Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); - } } else { Window.notifyEditError("Can't create " + properties.type + ": " + properties.type + " would be out of bounds.");