feat: visible state packet
This commit is contained in:
parent
d353648f51
commit
226a71f065
12
packages/graphics/packets/trait-visible.packet.js
Normal file
12
packages/graphics/packets/trait-visible.packet.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
import {EntityPacket} from '@avocado/entity';
|
||||
|
||||
export class TraitVisiblePacket extends EntityPacket {
|
||||
|
||||
static get schema() {
|
||||
const schema = super.schema;
|
||||
schema.data.isVisible = 'bool';
|
||||
schema.data.opacity = 'uint8';
|
||||
return schema;
|
||||
}
|
||||
|
||||
}
|
|
@ -6,6 +6,7 @@ import {Rectangle, Vector} from '@avocado/math';
|
|||
|
||||
import {Container} from '../container';
|
||||
import {hasGraphics} from '../has-graphics';
|
||||
import {TraitVisiblePacket} from '../packets/trait-visible.packet';
|
||||
|
||||
const AUTO_ZINDEX = 1 << 16;
|
||||
|
||||
|
@ -70,6 +71,13 @@ export class Visible extends decorate(Trait) {
|
|||
}
|
||||
}
|
||||
|
||||
acceptPacket(packet) {
|
||||
if (packet instanceof TraitVisiblePacket) {
|
||||
this.entity.isVisible = packet.data.isVisible;
|
||||
this.entity.opacity = packet.data.opacity / 255;
|
||||
}
|
||||
}
|
||||
|
||||
get container() {
|
||||
return this._container;
|
||||
}
|
||||
|
@ -83,6 +91,18 @@ export class Visible extends decorate(Trait) {
|
|||
}
|
||||
}
|
||||
|
||||
packetsForUpdate() {
|
||||
const packets = [];
|
||||
if (this.isDirty) {
|
||||
packets.push(new TraitVisiblePacket({
|
||||
isVisible: this.entity.isVisible,
|
||||
opacity: Math.floor(this.entity.opacity * 255),
|
||||
}, this.entity));
|
||||
this.makeClean();
|
||||
}
|
||||
return packets;
|
||||
}
|
||||
|
||||
get rawVisibleScale() {
|
||||
return this._visibleScale;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user