refactor: Trait::initialize before hooks, actions, and listeners

This commit is contained in:
cha0s 2019-03-19 11:21:52 -05:00
parent 5e8805fde1
commit 3b50c134d0

View File

@ -88,6 +88,14 @@ export class Traits {
// Instantiate.
const {params, state} = json;
const instance = new Trait(this.entity_PRIVATE, params, state);
// Proxy properties.
const properties = enumerateProperties(Trait.prototype);
for (const key in properties) {
properties[key].instance = instance;
this.properties_PRIVATE[key] = properties[key];
}
// Let the Trait do its initialization.
instance.initialize();
// Attach listeners.
const listeners = instance.listeners();
for (const eventName in listeners) {
@ -110,14 +118,6 @@ export class Traits {
type: Trait.type(),
});
}
// Proxy properties.
const properties = enumerateProperties(Trait.prototype);
for (const key in properties) {
properties[key].instance = instance;
this.properties_PRIVATE[key] = properties[key];
}
// Let the Trait do its initialization.
instance.initialize();
// Add state.
this._setInstanceState(type, instance);
// Track trait.