meta-next
Version:
61 lines (51 loc) • 1.26 kB
JavaScript
import Engine from "../Engine"
import Renderer from "./Renderer"
class SpriteRenderer extends Renderer
{
constructor() {
super()
}
render(entity)
{
if(entity.needUpdateOffset) {
this.updateMesh(entity)
}
if(entity.needUpdateTransform) {
entity.updateTransform()
}
super.render(entity.drawCommand)
if(entity.children) {
const children = entity.children
for(let n = 0; n < children.length; n++) {
this.render(children[n])
}
}
}
updateMesh(entity)
{
entity.updateMesh()
const pivot = entity._pivot
const sizeX = entity._size.x
const sizeY = entity._size.y
const offsetX = -sizeX * pivot.x
const offsetY = -sizeY * pivot.y
tempBuffer[0] = sizeX + offsetX
tempBuffer[1] = sizeY + offsetY
tempBuffer[4] = offsetX
tempBuffer[5] = sizeY + offsetY
tempBuffer[8] = offsetX
tempBuffer[9] = offsetY
tempBuffer[12] = sizeX + offsetX
tempBuffer[13] = offsetY
entity.drawCommand.mesh.upload(tempBuffer)
entity.needUpdateOffset = false
}
}
const tempBuffer = new Float32Array([
1.0, 1.0, 1.0, 1.0,
0.0, 1.0, 0.0, 1.0,
0.0, 0.0, 0.0, 0.0,
1.0, 0.0, 1.0, 0.0
])
const instance = new SpriteRenderer()
export default instance