|
@@ -7212,6 +7212,8 @@ var BABYLON;
|
|
this.callback = callback;
|
|
this.callback = callback;
|
|
this.mask = mask;
|
|
this.mask = mask;
|
|
this.scope = scope;
|
|
this.scope = scope;
|
|
|
|
+ /** @ignore */
|
|
|
|
+ this._willBeUnregistered = false;
|
|
/**
|
|
/**
|
|
* Gets or sets a property defining that the observer as to be unregistered after the next notification
|
|
* Gets or sets a property defining that the observer as to be unregistered after the next notification
|
|
*/
|
|
*/
|
|
@@ -7347,6 +7349,7 @@ var BABYLON;
|
|
Observable.prototype._deferUnregister = function (observer) {
|
|
Observable.prototype._deferUnregister = function (observer) {
|
|
var _this = this;
|
|
var _this = this;
|
|
observer.unregisterOnNextCall = false;
|
|
observer.unregisterOnNextCall = false;
|
|
|
|
+ observer._willBeUnregistered = true;
|
|
BABYLON.Tools.SetImmediate(function () {
|
|
BABYLON.Tools.SetImmediate(function () {
|
|
_this.remove(observer);
|
|
_this.remove(observer);
|
|
});
|
|
});
|
|
@@ -7373,6 +7376,9 @@ var BABYLON;
|
|
state.lastReturnValue = eventData;
|
|
state.lastReturnValue = eventData;
|
|
for (var _i = 0, _a = this._observers; _i < _a.length; _i++) {
|
|
for (var _i = 0, _a = this._observers; _i < _a.length; _i++) {
|
|
var obs = _a[_i];
|
|
var obs = _a[_i];
|
|
|
|
+ if (obs._willBeUnregistered) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
if (obs.mask & mask) {
|
|
if (obs.mask & mask) {
|
|
if (obs.scope) {
|
|
if (obs.scope) {
|
|
state.lastReturnValue = obs.callback.apply(obs.scope, [eventData, state]);
|
|
state.lastReturnValue = obs.callback.apply(obs.scope, [eventData, state]);
|
|
@@ -7422,6 +7428,9 @@ var BABYLON;
|
|
if (state.skipNextObservers) {
|
|
if (state.skipNextObservers) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+ if (obs._willBeUnregistered) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
if (obs.mask & mask) {
|
|
if (obs.mask & mask) {
|
|
if (obs.scope) {
|
|
if (obs.scope) {
|
|
p = p.then(function (lastReturnedValue) {
|
|
p = p.then(function (lastReturnedValue) {
|