UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

47 lines (33 loc) 1.23 kB
import { traverseMaterialTextures } from "../../../asset/loaders/material/traverseMaterialTextures.js"; import { UvContext } from "./UvContext.js"; import { max2 } from "../../../../core/math/max2.js"; export class MaterialDescriptor { constructor() { /** * * @type {THREE.Material|null} */ this.source_material = null; /** * * @type {UvContext[]} */ this.uvs = []; } build_uvs() { traverseMaterialTextures(this.source_material, (t, attachment) => { const uv_index = attachment.uv_index; let uv_context = this.uvs[uv_index]; if (uv_context === undefined) { uv_context = new UvContext(); uv_context.resolution.set(1, 1); this.uvs[uv_index] = uv_context; } const image = t.image; if (image !== undefined && image.width !== undefined) { uv_context.resolution.x = max2(uv_context.resolution.x, image.width); uv_context.resolution.y = max2(uv_context.resolution.y, image.height); } }); } }