Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
! function(t, e) { | |
"object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("three")) : "function" == typeof define && define.amd ? define(["three"], e) : ((t = "undefined" != typeof globalThis ? globalThis : t || self).THREE = t.THREE || {}, t.THREE.TextTexture = e(t.THREE)) | |
}(this, (function(t) { | |
"use strict"; | |
let e = class extends t.Texture { | |
constructor() { | |
super(document.createElement("canvas")); | |
let e = null, | |
i = () => e || (e = this.createDrawable()), | |
n = () => i().width, | |
o = () => i().height, | |
r = !0, | |
l = 1, | |
a = () => t.MathUtils.ceilPowerOfTwo(n() * l), | |
s = () => t.MathUtils.ceilPowerOfTwo(o() * l), | |
h = t => { | |
if (l !== t) { | |
let e = a(), | |
i = s(); | |
l = t; | |
let n = a(), | |
o = s(); | |
n === e && o === i || (r = !0) | |
} | |
}, | |
c = (() => { | |
let e = new t.Vector3, | |
i = new t.Vector2, | |
r = new t.Vector3, | |
l = new t.Vector3, | |
a = new t.Vector2; | |
return (s, h, c) => { | |
if (a.set(n(), o()), a.x && a.y) { | |
s.getWorldPosition(r), c.getWorldPosition(e); | |
let n = r.distanceTo(e); | |
if (c.isPerspectiveCamera && (n *= 2 * Math.tan(t.MathUtils.degToRad(c.fov) / 2)), (c.isPerspectiveCamera || c.isOrthographicCamera) && (n /= c.zoom), n) { | |
var f, d; | |
s.getWorldScale(l); | |
let t = null !== (f = null === (d = h.capabilities) || void 0 === d ? void 0 : d.maxTextureSize) && void 0 !== f ? f : 1 / 0; | |
return h.getDrawingBufferSize(i), Math.min(Math.max(l.x / n * (i.x / a.x), l.y / n * (i.y / a.y)), t / a.x, t / a.y) | |
} | |
} | |
return 0 | |
} | |
})(); | |
Object.defineProperties(this, { | |
width: { | |
get: n | |
}, | |
height: { | |
get: o | |
}, | |
pixelRatio: { | |
get: () => l, | |
set: h | |
}, | |
needsRedraw: { | |
set(t) { | |
t && (r = !0, e = null) | |
} | |
} | |
}), Object.assign(this, { | |
redraw() { | |
if (r) { | |
let t = this.image, | |
e = t.getContext("2d"); | |
e.clearRect(0, 0, t.width, t.height), t.width = a(), t.height = s(), t.width && t.height ? (e.save(), e.scale(t.width / n(), t.height / o()), ((...t) => { | |
i().draw(...t) | |
})(e), e.restore()) : t.width = t.height = 1, r = !1, this.needsUpdate = !0 | |
} | |
}, | |
setOptimalPixelRatio(...t) { | |
h(c(...t)) | |
} | |
}) | |
} | |
}; | |
e.prototype.isDynamicTexture = !0; | |
let i = class extends e { | |
constructor({ | |
alignment: t = "center", | |
backgroundColor: e = "rgba(0,0,0,0)", | |
color: i = "#fff", | |
fontFamily: n = "sans-serif", | |
fontSize: o = 16, | |
fontStyle: r = "normal", | |
fontVariant: l = "normal", | |
fontWeight: a = "normal", | |
lineGap: s = 1 / 4, | |
padding: h = .5, | |
strokeColor: c = "#fff", | |
strokeWidth: f = 0, | |
text: d = "" | |
} = {}) { | |
super(), Object.entries({ | |
alignment: t, | |
backgroundColor: e, | |
color: i, | |
fontFamily: n, | |
fontSize: o, | |
fontStyle: r, | |
fontVariant: l, | |
fontWeight: a, | |
lineGap: s, | |
padding: h, | |
strokeColor: c, | |
strokeWidth: f, | |
text: d | |
}).forEach((([t, e]) => { | |
Object.defineProperty(this, t, { | |
get: () => e, | |
set(t) { | |
e !== t && (e = t, this.needsRedraw = !0) | |
} | |
}) | |
})) | |
} | |
get lines() { | |
let { | |
text: t | |
} = this; | |
return t ? t.split("\n") : [] | |
} | |
get font() { | |
return function(t, e, i, n, o) { | |
let r = document.createElement("span"); | |
return r.style.font = "1px serif", r.style.fontFamily = t, r.style.fontSize = "".concat(e, "px"), r.style.fontStyle = i, r.style.fontVariant = n, r.style.fontWeight = o, r.style.font | |
}(this.fontFamily, this.fontSize, this.fontStyle, this.fontVariant, this.fontWeight) | |
} | |
checkFontFace() { | |
try { | |
let { | |
font: t | |
} = this; | |
return document.fonts.check(t) | |
} catch (e) {} | |
return !0 | |
} | |
async loadFontFace() { | |
try { | |
let { | |
font: t | |
} = this; | |
await document.fonts.load(t) | |
} catch (e) {} | |
} | |
createDrawable() { | |
let { | |
alignment: t, | |
backgroundColor: e, | |
color: i, | |
font: n, | |
fontSize: o, | |
lineGap: r, | |
lines: l, | |
padding: a, | |
strokeColor: s, | |
strokeWidth: h | |
} = this; | |
a *= o, r *= o, h *= o; | |
let c = l.length, | |
f = o + r, | |
d = c ? (() => { | |
let t = document.createElement("canvas").getContext("2d"); | |
return t.font = n, Math.max(...l.map((e => t.measureText(e).width))) | |
})() : 0, | |
g = a + h / 2, | |
u = d + 2 * g; | |
return { | |
width: u, | |
height: (c ? o + f * (c - 1) : 0) + 2 * g, | |
draw(r) { | |
let a; | |
r.fillStyle = e, r.fillRect(0, 0, r.canvas.width, r.canvas.height); | |
let c = g + o / 2; | |
Object.assign(r, { | |
fillStyle: i, | |
font: n, | |
lineWidth: h, | |
miterLimit: 1, | |
strokeStyle: s, | |
textAlign: (() => { | |
switch (t) { | |
case "left": | |
return a = g, "left"; | |
case "right": | |
return a = u - g, "right" | |
} | |
return a = u / 2, "center" | |
})(), | |
textBaseline: "middle" | |
}), l.forEach((t => { | |
// r.lineWidth=60 | |
// r.shadowColor="white" | |
// r.shadowBlur=2 | |
// r.fillStyle = "white" | |
// r.fillText(t, a, c); | |
r.lineWidth=5 | |
r.shadowColor="black" | |
r.shadowBlur=0 | |
r.fillStyle = "black" | |
r.fillText(t, a, c); | |
h && r.strokeText(t, a, c), c += f | |
})) | |
} | |
} | |
} | |
}; | |
return i.prototype.isTextTexture = !0, i | |
})); |