From c174ae57b10d8f65936644c990b7eadb7ebfb909 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 10 Mar 2020 11:28:32 +0100 Subject: [PATCH] Performance Improvement at Designer --- FloatingSpace/FloatingLayer.js | 22 ++++++++++++++++++---- FloatingSpace/FloatingObject.js | 17 +++-------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/FloatingSpace/FloatingLayer.js b/FloatingSpace/FloatingLayer.js index 621404fbb..066533c25 100644 --- a/FloatingSpace/FloatingLayer.js +++ b/FloatingSpace/FloatingLayer.js @@ -200,10 +200,24 @@ function newFloatingLayer () { } } + function collapsePhysics (thisObject) { + let parent = thisObject.payload.chainParent + if (parent === undefined) { return } + if (parent.payload === undefined) { return } + if (parent.payload.floatingObject === undefined) { return } + + thisObject.isParentCollapsed = parent.payload.floatingObject.isCollapsed + if (thisObject.collapsedManually === false) { + thisObject.isCollapsed = parent.payload.floatingObject.isCollapsed + } + } + function makeVisible () { for (let i = 0; i < invisibleFloatingObjects.length; i++) { let floatingObject = invisibleFloatingObjects[i] + collapsePhysics(floatingObject) + if (floatingObject.isFrozen === false && floatingObject.isParentCollapsed === false) { visibleFloatingObjects.push(floatingObject) invisibleFloatingObjects.splice(i, 1) // Delete item from array. @@ -217,6 +231,8 @@ function newFloatingLayer () { for (let i = 0; i < visibleFloatingObjects.length; i++) { let floatingObject = visibleFloatingObjects[i] + collapsePhysics(floatingObject) + if (floatingObject.isFrozen === true || floatingObject.isParentCollapsed === true) { invisibleFloatingObjects.push(floatingObject) visibleFloatingObjects.splice(i, 1) // Delete item from array. @@ -256,10 +272,8 @@ function newFloatingLayer () { /* This function makes all the calculations to apply phisycs on all visible floatingObjects in this layer. */ try { - for (let i = 0; i < invisibleFloatingObjects.length; i++) { - let floatingObject = invisibleFloatingObjects[i] - floatingObject.physics() - } + DEBUG.variable1 = 'Invisible Floating Objets: ' + invisibleFloatingObjects.length + DEBUG.variable2 = 'Visible Floating Objets: ' + visibleFloatingObjects.length for (let i = 0; i < visibleFloatingObjects.length; i++) { let floatingObject = visibleFloatingObjects[i] diff --git a/FloatingSpace/FloatingObject.js b/FloatingSpace/FloatingObject.js index 6e9ce5833..15f4dd0f3 100644 --- a/FloatingSpace/FloatingObject.js +++ b/FloatingSpace/FloatingObject.js @@ -219,12 +219,13 @@ function newFloatingObject () { } function physics () { - collapsePhysics() frozenPhysics() /* From here on, only if they are not too far. */ if (canvas.floatingSpace.isItFar(thisObject.payload)) { return } thisObjectPhysics() - thisObject.payload.uiObject.physics() + if (thisObject.payload.uiObject !== undefined) { + thisObject.payload.uiObject.physics() + } positionContraintsPhysics() } @@ -241,18 +242,6 @@ function newFloatingObject () { } } - function collapsePhysics () { - let parent = thisObject.payload.chainParent - if (parent === undefined) { return } - if (parent.payload === undefined) { return } - if (parent.payload.floatingObject === undefined) { return } - - thisObject.isParentCollapsed = parent.payload.floatingObject.isCollapsed - if (thisObject.collapsedManually === false) { - thisObject.isCollapsed = parent.payload.floatingObject.isCollapsed - } - } - function positionContraintsPhysics () { if (thisObject.angleToParent !== ANGLE_TO_PARENT.NOT_FIXED && thisObject.isOnFocus !== true) { let parent = thisObject.payload.chainParent