local Base = require "birb.modules.world.actors.actor3D" local Parent = Base:extend() function Parent:new(world, type, x, y, z, w, h, d, isSolid) self.scene = world.scene Parent.super.new(self, world, type, x, y, z, w, h, d, isSolid) end function Parent:draw() self:drawStart() if (self.box ~= nil) then self.box:draw(math.floor(self.x), math.floor(self.y), math.floor(self.z)) else local x, y, z = self:computeDrawingPosition() if (math.floor(z) < -2) and (self.world.maptype == "shoot") then core.screen:setScissor(0, 0, 424, 58+self.y/2) self:drawSprite(x, y) core.screen:resetScissor() else self:drawSprite(x, y) end end self:drawEnd() end function Parent:computeDrawingPosition() local drawx, drawy, drawz = self.x, self.y, self.z if (self.world.maptype == "shoot") then drawx = drawx + math.floor(drawy/2) end return math.floor(drawx), math.floor(drawy - drawz - self.d + (self.h/2)), math.floor(drawz) end function Parent:drawShadow(x, y) local x = x or 0 local y = y or 0 if (self.world.maptype == "shoot") then x = x + math.floor(y/2) end self.assets.images["shadow"]:draw(x-4, y+4) end return Parent