fysplane/entities/rectangle.lua
2014-10-18 20:20:53 +03:00

49 lines
1.5 KiB
Lua

Class = require 'hump.class'
require 'entities/physicsentity'
Rectangle = Class{
__includes = PhysicsEntity,
img = nil,
init = function(self, x, y, level, physics_type, restitution, xsize, ysize, density, img)
PhysicsEntity.init(self, x, y, level, physics_type, restitution)
self.xsize = xsize
self.ysize = ysize
self.shape = love.physics.newRectangleShape(self.xsize, self.ysize)
PhysicsEntity.attachShape(self, density)
self.body:setX(self.x + self.xsize / 2)
self.body:setY(self.y - self.ysize / 2)
self.angle = 0
if img ~= nil then
self.img = img
self.quad = love.graphics.newQuad(0, 0, self.xsize, self.ysize, self.img:getWidth(), self.img:getHeight())
end
end;
update = function(self, dt)
PhysicsEntity.update(self, dt)
self.x, self.y = self.fixture:getBoundingBox()
self.angle = self.body:getAngle()
end;
draw = function(self)
if self.img ~= nil then
love.graphics.draw(self.img, self.quad, self.body:getX(), self.body:getY(), self.angle, 1, 1, self.xsize / 2, self.ysize / 2)
else
love.graphics.push()
love.graphics.translate(self.body:getX(), self.body:getY())
love.graphics.rotate(self.angle)
love.graphics.rectangle("fill", -self.xsize / 2, -self.ysize / 2, self.xsize, self.ysize)
love.graphics.pop()
end
end;
setAngle = function(self, angle)
self.body:setAngle(deg_to_rad(angle))
end;
}