UNPKG

the-world-engine

Version:

three.js based, unity like game engine for browser

124 lines (118 loc) 2.91 kB
import { GlobalConfig } from "../../../GlobalConfig"; import { Component } from "../../hierarchy_object/Component"; import { CssSpriteRenderer, ImageRenderingMode } from "../render/CssSpriteRenderer"; import { CssFilter } from "../render/filter/CssFilter"; import { ZaxisSorter } from "../render/ZaxisSorter"; export class SpriteInstance { Qe; Ve; Tn; $o; ga; ca; constructor(t, e, i, r, s, n) { this.Qe = t; this.Ve = e; this.Tn = i; this.$o = r; this.ga = s; this.ca = n; } get width() { return this.Qe; } get height() { return this.Ve; } get position() { return this.Tn.clone(); } get rotation() { return this.$o?.clone(); } get scale() { return this.ga?.clone(); } get centerOffset() { return this.ca?.clone(); } } export class SpriteStaticInstancer extends Component { va=GlobalConfig.defaultSpriteSrc; Sa=false; Ca=0; on=true; an=.1; cn=ImageRenderingMode.Pixelated; Zs=new CssFilter; wa=null; Nh=false; start() { this.Nh = true; this.wa?.call(this); } setInstances(t) { if (!this.Nh) { this.wa = () => this.setInstances(t); return; } const e = this.engine.instantiater; for (let i = 0; i < t.length; ++i) { const r = t[i]; const s = e.buildGameObject(this.gameObject.name + "_instance_" + i, r.position, r.rotation, r.scale).withComponent(CssSpriteRenderer, (t => { t.asyncSetImageFromPath(this.va); t.imageWidth = r.width; t.imageHeight = r.height; if (r.centerOffset) t.centerOffset = r.centerOffset; t.pointerEvents = this.on; t.viewScale = this.an; t.imageRenderingMode = this.cn; t.filter.copy(this.Zs); })); if (this.Sa) { s.withComponent(ZaxisSorter, (t => t.offset = this.Ca)); } this.gameObject.addChildFromBuilder(s); } this.destroy(); } get imageSource() { return this.va; } set imageSource(t) { this.va = t; } get useZindexSorter() { return this.Sa; } set useZindexSorter(t) { this.Sa = t; } get zindexSortOffset() { return this.Ca; } set zindexSortOffset(t) { this.Ca = t; } get pointerEvents() { return this.on; } set pointerEvents(t) { this.on = t; } get viewScale() { return this.an; } set viewScale(t) { this.an = t; } get filter() { return this.Zs; } get imageRenderingMode() { return this.cn; } set imageRenderingMode(t) { this.cn = t; } }