From d5ce013d236433ba6dfd8c369a54c4669dd2048e Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 25 Feb 2021 11:20:53 +0100 Subject: [PATCH] Desig Space Performance Improvement by calculating node proximity only when needed. --- .../UI/Spaces/Floating-Space/FloatingLayer.js | 12 +++++++++++- .../Superalgos/UI/Spaces/Floating-Space/UiObject.js | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Projects/Superalgos/UI/Spaces/Floating-Space/FloatingLayer.js b/Projects/Superalgos/UI/Spaces/Floating-Space/FloatingLayer.js index 1d44df68b..0bdfa913f 100644 --- a/Projects/Superalgos/UI/Spaces/Floating-Space/FloatingLayer.js +++ b/Projects/Superalgos/UI/Spaces/Floating-Space/FloatingLayer.js @@ -20,6 +20,7 @@ function newFloatingLayer() { let thisObject = { + isProximityPhysicsNeeded: false, addFloatingObject: addFloatingObject, removeFloatingObject: removeFloatingObject, getFloatingObject: getFloatingObject, @@ -283,12 +284,21 @@ function newFloatingLayer() { */ try { + + thisObject.isProximityPhysicsNeeded = false // this might be turned on bu the visiblePhysics downstream if needed. + makeVisible() makeInvisible() visiblePhysics() enginePhysics() - proximityPhysics() + if (thisObject.isProximityPhysicsNeeded === true) { + /* + This is an expensive calculation, so we are going to do it only when we need to. + */ + proximityPhysics() + } + function visiblePhysics() { for (let i = 0; i < visibleFloatingObjects.length; i++) { let floatingObject = visibleFloatingObjects[i] diff --git a/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js b/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js index cd9b6f6be..7d5910a89 100644 --- a/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js +++ b/Projects/Superalgos/UI/Spaces/Floating-Space/UiObject.js @@ -444,6 +444,8 @@ function newUiObject() { if (rightDragging !== true) { return } if (thisObject.payload.chainParent !== undefined) { return } + UI.projects.superalgos.spaces.floatingSpace.floatingLayer.isProximityPhysicsNeeded = true + let nearbyFloatingObjects = thisObject.payload.floatingObject.nearbyFloatingObjects let compatibleTypes @@ -586,6 +588,8 @@ function newUiObject() { if (rightDragging !== true) { return } if (thisObject.payload.referenceParent !== undefined) { return } + UI.projects.superalgos.spaces.floatingSpace.floatingLayer.isProximityPhysicsNeeded = true + let nearbyFloatingObjects = thisObject.payload.floatingObject.nearbyFloatingObjects let compatibleTypes