local assertArgs = include "assertArgs" local util = include "util" local TransformedModel = lib "class" ("TransformedModel") TransformedModel:include(mixin "Position") TransformedModel:include(mixin "Angle") TransformedModel:include(mixin "_has" ("Model")) TransformedModel:include(mixin "_has" ("Scale")) function TransformedModel:initialize(args) assertArgs(args, "model", "x", "y", "z", "scale", "angle", "ax", "ay", "az") self:setModel(args.model) self:setPosition(args.x, args.y, args.z) self:setScale(args.scale) self:setAngle(args.angle, args.ax, args.ay, args.az) return self end function TransformedModel:draw(x, y, z, s, angle, ax, ay, az) lovr.graphics.push() lovr.graphics.transform( x, y, z, s, s, s, angle, ax, ay, az ) -- actual coordinates lovr.graphics.transform( self:getX(), self:getY(), self:getZ(), self:getScale(), self:getScale(), self:getScale(), self:getAngle(), self:getAX(), self:getAY(), self:getAZ() ) -- model transformation self:getModel():draw() lovr.graphics.pop() end function TransformedModel:animate(...) return self:getModel():animate(...) end return TransformedModel