diff --git a/.vs/AAWeb/v15/.suo b/.vs/AAWeb/v15/.suo index c4bfde9f9..e969f2dea 100644 Binary files a/.vs/AAWeb/v15/.suo and b/.vs/AAWeb/v15/.suo differ diff --git a/FloatingSpace/FloatingLayer.js b/FloatingSpace/FloatingLayer.js index b2194d8d5..b6cb5978f 100644 --- a/FloatingSpace/FloatingLayer.js +++ b/FloatingSpace/FloatingLayer.js @@ -238,7 +238,7 @@ function newFloatingLayer() { floatingObject.drawForeground(); } - /* Finally we check if any of the created FloatingObjects where enabled to run under the Physics Engine. */ + /* Now we check if any of the created FloatingObjects where enabled to run under the Physics Engine. */ for (let i = 0; i < innactiveFloatingObjects.length; i++) { @@ -294,6 +294,56 @@ function newFloatingLayer() { } } + + /* Finally we check if any of the currently visible floatingObjects has become invisible and must be removed from the Physics Engine. */ + + for (let i = 0; i < thisObject.floatingObjects.length; i++) { + + let floatingObject = thisObject.floatingObjects[i]; + + let payload = { + position: undefined, + visible: true + }; + + switch (floatingObject.type) { + + case "Profile Ball": { + + payload.visible = floatingObject.payload.profile.visible; + break; + } + case "Bubble": { + + payload.visible = floatingObject.payload.bubbles[floatingObject.payloadBubbleIndex].visible; + break; + } + default: { + + break; + } + } + + if (payload.visible === false) { + + if (INFO_LOG === true) { logger.write("[INFO] physicsLoop -> payload.visible = " + payload.visible); } + + innactiveFloatingObjects.push(floatingObject); + + if (INFO_LOG === true) { logger.write("[INFO] physicsLoop -> floatingObject.handle = " + floatingObject.handle); } + if (INFO_LOG === true) { logger.write("[INFO] physicsLoop -> floatingObject added to innactiveFloatingObjects"); } + if (INFO_LOG === true) { logger.write("[INFO] physicsLoop -> innactiveFloatingObjects.length = " + innactiveFloatingObjects.length); } + + thisObject.floatingObjects.splice(i, 1); // Delete item from array. + + if (INFO_LOG === true) { logger.write("[INFO] physicsLoop -> floatingObject.handle = " + floatingObject.handle); } + if (INFO_LOG === true) { logger.write("[INFO] physicsLoop -> floatingObject removed from thisObject.floatingObjects"); } + if (INFO_LOG === true) { logger.write("[INFO] physicsLoop -> thisObject.floatingObjects.length = " + thisObject.floatingObjects.length); } + + return; // Only one at the time. + + } + } } function gravityForce(floatingObject, payload) { diff --git a/server.js b/server.js index 626140bfd..f4b180fca 100644 --- a/server.js +++ b/server.js @@ -6,7 +6,7 @@ if (CONSOLE_LOG === true) { } -const DEBUG_MODE = true; // This forces the server to read Plotters from the local drive. +const DEBUG_MODE = false; // This forces the server to read Plotters from the local drive. if (CONSOLE_LOG === true && DEBUG_MODE === true) {