mirror of
https://github.com/love2d/love.git
synced 2026-08-19 20:19:42 +02:00
Move current love.graphics.setStencilMode functionality to setStencilState.
Add new higher level love.graphics.setStencilMode function.
- Add love.graphics.setStencilMode(mode [, value = 1])
- Add love.graphics.setStencilMode().
- Add mode, value = love.graphics.getStencilMode().
The possible modes are "off" (same as no parameters), "draw", and "test".
The "draw" mode disables color writes and sets the stencil state to ("replace", "always") using the given value.
The "test" mode enables color writes and sets the stencil state to ("keep", "equal") using the given value to compare to.
This commit is contained in:
@@ -53,7 +53,7 @@ function graphics.newVideo(file, settings)
|
||||
end
|
||||
|
||||
function graphics.stencil(func, action, value, keepvalues)
|
||||
love.markDeprecated(2, "love.graphics.stencil", "function", "replaced", "love.graphics.setStencilMode")
|
||||
love.markDeprecated(2, "love.graphics.stencil", "function", "replaced", "love.graphics.setStencilMode or setStencilState")
|
||||
|
||||
if not keepvalues then
|
||||
graphics.clear(false, true, false)
|
||||
@@ -61,15 +61,15 @@ function graphics.stencil(func, action, value, keepvalues)
|
||||
|
||||
if value == nil then value = 1 end
|
||||
|
||||
local action2, mode2, value2, readmask2, writemask2 = graphics.getStencilMode()
|
||||
local action2, mode2, value2, readmask2, writemask2 = graphics.getStencilState()
|
||||
local mr, mg, mb, ma = graphics.getColorMask()
|
||||
|
||||
graphics.setStencilMode(action, "always", value)
|
||||
graphics.setStencilState(action, "always", value)
|
||||
graphics.setColorMask(false)
|
||||
|
||||
local success, err = pcall(func)
|
||||
|
||||
graphics.setStencilMode(action2, mode2, value2, readmask2, writemask2)
|
||||
graphics.setStencilState(action2, mode2, value2, readmask2, writemask2)
|
||||
graphics.setColorMask(mr, mg, mb, ma)
|
||||
|
||||
if not success then
|
||||
@@ -78,19 +78,19 @@ function graphics.stencil(func, action, value, keepvalues)
|
||||
end
|
||||
|
||||
function graphics.setStencilTest(mode, value)
|
||||
love.markDeprecated(2, "love.graphics.setStencilTest", "function", "replaced", "love.graphics.setStencilMode")
|
||||
love.markDeprecated(2, "love.graphics.setStencilTest", "function", "replaced", "love.graphics.setStencilMode or setStencilState")
|
||||
|
||||
if mode ~= nil then
|
||||
graphics.setStencilMode("keep", mode, value)
|
||||
graphics.setStencilState("keep", mode, value)
|
||||
else
|
||||
graphics.setStencilMode()
|
||||
graphics.setStencilState()
|
||||
end
|
||||
end
|
||||
|
||||
function graphics.getStencilTest()
|
||||
love.markDeprecated(2, "love.graphics.getStencilTest", "function", "replaced", "love.graphics.getStencilMode")
|
||||
love.markDeprecated(2, "love.graphics.getStencilTest", "function", "replaced", "love.graphics.getStencilMode or getStencilState")
|
||||
|
||||
local action, mode, value = graphics.getStencilMode()
|
||||
local action, mode, value = graphics.getStencilState()
|
||||
return mode, value
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user