UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 1.76 kB
import{Channel3d as t}from"../../../platform/audio/channel3d.js";import{Entity as e}from"../../entity.js";import{Component as i}from"../component.js";import{ComponentSystem as o}from"../system.js";import{AudioSourceComponent as s}from"./component.js";import{AudioSourceComponentData as n}from"./data.js";const a=["enabled","assets","volume","pitch","loop","activate","3d","minDistance","maxDistance","rollOffFactor","distanceModel","sources","currentSource","channel"];class r extends o{constructor(t){super(t),this.id="audiosource",this.ComponentType=s,this.DataType=n,this.schema=a,this.manager=t.soundManager,this.initialized=!1,this.app.systems.on("initialize",this.onInitialize,this),this.app.systems.on("update",this.onUpdate,this),this.on("remove",this.onRemove,this)}initializeComponentData(t,e,i){i=["activate","volume","pitch","loop","3d","minDistance","maxDistance","rollOffFactor","distanceModel","enabled","assets"],super.initializeComponentData(t,e,i),t.paused=!(t.enabled&&t.activate)}onInitialize(t){t.audiosource&&t.enabled&&t.audiosource.enabled&&t.audiosource.activate&&t.audiosource.play(t.audiosource.currentSource);const i=t._children;for(let t=0,o=i.length;t<o;t++)i[t]instanceof e&&this.onInitialize(i[t]);this.initialized=!0}onUpdate(e){const i=this.store;for(const e in i)if(i.hasOwnProperty(e)){const o=i[e],s=o.entity,n=o.data;if(n.enabled&&s.enabled&&n.channel instanceof t){const t=s.getPosition();n.channel.setPosition(t)}}}onRemove(t,e){e.channel&&(e.channel.stop(),e.channel=null)}setVolume(t){this.manager.setVolume(t)}destroy(){super.destroy(),this.app.systems.off("initialize",this.onInitialize,this),this.app.systems.off("update",this.onUpdate,this)}}i._buildAccessors(s.prototype,a);export{r as AudioSourceComponentSystem};