commit f1573e0cf11cb97c7bde4780bf87833fa5fbc787 Author: rainer Date: Thu Feb 12 13:35:59 2026 +0100 init diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..c022e22 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,23 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + + +Licenses of media (textures, models and sounds) +----------------------------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2018: + + laza diff --git a/README.md b/README.md new file mode 100644 index 0000000..9ae38d1 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# LDM32 + + +### Laser Distance Meter 32 + +LDM32 is a simple mod for minetest. It measures the distance between +the LDM32 device and the next non-air block. + + +### Requirement + +Tested with Minetest 0.4.17.1 + + +### Recipe + +``` +group:wood, dye:grey, default:mese_crystal +default:steel_ingot, default:steel_ingot, default:steel_ingot +``` + +### Screenshot +![Screenshot](https://github.com/laza83/ldm32/blob/master/screenshot_0002.jpg) diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +default diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..931c00b --- /dev/null +++ b/init.lua @@ -0,0 +1,164 @@ +laser_range = 32 + +local laser_on = function(pos, facedir_param2, range) + local meta = minetest.get_meta(pos) + local block_pos = vector.new(pos) + local beam_pos = vector.new(pos) + local beam_direction = minetest.facedir_to_dir(facedir_param2) + + for i = 1, range + 1, 1 do + beam_pos = vector.add(block_pos, vector.multiply(beam_direction, i)) + if minetest.get_node(beam_pos).name == "air" or minetest.get_node(beam_pos).name == "ldm32:laser_beam" then + if i <= range then + minetest.set_node(beam_pos, {name = "ldm32:laser_beam", param2 = facedir_param2}) + meta:set_string("infotext", "Distance: " .. tostring(i) .. "m") + meta:set_int("range", i) + else + meta:set_string("infotext", "Distance: out of range") + meta:set_int("range", laser_range) + end + else + break + end + end +end + +local laser_off = function(pos, facedir_param2, range) + local meta = minetest.get_meta(pos) + local block_pos = vector.new(pos) + local beam_pos = vector.new(pos) + local beam_direction = minetest.facedir_to_dir(facedir_param2) + + for i = range, 0, -1 do + beam_pos = vector.add(block_pos, vector.multiply(beam_direction, i)) + if minetest.get_node(beam_pos).name == "ldm32:laser_beam" and minetest.get_node(beam_pos).param2 == facedir_param2 then + minetest.set_node(beam_pos, {name="air"}) + end + end +end + +local laser_check = function(pos, facedir_param2, range) + local block_pos = vector.new(pos) + local beam_pos = vector.new(pos) + local beam_direction = minetest.facedir_to_dir(facedir_param2) + local is_not_beam = false + + for i = 1, range + 1, 1 do + beam_pos = vector.add(block_pos, vector.multiply(beam_direction, i)) + if minetest.get_node(beam_pos).name ~= "ldm32:laser_beam" and i <= range then + is_not_beam = true + elseif minetest.get_node(beam_pos).name == "air" and i <= laser_range then + is_not_beam = true + end + end + return is_not_beam +end + +minetest.register_node("ldm32:casing", { + description = "Laser Distance Meter", + inventory_image = "ldm32_inventory.png", + drawtype = "mesh", + mesh = "ldm32_casing.obj", + tiles = {"ldm32_casing2.png", + "ldm32_casing.png",}, + selection_box = { + type = "fixed", + fixed = {{-0.07, -0.5, -0.5, 0.07, -0.25, 0.5},} + }, + collision_box = { + type = "fixed", + fixed = {{-0.07, -0.5, -0.5, 0.07, -0.25, 0.5},} + }, + stack_max = 1, + is_ground_content = true, + paramtype2 = "facedir", + groups = {snappy = 3, dig_immediate = 3}, + on_place = minetest.rotate_node, + + on_timer = function(pos) + local meta = minetest.get_meta(pos) + local node = minetest.get_node(pos) + local timer = minetest.get_node_timer(pos) + local is_not_beam = false + local is_air = false + + if meta:get_string("is_on") == "true" then + if laser_check(pos, node.param2, meta:get_int("range")) then + laser_off(pos, node.param2, meta:get_int("range")) + laser_on(pos, node.param2, laser_range) + end + if meta:get_int("facedir") ~= node.param2 and meta:get_string("is_on") then + laser_off(pos, meta:get_int("facedir"), laser_range) + laser_on(pos, node.param2, laser_range) + meta:set_int("facedir", node.param2) + end + end + timer:start(1) + end, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local node = minetest.get_node(pos) + meta:set_string("infotext","Off") + meta:set_string("is_on", "false") + meta:set_int("facedir", node.param2) + end, + + after_destruct = function(pos, oldnode, oldmetadata) + local meta = minetest.get_meta(pos) + laser_off(pos, oldnode.param2, laser_range) + meta:set_string("infotext", "Off") + meta:set_string("is_on", "false") + end, + + after_dig_node = function(pos, oldnode) + local meta = minetest.get_meta(pos) + laser_off(pos, oldnode.param2, laser_range) + meta:set_string("infotext", "Off") + meta:set_string("is_on", "false") + end, + + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + local meta = minetest.get_meta(pos) + local node = minetest.get_node(pos) + local timer = minetest.get_node_timer(pos) + + if meta:get_string("is_on") == "false" then + laser_on(pos, node.param2, laser_range) + meta:set_string("is_on", "true") + timer:start(1) + else + laser_off(pos, node.param2, meta:get_int("range")) + meta:set_string("infotext", "Off") + meta:set_string("is_on", "false") + timer:stop() + end + end, +}) + +minetest.register_node("ldm32:laser_beam", { + description = "Laser Beam", + drawtype = "mesh", + mesh = "ldm32_laser_beam.obj", + tiles = {"ldm32_beam.png"}, + paramtype = "light", + paramtype2 = "facedir", + use_texture_alpha = true, + --alpha = 0, + light_source = 4, + post_effect_color = {r=128,g=64,b=64, a=128}, + sunlight_propagates = true, + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, +}) + +minetest.register_craft({ + --type = "sharpless", + output = "ldm32:casing", + recipe = { + {"group:wood","dye:grey","default:mese_crystal"}, + {"default:steel_ingot","default:steel_ingot","default:steel_ingot"} + } +}) diff --git a/models/ldm32_casing.obj b/models/ldm32_casing.obj new file mode 100644 index 0000000..1cb6425 --- /dev/null +++ b/models/ldm32_casing.obj @@ -0,0 +1,140 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +g node1_Body001 +v 0.062500 -0.500000 0.500000 +v -0.062500 -0.500000 0.500000 +v 0.062500 -0.500000 0.468750 +v -0.062500 -0.500000 0.468750 +v -0.031250 -0.250000 0.500000 +v -0.031250 -0.250000 0.468750 +v 0.031250 -0.250000 0.500000 +v 0.031250 -0.250000 0.468750 +v 0.031250 -0.250000 0.468750 +v 0.062500 -0.500000 0.468750 +v -0.062500 -0.500000 0.468750 +v -0.031250 -0.250000 0.468750 +vn 0.0000 -1.0000 0.0000 +vn -0.9923 0.1240 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.9923 0.1240 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 1//1 2//1 3//1 +f 3//1 2//1 4//1 +f 2//2 5//2 4//2 +f 4//2 5//2 6//2 +f 5//3 7//3 6//3 +f 6//3 7//3 8//3 +f 7//4 1//4 8//4 +f 8//4 1//4 3//4 +f 1//5 7//5 2//5 +f 2//5 7//5 5//5 +f 9//6 10//6 11//6 +f 9//6 11//6 12//6 +g node0_Body +v 0.031250 -0.250000 -0.500000 +v 0.055813 -0.437500 -0.250000 +v 0.064000 -0.500000 -0.500000 +v 0.039437 -0.312500 -0.187500 +v 0.039437 -0.312500 0.187500 +v 0.031250 -0.250000 0.468750 +v 0.055813 -0.437500 0.250000 +v 0.064000 -0.500000 0.468750 +v -0.064000 -0.500000 0.468750 +v -0.031250 -0.250000 0.468750 +v -0.064000 -0.500000 -0.500000 +v -0.031250 -0.250000 -0.500000 +v -0.039437 -0.312500 0.187500 +v -0.055813 -0.437500 0.250000 +v -0.055813 -0.437500 -0.250000 +v -0.039437 -0.312500 -0.187500 +vt 0.472656 0.023438 +vt 0.320312 0.230469 +vt 0.269531 0.023438 +vt 0.421875 0.281250 +vt 0.421875 0.585938 +vt 0.472656 0.816406 +vt 0.320312 0.636719 +vt 0.269531 0.816406 +vt 0.875000 0.679688 +vt 0.902344 0.480469 +vt 0.976562 0.679688 +vt 0.949219 0.480469 +vt 0.621094 0.023438 +vt 0.519531 0.816406 +vt 0.519531 0.023438 +vt 0.621094 0.816406 +vt 0.949219 0.730469 +vt 0.976562 0.929688 +vt 0.875000 0.929688 +vt 0.902344 0.730469 +vt 0.667969 0.816406 +vt 0.667969 0.023438 +vt 0.718750 0.816406 +vt 0.718750 0.023438 +vt 0.171875 0.863281 +vt 0.250000 0.976562 +vt 0.160156 0.976562 +vt 0.234375 0.863281 +vt 0.765625 0.023438 +vt 0.851562 0.433594 +vt 0.765625 0.433594 +vt 0.851562 0.023438 +vt 0.765625 0.480469 +vt 0.828125 0.789062 +vt 0.765625 0.789062 +vt 0.828125 0.480469 +vt 0.113281 0.976562 +vt 0.035156 0.863281 +vt 0.097656 0.863281 +vt 0.023438 0.976562 +vt 0.222656 0.023438 +vt 0.171875 0.230469 +vt 0.023438 0.023438 +vt 0.074219 0.281250 +vt 0.171875 0.636719 +vt 0.023438 0.816406 +vt 0.074219 0.585938 +vt 0.222656 0.816406 +vn 0.9915 0.1299 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 -0.4472 0.8944 +vn -0.9915 0.1299 0.0000 +s off +f 13/1/7 14/2/7 15/3/7 +f 16/4/7 14/2/7 13/1/7 +f 17/5/7 18/6/7 19/7/7 +f 18/6/7 20/8/7 19/7/7 +f 20/8/7 15/3/7 14/2/7 +f 20/8/7 14/2/7 19/7/7 +f 13/1/7 18/6/7 17/5/7 +f 13/1/7 17/5/7 16/4/7 +f 20/9/8 18/10/8 21/11/8 +f 18/10/8 22/12/8 21/11/8 +f 15/13/9 21/14/9 23/15/9 +f 20/16/9 21/14/9 15/13/9 +f 13/17/10 15/18/10 23/19/10 +f 13/17/10 23/19/10 24/20/10 +f 24/21/11 22/22/11 13/23/11 +f 22/22/11 18/24/11 13/23/11 +f 25/25/12 19/26/12 26/27/12 +f 17/28/12 19/26/12 25/25/12 +f 26/29/11 14/30/11 27/31/11 +f 19/32/11 14/30/11 26/29/11 +f 28/33/9 17/34/9 25/35/9 +f 16/36/9 17/34/9 28/33/9 +f 27/37/13 16/38/13 28/39/13 +f 14/40/13 16/38/13 27/37/13 +f 23/41/14 27/42/14 24/43/14 +f 27/42/14 28/44/14 24/43/14 +f 26/45/14 22/46/14 25/47/14 +f 21/48/14 22/46/14 26/45/14 +f 22/46/14 24/43/14 25/47/14 +f 25/47/14 24/43/14 28/44/14 +f 23/41/14 21/48/14 27/42/14 +f 27/42/14 21/48/14 26/45/14 diff --git a/models/ldm32_laser_beam.obj b/models/ldm32_laser_beam.obj new file mode 100644 index 0000000..95e2b79 --- /dev/null +++ b/models/ldm32_laser_beam.obj @@ -0,0 +1,296 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +g node0_Body +v -0.017752 -0.494468 -0.500000 +v -0.011081 -0.497969 -0.500000 +v -0.017752 -0.494468 0.500000 +v -0.011081 -0.497969 0.500000 +v -0.003767 -0.499772 0.500000 +v -0.003767 -0.499772 -0.500000 +v 0.003767 -0.499772 -0.500000 +v 0.003767 -0.499772 0.500000 +v 0.011081 -0.497969 0.500000 +v 0.031250 -0.468750 -0.500000 +v 0.030342 -0.461271 -0.500000 +v 0.031250 -0.468750 0.500000 +v 0.030342 -0.461271 0.500000 +v 0.011081 -0.497969 -0.500000 +v 0.027671 -0.454227 -0.500000 +v 0.027671 -0.454227 0.500000 +v 0.017752 -0.494468 -0.500000 +v 0.017752 -0.494468 0.500000 +v 0.023391 -0.489473 0.500000 +v 0.023391 -0.448027 -0.500000 +v 0.023391 -0.448027 0.500000 +v 0.023391 -0.489473 -0.500000 +v 0.017752 -0.443032 -0.500000 +v 0.017752 -0.443032 0.500000 +v 0.027671 -0.483273 -0.500000 +v 0.027671 -0.483273 0.500000 +v 0.030342 -0.476229 0.500000 +v 0.030342 -0.476229 -0.500000 +v 0.011081 -0.439531 -0.500000 +v 0.011081 -0.439531 0.500000 +v 0.003767 -0.437728 -0.500000 +v 0.003767 -0.437728 0.500000 +v -0.003767 -0.437728 0.500000 +v -0.003767 -0.437728 -0.500000 +v -0.011081 -0.439531 -0.500000 +v -0.011081 -0.439531 0.500000 +v -0.017752 -0.443032 0.500000 +v -0.017752 -0.443032 -0.500000 +v -0.023391 -0.448027 0.500000 +v -0.023391 -0.448027 -0.500000 +v -0.027671 -0.454227 -0.500000 +v -0.027671 -0.454227 0.500000 +v -0.030342 -0.461271 0.500000 +v -0.030342 -0.461271 -0.500000 +v -0.031250 -0.468750 0.500000 +v -0.031250 -0.468750 -0.500000 +v -0.030342 -0.476229 -0.500000 +v -0.030342 -0.476229 0.500000 +v -0.027671 -0.483273 0.500000 +v -0.027671 -0.483273 -0.500000 +v -0.023391 -0.489473 -0.500000 +v -0.023391 -0.489473 0.500000 +vt 0.482248 1.000000 +vt 0.488919 1.000000 +vt 0.482248 0.000000 +vt 0.488919 0.000000 +vt 0.496233 0.000000 +vt 0.496233 1.000000 +vt 0.503767 1.000000 +vt 0.503767 0.000000 +vt 0.511081 0.000000 +vt 1.000000 0.031250 +vt 1.000000 0.038729 +vt 0.000000 0.031250 +vt 0.000000 0.038729 +vt 0.511081 1.000000 +vt 1.000000 0.045773 +vt 0.000000 0.045773 +vt 0.517752 1.000000 +vt 0.517752 0.000000 +vt 0.523391 0.000000 +vt 1.000000 0.051973 +vt 0.000000 0.051973 +vt 0.523391 1.000000 +vt 0.523391 0.000000 +vt 0.517752 1.000000 +vt 0.517752 0.000000 +vt 0.000000 0.010527 +vt 1.000000 0.016727 +vt 0.000000 0.016727 +vt 0.000000 0.023771 +vt 0.523391 1.000000 +vt 1.000000 0.010527 +vt 1.000000 0.023771 +vt 0.511081 1.000000 +vt 0.511081 0.000000 +vt 0.503767 1.000000 +vt 0.503767 0.000000 +vt 0.496233 0.000000 +vt 0.496233 1.000000 +vt 0.488919 1.000000 +vt 0.488919 0.000000 +vt 0.482248 0.000000 +vt 0.482248 1.000000 +vt 0.476609 0.000000 +vt 0.476609 1.000000 +vt 1.000000 0.051973 +vt 1.000000 0.045773 +vt 0.000000 0.051973 +vt 0.000000 0.045773 +vt 0.000000 0.038729 +vt 1.000000 0.038729 +vt 0.000000 0.031250 +vt 1.000000 0.031250 +vt 1.000000 0.023771 +vt 0.000000 0.023771 +vt 0.000000 0.016727 +vt 1.000000 0.016727 +vt 1.000000 0.010527 +vt 0.000000 0.010527 +vt 0.476609 0.000000 +vt 0.476609 1.000000 +vt 0.482248 0.056968 +vt 0.472329 0.045773 +vt 0.476609 0.051973 +vt 0.469658 0.038729 +vt 0.469658 0.023771 +vt 0.468750 0.031250 +vt 0.503767 0.062272 +vt 0.511081 0.060469 +vt 0.496233 0.062272 +vt 0.488919 0.060469 +vt 0.472329 0.016727 +vt 0.517752 0.056968 +vt 0.523391 0.051973 +vt 0.488919 0.002031 +vt 0.476609 0.010527 +vt 0.482248 0.005532 +vt 0.527671 0.045773 +vt 0.530342 0.038729 +vt 0.503767 0.000228 +vt 0.496233 0.000228 +vt 0.531250 0.031250 +vt 0.530342 0.023771 +vt 0.523391 0.010527 +vt 0.511081 0.002031 +vt 0.517752 0.005532 +vt 0.527671 0.016727 +vt 0.472329 0.045773 +vt 0.482248 0.056968 +vt 0.476609 0.051973 +vt 0.469658 0.038729 +vt 0.469658 0.023771 +vt 0.468750 0.031250 +vt 0.511081 0.060469 +vt 0.503767 0.062272 +vt 0.496233 0.062272 +vt 0.488919 0.060469 +vt 0.472329 0.016727 +vt 0.523391 0.051973 +vt 0.517752 0.056968 +vt 0.488919 0.002031 +vt 0.476609 0.010527 +vt 0.482248 0.005532 +vt 0.530342 0.038729 +vt 0.527671 0.045773 +vt 0.503767 0.000228 +vt 0.496233 0.000228 +vt 0.530342 0.023771 +vt 0.531250 0.031250 +vt 0.523391 0.010527 +vt 0.511081 0.002031 +vt 0.517752 0.005532 +vt 0.527671 0.016727 +vn -0.4647 -0.8855 0.0000 +vn -0.2393 -0.9709 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.2393 -0.9709 0.0000 +vn 0.9927 0.1205 0.0000 +vn 0.9350 0.3546 0.0000 +vn 0.4647 -0.8855 0.0000 +vn 0.6631 -0.7485 0.0000 +vn 0.8230 0.5681 0.0000 +vn 0.6631 0.7485 0.0000 +vn 0.8230 -0.5681 0.0000 +vn 0.9350 -0.3546 0.0000 +vn 0.4647 0.8855 0.0000 +vn 0.9927 -0.1205 0.0000 +vn 0.2393 0.9709 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.2393 0.9709 0.0000 +vn -0.4647 0.8855 0.0000 +vn -0.6631 0.7485 0.0000 +vn -0.8230 0.5681 0.0000 +vn -0.9350 0.3546 0.0000 +vn -0.9927 0.1205 0.0000 +vn -0.9927 -0.1205 0.0000 +vn -0.9350 -0.3546 0.0000 +vn -0.8230 -0.5681 0.0000 +vn -0.6631 -0.7485 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 1/1/1 2/2/1 3/3/1 +f 3/3/1 2/2/1 4/4/1 +f 4/4/2 2/2/2 5/5/2 +f 2/2/2 6/6/2 5/5/2 +f 6/6/3 7/7/3 5/5/3 +f 5/5/3 7/7/3 8/8/3 +f 8/8/4 7/7/4 9/9/4 +f 10/10/5 11/11/5 12/12/5 +f 12/12/5 11/11/5 13/13/5 +f 7/7/4 14/14/4 9/9/4 +f 13/13/6 15/15/6 16/16/6 +f 14/14/7 17/17/7 9/9/7 +f 11/11/6 15/15/6 13/13/6 +f 9/9/7 17/17/7 18/18/7 +f 18/18/8 17/17/8 19/19/8 +f 16/16/9 20/20/9 21/21/9 +f 15/15/9 20/20/9 16/16/9 +f 17/17/8 22/22/8 19/19/8 +f 21/23/10 23/24/10 24/25/10 +f 19/26/11 25/27/11 26/28/11 +f 26/28/12 25/27/12 27/29/12 +f 20/30/10 23/24/10 21/23/10 +f 22/31/11 25/27/11 19/26/11 +f 25/27/12 28/32/12 27/29/12 +f 24/25/13 29/33/13 30/34/13 +f 27/29/14 10/10/14 12/12/14 +f 23/24/13 29/33/13 24/25/13 +f 28/32/14 10/10/14 27/29/14 +f 30/34/15 31/35/15 32/36/15 +f 32/36/16 31/35/16 33/37/16 +f 29/33/15 31/35/15 30/34/15 +f 31/35/16 34/38/16 33/37/16 +f 33/37/17 35/39/17 36/40/17 +f 36/40/18 35/39/18 37/41/18 +f 34/38/17 35/39/17 33/37/17 +f 37/41/19 38/42/19 39/43/19 +f 35/39/18 38/42/18 37/41/18 +f 38/42/19 40/44/19 39/43/19 +f 40/45/20 41/46/20 39/47/20 +f 39/47/20 41/46/20 42/48/20 +f 42/48/21 41/46/21 43/49/21 +f 41/46/21 44/50/21 43/49/21 +f 43/49/22 44/50/22 45/51/22 +f 44/50/22 46/52/22 45/51/22 +f 46/52/23 47/53/23 45/51/23 +f 45/51/23 47/53/23 48/54/23 +f 48/54/24 47/53/24 49/55/24 +f 47/53/24 50/56/24 49/55/24 +f 50/56/25 51/57/25 49/55/25 +f 49/55/25 51/57/25 52/58/25 +f 52/59/26 51/60/26 3/3/26 +f 51/60/26 1/1/26 3/3/26 +f 38/61/27 41/62/27 40/63/27 +f 38/61/27 44/64/27 41/62/27 +f 44/64/27 47/65/27 46/66/27 +f 31/67/27 29/68/27 34/69/27 +f 34/69/27 29/68/27 35/70/27 +f 44/64/27 50/71/27 47/65/27 +f 23/72/27 20/73/27 29/68/27 +f 35/70/27 20/73/27 38/61/27 +f 29/68/27 20/73/27 35/70/27 +f 50/71/27 2/74/27 51/75/27 +f 51/75/27 2/74/27 1/76/27 +f 15/77/27 11/78/27 20/73/27 +f 38/61/27 11/78/27 44/64/27 +f 20/73/27 11/78/27 38/61/27 +f 2/74/27 7/79/27 6/80/27 +f 10/81/27 28/82/27 11/78/27 +f 11/78/27 28/82/27 44/64/27 +f 7/79/27 22/83/27 14/84/27 +f 14/84/27 22/83/27 17/85/27 +f 25/86/27 22/83/27 28/82/27 +f 44/64/27 22/83/27 50/71/27 +f 50/71/27 22/83/27 2/74/27 +f 2/74/27 22/83/27 7/79/27 +f 28/82/27 22/83/27 44/64/27 +f 42/87/28 37/88/28 39/89/28 +f 43/90/28 37/88/28 42/87/28 +f 48/91/28 43/90/28 45/92/28 +f 30/93/28 32/94/28 33/95/28 +f 30/93/28 33/95/28 36/96/28 +f 49/97/28 43/90/28 48/91/28 +f 21/98/28 24/99/28 30/93/28 +f 21/98/28 36/96/28 37/88/28 +f 21/98/28 30/93/28 36/96/28 +f 4/100/28 49/97/28 52/101/28 +f 4/100/28 52/101/28 3/102/28 +f 13/103/28 16/104/28 21/98/28 +f 13/103/28 37/88/28 43/90/28 +f 13/103/28 21/98/28 37/88/28 +f 8/105/28 4/100/28 5/106/28 +f 27/107/28 12/108/28 13/103/28 +f 27/107/28 13/103/28 43/90/28 +f 19/109/28 8/105/28 9/110/28 +f 19/109/28 9/110/28 18/111/28 +f 19/109/28 26/112/28 27/107/28 +f 19/109/28 43/90/28 49/97/28 +f 19/109/28 49/97/28 4/100/28 +f 19/109/28 4/100/28 8/105/28 +f 19/109/28 27/107/28 43/90/28 diff --git a/screenshot_0001.jpg b/screenshot_0001.jpg new file mode 100644 index 0000000..40e8f7a Binary files /dev/null and b/screenshot_0001.jpg differ diff --git a/screenshot_0002.jpg b/screenshot_0002.jpg new file mode 100644 index 0000000..c48edd5 Binary files /dev/null and b/screenshot_0002.jpg differ diff --git a/textures/ldm32_beam.png b/textures/ldm32_beam.png new file mode 100644 index 0000000..b700b66 Binary files /dev/null and b/textures/ldm32_beam.png differ diff --git a/textures/ldm32_casing.png b/textures/ldm32_casing.png new file mode 100644 index 0000000..9c3d4a4 Binary files /dev/null and b/textures/ldm32_casing.png differ diff --git a/textures/ldm32_casing2.png b/textures/ldm32_casing2.png new file mode 100644 index 0000000..eb2c65c Binary files /dev/null and b/textures/ldm32_casing2.png differ diff --git a/textures/ldm32_inventory.png b/textures/ldm32_inventory.png new file mode 100644 index 0000000..1601c84 Binary files /dev/null and b/textures/ldm32_inventory.png differ