UNPKG

the-world-engine

Version:

three.js based, unity like game engine for browser

144 lines (137 loc) 3.29 kB
import { GlobalConfig } from "../../../GlobalConfig"; import { Component } from "../../hierarchy_object/Component"; import { CssSpriteAtlasRenderer } from "../render/CssSpriteAtlasRenderer"; import { ImageRenderingMode } from "../render/CssSpriteRenderer"; import { CssFilter } from "../render/filter/CssFilter"; import { ZaxisSorter } from "../render/ZaxisSorter"; export class SpriteAtlasInstance { Qe; Ve; Zo; Tn; $o; ga; ca; constructor(t, e, i, r, s, n, o) { this.Qe = t; this.Ve = e; this.Zo = i; this.Tn = r; this.$o = s; this.ga = n; this.ca = o; } get width() { return this.Qe; } get height() { return this.Ve; } get atlasIndex() { return this.Zo; } get position() { return this.Tn; } get rotation() { return this.$o; } get scale() { return this.ga; } get centerOffset() { return this.ca; } } export class SpriteAtlasStaticInstancer extends Component { va=GlobalConfig.defaultSpriteSrc; Sa=false; Ca=0; xa=1; Ra=1; 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(CssSpriteAtlasRenderer, (t => { t.imageWidth = r.width; t.imageHeight = r.height; t.imageIndex = r.atlasIndex; t.asyncSetImageFromPath(this.va, this.xa, this.Ra); t.pointerEvents = this.on; if (r.centerOffset) t.centerOffset = r.centerOffset; 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(); } setSliceCount(t, e) { this.xa = t; this.Ra = e; } get imageSource() { return this.va; } set imageSource(t) { this.va = t; } get columnCount() { return this.xa; } get rowCount() { return this.Ra; } 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; } }