@babylonjs/core
Version:
Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.
50 lines • 1.47 kB
JavaScript
const MergedStore = {};
const DecoratorInitialStore = {};
/** @internal */
export function GetDirectStore(target) {
const classKey = target.getClassName();
if (!DecoratorInitialStore[classKey]) {
DecoratorInitialStore[classKey] = {};
}
return DecoratorInitialStore[classKey];
}
/**
* @returns the list of properties flagged as serializable
* @param target host object
*/
export function GetMergedStore(target) {
const classKey = target.getClassName();
if (MergedStore[classKey]) {
return MergedStore[classKey];
}
MergedStore[classKey] = {};
const store = MergedStore[classKey];
let currentTarget = target;
let currentKey = classKey;
while (currentKey) {
const initialStore = DecoratorInitialStore[currentKey];
for (const property in initialStore) {
store[property] = initialStore[property];
}
let parent;
let done = false;
do {
parent = Object.getPrototypeOf(currentTarget);
if (!parent.getClassName) {
done = true;
break;
}
if (parent.getClassName() !== currentKey) {
break;
}
currentTarget = parent;
} while (parent);
if (done) {
break;
}
currentKey = parent.getClassName();
currentTarget = parent;
}
return store;
}
//# sourceMappingURL=decorators.functions.js.map