Compare commits

...

2 Commits

1 changed files with 34 additions and 10 deletions

View File

@ -248,6 +248,7 @@
GAMESTATE:ApplyModifiers('clearall')
local drawfunctionArguments = {}
local specialActorFrames = {} -- ones defined specifically; here for drawfunction jank
function setDrawFunction(frame, func)
@ -261,19 +262,29 @@
a:Draw()
end
end
func()
local args = drawfunctionArguments[frame]
if args then
func(unpack(args))
else
func()
end
end)
end
function setShader(actor, shader)
if not shader.__raw then error('uranium: cannot set shader during module loadtime! put this in uranium.init or actor:addcommand(\'Init\', ...)', 2) end
if not actor.__raw then error('uranium: cannot set shader while the actor hasn\'t been loaded!', 2) end
actor:SetShader(shader.__raw)
if not shader.__raw then
function uranium.init() setShader(actor, shader) end
else
actor:SetShader(shader.__raw)
end
end
function setShaderfuck(shader)
if not shader.__raw then error('uranium: cannot set shader during module loadtime! put this in uranium.init or actor:addcommand(\'Init\', ...)', 2) end
DISPLAY:ShaderFuck(shader.__raw)
if not shader.__raw then
function uranium.init() setShaderfuck(shader) end
else
DISPLAY:ShaderFuck(shader.__raw)
end
end
function clearShaderfuck()
@ -401,6 +412,13 @@
end
end
local actorMethodOverrides = {
Draw = function(self, ...)
drawfunctionArguments[self] = arg
self.__raw:Draw()
end
}
local function createProxyActor(name)
local queue = {}
local initCommands = {}
@ -413,11 +431,15 @@
return lockedActor
end
if lockedActor then
local val = lockedActor[key]
if type(val) == 'function' then
return patchFunction(val, lockedActor)
if actorMethodOverrides[key] then
return actorMethodOverrides[key]
else
local val = lockedActor[key]
if type(val) == 'function' then
return patchFunction(val, lockedActor)
end
return val
end
return val
end
if key == '__queue' then
return queueRepresentation
@ -727,6 +749,8 @@
uranium:call('ready')
end
drawfunctionArguments = {}
for _, q in ipairs(globalQueue) do
local actor = q[1]
local v = q[2]