fix: simplify shadows handling
This commit is contained in:
parent
89c5940116
commit
93ce28f3ba
4 changed files with 34 additions and 1 deletions
|
@ -0,0 +1,29 @@
|
||||||
|
local Base = require "core.modules.world.actors.actor3D"
|
||||||
|
local FakeFloor = Base:extend()
|
||||||
|
|
||||||
|
function FakeFloor:new(world, x, y, z, w, h, d)
|
||||||
|
FakeFloor.super.new(self, world, "fakefloor", x, y, z, w, h, d, false)
|
||||||
|
self:setDebugColor(0,0,0)
|
||||||
|
self.boxes.Base(self, w, h, d, false)
|
||||||
|
end
|
||||||
|
|
||||||
|
function FakeFloor:update(dt)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function FakeFloor:draw()
|
||||||
|
local drawx, drawy, drawz = self.x, self.y, self.z
|
||||||
|
if (self.world.maptype == "shoot") then
|
||||||
|
drawx = drawx + math.floor(drawy/2)
|
||||||
|
end
|
||||||
|
self:drawStart()
|
||||||
|
if (self.box ~= nil) then
|
||||||
|
self.box:draw(drawx, drawy, drawz)
|
||||||
|
else
|
||||||
|
local x, y = math.floor(drawx), math.floor(drawy - drawz - self.d + (self.h/2))
|
||||||
|
self:drawSprite(x, y)
|
||||||
|
end
|
||||||
|
self:drawEnd()
|
||||||
|
end
|
||||||
|
|
||||||
|
return FakeFloor
|
|
@ -13,6 +13,7 @@ Obj.collisions["wall"] = require(cwd .. "collisions.wall")
|
||||||
Obj.collisions["invisible"] = require(cwd .. "collisions.invisible")
|
Obj.collisions["invisible"] = require(cwd .. "collisions.invisible")
|
||||||
Obj.collisions["floor"] = require(cwd .. "collisions.floor")
|
Obj.collisions["floor"] = require(cwd .. "collisions.floor")
|
||||||
Obj.collisions["textured"] = require(cwd .. "collisions.textured")
|
Obj.collisions["textured"] = require(cwd .. "collisions.textured")
|
||||||
|
Obj.collisions["fakefloor"] = require(cwd .. "collisions.fakefloor")
|
||||||
|
|
||||||
Obj.index = {}
|
Obj.index = {}
|
||||||
Obj.index[01] = Obj.Ring
|
Obj.index[01] = Obj.Ring
|
||||||
|
|
|
@ -56,6 +56,9 @@ function ShootMap:loadCollisions()
|
||||||
self.chunklist[chunkname]:spawnGrounds((i-1)*31*8)
|
self.chunklist[chunkname]:spawnGrounds((i-1)*31*8)
|
||||||
self.chunklist[chunkname]:spawnObjects((i-1)*31*8)
|
self.chunklist[chunkname]:spawnObjects((i-1)*31*8)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local CHUNKSIZE = TILESIZE*8
|
||||||
|
self.world:newCollision("fakefloor", -CHUNKSIZE, 0, -48, self.width+CHUNKSIZE*2, 200, 48)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ShootMap:loadLayout()
|
function ShootMap:loadLayout()
|
||||||
|
|
|
@ -46,7 +46,7 @@ function Chunk:generateGround(basex)
|
||||||
for i, ground in ipairs(self.grounds) do
|
for i, ground in ipairs(self.grounds) do
|
||||||
local x, y = ground.x, ground.y
|
local x, y = ground.x, ground.y
|
||||||
local w, h = ground.w, ground.h
|
local w, h = ground.w, ground.h
|
||||||
self.map.world:newCollision("floor", basex+(x-1)*31, (y-1)*20, -48, 31*w, 20*h, 48)
|
self.map.world:newCollision("invisible", basex+(x-1)*31, (y-1)*20, -48, 31*w, 20*h, 48)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue