UNPKG

meta-next

Version:

61 lines (51 loc) 1.26 kB
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