Add support for opaque lasers

master
Wuzzy 2022-03-16 00:17:10 +01:00
parent 1d3cbcea81
commit b0f520ba89
4 changed files with 38 additions and 14 deletions

View File

@ -14,3 +14,5 @@ lzr_globals.SEABED_LEVEL = -1000
lzr_globals.SEASTONE_LEVEL = -1002
lzr_globals.GRAVITY = tonumber(minetest.settings:get("movement_gravity")) or 9.81
lzr_globals.LASER_GLOW = 3
lzr_globals.OPAQUE_LASERS = minetest.settings:get_bool("lzr_opaque_lasers", false)

View File

@ -1,5 +1,15 @@
local S = minetest.get_translator("lzr_laser")
local TEX_LASER
local ALPHA_LASER
if lzr_globals.OPAQUE_LASERS then
TEX_LASER = "lzr_laser_laser_opaque.png"
ALPHA_LASER = "clip"
else
TEX_LASER = "lzr_laser_laser.png"
ALPHA_LASER = "blend"
end
local mirror_out = {
[0] = {1,0,0},
[1] = {0,0,-1},
@ -319,7 +329,7 @@ register_element("mirror", {
{name="lzr_laser_mirror_block.png^lzr_laser_fixed.png", backface_culling=true},
},
tiles_on = {
{name="lzr_laser_laser.png", backface_culling=true},
{name=TEX_LASER, backface_culling=true},
{name="lzr_laser_mirror_block.png^lzr_laser_fixed.png", backface_culling=true},
{name="lzr_laser_mirror_mirror.png", backface_culling=true},
{name="lzr_laser_mirror_block.png^lzr_laser_fixed.png", backface_culling=true},
@ -330,12 +340,12 @@ register_element("mirror", {
{name="lzr_laser_mirror_block.png", backface_culling=true},
},
tiles_takable_on = {
{name="lzr_laser_laser.png", backface_culling=true},
{name=TEX_LASER, backface_culling=true},
{name="lzr_laser_mirror_block.png", backface_culling=true},
{name="lzr_laser_mirror_mirror.png", backface_culling=true},
{name="lzr_laser_mirror_block.png", backface_culling=true},
},
use_texture_alpha = "blend",
use_texture_alpha = ALPHA_LASER,
drawtype = "mesh",
mesh_off = "lzr_laser_mirror.obj",
mesh_on = "lzr_laser_mirror_on.obj",
@ -352,7 +362,7 @@ local tm_def = {
description = S("Transmissive Mirror"),
paramtype = "light",
paramtype2 = "facedir",
use_texture_alpha = "blend",
use_texture_alpha = ALPHA_LASER,
drawtype = "mesh",
groups = { rotatable = 1, laser_block = 1 },
sounds = lzr_sounds.node_sound_glass_defaults({
@ -386,13 +396,13 @@ tm_def_on_01.light_source = lzr_globals.LASER_GLOW
tm_def_on_01._lzr_transmissive_mirror_state = "01"
tm_def_on_01.description = S("Transmissive Mirror (active, 01)")
tm_def_on_01.tiles_off = {
{name="lzr_laser_laser.png", backface_culling=true},
{name=TEX_LASER, backface_culling=true},
{name="lzr_laser_transmissive_mirror_block.png^lzr_laser_fixed.png", backface_culling=true},
{name="lzr_laser_transmissive_mirror_mirror.png", backface_culling=true},
{name="lzr_laser_transmissive_mirror_mirror_out.png", backface_culling=true},
}
tm_def_on_01.tiles_takable_off = {
{name="lzr_laser_laser.png", backface_culling=true},
{name=TEX_LASER, backface_culling=true},
{name="lzr_laser_transmissive_mirror_block.png", backface_culling=true},
{name="lzr_laser_transmissive_mirror_mirror.png", backface_culling=true},
{name="lzr_laser_transmissive_mirror_mirror_out.png", backface_culling=true},

View File

@ -1,5 +1,17 @@
local S = minetest.get_translator("lzr_laser")
local TEX_LASER, TEX_LASER_NOCENTER
local ALPHA_LASER
if lzr_globals.OPAQUE_LASERS then
TEX_LASER = "lzr_laser_laser_opaque.png"
TEX_LASER_NOCENTER = "lzr_laser_laser_nocenter_opaque.png"
ALPHA_LASER = "clip"
else
TEX_LASER = "lzr_laser_laser.png"
TEX_LASER_NOCENTER = "lzr_laser_laser_nocenter.png"
ALPHA_LASER = "blend"
end
-- Distance from center to side of the laser beam square. Not really the radius, but it sounds cooler. :P
local LASER_RADIUS = -1/16
@ -73,23 +85,23 @@ for i=1, 7 do
local tex
if axes == 1 then
if axes_active.x then
tex = { "lzr_laser_laser.png", "lzr_laser_laser.png", "blank.png", "blank.png", "lzr_laser_laser.png" }
tex = { TEX_LASER, TEX_LASER, "blank.png", "blank.png", TEX_LASER }
elseif axes_active.y then
tex = { "blank.png", "blank.png", "lzr_laser_laser.png" }
tex = { "blank.png", "blank.png", TEX_LASER }
else
tex = { "lzr_laser_laser.png", "lzr_laser_laser.png", "lzr_laser_laser.png", "lzr_laser_laser.png", "blank.png" }
tex = { TEX_LASER, TEX_LASER, TEX_LASER, TEX_LASER, "blank.png" }
end
elseif axes == 2 then
if axes_active.x == false then
tex = { "lzr_laser_laser_nocenter.png", "lzr_laser_laser_nocenter.png", "lzr_laser_laser.png", "lzr_laser_laser.png", "lzr_laser_laser_nocenter.png" }
tex = { TEX_LASER_NOCENTER, TEX_LASER_NOCENTER, TEX_LASER, TEX_LASER, TEX_LASER_NOCENTER }
elseif axes_active.y == false then
tex = { "lzr_laser_laser.png", "lzr_laser_laser.png", "lzr_laser_laser_nocenter.png" }
tex = { TEX_LASER, TEX_LASER, TEX_LASER_NOCENTER }
else
tex = { "lzr_laser_laser_nocenter.png", "lzr_laser_laser_nocenter.png", "lzr_laser_laser_nocenter.png", "lzr_laser_laser_nocenter.png", "lzr_laser_laser.png" }
tex = { TEX_LASER_NOCENTER, TEX_LASER_NOCENTER, TEX_LASER_NOCENTER, TEX_LASER_NOCENTER, TEX_LASER }
end
elseif axes == 3 then
tex = { "lzr_laser_laser_nocenter.png" }
tex = { TEX_LASER_NOCENTER }
end
-- Finally register the laser
@ -100,7 +112,7 @@ for i=1, 7 do
drawtype = "nodebox",
sunlight_propagates = true,
walkable = false,
use_texture_alpha = "blend",
use_texture_alpha = ALPHA_LASER,
tiles = tex,
pointable = false,
buildable_to = true,

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB