import { Version } from '@uino/base-thing';
import { Utils } from '../common/Utils';
import { SceneObjectParser } from './SceneObjectParser';
const __ = {
private: Symbol('private'),
}
/**
* @class SceneLayoutParser
* The scene layout parser.
* @memberof THING
*/
class SceneLayoutParser {
/**
* The parser of objects scene in layout mode.
*/
constructor() {
this[__.private] = {};
let _private = this[__.private];
_private.version = new Version('1.0.0');
_private.objectParser = new SceneObjectParser();
}
// #region Private Functions
_onUpdateCreateOptions(owner, classType, options) {
let extras = options['extras'] || options['external'];
if (!extras) {
return;
}
let parentId = extras['parent'];
if (Utils.isNull(parentId)) {
return;
}
// Find parent object by UUID
let parent = owner.find(`[uuid=${parentId}]`, { includeSelf: true });
if (parent) {
options['parent'] = parent;
}
}
// #endregion
clear() {
let _private = this[__.private];
_private.objectParser.clear();
}
parse(data, load, progress, error, options) {
let _private = this[__.private];
options['onUpdateCreateOptions'] = options['onUpdateCreateOptions'] || this._onUpdateCreateOptions;
_private.objectParser.parse(data, load, progress, error, options);
}
getVersion() {
let _private = this[__.private];
return _private.version;
}
}
export { SceneLayoutParser }