From 9b40d02fbd9e8c39c5c64cc7de89a7fe45382f04 Mon Sep 17 00:00:00 2001 From: SmallJoker <mk939@ymail.com> Date: Sat, 04 Aug 2018 09:57:30 +0200 Subject: [PATCH] Revert get_3d to deprecated get3d for 0.4.x compatibility --- technic/machines/LV/cnc_api.lua | 495 ++++++++++++++++++++++++++++-------------------------- 1 files changed, 254 insertions(+), 241 deletions(-) diff --git a/technic/machines/LV/cnc_api.lua b/technic/machines/LV/cnc_api.lua index 58708c9..f5aae5c 100644 --- a/technic/machines/LV/cnc_api.lua +++ b/technic/machines/LV/cnc_api.lua @@ -5,293 +5,305 @@ technic.cnc = {} -technic.cnc.detail_level = 16 - -- REGISTER NONCUBIC FORMS, CREATE MODELS AND RECIPES: ------------------------------------------------------ -local function cnc_sphere() - local nodebox = {} - local detail = technic.cnc.detail_level - local sehne - for i = 1, detail - 1 do - sehne = math.sqrt(0.25 - (((i / detail) - 0.5) ^ 2)) - nodebox[i]={-sehne, (i/detail) - 0.5, -sehne, sehne, (i/detail)+(1/detail)-0.5, sehne} - end - return nodebox -end - -local function cnc_cylinder_horizontal() - local nodebox = {} - local detail = technic.cnc.detail_level - local sehne - for i = 1, detail - 1 do - sehne = math.sqrt(0.25 - (((i / detail) - 0.5) ^ 2)) - nodebox[i]={-0.5, (i/detail)-0.5, -sehne, 0.5, (i/detail)+(1/detail)-0.5, sehne} - end - return nodebox -end - -local function cnc_cylinder() - local nodebox = {} - local detail = technic.cnc.detail_level - local sehne - for i = 1, detail - 1 do - sehne = math.sqrt(0.25 - (((i / detail) - 0.5) ^ 2)) - nodebox[i]={(i/detail) - 0.5, -0.5, -sehne, (i/detail)+(1/detail)-0.5, 0.5, sehne} - end - return nodebox -end - -local function cnc_twocurvededge() - local nodebox = {} - local detail = technic.cnc.detail_level * 2 - local sehne - for i = (detail / 2) - 1, detail - 1 do - sehne = math.sqrt(0.25 - (((i / detail) - 0.5) ^ 2)) - nodebox[i]={-sehne, -0.5, -sehne, 0.5, (i/detail)+(1/detail)-0.5, 0.5} - end - return nodebox -end - -local function cnc_onecurvededge() - local nodebox = {} - local detail = technic.cnc.detail_level * 2 - local sehne - for i = (detail / 2) - 1, detail - 1 do - sehne = math.sqrt(0.25 - (((i / detail) - 0.5) ^ 2)) - nodebox[i]={-0.5, -0.5, -sehne, 0.5, (i/detail)+(1/detail)-0.5, 0.5} - end - return nodebox -end - -local function cnc_spike() - local nodebox = {} - local detail = technic.cnc.detail_level - for i = 0, detail - 1 do - nodebox[i+1] = {(i/detail/2)-0.5, (i/detail/2)-0.5, (i/detail/2)-0.5, - 0.5-(i/detail/2), (i/detail)-0.5+(1/detail), 0.5-(i/detail/2)} - end - return nodebox -end - -local function cnc_pyramid() - local nodebox = {} - local detail = technic.cnc.detail_level / 2 - for i = 0, detail - 1 do - nodebox[i+1] = {(i/detail/2)-0.5, (i/detail/2)-0.5, (i/detail/2)-0.5, 0.5-(i/detail/2), (i/detail/2)-0.5+(1/detail), 0.5-(i/detail/2)} - end - return nodebox -end - -local function cnc_slope_inner_edge_upsdown() - local nodebox = {} - local detail = technic.cnc.detail_level - for i = 0, detail-1 do - nodebox[i+1] = {0.5-(i/detail)-(1/detail), (i/detail)-0.5, -0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} - nodebox[i+detail+1] = {-0.5, (i/detail)-0.5, 0.5-(i/detail)-(1/detail), 0.5, (i/detail)-0.5+(1/detail), 0.5} - end - return nodebox -end - -local function cnc_slope_edge_upsdown() - local nodebox = {} - local detail = technic.cnc.detail_level - for i = 0, detail-1 do - nodebox[i+1] = {(-1*(i/detail))+0.5-(1/detail), (i/detail)-0.5, (-1*(i/detail))+0.5-(1/detail), 0.5, (i/detail)-0.5+(1/detail), 0.5} - end - return nodebox -end - -local function cnc_slope_inner_edge() - local nodebox = {} - local detail = technic.cnc.detail_level - for i = 0, detail-1 do - nodebox[i+1] = {(i/detail)-0.5, -0.5, -0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} - nodebox[i+detail+1] = {-0.5, -0.5, (i/detail)-0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} - end - return nodebox -end - -local function cnc_slope_edge() - local nodebox = {} - local detail = technic.cnc.detail_level - for i = 0, detail-1 do - nodebox[i+1] = {(i/detail)-0.5, -0.5, (i/detail)-0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} - end - return nodebox -end - -local function cnc_slope_upsdown() - local nodebox = {} - local detail = technic.cnc.detail_level - for i = 0, detail-1 do - nodebox[i+1] = {-0.5, (i/detail)-0.5, (-1*(i/detail))+0.5-(1/detail), 0.5, (i/detail)-0.5+(1/detail), 0.5} - end - return nodebox -end - -local function cnc_slope_lying() - local nodebox = {} - local detail = technic.cnc.detail_level - for i = 0, detail-1 do - nodebox[i+1] = {(i/detail)-0.5, -0.5, (i/detail)-0.5, (i/detail)-0.5+(1/detail), 0.5 , 0.5} - end - return nodebox -end - -local function cnc_slope() - local nodebox = {} - local detail = technic.cnc.detail_level - for i = 0, detail-1 do - nodebox[i+1] = {-0.5, (i/detail)-0.5, (i/detail)-0.5, 0.5, (i/detail)-0.5+(1/detail), 0.5} - end - return nodebox -end -- Define slope boxes for the various nodes ------------------------------------------- technic.cnc.programs = { - {suffix = "technic_cnc_stick", - nodebox = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}, - desc = S("Stick")}, + { suffix = "technic_cnc_stick", + model = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}, + desc = S("Stick") + }, - {suffix = "technic_cnc_element_end_double", - nodebox = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.5}, - desc = S("Element End Double")}, + { suffix = "technic_cnc_element_end_double", + model = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.5}, + desc = S("Element End Double") + }, - {suffix = "technic_cnc_element_cross_double", - nodebox = { - {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}, - {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, - {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}}, - desc = S("Element Cross Double")}, + { suffix = "technic_cnc_element_cross_double", + model = { + {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}, + {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, + {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}}, + desc = S("Element Cross Double") + }, - {suffix = "technic_cnc_element_t_double", - nodebox = { - {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, - {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}, - {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}}, - desc = S("Element T Double")}, + { suffix = "technic_cnc_element_t_double", + model = { + {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, + {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}, + {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}}, + desc = S("Element T Double") + }, - {suffix = "technic_cnc_element_edge_double", - nodebox = { - {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, - {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}}, - desc = S("Element Edge Double")}, + { suffix = "technic_cnc_element_edge_double", + model = { + {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, + {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}}, + desc = S("Element Edge Double") + }, - {suffix = "technic_cnc_element_straight_double", - nodebox = {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, - desc = S("Element Straight Double")}, + { suffix = "technic_cnc_element_straight_double", + model = {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, + desc = S("Element Straight Double") + }, - {suffix = "technic_cnc_element_end", - nodebox = {-0.3, -0.5, -0.3, 0.3, 0, 0.5}, - desc = S("Element End")}, + { suffix = "technic_cnc_element_end", + model = {-0.3, -0.5, -0.3, 0.3, 0, 0.5}, + desc = S("Element End") + }, - {suffix = "technic_cnc_element_cross", - nodebox = { - {0.3, -0.5, -0.3, 0.5, 0, 0.3}, - {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, - {-0.5, -0.5, -0.3, -0.3, 0, 0.3}}, - desc = S("Element Cross")}, + { suffix = "technic_cnc_element_cross", + model = { + {0.3, -0.5, -0.3, 0.5, 0, 0.3}, + {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, + {-0.5, -0.5, -0.3, -0.3, 0, 0.3}}, + desc = S("Element Cross") + }, - {suffix = "technic_cnc_element_t", - nodebox = { - {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, - {-0.5, -0.5, -0.3, -0.3, 0, 0.3}, - {0.3, -0.5, -0.3, 0.5, 0, 0.3}}, - desc = S("Element T")}, + { suffix = "technic_cnc_element_t", + model = { + {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, + {-0.5, -0.5, -0.3, -0.3, 0, 0.3}, + {0.3, -0.5, -0.3, 0.5, 0, 0.3}}, + desc = S("Element T") + }, - {suffix = "technic_cnc_element_edge", - nodebox = { - {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, - {-0.5, -0.5, -0.3, -0.3, 0, 0.3}}, - desc = S("Element Edge")}, + { suffix = "technic_cnc_element_edge", + model = { + {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, + {-0.5, -0.5, -0.3, -0.3, 0, 0.3}}, + desc = S("Element Edge") + }, - {suffix = "technic_cnc_element_straight", - nodebox = {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, - desc = S("Element Straight")}, + { suffix = "technic_cnc_element_straight", + model = {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, + desc = S("Element Straight") + }, - {suffix = "technic_cnc_sphere", - nodebox = cnc_sphere(), - desc = S("Sphere")}, + { suffix = "technic_cnc_oblate_spheroid", + model = "technic_oblate_spheroid.obj", + desc = S("Oblate spheroid"), + cbox = { + type = "fixed", + fixed = { + { -6/16, 4/16, -6/16, 6/16, 8/16, 6/16 }, + { -8/16, -4/16, -8/16, 8/16, 4/16, 8/16 }, + { -6/16, -8/16, -6/16, 6/16, -4/16, 6/16 } + } + } + }, - {suffix = "technic_cnc_cylinder_horizontal", - nodebox = cnc_cylinder_horizontal(), - desc = S("Horizontal Cylinder")}, + { suffix = "technic_cnc_sphere", + model = "technic_sphere.obj", + desc = S("Sphere") + }, - {suffix = "technic_cnc_cylinder", - nodebox = cnc_cylinder(), - desc = S("Cylinder")}, + { suffix = "technic_cnc_cylinder_horizontal", + model = "technic_cylinder_horizontal.obj", + desc = S("Horizontal Cylinder") + }, - {suffix = "technic_cnc_twocurvededge", - nodebox = cnc_twocurvededge(), - desc = S("Two Curved Edge Block")}, + { suffix = "technic_cnc_cylinder", + model = "technic_cylinder.obj", + desc = S("Cylinder") + }, - {suffix = "technic_cnc_onecurvededge", - nodebox = cnc_onecurvededge(), - desc = S("One Curved Edge Block")}, + { suffix = "technic_cnc_twocurvededge", + model = "technic_two_curved_edge.obj", + desc = S("Two Curved Edge/Corner Block") + }, - {suffix = "technic_cnc_spike", - nodebox = cnc_spike(), - desc = S("Spike")}, + { suffix = "technic_cnc_onecurvededge", + model = "technic_one_curved_edge.obj", + desc = S("One Curved Edge Block") + }, - {suffix = "technic_cnc_pyramid", - nodebox = cnc_pyramid(), - desc = S("Pyramid")}, + { suffix = "technic_cnc_spike", + model = "technic_pyramid_spike.obj", + desc = S("Spike"), + cbox = { + type = "fixed", + fixed = { + { -2/16, 4/16, -2/16, 2/16, 8/16, 2/16 }, + { -4/16, 0, -4/16, 4/16, 4/16, 4/16 }, + { -6/16, -4/16, -6/16, 6/16, 0, 6/16 }, + { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 } + } + } + }, - {suffix = "technic_cnc_slope_inner_edge_upsdown", - nodebox = cnc_slope_inner_edge_upsdown(), - desc = S("Slope Upside Down Inner Edge")}, + { suffix = "technic_cnc_pyramid", + model = "technic_pyramid.obj", + desc = S("Pyramid"), + cbox = { + type = "fixed", + fixed = { + { -2/16, -2/16, -2/16, 2/16, 0, 2/16 }, + { -4/16, -4/16, -4/16, 4/16, -2/16, 4/16 }, + { -6/16, -6/16, -6/16, 6/16, -4/16, 6/16 }, + { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 } + } + } + }, - {suffix = "technic_cnc_slope_edge_upsdown", - nodebox = cnc_slope_edge_upsdown(), - desc = S("Slope Upside Down Edge")}, + { suffix = "technic_cnc_slope_inner_edge_upsdown", + model = "technic_innercorner_upsdown.obj", + desc = S("Slope Upside Down Inner Edge/Corner"), + sbox = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 } + }, + cbox = { + type = "fixed", + fixed = { + { 0.25, -0.25, -0.5, 0.5, -0.5, 0.5 }, + { -0.5, -0.25, 0.25, 0.5, -0.5, 0.5 }, + { 0, 0, -0.5, 0.5, -0.25, 0.5 }, + { -0.5, 0, 0, 0.5, -0.25, 0.5 }, + { -0.25, 0.25, -0.5, 0.5, 0, -0.25 }, + { -0.5, 0.25, -0.25, 0.5, 0, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 0.25, 0.5 } + } + } + }, - {suffix = "technic_cnc_slope_inner_edge", - nodebox = cnc_slope_inner_edge(), - desc = S("Slope Inner Edge")}, + { suffix = "technic_cnc_slope_edge_upsdown", + model = "technic_outercorner_upsdown.obj", + desc = S("Slope Upside Down Outer Edge/Corner"), + cbox = { + type = "fixed", + fixed = { + { -8/16, 8/16, -8/16, 8/16, 4/16, 8/16 }, + { -4/16, 4/16, -4/16, 8/16, 0, 8/16 }, + { 0, 0, 0, 8/16, -4/16, 8/16 }, + { 4/16, -4/16, 4/16, 8/16, -8/16, 8/16 } + } + } + }, - {suffix = "technic_cnc_slope_edge", - nodebox = cnc_slope_edge(), - desc = S("Slope Edge")}, + { suffix = "technic_cnc_slope_inner_edge", + model = "technic_innercorner.obj", + desc = S("Slope Inner Edge/Corner"), + sbox = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 } + }, + cbox = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }, + { -0.5, -0.25, -0.25, 0.5, 0, 0.5 }, + { -0.25, -0.25, -0.5, 0.5, 0, -0.25 }, + { -0.5, 0, 0, 0.5, 0.25, 0.5 }, + { 0, 0, -0.5, 0.5, 0.25, 0.5 }, + { -0.5, 0.25, 0.25, 0.5, 0.5, 0.5 }, + { 0.25, 0.25, -0.5, 0.5, 0.5, 0.5 } + } + } + }, - {suffix = "technic_cnc_slope_upsdown", - nodebox = cnc_slope_upsdown(), - desc = S("Slope Upside Down")}, + { suffix = "technic_cnc_slope_edge", + model = "technic_outercorner.obj", + desc = S("Slope Outer Edge/Corner"), + cbox = { + type = "fixed", + fixed = { + { 4/16, 4/16, 4/16, 8/16, 8/16, 8/16 }, + { 0, 0, 0, 8/16, 4/16, 8/16 }, + { -4/16, -4/16, -4/16, 8/16, 0, 8/16 }, + { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 } + } + } + }, - {suffix = "technic_cnc_slope_lying", - nodebox = cnc_slope_lying(), - desc = S("Slope Lying")}, + { suffix = "technic_cnc_slope_upsdown", + model = "technic_slope_upsdown.obj", + desc = S("Slope Upside Down"), + cbox = { + type = "fixed", + fixed = { + { -8/16, 8/16, -8/16, 8/16, 4/16, 8/16 }, + { -8/16, 4/16, -4/16, 8/16, 0, 8/16 }, + { -8/16, 0, 0, 8/16, -4/16, 8/16 }, + { -8/16, -4/16, 4/16, 8/16, -8/16, 8/16 } + } + } + }, - {suffix = "technic_cnc_slope", - nodebox = cnc_slope(), - desc = S("Slope")}, + { suffix = "technic_cnc_slope_lying", + model = "technic_slope_horizontal.obj", + desc = S("Slope Lying"), + cbox = { + type = "fixed", + fixed = { + { 4/16, -8/16, 4/16, 8/16, 8/16, 8/16 }, + { 0, -8/16, 0, 4/16, 8/16, 8/16 }, + { -4/16, -8/16, -4/16, 0, 8/16, 8/16 }, + { -8/16, -8/16, -8/16, -4/16, 8/16, 8/16 } + } + } + }, + + { suffix = "technic_cnc_slope", + model = "technic_slope.obj", + desc = S("Slope"), + cbox = { + type = "fixed", + fixed = { + { -8/16, 4/16, 4/16, 8/16, 8/16, 8/16 }, + { -8/16, 0, 0, 8/16, 4/16, 8/16 }, + { -8/16, -4/16, -4/16, 8/16, 0, 8/16 }, + { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 } + } + } + }, + } -- Allow disabling certain programs for some node. Default is allowing all types for all nodes technic.cnc.programs_disable = { -- ["default:brick"] = {"technic_cnc_stick"}, -- Example: Disallow the stick for brick -- ... - ["default:dirt"] = {"technic_cnc_sphere", "technic_cnc_slope_upsdown", "technic_cnc_edge", + ["default:dirt"] = {"technic_cnc_oblate_spheroid", "technic_cnc_slope_upsdown", "technic_cnc_edge", "technic_cnc_inner_edge", "technic_cnc_slope_edge_upsdown", "technic_cnc_slope_inner_edge_upsdown", "technic_cnc_stick", "technic_cnc_cylinder_horizontal"} } -- Generic function for registering all the different node types -function technic.cnc.register_program(recipeitem, suffix, nodebox, groups, images, description) +function technic.cnc.register_program(recipeitem, suffix, model, groups, images, description, cbox, sbox) + + local dtype + local nodeboxdef + local meshdef + + if type(model) ~= "string" then -- assume a nodebox if it's a table or function call + dtype = "nodebox" + nodeboxdef = { + type = "fixed", + fixed = model + } + else + dtype = "mesh" + meshdef = model + end + + if cbox and not sbox then sbox = cbox end + minetest.register_node(":"..recipeitem.."_"..suffix, { description = description, - drawtype = "nodebox", + drawtype = dtype, + node_box = nodeboxdef, + mesh = meshdef, tiles = images, paramtype = "light", paramtype2 = "facedir", walkable = true, - node_box = { - type = "fixed", - fixed = nodebox - }, groups = groups, + selection_box = sbox, + collision_box = cbox }) end @@ -309,7 +321,8 @@ end -- Create the node if it passes the test if do_register then - technic.cnc.register_program(recipeitem, data.suffix, data.nodebox, groups, images, description.." "..data.desc) + technic.cnc.register_program(recipeitem, data.suffix, data.model, + groups, images, description.." "..data.desc, data.cbox, data.sbox) end end end @@ -317,7 +330,7 @@ -- REGISTER NEW TECHNIC_CNC_API's PART 2: technic.cnc..register_element_end(subname, recipeitem, groups, images, desc_element_xyz) ----------------------------------------------------------------------------------------------------------------------- -function technic.cnc.register_slope_edge_etc(recipeitem, groups, images, desc_slope, desc_slope_lying, desc_slope_upsdown, desc_slope_edge, desc_slope_inner_edge, desc_slope_upsdwn_edge, desc_slope_upsdwn_inner_edge, desc_pyramid, desc_spike, desc_onecurvededge, desc_twocurvededge, desc_cylinder, desc_cylinder_horizontal, desc_sphere, desc_element_straight, desc_element_edge, desc_element_t, desc_element_cross, desc_element_end) +function technic.cnc.register_slope_edge_etc(recipeitem, groups, images, desc_slope, desc_slope_lying, desc_slope_upsdown, desc_slope_edge, desc_slope_inner_edge, desc_slope_upsdwn_edge, desc_slope_upsdwn_inner_edge, desc_pyramid, desc_spike, desc_onecurvededge, desc_twocurvededge, desc_cylinder, desc_cylinder_horizontal, desc_spheroid, desc_element_straight, desc_element_edge, desc_element_t, desc_element_cross, desc_element_end) technic.cnc.register_slope(recipeitem, groups, images, desc_slope) technic.cnc.register_slope_lying(recipeitem, groups, images, desc_slope_lying) @@ -332,7 +345,7 @@ technic.cnc.register_twocurvededge(recipeitem, groups, images, desc_twocurvededge) technic.cnc.register_cylinder(recipeitem, groups, images, desc_cylinder) technic.cnc.register_cylinder_horizontal(recipeitem, groups, images, desc_cylinder_horizontal) - technic.cnc.register_sphere(recipeitem, groups, images, desc_sphere) + technic.cnc.register_spheroid(recipeitem, groups, images, desc_spheroid) technic.cnc.register_element_straight(recipeitem, groups, images, desc_element_straight) technic.cnc.register_element_edge(recipeitem, groups, images, desc_element_edge) technic.cnc.register_element_t(recipeitem, groups, images, desc_element_t) -- Gitblit v1.8.0