@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
39 lines (34 loc) • 980 B
text/typescript
import {NodeEvent} from '../../../poly/NodeEvent';
import {NodeBaseState} from './Base';
import {Poly} from '../../../Poly';
import {NodeContext} from '../../../poly/NodeContext';
export class NodeErrorState<NC extends NodeContext> extends NodeBaseState<NC> {
private _message: string | undefined;
set(message: string | undefined) {
if (this._message != message) {
if (message) {
Poly.error(`[${this.node.path()}] error: '${message}' (from '${this._message}')`);
} else {
Poly.warn(`[${this.node.path()}] clear error`);
}
this._message = message;
this.onUpdate();
}
}
message() {
return this._message;
}
clear() {
this.set(undefined);
}
active(): boolean {
return this._message != null;
}
protected onUpdate() {
if (this._message != null) {
// console.warn("new error", message, this.self.path())
this.node._setContainer(null as any /*, `from error '${this._message}'`*/);
}
this.node.emit(NodeEvent.ERROR_UPDATED);
}
}