mirror of
https://github.com/tanema/light_world.lua.git
synced 2024-12-24 20:24:19 +00:00
added back in the default normal maps
This commit is contained in:
parent
d3358b0455
commit
e54c38d7e9
30
lib/body.lua
30
lib/body.lua
@ -50,6 +50,17 @@ function body:init(id, type, ...)
|
|||||||
self.x = args[1] or 0
|
self.x = args[1] or 0
|
||||||
self.y = args[2] or 0
|
self.y = args[2] or 0
|
||||||
|
|
||||||
|
local rectangle_canvas = love.graphics.newCanvas(args[3], args[4])
|
||||||
|
util.drawto(rectangle_canvas, 0, 0, 1, function()
|
||||||
|
love.graphics.rectangle('fill', 0, 0, args[3], args[4])
|
||||||
|
end)
|
||||||
|
self.img = love.graphics.newImage(rectangle_canvas:getImageData())
|
||||||
|
self.imgWidth = self.img:getWidth()
|
||||||
|
self.imgHeight = self.img:getHeight()
|
||||||
|
self.ix = self.imgWidth * 0.5
|
||||||
|
self.iy = self.imgHeight * 0.5
|
||||||
|
self:generateNormalMapFlat("top")
|
||||||
|
|
||||||
self:setShadowType('rectangle', args[3], args[4])
|
self:setShadowType('rectangle', args[3], args[4])
|
||||||
elseif self.type == "polygon" then
|
elseif self.type == "polygon" then
|
||||||
self:setPoints(...)
|
self:setPoints(...)
|
||||||
@ -63,6 +74,7 @@ function body:init(id, type, ...)
|
|||||||
self.ix = self.imgWidth * 0.5
|
self.ix = self.imgWidth * 0.5
|
||||||
self.iy = self.imgHeight * 0.5
|
self.iy = self.imgHeight * 0.5
|
||||||
end
|
end
|
||||||
|
self:generateNormalMapFlat("top")
|
||||||
self:setShadowType('rectangle', args[4] or self.imgWidth, args[5] or self.imgHeight, args[6], args[7])
|
self:setShadowType('rectangle', args[4] or self.imgWidth, args[5] or self.imgHeight, args[6], args[7])
|
||||||
self.reflective = true
|
self.reflective = true
|
||||||
elseif self.type == "animation" then
|
elseif self.type == "animation" then
|
||||||
@ -71,6 +83,7 @@ function body:init(id, type, ...)
|
|||||||
self.y = args[3] or 0
|
self.y = args[3] or 0
|
||||||
self.animations = {}
|
self.animations = {}
|
||||||
self.castsNoShadow = true
|
self.castsNoShadow = true
|
||||||
|
self:generateNormalMapFlat("top")
|
||||||
self.reflective = true
|
self.reflective = true
|
||||||
elseif self.type == "refraction" then
|
elseif self.type == "refraction" then
|
||||||
self.x = args[2] or 0
|
self.x = args[2] or 0
|
||||||
@ -275,9 +288,26 @@ function body:setPoints(...)
|
|||||||
-- normalize width and height
|
-- normalize width and height
|
||||||
self.width = self.width - self.x
|
self.width = self.width - self.x
|
||||||
self.height = self.height - self.y
|
self.height = self.height - self.y
|
||||||
|
for i = 1, #points, 2 do
|
||||||
|
points[i], points[i+1] = points[i] - self.x, points[i+1] - self.y
|
||||||
|
end
|
||||||
self.x = self.x + (self.width * 0.5)
|
self.x = self.x + (self.width * 0.5)
|
||||||
self.y = self.y + (self.height * 0.5)
|
self.y = self.y + (self.height * 0.5)
|
||||||
|
|
||||||
|
local poly_canvas = love.graphics.newCanvas(self.width, self.height)
|
||||||
|
util.drawto(poly_canvas, 0, 0, 1, function()
|
||||||
|
love.graphics.polygon('fill', points)
|
||||||
|
end)
|
||||||
|
self.img = love.graphics.newImage(poly_canvas:getImageData())
|
||||||
|
self.imgWidth = self.img:getWidth()
|
||||||
|
self.imgHeight = self.img:getHeight()
|
||||||
|
self.ix = self.imgWidth * 0.5
|
||||||
|
self.iy = self.imgHeight * 0.5
|
||||||
|
self:generateNormalMapFlat("top")
|
||||||
|
--wrapping with polygon normals causes edges to show
|
||||||
|
--also we do not need wrapping for this default normal map
|
||||||
|
self.normal:setWrap("clamp", "clamp")
|
||||||
|
|
||||||
self:setShadowType('polygon', ...)
|
self:setShadowType('polygon', ...)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user