diff --git a/packages/core/src/hooks/use-self-entity.js b/packages/core/src/hooks/use-self-entity.js index 321ce68..3694be0 100644 --- a/packages/core/src/hooks/use-self-entity.js +++ b/packages/core/src/hooks/use-self-entity.js @@ -15,7 +15,16 @@ export default () => { if (!room) { return; } - setEntity(room.findEntity(selfEntity)); + const augmentSelfEntity = async (entity) => { + if (entity) { + await entity.addTraits({ + Controllable: {}, + Followed: {}, + }); + } + setEntity(entity); + }; + augmentSelfEntity(room.findEntity(selfEntity)); }, [room, selfEntity]); return entity; }; diff --git a/packages/core/src/traits/informed.js b/packages/core/src/traits/informed.js index 7b80d2d..d75f5ba 100644 --- a/packages/core/src/traits/informed.js +++ b/packages/core/src/traits/informed.js @@ -4,12 +4,14 @@ import {SenderSynchronizer} from '@avocado/s13n'; export default (latus) => class Informed extends Trait { - static type() { - return 'informed'; - } - #synchronizer = new SenderSynchronizer(latus); + static dependencies() { + return [ + 'Followed', + ]; + } + destroy() { this.#synchronizer.destroy(); } diff --git a/packages/universe/src/server/packets/join.js b/packages/universe/src/server/packets/join.js index d96eeee..6b89fb0 100644 --- a/packages/universe/src/server/packets/join.js +++ b/packages/universe/src/server/packets/join.js @@ -29,6 +29,10 @@ export default (latus) => class ServerJoin extends Join() { 'cha0s', 'index.entity.json', ), + traits: { + Controllable: {}, + Informed: {}, + }, }, ); player = universe.addPlayer({