UNPKG

playcanvas

Version:

Open-source WebGL/WebGPU 3D engine for the web

55 lines (54 loc) 1.45 kB
import { ComponentSystem } from "../system.js"; import { ButtonComponent } from "./component.js"; import { ButtonComponentData } from "./data.js"; const _schema = [ "enabled", "active", { name: "hitPadding", type: "vec4" }, "transitionMode", { name: "hoverTint", type: "rgba" }, { name: "pressedTint", type: "rgba" }, { name: "inactiveTint", type: "rgba" }, "fadeDuration", "hoverSpriteAsset", "hoverSpriteFrame", "pressedSpriteAsset", "pressedSpriteFrame", "inactiveSpriteAsset", "inactiveSpriteFrame" ]; class ButtonComponentSystem extends ComponentSystem { constructor(app) { super(app); this.id = "button"; this.ComponentType = ButtonComponent; this.DataType = ButtonComponentData; this.schema = _schema; this.on("beforeremove", this._onRemoveComponent, this); this.app.systems.on("update", this.onUpdate, this); } initializeComponentData(component, data, properties) { component.imageEntity = data.imageEntity; super.initializeComponentData(component, data, _schema); } onUpdate(dt) { const components = this.store; for (const id in components) { const entity = components[id].entity; const component = entity.button; if (component.enabled && entity.enabled) { component.onUpdate(); } } } _onRemoveComponent(entity, component) { component.onRemove(); } destroy() { super.destroy(); this.app.systems.off("update", this.onUpdate, this); } } export { ButtonComponentSystem };