From 856b86858ebfa4af2c352b022188f82dcff7ed92 Mon Sep 17 00:00:00 2001 From: Vanessa Dannenberg Date: Sat, 1 Dec 2018 09:06:00 -0500 Subject: update basic_materials, biome_lib, technic, digilines, digistuff, gloopblocks, homedecor, moreblocks, pipeworks, prefab_redo --- basic_materials/electrical-electronic.lua | 3 +- basic_materials/metals.lua | 3 +- biome_lib/init.lua | 8 +- concrete/depends.txt | 2 +- concrete/init.lua | 14 + digilines/lcd.lua | 94 +- digistuff/button.lua | 160 ++ digistuff/camera.lua | 98 + digistuff/conductors.lua | 62 + digistuff/depends.txt | 1 + digistuff/detector.lua | 63 + digistuff/init.lua | 1123 +----------- digistuff/light.lua | 71 + digistuff/nic.lua | 69 + digistuff/noteblock.lua | 64 + digistuff/panel.lua | 151 ++ digistuff/piezo.lua | 80 + digistuff/piston.lua | 222 +++ digistuff/sounds/digistuff_piston_extend.ogg | Bin 0 -> 6301 bytes digistuff/sounds/digistuff_piston_retract.ogg | Bin 0 -> 6214 bytes digistuff/textures/digistuff_piston_sides.png | Bin 0 -> 5179 bytes digistuff/touchscreen.lua | 279 +++ extranodes/init.lua | 57 +- gloopblocks/init.lua | 8 - homedecor/crafts.lua | 14 +- moreblocks/CHANGELOG.md | 13 +- moreblocks/LICENSE.md | 2 +- moreblocks/README.md | 2 +- moreblocks/aliases.lua | 2 +- moreblocks/circular_saw.lua | 2 +- moreblocks/config.lua | 2 +- moreblocks/crafting.lua | 2 +- moreblocks/depends.txt | 1 + moreblocks/init.lua | 2 +- moreblocks/nodes.lua | 2 +- moreblocks/ownership.lua | 2 +- moreblocks/redefinitions.lua | 2 +- moreblocks/stairsplus/aliases.lua | 2 +- moreblocks/stairsplus/conversion.lua | 2 +- moreblocks/stairsplus/init.lua | 2 +- moreblocks/stairsplus/microblocks.lua | 2 +- moreblocks/stairsplus/panels.lua | 2 +- moreblocks/stairsplus/recipes.lua | 4 +- moreblocks/stairsplus/registrations.lua | 32 +- moreblocks/stairsplus/slabs.lua | 2 +- moreblocks/stairsplus/slopes.lua | 2 +- moreblocks/stairsplus/stairs.lua | 2 +- pipeworks/autoplace_tubes.lua | 2 +- prefab_redo/depends.txt | 1 - prefab_redo/init.lua | 22 - technic/crafts.lua | 6 + technic/locale/de.txt | 36 - technic/locale/es.txt | 35 - technic/locale/it.txt | 36 - technic/locale/template.txt | 35 - technic/machines/LV/cnc.lua | 230 --- technic/machines/LV/cnc_api.lua | 369 ---- technic/machines/LV/cnc_nodes.lua | 91 - technic/machines/LV/init.lua | 5 - technic/machines/register/cables.lua | 22 +- technic/models/technic_cylinder.obj | 238 --- technic/models/technic_cylinder_horizontal.obj | 238 --- technic/models/technic_innercorner.obj | 33 - technic/models/technic_innercorner_upsdown.obj | 33 - technic/models/technic_oblate_spheroid.obj | 300 --- technic/models/technic_one_curved_edge.obj | 132 -- technic/models/technic_outercorner.obj | 23 - technic/models/technic_outercorner_upsdown.obj | 23 - technic/models/technic_pyramid.obj | 24 - technic/models/technic_pyramid_spike.obj | 24 - technic/models/technic_slope.obj | 24 - technic/models/technic_slope_horizontal.obj | 24 - technic/models/technic_slope_upsdown.obj | 24 - technic/models/technic_sphere.obj | 1927 -------------------- technic/models/technic_two_curved_edge.obj | 207 --- technic/textures/technic_cnc_bottom.png | Bin 2006 -> 0 bytes technic/textures/technic_cnc_cylinder.png | Bin 6047 -> 0 bytes .../textures/technic_cnc_cylinder_horizontal.png | Bin 7130 -> 0 bytes technic/textures/technic_cnc_element_cross.png | Bin 4592 -> 0 bytes technic/textures/technic_cnc_element_edge.png | Bin 3898 -> 0 bytes technic/textures/technic_cnc_element_end.png | Bin 3563 -> 0 bytes technic/textures/technic_cnc_element_straight.png | Bin 4027 -> 0 bytes technic/textures/technic_cnc_element_t.png | Bin 4369 -> 0 bytes technic/textures/technic_cnc_front.png | Bin 2000 -> 0 bytes technic/textures/technic_cnc_front_active.png | Bin 2216 -> 0 bytes technic/textures/technic_cnc_full.png | Bin 997 -> 0 bytes technic/textures/technic_cnc_half.png | Bin 1564 -> 0 bytes .../textures/technic_cnc_milling_background.png | Bin 78748 -> 0 bytes technic/textures/technic_cnc_oblate_spheroid.png | Bin 8915 -> 0 bytes technic/textures/technic_cnc_onecurvededge.png | Bin 8170 -> 0 bytes technic/textures/technic_cnc_pyramid.png | Bin 4790 -> 0 bytes technic/textures/technic_cnc_side.png | Bin 1922 -> 0 bytes technic/textures/technic_cnc_slope.png | Bin 6081 -> 0 bytes technic/textures/technic_cnc_slope_edge.png | Bin 5900 -> 0 bytes technic/textures/technic_cnc_slope_edge_upsdwn.png | Bin 4831 -> 0 bytes technic/textures/technic_cnc_slope_inner_edge.png | Bin 7412 -> 0 bytes .../technic_cnc_slope_inner_edge_upsdwn.png | Bin 7404 -> 0 bytes technic/textures/technic_cnc_slope_lying.png | Bin 6815 -> 0 bytes technic/textures/technic_cnc_slope_upsdwn.png | Bin 5814 -> 0 bytes technic/textures/technic_cnc_sphere.png | Bin 5777 -> 0 bytes technic/textures/technic_cnc_spike.png | Bin 6392 -> 0 bytes technic/textures/technic_cnc_stick.png | Bin 2305 -> 0 bytes technic/textures/technic_cnc_top.png | Bin 2137 -> 0 bytes technic/textures/technic_cnc_top_active.png | Bin 2214 -> 0 bytes technic/textures/technic_cnc_twocurvededge.png | Bin 7119 -> 0 bytes technic_cnc/cnc.lua | 300 +++ technic_cnc/cnc_api.lua | 367 ++++ technic_cnc/cnc_materials.lua | 131 ++ technic_cnc/depends.txt | 3 + technic_cnc/init.lua | 18 + technic_cnc/locale/de.txt | 36 + technic_cnc/locale/es.txt | 35 + technic_cnc/locale/it.txt | 36 + technic_cnc/locale/template.txt | 36 + technic_cnc/models/technic_cnc_cylinder.obj | 238 +++ .../models/technic_cnc_cylinder_horizontal.obj | 238 +++ technic_cnc/models/technic_cnc_innercorner.obj | 33 + .../models/technic_cnc_innercorner_upsdown.obj | 33 + technic_cnc/models/technic_cnc_oblate_spheroid.obj | 300 +++ technic_cnc/models/technic_cnc_one_curved_edge.obj | 132 ++ technic_cnc/models/technic_cnc_outercorner.obj | 23 + .../models/technic_cnc_outercorner_upsdown.obj | 23 + technic_cnc/models/technic_cnc_pyramid.obj | 24 + technic_cnc/models/technic_cnc_pyramid_spike.obj | 24 + technic_cnc/models/technic_cnc_slope.obj | 24 + .../models/technic_cnc_slope_horizontal.obj | 24 + technic_cnc/models/technic_cnc_slope_upsdown.obj | 24 + technic_cnc/models/technic_cnc_sphere.obj | 1927 ++++++++++++++++++++ technic_cnc/models/technic_cnc_two_curved_edge.obj | 207 +++ technic_cnc/textures/technic_cnc_bottom.png | Bin 0 -> 2006 bytes technic_cnc/textures/technic_cnc_cylinder.png | Bin 0 -> 6047 bytes .../textures/technic_cnc_cylinder_horizontal.png | Bin 0 -> 7130 bytes technic_cnc/textures/technic_cnc_element_cross.png | Bin 0 -> 4592 bytes technic_cnc/textures/technic_cnc_element_edge.png | Bin 0 -> 3898 bytes technic_cnc/textures/technic_cnc_element_end.png | Bin 0 -> 3563 bytes .../textures/technic_cnc_element_straight.png | Bin 0 -> 4027 bytes technic_cnc/textures/technic_cnc_element_t.png | Bin 0 -> 4369 bytes technic_cnc/textures/technic_cnc_front.png | Bin 0 -> 2000 bytes technic_cnc/textures/technic_cnc_front_active.png | Bin 0 -> 2216 bytes technic_cnc/textures/technic_cnc_full.png | Bin 0 -> 997 bytes technic_cnc/textures/technic_cnc_half.png | Bin 0 -> 1564 bytes .../textures/technic_cnc_milling_background.png | Bin 0 -> 78748 bytes .../textures/technic_cnc_oblate_spheroid.png | Bin 0 -> 8915 bytes technic_cnc/textures/technic_cnc_onecurvededge.png | Bin 0 -> 8170 bytes technic_cnc/textures/technic_cnc_pyramid.png | Bin 0 -> 4790 bytes technic_cnc/textures/technic_cnc_side.png | Bin 0 -> 1922 bytes technic_cnc/textures/technic_cnc_slope.png | Bin 0 -> 6081 bytes technic_cnc/textures/technic_cnc_slope_edge.png | Bin 0 -> 5900 bytes .../textures/technic_cnc_slope_edge_upsdwn.png | Bin 0 -> 4831 bytes .../textures/technic_cnc_slope_inner_edge.png | Bin 0 -> 7412 bytes .../technic_cnc_slope_inner_edge_upsdwn.png | Bin 0 -> 7404 bytes technic_cnc/textures/technic_cnc_slope_lying.png | Bin 0 -> 6815 bytes technic_cnc/textures/technic_cnc_slope_upsdwn.png | Bin 0 -> 5814 bytes technic_cnc/textures/technic_cnc_sphere.png | Bin 0 -> 5777 bytes technic_cnc/textures/technic_cnc_spike.png | Bin 0 -> 6392 bytes technic_cnc/textures/technic_cnc_stick.png | Bin 0 -> 2305 bytes technic_cnc/textures/technic_cnc_top.png | Bin 0 -> 2137 bytes technic_cnc/textures/technic_cnc_top_active.png | Bin 0 -> 2214 bytes technic_cnc/textures/technic_cnc_twocurvededge.png | Bin 0 -> 7119 bytes 159 files changed, 5781 insertions(+), 5351 deletions(-) create mode 100644 digistuff/button.lua create mode 100644 digistuff/camera.lua create mode 100644 digistuff/conductors.lua create mode 100644 digistuff/detector.lua create mode 100644 digistuff/light.lua create mode 100644 digistuff/nic.lua create mode 100644 digistuff/noteblock.lua create mode 100644 digistuff/panel.lua create mode 100644 digistuff/piezo.lua create mode 100644 digistuff/piston.lua create mode 100644 digistuff/sounds/digistuff_piston_extend.ogg create mode 100644 digistuff/sounds/digistuff_piston_retract.ogg create mode 100644 digistuff/textures/digistuff_piston_sides.png create mode 100644 digistuff/touchscreen.lua delete mode 100644 technic/machines/LV/cnc.lua delete mode 100644 technic/machines/LV/cnc_api.lua delete mode 100644 technic/machines/LV/cnc_nodes.lua delete mode 100644 technic/models/technic_cylinder.obj delete mode 100644 technic/models/technic_cylinder_horizontal.obj delete mode 100644 technic/models/technic_innercorner.obj delete mode 100644 technic/models/technic_innercorner_upsdown.obj delete mode 100644 technic/models/technic_oblate_spheroid.obj delete mode 100644 technic/models/technic_one_curved_edge.obj delete mode 100644 technic/models/technic_outercorner.obj delete mode 100644 technic/models/technic_outercorner_upsdown.obj delete mode 100644 technic/models/technic_pyramid.obj delete mode 100644 technic/models/technic_pyramid_spike.obj delete mode 100644 technic/models/technic_slope.obj delete mode 100644 technic/models/technic_slope_horizontal.obj delete mode 100644 technic/models/technic_slope_upsdown.obj delete mode 100644 technic/models/technic_sphere.obj delete mode 100644 technic/models/technic_two_curved_edge.obj delete mode 100644 technic/textures/technic_cnc_bottom.png delete mode 100644 technic/textures/technic_cnc_cylinder.png delete mode 100644 technic/textures/technic_cnc_cylinder_horizontal.png delete mode 100644 technic/textures/technic_cnc_element_cross.png delete mode 100644 technic/textures/technic_cnc_element_edge.png delete mode 100644 technic/textures/technic_cnc_element_end.png delete mode 100644 technic/textures/technic_cnc_element_straight.png delete mode 100644 technic/textures/technic_cnc_element_t.png delete mode 100644 technic/textures/technic_cnc_front.png delete mode 100644 technic/textures/technic_cnc_front_active.png delete mode 100644 technic/textures/technic_cnc_full.png delete mode 100644 technic/textures/technic_cnc_half.png delete mode 100644 technic/textures/technic_cnc_milling_background.png delete mode 100644 technic/textures/technic_cnc_oblate_spheroid.png delete mode 100644 technic/textures/technic_cnc_onecurvededge.png delete mode 100644 technic/textures/technic_cnc_pyramid.png delete mode 100644 technic/textures/technic_cnc_side.png delete mode 100644 technic/textures/technic_cnc_slope.png delete mode 100644 technic/textures/technic_cnc_slope_edge.png delete mode 100644 technic/textures/technic_cnc_slope_edge_upsdwn.png delete mode 100644 technic/textures/technic_cnc_slope_inner_edge.png delete mode 100644 technic/textures/technic_cnc_slope_inner_edge_upsdwn.png delete mode 100644 technic/textures/technic_cnc_slope_lying.png delete mode 100644 technic/textures/technic_cnc_slope_upsdwn.png delete mode 100644 technic/textures/technic_cnc_sphere.png delete mode 100644 technic/textures/technic_cnc_spike.png delete mode 100644 technic/textures/technic_cnc_stick.png delete mode 100644 technic/textures/technic_cnc_top.png delete mode 100644 technic/textures/technic_cnc_top_active.png delete mode 100644 technic/textures/technic_cnc_twocurvededge.png create mode 100644 technic_cnc/cnc.lua create mode 100644 technic_cnc/cnc_api.lua create mode 100644 technic_cnc/cnc_materials.lua create mode 100644 technic_cnc/depends.txt create mode 100644 technic_cnc/init.lua create mode 100644 technic_cnc/locale/de.txt create mode 100644 technic_cnc/locale/es.txt create mode 100644 technic_cnc/locale/it.txt create mode 100644 technic_cnc/locale/template.txt create mode 100644 technic_cnc/models/technic_cnc_cylinder.obj create mode 100644 technic_cnc/models/technic_cnc_cylinder_horizontal.obj create mode 100644 technic_cnc/models/technic_cnc_innercorner.obj create mode 100644 technic_cnc/models/technic_cnc_innercorner_upsdown.obj create mode 100644 technic_cnc/models/technic_cnc_oblate_spheroid.obj create mode 100644 technic_cnc/models/technic_cnc_one_curved_edge.obj create mode 100644 technic_cnc/models/technic_cnc_outercorner.obj create mode 100644 technic_cnc/models/technic_cnc_outercorner_upsdown.obj create mode 100644 technic_cnc/models/technic_cnc_pyramid.obj create mode 100644 technic_cnc/models/technic_cnc_pyramid_spike.obj create mode 100644 technic_cnc/models/technic_cnc_slope.obj create mode 100644 technic_cnc/models/technic_cnc_slope_horizontal.obj create mode 100644 technic_cnc/models/technic_cnc_slope_upsdown.obj create mode 100644 technic_cnc/models/technic_cnc_sphere.obj create mode 100644 technic_cnc/models/technic_cnc_two_curved_edge.obj create mode 100644 technic_cnc/textures/technic_cnc_bottom.png create mode 100644 technic_cnc/textures/technic_cnc_cylinder.png create mode 100644 technic_cnc/textures/technic_cnc_cylinder_horizontal.png create mode 100644 technic_cnc/textures/technic_cnc_element_cross.png create mode 100644 technic_cnc/textures/technic_cnc_element_edge.png create mode 100644 technic_cnc/textures/technic_cnc_element_end.png create mode 100644 technic_cnc/textures/technic_cnc_element_straight.png create mode 100644 technic_cnc/textures/technic_cnc_element_t.png create mode 100644 technic_cnc/textures/technic_cnc_front.png create mode 100644 technic_cnc/textures/technic_cnc_front_active.png create mode 100644 technic_cnc/textures/technic_cnc_full.png create mode 100644 technic_cnc/textures/technic_cnc_half.png create mode 100644 technic_cnc/textures/technic_cnc_milling_background.png create mode 100644 technic_cnc/textures/technic_cnc_oblate_spheroid.png create mode 100644 technic_cnc/textures/technic_cnc_onecurvededge.png create mode 100644 technic_cnc/textures/technic_cnc_pyramid.png create mode 100644 technic_cnc/textures/technic_cnc_side.png create mode 100644 technic_cnc/textures/technic_cnc_slope.png create mode 100644 technic_cnc/textures/technic_cnc_slope_edge.png create mode 100644 technic_cnc/textures/technic_cnc_slope_edge_upsdwn.png create mode 100644 technic_cnc/textures/technic_cnc_slope_inner_edge.png create mode 100644 technic_cnc/textures/technic_cnc_slope_inner_edge_upsdwn.png create mode 100644 technic_cnc/textures/technic_cnc_slope_lying.png create mode 100644 technic_cnc/textures/technic_cnc_slope_upsdwn.png create mode 100644 technic_cnc/textures/technic_cnc_sphere.png create mode 100644 technic_cnc/textures/technic_cnc_spike.png create mode 100644 technic_cnc/textures/technic_cnc_stick.png create mode 100644 technic_cnc/textures/technic_cnc_top.png create mode 100644 technic_cnc/textures/technic_cnc_top_active.png create mode 100644 technic_cnc/textures/technic_cnc_twocurvededge.png diff --git a/basic_materials/electrical-electronic.lua b/basic_materials/electrical-electronic.lua index 96eb142..065b921 100644 --- a/basic_materials/electrical-electronic.lua +++ b/basic_materials/electrical-electronic.lua @@ -72,7 +72,8 @@ minetest.register_craft({ minetest.register_alias("homedecor:ic", "basic_materials:ic") minetest.register_alias("homedecor:motor", "basic_materials:motor") +minetest.register_alias("technic:motor", "basic_materials:motor") minetest.register_alias("homedecor:heating_element", "basic_materials:heating_element") -minetest.register_alias("homedecor:power_crystal", "basic_materials:energy_crystal_simple") +minetest.register_alias("homedecor:power_crystal", "basic_materials:energy_crystal_simple") minetest.register_alias_force("mesecons_materials:silicon", "basic_materials:silicon") diff --git a/basic_materials/metals.lua b/basic_materials/metals.lua index 7a02d21..e4af694 100644 --- a/basic_materials/metals.lua +++ b/basic_materials/metals.lua @@ -262,7 +262,7 @@ minetest.register_craft( { minetest.register_alias("homedecor:copper_wire", "basic_materials:copper_wire") minetest.register_alias("technic:fine_copper_wire", "basic_materials:copper_wire") minetest.register_alias("technic:fine_silver_wire", "basic_materials:silver_wire") -minetest.register_alias("technic:fine_gold_wire", "basic_materialsgold_wire") +minetest.register_alias("technic:fine_gold_wire", "basic_materials:gold_wire") minetest.register_alias("homedecor:steel_wire", "basic_materials:steel_wire") @@ -282,3 +282,4 @@ minetest.register_alias("chains:chain_brass", "basic_materials:chai minetest.register_alias("pipeworks:gear", "basic_materials:gear_steel") minetest.register_alias("technic:rebar", "basic_materials:steel_bar") + diff --git a/biome_lib/init.lua b/biome_lib/init.lua index f8b05d2..818011f 100644 --- a/biome_lib/init.lua +++ b/biome_lib/init.lua @@ -34,8 +34,12 @@ biome_lib.queue_run_ratio = tonumber(minetest.settings:get("biome_lib_queue_run_ -- Boilerplate to support localized strings if intllib mod is installed. local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() +if minetest.global_exists("intllib") then + if intllib.make_gettext_pair then + S = intllib.make_gettext_pair() + else + S = intllib.Getter() + end else S = function(s) return s end end diff --git a/concrete/depends.txt b/concrete/depends.txt index 269e83a..5ca909c 100644 --- a/concrete/depends.txt +++ b/concrete/depends.txt @@ -1,4 +1,4 @@ default basic_materials intllib? - +moreblocks? diff --git a/concrete/init.lua b/concrete/init.lua index 1da6a51..d309613 100644 --- a/concrete/init.lua +++ b/concrete/init.lua @@ -61,6 +61,20 @@ minetest.register_node(":technic:blast_resistant_concrete", { end, }) +if minetest.get_modpath("moreblocks") then + stairsplus:register_all("technic","blast_resistant_concrete","technic:blast_resistant_concrete",{ + description = "Blast-resistant Concrete", + tiles = {"technic_blast_resistant_concrete_block.png",}, + groups = {cracky=1, level=3, concrete=1}, + sounds = default.node_sound_stone_defaults(), + on_blast = function(pos, intensity) + if intensity > 1 then + minetest.remove_node(pos) + minetest.add_item(pos, "technic:blast_resistant_concrete") + end + end, + }) +end local box_platform = {-0.5, 0.3, -0.5, 0.5, 0.5, 0.5} local box_post = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15} diff --git a/digilines/lcd.lua b/digilines/lcd.lua index ce17dac..19aa4a4 100644 --- a/digilines/lcd.lua +++ b/digilines/lcd.lua @@ -128,16 +128,49 @@ local clearscreen = function(pos) end end +local set_texture = function(ent) + local meta = minetest.get_meta(ent.object:get_pos()) + local text = meta:get_string("text") + ent.object:set_properties({ + textures = { + generate_texture(create_lines(text)) + } + }) +end + +local get_entity = function(pos) + local lcd_entity + local objects = minetest.get_objects_inside_radius(pos, 0.5) + for _, o in ipairs(objects) do + local o_entity = o:get_luaentity() + if o_entity and o_entity.name == "digilines_lcd:text" then + if not lcd_entity then + lcd_entity = o_entity + else + -- Remove extras, if any + o:remove() + end + end + end + return lcd_entity +end + +local spawn_entity = function(pos) + if not get_entity(pos) then + local lcd_info = lcds[minetest.get_node(pos).param2] + if not lcd_info then + return + end + local text = minetest.add_entity(vector.add(pos, lcd_info.delta), "digilines_lcd:text") + text:set_yaw(lcd_info.yaw or 0) + end +end + local prepare_writing = function(pos) - local lcd_info = lcds[minetest.get_node(pos).param2] - if lcd_info == nil then return end - local text = minetest.add_entity( - {x = pos.x + lcd_info.delta.x, - y = pos.y + lcd_info.delta.y, - z = pos.z + lcd_info.delta.z}, "digilines_lcd:text") - text:setyaw(lcd_info.yaw or 0) - --* text:setpitch(lcd_info.yaw or 0) - return text + local entity = get_entity(pos) + if entity then + set_texture(entity) + end end local on_digiline_receive = function(pos, _, channel, msg) @@ -147,7 +180,7 @@ local on_digiline_receive = function(pos, _, channel, msg) meta:set_string("text", msg) meta:set_string("infotext", msg) - clearscreen(pos) + if msg ~= "" then prepare_writing(pos) end @@ -165,30 +198,28 @@ minetest.register_node("digilines:lcd", { inventory_image = "lcd_lcd.png", wield_image = "lcd_lcd.png", tiles = {"lcd_anyside.png"}, - paramtype = "light", sunlight_propagates = true, + light_source = 6, paramtype2 = "wallmounted", node_box = lcd_box, selection_box = lcd_box, groups = {choppy = 3, dig_immediate = 2}, - - after_place_node = function (pos) + after_place_node = function(pos) local param2 = minetest.get_node(pos).param2 if param2 == 0 or param2 == 1 then minetest.add_node(pos, {name = "digilines:lcd", param2 = 3}) end - prepare_writing (pos) - end, - - on_construct = function(pos) - reset_meta(pos) + spawn_entity(pos) + prepare_writing(pos) end, - - on_destruct = function(pos) - clearscreen(pos) + on_construct = reset_meta, + on_destruct = clearscreen, + on_punch = function(pos, node, puncher, pointed_thing) + if minetest.is_player(puncher) then + spawn_entity(pos) + end end, - on_receive_fields = function(pos, _, fields, sender) local name = sender:get_player_name() if minetest.is_protected(pos, name) and not minetest.check_player_privs(name, {protection_bypass=true}) then @@ -199,28 +230,27 @@ minetest.register_node("digilines:lcd", { minetest.get_meta(pos):set_string("channel", fields.channel) end end, - - digiline = - { + digiline = { receptor = {}, effector = { action = on_digiline_receive }, }, +}) - light_source = 6, +minetest.register_lbm({ + label = "Replace Missing Text Entities", + name = "digilines:replace_text", + nodenames = {"digilines:lcd"}, + run_at_every_load = true, + action = spawn_entity, }) minetest.register_entity(":digilines_lcd:text", { collisionbox = { 0, 0, 0, 0, 0, 0 }, visual = "upright_sprite", textures = {}, - - on_activate = function(self) - local meta = minetest.get_meta(self.object:getpos()) - local text = meta:get_string("text") - self.object:set_properties({textures={generate_texture(create_lines(text))}}) - end + on_activate = set_texture, }) minetest.register_craft({ diff --git a/digistuff/button.lua b/digistuff/button.lua new file mode 100644 index 0000000..76022f6 --- /dev/null +++ b/digistuff/button.lua @@ -0,0 +1,160 @@ +digistuff.button_turnoff = function (pos) + local node = minetest.get_node(pos) + if node.name=="digistuff:button_on" then --has not been dug + minetest.swap_node(pos, {name = "digistuff:button_off", param2=node.param2}) + if minetest.get_modpath("mesecons") then minetest.sound_play("mesecons_button_pop", {pos=pos}) end + end +end + +minetest.register_node("digistuff:button", { + drawtype = "nodebox", + tiles = { + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_off.png" + }, + paramtype = "light", + paramtype2 = "facedir", + legacy_wallmounted = true, + walkable = false, + sunlight_propagates = true, + selection_box = { + type = "fixed", + fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 } + }, + node_box = { + type = "fixed", + fixed = { + { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, -- the thin plate behind the button + { -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself + } + }, + digiline = + { + receptor = {} + }, + groups = {dig_immediate=2}, + description = "Digilines Button", + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec","size[8,4;]field[1,1;6,2;channel;Channel;${channel}]field[1,2;6,2;msg;Message;${msg}]button_exit[2.25,3;3,1;submit;Save]") + end, + on_receive_fields = function(pos, formname, fields, sender) + local meta = minetest.get_meta(pos) + if fields.channel and fields.msg and fields.channel ~= "" and fields.msg ~= "" then + meta:set_string("channel",fields.channel) + meta:set_string("msg",fields.msg) + meta:set_string("formspec","") + minetest.swap_node(pos, {name = "digistuff:button_off", param2=minetest.get_node(pos).param2}) + else + minetest.chat_send_player(sender:get_player_name(),"Channel and message must both be set!") + end + end, + sounds = default and default.node_sound_stone_defaults(), +}) + +minetest.register_node("digistuff:button_off", { + drawtype = "nodebox", + tiles = { + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_off.png" + }, + paramtype = "light", + paramtype2 = "facedir", + legacy_wallmounted = true, + walkable = false, + sunlight_propagates = true, + selection_box = { + type = "fixed", + fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 } + }, + node_box = { + type = "fixed", + fixed = { + { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, -- the thin plate behind the button + { -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself + } + }, + digiline = + { + receptor = {} + }, + groups = {dig_immediate=2, not_in_creative_inventory=1}, + drop = "digistuff:button", + description = "Digilines Button (off state - you hacker you!)", + on_rightclick = function (pos, node, clicker) + local meta = minetest.get_meta(pos) + digiline:receptor_send(pos, digiline.rules.default, meta:get_string("channel"), meta:get_string("msg")) + minetest.swap_node(pos, {name = "digistuff:button_on", param2=node.param2}) + if minetest.get_modpath("mesecons") then minetest.sound_play("mesecons_button_push", {pos=pos}) end + minetest.after(0.5, digistuff.button_turnoff, pos) + end, + sounds = default and default.node_sound_stone_defaults(), +}) + +minetest.register_node("digistuff:button_on", { + drawtype = "nodebox", + tiles = { + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_sides.png", + "digistuff_digibutton_on.png" + }, + paramtype = "light", + paramtype2 = "facedir", + legacy_wallmounted = true, + walkable = false, + light_source = 7, + sunlight_propagates = true, + selection_box = { + type = "fixed", + fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 } + }, + node_box = { + type = "fixed", + fixed = { + { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, + { -4/16, -2/16, 11/32, 4/16, 2/16, 6/16 } + } + }, + digiline = + { + receptor = {} + }, + groups = {dig_immediate=2, not_in_creative_inventory=1}, + drop = 'digistuff:button', + on_rightclick = function (pos, node, clicker) + local meta = minetest.get_meta(pos) + digiline:receptor_send(pos, digiline.rules.default, meta:get_string("channel"), meta:get_string("msg")) + if minetest.get_modpath("mesecons") then minetest.sound_play("mesecons_button_push", {pos=pos}) end + end, + description = "Digilines Button (on state - you hacker you!)", + sounds = default and default.node_sound_stone_defaults(), +}) + +minetest.register_craft({ + output = "digistuff:digimese", + recipe = { + {"digilines:wire_std_00000000","digilines:wire_std_00000000","digilines:wire_std_00000000"}, + {"digilines:wire_std_00000000","default:mese","digilines:wire_std_00000000"}, + {"digilines:wire_std_00000000","digilines:wire_std_00000000","digilines:wire_std_00000000"} + } +}) + +minetest.register_craft({ + output = "digistuff:button", + recipe = { + {"mesecons_button:button_off"}, + {"mesecons_luacontroller:luacontroller0000"}, + {"digilines:wire_std_00000000"} + } +}) diff --git a/digistuff/camera.lua b/digistuff/camera.lua new file mode 100644 index 0000000..3a2a129 --- /dev/null +++ b/digistuff/camera.lua @@ -0,0 +1,98 @@ +minetest.register_node("digistuff:camera", { + tiles = { + "digistuff_camera_top.png", + "digistuff_camera_bottom.png", + "digistuff_camera_right.png", + "digistuff_camera_left.png", + "digistuff_camera_back.png", + "digistuff_camera_front.png", + }, + digiline = + { + receptor = {} + }, + groups = {cracky=2}, + paramtype = "light", + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.1,-0.5,-0.28,0.1,-0.3,0.3}, --Camera Body + {-0.045,-0.42,-0.34,0.045,-0.36,-0.28}, -- Lens + {-0.05,-0.9,-0.05,0.05,-0.5,0.05}, --Pole + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.1,-0.5,-0.34,0.1,-0.3,0.3}, --Camera Body + } + }, + description = "Digilines Camera", + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec","size[8,6;]field[1,1;6,2;channel;Channel;${channel}]field[1,2;6,2;radius;Radius (max 10);${radius}]field[1,3;6,2;distance;Distance (max 20);${distance}]button_exit[2.25,4;3,1;submit;Save]") + end, + on_receive_fields = function(pos, formname, fields, sender) + local name = sender:get_player_name() + if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then + minetest.record_protection_violation(pos,name) + return + end + local meta = minetest.get_meta(pos) + if fields.channel then meta:set_string("channel",fields.channel) end + if fields.distance and tonumber(fields.distance) then meta:set_int("distance",math.max(math.min(20,fields.distance),0)) end + if fields.radius and tonumber(fields.radius) then meta:set_int("radius",math.max(math.min(10,fields.radius),1)) end + end, + sounds = default and default.node_sound_stone_defaults() +}) + +minetest.register_abm({ + nodenames = {"digistuff:camera"}, + interval = 1.0, + chance = 1, + action = function(pos,node) + local meta = minetest.get_meta(pos) + local channel = meta:get_string("channel") + local radius = meta:get_int("radius") + local distance = meta:get_int("distance") + local dir = vector.multiply(minetest.facedir_to_dir(node.param2),-1) + local spot = vector.add(pos,vector.multiply(dir,distance)) + local i = 0 + while i <= 10 and minetest.get_node(spot).name == "air" do + --Downward search for ground level + spot = vector.add(spot,vector.new(0,-1,0)) + i = i + 1 + end + if minetest.get_node(spot).name == "air" or minetest.get_node(spot).name == "ignore" then + --Ground not in range + return + end + + local found_any = false + local players_found = {} + local objs = minetest.get_objects_inside_radius(spot,radius) + if objs then + local _,obj + for _,obj in ipairs(objs) do + if obj:is_player() then + table.insert(players_found,obj:get_player_name()) + found_any = true + end + end + if found_any then + digiline:receptor_send({x=pos.x,y=pos.y-1,z=pos.z}, digiline.rules.default, channel, players_found) + end + end + end +}) + +minetest.register_craft({ + output = "digistuff:camera", + recipe = { + {"homedecor:plastic_sheeting","homedecor:plastic_sheeting","homedecor:plastic_sheeting"}, + {"default:glass","homedecor:ic","mesecons_luacontroller:luacontroller0000"}, + {"homedecor:plastic_sheeting","homedecor:plastic_sheeting","homedecor:plastic_sheeting"}, + } +}) diff --git a/digistuff/conductors.lua b/digistuff/conductors.lua new file mode 100644 index 0000000..77229e2 --- /dev/null +++ b/digistuff/conductors.lua @@ -0,0 +1,62 @@ +minetest.register_node("digistuff:digimese", { + description = "Digimese", + tiles = {"digistuff_digimese.png"}, + paramtype = "light", + light_source = 3, + groups = {cracky = 3, level = 2}, + is_ground_content = false, + sounds = default and default.node_sound_stone_defaults(), + digiline = { wire = { rules = { + {x = 1, y = 0, z = 0}, + {x =-1, y = 0, z = 0}, + {x = 0, y = 1, z = 0}, + {x = 0, y =-1, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z =-1}}}} +}) + +minetest.register_node("digistuff:junctionbox", { + description = "Digilines Junction Box", + tiles = {"digistuff_junctionbox.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 3}, + is_ground_content = false, + paramtype = "light", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.1,-0.15,0.35,0.1,0.15,0.5}, + } + }, + sounds = default and default.node_sound_stone_defaults(), + digiline = { + receptor = {}, + wire = { + rules = { + {x = 1,y = 0,z = 0}, + {x = -1,y = 0,z = 0}, + {x = 0,y = 0,z = 1}, + {x = 0,y = 0,z = -1}, + {x = 0,y = 1,z = 0}, + {x = 0,y = -1,z = 0}, + {x = 0,y = -2,z = 0}, + {x = 0,y = 2,z = 0}, + {x = -2,y = 0,z = 0}, + {x = 2,y = 0,z = 0}, + {x = 0,y = 0,z = -2}, + {x = 0,y = 0,z = 2}, + } + }, + }, +}) + +minetest.register_craft({ + output = "digistuff:junctionbox", + recipe = { + {"homedecor:plastic_sheeting","digilines:wire_std_00000000","homedecor:plastic_sheeting",}, + {"digilines:wire_std_00000000","digilines:wire_std_00000000","digilines:wire_std_00000000",}, + {"homedecor:plastic_sheeting","digilines:wire_std_00000000","homedecor:plastic_sheeting",}, + } +}) diff --git a/digistuff/depends.txt b/digistuff/depends.txt index a581a9b..cfb8465 100644 --- a/digistuff/depends.txt +++ b/digistuff/depends.txt @@ -1,3 +1,4 @@ default? digilines mesecons? +mesecons_mvps? diff --git a/digistuff/detector.lua b/digistuff/detector.lua new file mode 100644 index 0000000..f6542da --- /dev/null +++ b/digistuff/detector.lua @@ -0,0 +1,63 @@ +minetest.register_node("digistuff:detector", { + tiles = { + "digistuff_digidetector.png" + }, + digiline = + { + receptor = {} + }, + groups = {cracky=2}, + description = "Digilines Player Detector", + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec","size[8,4;]field[1,1;6,2;channel;Channel;${channel}]field[1,2;6,2;radius;Radius;${radius}]button_exit[2.25,3;3,1;submit;Save]") + end, + on_receive_fields = function(pos, formname, fields, sender) + local name = sender:get_player_name() + if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then + minetest.record_protection_violation(pos,name) + return + end + local meta = minetest.get_meta(pos) + if fields.channel then meta:set_string("channel",fields.channel) end + if fields.msg then meta:set_string("msg",fields.msg) end + if fields.radius then meta:set_string("radius",fields.radius) end + end, + sounds = default and default.node_sound_stone_defaults() +}) + +minetest.register_abm({ + nodenames = {"digistuff:detector"}, + interval = 1.0, + chance = 1, + action = function(pos) + local meta = minetest.get_meta(pos) + local channel = meta:get_string("channel") + local radius = meta:get_string("radius") + local found_any = false + local players_found = {} + if not radius or not tonumber(radius) or tonumber(radius) < 1 or tonumber(radius) > 10 then radius = 6 end + local objs = minetest.get_objects_inside_radius(pos, radius) + if objs then + local _,obj + for _,obj in ipairs(objs) do + if obj:is_player() then + table.insert(players_found,obj:get_player_name()) + found_any = true + end + end + if found_any then + digiline:receptor_send(pos, digiline.rules.default, channel, players_found) + end + end + end +}) + +minetest.register_craft({ + output = "digistuff:detector", + recipe = { + {"mesecons_detector:object_detector_off"}, + {"mesecons_luacontroller:luacontroller0000"}, + {"digilines:wire_std_00000000"} + } +}) diff --git a/digistuff/init.lua b/digistuff/init.lua index 33b5936..1deefe1 100644 --- a/digistuff/init.lua +++ b/digistuff/init.lua @@ -1,1110 +1,25 @@ digistuff = {} -digistuff.sounds_playing = {} -digistuff.update_panel_formspec = function (pos,dispstr) - local meta = minetest.get_meta(pos) - local locked = meta:get_int("locked") == 1 - local fs = "size[10,8]".. - "background[0,0;0,0;digistuff_panel_bg.png;true]".. - "label[0,0;%s]".. - (locked and "image_button[9,3;1,1;digistuff_panel_locked.png;unlock;]" or "image_button[9,3;1,1;digistuff_panel_unlocked.png;lock;]").. - "image_button[2,4.5;1,1;digistuff_adwaita_go-up.png;up;]".. - "image_button[1,5;1,1;digistuff_adwaita_go-previous.png;left;]".. - "image_button[3,5;1,1;digistuff_adwaita_go-next.png;right;]".. - "image_button[2,5.5;1,1;digistuff_adwaita_go-down.png;down;]".. - "image_button[1,6.5;1,1;digistuff_adwaita_edit-undo.png;back;]".. - "image_button[3,6.5;1,1;digistuff_adwaita_emblem-default.png;enter;]".. - "field[6,5.75;2,1;channel;Channel;${channel}]".. - "button[8,5.5;1,1;savechan;Set]" - fs = fs:format(minetest.formspec_escape(dispstr)):gsub("|","\n") - meta:set_string("formspec",fs) - meta:set_string("text",dispstr) +local components = { + "touchscreen", + "light", + "noteblock", + "camera", + "button", + "panel", + "piezo", + "detector", + "conductors", + "piston", +} +for _,name in ipairs(components) do + dofile(string.format("%s%s%s.lua",minetest.get_modpath(minetest.get_current_modname()),DIR_DELIM,name)) end -digistuff.update_ts_formspec = function (pos) - local meta = minetest.get_meta(pos) - local fs = "size[10,8]".. - "background[0,0;0,0;digistuff_ts_bg.png;true]" - if meta:get_int("init") == 0 then - fs = fs.."field[3.75,3;3,1;channel;Channel;]".. - "button_exit[4,3.75;2,1;save;Save]" - else - local data = minetest.deserialize(meta:get_string("data")) or {} - for _,field in pairs(data) do - if field.type == "image" then - fs = fs..string.format("image[%s,%s;%s,%s;%s]",field.X,field.Y,field.W,field.H,field.texture_name) - elseif field.type == "field" then - fs = fs..string.format("field[%s,%s;%s,%s;%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,field.label,field.default) - elseif field.type == "pwdfield" then - fs = fs..string.format("pwdfield[%s,%s;%s,%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,field.label) - elseif field.type == "textarea" then - fs = fs..string.format("textarea[%s,%s;%s,%s;%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,field.label,field.default) - elseif field.type == "label" then - fs = fs..string.format("label[%s,%s;%s]",field.X,field.Y,field.label) - elseif field.type == "vertlabel" then - fs = fs..string.format("vertlabel[%s,%s;%s]",field.X,field.Y,field.label) - elseif field.type == "button" then - fs = fs..string.format("button[%s,%s;%s,%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,field.label) - elseif field.type == "button_exit" then - fs = fs..string.format("button_exit[%s,%s;%s,%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,field.label) - elseif field.type == "image_button" then - fs = fs..string.format("image_button[%s,%s;%s,%s;%s;%s;%s]",field.X,field.Y,field.W,field.H,field.image,field.name,field.label) - elseif field.type == "image_button_exit" then - fs = fs..string.format("image_button_exit[%s,%s;%s,%s;%s;%s;%s]",field.X,field.Y,field.W,field.H,field.image,field.name,field.label) - elseif field.type == "dropdown" then - local choices = "" - for _,i in ipairs(field.choices) do - if type(i) == "string" then - choices = choices..minetest.formspec_escape(i).."," - end - end - choices = string.sub(choices,1,-2) - fs = fs..string.format("dropdown[%s,%s;%s,%s;%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,choices,field.selected_id) - end - end - end - meta:set_string("formspec",fs) -end - -digistuff.ts_on_receive_fields = function (pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local setchan = meta:get_string("channel") - local playername = sender:get_player_name() - local locked = meta:get_int("locked") == 1 - local can_bypass = minetest.check_player_privs(playername,{protection_bypass=true}) - local is_protected = minetest.is_protected(pos,playername) - if (locked and is_protected) and not can_bypass then - minetest.record_protection_violation(pos,playername) - minetest.chat_send_player(playername,"You are not authorized to use this screen.") - return - end - local init = meta:get_int("init") == 1 - if not init then - if fields.save then - meta:set_string("channel",fields.channel) - meta:set_int("init",1) - digistuff.update_ts_formspec(pos) - end - else - fields.clicker = sender:get_player_name() - digiline:receptor_send(pos, digiline.rules.default, setchan, fields) - end -end - -digistuff.process_command = function (meta, data, msg) - if msg.command == "clear" then - data = {} - elseif msg.command == "addimage" then - for _,i in pairs({"X","Y","W","H"}) do - if not msg[i] or type(msg[i]) ~= "number" then - return - end - end - if not msg.texture_name or type(msg.texture_name) ~= "string" then - return - end - local field = {type="image",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,texture_name=minetest.formspec_escape(msg.texture_name)} - table.insert(data,field) - elseif msg.command == "addfield" then - for _,i in pairs({"X","Y","W","H"}) do - if not msg[i] or type(msg[i]) ~= "number" then - return - end - end - for _,i in pairs({"name","label","default"}) do - if not msg[i] or type(msg[i]) ~= "string" then - return - end - end - local field = {type="field",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label),default=minetest.formspec_escape(msg.default)} - table.insert(data,field) - elseif msg.command == "addpwdfield" then - for _,i in pairs({"X","Y","W","H"}) do - if not msg[i] or type(msg[i]) ~= "number" then - return - end - end - for _,i in pairs({"name","label"}) do - if not msg[i] or type(msg[i]) ~= "string" then - return - end - end - local field = {type="pwdfield",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label)} - table.insert(data,field) - elseif msg.command == "addtextarea" then - for _,i in pairs({"X","Y","W","H"}) do - if not msg[i] or type(msg[i]) ~= "number" then - return - end - end - for _,i in pairs({"name","label","default"}) do - if not msg[i] or type(msg[i]) ~= "string" then - return - end - end - local field = {type="textarea",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label),default=minetest.formspec_escape(msg.default)} - table.insert(data,field) - elseif msg.command == "addlabel" then - for _,i in pairs({"X","Y"}) do - if not msg[i] or type(msg[i]) ~= "number" then - return - end - end - if not msg.label or type(msg.label) ~= "string" then - return - end - local field = {type="label",X=msg.X,Y=msg.Y,label=minetest.formspec_escape(msg.label)} - table.insert(data,field) - elseif msg.command == "addvertlabel" then - for _,i in pairs({"X","Y"}) do - if not msg[i] or type(msg[i]) ~= "number" then - return - end - end - if not msg.label or type(msg.label) ~= "string" then - return - end - local field = {type="vertlabel",X=msg.X,Y=msg.Y,label=minetest.formspec_escape(msg.label)} - table.insert(data,field) - elseif msg.command == "addbutton" then - for _,i in pairs({"X","Y","W","H"}) do - if not msg[i] or type(msg[i]) ~= "number" then - return - end - end - for _,i in pairs({"name","label"}) do - if not msg[i] or type(msg[i]) ~= "string" then - return - end - end - local field = {type="button",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label)} - table.insert(data,field) - elseif msg.command == "addbutton_exit" then - for _,i in pairs({"X","Y","W","H"}) do - if not msg[i] or type(msg[i]) ~= "number" then - return - end - end - for _,i in pairs({"name","label"}) do - if not msg[i] or type(msg[i]) ~= "string" then - return - end - end - local field = {type="button_exit",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label)} - table.insert(data,field) - elseif msg.command == "addimage_button" then - for _,i in pairs({"X","Y","W","H"}) do - if not msg[i] or type(msg[i]) ~= "number" then - return - end - end - for _,i in pairs({"image","name","label"}) do - if not msg[i] or type(msg[i]) ~= "string" then - return - end - end - local field = {type="image_button",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,image=minetest.formspec_escape(msg.image),name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label)} - table.insert(data,field) - elseif msg.command == "addimage_button_exit" then - for _,i in pairs({"X","Y","W","H"}) do - if not msg[i] or type(msg[i]) ~= "number" then - return - end - end - for _,i in pairs({"image","name","label"}) do - if not msg[i] or type(msg[i]) ~= "string" then - return - end - end - local field = {type="image_button_exit",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,image=minetest.formspec_escape(msg.image),name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label)} - table.insert(data,field) - elseif msg.command == "adddropdown" then - for _,i in pairs({"X","Y","W","H","selected_id"}) do - if not msg[i] or type(msg[i]) ~= "number" then - return - end - end - if not msg.name or type(msg.name) ~= "string" then - return - end - if not msg.choices or type(msg.choices) ~= "table" or #msg.choices < 1 then - return - end - local field = {type="dropdown",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=msg.name,selected_id=msg.selected_id,choices=msg.choices} - table.insert(data,field) - elseif msg.command == "lock" then - meta:set_int("locked",1) - elseif msg.command == "unlock" then - meta:set_int("locked",0) - end - return data -end - -digistuff.ts_on_digiline_receive = function (pos, node, channel, msg) - local meta = minetest.get_meta(pos) - local setchan = meta:get_string("channel") - if channel ~= setchan then return end - if type(msg) ~= "table" then return end - local data = minetest.deserialize(meta:get_string("data")) or {} - if msg.command then - data = digistuff.process_command(meta,data,msg) - else - for _,i in ipairs(msg) do - if i.command then - data = digistuff.process_command(meta,data,i) or data - end - end - end - meta:set_string("data",minetest.serialize(data)) - digistuff.update_ts_formspec(pos) -end - -digistuff.panel_on_digiline_receive = function (pos, node, channel, msg) - local meta = minetest.get_meta(pos) - local setchan = meta:get_string("channel") - if channel ~= setchan then return end - if type(msg) ~= "string" then return end - digistuff.update_panel_formspec(pos,msg) -end - -digistuff.panel_on_receive_fields = function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local setchan = meta:get_string("channel") - local playername = sender:get_player_name() - local locked = meta:get_int("locked") == 1 - local can_bypass = minetest.check_player_privs(playername,{protection_bypass=true}) - local is_protected = minetest.is_protected(pos,playername) - if fields.savechan then - if can_bypass or not is_protected then - meta:set_string("channel",fields.channel) - local helpmsg = "Channel has been set. Waiting for data..." - digistuff.update_panel_formspec(pos,helpmsg) - else - minetest.record_protection_violation(pos,playername) - minetest.chat_send_player(playername,"You are not authorized to change the channel of this panel.") - end - elseif fields.up then - if can_bypass or not is_protected or not locked then - digiline:receptor_send(pos, digiline.rules.default, setchan, "up") - else - minetest.record_protection_violation(pos,playername) - minetest.chat_send_player(playername,"You are not authorized to use this panel.") - end - elseif fields.down then - if can_bypass or not is_protected or not locked then - digiline:receptor_send(pos, digiline.rules.default, setchan, "down") - else - minetest.record_protection_violation(pos,playername) - minetest.chat_send_player(playername,"You are not authorized to use this panel.") - end - elseif fields.left then - if can_bypass or not is_protected or not locked then - digiline:receptor_send(pos, digiline.rules.default, setchan, "left") - else - minetest.record_protection_violation(pos,playername) - minetest.chat_send_player(playername,"You are not authorized to use this panel.") - end - elseif fields.right then - if can_bypass or not is_protected or not locked then - digiline:receptor_send(pos, digiline.rules.default, setchan, "right") - else - minetest.record_protection_violation(pos,playername) - minetest.chat_send_player(playername,"You are not authorized to use this panel.") - end - elseif fields.back then - if can_bypass or not is_protected or not locked then - digiline:receptor_send(pos, digiline.rules.default, setchan, "back") - else - minetest.record_protection_violation(pos,playername) - minetest.chat_send_player(playername,"You are not authorized to use this panel.") - end - elseif fields.enter then - if can_bypass or not is_protected or not locked then - digiline:receptor_send(pos, digiline.rules.default, setchan, "enter") - else - minetest.record_protection_violation(pos,playername) - minetest.chat_send_player(playername,"You are not authorized to use this panel.") - end - elseif fields.lock then - if can_bypass or not is_protected then - meta:set_int("locked",1) - minetest.chat_send_player(playername,"This panel has been locked. Access will now be controlled according to area protection.") - digistuff.update_panel_formspec(pos,meta:get_string("text")) - else - minetest.record_protection_violation(pos,playername) - minetest.chat_send_player(playername,"You are not authorized to lock this panel.") - end - elseif fields.unlock then - if can_bypass or not is_protected then - meta:set_int("locked",0) - minetest.chat_send_player(playername,"This panel has been unlocked. It can now be used (but not locked or have the channel changed) by anyone.") - digistuff.update_panel_formspec(pos,meta:get_string("text")) - else - minetest.record_protection_violation(pos,playername) - minetest.chat_send_player(playername,"You are not authorized to unlock this panel.") - end - end -end - -digistuff.button_turnoff = function (pos) - local node = minetest.get_node(pos) - if node.name=="digistuff:button_on" then --has not been dug - minetest.swap_node(pos, {name = "digistuff:button_off", param2=node.param2}) - if minetest.get_modpath("mesecons") then minetest.sound_play("mesecons_button_pop", {pos=pos}) end - end -end - -minetest.register_node("digistuff:digimese", { - description = "Digimese", - tiles = {"digistuff_digimese.png"}, - paramtype = "light", - light_source = 3, - groups = {cracky = 3, level = 2}, - is_ground_content = false, - sounds = default and default.node_sound_stone_defaults(), - digiline = { wire = { rules = { - {x = 1, y = 0, z = 0}, - {x =-1, y = 0, z = 0}, - {x = 0, y = 1, z = 0}, - {x = 0, y =-1, z = 0}, - {x = 0, y = 0, z = 1}, - {x = 0, y = 0, z =-1}}}} -}) - -minetest.register_node("digistuff:button", { - drawtype = "nodebox", - tiles = { - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_off.png" - }, - paramtype = "light", - paramtype2 = "facedir", - legacy_wallmounted = true, - walkable = false, - sunlight_propagates = true, - selection_box = { - type = "fixed", - fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 } - }, - node_box = { - type = "fixed", - fixed = { - { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, -- the thin plate behind the button - { -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself - } - }, - digiline = - { - receptor = {} - }, - groups = {dig_immediate=2}, - description = "Digilines Button", - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec","size[8,4;]field[1,1;6,2;channel;Channel;${channel}]field[1,2;6,2;msg;Message;${msg}]button_exit[2.25,3;3,1;submit;Save]") - end, - on_receive_fields = function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - if fields.channel and fields.msg and fields.channel ~= "" and fields.msg ~= "" then - meta:set_string("channel",fields.channel) - meta:set_string("msg",fields.msg) - meta:set_string("formspec","") - minetest.swap_node(pos, {name = "digibutton:button_off", param2=minetest.get_node(pos).param2}) - else - minetest.chat_send_player(sender:get_player_name(),"Channel and message must both be set!") - end - end, - sounds = default and default.node_sound_stone_defaults(), -}) - -minetest.register_node("digistuff:button_off", { - drawtype = "nodebox", - tiles = { - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_off.png" - }, - paramtype = "light", - paramtype2 = "facedir", - legacy_wallmounted = true, - walkable = false, - sunlight_propagates = true, - selection_box = { - type = "fixed", - fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 } - }, - node_box = { - type = "fixed", - fixed = { - { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, -- the thin plate behind the button - { -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself - } - }, - digiline = - { - receptor = {} - }, - groups = {dig_immediate=2, not_in_creative_inventory=1}, - drop = "digistuff:button", - description = "Digilines Button (off state - you hacker you!)", - on_rightclick = function (pos, node, clicker) - local meta = minetest.get_meta(pos) - digiline:receptor_send(pos, digiline.rules.default, meta:get_string("channel"), meta:get_string("msg")) - minetest.swap_node(pos, {name = "digistuff:button_on", param2=node.param2}) - if minetest.get_modpath("mesecons") then minetest.sound_play("mesecons_button_push", {pos=pos}) end - minetest.after(0.5, digistuff.button_turnoff, pos) - end, - sounds = default and default.node_sound_stone_defaults(), -}) - -minetest.register_node("digistuff:button_on", { - drawtype = "nodebox", - tiles = { - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_sides.png", - "digistuff_digibutton_on.png" - }, - paramtype = "light", - paramtype2 = "facedir", - legacy_wallmounted = true, - walkable = false, - light_source = 7, - sunlight_propagates = true, - selection_box = { - type = "fixed", - fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 } - }, - node_box = { - type = "fixed", - fixed = { - { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, - { -4/16, -2/16, 11/32, 4/16, 2/16, 6/16 } - } - }, - digiline = - { - receptor = {} - }, - groups = {dig_immediate=2, not_in_creative_inventory=1}, - drop = 'digistuff:button', - on_rightclick = function (pos, node, clicker) - local meta = minetest.get_meta(pos) - digiline:receptor_send(pos, digiline.rules.default, meta:get_string("channel"), meta:get_string("msg")) - if minetest.get_modpath("mesecons") then minetest.sound_play("mesecons_button_push", {pos=pos}) end - end, - description = "Digilines Button (on state - you hacker you!)", - sounds = default and default.node_sound_stone_defaults(), -}) - -minetest.register_craft({ - output = "digistuff:digimese", - recipe = { - {"digilines:wire_std_00000000","digilines:wire_std_00000000","digilines:wire_std_00000000"}, - {"digilines:wire_std_00000000","default:mese","digilines:wire_std_00000000"}, - {"digilines:wire_std_00000000","digilines:wire_std_00000000","digilines:wire_std_00000000"} - } -}) - -minetest.register_craft({ - output = "digistuff:button", - recipe = { - {"mesecons_button:button_off"}, - {"mesecons_luacontroller:luacontroller0000"}, - {"digilines:wire_std_00000000"} - } -}) - -minetest.register_alias("digibutton:button","digistuff:button") -minetest.register_alias("digibutton:button_off","digistuff:button_off") -minetest.register_alias("digibutton:button_on","digistuff:button_on") -minetest.register_alias("digibutton:digimese","digistuff:digimese") - -minetest.register_node("digistuff:detector", { - tiles = { - "digistuff_digidetector.png" - }, - digiline = - { - receptor = {} - }, - groups = {cracky=2}, - description = "Digilines Player Detector", - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec","size[8,4;]field[1,1;6,2;channel;Channel;${channel}]field[1,2;6,2;radius;Radius;${radius}]button_exit[2.25,3;3,1;submit;Save]") - end, - on_receive_fields = function(pos, formname, fields, sender) - local name = sender:get_player_name() - if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then - minetest.record_protection_violation(pos,name) - return - end - local meta = minetest.get_meta(pos) - if fields.channel then meta:set_string("channel",fields.channel) end - if fields.msg then meta:set_string("msg",fields.msg) end - if fields.radius then meta:set_string("radius",fields.radius) end - end, - sounds = default and default.node_sound_stone_defaults() -}) - -minetest.register_abm({ - nodenames = {"digistuff:detector"}, - interval = 1.0, - chance = 1, - action = function(pos) - local meta = minetest.get_meta(pos) - local channel = meta:get_string("channel") - local radius = meta:get_string("radius") - local found_any = false - local players_found = {} - if not radius or not tonumber(radius) or tonumber(radius) < 1 or tonumber(radius) > 10 then radius = 6 end - local objs = minetest.get_objects_inside_radius(pos, radius) - if objs then - local _,obj - for _,obj in ipairs(objs) do - if obj:is_player() then - table.insert(players_found,obj:get_player_name()) - found_any = true - end - end - if found_any then - digiline:receptor_send(pos, digiline.rules.default, channel, players_found) - end - end - end -}) - -minetest.register_node("digistuff:panel", { - description = "Digilines Control Panel", - groups = {cracky=3}, - on_construct = function(pos) - local helpmsg = "Please set a channel." - digistuff.update_panel_formspec(pos,helpmsg) - minetest.get_meta(pos):set_int("locked",0) - end, - drawtype = "nodebox", - tiles = { - "digistuff_panel_back.png", - "digistuff_panel_back.png", - "digistuff_panel_back.png", - "digistuff_panel_back.png", - "digistuff_panel_back.png", - "digistuff_panel_front.png" - }, - paramtype = "light", - paramtype2 = "facedir", - node_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 } - } - }, - on_receive_fields = digistuff.panel_on_receive_fields, - digiline = - { - receptor = {}, - effector = { - action = digistuff.panel_on_digiline_receive - }, - }, -}) - -minetest.register_craft({ - output = "digistuff:detector", - recipe = { - {"mesecons_detector:object_detector_off"}, - {"mesecons_luacontroller:luacontroller0000"}, - {"digilines:wire_std_00000000"} - } -}) - -minetest.register_craft({ - output = "digistuff:panel", - recipe = { - {"","digistuff:button",""}, - {"digistuff:button","digilines:lcd","digistuff:button"}, - {"","digistuff:button",""} - } -}) - -minetest.register_craft({ - output = "digistuff:touchscreen", - recipe = { - {"mesecons_luacontroller:luacontroller0000","default:glass","default:glass"}, - {"default:glass","digilines:lcd","default:glass"}, - {"default:glass","default:glass","default:glass"} - } -}) - -minetest.register_node("digistuff:touchscreen", { - description = "Digilines Touchscreen", - groups = {cracky=3}, - on_construct = function(pos) - digistuff.update_ts_formspec(pos,true) - end, - drawtype = "nodebox", - tiles = { - "digistuff_panel_back.png", - "digistuff_panel_back.png", - "digistuff_panel_back.png", - "digistuff_panel_back.png", - "digistuff_panel_back.png", - "digistuff_ts_front.png" - }, - paramtype = "light", - paramtype2 = "facedir", - node_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 } - } - }, - on_receive_fields = digistuff.ts_on_receive_fields, - digiline = - { - receptor = {}, - effector = { - action = digistuff.ts_on_digiline_receive - }, - }, -}) - -minetest.register_node("digistuff:piezo", { - description = "Digilines Piezoelectric Beeper", - groups = {cracky=3}, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec","field[channel;Channel;${channel}") - end, - on_destruct = function(pos) - local pos_hash = minetest.hash_node_position(pos) - if digistuff.sounds_playing[pos_hash] then - minetest.sound_stop(digistuff.sounds_playing[pos_hash]) - digistuff.sounds_playing[pos_hash] = nil - end - end, - tiles = { - "digistuff_piezo_top.png", - "digistuff_piezo_sides.png", - "digistuff_piezo_sides.png", - "digistuff_piezo_sides.png", - "digistuff_piezo_sides.png", - "digistuff_piezo_sides.png" - }, - on_receive_fields = function(pos, formname, fields, sender) - local name = sender:get_player_name() - if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then - minetest.record_protection_violation(pos,name) - return - end - local meta = minetest.get_meta(pos) - if fields.channel then meta:set_string("channel",fields.channel) end - end, - digiline = - { - receptor = {}, - effector = { - action = function(pos,node,channel,msg) - local meta = minetest.get_meta(pos) - local setchan = meta:get_string("channel") - if channel ~= setchan then return end - if msg == "shortbeep" then - local pos_hash = minetest.hash_node_position(pos) - if digistuff.sounds_playing[pos_hash] then - minetest.sound_stop(digistuff.sounds_playing[pos_hash]) - digistuff.sounds_playing[pos_hash] = nil - end - minetest.sound_play({name = "digistuff_piezo_short_single",gain = 0.2},{pos = pos,max_hear_distance = 16}) - elseif msg == "longbeep" then - local pos_hash = minetest.hash_node_position(pos) - if digistuff.sounds_playing[pos_hash] then - minetest.sound_stop(digistuff.sounds_playing[pos_hash]) - digistuff.sounds_playing[pos_hash] = nil - end - minetest.sound_play({name = "digistuff_piezo_long_single",gain = 0.2},{pos = pos,max_hear_distance = 16}) - elseif msg == "fastrepeat" then - local pos_hash = minetest.hash_node_position(pos) - if digistuff.sounds_playing[pos_hash] then - minetest.sound_stop(digistuff.sounds_playing[pos_hash]) - digistuff.sounds_playing[pos_hash] = nil - end - digistuff.sounds_playing[pos_hash] = minetest.sound_play({name = "digistuff_piezo_fast_repeat",gain = 0.2},{pos = pos,max_hear_distance = 16,loop = true}) - elseif msg == "slowrepeat" then - local pos_hash = minetest.hash_node_position(pos) - if digistuff.sounds_playing[pos_hash] then - minetest.sound_stop(digistuff.sounds_playing[pos_hash]) - digistuff.sounds_playing[pos_hash] = nil - end - digistuff.sounds_playing[pos_hash] = minetest.sound_play({name = "digistuff_piezo_slow_repeat",gain = 0.2},{pos = pos,max_hear_distance = 16,loop = true}) - elseif msg == "stop" then - local pos_hash = minetest.hash_node_position(pos) - if digistuff.sounds_playing[pos_hash] then - minetest.sound_stop(digistuff.sounds_playing[pos_hash]) - digistuff.sounds_playing[pos_hash] = nil - end - end - end - }, - }, -}) - local http = minetest.request_http_api() - -if http then - minetest.register_node("digistuff:nic", { - description = "Digilines NIC", - groups = {cracky=3}, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec","field[channel;Channel;${channel}") - end, - tiles = { - "digistuff_nic_top.png", - "jeija_microcontroller_bottom.png", - "jeija_microcontroller_sides.png", - "jeija_microcontroller_sides.png", - "jeija_microcontroller_sides.png", - "jeija_microcontroller_sides.png" - }, - drawtype = "nodebox", - selection_box = { - --From luacontroller - type = "fixed", - fixed = { -8/16, -8/16, -8/16, 8/16, -5/16, 8/16 }, - }, - node_box = { - --From Luacontroller - type = "fixed", - fixed = { - {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, -- Bottom slab - {-5/16, -7/16, -5/16, 5/16, -6/16, 5/16}, -- Circuit board - {-3/16, -6/16, -3/16, 3/16, -5/16, 3/16}, -- IC - } - }, - paramtype = "light", - sunlight_propagates = true, - on_receive_fields = function(pos, formname, fields, sender) - local name = sender:get_player_name() - if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then - minetest.record_protection_violation(pos,name) - return - end - local meta = minetest.get_meta(pos) - if fields.channel then meta:set_string("channel",fields.channel) end - end, - digiline = - { - receptor = {}, - effector = { - action = function(pos,node,channel,msg) - local meta = minetest.get_meta(pos) - if meta:get_string("channel") ~= channel then return end - if type(msg) ~= "string" then return end - http.fetch({ - url = msg, - timeout = 5, - user_agent = "Minetest Digilines Modem", - }, - function(res) - digiline:receptor_send(pos, digiline.rules.default, channel, res) - end) - end - }, - }, - }) - minetest.register_craft({ - output = "digistuff:nic", - recipe = { - {"","","mesecons:wire_00000000_off"}, - {"digilines:wire_std_00000000","mesecons_luacontroller:luacontroller0000","mesecons:wire_00000000_off"} - } - }) -end - -minetest.register_node("digistuff:camera", { - tiles = { - "digistuff_camera_top.png", - "digistuff_camera_bottom.png", - "digistuff_camera_right.png", - "digistuff_camera_left.png", - "digistuff_camera_back.png", - "digistuff_camera_front.png", - }, - digiline = - { - receptor = {} - }, - groups = {cracky=2}, - paramtype = "light", - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.1,-0.5,-0.28,0.1,-0.3,0.3}, --Camera Body - {-0.045,-0.42,-0.34,0.045,-0.36,-0.28}, -- Lens - {-0.05,-0.9,-0.05,0.05,-0.5,0.05}, --Pole - } - }, - selection_box = { - type = "fixed", - fixed = { - {-0.1,-0.5,-0.34,0.1,-0.3,0.3}, --Camera Body - } - }, - description = "Digilines Camera", - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec","size[8,6;]field[1,1;6,2;channel;Channel;${channel}]field[1,2;6,2;radius;Radius (max 10);${radius}]field[1,3;6,2;distance;Distance (max 20);${distance}]button_exit[2.25,4;3,1;submit;Save]") - end, - on_receive_fields = function(pos, formname, fields, sender) - local name = sender:get_player_name() - if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then - minetest.record_protection_violation(pos,name) - return - end - local meta = minetest.get_meta(pos) - if fields.channel then meta:set_string("channel",fields.channel) end - if fields.distance and tonumber(fields.distance) then meta:set_int("distance",math.max(math.min(20,fields.distance),0)) end - if fields.radius and tonumber(fields.radius) then meta:set_int("radius",math.max(math.min(10,fields.radius),1)) end - end, - sounds = default and default.node_sound_stone_defaults() -}) - -minetest.register_abm({ - nodenames = {"digistuff:camera"}, - interval = 1.0, - chance = 1, - action = function(pos,node) - local meta = minetest.get_meta(pos) - local channel = meta:get_string("channel") - local radius = meta:get_int("radius") - local distance = meta:get_int("distance") - local dir = vector.multiply(minetest.facedir_to_dir(node.param2),-1) - local spot = vector.add(pos,vector.multiply(dir,distance)) - local i = 0 - while i <= 10 and minetest.get_node(spot).name == "air" do - --Downward search for ground level - spot = vector.add(spot,vector.new(0,-1,0)) - i = i + 1 - end - if minetest.get_node(spot).name == "air" or minetest.get_node(spot).name == "ignore" then - --Ground not in range - return - end - - local found_any = false - local players_found = {} - local objs = minetest.get_objects_inside_radius(spot,radius) - if objs then - local _,obj - for _,obj in ipairs(objs) do - if obj:is_player() then - table.insert(players_found,obj:get_player_name()) - found_any = true - end - end - if found_any then - digiline:receptor_send({x=pos.x,y=pos.y-1,z=pos.z}, digiline.rules.default, channel, players_found) - end - end - end -}) - -minetest.register_craft({ - output = "digistuff:camera", - recipe = { - {"homedecor:plastic_sheeting","homedecor:plastic_sheeting","homedecor:plastic_sheeting"}, - {"default:glass","homedecor:ic","mesecons_luacontroller:luacontroller0000"}, - {"homedecor:plastic_sheeting","homedecor:plastic_sheeting","homedecor:plastic_sheeting"}, - } -}) - -if minetest.get_modpath("mesecons_noteblock") then - local validnbsounds = dofile(minetest.get_modpath("digistuff")..DIR_DELIM.."nbsounds.lua") - minetest.register_node("digistuff:noteblock", { - description = "Digilines Noteblock", - groups = {cracky=3}, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec","field[channel;Channel;${channel}") - end, - on_destruct = function(pos) - local pos_hash = minetest.hash_node_position(pos) - if digistuff.sounds_playing[pos_hash] then - minetest.sound_stop(digistuff.sounds_playing[pos_hash]) - digistuff.sounds_playing[pos_hash] = nil - end - end, - tiles = { - "mesecons_noteblock.png" - }, - on_receive_fields = function(pos, formname, fields, sender) - local name = sender:get_player_name() - if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then - minetest.record_protection_violation(pos,name) - return - end - local meta = minetest.get_meta(pos) - if fields.channel then meta:set_string("channel",fields.channel) end - end, - digiline = - { - receptor = {}, - effector = { - action = function(pos,node,channel,msg) - if msg == "get_sounds" then - local soundnames = {} - for i in pairs(validnbsounds) do - table.insert(soundnames,i) - end - digiline:receptor_send(pos, digiline.rules.default, channel, soundnames) - end - local meta = minetest.get_meta(pos) - local setchan = meta:get_string("channel") - if channel ~= setchan then return end - if type(msg) == "string" then - local sound = validnbsounds[msg] - if sound then minetest.sound_play(sound,{pos=pos}) end - elseif type(msg) == "table" then - if type(msg.sound) ~= "string" then return end - local sound = validnbsounds[msg.sound] - local volume = 1 - if type(msg.volume) == "number" then - volume = math.max(0,math.min(1,msg.volume)) - end - if sound then minetest.sound_play({name=sound,gain=volume},{pos=pos}) end - end - end - }, - }, - }) +if not http then + minetest.log("error","digistuff is not allowed to use the HTTP API - digilines NIC will not be available!") + minetest.log("error","If this functionality is desired, please add digistuff to your secure.http_mods setting") +else + loadfile(string.format("%s%s%s.lua",minetest.get_modpath(minetest.get_current_modname()),DIR_DELIM,"nic"))(http) end - -for i=0,14,1 do - local mult = 255 - ((14-i)*12) - minetest.register_node("digistuff:light_"..i, { - drop = "digistuff:light_0", - description = "Digilines Dimmable Light"..(i > 0 and " (on state - you hacker you!)" or ""), - tiles = {"digistuff_light.png"}, - paramtype = "light", - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.25,0.4,-0.25,0.25,0.5,0.25}, - } - }, - groups = i > 0 and {cracky = 1, not_in_creative_inventory = 1} or {cracky = 1}, - is_ground_content = false, - light_source = i, - color = {r = mult,g = mult,b = mult}, - sounds = default and default.node_sound_glass_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec","field[channel;Channel;${channel}") - end, - on_receive_fields = function(pos, formname, fields, sender) - local name = sender:get_player_name() - if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then - minetest.record_protection_violation(pos,name) - return - end - local meta = minetest.get_meta(pos) - if fields.channel then meta:set_string("channel",fields.channel) end - end, - digiline = { - receptor = {}, - wire = { - rules = { - {x = 1,y = 0,z = 0}, - {x = -1,y = 0,z = 0}, - {x = 0,y = 0,z = 1}, - {x = 0,y = 0,z = -1}, - {x = 0,y = 1,z = 0}, - {x = 0,y = -1,z = 0}, - {x = 2,y = 0,z = 0}, - {x = -2,y = 0,z = 0}, - {x = 0,y = 0,z = 2}, - {x = 0,y = 0,z = -2}, - {x = 0,y = 2,z = 0}, - {x = 0,y = -2,z = 0}, - } - }, - effector = { - action = function(pos,node,channel,msg) - local meta = minetest.get_meta(pos) - if meta:get_string("channel") ~= channel then return end - local value = tonumber(msg) - if (not value) or value > 14 or value < 0 then return end - node.name = "digistuff:light_"..math.floor(value) - minetest.swap_node(pos,node) - end - }, - }, - }) -end - -minetest.register_node("digistuff:junctionbox", { - description = "Digilines Junction Box", - tiles = {"digistuff_junctionbox.png"}, - paramtype = "light", - paramtype2 = "facedir", - groups = {cracky = 3}, - is_ground_content = false, - paramtype = "light", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.1,-0.15,0.35,0.1,0.15,0.5}, - } - }, - sounds = default and default.node_sound_stone_defaults(), - digiline = { - receptor = {}, - wire = { - rules = { - {x = 1,y = 0,z = 0}, - {x = -1,y = 0,z = 0}, - {x = 0,y = 0,z = 1}, - {x = 0,y = 0,z = -1}, - {x = 0,y = 1,z = 0}, - {x = 0,y = -1,z = 0}, - {x = 0,y = -2,z = 0}, - {x = 0,y = 2,z = 0}, - {x = -2,y = 0,z = 0}, - {x = 2,y = 0,z = 0}, - {x = 0,y = 0,z = -2}, - {x = 0,y = 0,z = 2}, - } - }, - }, -}) - -minetest.register_craft({ - output = "digistuff:light_0", - recipe = { - {"digilines:wire_std_00000000","mesecons_lamp:lamp_off",}, - } -}) - -minetest.register_craft({ - output = "digistuff:junctionbox", - recipe = { - {"homedecor:plastic_sheeting","digilines:wire_std_00000000","homedecor:plastic_sheeting",}, - {"digilines:wire_std_00000000","digilines:wire_std_00000000","digilines:wire_std_00000000",}, - {"homedecor:plastic_sheeting","digilines:wire_std_00000000","homedecor:plastic_sheeting",}, - } -}) diff --git a/digistuff/light.lua b/digistuff/light.lua new file mode 100644 index 0000000..aeca08d --- /dev/null +++ b/digistuff/light.lua @@ -0,0 +1,71 @@ +for i=0,14,1 do + local mult = 255 - ((14-i)*12) + minetest.register_node("digistuff:light_"..i, { + drop = "digistuff:light_0", + description = "Digilines Dimmable Light"..(i > 0 and " (on state - you hacker you!)" or ""), + tiles = {"digistuff_light.png"}, + paramtype = "light", + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.25,0.4,-0.25,0.25,0.5,0.25}, + } + }, + groups = i > 0 and {cracky = 1, not_in_creative_inventory = 1} or {cracky = 1}, + is_ground_content = false, + light_source = i, + color = {r = mult,g = mult,b = mult}, + sounds = default and default.node_sound_glass_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec","field[channel;Channel;${channel}") + end, + on_receive_fields = function(pos, formname, fields, sender) + local name = sender:get_player_name() + if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then + minetest.record_protection_violation(pos,name) + return + end + local meta = minetest.get_meta(pos) + if fields.channel then meta:set_string("channel",fields.channel) end + end, + digiline = { + receptor = {}, + wire = { + rules = { + {x = 1,y = 0,z = 0}, + {x = -1,y = 0,z = 0}, + {x = 0,y = 0,z = 1}, + {x = 0,y = 0,z = -1}, + {x = 0,y = 1,z = 0}, + {x = 0,y = -1,z = 0}, + {x = 2,y = 0,z = 0}, + {x = -2,y = 0,z = 0}, + {x = 0,y = 0,z = 2}, + {x = 0,y = 0,z = -2}, + {x = 0,y = 2,z = 0}, + {x = 0,y = -2,z = 0}, + } + }, + effector = { + action = function(pos,node,channel,msg) + local meta = minetest.get_meta(pos) + if meta:get_string("channel") ~= channel then return end + local value = tonumber(msg) + if (not value) or value > 14 or value < 0 then return end + node.name = "digistuff:light_"..math.floor(value) + minetest.swap_node(pos,node) + end + }, + }, + }) +end + +minetest.register_craft({ + output = "digistuff:light_0", + recipe = { + {"digilines:wire_std_00000000","mesecons_lamp:lamp_off",}, + } +}) diff --git a/digistuff/nic.lua b/digistuff/nic.lua new file mode 100644 index 0000000..8760bdf --- /dev/null +++ b/digistuff/nic.lua @@ -0,0 +1,69 @@ +local http = ... +minetest.register_node("digistuff:nic", { + description = "Digilines NIC", + groups = {cracky=3}, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec","field[channel;Channel;${channel}") + end, + tiles = { + "digistuff_nic_top.png", + "jeija_microcontroller_bottom.png", + "jeija_microcontroller_sides.png", + "jeija_microcontroller_sides.png", + "jeija_microcontroller_sides.png", + "jeija_microcontroller_sides.png" + }, + drawtype = "nodebox", + selection_box = { + --From luacontroller + type = "fixed", + fixed = { -8/16, -8/16, -8/16, 8/16, -5/16, 8/16 }, + }, + node_box = { + --From Luacontroller + type = "fixed", + fixed = { + {-8/16, -8/16, -8/16, 8/16, -7/16, 8/16}, -- Bottom slab + {-5/16, -7/16, -5/16, 5/16, -6/16, 5/16}, -- Circuit board + {-3/16, -6/16, -3/16, 3/16, -5/16, 3/16}, -- IC + } + }, + paramtype = "light", + sunlight_propagates = true, + on_receive_fields = function(pos, formname, fields, sender) + local name = sender:get_player_name() + if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then + minetest.record_protection_violation(pos,name) + return + end + local meta = minetest.get_meta(pos) + if fields.channel then meta:set_string("channel",fields.channel) end + end, + digiline = + { + receptor = {}, + effector = { + action = function(pos,node,channel,msg) + local meta = minetest.get_meta(pos) + if meta:get_string("channel") ~= channel then return end + if type(msg) ~= "string" then return end + http.fetch({ + url = msg, + timeout = 5, + user_agent = "Minetest Digilines Modem", + }, + function(res) + digiline:receptor_send(pos, digiline.rules.default, channel, res) + end) + end + }, + }, +}) +minetest.register_craft({ + output = "digistuff:nic", + recipe = { + {"","","mesecons:wire_00000000_off"}, + {"digilines:wire_std_00000000","mesecons_luacontroller:luacontroller0000","mesecons:wire_00000000_off"} + } +}) diff --git a/digistuff/noteblock.lua b/digistuff/noteblock.lua new file mode 100644 index 0000000..f2e9c89 --- /dev/null +++ b/digistuff/noteblock.lua @@ -0,0 +1,64 @@ +if not minetest.get_modpath("mesecons_noteblock") then + minetest.log("error","mesecons_noteblock is not installed - digilines noteblock will not be available!") + return +end + +local validnbsounds = dofile(minetest.get_modpath(minetest.get_current_modname())..DIR_DELIM.."nbsounds.lua") +minetest.register_node("digistuff:noteblock", { + description = "Digilines Noteblock", + groups = {cracky=3}, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec","field[channel;Channel;${channel}") + end, + on_destruct = function(pos) + local pos_hash = minetest.hash_node_position(pos) + if digistuff.sounds_playing[pos_hash] then + minetest.sound_stop(digistuff.sounds_playing[pos_hash]) + digistuff.sounds_playing[pos_hash] = nil + end + end, + tiles = { + "mesecons_noteblock.png" + }, + on_receive_fields = function(pos, formname, fields, sender) + local name = sender:get_player_name() + if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then + minetest.record_protection_violation(pos,name) + return + end + local meta = minetest.get_meta(pos) + if fields.channel then meta:set_string("channel",fields.channel) end + end, + digiline = + { + receptor = {}, + effector = { + action = function(pos,node,channel,msg) + local meta = minetest.get_meta(pos) + local setchan = meta:get_string("channel") + if channel ~= setchan then return end + if msg == "get_sounds" then + local soundnames = {} + for i in pairs(validnbsounds) do + table.insert(soundnames,i) + end + digiline:receptor_send(pos, digiline.rules.default, channel, soundnames) + return + end + if type(msg) == "string" then + local sound = validnbsounds[msg] + if sound then minetest.sound_play(sound,{pos=pos}) end + elseif type(msg) == "table" then + if type(msg.sound) ~= "string" then return end + local sound = validnbsounds[msg.sound] + local volume = 1 + if type(msg.volume) == "number" then + volume = math.max(0,math.min(1,msg.volume)) + end + if sound then minetest.sound_play({name=sound,gain=volume},{pos=pos}) end + end + end + }, + }, +}) diff --git a/digistuff/panel.lua b/digistuff/panel.lua new file mode 100644 index 0000000..d543af1 --- /dev/null +++ b/digistuff/panel.lua @@ -0,0 +1,151 @@ +digistuff.update_panel_formspec = function (pos,dispstr) + local meta = minetest.get_meta(pos) + local locked = meta:get_int("locked") == 1 + local fs = "size[10,8]".. + "background[0,0;0,0;digistuff_panel_bg.png;true]".. + "label[0,0;%s]".. + (locked and "image_button[9,3;1,1;digistuff_panel_locked.png;unlock;]" or "image_button[9,3;1,1;digistuff_panel_unlocked.png;lock;]").. + "image_button[2,4.5;1,1;digistuff_adwaita_go-up.png;up;]".. + "image_button[1,5;1,1;digistuff_adwaita_go-previous.png;left;]".. + "image_button[3,5;1,1;digistuff_adwaita_go-next.png;right;]".. + "image_button[2,5.5;1,1;digistuff_adwaita_go-down.png;down;]".. + "image_button[1,6.5;1,1;digistuff_adwaita_edit-undo.png;back;]".. + "image_button[3,6.5;1,1;digistuff_adwaita_emblem-default.png;enter;]".. + "field[6,5.75;2,1;channel;Channel;${channel}]".. + "button[8,5.5;1,1;savechan;Set]" + fs = fs:format(minetest.formspec_escape(dispstr)):gsub("|","\n") + meta:set_string("formspec",fs) + meta:set_string("text",dispstr) +end + +digistuff.panel_on_digiline_receive = function (pos, node, channel, msg) + local meta = minetest.get_meta(pos) + local setchan = meta:get_string("channel") + if channel ~= setchan then return end + if type(msg) ~= "string" then return end + digistuff.update_panel_formspec(pos,msg) +end + +digistuff.panel_on_receive_fields = function(pos, formname, fields, sender) + local meta = minetest.get_meta(pos) + local setchan = meta:get_string("channel") + local playername = sender:get_player_name() + local locked = meta:get_int("locked") == 1 + local can_bypass = minetest.check_player_privs(playername,{protection_bypass=true}) + local is_protected = minetest.is_protected(pos,playername) + if fields.savechan then + if can_bypass or not is_protected then + meta:set_string("channel",fields.channel) + local helpmsg = "Channel has been set. Waiting for data..." + digistuff.update_panel_formspec(pos,helpmsg) + else + minetest.record_protection_violation(pos,playername) + minetest.chat_send_player(playername,"You are not authorized to change the channel of this panel.") + end + elseif fields.up then + if can_bypass or not is_protected or not locked then + digiline:receptor_send(pos, digiline.rules.default, setchan, "up") + else + minetest.record_protection_violation(pos,playername) + minetest.chat_send_player(playername,"You are not authorized to use this panel.") + end + elseif fields.down then + if can_bypass or not is_protected or not locked then + digiline:receptor_send(pos, digiline.rules.default, setchan, "down") + else + minetest.record_protection_violation(pos,playername) + minetest.chat_send_player(playername,"You are not authorized to use this panel.") + end + elseif fields.left then + if can_bypass or not is_protected or not locked then + digiline:receptor_send(pos, digiline.rules.default, setchan, "left") + else + minetest.record_protection_violation(pos,playername) + minetest.chat_send_player(playername,"You are not authorized to use this panel.") + end + elseif fields.right then + if can_bypass or not is_protected or not locked then + digiline:receptor_send(pos, digiline.rules.default, setchan, "right") + else + minetest.record_protection_violation(pos,playername) + minetest.chat_send_player(playername,"You are not authorized to use this panel.") + end + elseif fields.back then + if can_bypass or not is_protected or not locked then + digiline:receptor_send(pos, digiline.rules.default, setchan, "back") + else + minetest.record_protection_violation(pos,playername) + minetest.chat_send_player(playername,"You are not authorized to use this panel.") + end + elseif fields.enter then + if can_bypass or not is_protected or not locked then + digiline:receptor_send(pos, digiline.rules.default, setchan, "enter") + else + minetest.record_protection_violation(pos,playername) + minetest.chat_send_player(playername,"You are not authorized to use this panel.") + end + elseif fields.lock then + if can_bypass or not is_protected then + meta:set_int("locked",1) + minetest.chat_send_player(playername,"This panel has been locked. Access will now be controlled according to area protection.") + digistuff.update_panel_formspec(pos,meta:get_string("text")) + else + minetest.record_protection_violation(pos,playername) + minetest.chat_send_player(playername,"You are not authorized to lock this panel.") + end + elseif fields.unlock then + if can_bypass or not is_protected then + meta:set_int("locked",0) + minetest.chat_send_player(playername,"This panel has been unlocked. It can now be used (but not locked or have the channel changed) by anyone.") + digistuff.update_panel_formspec(pos,meta:get_string("text")) + else + minetest.record_protection_violation(pos,playername) + minetest.chat_send_player(playername,"You are not authorized to unlock this panel.") + end + end +end + + +minetest.register_node("digistuff:panel", { + description = "Digilines Control Panel", + groups = {cracky=3}, + on_construct = function(pos) + local helpmsg = "Please set a channel." + digistuff.update_panel_formspec(pos,helpmsg) + minetest.get_meta(pos):set_int("locked",0) + end, + drawtype = "nodebox", + tiles = { + "digistuff_panel_back.png", + "digistuff_panel_back.png", + "digistuff_panel_back.png", + "digistuff_panel_back.png", + "digistuff_panel_back.png", + "digistuff_panel_front.png" + }, + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 } + } + }, + on_receive_fields = digistuff.panel_on_receive_fields, + digiline = + { + receptor = {}, + effector = { + action = digistuff.panel_on_digiline_receive + }, + }, +}) + +minetest.register_craft({ + output = "digistuff:panel", + recipe = { + {"","digistuff:button",""}, + {"digistuff:button","digilines:lcd","digistuff:button"}, + {"","digistuff:button",""} + } +}) diff --git a/digistuff/piezo.lua b/digistuff/piezo.lua new file mode 100644 index 0000000..f96e4a1 --- /dev/null +++ b/digistuff/piezo.lua @@ -0,0 +1,80 @@ +digistuff.sounds_playing = {} + +minetest.register_node("digistuff:piezo", { + description = "Digilines Piezoelectric Beeper", + groups = {cracky=3}, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec","field[channel;Channel;${channel}") + end, + on_destruct = function(pos) + local pos_hash = minetest.hash_node_position(pos) + if digistuff.sounds_playing[pos_hash] then + minetest.sound_stop(digistuff.sounds_playing[pos_hash]) + digistuff.sounds_playing[pos_hash] = nil + end + end, + tiles = { + "digistuff_piezo_top.png", + "digistuff_piezo_sides.png", + "digistuff_piezo_sides.png", + "digistuff_piezo_sides.png", + "digistuff_piezo_sides.png", + "digistuff_piezo_sides.png" + }, + on_receive_fields = function(pos, formname, fields, sender) + local name = sender:get_player_name() + if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then + minetest.record_protection_violation(pos,name) + return + end + local meta = minetest.get_meta(pos) + if fields.channel then meta:set_string("channel",fields.channel) end + end, + digiline = + { + receptor = {}, + effector = { + action = function(pos,node,channel,msg) + local meta = minetest.get_meta(pos) + local setchan = meta:get_string("channel") + if channel ~= setchan then return end + if msg == "shortbeep" then + local pos_hash = minetest.hash_node_position(pos) + if digistuff.sounds_playing[pos_hash] then + minetest.sound_stop(digistuff.sounds_playing[pos_hash]) + digistuff.sounds_playing[pos_hash] = nil + end + minetest.sound_play({name = "digistuff_piezo_short_single",gain = 0.2},{pos = pos,max_hear_distance = 16}) + elseif msg == "longbeep" then + local pos_hash = minetest.hash_node_position(pos) + if digistuff.sounds_playing[pos_hash] then + minetest.sound_stop(digistuff.sounds_playing[pos_hash]) + digistuff.sounds_playing[pos_hash] = nil + end + minetest.sound_play({name = "digistuff_piezo_long_single",gain = 0.2},{pos = pos,max_hear_distance = 16}) + elseif msg == "fastrepeat" then + local pos_hash = minetest.hash_node_position(pos) + if digistuff.sounds_playing[pos_hash] then + minetest.sound_stop(digistuff.sounds_playing[pos_hash]) + digistuff.sounds_playing[pos_hash] = nil + end + digistuff.sounds_playing[pos_hash] = minetest.sound_play({name = "digistuff_piezo_fast_repeat",gain = 0.2},{pos = pos,max_hear_distance = 16,loop = true}) + elseif msg == "slowrepeat" then + local pos_hash = minetest.hash_node_position(pos) + if digistuff.sounds_playing[pos_hash] then + minetest.sound_stop(digistuff.sounds_playing[pos_hash]) + digistuff.sounds_playing[pos_hash] = nil + end + digistuff.sounds_playing[pos_hash] = minetest.sound_play({name = "digistuff_piezo_slow_repeat",gain = 0.2},{pos = pos,max_hear_distance = 16,loop = true}) + elseif msg == "stop" then + local pos_hash = minetest.hash_node_position(pos) + if digistuff.sounds_playing[pos_hash] then + minetest.sound_stop(digistuff.sounds_playing[pos_hash]) + digistuff.sounds_playing[pos_hash] = nil + end + end + end + }, + }, +}) diff --git a/digistuff/piston.lua b/digistuff/piston.lua new file mode 100644 index 0000000..b4ed655 --- /dev/null +++ b/digistuff/piston.lua @@ -0,0 +1,222 @@ +if not minetest.get_modpath("mesecons_mvps") then + minetest.log("error","mesecons_mvps is not installed - digilines piston will not be available!") + return +end + +local function extend(pos,node,max) + local meta = minetest.get_meta(pos):to_table() + local facedir = minetest.facedir_to_dir(node.param2) + local actiondir = vector.multiply(facedir,-1) + local ppos = vector.add(pos,actiondir) + local success,stack,oldstack = mesecon.mvps_push(ppos,actiondir,max) + if not success then return end + minetest.sound_play("digistuff_piston_extend",{pos = pos,max_hear_distance = 20,gain = 0.6}) + minetest.swap_node(pos,{name = "digistuff:piston_ext",param2 = node.param2}) + minetest.swap_node(ppos,{name = "digistuff:piston_pusher",param2 = node.param2}) + mesecon.mvps_process_stack(stack) + mesecon.mvps_move_objects(ppos,actiondir,oldstack) + minetest.get_meta(pos):from_table(meta) +end + +local function retract(pos,node,max,allsticky) + local facedir = minetest.facedir_to_dir(node.param2) + local actiondir = vector.multiply(facedir,-1) + local ppos = vector.add(pos,actiondir) + minetest.swap_node(pos,{name = "digistuff:piston",param2 = node.param2}) + if minetest.get_node(ppos).name == "digistuff:piston_pusher" then + minetest.remove_node(ppos) + end + minetest.sound_play("digistuff_piston_retract",{pos = pos,max_hear_distance = 20,gain = 0.6}) + minetest.check_for_falling(ppos) + if type(max) ~= "number" or max <= 0 then return end + local pullpos = vector.add(pos,vector.multiply(actiondir,2)) + local success,stack,oldstack + if allsticky then + success,stack,oldstack = mesecon.mvps_pull_all(pullpos,facedir,max) + else + success,stack,oldstack = mesecon.mvps_pull_single(pullpos,facedir,max) + end + if success then + mesecon.mvps_move_objects(pullpos,actiondir,oldstack,-1) + end +end + +minetest.register_node("digistuff:piston", { + description = "Digilines Piston", + groups = {cracky=3}, + paramtype2 = "facedir", + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec","field[channel;Channel;${channel}") + end, + tiles = { + "digistuff_piston_sides.png^[transformR180", + "digistuff_piston_sides.png", + "digistuff_piston_sides.png^[transformR90", + "digistuff_piston_sides.png^[transformR270", + "digistuff_camera_pole.png", + "digistuff_camera_pole.png", + }, + on_receive_fields = function(pos, formname, fields, sender) + local name = sender:get_player_name() + if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then + minetest.record_protection_violation(pos,name) + return + end + local meta = minetest.get_meta(pos) + if fields.channel then meta:set_string("channel",fields.channel) end + end, + digiline = { + wire = { + rules = { + {x = 1, y = 0, z = 0}, + {x =-1, y = 0, z = 0}, + {x = 0, y = 1, z = 0}, + {x = 0, y =-1, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z =-1}, + }, + }, + receptor = {}, + effector = { + action = function(pos,node,channel,msg) + local meta = minetest.get_meta(pos) + local setchan = meta:get_string("channel") + if channel ~= setchan then return end + if msg == "extend" then + extend(pos,node,16) + elseif type(msg) == "table" and msg.action == "extend" then + local max = 16 + if type(msg.max) == "number" then + max = math.max(0,math.min(16,math.floor(msg.max))) + end + extend(pos,node,max) + end + end + }, + }, +}) + +minetest.register_node("digistuff:piston_ext", { + description = "Digilines Piston (extended state - you hacker you!)", + groups = {cracky = 3,not_in_creative_inventory = 1}, + paramtype2 = "facedir", + tiles = { + "digistuff_piston_sides.png^[transformR180", + "digistuff_piston_sides.png", + "digistuff_piston_sides.png^[transformR90", + "digistuff_piston_sides.png^[transformR270", + "digistuff_camera_pole.png", + "digistuff_camera_pole.png", + }, + drop = "digistuff:piston", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.3,0.5,0.5,0.5}, + {-0.2,-0.2,-0.5,0.2,0.2,-0.3}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-1.5,0.5,0.5,0.5}, + } + }, + on_rotate = function() return false end, + on_receive_fields = function(pos, formname, fields, sender) + local name = sender:get_player_name() + if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then + minetest.record_protection_violation(pos,name) + return + end + local meta = minetest.get_meta(pos) + if fields.channel then meta:set_string("channel",fields.channel) end + end, + after_dig_node = function(pos,node) + local pdir = vector.multiply(minetest.facedir_to_dir(node.param2),-1) + local ppos = vector.add(pos,pdir) + if minetest.get_node(ppos).name == "digistuff:piston_pusher" then + minetest.remove_node(ppos) + end + end, + digiline = { + wire = { + rules = { + {x = 1, y = 0, z = 0}, + {x =-1, y = 0, z = 0}, + {x = 0, y = 1, z = 0}, + {x = 0, y =-1, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z =-1}, + }, + }, + receptor = {}, + effector = { + action = function(pos,node,channel,msg) + local meta = minetest.get_meta(pos) + local setchan = meta:get_string("channel") + if channel ~= setchan then return end + if msg == "retract" then + retract(pos,node) + elseif msg == "retract_sticky" then + retract(pos,node,16) + elseif type(msg) == "table" and msg.action == "retract" then + local max = 16 + if type(msg.max) == "number" then + max = math.max(0,math.min(16,math.floor(msg.max))) + elseif msg.max == nil then + max = 0 + end + retract(pos,node,max,msg.allsticky) + end + end + }, + }, +}) + +minetest.register_node("digistuff:piston_pusher", { + description = "Digilines Piston Pusher (you hacker you!)", + groups = {not_in_creative_inventory=1}, + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + tiles = { + "digistuff_piston_sides.png^[transformR180", + "digistuff_piston_sides.png", + "digistuff_piston_sides.png^[transformR90", + "digistuff_piston_sides.png^[transformR270", + "digistuff_camera_pole.png", + "digistuff_camera_pole.png", + }, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5,-0.5,-0.5,0.5,0.5,-0.3}, + {-0.2,-0.2,-0.3,0.2,0.2,0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {0,0,0,0,0,0}, + } + }, + digiline = { + wire = { + rules = { + {x = 1, y = 0, z = 0}, + {x =-1, y = 0, z = 0}, + {x = 0, y = 1, z = 0}, + {x = 0, y =-1, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 0, y = 0, z =-1}, + }, + }, + }, +}) + +mesecon.register_mvps_stopper("digistuff:piston_ext") +mesecon.register_mvps_stopper("digistuff:piston_pusher") diff --git a/digistuff/sounds/digistuff_piston_extend.ogg b/digistuff/sounds/digistuff_piston_extend.ogg new file mode 100644 index 0000000..2a855df Binary files /dev/null and b/digistuff/sounds/digistuff_piston_extend.ogg differ diff --git a/digistuff/sounds/digistuff_piston_retract.ogg b/digistuff/sounds/digistuff_piston_retract.ogg new file mode 100644 index 0000000..57f9342 Binary files /dev/null and b/digistuff/sounds/digistuff_piston_retract.ogg differ diff --git a/digistuff/textures/digistuff_piston_sides.png b/digistuff/textures/digistuff_piston_sides.png new file mode 100644 index 0000000..5475f50 Binary files /dev/null and b/digistuff/textures/digistuff_piston_sides.png differ diff --git a/digistuff/touchscreen.lua b/digistuff/touchscreen.lua new file mode 100644 index 0000000..5b3c5b7 --- /dev/null +++ b/digistuff/touchscreen.lua @@ -0,0 +1,279 @@ +digistuff.update_ts_formspec = function (pos) + local meta = minetest.get_meta(pos) + local fs = "size[10,8]".. + "background[0,0;0,0;digistuff_ts_bg.png;true]" + if meta:get_int("init") == 0 then + fs = fs.."field[3.75,3;3,1;channel;Channel;]".. + "button_exit[4,3.75;2,1;save;Save]" + else + local data = minetest.deserialize(meta:get_string("data")) or {} + for _,field in pairs(data) do + if field.type == "image" then + fs = fs..string.format("image[%s,%s;%s,%s;%s]",field.X,field.Y,field.W,field.H,field.texture_name) + elseif field.type == "field" then + fs = fs..string.format("field[%s,%s;%s,%s;%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,field.label,field.default) + elseif field.type == "pwdfield" then + fs = fs..string.format("pwdfield[%s,%s;%s,%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,field.label) + elseif field.type == "textarea" then + fs = fs..string.format("textarea[%s,%s;%s,%s;%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,field.label,field.default) + elseif field.type == "label" then + fs = fs..string.format("label[%s,%s;%s]",field.X,field.Y,field.label) + elseif field.type == "vertlabel" then + fs = fs..string.format("vertlabel[%s,%s;%s]",field.X,field.Y,field.label) + elseif field.type == "button" then + fs = fs..string.format("button[%s,%s;%s,%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,field.label) + elseif field.type == "button_exit" then + fs = fs..string.format("button_exit[%s,%s;%s,%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,field.label) + elseif field.type == "image_button" then + fs = fs..string.format("image_button[%s,%s;%s,%s;%s;%s;%s]",field.X,field.Y,field.W,field.H,field.image,field.name,field.label) + elseif field.type == "image_button_exit" then + fs = fs..string.format("image_button_exit[%s,%s;%s,%s;%s;%s;%s]",field.X,field.Y,field.W,field.H,field.image,field.name,field.label) + elseif field.type == "dropdown" then + local choices = "" + for _,i in ipairs(field.choices) do + if type(i) == "string" then + choices = choices..minetest.formspec_escape(i).."," + end + end + choices = string.sub(choices,1,-2) + fs = fs..string.format("dropdown[%s,%s;%s,%s;%s;%s;%s]",field.X,field.Y,field.W,field.H,field.name,choices,field.selected_id) + end + end + end + meta:set_string("formspec",fs) +end + +digistuff.ts_on_receive_fields = function (pos, formname, fields, sender) + local meta = minetest.get_meta(pos) + local setchan = meta:get_string("channel") + local playername = sender:get_player_name() + local locked = meta:get_int("locked") == 1 + local can_bypass = minetest.check_player_privs(playername,{protection_bypass=true}) + local is_protected = minetest.is_protected(pos,playername) + if (locked and is_protected) and not can_bypass then + minetest.record_protection_violation(pos,playername) + minetest.chat_send_player(playername,"You are not authorized to use this screen.") + return + end + local init = meta:get_int("init") == 1 + if not init then + if fields.save then + meta:set_string("channel",fields.channel) + meta:set_int("init",1) + digistuff.update_ts_formspec(pos) + end + else + fields.clicker = sender:get_player_name() + digiline:receptor_send(pos, digiline.rules.default, setchan, fields) + end +end + +digistuff.process_command = function (meta, data, msg) + if msg.command == "clear" then + data = {} + elseif msg.command == "addimage" then + for _,i in pairs({"X","Y","W","H"}) do + if not msg[i] or type(msg[i]) ~= "number" then + return + end + end + if not msg.texture_name or type(msg.texture_name) ~= "string" then + return + end + local field = {type="image",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,texture_name=minetest.formspec_escape(msg.texture_name)} + table.insert(data,field) + elseif msg.command == "addfield" then + for _,i in pairs({"X","Y","W","H"}) do + if not msg[i] or type(msg[i]) ~= "number" then + return + end + end + for _,i in pairs({"name","label","default"}) do + if not msg[i] or type(msg[i]) ~= "string" then + return + end + end + local field = {type="field",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label),default=minetest.formspec_escape(msg.default)} + table.insert(data,field) + elseif msg.command == "addpwdfield" then + for _,i in pairs({"X","Y","W","H"}) do + if not msg[i] or type(msg[i]) ~= "number" then + return + end + end + for _,i in pairs({"name","label"}) do + if not msg[i] or type(msg[i]) ~= "string" then + return + end + end + local field = {type="pwdfield",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label)} + table.insert(data,field) + elseif msg.command == "addtextarea" then + for _,i in pairs({"X","Y","W","H"}) do + if not msg[i] or type(msg[i]) ~= "number" then + return + end + end + for _,i in pairs({"name","label","default"}) do + if not msg[i] or type(msg[i]) ~= "string" then + return + end + end + local field = {type="textarea",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label),default=minetest.formspec_escape(msg.default)} + table.insert(data,field) + elseif msg.command == "addlabel" then + for _,i in pairs({"X","Y"}) do + if not msg[i] or type(msg[i]) ~= "number" then + return + end + end + if not msg.label or type(msg.label) ~= "string" then + return + end + local field = {type="label",X=msg.X,Y=msg.Y,label=minetest.formspec_escape(msg.label)} + table.insert(data,field) + elseif msg.command == "addvertlabel" then + for _,i in pairs({"X","Y"}) do + if not msg[i] or type(msg[i]) ~= "number" then + return + end + end + if not msg.label or type(msg.label) ~= "string" then + return + end + local field = {type="vertlabel",X=msg.X,Y=msg.Y,label=minetest.formspec_escape(msg.label)} + table.insert(data,field) + elseif msg.command == "addbutton" then + for _,i in pairs({"X","Y","W","H"}) do + if not msg[i] or type(msg[i]) ~= "number" then + return + end + end + for _,i in pairs({"name","label"}) do + if not msg[i] or type(msg[i]) ~= "string" then + return + end + end + local field = {type="button",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label)} + table.insert(data,field) + elseif msg.command == "addbutton_exit" then + for _,i in pairs({"X","Y","W","H"}) do + if not msg[i] or type(msg[i]) ~= "number" then + return + end + end + for _,i in pairs({"name","label"}) do + if not msg[i] or type(msg[i]) ~= "string" then + return + end + end + local field = {type="button_exit",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label)} + table.insert(data,field) + elseif msg.command == "addimage_button" then + for _,i in pairs({"X","Y","W","H"}) do + if not msg[i] or type(msg[i]) ~= "number" then + return + end + end + for _,i in pairs({"image","name","label"}) do + if not msg[i] or type(msg[i]) ~= "string" then + return + end + end + local field = {type="image_button",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,image=minetest.formspec_escape(msg.image),name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label)} + table.insert(data,field) + elseif msg.command == "addimage_button_exit" then + for _,i in pairs({"X","Y","W","H"}) do + if not msg[i] or type(msg[i]) ~= "number" then + return + end + end + for _,i in pairs({"image","name","label"}) do + if not msg[i] or type(msg[i]) ~= "string" then + return + end + end + local field = {type="image_button_exit",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,image=minetest.formspec_escape(msg.image),name=minetest.formspec_escape(msg.name),label=minetest.formspec_escape(msg.label)} + table.insert(data,field) + elseif msg.command == "adddropdown" then + for _,i in pairs({"X","Y","W","H","selected_id"}) do + if not msg[i] or type(msg[i]) ~= "number" then + return + end + end + if not msg.name or type(msg.name) ~= "string" then + return + end + if not msg.choices or type(msg.choices) ~= "table" or #msg.choices < 1 then + return + end + local field = {type="dropdown",X=msg.X,Y=msg.Y,W=msg.W,H=msg.H,name=msg.name,selected_id=msg.selected_id,choices=msg.choices} + table.insert(data,field) + elseif msg.command == "lock" then + meta:set_int("locked",1) + elseif msg.command == "unlock" then + meta:set_int("locked",0) + end + return data +end + +digistuff.ts_on_digiline_receive = function (pos, node, channel, msg) + local meta = minetest.get_meta(pos) + local setchan = meta:get_string("channel") + if channel ~= setchan then return end + if type(msg) ~= "table" then return end + local data = minetest.deserialize(meta:get_string("data")) or {} + if msg.command then + data = digistuff.process_command(meta,data,msg) + else + for _,i in ipairs(msg) do + if i.command then + data = digistuff.process_command(meta,data,i) or data + end + end + end + meta:set_string("data",minetest.serialize(data)) + digistuff.update_ts_formspec(pos) +end + +minetest.register_node("digistuff:touchscreen", { + description = "Digilines Touchscreen", + groups = {cracky=3}, + on_construct = function(pos) + digistuff.update_ts_formspec(pos,true) + end, + drawtype = "nodebox", + tiles = { + "digistuff_panel_back.png", + "digistuff_panel_back.png", + "digistuff_panel_back.png", + "digistuff_panel_back.png", + "digistuff_panel_back.png", + "digistuff_ts_front.png" + }, + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 } + } + }, + on_receive_fields = digistuff.ts_on_receive_fields, + digiline = + { + receptor = {}, + effector = { + action = digistuff.ts_on_digiline_receive + }, + }, +}) + +minetest.register_craft({ + output = "digistuff:touchscreen", + recipe = { + {"mesecons_luacontroller:luacontroller0000","default:glass","default:glass"}, + {"default:glass","digilines:lcd","default:glass"}, + {"default:glass","default:glass","default:glass"} + } +}) diff --git a/extranodes/init.lua b/extranodes/init.lua index 5d8b260..edc7e87 100644 --- a/extranodes/init.lua +++ b/extranodes/init.lua @@ -57,12 +57,6 @@ if minetest.get_modpath("moreblocks") then tiles={"technic_stainless_steel_block.png"}, }) - stairsplus:register_all("technic", "brass_block", "basic_materials:brass_block", { - description=S("Brass Block"), - groups={cracky=1, not_in_creative_inventory=1}, - tiles={"basic_materials_brass_block.png"}, - }) - function register_technic_stairs_alias(modname, origname, newmod, newname) minetest.register_alias(modname .. ":slab_" .. origname, newmod..":slab_" .. newname) minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", newmod..":slab_" .. newname .. "_inverted") @@ -199,7 +193,6 @@ end minetest.register_node(":technic:insulator_clip", iclip_def) minetest.register_node(":technic:insulator_clip_fencepost", iclipfence_def) -minetest.register_node(":technic:steel_strut_with_insulator_clip", sclip_def) minetest.register_craft({ output = "technic:insulator_clip", @@ -221,33 +214,35 @@ minetest.register_craft({ local steelmod = minetest.get_modpath("steel") -if steelmod then - minetest.register_craft({ - output = "technic:steel_strut_with_insulator_clip", - recipe = { - {"technic:insulator_clip_fencepost"}, - {"steel:strut_mount"} - } - }) +if streetsmod or steelmod then + minetest.register_node(":technic:steel_strut_with_insulator_clip", sclip_def) - minetest.register_craft({ - output = "technic:steel_strut_with_insulator_clip", - recipe = { - {"technic:insulator_clip_fencepost", "" }, - {"steel:strut", "default:steel_ingot" }, - } - }) + if steelmod then + minetest.register_craft({ + output = "technic:steel_strut_with_insulator_clip", + recipe = { + {"technic:insulator_clip_fencepost"}, + {"steel:strut_mount"} + } + }) -end + minetest.register_craft({ + output = "technic:steel_strut_with_insulator_clip", + recipe = { + {"technic:insulator_clip_fencepost", "" }, + {"steel:strut", "default:steel_ingot" }, + } + }) -if streetsmod then - minetest.register_craft({ - output = "technic:steel_strut_with_insulator_clip", - recipe = { - {"technic:insulator_clip_fencepost", "" }, - {"streets:steel_support", "default:steel_ingot" }, - } - }) + elseif streetsmod then + minetest.register_craft({ + output = "technic:steel_strut_with_insulator_clip", + recipe = { + {"technic:insulator_clip_fencepost", "" }, + {"streets:steel_support", "default:steel_ingot" }, + } + }) + end end if minetest.get_modpath("unifieddyes") then diff --git a/gloopblocks/init.lua b/gloopblocks/init.lua index 27af14a..52eeaa2 100644 --- a/gloopblocks/init.lua +++ b/gloopblocks/init.lua @@ -441,14 +441,6 @@ if minetest.get_modpath("moreblocks") then sunlight_propagates = true, }) - stairsplus:register_all("gloopblocks", "cement", "basic_materials:cement_block", { - description = S("Cement"), - tiles = {"basic_materials_cement_block.png"}, - groups = {cracky=2, not_in_creative_inventory=1}, - sounds = default.node_sound_stone_defaults(), - sunlight_propagates = true, - }) - stairsplus:register_all("gloopblocks", "pavement", "gloopblocks:pavement", { description = S("Pavement"), tiles = {"gloopblocks_pavement.png"}, diff --git a/homedecor/crafts.lua b/homedecor/crafts.lua index 68463a9..aaef1dd 100644 --- a/homedecor/crafts.lua +++ b/homedecor/crafts.lua @@ -1541,7 +1541,7 @@ minetest.register_craft( { recipe = { { "default:steel_ingot", "default:steel_ingot", "basic_materials:ic" }, { "default:steel_ingot", "bucket:bucket_water", "default:steel_ingot" }, - { "default:steel_ingot", "technic:motor", "default:steel_ingot" } + { "default:steel_ingot", "basic_materials:motor", "default:steel_ingot" } }, }) @@ -1558,7 +1558,7 @@ minetest.register_craft( { output = "homedecor:dryer", recipe = { { "default:steel_ingot", "default:steel_ingot", "basic_materials:ic" }, - { "default:steel_ingot", "bucket:bucket_empty", "technic:motor" }, + { "default:steel_ingot", "bucket:bucket_empty", "basic_materials:motor" }, { "default:steel_ingot", "basic_materials:heating_element", "default:steel_ingot" } }, }) @@ -1587,7 +1587,7 @@ minetest.register_craft( { output = "homedecor:dishwasher", recipe = { { "basic_materials:ic", "homedecor:fence_chainlink", "default:steel_ingot", }, - { "default:steel_ingot", "homedecor:shower_head", "technic:motor" }, + { "default:steel_ingot", "homedecor:shower_head", "basic_materials:motor" }, { "default:steel_ingot", "basic_materials:heating_element", "bucket:bucket_water" } }, }) @@ -1888,8 +1888,8 @@ minetest.register_craft({ output = "homedecor:air_conditioner", recipe = { { "default:steel_ingot", "building_blocks:grate", "default:steel_ingot" }, - { "default:steel_ingot", "technic:motor", "default:steel_ingot" }, - { "default:steel_ingot", "technic:motor", "default:steel_ingot" }, + { "default:steel_ingot", "basic_materials:motor", "default:steel_ingot" }, + { "default:steel_ingot", "basic_materials:motor", "default:steel_ingot" }, }, }) @@ -1905,7 +1905,7 @@ minetest.register_craft({ minetest.register_craft({ output = "homedecor:ceiling_fan", recipe = { - { "technic:motor" }, + { "basic_materials:motor" }, { "homedecor:fan_blades" }, { "homedecor:glowlight_small_cube" } } @@ -1989,7 +1989,7 @@ minetest.register_craft({ output = "homedecor:dvd_player 2", recipe = { { "", "basic_materials:plastic_sheet", "" }, - { "default:obsidian_glass", "technic:motor", "technic:motor" }, + { "default:obsidian_glass", "basic_materials:motor", "basic_materials:motor" }, { "default:mese_crystal_fragment", "basic_materials:ic", "basic_materials:energy_crystal_simple" }, }, }) diff --git a/moreblocks/CHANGELOG.md b/moreblocks/CHANGELOG.md index 2b9c5f2..53c4458 100644 --- a/moreblocks/CHANGELOG.md +++ b/moreblocks/CHANGELOG.md @@ -7,14 +7,20 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +## [1.2.0] - 2018-11-24 + ### Added +- Stairs+ nodes for `basic_materials`'s concrete, cement and brass blocks. - Listring add for circular saw. -- Stairs+: New API function: - `stairsplus:register_custom_subset(subset, modname, subname, recipeitem, fields)` +- **Stairs+:** New API function + `stairsplus:register_custom_subset(subset, modname, subname, recipeitem, fields)`. ### Fixed +- The papyrus crafting recipe override is now properly applied over the + `default` mod's recipe. +- Centered wooden tiles are now craftable. - Wool Stairs+ nodes can no longer be used in crafting. - The circular saw can no longer replace items from the player's inventory when it is full. @@ -52,5 +58,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Initial versioned release. -[Unreleased]: https://github.com/minetest-mods/moreblocks/compare/v1.1.0...HEAD +[Unreleased]: https://github.com/minetest-mods/moreblocks/compare/v1.2.0...HEAD +[1.2.0]: https://github.com/minetest-mods/moreblocks/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/minetest-mods/moreblocks/compare/v1.0.0...v1.1.0 diff --git a/moreblocks/LICENSE.md b/moreblocks/LICENSE.md index a3511ad..f68debf 100644 --- a/moreblocks/LICENSE.md +++ b/moreblocks/LICENSE.md @@ -1,6 +1,6 @@ # zlib license -Copyright (c) 2011-2017 Hugo Locurcio and contributors +Copyright (c) 2011-2018 Hugo Locurcio and contributors **This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.** diff --git a/moreblocks/README.md b/moreblocks/README.md index 6c37b74..33b9d6b 100644 --- a/moreblocks/README.md +++ b/moreblocks/README.md @@ -65,7 +65,7 @@ versions than 0.4.16 will generally not be fixed. ## License -Copyright © 2011-2017 Hugo Locurcio and contributors +Copyright © 2011-2018 Hugo Locurcio and contributors - More Blocks code is licensed under the zlib license, see [`LICENSE.md`](LICENSE.md) for details. diff --git a/moreblocks/aliases.lua b/moreblocks/aliases.lua index f1dbe84..59f5d5c 100644 --- a/moreblocks/aliases.lua +++ b/moreblocks/aliases.lua @@ -1,7 +1,7 @@ --[[ More Blocks: alias definitions -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/circular_saw.lua b/moreblocks/circular_saw.lua index fe241e5..94e680e 100644 --- a/moreblocks/circular_saw.lua +++ b/moreblocks/circular_saw.lua @@ -1,7 +1,7 @@ --[[ More Blocks: circular saw -Copyright (c) 2011-2017 Hugo Locurcio, Sokomine and contributors. +Copyright (c) 2011-2018 Hugo Locurcio, Sokomine and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/config.lua b/moreblocks/config.lua index 8d49c3b..84dcaf2 100644 --- a/moreblocks/config.lua +++ b/moreblocks/config.lua @@ -1,7 +1,7 @@ --[[ More Blocks: configuration handling -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/crafting.lua b/moreblocks/crafting.lua index 5b14602..5fdd82f 100644 --- a/moreblocks/crafting.lua +++ b/moreblocks/crafting.lua @@ -1,7 +1,7 @@ --[[ More Blocks: crafting recipes -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/depends.txt b/moreblocks/depends.txt index e8ecf06..d27d8a5 100644 --- a/moreblocks/depends.txt +++ b/moreblocks/depends.txt @@ -3,3 +3,4 @@ intllib? stairs? farming? wool? +basic_materials? diff --git a/moreblocks/init.lua b/moreblocks/init.lua index c12f5e0..168768a 100644 --- a/moreblocks/init.lua +++ b/moreblocks/init.lua @@ -3,7 +3,7 @@ ** More Blocks ** By Calinou, with the help of ShadowNinja and VanessaE. -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. ===================================================================== --]] diff --git a/moreblocks/nodes.lua b/moreblocks/nodes.lua index efa1f94..f898068 100644 --- a/moreblocks/nodes.lua +++ b/moreblocks/nodes.lua @@ -1,7 +1,7 @@ --[[ More Blocks: node definitions -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/ownership.lua b/moreblocks/ownership.lua index c569ae7..eb1ae0e 100644 --- a/moreblocks/ownership.lua +++ b/moreblocks/ownership.lua @@ -1,7 +1,7 @@ --[[ More Blocks: ownership handling -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/redefinitions.lua b/moreblocks/redefinitions.lua index 437c2d3..fd24c80 100644 --- a/moreblocks/redefinitions.lua +++ b/moreblocks/redefinitions.lua @@ -1,7 +1,7 @@ --[[ More Blocks: redefinitions of default stuff -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/stairsplus/aliases.lua b/moreblocks/stairsplus/aliases.lua index a4d95f0..224dce7 100644 --- a/moreblocks/stairsplus/aliases.lua +++ b/moreblocks/stairsplus/aliases.lua @@ -1,7 +1,7 @@ --[[ More Blocks: alias definitions -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/stairsplus/conversion.lua b/moreblocks/stairsplus/conversion.lua index 887f3e3..bc8e77e 100644 --- a/moreblocks/stairsplus/conversion.lua +++ b/moreblocks/stairsplus/conversion.lua @@ -1,7 +1,7 @@ --[[ More Blocks: conversion -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/stairsplus/init.lua b/moreblocks/stairsplus/init.lua index 4f3a17e..624b7c8 100644 --- a/moreblocks/stairsplus/init.lua +++ b/moreblocks/stairsplus/init.lua @@ -1,7 +1,7 @@ --[[ More Blocks: Stairs+ -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/stairsplus/microblocks.lua b/moreblocks/stairsplus/microblocks.lua index 22c20a3..dc8ddfd 100644 --- a/moreblocks/stairsplus/microblocks.lua +++ b/moreblocks/stairsplus/microblocks.lua @@ -1,7 +1,7 @@ --[[ More Blocks: microblock definitions -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/stairsplus/panels.lua b/moreblocks/stairsplus/panels.lua index ac641d8..5e2bf7b 100644 --- a/moreblocks/stairsplus/panels.lua +++ b/moreblocks/stairsplus/panels.lua @@ -1,7 +1,7 @@ --[[ More Blocks: panel definitions -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/stairsplus/recipes.lua b/moreblocks/stairsplus/recipes.lua index 56fcf68..ec908bd 100644 --- a/moreblocks/stairsplus/recipes.lua +++ b/moreblocks/stairsplus/recipes.lua @@ -1,7 +1,7 @@ --[[ More Blocks: Stairs+ -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] @@ -440,4 +440,4 @@ stairsplus.register_recipes = function(category, alternate, modname, subname, re }) end end -end \ No newline at end of file +end diff --git a/moreblocks/stairsplus/registrations.lua b/moreblocks/stairsplus/registrations.lua index dc89234..6262a6d 100644 --- a/moreblocks/stairsplus/registrations.lua +++ b/moreblocks/stairsplus/registrations.lua @@ -1,7 +1,7 @@ --[[ More Blocks: registrations -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] @@ -112,6 +112,36 @@ if minetest.get_modpath("wool") then end end +-- basic_materials, keeping the original other-mod-oriented names +-- for backwards compatibility + +if minetest.get_modpath("basic_materials") then + stairsplus:register_all("technic","concrete","basic_materials:concrete_block",{ + description = "Concrete", + tiles = {"basic_materials_concrete_block.png",}, + groups = {cracky=1, level=2, concrete=1}, + sounds = default.node_sound_stone_defaults(), + }) + + minetest.register_alias("prefab:concrete_stair","technic:stair_concrete") + minetest.register_alias("prefab:concrete_slab","technic:slab_concrete") + + stairsplus:register_all("gloopblocks", "cement", "basic_materials:cement_block", { + description = "Cement", + tiles = {"basic_materials_cement_block.png"}, + groups = {cracky=2, not_in_creative_inventory=1}, + sounds = default.node_sound_stone_defaults(), + sunlight_propagates = true, + }) + + stairsplus:register_all("technic", "brass_block", "basic_materials:brass_block", { + description="Brass Block", + groups={cracky=1, not_in_creative_inventory=1}, + tiles={"basic_materials_brass_block.png"}, + }) + +end + -- Alias cuts of split_stone_tile_alt which was renamed checker_stone_tile. stairsplus:register_alias_all("moreblocks", "split_stone_tile_alt", "moreblocks", "checker_stone_tile") diff --git a/moreblocks/stairsplus/slabs.lua b/moreblocks/stairsplus/slabs.lua index 3fa119e..11618a2 100644 --- a/moreblocks/stairsplus/slabs.lua +++ b/moreblocks/stairsplus/slabs.lua @@ -1,7 +1,7 @@ --[[ More Blocks: slab definitions -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/stairsplus/slopes.lua b/moreblocks/stairsplus/slopes.lua index 7b82733..63635eb 100644 --- a/moreblocks/stairsplus/slopes.lua +++ b/moreblocks/stairsplus/slopes.lua @@ -1,7 +1,7 @@ --[[ More Blocks: slope definitions -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/moreblocks/stairsplus/stairs.lua b/moreblocks/stairsplus/stairs.lua index 5c38864..0ccf081 100644 --- a/moreblocks/stairsplus/stairs.lua +++ b/moreblocks/stairsplus/stairs.lua @@ -1,7 +1,7 @@ --[[ More Blocks: stair definitions -Copyright (c) 2011-2017 Hugo Locurcio and contributors. +Copyright (c) 2011-2018 Hugo Locurcio and contributors. Licensed under the zlib license. See LICENSE.md for more information. --]] diff --git a/pipeworks/autoplace_tubes.lua b/pipeworks/autoplace_tubes.lua index a3a6aee..40a041f 100644 --- a/pipeworks/autoplace_tubes.lua +++ b/pipeworks/autoplace_tubes.lua @@ -122,7 +122,7 @@ end -- when they are updated. function pipeworks.on_rotate(pos, node, user, mode, new_param2) node.param2 = new_param2 - minetest.set_node(pos, node) + minetest.swap_node(pos, node) pipeworks.scan_for_tube_objects(pos) return true end diff --git a/prefab_redo/depends.txt b/prefab_redo/depends.txt index b8def00..7af3d83 100644 --- a/prefab_redo/depends.txt +++ b/prefab_redo/depends.txt @@ -1,4 +1,3 @@ default doors basic_materials -moreblocks diff --git a/prefab_redo/init.lua b/prefab_redo/init.lua index 02d8652..7b28b84 100644 --- a/prefab_redo/init.lua +++ b/prefab_redo/init.lua @@ -5,8 +5,6 @@ minetest.register_alias("prefab:concrete","technic:concrete") minetest.register_alias("prefab:concrete_wall","prefab_redo:concrete_wall") minetest.register_alias("prefab:concrete_with_grass","prefab_redo:concrete_with_grass") -minetest.register_alias("prefab:concrete_stair","technic:stair_concrete") -minetest.register_alias("prefab:concrete_slab","technic:slab_concrete") minetest.register_alias("prefab:concrete_ladder","prefab_redo:concrete_ladder") minetest.register_alias("prefab:concrete_door_a","doors:door_concrete_a") minetest.register_alias("prefab:concrete_door_b","doors:door_concrete_b") @@ -17,26 +15,6 @@ minetest.register_alias("prefab:concrete_railing_corner","prefab_redo:concrete_r minetest.register_alias("prefab:concrete_catwalk","prefab_redo:concrete_catwalk") minetest.register_alias("prefab:concrete_bench","prefab_redo:concrete_bench") -stairsplus:register_all("technic","concrete","basic_materials:concrete_block",{ - description = "Concrete", - tiles = {"basic_materials_concrete_block.png",}, - groups = {cracky=1, level=2, concrete=1}, - sounds = default.node_sound_stone_defaults(), -}) - -stairsplus:register_all("technic","blast_resistant_concrete","technic:blast_resistant_concrete",{ - description = "Blast-resistant Concrete", - tiles = {"technic_blast_resistant_concrete_block.png",}, - groups = {cracky=1, level=3, concrete=1}, - sounds = default.node_sound_stone_defaults(), - on_blast = function(pos, intensity) - if intensity > 1 then - minetest.remove_node(pos) - minetest.add_item(pos, "technic:blast_resistant_concrete") - end - end, -}) - minetest.register_node("prefab_redo:concrete_with_grass", { description = "Concrete with Grass", sounds = default.node_sound_glass_defaults(), diff --git a/technic/crafts.lua b/technic/crafts.lua index 90bd2dd..3b17e6d 100644 --- a/technic/crafts.lua +++ b/technic/crafts.lua @@ -44,6 +44,12 @@ minetest.clear_craft({ output = "basic_materials:brass_ingot", }) +minetest.register_craft( { + type = "shapeless", + output = "basic_materials:brass_ingot 9", + recipe = { "basic_materials:brass_block" }, +}) + -- tubes crafting recipes minetest.register_craft({ diff --git a/technic/locale/de.txt b/technic/locale/de.txt index 855ec5a..69bcb3d 100644 --- a/technic/locale/de.txt +++ b/technic/locale/de.txt @@ -67,7 +67,6 @@ Disabled = %s Alloy Furnace = %s Legierungsofen %s Battery Box = %s Batteriebox %s Cable = %s Kabel -%s CNC Machine = %s CNC-Maschine %s Compressor = %s Kompressor %s Extractor = %s Extraktor %s Forcefield Emitter = %s Kraftfeld-Emitter @@ -121,41 +120,6 @@ Digging finished = Digging %d m above machine = Digging %d m below machine = -## CNC -Cylinder = Zylinder -Element Cross = Halbes Kreuzelement -Element Cross Double = Kreuzelement -Element Edge = Halbes Eckelement -Element Edge Double = Eckelement -Element End = Halbes Endelement -Element End Double = Endelement -Element Straight = Halbes aufrechtes Element -Element Straight Double = Aufrechtes Element -Element T = Halbes T-Element -Element T Double = T-Element -Horizontal Cylinder = Liegender Zylinder -One Curved Edge Block = Block mit einer abgerundeten Kante -Pyramid = Pyramide -Slope = Schraege -Slope Edge = Schraege mit Ecke -Slope Inner Edge = Schraege mit Innenecke -Slope Lying = Liegende Schraege -Slope Upside Down = Umgedrehte Schraege -Slope Upside Down Edge = Umgedrehte Schraege mit Ecke -Slope Upside Down Inner Edge = Umgedrehte Schraege mit Innenecke -Sphere = Kugel -Spike = Spitze -Stick = Stange -Two Curved Edge Block = Block mit zwei abgerundeten Kanten -Brick = Ziegel: -Cobble = Pflasterstein: -Dirt = Erde: -Leaves = Laub: -Sandstone = Sandstein: -Stone = Stein: -Tree = Baumstamm: -Wooden = Holz: - ## Grinder Recipes # $1: Name %s Dust = %sstaub diff --git a/technic/locale/es.txt b/technic/locale/es.txt index 7945d65..2c1cdca 100644 --- a/technic/locale/es.txt +++ b/technic/locale/es.txt @@ -63,7 +63,6 @@ Disabled = %s Alloy Furnace = Horno de Aleacion %s %s Battery Box = Caja de Bateria %s %s Cable = Cable %s -%s CNC Machine = Maquina CNC %s %s Compressor = Compresor %s %s Extractor = Extractor %s %s Forcefield Emitter = Emisor de Campo de Fuerza %s @@ -115,40 +114,6 @@ Digging finished = Digging %d m above machine = Digging %d m below machine = -## CNC Machine -Element Edge = Elemento Borde -Tree = Arbol -Element Cross Double = Elemento Cruz Doble -Spike = Pica -Element Edge Double = Elemento Borde Doble -Two Curved Edge Block = Dos Bloques de Borde Curvados -Pyramid = Piramide -Slope Upside Down Inner Edge = Borde Interno de Rampa Al Reves -Slope Upside Down Edge = Borde de Rampa Al Reves -Element Straight Double = Elemento Doble Recto -Sphere = Esfera -Element End Double = Doble Fin de Elemento -Element Straight = Recta de Elemento -Horizontal Cylinder = Cilindro Horizontal -Slope Inner Edge = Borde Interno de Rampa -One Curved Edge Block = Un Bloque de Borde Curvado -Element Cross = Cruce de Elementos -Stick = Varita -Element End = Fin de Elemento -Slope Lying = Rampa en Reposo -Slope Upside Down = Rampa Al Reves -Slope Edge = Borde de Rampa -Slope = Rampa -Element T = Elemento T -Cylinder = Cilindro -Cobble = Adoquines -Stone = Piedra -Brick = Ladrillo -Dirt = Tierra -Sandstone = Arenisca -Wooden = Madera -Leaves = Hojas - ## Grinder Recipes # $1: Name %s Dust = Polvo de %s diff --git a/technic/locale/it.txt b/technic/locale/it.txt index a092a53..18b0e4f 100644 --- a/technic/locale/it.txt +++ b/technic/locale/it.txt @@ -64,7 +64,6 @@ Disabled = Disabilitato %s Alloy Furnace = %s Fornace per leghe %s Battery Box = %s Box batterie %s Cable = Cavo %s -%s CNC Machine = Tornio CNC %s %s Compressor = Compressore %s %s Extractor = Estrattore %s %s Forcefield Emitter = Emettitore di campo di forza %s @@ -118,41 +117,6 @@ Digging finished = Scavo finito Digging %d m above machine = Scavo di %d m sopra la macchina Digging %d m below machine = Scavo di %d m sotto la macchina -## CNC -Cylinder = Cilindro -Element Cross = Elemento a croce -Element Cross Double = Elemento a croce doppio -Element Edge = Elemento bordo -Element Edge Double = Elemento bordo doppio -Element End = Elemento finale -Element End Double = Elemento finale doppio -Element Straight = Elemento dritto -Element Straight Double = Elemento dritto doppio -Element T = Elemento a T -Element T Double = Elemento a T doppio -Horizontal Cylinder = Cilindro orizzontale -One Curved Edge Block = Blocco con bordo curvo -Pyramid = Piramide -Slope = Inclinato -Slope Edge = Bordo inclinato -Slope Inner Edge = Bordo interno inclinato -Slope Lying = Pendenza bugiarda -Slope Upside Down = Pendenza capovolta -Slope Upside Down Edge = Bordo inclinato capovolto -Slope Upside Down Inner Edge = Bordo interno inclinato capovolto -Sphere = Sfera -Spike = Spuntone -Stick = Bastone -Two Curved Edge Block = Blocco con bordo a doppia curva -Brick = Mattone -Cobble = Ciottolato -Dirt = Terra -Leaves = Foglie -Sandstone = Arenaria -Stone = Pietra -Tree = Albero -Wooden = Legno - ## Grinder Recipes # $1: Name %s Dust = Polvere di %s diff --git a/technic/locale/template.txt b/technic/locale/template.txt index 0464241..f94ccda 100644 --- a/technic/locale/template.txt +++ b/technic/locale/template.txt @@ -71,7 +71,6 @@ Disabled = %s Alloy Furnace = %s Battery Box = %s Cable = -%s CNC Machine = %s Centrifuge = %s Compressor = %s Extractor = @@ -127,40 +126,6 @@ Digging %d m above machine = Digging %d m below machine = @1 (@2 @3 -> @4 @5) = -## CNC -Cylinder = -Element Cross = -Element Cross Double = -Element Edge = -Element Edge Double = -Element End = -Element End Double = -Element Straight = -Element Straight Double = -Element T = -Element T Double = -Horizontal Cylinder = -One Curved Edge Block = -Pyramid = -Slope = -Slope Edge = -Slope Inner Edge = -Slope Lying = -Slope Upside Down = -Slope Upside Down Edge = -Slope Upside Down Inner Edge = -Sphere = -Spike = -Stick = -Two Curved Edge Block = -Brick = -Cobble = -Dirt = -Leaves = -Sandstone = -Stone = -Tree = -Wooden = ## Grinder Recipes # $1: Name diff --git a/technic/machines/LV/cnc.lua b/technic/machines/LV/cnc.lua deleted file mode 100644 index b8eb729..0000000 --- a/technic/machines/LV/cnc.lua +++ /dev/null @@ -1,230 +0,0 @@ --- Technic CNC v1.0 by kpoppel --- Based on the NonCubic Blocks MOD v1.4 by yves_de_beck - --- Idea: --- Somehow have a tabbed/paged panel if the number of shapes should expand --- beyond what is available in the panel today. --- I could imagine some form of API allowing modders to come with their own node --- box definitions and easily stuff it in the this machine for production. - -local S = technic.getter - - -minetest.register_craft({ - output = 'technic:cnc', - recipe = { - {'default:glass', 'technic:diamond_drill_head', 'default:glass'}, - {'technic:control_logic_unit', 'technic:machine_casing', 'basic_materials:motor'}, - {'technic:carbon_steel_ingot', 'technic:lv_cable', 'technic:carbon_steel_ingot'}, - }, -}) - - -local shape = {} -local onesize_products = { - slope = 2, - slope_edge = 1, - slope_inner_edge = 1, - pyramid = 2, - spike = 1, - cylinder = 2, - oblate_spheroid = 1, - sphere = 1, - stick = 8, - slope_upsdown = 2, - slope_edge_upsdown = 1, - slope_inner_edge_upsdown = 1, - cylinder_horizontal = 2, - slope_lying = 2, - onecurvededge = 1, - twocurvededge = 1, -} -local twosize_products = { - element_straight = 4, - element_end = 2, - element_cross = 1, - element_t = 1, - element_edge = 2, -} - -local cnc_formspec = - "size[9,11;]".. - "label[1,0;"..S("Choose Milling Program:").."]".. - "image_button[1,0.5;1,1;technic_cnc_slope.png;slope; ]".. - "image_button[2,0.5;1,1;technic_cnc_slope_edge.png;slope_edge; ]".. - "image_button[3,0.5;1,1;technic_cnc_slope_inner_edge.png;slope_inner_edge; ]".. - "image_button[4,0.5;1,1;technic_cnc_pyramid.png;pyramid; ]".. - "image_button[5,0.5;1,1;technic_cnc_spike.png;spike; ]".. - "image_button[6,0.5;1,1;technic_cnc_cylinder.png;cylinder; ]".. - "image_button[7,0.5;1,1;technic_cnc_oblate_spheroid.png;oblate_spheroid; ]".. - "image_button[8,0.5;1,1;technic_cnc_stick.png;stick; ]".. - - "image_button[1,1.5;1,1;technic_cnc_slope_upsdwn.png;slope_upsdown; ]".. - "image_button[2,1.5;1,1;technic_cnc_slope_edge_upsdwn.png;slope_edge_upsdown; ]".. - "image_button[3,1.5;1,1;technic_cnc_slope_inner_edge_upsdwn.png;slope_inner_edge_upsdown; ]".. - "image_button[4,1.5;1,1;technic_cnc_cylinder_horizontal.png;cylinder_horizontal; ]".. - "image_button[5,1.5;1,1;technic_cnc_sphere.png;sphere; ]".. - - "image_button[1,2.5;1,1;technic_cnc_slope_lying.png;slope_lying; ]".. - "image_button[2,2.5;1,1;technic_cnc_onecurvededge.png;onecurvededge; ]".. - "image_button[3,2.5;1,1;technic_cnc_twocurvededge.png;twocurvededge; ]".. - - "label[1,3.5;"..S("Slim Elements half / normal height:").."]".. - - "image_button[1,4;1,0.5;technic_cnc_full.png;full; ]".. - "image_button[1,4.5;1,0.5;technic_cnc_half.png;half; ]".. - "image_button[2,4;1,1;technic_cnc_element_straight.png;element_straight; ]".. - "image_button[3,4;1,1;technic_cnc_element_end.png;element_end; ]".. - "image_button[4,4;1,1;technic_cnc_element_cross.png;element_cross; ]".. - "image_button[5,4;1,1;technic_cnc_element_t.png;element_t; ]".. - "image_button[6,4;1,1;technic_cnc_element_edge.png;element_edge; ]".. - - "label[0, 5.5;"..S("In:").."]".. - "list[current_name;src;0.5,5.5;1,1;]".. - "label[4, 5.5;"..S("Out:").."]".. - "list[current_name;dst;5,5.5;4,1;]".. - - "list[current_player;main;0,7;8,4;]".. - "listring[current_name;dst]".. - "listring[current_player;main]".. - "listring[current_name;src]".. - "listring[current_player;main]" - -local size = 1; - --- The form handler is declared here because we need it in both the inactive and active modes --- in order to be able to change programs wile it is running. -local function form_handler(pos, formname, fields, sender) - -- REGISTER MILLING PROGRAMS AND OUTPUTS: - ------------------------------------------ - -- Program for half/full size - if fields["full"] then - size = 1 - return - end - - if fields["half"] then - size = 2 - return - end - - -- Resolve the node name and the number of items to make - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local inputstack = inv:get_stack("src", 1) - local inputname = inputstack:get_name() - local multiplier = 0 - for k, _ in pairs(fields) do - -- Set a multipier for the half/full size capable blocks - if twosize_products[k] ~= nil then - multiplier = size * twosize_products[k] - else - multiplier = onesize_products[k] - end - - if onesize_products[k] ~= nil or twosize_products[k] ~= nil then - meta:set_float( "cnc_multiplier", multiplier) - meta:set_string("cnc_user", sender:get_player_name()) - end - - if onesize_products[k] ~= nil or (twosize_products[k] ~= nil and size==2) then - meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k) - --print(inputname .. "_technic_cnc_" .. k) - break - end - - if twosize_products[k] ~= nil and size==1 then - meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k .. "_double") - --print(inputname .. "_technic_cnc_" .. k .. "_double") - break - end - end - return -end - --- Action code performing the transformation -local run = function(pos, node) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local eu_input = meta:get_int("LV_EU_input") - local machine_name = S("%s CNC Machine"):format("LV") - local machine_node = "technic:cnc" - local demand = 450 - - local result = meta:get_string("cnc_product") - if inv:is_empty("src") or - (not minetest.registered_nodes[result]) or - (not inv:room_for_item("dst", result)) then - technic.swap_node(pos, machine_node) - meta:set_string("infotext", S("%s Idle"):format(machine_name)) - meta:set_string("cnc_product", "") - meta:set_int("LV_EU_demand", 0) - return - end - - if eu_input < demand then - technic.swap_node(pos, machine_node) - meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) - elseif eu_input >= demand then - technic.swap_node(pos, machine_node.."_active") - meta:set_string("infotext", S("%s Active"):format(machine_name)) - meta:set_int("src_time", meta:get_int("src_time") + 1) - if meta:get_int("src_time") >= 3 then -- 3 ticks per output - meta:set_int("src_time", 0) - srcstack = inv:get_stack("src", 1) - srcstack:take_item() - inv:set_stack("src", 1, srcstack) - inv:add_item("dst", result.." "..meta:get_int("cnc_multiplier")) - end - end - meta:set_int("LV_EU_demand", demand) -end - --- The actual block inactive state -minetest.register_node("technic:cnc", { - description = S("%s CNC Machine"):format("LV"), - tiles = {"technic_cnc_top.png", "technic_cnc_bottom.png", "technic_cnc_side.png", - "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front.png"}, - groups = {cracky=2, technic_machine=1, technic_lv=1}, - connect_sides = {"bottom", "back", "left", "right"}, - paramtype2 = "facedir", - legacy_facedir_simple = true, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("%s CNC Machine"):format("LV")) - meta:set_float("technic_power_machine", 1) - meta:set_string("formspec", cnc_formspec) - local inv = meta:get_inventory() - inv:set_size("src", 1) - inv:set_size("dst", 4) - end, - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - on_receive_fields = form_handler, - technic_run = run, -}) - --- Active state block -minetest.register_node("technic:cnc_active", { - description = S("%s CNC Machine"):format("LV"), - tiles = {"technic_cnc_top_active.png", "technic_cnc_bottom.png", "technic_cnc_side.png", - "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front_active.png"}, - groups = {cracky=2, technic_machine=1, technic_lv=1, not_in_creative_inventory=1}, - connect_sides = {"bottom", "back", "left", "right"}, - paramtype2 = "facedir", - drop = "technic:cnc", - legacy_facedir_simple = true, - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - on_receive_fields = form_handler, - technic_run = run, - technic_disabled_machine_name = "technic:cnc", -}) - -technic.register_machine("LV", "technic:cnc", technic.receiver) -technic.register_machine("LV", "technic:cnc_active", technic.receiver) - diff --git a/technic/machines/LV/cnc_api.lua b/technic/machines/LV/cnc_api.lua deleted file mode 100644 index f5aae5c..0000000 --- a/technic/machines/LV/cnc_api.lua +++ /dev/null @@ -1,369 +0,0 @@ --- API for the technic CNC machine --- Again code is adapted from the NonCubic Blocks MOD v1.4 by yves_de_beck - -local S = technic.getter - -technic.cnc = {} - --- REGISTER NONCUBIC FORMS, CREATE MODELS AND RECIPES: ------------------------------------------------------- - --- Define slope boxes for the various nodes -------------------------------------------- -technic.cnc.programs = { - { 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", - model = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.5}, - desc = S("Element End 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", - 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", - 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", - model = {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, - desc = S("Element Straight Double") - }, - - { 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", - 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", - 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", - 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", - model = {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, - desc = S("Element Straight") - }, - - { 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_sphere", - model = "technic_sphere.obj", - desc = S("Sphere") - }, - - { suffix = "technic_cnc_cylinder_horizontal", - model = "technic_cylinder_horizontal.obj", - desc = S("Horizontal Cylinder") - }, - - { suffix = "technic_cnc_cylinder", - model = "technic_cylinder.obj", - desc = S("Cylinder") - }, - - { suffix = "technic_cnc_twocurvededge", - model = "technic_two_curved_edge.obj", - desc = S("Two Curved Edge/Corner Block") - }, - - { suffix = "technic_cnc_onecurvededge", - model = "technic_one_curved_edge.obj", - desc = S("One Curved Edge Block") - }, - - { 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_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_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_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_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_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_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_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_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, 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 = dtype, - node_box = nodeboxdef, - mesh = meshdef, - tiles = images, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - groups = groups, - selection_box = sbox, - collision_box = cbox - }) -end - --- function to iterate over all the programs the CNC machine knows -function technic.cnc.register_all(recipeitem, groups, images, description) - for _, data in ipairs(technic.cnc.programs) do - -- Disable node creation for disabled node types for some material - local do_register = true - if technic.cnc.programs_disable[recipeitem] ~= nil then - for __, disable in ipairs(technic.cnc.programs_disable[recipeitem]) do - if disable == data.suffix then - do_register = false - end - end - end - -- Create the node if it passes the test - if do_register then - technic.cnc.register_program(recipeitem, data.suffix, data.model, - groups, images, description.." "..data.desc, data.cbox, data.sbox) - end - end -end - - --- 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_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) - technic.cnc.register_slope_upsdown(recipeitem, groups, images, desc_slope_upsdown) - technic.cnc.register_slope_edge(recipeitem, groups, images, desc_slope_edge) - technic.cnc.register_slope_inner_edge(recipeitem, groups, images, desc_slope_inner_edge) - technic.cnc.register_slope_edge_upsdown(recipeitem, groups, images, desc_slope_upsdwn_edge) - technic.cnc.register_slope_inner_edge_upsdown(recipeitem, groups, images, desc_slope_upsdwn_inner_edge) - technic.cnc.register_pyramid(recipeitem, groups, images, desc_pyramid) - technic.cnc.register_spike(recipeitem, groups, images, desc_spike) - technic.cnc.register_onecurvededge(recipeitem, groups, images, desc_onecurvededge) - 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_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) - technic.cnc.register_element_cross(recipeitem, groups, images, desc_element_cross) - technic.cnc.register_element_end(recipeitem, groups, images, desc_element_end) -end - --- REGISTER STICKS: noncubic.register_xyz(recipeitem, groups, images, desc_element_xyz) ------------------------------------------------------------------------------------------------------------- -function technic.cnc.register_stick_etc(recipeitem, groups, images, desc_stick) - technic.cnc.register_stick(recipeitem, groups, images, desc_stick) -end - -function technic.cnc.register_elements(recipeitem, groups, images, desc_element_straight_double, desc_element_edge_double, desc_element_t_double, desc_element_cross_double, desc_element_end_double) - technic.cnc.register_element_straight_double(recipeitem, groups, images, desc_element_straight_double) - technic.cnc.register_element_edge_double(recipeitem, groups, images, desc_element_edge_double) - technic.cnc.register_element_t_double(recipeitem, groups, images, desc_element_t_double) - technic.cnc.register_element_cross_double(recipeitem, groups, images, desc_element_cross_double) - technic.cnc.register_element_end_double(recipeitem, groups, images, desc_element_end_double) -end - diff --git a/technic/machines/LV/cnc_nodes.lua b/technic/machines/LV/cnc_nodes.lua deleted file mode 100644 index 05be9af..0000000 --- a/technic/machines/LV/cnc_nodes.lua +++ /dev/null @@ -1,91 +0,0 @@ --- REGISTER MATERIALS AND PROPERTIES FOR NONCUBIC ELEMENTS: ------------------------------------------------------------ - -local S = technic.getter - --- DIRT -------- -technic.cnc.register_all("default:dirt", - {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - {"default_grass.png", "default_dirt.png", "default_grass.png"}, - S("Dirt")) --- WOOD -------- -technic.cnc.register_all("default:wood", - {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1}, - {"default_wood.png"}, - S("Wooden")) --- STONE --------- -technic.cnc.register_all("default:stone", - {cracky=3, not_in_creative_inventory=1}, - {"default_stone.png"}, - S("Stone")) --- COBBLE ---------- -technic.cnc.register_all("default:cobble", - {cracky=3, not_in_creative_inventory=1}, - {"default_cobble.png"}, - S("Cobble")) --- BRICK --------- -technic.cnc.register_all("default:brick", - {cracky=3, not_in_creative_inventory=1}, - {"default_brick.png"}, - S("Brick")) - --- SANDSTONE ------------- -technic.cnc.register_all("default:sandstone", - {crumbly=2, cracky=3, not_in_creative_inventory=1}, - {"default_sandstone.png"}, - S("Sandstone")) - --- LEAVES ---------- -technic.cnc.register_all("default:leaves", - {snappy=2, choppy=2, oddly_breakable_by_hand=3, not_in_creative_inventory=1}, - {"default_leaves.png"}, - S("Leaves")) --- TREE -------- -technic.cnc.register_all("default:tree", - {snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, wood=1, not_in_creative_inventory=1}, - {"default_tree.png"}, - S("Tree")) - --- WROUGHT IRON ---------------- -technic.cnc.register_all("default:steelblock", - {cracky=1, level=2, not_in_creative_inventory=1}, - {"technic_wrought_iron_block.png"}, - S("Wrought Iron")) - --- Bronze --------- -technic.cnc.register_all("default:bronzeblock", - {cracky=1, level=2, not_in_creative_inventory=1}, - {"default_bronze_block.png"}, - S("Bronze")) - --- Stainless Steel --------- -technic.cnc.register_all("technic:stainless_steel_block", - {cracky=1, level=2, not_in_creative_inventory=1}, - {"technic_stainless_steel_block.png"}, - S("Stainless Steel")) - --- Marble ------------- -technic.cnc.register_all("technic:marble", - {cracky=3, not_in_creative_inventory=1}, - {"technic_marble.png"}, - S("Marble")) - --- Granite ------------- -technic.cnc.register_all("technic:granite", - {cracky=1, not_in_creative_inventory=1}, - {"technic_granite.png"}, - S("Granite")) - diff --git a/technic/machines/LV/init.lua b/technic/machines/LV/init.lua index 30523c9..fde684d 100644 --- a/technic/machines/LV/init.lua +++ b/technic/machines/LV/init.lua @@ -22,8 +22,3 @@ dofile(path.."/extractor.lua") dofile(path.."/compressor.lua") dofile(path.."/music_player.lua") - -dofile(path.."/cnc.lua") -dofile(path.."/cnc_api.lua") -dofile(path.."/cnc_nodes.lua") - diff --git a/technic/machines/register/cables.lua b/technic/machines/register/cables.lua index 1e8cee9..924128e 100644 --- a/technic/machines/register/cables.lua +++ b/technic/machines/register/cables.lua @@ -117,6 +117,19 @@ local function clear_networks(pos) end end +local function item_place_override_node(itemstack, placer, pointed, node) + -- Call the default on_place function with a fake itemstack + local temp_itemstack = ItemStack(itemstack) + temp_itemstack:set_name(node.name) + local original_count = temp_itemstack:get_count() + temp_itemstack = + minetest.item_place(temp_itemstack, placer, pointed, node.param2) or + temp_itemstack + -- Remove the same number of items from the real itemstack + itemstack:take_item(original_count - temp_itemstack:get_count()) + return itemstack +end + function technic.register_cable(tier, size) local ltier = string.lower(tier) cable_tier["technic:"..ltier.."_cable"] = tier @@ -228,11 +241,10 @@ function technic.register_cable(tier, size) num = xyz[((fine_pointed[bigger] < 0 and "-") or "") .. bigger] end end - minetest.set_node(pointed_thing.above, {name = "technic:"..ltier.."_cable_plate_"..num}) - if not (creative and creative.is_enabled_for(placer)) then - itemstack:take_item() - end - return itemstack + return item_place_override_node( + itemstack, placer, pointed_thing, + {name = "technic:"..ltier.."_cable_plate_"..num} + ) end else def.groups.not_in_creative_inventory = 1 diff --git a/technic/models/technic_cylinder.obj b/technic/models/technic_cylinder.obj deleted file mode 100644 index 2622347..0000000 --- a/technic/models/technic_cylinder.obj +++ /dev/null @@ -1,238 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_cylinder_onetexture.blend' -# www.blender.org -o Cylinder_Cylinder.001 -v 0.000000 -0.500000 -0.500000 -v 0.000000 0.500000 -0.500000 -v 0.097545 -0.500000 -0.490393 -v 0.097545 0.500000 -0.490393 -v 0.191342 -0.500000 -0.461940 -v 0.191342 0.500000 -0.461940 -v 0.277785 -0.500000 -0.415735 -v 0.277785 0.500000 -0.415735 -v 0.353553 -0.500000 -0.353554 -v 0.353553 0.500000 -0.353554 -v 0.415735 -0.500000 -0.277785 -v 0.415735 0.500000 -0.277785 -v 0.461940 -0.500000 -0.191342 -v 0.461940 0.500000 -0.191342 -v 0.490393 -0.500000 -0.097545 -v 0.490393 0.500000 -0.097545 -v 0.500000 -0.500000 -0.000000 -v 0.500000 0.500000 -0.000000 -v 0.490393 -0.500000 0.097545 -v 0.490393 0.500000 0.097545 -v 0.461940 -0.500000 0.191341 -v 0.461940 0.500000 0.191341 -v 0.415735 -0.500000 0.277785 -v 0.415735 0.500000 0.277785 -v 0.353553 -0.500000 0.353553 -v 0.353553 0.500000 0.353553 -v 0.277785 -0.500000 0.415735 -v 0.277785 0.500000 0.415735 -v 0.191342 -0.500000 0.461940 -v 0.191342 0.500000 0.461940 -v 0.097545 -0.500000 0.490392 -v 0.097545 0.500000 0.490392 -v -0.000000 -0.500000 0.500000 -v -0.000000 0.500000 0.500000 -v -0.097545 -0.500000 0.490392 -v -0.097545 0.500000 0.490392 -v -0.191342 -0.500000 0.461939 -v -0.191342 0.500000 0.461939 -v -0.277785 -0.500000 0.415734 -v -0.277785 0.500000 0.415734 -v -0.353554 -0.500000 0.353553 -v -0.353554 0.500000 0.353553 -v -0.415735 -0.500000 0.277785 -v -0.415735 0.500000 0.277785 -v -0.461940 -0.500000 0.191341 -v -0.461940 0.500000 0.191341 -v -0.490393 -0.500000 0.097545 -v -0.490393 0.500000 0.097545 -v -0.500000 -0.500000 -0.000001 -v -0.500000 0.500000 -0.000001 -v -0.490393 -0.500000 -0.097546 -v -0.490393 0.500000 -0.097546 -v -0.461940 -0.500000 -0.191342 -v -0.461940 0.500000 -0.191342 -v -0.415734 -0.500000 -0.277786 -v -0.415734 0.500000 -0.277786 -v -0.353553 -0.500000 -0.353554 -v -0.353553 0.500000 -0.353554 -v -0.277785 -0.500000 -0.415735 -v -0.277785 0.500000 -0.415735 -v -0.191341 -0.500000 -0.461940 -v -0.191341 0.500000 -0.461940 -v -0.097544 -0.500000 -0.490393 -v -0.097544 0.500000 -0.490393 -vt 0.499996 0.999997 -vt 0.499995 0.000005 -vt 0.562495 0.000004 -vt 0.562496 0.999997 -vt 0.624995 0.000003 -vt 0.624997 0.999997 -vt 0.687496 0.000002 -vt 0.687497 0.999998 -vt 0.749997 0.000001 -vt 0.749997 0.999998 -vt 0.812497 0.000001 -vt 0.812497 0.999998 -vt 0.874997 -0.000000 -vt 0.874997 0.999998 -vt 0.937498 -0.000000 -vt 0.937498 0.999998 -vt 0.999998 -0.000000 -vt 0.999998 0.999998 -vt 0.000005 0.999997 -vt 0.000001 0.000024 -vt 0.062500 0.000023 -vt 0.062505 0.999996 -vt 0.124999 0.000021 -vt 0.125004 0.999996 -vt 0.187498 0.000020 -vt 0.187503 0.999995 -vt 0.249997 0.000018 -vt 0.250003 0.999994 -vt 0.312497 0.000017 -vt 0.312502 0.999994 -vt 0.374997 0.000015 -vt 0.375002 0.999993 -vt 0.437496 0.000014 -vt 0.437501 0.999993 -vt 0.402487 0.009601 -vt 0.597576 0.009614 -vt 0.691371 0.038072 -vt 0.777811 0.084282 -vt 0.853576 0.146469 -vt 0.915753 0.222242 -vt 0.961953 0.308689 -vt 0.990399 0.402487 -vt 1.000000 0.500033 -vt 0.990386 0.597577 -vt 0.961928 0.691370 -vt 0.915717 0.777811 -vt 0.853531 0.853575 -vt 0.777758 0.915753 -vt 0.691312 0.961952 -vt 0.597514 0.990398 -vt 0.402424 0.990386 -vt 0.308630 0.961928 -vt 0.222188 0.915717 -vt 0.146424 0.853531 -vt 0.084248 0.777759 -vt 0.038049 0.691313 -vt 0.009602 0.597515 -vt 0.000000 0.499970 -vt 0.009614 0.402425 -vt 0.038073 0.308630 -vt 0.084283 0.222189 -vt 0.146470 0.146424 -vt 0.222243 0.084248 -vt 0.308689 0.038048 -vt 0.499927 0.999999 -vt 0.084226 0.777725 -vt 0.000000 0.499927 -vt 0.222277 0.084224 -vt 0.500074 0.000000 -vt 0.915777 0.222279 -vt 1.000000 0.500077 -vt 0.777724 0.915775 -vn 0.000000 -0.685700 -0.727900 -vn 0.000000 0.685700 -0.727900 -vn 0.142000 0.685700 -0.713900 -vn 0.142000 -0.685700 -0.713900 -vn 0.278500 0.685700 -0.672500 -vn 0.278500 -0.685700 -0.672500 -vn 0.404400 0.685700 -0.605200 -vn 0.404400 -0.685700 -0.605200 -vn 0.514700 0.685700 -0.514700 -vn 0.514700 -0.685700 -0.514700 -vn 0.605200 0.685700 -0.404400 -vn 0.605200 -0.685700 -0.404400 -vn 0.672500 0.685700 -0.278500 -vn 0.672500 -0.685700 -0.278500 -vn 0.713900 0.685700 -0.142000 -vn 0.713900 -0.685700 -0.142000 -vn 0.727900 0.685700 0.000000 -vn 0.727900 -0.685700 0.000000 -vn 0.713900 0.685700 0.142000 -vn 0.713900 -0.685700 0.142000 -vn 0.672500 0.685700 0.278500 -vn 0.672500 -0.685700 0.278500 -vn 0.605200 0.685700 0.404400 -vn 0.605200 -0.685700 0.404400 -vn 0.514700 0.685700 0.514700 -vn 0.514700 -0.685700 0.514700 -vn 0.404400 0.685700 0.605200 -vn 0.404400 -0.685700 0.605200 -vn 0.278500 0.685700 0.672500 -vn 0.278500 -0.685700 0.672500 -vn 0.142000 0.685700 0.713900 -vn 0.142000 -0.685700 0.713900 -vn 0.000000 0.685700 0.727900 -vn 0.000000 -0.685700 0.727900 -vn -0.142000 0.685700 0.713900 -vn -0.142000 -0.685700 0.713900 -vn -0.278500 0.685700 0.672500 -vn -0.278500 -0.685700 0.672500 -vn -0.404400 0.685700 0.605200 -vn -0.404400 -0.685700 0.605200 -vn -0.514700 0.685700 0.514700 -vn -0.514700 -0.685700 0.514700 -vn -0.605200 0.685700 0.404400 -vn -0.605200 -0.685700 0.404400 -vn -0.672500 0.685700 0.278500 -vn -0.672500 -0.685700 0.278500 -vn -0.713900 0.685700 0.142000 -vn -0.713900 -0.685700 0.142000 -vn -0.727900 0.685700 0.000000 -vn -0.727900 -0.685700 0.000000 -vn -0.713900 0.685700 -0.142000 -vn -0.713900 -0.685700 -0.142000 -vn -0.672500 0.685700 -0.278500 -vn -0.672500 -0.685700 -0.278500 -vn -0.605200 0.685700 -0.404400 -vn -0.605200 -0.685700 -0.404400 -vn -0.514700 0.685700 -0.514700 -vn -0.514700 -0.685700 -0.514700 -vn -0.404400 0.685700 -0.605200 -vn -0.404400 -0.685700 -0.605200 -vn -0.278500 0.685700 -0.672500 -vn -0.278500 -0.685700 -0.672500 -vn -0.142000 0.685700 -0.713900 -vn -0.142000 -0.685700 -0.713900 -s 1 -f 1/1/1 2/2/2 4/3/3 3/4/4 -f 3/4/4 4/3/3 6/5/5 5/6/6 -f 5/6/6 6/5/5 8/7/7 7/8/8 -f 7/8/8 8/7/7 10/9/9 9/10/10 -f 9/10/10 10/9/9 12/11/11 11/12/12 -f 11/12/12 12/11/11 14/13/13 13/14/14 -f 13/14/14 14/13/13 16/15/15 15/16/16 -f 15/16/16 16/15/15 18/17/17 17/18/18 -f 17/19/18 18/20/17 20/21/19 19/22/20 -f 19/22/20 20/21/19 22/23/21 21/24/22 -f 21/24/22 22/23/21 24/25/23 23/26/24 -f 23/26/24 24/25/23 26/27/25 25/28/26 -f 25/28/26 26/27/25 28/29/27 27/30/28 -f 27/30/28 28/29/27 30/31/29 29/32/30 -f 29/32/30 30/31/29 32/33/31 31/34/32 -f 31/34/32 32/33/31 34/2/33 33/1/34 -f 33/1/34 34/2/33 36/3/35 35/4/36 -f 35/4/36 36/3/35 38/5/37 37/6/38 -f 37/6/38 38/5/37 40/7/39 39/8/40 -f 39/8/40 40/7/39 42/9/41 41/10/42 -f 41/10/42 42/9/41 44/11/43 43/12/44 -f 43/12/44 44/11/43 46/13/45 45/14/46 -f 45/14/46 46/13/45 48/15/47 47/16/48 -f 47/16/48 48/15/47 50/17/49 49/18/50 -f 49/19/50 50/20/49 52/21/51 51/22/52 -f 51/22/52 52/21/51 54/23/53 53/24/54 -f 53/24/54 54/23/53 56/25/55 55/26/56 -f 55/26/56 56/25/55 58/27/57 57/28/58 -f 57/28/58 58/27/57 60/29/59 59/30/60 -f 59/30/60 60/29/59 62/31/61 61/32/62 -f 4/35/3 2/2/2 64/36/63 62/37/61 60/38/59 58/39/57 56/40/55 54/41/53 52/42/51 50/43/49 48/44/47 46/45/45 44/46/43 42/47/41 40/48/39 38/49/37 36/50/35 34/1/33 32/51/31 30/52/29 28/53/27 26/54/25 24/55/23 22/56/21 20/57/19 18/58/17 16/59/15 14/60/13 12/61/11 10/62/9 8/63/7 6/64/5 -f 63/34/64 64/33/63 2/2/2 1/1/1 -f 61/32/62 62/31/61 64/33/63 63/34/64 -f 1/65/1 3/51/4 5/52/6 7/53/8 9/54/10 11/66/12 13/56/14 15/57/16 17/67/18 19/59/20 21/60/22 23/61/24 25/62/26 27/68/28 29/64/30 31/35/32 33/69/34 35/36/36 37/37/38 39/38/40 41/39/42 43/70/44 45/41/46 47/42/48 49/71/50 51/44/52 53/45/54 55/46/56 57/47/58 59/72/60 61/49/62 63/50/64 diff --git a/technic/models/technic_cylinder_horizontal.obj b/technic/models/technic_cylinder_horizontal.obj deleted file mode 100644 index d00b1d6..0000000 --- a/technic/models/technic_cylinder_horizontal.obj +++ /dev/null @@ -1,238 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'technic-cylinder-horizontal.blend' -# www.blender.org -o Cylinder_Cylinder.001 -v 0.500000 0.000000 -0.500000 -v -0.500000 0.000000 -0.500000 -v 0.500000 0.097545 -0.490393 -v -0.500000 0.097545 -0.490393 -v 0.500000 0.191342 -0.461940 -v -0.500000 0.191342 -0.461940 -v 0.500000 0.277785 -0.415735 -v -0.500000 0.277785 -0.415735 -v 0.500000 0.353553 -0.353553 -v -0.500000 0.353553 -0.353554 -v 0.500000 0.415735 -0.277785 -v -0.500000 0.415735 -0.277785 -v 0.500000 0.461940 -0.191342 -v -0.500000 0.461940 -0.191342 -v 0.500000 0.490393 -0.097545 -v -0.500000 0.490393 -0.097545 -v 0.500000 0.500000 -0.000000 -v -0.500000 0.500000 -0.000000 -v 0.500000 0.490393 0.097545 -v -0.500000 0.490393 0.097545 -v 0.500000 0.461940 0.191342 -v -0.500000 0.461940 0.191341 -v 0.500000 0.415735 0.277785 -v -0.500000 0.415735 0.277785 -v 0.500000 0.353553 0.353553 -v -0.500000 0.353553 0.353553 -v 0.500000 0.277785 0.415735 -v -0.500000 0.277785 0.415735 -v 0.500000 0.191342 0.461940 -v -0.500000 0.191342 0.461940 -v 0.500000 0.097545 0.490393 -v -0.500000 0.097545 0.490392 -v 0.500000 -0.000000 0.500000 -v -0.500000 -0.000000 0.500000 -v 0.500000 -0.097546 0.490392 -v -0.500000 -0.097545 0.490392 -v 0.500000 -0.191342 0.461940 -v -0.500000 -0.191342 0.461939 -v 0.500000 -0.277785 0.415734 -v -0.500000 -0.277785 0.415734 -v 0.500000 -0.353554 0.353553 -v -0.500000 -0.353554 0.353553 -v 0.500000 -0.415735 0.277785 -v -0.500000 -0.415735 0.277785 -v 0.500000 -0.461940 0.191341 -v -0.500000 -0.461940 0.191341 -v 0.500000 -0.490393 0.097545 -v -0.500000 -0.490393 0.097544 -v 0.500000 -0.500000 -0.000001 -v -0.500000 -0.500000 -0.000001 -v 0.500000 -0.490393 -0.097546 -v -0.500000 -0.490393 -0.097546 -v 0.500000 -0.461940 -0.191342 -v -0.500000 -0.461940 -0.191343 -v 0.500000 -0.415734 -0.277786 -v -0.500000 -0.415734 -0.277786 -v 0.500000 -0.353553 -0.353554 -v -0.500000 -0.353553 -0.353554 -v 0.500000 -0.277785 -0.415735 -v -0.500000 -0.277784 -0.415735 -v 0.500000 -0.191341 -0.461940 -v -0.500000 -0.191341 -0.461940 -v 0.500000 -0.097544 -0.490393 -v -0.500000 -0.097544 -0.490393 -vt 0.000003 0.499996 -vt 0.999995 0.499995 -vt 0.999996 0.562495 -vt 0.000002 0.562496 -vt 0.999997 0.624995 -vt 0.000003 0.624996 -vt 0.999998 0.687496 -vt 0.000002 0.687496 -vt 0.999999 0.749997 -vt 0.000002 0.749996 -vt 0.999999 0.812497 -vt 0.000002 0.812497 -vt 1.000000 0.874997 -vt 0.000001 0.874997 -vt 1.000000 0.937498 -vt 0.000001 0.937497 -vt 1.000000 0.999998 -vt 0.000001 0.999998 -vt 0.000003 0.000005 -vt 0.999976 0.000001 -vt 0.999977 0.062500 -vt 0.000003 0.062505 -vt 0.999978 0.124999 -vt 0.000004 0.125004 -vt 0.999980 0.187498 -vt 0.000005 0.187503 -vt 0.999982 0.249997 -vt 0.000005 0.250003 -vt 0.999983 0.312497 -vt 0.000006 0.312502 -vt 0.999985 0.374997 -vt 0.000007 0.375001 -vt 0.999986 0.437496 -vt 0.000007 0.437501 -vt 0.009601 0.597512 -vt 0.009614 0.402424 -vt 0.038072 0.308628 -vt 0.084283 0.222189 -vt 0.146469 0.146424 -vt 0.222242 0.084247 -vt 0.308689 0.038047 -vt 0.402487 0.009601 -vt 0.500033 -0.000000 -vt 0.597577 0.009613 -vt 0.691371 0.038072 -vt 0.777811 0.084283 -vt 0.853575 0.146469 -vt 0.915753 0.222242 -vt 0.961952 0.308688 -vt 0.990398 0.402486 -vt 0.990386 0.597576 -vt 0.961928 0.691370 -vt 0.915717 0.777812 -vt 0.853531 0.853576 -vt 0.777759 0.915752 -vt 0.691313 0.961951 -vt 0.597515 0.990398 -vt 0.499970 1.000000 -vt 0.402425 0.990386 -vt 0.308630 0.961927 -vt 0.222189 0.915717 -vt 0.146424 0.853530 -vt 0.084248 0.777757 -vt 0.038048 0.691311 -vt 0.999999 0.500073 -vt 0.777724 0.915774 -vt 0.499927 0.999999 -vt 0.084224 0.777723 -vt 0.000000 0.499925 -vt 0.222279 0.084223 -vt 0.500078 -0.000000 -vt 0.915775 0.222276 -vn 0.685700 0.000000 -0.727900 -vn -0.685700 0.000000 -0.727900 -vn -0.685700 0.142000 -0.713900 -vn 0.685700 0.142000 -0.713900 -vn -0.685700 0.278500 -0.672500 -vn 0.685700 0.278500 -0.672500 -vn -0.685700 0.404400 -0.605200 -vn 0.685700 0.404400 -0.605200 -vn -0.685700 0.514700 -0.514700 -vn 0.685700 0.514700 -0.514700 -vn -0.685700 0.605200 -0.404400 -vn 0.685700 0.605200 -0.404400 -vn -0.685700 0.672500 -0.278500 -vn 0.685700 0.672500 -0.278500 -vn -0.685700 0.713900 -0.142000 -vn 0.685700 0.713900 -0.142000 -vn -0.685700 0.727900 0.000000 -vn 0.685700 0.727900 0.000000 -vn -0.685700 0.713900 0.142000 -vn 0.685700 0.713900 0.142000 -vn -0.685700 0.672500 0.278500 -vn 0.685700 0.672500 0.278500 -vn -0.685700 0.605200 0.404400 -vn 0.685700 0.605200 0.404400 -vn -0.685700 0.514700 0.514700 -vn 0.685700 0.514700 0.514700 -vn -0.685700 0.404400 0.605200 -vn 0.685700 0.404400 0.605200 -vn -0.685700 0.278500 0.672500 -vn 0.685700 0.278500 0.672500 -vn -0.685700 0.142000 0.713900 -vn 0.685700 0.142000 0.713900 -vn -0.685700 0.000000 0.727900 -vn 0.685700 0.000000 0.727900 -vn -0.685700 -0.142000 0.713900 -vn 0.685700 -0.142000 0.713900 -vn -0.685700 -0.278500 0.672500 -vn 0.685700 -0.278500 0.672500 -vn -0.685700 -0.404400 0.605200 -vn 0.685700 -0.404400 0.605200 -vn -0.685700 -0.514700 0.514700 -vn 0.685700 -0.514700 0.514700 -vn -0.685700 -0.605200 0.404400 -vn 0.685700 -0.605200 0.404400 -vn -0.685700 -0.672500 0.278500 -vn 0.685700 -0.672500 0.278500 -vn -0.685700 -0.713900 0.142000 -vn 0.685700 -0.713900 0.142000 -vn -0.685700 -0.727900 0.000000 -vn 0.685700 -0.727900 0.000000 -vn -0.685700 -0.713900 -0.142000 -vn 0.685700 -0.713900 -0.142000 -vn -0.685700 -0.672500 -0.278500 -vn 0.685700 -0.672500 -0.278500 -vn -0.685700 -0.605200 -0.404400 -vn 0.685700 -0.605200 -0.404400 -vn -0.685700 -0.514700 -0.514700 -vn 0.685700 -0.514700 -0.514700 -vn -0.685700 -0.404400 -0.605200 -vn 0.685700 -0.404400 -0.605200 -vn -0.685700 -0.278500 -0.672500 -vn 0.685700 -0.278500 -0.672500 -vn -0.685700 -0.142000 -0.713900 -vn 0.685700 -0.142000 -0.713900 -s 1 -f 1/1/1 2/2/2 4/3/3 3/4/4 -f 3/4/4 4/3/3 6/5/5 5/6/6 -f 5/6/6 6/5/5 8/7/7 7/8/8 -f 7/8/8 8/7/7 10/9/9 9/10/10 -f 9/10/10 10/9/9 12/11/11 11/12/12 -f 11/12/12 12/11/11 14/13/13 13/14/14 -f 13/14/14 14/13/13 16/15/15 15/16/16 -f 15/16/16 16/15/15 18/17/17 17/18/18 -f 17/19/18 18/20/17 20/21/19 19/22/20 -f 19/22/20 20/21/19 22/23/21 21/24/22 -f 21/24/22 22/23/21 24/25/23 23/26/24 -f 23/26/24 24/25/23 26/27/25 25/28/26 -f 25/28/26 26/27/25 28/29/27 27/30/28 -f 27/30/28 28/29/27 30/31/29 29/32/30 -f 29/32/30 30/31/29 32/33/31 31/34/32 -f 31/34/32 32/33/31 34/2/33 33/1/34 -f 33/1/34 34/2/33 36/3/35 35/4/36 -f 35/4/36 36/3/35 38/5/37 37/6/38 -f 37/6/38 38/5/37 40/7/39 39/8/40 -f 39/8/40 40/7/39 42/9/41 41/10/42 -f 41/10/42 42/9/41 44/11/43 43/12/44 -f 43/12/44 44/11/43 46/13/45 45/14/46 -f 45/14/46 46/13/45 48/15/47 47/16/48 -f 47/16/48 48/15/47 50/17/49 49/18/50 -f 49/19/50 50/20/49 52/21/51 51/22/52 -f 51/22/52 52/21/51 54/23/53 53/24/54 -f 53/24/54 54/23/53 56/25/55 55/26/56 -f 55/26/56 56/25/55 58/27/57 57/28/58 -f 57/28/58 58/27/57 60/29/59 59/30/60 -f 59/30/60 60/29/59 62/31/61 61/32/62 -f 4/35/3 2/1/2 64/36/63 62/37/61 60/38/59 58/39/57 56/40/55 54/41/53 52/42/51 50/43/49 48/44/47 46/45/45 44/46/43 42/47/41 40/48/39 38/49/37 36/50/35 34/2/33 32/51/31 30/52/29 28/53/27 26/54/25 24/55/23 22/56/21 20/57/19 18/58/17 16/59/15 14/60/13 12/61/11 10/62/9 8/63/7 6/64/5 -f 63/34/64 64/33/63 2/2/2 1/1/1 -f 61/32/62 62/31/61 64/33/63 63/34/64 -f 1/65/1 3/51/4 5/52/6 7/53/8 9/54/10 11/66/12 13/56/14 15/57/16 17/67/18 19/59/20 21/60/22 23/61/24 25/62/26 27/68/28 29/64/30 31/35/32 33/69/34 35/36/36 37/37/38 39/38/40 41/39/42 43/70/44 45/41/46 47/42/48 49/71/50 51/44/52 53/45/54 55/46/56 57/47/58 59/72/60 61/49/62 63/50/64 diff --git a/technic/models/technic_innercorner.obj b/technic/models/technic_innercorner.obj deleted file mode 100644 index c962aeb..0000000 --- a/technic/models/technic_innercorner.obj +++ /dev/null @@ -1,33 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'technic-icorner.blend' -# www.blender.org -o Cube_Cube.000 -v -0.500000 0.500000 0.500000 -v -0.500000 0.500000 -0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 -0.500000 -v 0.500000 0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 -0.500000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vn -0.000000 -0.000000 1.000000 -vn -0.000000 -0.000000 -1.000000 -vn 0.707100 0.707100 -0.000000 -vn 1.000000 0.000000 -0.000000 -vn 0.000000 -1.000000 -0.000000 -vn -1.000000 -0.000000 -0.000000 -vn 0.000000 0.707100 -0.707100 -s off -f 6/1/1 1/2/1 7/3/1 8/4/1 -f 2/1/2 5/3/2 3/4/2 -f 2/1/3 1/2/3 5/4/3 -f 6/2/4 8/3/4 9/4/4 -f 9/1/5 8/2/5 7/3/5 3/4/5 -f 3/3/6 7/4/6 1/1/6 2/2/6 -f 1/1/7 6/2/7 9/3/7 -l 1 4 -l 3 4 diff --git a/technic/models/technic_innercorner_upsdown.obj b/technic/models/technic_innercorner_upsdown.obj deleted file mode 100644 index 68eb560..0000000 --- a/technic/models/technic_innercorner_upsdown.obj +++ /dev/null @@ -1,33 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'technic-icorner-upsdown.blend' -# www.blender.org -o Cube_Cube.000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v -0.500000 0.500000 0.500000 -v 0.500000 0.500000 -0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.500000 0.500000 0.500000 -v -0.500000 0.500000 -0.500000 -v 0.500000 0.500000 -0.500000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vn -1.000000 0.000000 0.000000 -vn 1.000000 -0.000000 0.000000 -vn -0.000000 -0.707100 -0.707100 -vn -0.000000 0.000000 -1.000000 -vn 0.000000 1.000000 0.000000 -vn 0.000000 -0.000000 1.000000 -vn 0.707100 -0.707100 -0.000000 -s off -f 6/1/1 1/2/1 7/3/1 8/4/1 -f 2/1/2 5/3/2 3/4/2 -f 2/1/3 1/2/3 5/4/3 -f 6/2/4 8/3/4 9/4/4 -f 9/1/5 8/2/5 7/3/5 3/4/5 -f 3/3/6 7/4/6 1/1/6 2/2/6 -f 1/1/7 6/2/7 9/3/7 -l 1 4 -l 3 4 diff --git a/technic/models/technic_oblate_spheroid.obj b/technic/models/technic_oblate_spheroid.obj deleted file mode 100644 index e949f5b..0000000 --- a/technic/models/technic_oblate_spheroid.obj +++ /dev/null @@ -1,300 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_blob_onetexture.blend' -# www.blender.org -o Cube -v 0.213679 -0.450000 -0.213679 -v -0.213679 -0.450000 0.213680 -v 0.213680 -0.450000 0.213680 -v -0.213679 -0.450000 -0.213679 -v 0.213679 0.450000 -0.213679 -v -0.213679 0.450000 -0.213679 -v 0.213679 0.450000 0.213680 -v 0.500000 -0.000003 0.500000 -v 0.277785 -0.415735 0.277785 -v -0.277785 -0.415735 0.277785 -v 0.353553 -0.353554 0.353553 -v -0.353553 -0.353554 0.353553 -v -0.500000 -0.000002 0.500000 -v 0.415735 -0.277786 0.415735 -v -0.277785 0.415735 0.277785 -v 0.277785 0.415735 0.277785 -v -0.415735 -0.277785 0.415735 -v 0.353554 0.353553 0.353554 -v -0.500000 -0.000002 -0.499983 -v 0.461940 -0.191342 0.461940 -v -0.461940 -0.191342 0.461940 -v -0.353553 0.353553 0.353554 -v 0.490393 -0.097546 0.490393 -v 0.500000 -0.000002 -0.500000 -v 0.490393 0.097545 -0.490392 -v 0.490393 0.097545 0.490393 -v -0.490393 -0.097546 0.490393 -v 0.490393 -0.097545 -0.490393 -v 0.461940 0.191341 0.461940 -v -0.461940 0.191341 0.461940 -v 0.461940 0.191342 -0.461940 -v -0.490393 0.097545 0.490393 -v 0.415735 0.277785 0.415735 -v -0.490393 0.097545 -0.490392 -v -0.415735 0.277785 0.415735 -v 0.461940 -0.191341 -0.461940 -v 0.415735 0.277785 -0.415735 -v -0.461940 0.191341 -0.461940 -v -0.415735 0.277785 -0.415735 -v 0.415735 -0.277785 -0.415735 -v -0.490393 -0.097546 -0.490392 -v 0.353553 0.353553 -0.353553 -v -0.213679 0.450000 0.213680 -v -0.353553 0.353553 -0.353553 -v 0.277785 0.415735 -0.277785 -v -0.461940 -0.191342 -0.461939 -v 0.353554 -0.353553 -0.353554 -v -0.277785 0.415735 -0.277785 -v -0.415735 -0.277785 -0.415734 -v 0.277786 -0.415735 -0.277785 -v -0.353553 -0.353554 -0.353553 -v -0.277785 -0.415735 -0.277784 -vt 0.038487 0.679029 -vt 0.010047 0.589789 -vt 0.990397 0.589790 -vt 0.915772 0.767073 -vt 0.084671 0.767071 -vt 0.961957 0.679029 -vt 0.852473 0.146294 -vt 0.914576 0.232749 -vt 0.084146 0.232744 -vt 0.712776 0.000003 -vt 0.221926 0.061588 -vt 0.285951 0.000000 -vt 0.285945 0.999818 -vt 0.221920 0.938229 -vt 0.712771 0.999818 -vt 0.009578 0.589789 -vt 0.989138 0.589792 -vt 0.960721 0.679031 -vt 0.286638 0.000000 -vt 0.777884 0.061589 -vt 0.222561 0.061589 -vt 0.777608 0.938229 -vt 0.222164 0.938229 -vt 0.146413 0.853527 -vt 0.286255 0.999818 -vt 0.713517 0.999818 -vt 0.776800 0.061592 -vt 0.146251 0.146290 -vt 0.000000 0.499907 -vt 0.989139 0.410032 -vt 0.998734 0.499910 -vt 0.853618 0.146291 -vt 0.915772 0.232746 -vt 0.146826 0.146290 -vt 0.961957 0.320789 -vt 0.084672 0.232745 -vt 0.990397 0.410029 -vt 0.038487 0.320789 -vt 0.776796 0.938230 -vt 0.777790 0.938229 -vt 0.146467 0.853526 -vt 0.853556 0.853527 -vt 0.146825 0.853526 -vt 1.000000 0.499907 -vt 0.010047 0.410028 -vt 0.146246 0.853527 -vt 0.222559 0.938228 -vt 0.777882 0.938230 -vt 0.915737 0.767073 -vt 0.084287 0.767072 -vt 0.038083 0.679029 -vt 0.961941 0.679029 -vt 0.037995 0.679029 -vt 0.960723 0.320792 -vt 0.037998 0.320787 -vt 0.009580 0.410028 -vt 0.990167 0.589790 -vt 0.999772 0.499909 -vt 0.961721 0.679029 -vt 0.084246 0.767072 -vt 0.915526 0.767072 -vt 0.853359 0.853527 -vt 0.914573 0.767074 -vt 0.084142 0.767072 -vt 0.852470 0.853528 -vt 0.777609 0.061590 -vt 0.853360 0.146293 -vt 0.222166 0.061589 -vt 0.146414 0.146291 -vt 0.915527 0.232748 -vt 0.084247 0.232746 -vt 0.961721 0.320791 -vt 0.038052 0.320789 -vt 0.990167 0.410031 -vt 0.713686 0.999818 -vt 0.749950 0.250050 -vt 0.749950 0.749950 -vt 0.250050 0.749950 -vt 0.250050 0.250050 -vt 0.713807 0.000000 -vt 0.286258 0.000000 -vt 0.713519 0.000001 -vt 0.250050 0.250050 -vt 0.749950 0.250050 -vt 0.749950 0.749950 -vt 0.286636 0.999817 -vt 0.777791 0.061589 -vt 0.146467 0.146291 -vt 0.084287 0.232745 -vt 0.915737 0.232746 -vt 0.961941 0.320789 -vt 0.000444 0.499907 -vt 0.713687 0.000000 -vt 0.713805 0.999818 -vn -0.620400 0.479600 0.620400 -vn -0.683900 0.254100 0.683900 -vn 0.683900 0.254100 0.683900 -vn 0.531000 0.660300 0.531000 -vn -0.531000 0.660300 0.531000 -vn 0.620400 0.479600 0.620400 -vn -0.429700 -0.794100 0.429700 -vn -0.531000 -0.660300 0.531000 -vn -0.531000 -0.660300 -0.531000 -vn -0.185700 -0.964900 0.185700 -vn -0.325800 -0.887500 -0.325800 -vn -0.185700 -0.964900 -0.185700 -vn -0.185700 0.964900 -0.185700 -vn -0.325800 0.887500 -0.325800 -vn -0.185700 0.964900 0.185700 -vn -0.683900 0.254000 -0.683900 -vn 0.325800 -0.887500 0.325800 -vn -0.325800 -0.887500 0.325800 -vn 0.325800 0.887500 -0.325800 -vn 0.429700 0.794100 -0.429700 -vn 0.185700 0.964900 -0.185700 -vn -0.429700 -0.794100 -0.429700 -vn -0.707100 0.000000 -0.707100 -vn -0.683900 -0.254100 0.683900 -vn -0.707100 0.000000 0.707100 -vn 0.429700 -0.794100 0.429700 -vn 0.531000 -0.660300 0.531000 -vn 0.620400 -0.479600 0.620400 -vn 0.683900 -0.254100 0.683900 -vn -0.620400 -0.479600 0.620400 -vn -0.325800 0.887500 0.325800 -vn 0.185700 0.964900 0.185700 -vn 0.325800 0.887500 0.325800 -vn 0.429700 0.794100 0.429700 -vn -0.429700 0.794100 0.429700 -vn 0.707100 0.000000 0.707100 -vn -0.429700 0.794100 -0.429700 -vn 0.531000 0.660300 -0.531000 -vn 0.683900 0.254100 -0.683900 -vn 0.707100 0.000000 -0.707100 -vn 0.620400 0.479600 -0.620400 -vn -0.620400 0.479600 -0.620400 -vn -0.620400 -0.479600 -0.620400 -vn -0.683900 -0.254000 -0.683900 -vn 0.683900 -0.254100 -0.683900 -vn -0.531000 0.660300 -0.531000 -vn 0.325800 -0.887500 -0.325800 -vn 0.429700 -0.794100 -0.429700 -vn 0.531000 -0.660300 -0.531000 -vn 0.620400 -0.479600 -0.620400 -vn 0.185700 -0.964900 -0.185700 -vn 0.185700 -0.964900 0.185700 -s 1 -f 30/1/1 32/2/2 26/3/3 -f 33/4/4 35/5/5 29/6/6 -f 12/7/7 17/8/8 49/9/9 -f 2/10/10 52/11/11 4/12/12 -f 6/13/13 48/14/14 43/15/15 -f 34/16/16 32/17/2 30/18/1 -f 2/19/10 9/20/17 10/21/18 -f 48/22/14 45/23/19 42/24/20 -f 5/25/21 45/23/19 6/26/13 -f 10/27/18 12/7/7 51/28/22 -f 19/29/23 27/30/24 13/31/25 -f 9/20/17 11/32/26 10/21/18 -f 11/32/26 14/33/27 12/34/7 -f 14/33/27 20/35/28 17/36/8 -f 20/35/28 23/37/29 21/38/30 -f 43/15/15 48/14/14 15/39/31 -f 7/25/32 16/23/33 45/40/19 -f 18/41/34 42/42/20 45/40/19 -f 29/6/6 30/1/1 26/3/3 -f 22/43/35 33/4/4 18/42/34 -f 26/3/3 32/2/2 8/44/36 -f 8/44/36 27/45/24 23/37/29 -f 11/32/26 12/34/7 10/21/18 -f 14/33/27 17/36/8 12/34/7 -f 20/35/28 21/38/30 17/36/8 -f 23/37/29 27/45/24 21/38/30 -f 10/27/18 52/11/11 2/10/10 -f 15/39/31 48/14/14 44/46/37 -f 22/43/35 35/5/5 33/4/4 -f 15/47/31 22/43/35 16/48/33 -f 37/49/38 42/42/20 18/41/34 -f 33/50/4 29/51/6 37/49/38 -f 8/29/36 25/3/39 26/16/3 -f 24/44/40 25/3/39 8/29/36 -f 29/51/6 26/16/3 31/52/41 -f 26/16/3 25/3/39 31/52/41 -f 29/51/6 31/52/41 37/49/38 -f 38/53/42 34/16/16 30/18/1 -f 19/29/23 32/17/2 34/16/16 -f 13/31/25 32/17/2 19/29/23 -f 17/8/8 21/54/30 46/55/43 -f 21/54/30 27/30/24 41/56/44 -f 8/29/36 28/37/45 24/44/40 -f 34/57/16 25/16/39 19/58/23 -f 38/59/42 31/51/41 34/57/16 -f 31/51/41 25/16/39 34/57/16 -f 37/60/38 38/59/42 39/61/46 -f 37/60/38 31/51/41 38/59/42 -f 44/62/37 42/24/20 37/60/38 -f 38/53/42 30/18/1 35/63/5 -f 39/64/46 35/63/5 22/65/35 -f 52/66/11 51/67/22 50/68/47 -f 51/67/22 47/69/48 50/68/47 -f 51/67/22 49/70/9 47/69/48 -f 49/70/9 40/71/49 47/69/48 -f 49/70/9 46/72/43 40/71/49 -f 46/72/43 36/73/50 40/71/49 -f 19/58/23 28/56/45 41/74/44 -f 46/72/43 41/74/44 36/73/50 -f 41/74/44 28/56/45 36/73/50 -f 22/43/35 18/42/34 16/48/33 -f 5/75/21 7/25/32 45/40/19 -f 2/76/10 4/77/12 1/78/51 3/79/52 -f 44/62/37 48/22/14 42/24/20 -f 35/5/5 30/1/1 29/6/6 -f 3/80/52 9/20/17 2/19/10 -f 45/23/19 48/22/14 6/26/13 -f 1/81/51 52/66/11 50/68/47 -f 39/61/46 44/62/37 37/60/38 -f 52/66/11 1/81/51 4/82/12 -f 24/29/40 28/56/45 19/58/23 -f 7/78/32 5/83/21 6/84/13 43/85/15 -f 24/29/40 19/58/23 25/16/39 -f 15/47/31 16/48/33 43/86/15 -f 22/65/35 44/46/37 39/64/46 -f 39/64/46 38/53/42 35/63/5 -f 41/56/44 27/30/24 19/29/23 -f 46/55/43 21/54/30 41/56/44 -f 49/9/9 17/8/8 46/55/43 -f 51/28/22 12/7/7 49/9/9 -f 52/11/11 10/27/18 51/28/22 -f 9/68/17 50/87/47 11/88/26 -f 50/87/47 47/32/48 11/88/26 -f 11/88/26 47/32/48 14/89/27 -f 47/32/48 40/90/49 14/89/27 -f 14/89/27 40/90/49 20/73/28 -f 40/90/49 36/91/50 20/73/28 -f 23/56/29 28/37/45 8/29/36 -f 20/73/28 36/91/50 23/56/29 -f 36/91/50 28/37/45 23/56/29 -f 13/92/25 8/44/36 32/2/2 -f 50/87/47 9/68/17 1/93/51 -f 13/92/25 27/45/24 8/44/36 -f 16/23/33 18/41/34 45/40/19 -f 22/65/35 15/39/31 44/46/37 -f 9/68/17 3/81/52 1/93/51 -f 33/50/4 37/49/38 18/41/34 -f 43/86/15 16/48/33 7/94/32 diff --git a/technic/models/technic_one_curved_edge.obj b/technic/models/technic_one_curved_edge.obj deleted file mode 100644 index bb82040..0000000 --- a/technic/models/technic_one_curved_edge.obj +++ /dev/null @@ -1,132 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_quarter_round_onetexture.blend' -# www.blender.org -o Cylinder -v -0.500000 0.490393 -0.097545 -v 0.500000 0.490393 -0.097545 -v -0.500000 0.461940 -0.191342 -v 0.500000 0.461940 -0.191342 -v -0.500000 0.415735 -0.277785 -v 0.500000 0.415735 -0.277785 -v -0.500000 0.353553 -0.353553 -v 0.500000 0.353553 -0.353553 -v -0.500000 0.277785 -0.415735 -v 0.500000 0.277785 -0.415735 -v -0.500000 0.191342 -0.461940 -v 0.500000 0.191342 -0.461940 -v -0.500000 0.097545 -0.490393 -v 0.500000 0.097545 -0.490393 -v 0.500000 -0.000000 -0.500000 -v 0.500000 0.490393 -0.097545 -v -0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 -0.500000 -v -0.500000 0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v -0.500000 0.000000 -0.500000 -v -0.500000 0.500000 -0.000000 -v 0.500000 0.500000 0.000000 -v -0.500000 0.490393 -0.097545 -v -0.500000 0.461940 -0.191342 -v -0.500000 0.415735 -0.277785 -v -0.500000 0.353553 -0.353553 -v -0.500000 0.277785 -0.415735 -v -0.500000 0.191342 -0.461940 -v -0.500000 0.097545 -0.490393 -v -0.500000 0.000000 0.000000 -v -0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.500000 0.500000 0.500000 -v -0.500000 0.000000 -0.500000 -v -0.500000 0.500000 -0.000000 -v 0.500000 0.461940 -0.191342 -v 0.500000 0.415735 -0.277785 -v 0.500000 0.353553 -0.353553 -v 0.500000 0.277785 -0.415735 -v 0.500000 0.191342 -0.461940 -v 0.500000 0.097545 -0.490393 -v 0.500000 -0.000000 -0.500000 -v 0.500000 -0.000000 -0.000000 -v 0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v 0.500000 0.500000 0.000000 -v -0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v -0.500000 0.500000 0.500000 -v 0.500000 0.500000 0.500000 -vt 1.000000 0.000000 -vt 1.000000 0.500000 -vt 0.500001 0.500000 -vt 0.500001 1.000000 -vt 0.000003 1.000000 -vt 0.000003 0.000000 -vt 0.597546 0.990393 -vt 0.691342 0.961940 -vt 1.000000 1.000000 -vt 0.990393 0.597545 -vt 0.961940 0.691341 -vt 0.777786 0.915735 -vt 0.853554 0.853553 -vt 0.915735 0.777785 -vt 0.146446 0.853552 -vt 0.084265 0.777783 -vt 0.038060 0.691340 -vt 0.308658 0.961938 -vt 0.222214 0.915733 -vt 0.000000 0.499999 -vt 0.402454 0.990391 -vt 0.009607 0.597544 -vt 1.000000 0.375000 -vt 0.000000 0.375000 -vt 0.000000 0.250000 -vt 1.000000 0.250000 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.000000 0.875000 -vt 1.000000 0.875000 -vt 0.000000 0.750000 -vt 1.000000 0.750000 -vt 0.000000 0.625000 -vt 1.000000 0.625000 -vn 1.000000 -0.000000 0.000000 -vn -0.000000 0.000000 1.000000 -vn -0.000000 -1.000000 0.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.980800 -0.195100 -vn 0.000000 0.923900 -0.382700 -vn -0.000000 0.831500 -0.555600 -vn -0.000000 0.707100 -0.707100 -vn -0.000000 0.555600 -0.831500 -vn -0.000000 0.382700 -0.923900 -vn -0.000000 0.195100 -0.980800 -vn 0.000000 1.000000 -0.000000 -vn 0.000000 0.998800 -0.049100 -vn -0.000000 0.049100 -0.998800 -vn -0.000000 0.000000 -1.000000 -s off -f 46/1/1 44/2/1 45/3/1 49/4/1 48/5/1 47/6/1 -f 16/7/1 49/4/1 45/3/1 38/8/1 -f 55/5/2 53/6/2 54/1/2 56/9/2 -f 43/10/1 42/11/1 45/3/1 44/2/1 -f 39/12/1 38/8/1 45/3/1 40/13/1 -f 41/14/1 40/13/1 45/3/1 42/11/1 -f 50/9/3 51/5/3 52/6/3 17/1/3 -f 28/15/4 29/16/4 30/17/4 32/3/4 -f 26/18/4 27/19/4 28/15/4 32/3/4 -f 35/9/4 37/4/4 32/3/4 36/20/4 34/6/4 33/1/4 -f 37/4/4 25/21/4 26/18/4 32/3/4 -f 30/17/4 31/22/4 36/20/4 32/3/4 -s 1 -f 1/23/5 2/24/5 4/25/6 3/26/6 -f 3/26/6 4/25/6 6/27/7 5/28/7 -f 5/28/7 6/27/7 8/6/8 7/1/8 -f 7/9/8 8/5/8 10/29/9 9/30/9 -f 9/30/9 10/29/9 12/31/10 11/32/10 -f 11/32/10 12/31/10 14/33/11 13/34/11 -f 21/5/12 24/20/13 23/2/13 20/9/12 -f 13/34/11 14/33/11 15/20/14 22/2/14 -f 23/2/13 24/20/13 2/24/5 1/23/5 -f 18/1/15 22/2/14 15/20/14 19/6/15 diff --git a/technic/models/technic_outercorner.obj b/technic/models/technic_outercorner.obj deleted file mode 100644 index 60ccae6..0000000 --- a/technic/models/technic_outercorner.obj +++ /dev/null @@ -1,23 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'technic-ocorner.blend' -# www.blender.org -o Cube_Cube.002 -v -0.500000 0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 0.500000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vn 0.000000 -1.000000 -0.000000 -vn 0.000000 0.000000 1.000000 -vn -1.000000 -0.000000 0.000000 -vn -0.000000 0.707100 -0.707100 -vn 0.707100 0.707100 -0.000000 -s off -f 3/1/1 2/2/1 4/3/1 5/4/1 -f 1/2/2 3/3/2 5/4/2 -f 1/1/3 2/3/3 3/4/3 -f 1/1/4 4/3/4 2/4/4 -f 1/2/5 5/3/5 4/4/5 diff --git a/technic/models/technic_outercorner_upsdown.obj b/technic/models/technic_outercorner_upsdown.obj deleted file mode 100644 index c89de8a..0000000 --- a/technic/models/technic_outercorner_upsdown.obj +++ /dev/null @@ -1,23 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_ocorner_onetexture.blend' -# www.blender.org -o Cube_Cube.002 -v -0.500000 -0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v -0.500000 0.500000 0.500000 -v 0.500000 0.500000 -0.500000 -v -0.500000 0.500000 -0.500000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vn 0.000000 1.000000 -0.000000 -vn -1.000000 0.000000 -0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.707100 -0.707100 0.000000 -vn -0.000000 -0.707100 -0.707100 -s off -f 3/1/1 2/2/1 4/3/1 5/4/1 -f 1/2/2 3/3/2 5/4/2 -f 1/1/3 2/3/3 3/4/3 -f 1/1/4 4/3/4 2/4/4 -f 1/2/5 5/3/5 4/4/5 diff --git a/technic/models/technic_pyramid.obj b/technic/models/technic_pyramid.obj deleted file mode 100644 index a618dcf..0000000 --- a/technic/models/technic_pyramid.obj +++ /dev/null @@ -1,24 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_short_onetexture.blend' -# www.blender.org -o Cube -v 0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.000000 0.000000 -0.000000 -vt 1.000000 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 0.500000 0.500000 -vn 0.000000 -1.000000 0.000000 -vn -0.707100 0.707100 -0.000000 -vn 0.000000 0.707100 -0.707100 -vn 0.707100 0.707100 0.000000 -vn -0.000000 0.707100 0.707100 -s off -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 3/4/2 5/5/2 4/3/2 -f 5/5/3 1/3/3 4/4/3 -f 1/4/4 5/5/4 2/3/4 -f 2/4/5 5/5/5 3/3/5 diff --git a/technic/models/technic_pyramid_spike.obj b/technic/models/technic_pyramid_spike.obj deleted file mode 100644 index b305af2..0000000 --- a/technic/models/technic_pyramid_spike.obj +++ /dev/null @@ -1,24 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_onetexture.blend' -# www.blender.org -o Cube -v 0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.000000 0.500000 -0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 0.500000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn -0.894400 0.447200 -0.000000 -vn 0.000000 0.447200 -0.894400 -vn 0.894400 0.447200 0.000000 -vn -0.000000 0.447200 0.894400 -s off -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 3/4/2 5/5/2 4/3/2 -f 5/5/3 1/3/3 4/4/3 -f 1/4/4 5/5/4 2/3/4 -f 2/4/5 5/5/5 3/3/5 diff --git a/technic/models/technic_slope.obj b/technic/models/technic_slope.obj deleted file mode 100644 index f6f4860..0000000 --- a/technic/models/technic_slope.obj +++ /dev/null @@ -1,24 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_slope_onetexture.blend' -# www.blender.org -o Cube_Cube.002 -v 0.500000 0.500000 0.500000 -v -0.500000 0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 -0.500000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vn 0.000000 -0.000000 1.000000 -vn 0.000000 -1.000000 -0.000000 -vn -1.000000 0.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.707100 -0.707100 -s off -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 4/3/2 3/4/2 5/1/2 6/2/2 -f 2/1/3 5/3/3 3/4/3 -f 1/2/4 4/3/4 6/4/4 -f 2/1/5 1/2/5 6/3/5 5/4/5 diff --git a/technic/models/technic_slope_horizontal.obj b/technic/models/technic_slope_horizontal.obj deleted file mode 100644 index 4866a92..0000000 --- a/technic/models/technic_slope_horizontal.obj +++ /dev/null @@ -1,24 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'technic-slope-horizontal.blend' -# www.blender.org -o Cube_Cube.002 -v -0.500000 0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v 0.500000 -0.500000 -0.500000 -v 0.500000 0.500000 -0.500000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vn 0.000000 -0.000000 1.000000 -vn 1.000000 -0.000000 -0.000000 -vn -0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 -0.000000 -vn -0.707100 0.000000 -0.707100 -s off -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 4/1/2 3/2/2 5/3/2 6/4/2 -f 2/3/3 5/1/3 3/2/3 -f 1/4/4 4/1/4 6/2/4 -f 2/3/5 1/4/5 6/1/5 5/2/5 diff --git a/technic/models/technic_slope_upsdown.obj b/technic/models/technic_slope_upsdown.obj deleted file mode 100644 index 6880595..0000000 --- a/technic/models/technic_slope_upsdown.obj +++ /dev/null @@ -1,24 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_slope_onetexture.blend' -# www.blender.org -o Cube_Cube.002 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v -0.500000 0.500000 0.500000 -v 0.500000 0.500000 -0.500000 -v -0.500000 0.500000 -0.500000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 1.000000 -0.000000 -vn 1.000000 -0.000000 0.000000 -vn -1.000000 0.000000 -0.000000 -vn -0.000000 -0.707100 -0.707100 -s off -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 4/3/2 3/4/2 5/1/2 6/2/2 -f 2/1/3 5/3/3 3/4/3 -f 1/2/4 4/3/4 6/4/4 -f 2/1/5 1/2/5 6/3/5 5/4/5 diff --git a/technic/models/technic_sphere.obj b/technic/models/technic_sphere.obj deleted file mode 100644 index 772b570..0000000 --- a/technic/models/technic_sphere.obj +++ /dev/null @@ -1,1927 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'globe.blend' -# www.blender.org -o Sphere -v -0.097545 0.490393 0.000000 -v -0.191342 0.461940 0.000000 -v -0.277785 0.415735 0.000000 -v -0.353553 0.353553 0.000000 -v -0.415735 0.277785 0.000000 -v -0.461940 0.191342 0.000000 -v -0.490393 0.097545 0.000000 -v -0.500000 0.000000 0.000000 -v -0.490393 -0.097545 0.000000 -v -0.461940 -0.191342 0.000000 -v -0.415735 -0.277785 0.000000 -v -0.353553 -0.353553 0.000000 -v -0.277785 -0.415735 0.000000 -v -0.191342 -0.461940 0.000000 -v -0.097545 -0.490393 0.000000 -v -0.095671 0.490393 -0.019030 -v -0.187665 0.461940 -0.037329 -v -0.272448 0.415735 -0.054193 -v -0.346760 0.353553 -0.068975 -v -0.407747 0.277785 -0.081106 -v -0.453064 0.191342 -0.090120 -v -0.480970 0.097545 -0.095671 -v -0.490393 0.000000 -0.097545 -v -0.480970 -0.097545 -0.095671 -v -0.453064 -0.191342 -0.090120 -v -0.407747 -0.277785 -0.081106 -v -0.346760 -0.353553 -0.068975 -v -0.272448 -0.415735 -0.054193 -v -0.187665 -0.461940 -0.037329 -v -0.095671 -0.490393 -0.019030 -v -0.090120 0.490393 -0.037329 -v -0.176777 0.461940 -0.073223 -v -0.256640 0.415735 -0.106304 -v -0.326641 0.353553 -0.135299 -v -0.384089 0.277785 -0.159095 -v -0.426777 0.191342 -0.176777 -v -0.453064 0.097545 -0.187665 -v -0.461940 0.000000 -0.191342 -v -0.453064 -0.097545 -0.187665 -v -0.426777 -0.191342 -0.176777 -v -0.384089 -0.277785 -0.159095 -v -0.326641 -0.353553 -0.135299 -v -0.256640 -0.415735 -0.106304 -v -0.176777 -0.461940 -0.073223 -v -0.090120 -0.490393 -0.037329 -v -0.081106 0.490393 -0.054193 -v -0.159095 0.461940 -0.106304 -v -0.230970 0.415735 -0.154329 -v -0.293969 0.353553 -0.196424 -v -0.345671 0.277785 -0.230970 -v -0.384089 0.191342 -0.256640 -v -0.407746 0.097545 -0.272448 -v -0.415735 0.000000 -0.277785 -v -0.407746 -0.097545 -0.272448 -v -0.384089 -0.191342 -0.256640 -v -0.345671 -0.277785 -0.230970 -v -0.293969 -0.353553 -0.196424 -v -0.230970 -0.415735 -0.154329 -v -0.159095 -0.461940 -0.106304 -v -0.081106 -0.490393 -0.054193 -v -0.068975 0.490393 -0.068975 -v -0.135299 0.461940 -0.135299 -v -0.196424 0.415735 -0.196424 -v -0.250000 0.353553 -0.250000 -v -0.293969 0.277785 -0.293969 -v -0.326641 0.191342 -0.326641 -v -0.346760 0.097545 -0.346760 -v -0.353553 0.000000 -0.353554 -v -0.346760 -0.097545 -0.346760 -v -0.326641 -0.191342 -0.326641 -v -0.293969 -0.277785 -0.293969 -v -0.250000 -0.353553 -0.250000 -v -0.196424 -0.415735 -0.196424 -v -0.135299 -0.461940 -0.135299 -v -0.068975 -0.490393 -0.068975 -v -0.054193 0.490393 -0.081106 -v -0.106304 0.461940 -0.159095 -v -0.154329 0.415735 -0.230970 -v -0.196424 0.353553 -0.293969 -v -0.230970 0.277785 -0.345671 -v -0.256640 0.191342 -0.384089 -v -0.272447 0.097545 -0.407747 -v -0.277785 0.000000 -0.415735 -v -0.272447 -0.097545 -0.407747 -v -0.256640 -0.191342 -0.384089 -v -0.230970 -0.277785 -0.345671 -v -0.196424 -0.353553 -0.293969 -v -0.154329 -0.415735 -0.230970 -v -0.106304 -0.461940 -0.159095 -v -0.054193 -0.490393 -0.081106 -v -0.037329 0.490393 -0.090120 -v -0.073223 0.461940 -0.176777 -v -0.106304 0.415735 -0.256640 -v -0.135299 0.353553 -0.326641 -v -0.159095 0.277785 -0.384089 -v -0.176777 0.191342 -0.426777 -v -0.187665 0.097545 -0.453064 -v -0.191342 0.000000 -0.461940 -v -0.187665 -0.097545 -0.453064 -v -0.176777 -0.191342 -0.426777 -v -0.159095 -0.277785 -0.384089 -v -0.135299 -0.353553 -0.326641 -v -0.106304 -0.415735 -0.256640 -v -0.073223 -0.461940 -0.176777 -v -0.037329 -0.490393 -0.090120 -v -0.019030 0.490393 -0.095671 -v -0.037329 0.461940 -0.187665 -v -0.054193 0.415735 -0.272448 -v -0.068975 0.353553 -0.346760 -v -0.081106 0.277785 -0.407747 -v -0.090120 0.191342 -0.453064 -v -0.095671 0.097545 -0.480970 -v -0.097545 0.000000 -0.490393 -v -0.095671 -0.097545 -0.480970 -v -0.090120 -0.191342 -0.453064 -v -0.081106 -0.277785 -0.407747 -v -0.068975 -0.353553 -0.346760 -v -0.054193 -0.415735 -0.272448 -v -0.037329 -0.461940 -0.187665 -v -0.019030 -0.490393 -0.095671 -v 0.000000 0.490393 -0.097545 -v 0.000000 0.461940 -0.191342 -v 0.000000 0.415735 -0.277785 -v 0.000000 0.353553 -0.353553 -v 0.000000 0.277785 -0.415735 -v 0.000000 0.191342 -0.461940 -v 0.000000 0.097545 -0.490393 -v 0.000000 0.000000 -0.500000 -v 0.000000 -0.097545 -0.490393 -v 0.000000 -0.191342 -0.461940 -v 0.000000 -0.277785 -0.415735 -v 0.000000 -0.353553 -0.353553 -v 0.000000 -0.415735 -0.277785 -v 0.000000 -0.461940 -0.191342 -v 0.000000 -0.490393 -0.097545 -v 0.019030 0.490393 -0.095671 -v 0.037329 0.461940 -0.187665 -v 0.054193 0.415735 -0.272448 -v 0.068975 0.353553 -0.346760 -v 0.081106 0.277785 -0.407747 -v 0.090120 0.191342 -0.453064 -v 0.095671 0.097545 -0.480970 -v 0.097545 0.000000 -0.490393 -v 0.095671 -0.097545 -0.480970 -v 0.090120 -0.191342 -0.453064 -v 0.081106 -0.277785 -0.407747 -v 0.068975 -0.353553 -0.346760 -v 0.054193 -0.415735 -0.272448 -v 0.037329 -0.461940 -0.187665 -v 0.019030 -0.490393 -0.095671 -v 0.037329 0.490393 -0.090120 -v 0.073224 0.461940 -0.176777 -v 0.106304 0.415735 -0.256640 -v 0.135299 0.353553 -0.326641 -v 0.159095 0.277785 -0.384089 -v 0.176777 0.191342 -0.426777 -v 0.187665 0.097545 -0.453064 -v 0.191342 0.000000 -0.461940 -v 0.187665 -0.097545 -0.453064 -v 0.176777 -0.191342 -0.426777 -v 0.159095 -0.277785 -0.384089 -v 0.135299 -0.353553 -0.326641 -v 0.106304 -0.415735 -0.256640 -v 0.073223 -0.461940 -0.176777 -v 0.037329 -0.490393 -0.090120 -v 0.054193 0.490393 -0.081106 -v 0.106304 0.461940 -0.159095 -v 0.154329 0.415735 -0.230970 -v 0.196424 0.353553 -0.293969 -v 0.230970 0.277785 -0.345671 -v 0.256640 0.191342 -0.384089 -v 0.272448 0.097545 -0.407747 -v 0.277785 0.000000 -0.415735 -v 0.272448 -0.097545 -0.407747 -v 0.256640 -0.191342 -0.384089 -v 0.230970 -0.277785 -0.345671 -v 0.196424 -0.353553 -0.293969 -v 0.154329 -0.415735 -0.230970 -v 0.106304 -0.461940 -0.159095 -v 0.054193 -0.490393 -0.081106 -v 0.068975 0.490393 -0.068975 -v 0.135299 0.461940 -0.135299 -v 0.196424 0.415735 -0.196424 -v 0.250000 0.353553 -0.250000 -v 0.293969 0.277785 -0.293969 -v 0.326641 0.191342 -0.326641 -v 0.346760 0.097545 -0.346760 -v 0.353554 0.000000 -0.353553 -v 0.346760 -0.097545 -0.346760 -v 0.326641 -0.191342 -0.326641 -v 0.293969 -0.277785 -0.293969 -v 0.250000 -0.353553 -0.250000 -v 0.196424 -0.415735 -0.196424 -v 0.135299 -0.461940 -0.135299 -v 0.068975 -0.490393 -0.068975 -v 0.081106 0.490393 -0.054193 -v 0.159095 0.461940 -0.106304 -v 0.230970 0.415735 -0.154329 -v 0.293969 0.353553 -0.196424 -v 0.345671 0.277785 -0.230970 -v 0.384089 0.191342 -0.256640 -v 0.407747 0.097545 -0.272447 -v 0.415735 0.000000 -0.277785 -v 0.407747 -0.097545 -0.272447 -v 0.384089 -0.191342 -0.256640 -v 0.345671 -0.277785 -0.230970 -v 0.293969 -0.353553 -0.196424 -v 0.230970 -0.415735 -0.154329 -v 0.159095 -0.461940 -0.106304 -v 0.081106 -0.490393 -0.054193 -v 0.090120 0.490393 -0.037329 -v 0.176777 0.461940 -0.073223 -v 0.256640 0.415735 -0.106304 -v 0.326641 0.353553 -0.135299 -v 0.384089 0.277785 -0.159095 -v 0.426777 0.191342 -0.176777 -v 0.453064 0.097545 -0.187665 -v 0.461940 0.000000 -0.191342 -v 0.453064 -0.097545 -0.187665 -v 0.426777 -0.191342 -0.176777 -v 0.384089 -0.277785 -0.159095 -v 0.326641 -0.353553 -0.135299 -v 0.256640 -0.415735 -0.106304 -v 0.176777 -0.461940 -0.073223 -v 0.090120 -0.490393 -0.037329 -v 0.095671 0.490393 -0.019030 -v 0.187665 0.461940 -0.037329 -v 0.272448 0.415735 -0.054193 -v 0.346760 0.353553 -0.068975 -v 0.407747 0.277785 -0.081106 -v 0.453064 0.191342 -0.090120 -v 0.480970 0.097545 -0.095671 -v 0.490393 0.000000 -0.097545 -v 0.480970 -0.097545 -0.095671 -v 0.453064 -0.191342 -0.090120 -v 0.407747 -0.277785 -0.081106 -v 0.346760 -0.353553 -0.068975 -v 0.272448 -0.415735 -0.054193 -v 0.187665 -0.461940 -0.037329 -v 0.095671 -0.490393 -0.019030 -v 0.097545 0.490393 0.000000 -v 0.191342 0.461940 -0.000000 -v 0.277785 0.415735 -0.000000 -v 0.353554 0.353553 0.000000 -v 0.415735 0.277785 0.000000 -v 0.461940 0.191342 -0.000000 -v 0.490393 0.097545 0.000000 -v 0.500000 0.000000 0.000000 -v 0.490393 -0.097545 0.000000 -v 0.461940 -0.191342 -0.000000 -v 0.415735 -0.277785 0.000000 -v 0.353554 -0.353553 0.000000 -v 0.277785 -0.415735 0.000000 -v 0.191342 -0.461940 -0.000000 -v 0.097545 -0.490393 -0.000000 -v 0.095671 0.490393 0.019030 -v 0.187665 0.461940 0.037329 -v 0.272448 0.415735 0.054193 -v 0.346760 0.353553 0.068975 -v 0.407747 0.277785 0.081106 -v 0.453064 0.191342 0.090120 -v 0.480970 0.097545 0.095671 -v 0.490393 0.000000 0.097545 -v 0.480970 -0.097545 0.095671 -v 0.453064 -0.191342 0.090120 -v 0.407747 -0.277785 0.081106 -v 0.346760 -0.353553 0.068975 -v 0.272448 -0.415735 0.054193 -v 0.187665 -0.461940 0.037329 -v 0.095671 -0.490393 0.019030 -v 0.090120 0.490393 0.037329 -v 0.176777 0.461940 0.073223 -v 0.256640 0.415735 0.106304 -v 0.326641 0.353553 0.135299 -v 0.384089 0.277785 0.159095 -v 0.426777 0.191342 0.176777 -v 0.453064 0.097545 0.187665 -v 0.461940 0.000000 0.191342 -v 0.453064 -0.097545 0.187665 -v 0.426777 -0.191342 0.176777 -v 0.384089 -0.277785 0.159095 -v 0.326641 -0.353553 0.135299 -v 0.256640 -0.415735 0.106304 -v 0.176777 -0.461940 0.073223 -v 0.090120 -0.490393 0.037329 -v 0.081106 0.490393 0.054193 -v 0.159095 0.461940 0.106304 -v 0.230970 0.415735 0.154329 -v 0.293969 0.353553 0.196424 -v 0.345671 0.277785 0.230970 -v 0.384089 0.191342 0.256640 -v 0.407747 0.097545 0.272448 -v 0.415735 0.000000 0.277785 -v 0.407747 -0.097545 0.272448 -v 0.384089 -0.191342 0.256640 -v 0.345671 -0.277785 0.230970 -v 0.293969 -0.353553 0.196424 -v 0.230970 -0.415735 0.154329 -v 0.159095 -0.461940 0.106304 -v 0.081106 -0.490393 0.054193 -v 0.068975 0.490393 0.068975 -v 0.135299 0.461940 0.135299 -v 0.196424 0.415735 0.196424 -v 0.250000 0.353553 0.250000 -v 0.293969 0.277785 0.293969 -v 0.326641 0.191342 0.326641 -v 0.346760 0.097545 0.346760 -v 0.353553 0.000000 0.353553 -v 0.346760 -0.097545 0.346760 -v 0.326641 -0.191342 0.326641 -v 0.293969 -0.277785 0.293969 -v 0.250000 -0.353553 0.250000 -v 0.196424 -0.415735 0.196424 -v 0.135299 -0.461940 0.135299 -v 0.068975 -0.490393 0.068975 -v 0.054193 0.490393 0.081106 -v 0.106304 0.461940 0.159095 -v 0.154329 0.415735 0.230970 -v 0.196424 0.353553 0.293969 -v 0.230970 0.277785 0.345671 -v 0.256640 0.191342 0.384089 -v 0.272448 0.097545 0.407746 -v 0.277785 0.000000 0.415735 -v 0.272448 -0.097545 0.407746 -v 0.256640 -0.191342 0.384089 -v 0.230970 -0.277785 0.345671 -v 0.196424 -0.353553 0.293969 -v 0.154329 -0.415735 0.230970 -v 0.106304 -0.461940 0.159095 -v 0.054193 -0.490393 0.081106 -v 0.037329 0.490393 0.090120 -v 0.073223 0.461940 0.176777 -v 0.106304 0.415735 0.256640 -v 0.135299 0.353553 0.326641 -v 0.159095 0.277785 0.384089 -v 0.176777 0.191342 0.426777 -v 0.187665 0.097545 0.453064 -v 0.191342 0.000000 0.461940 -v 0.187665 -0.097545 0.453064 -v 0.176777 -0.191342 0.426777 -v 0.159095 -0.277785 0.384089 -v 0.135299 -0.353553 0.326641 -v 0.106304 -0.415735 0.256640 -v 0.073223 -0.461940 0.176777 -v 0.037329 -0.490393 0.090120 -v 0.019030 0.490393 0.095671 -v 0.037329 0.461940 0.187665 -v 0.054193 0.415735 0.272448 -v 0.068975 0.353553 0.346760 -v 0.081106 0.277785 0.407746 -v 0.090120 0.191342 0.453064 -v 0.095671 0.097545 0.480970 -v 0.097545 0.000000 0.490393 -v 0.095671 -0.097545 0.480970 -v 0.090120 -0.191342 0.453064 -v 0.081106 -0.277785 0.407746 -v 0.068975 -0.353553 0.346760 -v 0.054193 -0.415735 0.272447 -v 0.037329 -0.461940 0.187665 -v 0.019030 -0.490393 0.095671 -v 0.000000 0.490393 0.097545 -v 0.000000 0.461940 0.191342 -v 0.000000 0.415735 0.277785 -v 0.000000 0.353553 0.353553 -v 0.000000 0.277785 0.415735 -v 0.000000 0.191342 0.461940 -v 0.000000 0.097545 0.490392 -v 0.000000 0.000000 0.500000 -v 0.000000 -0.097545 0.490392 -v 0.000000 -0.191342 0.461940 -v 0.000000 -0.277785 0.415735 -v 0.000000 -0.353553 0.353553 -v 0.000000 -0.415735 0.277785 -v 0.000000 -0.461940 0.191342 -v 0.000000 -0.490393 0.097545 -v -0.019030 0.490393 0.095671 -v -0.037329 0.461940 0.187665 -v -0.054193 0.415735 0.272448 -v -0.068975 0.353553 0.346760 -v -0.081106 0.277785 0.407746 -v -0.090120 0.191342 0.453064 -v -0.095671 0.097545 0.480970 -v -0.097545 0.000000 0.490393 -v -0.095671 -0.097545 0.480970 -v -0.090120 -0.191342 0.453064 -v -0.081106 -0.277785 0.407746 -v -0.068975 -0.353553 0.346760 -v -0.054193 -0.415735 0.272447 -v -0.037329 -0.461940 0.187665 -v -0.019030 -0.490393 0.095671 -v -0.037329 0.490393 0.090120 -v -0.073223 0.461940 0.176777 -v -0.106304 0.415735 0.256640 -v -0.135299 0.353553 0.326641 -v -0.159095 0.277785 0.384089 -v -0.176777 0.191342 0.426777 -v -0.187665 0.097545 0.453063 -v -0.191342 0.000000 0.461940 -v -0.187665 -0.097545 0.453063 -v -0.176777 -0.191342 0.426777 -v -0.159095 -0.277785 0.384089 -v -0.135299 -0.353553 0.326641 -v -0.106304 -0.415735 0.256640 -v -0.073223 -0.461940 0.176777 -v -0.037329 -0.490393 0.090120 -v -0.054193 0.490393 0.081106 -v -0.106304 0.461940 0.159095 -v -0.154329 0.415735 0.230970 -v -0.196424 0.353553 0.293969 -v -0.230970 0.277785 0.345671 -v -0.256640 0.191342 0.384089 -v -0.272447 0.097545 0.407746 -v -0.277785 0.000000 0.415735 -v -0.272447 -0.097545 0.407746 -v -0.256640 -0.191342 0.384089 -v -0.230970 -0.277785 0.345671 -v -0.196424 -0.353553 0.293969 -v -0.154329 -0.415735 0.230970 -v -0.106304 -0.461940 0.159095 -v -0.054193 -0.490393 0.081106 -v -0.068975 0.490393 0.068975 -v -0.135299 0.461940 0.135299 -v -0.196424 0.415735 0.196424 -v -0.250000 0.353553 0.250000 -v -0.293969 0.277785 0.293969 -v -0.326641 0.191342 0.326641 -v -0.346760 0.097545 0.346760 -v -0.353553 0.000000 0.353553 -v -0.346760 -0.097545 0.346760 -v -0.326641 -0.191342 0.326641 -v -0.293969 -0.277785 0.293969 -v -0.250000 -0.353553 0.250000 -v -0.196424 -0.415735 0.196424 -v -0.135299 -0.461940 0.135299 -v -0.068975 -0.490393 0.068975 -v -0.081106 0.490393 0.054193 -v -0.159095 0.461940 0.106304 -v -0.230970 0.415735 0.154329 -v -0.293969 0.353553 0.196424 -v -0.345671 0.277785 0.230970 -v -0.384089 0.191342 0.256640 -v -0.407746 0.097545 0.272447 -v -0.415735 0.000000 0.277785 -v -0.407746 -0.097545 0.272447 -v -0.384089 -0.191342 0.256640 -v -0.345671 -0.277785 0.230970 -v -0.293969 -0.353553 0.196424 -v -0.230970 -0.415735 0.154329 -v -0.159095 -0.461940 0.106304 -v -0.081106 -0.490393 0.054193 -v -0.090120 0.490393 0.037329 -v -0.176776 0.461940 0.073223 -v -0.256640 0.415735 0.106304 -v -0.326641 0.353553 0.135299 -v -0.384089 0.277785 0.159095 -v -0.426776 0.191342 0.176777 -v -0.453063 0.097545 0.187665 -v -0.461939 0.000000 0.191342 -v -0.453063 -0.097545 0.187665 -v -0.426776 -0.191342 0.176777 -v -0.384089 -0.277785 0.159095 -v -0.326641 -0.353553 0.135299 -v -0.256640 -0.415735 0.106304 -v -0.176776 -0.461940 0.073223 -v -0.090120 -0.490393 0.037329 -v -0.095671 0.490393 0.019030 -v -0.187665 0.461940 0.037329 -v -0.272447 0.415735 0.054193 -v -0.346760 0.353553 0.068975 -v -0.407746 0.277785 0.081106 -v -0.453063 0.191342 0.090120 -v -0.480969 0.097545 0.095671 -v -0.490392 0.000000 0.097545 -v -0.480969 -0.097545 0.095671 -v -0.453063 -0.191342 0.090120 -v -0.407746 -0.277785 0.081106 -v -0.346760 -0.353553 0.068975 -v -0.272447 -0.415735 0.054193 -v -0.187665 -0.461940 0.037329 -v -0.095671 -0.490393 0.019030 -v -0.013167 -0.495196 0.000000 -v -0.005039 0.495196 0.012165 -v -0.013167 0.495196 0.000000 -v -0.012914 0.495196 -0.002569 -v -0.012914 -0.495196 -0.002569 -v -0.012165 0.495196 -0.005039 -v -0.012165 -0.495196 -0.005039 -v -0.010948 0.495196 -0.007315 -v -0.010948 -0.495196 -0.007315 -v -0.009311 0.495196 -0.009311 -v -0.009311 -0.495196 -0.009311 -v -0.007315 0.495196 -0.010948 -v -0.007315 -0.495196 -0.010948 -v -0.005039 0.495196 -0.012165 -v -0.005039 -0.495196 -0.012165 -v -0.002569 0.495196 -0.012914 -v -0.002569 -0.495196 -0.012914 -v 0.000000 0.495196 -0.013167 -v 0.000000 -0.495196 -0.013167 -v 0.002569 0.495196 -0.012914 -v 0.002569 -0.495196 -0.012914 -v 0.005039 0.495196 -0.012165 -v 0.005039 -0.495196 -0.012165 -v 0.007316 0.495196 -0.010948 -v 0.007316 -0.495196 -0.010948 -v 0.009311 0.495196 -0.009311 -v 0.009311 -0.495196 -0.009311 -v 0.010948 0.495196 -0.007315 -v 0.010948 -0.495196 -0.007315 -v 0.012165 0.495196 -0.005039 -v 0.012165 -0.495196 -0.005039 -v 0.012915 0.495196 -0.002569 -v 0.012915 -0.495196 -0.002569 -v 0.013168 0.495196 0.000000 -v 0.013168 -0.495196 0.000000 -v 0.012915 0.495196 0.002569 -v 0.012915 -0.495196 0.002569 -v 0.012165 0.495196 0.005039 -v 0.012165 -0.495196 0.005039 -v 0.010948 0.495196 0.007315 -v 0.010948 -0.495196 0.007315 -v 0.009311 0.495196 0.009311 -v 0.009311 -0.495196 0.009311 -v 0.007316 0.495196 0.010948 -v 0.007316 -0.495196 0.010948 -v 0.005039 0.495196 0.012165 -v 0.005039 -0.495196 0.012165 -v 0.002569 0.495196 0.012914 -v 0.002569 -0.495196 0.012914 -v 0.000000 0.495196 0.013167 -v 0.000000 -0.495196 0.013167 -v -0.002569 0.495196 0.012914 -v -0.002569 -0.495196 0.012914 -v -0.005039 -0.495196 0.012165 -v -0.007315 0.495196 0.010948 -v -0.007315 -0.495196 0.010948 -v -0.009311 0.495196 0.009311 -v -0.009311 -0.495196 0.009311 -v -0.010948 0.495196 0.007315 -v -0.010948 -0.495196 0.007315 -v -0.012165 0.495196 0.005039 -v -0.012165 -0.495196 0.005039 -v -0.012914 0.495196 0.002569 -v -0.012914 -0.495196 0.002569 -vt 0.437500 0.750000 -vt 0.437500 0.812500 -vt 0.375000 0.812500 -vt 0.375000 0.750000 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.375000 0.125000 -vt 0.375000 0.062500 -vt 0.437500 0.875000 -vt 0.437500 0.937500 -vt 0.375000 0.937500 -vt 0.375000 0.875000 -vt 0.437500 0.187500 -vt 0.437500 0.250000 -vt 0.375000 0.250000 -vt 0.375000 0.187500 -vt 0.437500 0.312500 -vt 0.437500 0.375000 -vt 0.375000 0.375000 -vt 0.375000 0.312500 -vt 0.437500 0.437500 -vt 0.437500 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.437500 -vt 0.437500 0.562500 -vt 0.437500 0.625000 -vt 0.375000 0.625000 -vt 0.375000 0.562500 -vt 0.437500 0.687500 -vt 0.375000 0.687500 -vt 0.312500 0.437500 -vt 0.312500 0.375000 -vt 0.312500 0.562500 -vt 0.312500 0.500000 -vt 0.312500 0.687500 -vt 0.312500 0.625000 -vt 0.312500 0.812500 -vt 0.312500 0.750000 -vt 0.312500 0.125000 -vt 0.312500 0.062500 -vt 0.312500 0.937500 -vt 0.312500 0.875000 -vt 0.312500 0.250000 -vt 0.312500 0.187500 -vt 0.312500 0.312500 -vt 0.250000 0.437500 -vt 0.250000 0.375000 -vt 0.250000 0.562500 -vt 0.250000 0.500000 -vt 0.250000 0.687500 -vt 0.250000 0.625000 -vt 0.250000 0.812500 -vt 0.250000 0.750000 -vt 0.250000 0.125000 -vt 0.250000 0.062500 -vt 0.250000 0.937500 -vt 0.250000 0.875000 -vt 0.250000 0.250000 -vt 0.250000 0.187500 -vt 0.250000 0.312500 -vt 0.187500 0.437500 -vt 0.187500 0.375000 -vt 0.187500 0.562500 -vt 0.187500 0.500000 -vt 0.187500 0.687500 -vt 0.187500 0.625000 -vt 0.187500 0.812500 -vt 0.187500 0.750000 -vt 0.187500 0.125000 -vt 0.187500 0.062500 -vt 0.187500 0.937500 -vt 0.187500 0.875000 -vt 0.187500 0.250000 -vt 0.187500 0.187500 -vt 0.187500 0.312500 -vt 0.125000 0.437500 -vt 0.125000 0.375000 -vt 0.125000 0.562500 -vt 0.125000 0.500000 -vt 0.125000 0.687500 -vt 0.125000 0.625000 -vt 0.125000 0.812500 -vt 0.125000 0.750000 -vt 0.125000 0.125000 -vt 0.125000 0.062500 -vt 0.125000 0.937500 -vt 0.125000 0.875000 -vt 0.125000 0.250000 -vt 0.125000 0.187500 -vt 0.125000 0.312500 -vt 0.062500 0.437500 -vt 0.062500 0.375000 -vt 0.062500 0.562500 -vt 0.062500 0.500000 -vt 0.062500 0.687500 -vt 0.062500 0.625000 -vt 0.062500 0.812500 -vt 0.062500 0.750000 -vt 0.062500 0.125000 -vt 0.062500 0.062500 -vt 0.062500 0.937500 -vt 0.062500 0.875000 -vt 0.062500 0.250000 -vt 0.062500 0.187500 -vt 0.062500 0.312500 -vt 0.000000 0.437500 -vt 0.000000 0.375000 -vt 0.000000 0.562500 -vt 0.000000 0.500000 -vt 0.000000 0.687500 -vt 0.000000 0.625000 -vt 0.000000 0.812500 -vt 0.000000 0.750000 -vt 0.000000 0.125000 -vt 0.000000 0.062500 -vt 0.000000 0.937500 -vt 0.000000 0.875000 -vt 0.000000 0.250000 -vt 0.000000 0.187500 -vt 0.000000 0.312500 -vt 1.000000 0.375000 -vt 1.000000 0.437500 -vt 0.937500 0.437500 -vt 0.937500 0.375000 -vt 1.000000 0.500000 -vt 1.000000 0.562500 -vt 0.937500 0.562500 -vt 0.937500 0.500000 -vt 1.000000 0.625000 -vt 1.000000 0.687500 -vt 0.937500 0.687500 -vt 0.937500 0.625000 -vt 1.000000 0.750000 -vt 1.000000 0.812500 -vt 0.937500 0.812500 -vt 0.937500 0.750000 -vt 1.000000 0.062500 -vt 1.000000 0.125000 -vt 0.937500 0.125000 -vt 0.937500 0.062500 -vt 1.000000 0.875000 -vt 1.000000 0.937500 -vt 0.937500 0.937500 -vt 0.937500 0.875000 -vt 1.000000 0.187500 -vt 1.000000 0.250000 -vt 0.937500 0.250000 -vt 0.937500 0.187500 -vt 1.000000 0.312500 -vt 0.937500 0.312500 -vt 0.875000 0.437500 -vt 0.875000 0.375000 -vt 0.875000 0.562500 -vt 0.875000 0.500000 -vt 0.875000 0.687500 -vt 0.875000 0.625000 -vt 0.875000 0.812500 -vt 0.875000 0.750000 -vt 0.875000 0.125000 -vt 0.875000 0.062500 -vt 0.875000 0.937500 -vt 0.875000 0.875000 -vt 0.875000 0.250000 -vt 0.875000 0.187500 -vt 0.875000 0.312500 -vt 0.812500 0.437500 -vt 0.812500 0.375000 -vt 0.812500 0.562500 -vt 0.812500 0.500000 -vt 0.812500 0.687500 -vt 0.812500 0.625000 -vt 0.812500 0.812500 -vt 0.812500 0.750000 -vt 0.812500 0.125000 -vt 0.812500 0.062500 -vt 0.812500 0.937500 -vt 0.812500 0.875000 -vt 0.812500 0.250000 -vt 0.812500 0.187500 -vt 0.812500 0.312500 -vt 0.750000 0.437500 -vt 0.750000 0.375000 -vt 0.750000 0.562500 -vt 0.750000 0.500000 -vt 0.750000 0.687500 -vt 0.750000 0.625000 -vt 0.750000 0.812500 -vt 0.750000 0.750000 -vt 0.750000 0.125000 -vt 0.750000 0.062500 -vt 0.750000 0.937500 -vt 0.750000 0.875000 -vt 0.750000 0.250000 -vt 0.750000 0.187500 -vt 0.750000 0.312500 -vt 0.687500 0.437500 -vt 0.687500 0.375000 -vt 0.687500 0.562500 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.687500 0.625000 -vt 0.687500 0.812500 -vt 0.687500 0.750000 -vt 0.687500 0.125000 -vt 0.687500 0.062500 -vt 0.687500 0.937500 -vt 0.687500 0.875000 -vt 0.687500 0.250000 -vt 0.687500 0.187500 -vt 0.687500 0.312500 -vt 0.625000 0.437500 -vt 0.625000 0.375000 -vt 0.625000 0.562500 -vt 0.625000 0.500000 -vt 0.625000 0.687500 -vt 0.625000 0.625000 -vt 0.625000 0.812500 -vt 0.625000 0.750000 -vt 0.625000 0.125000 -vt 0.625000 0.062500 -vt 0.625000 0.937500 -vt 0.625000 0.875000 -vt 0.625000 0.250000 -vt 0.625000 0.187500 -vt 0.625000 0.312500 -vt 0.562500 0.437500 -vt 0.562500 0.375000 -vt 0.562500 0.562500 -vt 0.562500 0.500000 -vt 0.562500 0.687500 -vt 0.562500 0.625000 -vt 0.562500 0.812500 -vt 0.562500 0.750000 -vt 0.562500 0.125000 -vt 0.562500 0.062500 -vt 0.562500 0.937500 -vt 0.562500 0.875000 -vt 0.562500 0.250000 -vt 0.562500 0.187500 -vt 0.562500 0.312500 -vt 0.500000 0.437500 -vt 0.500000 0.375000 -vt 0.500000 0.562500 -vt 0.500000 0.500000 -vt 0.500000 0.687500 -vt 0.500000 0.625000 -vt 0.500000 0.812500 -vt 0.500000 0.750000 -vt 0.500000 0.125000 -vt 0.500000 0.062500 -vt 0.500000 0.937500 -vt 0.500000 0.875000 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.500000 0.312500 -vt 0.437500 0.000000 -vt 0.375000 0.000000 -vt 0.312500 0.000000 -vt 0.250000 0.000000 -vt 0.187500 0.000000 -vt 0.125000 0.000000 -vt 0.062500 0.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 0.937500 0.000000 -vt 0.875000 0.000000 -vt 0.812500 0.000000 -vt 0.750000 0.000000 -vt 0.687500 0.000000 -vt 0.625000 0.000000 -vt 0.562500 0.000000 -vt 0.500000 0.000000 -vt 0.500000 1.000000 -vt 0.437500 1.000000 -vt 0.562500 1.000000 -vt 0.625000 1.000000 -vt 0.687500 1.000000 -vt 0.750000 1.000000 -vt 0.812500 1.000000 -vt 0.875000 1.000000 -vt 0.937500 1.000000 -vt 1.000000 1.000000 -vt 0.062500 1.000000 -vt -0.000000 1.000000 -vt 0.125000 1.000000 -vt 0.187500 1.000000 -vt 0.250000 1.000000 -vt 0.312500 1.000000 -vt 0.375000 1.000000 -vt 0.031303 0.999906 -vt 0.037377 0.999307 -vt 0.043218 0.997535 -vt 0.048601 0.994658 -vt 0.053319 0.990786 -vt 0.057192 0.986068 -vt 0.060069 0.980685 -vt 0.061841 0.974844 -vt 0.062439 0.968769 -vt 0.061841 0.962695 -vt 0.060069 0.956854 -vt 0.057192 0.951471 -vt 0.053319 0.946753 -vt 0.048601 0.942881 -vt 0.043218 0.940004 -vt 0.037377 0.938232 -vt 0.031303 0.937633 -vt 0.025229 0.938232 -vt 0.019388 0.940004 -vt 0.014005 0.942881 -vt 0.009286 0.946753 -vt 0.005414 0.951471 -vt 0.002537 0.956854 -vt 0.000765 0.962695 -vt 0.000167 0.968770 -vt 0.000765 0.974844 -vt 0.002537 0.980685 -vt 0.005414 0.986068 -vt 0.009286 0.990786 -vt 0.014005 0.994658 -vt 0.019388 0.997535 -vt 0.025229 0.999307 -vn -0.710100 0.704000 0.000000 -vn -0.559800 0.828600 0.000000 -vn -0.549000 0.828600 -0.109200 -vn -0.696500 0.704000 -0.138500 -vn -0.182000 -0.983300 0.000000 -vn -0.387900 -0.921700 0.000000 -vn -0.380400 -0.921700 -0.075700 -vn -0.178400 -0.983300 -0.035500 -vn -0.387900 0.921700 0.000000 -vn -0.182000 0.983300 0.000000 -vn -0.178400 0.983300 -0.035500 -vn -0.380400 0.921700 -0.075700 -vn -0.559800 -0.828600 0.000000 -vn -0.710100 -0.704000 0.000000 -vn -0.696500 -0.704000 -0.138500 -vn -0.549000 -0.828600 -0.109200 -vn -0.833300 -0.552800 0.000000 -vn -0.924700 -0.380500 0.000000 -vn -0.907000 -0.380500 -0.180400 -vn -0.817300 -0.552800 -0.162600 -vn -0.981000 -0.193900 0.000000 -vn -1.000000 0.000000 0.000000 -vn -0.980800 0.000000 -0.195100 -vn -0.962200 -0.193900 -0.191400 -vn -0.981000 0.193900 0.000000 -vn -0.924700 0.380500 0.000000 -vn -0.907000 0.380500 -0.180400 -vn -0.962200 0.193900 -0.191400 -vn -0.833300 0.552800 0.000000 -vn -0.817300 0.552800 -0.162600 -vn -0.906300 -0.193900 -0.375400 -vn -0.854400 -0.380500 -0.353900 -vn -0.906300 0.193900 -0.375400 -vn -0.923900 0.000000 -0.382700 -vn -0.769900 0.552800 -0.318900 -vn -0.854400 0.380500 -0.353900 -vn -0.517100 0.828600 -0.214200 -vn -0.656100 0.704000 -0.271700 -vn -0.358300 -0.921700 -0.148400 -vn -0.168100 -0.983300 -0.069600 -vn -0.168100 0.983300 -0.069600 -vn -0.358300 0.921700 -0.148400 -vn -0.656100 -0.704000 -0.271700 -vn -0.517100 -0.828600 -0.214200 -vn -0.769900 -0.552800 -0.318900 -vn -0.815700 -0.193900 -0.545000 -vn -0.768900 -0.380500 -0.513700 -vn -0.815700 0.193900 -0.545000 -vn -0.831400 0.000000 -0.555600 -vn -0.692900 0.552800 -0.463000 -vn -0.768900 0.380500 -0.513700 -vn -0.465400 0.828600 -0.311000 -vn -0.590400 0.704000 -0.394500 -vn -0.322500 -0.921700 -0.215500 -vn -0.151300 -0.983300 -0.101100 -vn -0.151300 0.983300 -0.101100 -vn -0.322500 0.921700 -0.215500 -vn -0.590400 -0.704000 -0.394500 -vn -0.465400 -0.828600 -0.311000 -vn -0.692900 -0.552800 -0.463000 -vn -0.693700 -0.193900 -0.693700 -vn -0.653900 -0.380500 -0.653900 -vn -0.693700 0.193900 -0.693700 -vn -0.707100 0.000000 -0.707100 -vn -0.589300 0.552800 -0.589300 -vn -0.653900 0.380500 -0.653900 -vn -0.395800 0.828600 -0.395800 -vn -0.502100 0.704000 -0.502100 -vn -0.274300 -0.921700 -0.274300 -vn -0.128600 -0.983300 -0.128600 -vn -0.128600 0.983300 -0.128600 -vn -0.274300 0.921700 -0.274300 -vn -0.502100 -0.704000 -0.502100 -vn -0.395800 -0.828600 -0.395800 -vn -0.589300 -0.552800 -0.589300 -vn -0.545000 -0.193900 -0.815700 -vn -0.513700 -0.380500 -0.768900 -vn -0.545000 0.193900 -0.815700 -vn -0.555600 0.000000 -0.831400 -vn -0.463000 0.552800 -0.692900 -vn -0.513700 0.380500 -0.768900 -vn -0.311000 0.828600 -0.465400 -vn -0.394500 0.704000 -0.590400 -vn -0.215500 -0.921700 -0.322500 -vn -0.101100 -0.983300 -0.151300 -vn -0.101100 0.983300 -0.151300 -vn -0.215500 0.921700 -0.322500 -vn -0.394500 -0.704000 -0.590400 -vn -0.311000 -0.828600 -0.465400 -vn -0.463000 -0.552800 -0.692900 -vn -0.375400 -0.193900 -0.906300 -vn -0.353900 -0.380500 -0.854400 -vn -0.375400 0.193900 -0.906300 -vn -0.382700 0.000000 -0.923900 -vn -0.318900 0.552800 -0.769900 -vn -0.353900 0.380500 -0.854400 -vn -0.214200 0.828600 -0.517100 -vn -0.271700 0.704000 -0.656100 -vn -0.148400 -0.921700 -0.358300 -vn -0.069600 -0.983300 -0.168100 -vn -0.069600 0.983300 -0.168100 -vn -0.148400 0.921700 -0.358300 -vn -0.271700 -0.704000 -0.656100 -vn -0.214200 -0.828600 -0.517100 -vn -0.318900 -0.552800 -0.769900 -vn -0.191400 -0.193900 -0.962200 -vn -0.180400 -0.380500 -0.907000 -vn -0.191400 0.193900 -0.962200 -vn -0.195100 0.000000 -0.980800 -vn -0.162600 0.552800 -0.817300 -vn -0.180400 0.380500 -0.907000 -vn -0.109200 0.828600 -0.549000 -vn -0.138500 0.704000 -0.696500 -vn -0.075700 -0.921700 -0.380400 -vn -0.035500 -0.983300 -0.178400 -vn -0.035500 0.983300 -0.178400 -vn -0.075700 0.921700 -0.380400 -vn -0.138500 -0.704000 -0.696500 -vn -0.109200 -0.828600 -0.549000 -vn -0.162600 -0.552800 -0.817300 -vn 0.000000 -0.193900 -0.981000 -vn 0.000000 -0.380500 -0.924700 -vn 0.000000 0.193900 -0.981000 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 0.552800 -0.833300 -vn 0.000000 0.380500 -0.924700 -vn 0.000000 0.828600 -0.559800 -vn 0.000000 0.704000 -0.710100 -vn 0.000000 -0.921700 -0.387900 -vn 0.000000 -0.983300 -0.182000 -vn 0.000000 0.983300 -0.182000 -vn 0.000000 0.921700 -0.387900 -vn 0.000000 -0.704000 -0.710100 -vn 0.000000 -0.828600 -0.559800 -vn 0.000000 -0.552800 -0.833300 -vn 0.191400 -0.193900 -0.962200 -vn 0.180400 -0.380500 -0.907000 -vn 0.191400 0.193900 -0.962200 -vn 0.195100 0.000000 -0.980800 -vn 0.162600 0.552800 -0.817300 -vn 0.180400 0.380500 -0.907000 -vn 0.109200 0.828600 -0.549000 -vn 0.138500 0.704000 -0.696500 -vn 0.075700 -0.921700 -0.380400 -vn 0.035500 -0.983300 -0.178400 -vn 0.035500 0.983300 -0.178400 -vn 0.075700 0.921700 -0.380400 -vn 0.138500 -0.704000 -0.696500 -vn 0.109200 -0.828600 -0.549000 -vn 0.162600 -0.552800 -0.817300 -vn 0.375400 -0.193900 -0.906300 -vn 0.353900 -0.380500 -0.854400 -vn 0.375400 0.193900 -0.906300 -vn 0.382700 0.000000 -0.923900 -vn 0.318900 0.552800 -0.769900 -vn 0.353900 0.380500 -0.854400 -vn 0.214200 0.828600 -0.517100 -vn 0.271700 0.704000 -0.656100 -vn 0.148400 -0.921700 -0.358300 -vn 0.069600 -0.983300 -0.168100 -vn 0.069600 0.983300 -0.168100 -vn 0.148400 0.921700 -0.358300 -vn 0.271700 -0.704000 -0.656100 -vn 0.214200 -0.828600 -0.517100 -vn 0.318900 -0.552800 -0.769900 -vn 0.545000 -0.193900 -0.815700 -vn 0.513700 -0.380500 -0.768900 -vn 0.545000 0.193900 -0.815700 -vn 0.555600 0.000000 -0.831400 -vn 0.463000 0.552800 -0.692900 -vn 0.513700 0.380500 -0.768900 -vn 0.311000 0.828600 -0.465400 -vn 0.394500 0.704000 -0.590400 -vn 0.215500 -0.921700 -0.322500 -vn 0.101100 -0.983300 -0.151300 -vn 0.101100 0.983300 -0.151300 -vn 0.215500 0.921700 -0.322500 -vn 0.394500 -0.704000 -0.590400 -vn 0.311000 -0.828600 -0.465400 -vn 0.463000 -0.552800 -0.692900 -vn 0.693700 -0.193900 -0.693700 -vn 0.653900 -0.380500 -0.653900 -vn 0.693700 0.193900 -0.693700 -vn 0.707100 0.000000 -0.707100 -vn 0.589300 0.552800 -0.589300 -vn 0.653900 0.380500 -0.653900 -vn 0.395800 0.828600 -0.395800 -vn 0.502100 0.704000 -0.502100 -vn 0.274300 -0.921700 -0.274300 -vn 0.128600 -0.983300 -0.128600 -vn 0.128600 0.983300 -0.128600 -vn 0.274300 0.921700 -0.274300 -vn 0.502100 -0.704000 -0.502100 -vn 0.395800 -0.828600 -0.395800 -vn 0.589300 -0.552800 -0.589300 -vn 0.815700 -0.193900 -0.545000 -vn 0.768900 -0.380500 -0.513700 -vn 0.815700 0.193900 -0.545000 -vn 0.831400 0.000000 -0.555600 -vn 0.692900 0.552800 -0.463000 -vn 0.768900 0.380500 -0.513700 -vn 0.465400 0.828600 -0.311000 -vn 0.590400 0.704000 -0.394500 -vn 0.322500 -0.921700 -0.215500 -vn 0.151300 -0.983300 -0.101100 -vn 0.151300 0.983300 -0.101100 -vn 0.322500 0.921700 -0.215500 -vn 0.590400 -0.704000 -0.394500 -vn 0.465400 -0.828600 -0.311000 -vn 0.692900 -0.552800 -0.463000 -vn 0.906300 -0.193900 -0.375400 -vn 0.854400 -0.380500 -0.353900 -vn 0.906300 0.193900 -0.375400 -vn 0.923900 0.000000 -0.382700 -vn 0.769900 0.552800 -0.318900 -vn 0.854400 0.380500 -0.353900 -vn 0.517100 0.828600 -0.214200 -vn 0.656100 0.704000 -0.271700 -vn 0.358300 -0.921700 -0.148400 -vn 0.168100 -0.983300 -0.069600 -vn 0.168100 0.983300 -0.069600 -vn 0.358300 0.921700 -0.148400 -vn 0.656100 -0.704000 -0.271700 -vn 0.517100 -0.828600 -0.214200 -vn 0.769900 -0.552800 -0.318900 -vn 0.962200 -0.193900 -0.191400 -vn 0.907000 -0.380500 -0.180400 -vn 0.962200 0.193900 -0.191400 -vn 0.980800 0.000000 -0.195100 -vn 0.817300 0.552800 -0.162600 -vn 0.907000 0.380500 -0.180400 -vn 0.549000 0.828600 -0.109200 -vn 0.696500 0.704000 -0.138500 -vn 0.380400 -0.921700 -0.075700 -vn 0.178400 -0.983300 -0.035500 -vn 0.178400 0.983300 -0.035500 -vn 0.380400 0.921700 -0.075700 -vn 0.696500 -0.704000 -0.138500 -vn 0.549000 -0.828600 -0.109200 -vn 0.817300 -0.552800 -0.162600 -vn 0.981000 -0.193900 0.000000 -vn 0.924700 -0.380500 0.000000 -vn 0.981000 0.193900 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.833300 0.552800 0.000000 -vn 0.924700 0.380500 0.000000 -vn 0.559800 0.828600 0.000000 -vn 0.710100 0.704000 0.000000 -vn 0.387900 -0.921700 0.000000 -vn 0.182000 -0.983300 0.000000 -vn 0.182000 0.983300 0.000000 -vn 0.387900 0.921700 0.000000 -vn 0.710100 -0.704000 0.000000 -vn 0.559800 -0.828600 0.000000 -vn 0.833300 -0.552800 0.000000 -vn 0.962200 -0.193900 0.191400 -vn 0.907000 -0.380500 0.180400 -vn 0.962200 0.193900 0.191400 -vn 0.980800 0.000000 0.195100 -vn 0.817300 0.552800 0.162600 -vn 0.907000 0.380500 0.180400 -vn 0.549000 0.828600 0.109200 -vn 0.696500 0.704000 0.138500 -vn 0.380400 -0.921700 0.075700 -vn 0.178400 -0.983300 0.035500 -vn 0.178400 0.983300 0.035500 -vn 0.380400 0.921700 0.075700 -vn 0.696500 -0.704000 0.138500 -vn 0.549000 -0.828600 0.109200 -vn 0.817300 -0.552800 0.162600 -vn 0.906300 -0.193900 0.375400 -vn 0.854400 -0.380500 0.353900 -vn 0.906300 0.193900 0.375400 -vn 0.923900 0.000000 0.382700 -vn 0.769900 0.552800 0.318900 -vn 0.854400 0.380500 0.353900 -vn 0.517100 0.828600 0.214200 -vn 0.656100 0.704000 0.271700 -vn 0.358300 -0.921700 0.148400 -vn 0.168100 -0.983300 0.069600 -vn 0.168100 0.983300 0.069600 -vn 0.358300 0.921700 0.148400 -vn 0.656100 -0.704000 0.271700 -vn 0.517100 -0.828600 0.214200 -vn 0.769900 -0.552800 0.318900 -vn 0.815700 -0.193900 0.545000 -vn 0.768900 -0.380500 0.513700 -vn 0.815700 0.193900 0.545000 -vn 0.831400 0.000000 0.555600 -vn 0.692900 0.552800 0.463000 -vn 0.768900 0.380500 0.513700 -vn 0.465400 0.828600 0.311000 -vn 0.590400 0.704000 0.394500 -vn 0.322500 -0.921700 0.215500 -vn 0.151300 -0.983300 0.101100 -vn 0.151300 0.983300 0.101100 -vn 0.322500 0.921700 0.215500 -vn 0.590400 -0.704000 0.394500 -vn 0.465400 -0.828600 0.311000 -vn 0.692900 -0.552800 0.463000 -vn 0.693700 -0.193900 0.693700 -vn 0.653900 -0.380500 0.653900 -vn 0.693700 0.193900 0.693700 -vn 0.707100 0.000000 0.707100 -vn 0.589300 0.552800 0.589300 -vn 0.653900 0.380500 0.653900 -vn 0.395800 0.828600 0.395800 -vn 0.502100 0.704000 0.502100 -vn 0.274300 -0.921700 0.274300 -vn 0.128600 -0.983300 0.128600 -vn 0.128600 0.983300 0.128600 -vn 0.274300 0.921700 0.274300 -vn 0.502100 -0.704000 0.502100 -vn 0.395800 -0.828600 0.395800 -vn 0.589300 -0.552800 0.589300 -vn 0.545000 -0.193900 0.815700 -vn 0.513700 -0.380500 0.768900 -vn 0.545000 0.193900 0.815700 -vn 0.555600 0.000000 0.831400 -vn 0.463000 0.552800 0.692900 -vn 0.513700 0.380500 0.768900 -vn 0.311000 0.828600 0.465400 -vn 0.394500 0.704000 0.590400 -vn 0.215500 -0.921700 0.322500 -vn 0.101100 -0.983300 0.151300 -vn 0.101100 0.983300 0.151300 -vn 0.215500 0.921700 0.322500 -vn 0.394500 -0.704000 0.590400 -vn 0.311000 -0.828600 0.465400 -vn 0.463000 -0.552800 0.692900 -vn 0.375400 -0.193900 0.906300 -vn 0.353900 -0.380500 0.854400 -vn 0.375400 0.193900 0.906300 -vn 0.382700 0.000000 0.923900 -vn 0.318900 0.552800 0.769900 -vn 0.353900 0.380500 0.854400 -vn 0.214200 0.828600 0.517100 -vn 0.271700 0.704000 0.656100 -vn 0.148400 -0.921700 0.358300 -vn 0.069600 -0.983300 0.168100 -vn 0.069600 0.983300 0.168100 -vn 0.148400 0.921700 0.358300 -vn 0.271700 -0.704000 0.656100 -vn 0.214200 -0.828600 0.517100 -vn 0.318900 -0.552800 0.769900 -vn 0.191400 -0.193900 0.962200 -vn 0.180400 -0.380500 0.907000 -vn 0.191400 0.193900 0.962200 -vn 0.195100 0.000000 0.980800 -vn 0.162600 0.552800 0.817300 -vn 0.180400 0.380500 0.907000 -vn 0.109200 0.828600 0.549000 -vn 0.138500 0.704000 0.696500 -vn 0.075700 -0.921700 0.380400 -vn 0.035500 -0.983300 0.178400 -vn 0.035500 0.983300 0.178400 -vn 0.075700 0.921700 0.380400 -vn 0.138500 -0.704000 0.696500 -vn 0.109200 -0.828600 0.549000 -vn 0.162600 -0.552800 0.817300 -vn 0.000000 -0.193900 0.981000 -vn 0.000000 -0.380500 0.924700 -vn 0.000000 0.193900 0.981000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.552800 0.833300 -vn 0.000000 0.380500 0.924700 -vn 0.000000 0.828600 0.559800 -vn 0.000000 0.704000 0.710100 -vn 0.000000 -0.921700 0.387900 -vn 0.000000 -0.983300 0.182000 -vn 0.000000 0.983300 0.182000 -vn 0.000000 0.921700 0.387900 -vn 0.000000 -0.704000 0.710100 -vn 0.000000 -0.828600 0.559800 -vn 0.000000 -0.552800 0.833300 -vn -0.191400 -0.193900 0.962200 -vn -0.180400 -0.380500 0.907000 -vn -0.191400 0.193900 0.962200 -vn -0.195100 0.000000 0.980800 -vn -0.162600 0.552800 0.817300 -vn -0.180400 0.380500 0.907000 -vn -0.109200 0.828600 0.549000 -vn -0.138500 0.704000 0.696500 -vn -0.075700 -0.921700 0.380400 -vn -0.035500 -0.983300 0.178400 -vn -0.035500 0.983300 0.178400 -vn -0.075700 0.921700 0.380400 -vn -0.138500 -0.704000 0.696500 -vn -0.109200 -0.828600 0.549000 -vn -0.162600 -0.552800 0.817300 -vn -0.375400 -0.193900 0.906300 -vn -0.353900 -0.380500 0.854400 -vn -0.375400 0.193900 0.906300 -vn -0.382700 0.000000 0.923900 -vn -0.318900 0.552800 0.769900 -vn -0.353900 0.380500 0.854400 -vn -0.214200 0.828600 0.517100 -vn -0.271700 0.704000 0.656100 -vn -0.148400 -0.921700 0.358300 -vn -0.069600 -0.983300 0.168100 -vn -0.069600 0.983300 0.168100 -vn -0.148400 0.921700 0.358300 -vn -0.271700 -0.704000 0.656100 -vn -0.214200 -0.828600 0.517100 -vn -0.318900 -0.552800 0.769900 -vn -0.545000 -0.193900 0.815700 -vn -0.513700 -0.380500 0.768900 -vn -0.545000 0.193900 0.815700 -vn -0.555600 0.000000 0.831400 -vn -0.463000 0.552800 0.692900 -vn -0.513700 0.380500 0.768900 -vn -0.311000 0.828600 0.465400 -vn -0.394500 0.704000 0.590400 -vn -0.215500 -0.921700 0.322500 -vn -0.101100 -0.983300 0.151300 -vn -0.101100 0.983300 0.151300 -vn -0.215500 0.921700 0.322500 -vn -0.394500 -0.704000 0.590400 -vn -0.311000 -0.828600 0.465400 -vn -0.463000 -0.552800 0.692900 -vn -0.693700 -0.193900 0.693700 -vn -0.653900 -0.380500 0.653900 -vn -0.693700 0.193900 0.693700 -vn -0.707100 0.000000 0.707100 -vn -0.589300 0.552800 0.589300 -vn -0.653900 0.380500 0.653900 -vn -0.395800 0.828600 0.395800 -vn -0.502100 0.704000 0.502100 -vn -0.274300 -0.921700 0.274300 -vn -0.128600 -0.983300 0.128600 -vn -0.128600 0.983300 0.128600 -vn -0.274300 0.921700 0.274300 -vn -0.502100 -0.704000 0.502100 -vn -0.395800 -0.828600 0.395800 -vn -0.589300 -0.552800 0.589300 -vn -0.815700 -0.193900 0.545000 -vn -0.768900 -0.380500 0.513700 -vn -0.815700 0.193900 0.545000 -vn -0.831400 0.000000 0.555600 -vn -0.692900 0.552800 0.463000 -vn -0.768900 0.380500 0.513700 -vn -0.465400 0.828600 0.311000 -vn -0.590400 0.704000 0.394500 -vn -0.322500 -0.921700 0.215500 -vn -0.151300 -0.983300 0.101100 -vn -0.151300 0.983300 0.101100 -vn -0.322500 0.921700 0.215500 -vn -0.590400 -0.704000 0.394500 -vn -0.465400 -0.828600 0.311000 -vn -0.692900 -0.552800 0.463000 -vn -0.906300 -0.193900 0.375400 -vn -0.854400 -0.380500 0.353900 -vn -0.906300 0.193900 0.375400 -vn -0.923900 0.000000 0.382700 -vn -0.769900 0.552800 0.318900 -vn -0.854400 0.380500 0.353900 -vn -0.517100 0.828600 0.214200 -vn -0.656100 0.704000 0.271700 -vn -0.358300 -0.921700 0.148400 -vn -0.168100 -0.983300 0.069600 -vn -0.168100 0.983300 0.069600 -vn -0.358300 0.921700 0.148400 -vn -0.656100 -0.704000 0.271700 -vn -0.517100 -0.828600 0.214200 -vn -0.769900 -0.552800 0.318900 -vn -0.962200 -0.193900 0.191400 -vn -0.907000 -0.380500 0.180400 -vn -0.962200 0.193900 0.191400 -vn -0.980800 0.000000 0.195100 -vn -0.817300 0.552800 0.162600 -vn -0.907000 0.380500 0.180400 -vn -0.549000 0.828600 0.109200 -vn -0.696500 0.704000 0.138500 -vn -0.380400 -0.921700 0.075700 -vn -0.178400 -0.983300 0.035500 -vn -0.178400 0.983300 0.035500 -vn -0.380400 0.921700 0.075700 -vn -0.696500 -0.704000 0.138500 -vn -0.549000 -0.828600 0.109200 -vn -0.817300 -0.552800 0.162600 -vn -0.030200 -0.999500 0.000000 -vn -0.029600 -0.999500 -0.005900 -vn -0.027900 -0.999500 -0.011500 -vn -0.025100 -0.999500 -0.016800 -vn -0.021300 -0.999500 -0.021300 -vn -0.016800 -0.999500 -0.025100 -vn -0.011500 -0.999500 -0.027900 -vn -0.005900 -0.999500 -0.029600 -vn 0.000000 -0.999500 -0.030200 -vn 0.005900 -0.999500 -0.029600 -vn 0.011500 -0.999500 -0.027900 -vn 0.016800 -0.999500 -0.025100 -vn 0.021300 -0.999500 -0.021300 -vn 0.025100 -0.999500 -0.016800 -vn 0.027900 -0.999500 -0.011500 -vn 0.029600 -0.999500 -0.005900 -vn 0.030200 -0.999500 0.000000 -vn 0.029600 -0.999500 0.005900 -vn 0.027900 -0.999500 0.011500 -vn 0.025100 -0.999500 0.016800 -vn 0.021300 -0.999500 0.021300 -vn 0.016800 -0.999500 0.025100 -vn 0.011500 -0.999500 0.027900 -vn 0.005900 -0.999500 0.029600 -vn 0.000000 -0.999500 0.030200 -vn -0.005900 -0.999500 0.029600 -vn -0.011500 -0.999500 0.027900 -vn -0.016800 -0.999500 0.025100 -vn -0.021300 -0.999500 0.021300 -vn -0.025100 -0.999500 0.016800 -vn -0.027900 -0.999500 0.011500 -vn -0.029600 -0.999500 0.005900 -vn -0.029600 0.999500 0.005900 -vn -0.030200 0.999500 0.000000 -vn -0.027900 0.999500 0.011500 -vn -0.025100 0.999500 0.016800 -vn -0.021300 0.999500 0.021300 -vn -0.016800 0.999500 0.025100 -vn -0.011500 0.999500 0.027900 -vn -0.005900 0.999500 0.029600 -vn 0.000000 0.999500 0.030200 -vn 0.005900 0.999500 0.029600 -vn 0.011500 0.999500 0.027900 -vn 0.016800 0.999500 0.025100 -vn 0.021300 0.999500 0.021300 -vn 0.025100 0.999500 0.016800 -vn 0.027900 0.999500 0.011500 -vn 0.029600 0.999500 0.005900 -vn 0.030200 0.999500 0.000000 -vn 0.029600 0.999500 -0.005900 -vn 0.027900 0.999500 -0.011500 -vn 0.025100 0.999500 -0.016800 -vn 0.021300 0.999500 -0.021300 -vn 0.016800 0.999500 -0.025100 -vn 0.011500 0.999500 -0.027900 -vn 0.005900 0.999500 -0.029600 -vn 0.000000 0.999500 -0.030200 -vn -0.005900 0.999500 -0.029600 -vn -0.011500 0.999500 -0.027900 -vn -0.016800 0.999500 -0.025100 -vn -0.021300 0.999500 -0.021300 -vn -0.025100 0.999500 -0.016800 -vn -0.027900 0.999500 -0.011500 -vn -0.029600 0.999500 -0.005900 -s 1 -f 4/1/1 3/2/2 18/3/3 19/4/4 -f 15/5/5 14/6/6 29/7/7 30/8/8 -f 2/9/9 1/10/10 16/11/11 17/12/12 -f 13/13/13 12/14/14 27/15/15 28/16/16 -f 11/17/17 10/18/18 25/19/19 26/20/20 -f 9/21/21 8/22/22 23/23/23 24/24/24 -f 7/25/25 6/26/26 21/27/27 22/28/28 -f 5/29/29 4/1/1 19/4/4 20/30/30 -f 3/2/2 2/9/9 17/12/12 18/3/3 -f 14/6/6 13/13/13 28/16/16 29/7/7 -f 12/14/14 11/17/17 26/20/20 27/15/15 -f 10/18/18 9/21/21 24/24/24 25/19/19 -f 8/22/22 7/25/25 22/28/28 23/23/23 -f 6/26/26 5/29/29 20/30/30 21/27/27 -f 25/19/19 24/24/24 39/31/31 40/32/32 -f 23/23/23 22/28/28 37/33/33 38/34/34 -f 21/27/27 20/30/30 35/35/35 36/36/36 -f 19/4/4 18/3/3 33/37/37 34/38/38 -f 30/8/8 29/7/7 44/39/39 45/40/40 -f 17/12/12 16/11/11 31/41/41 32/42/42 -f 28/16/16 27/15/15 42/43/43 43/44/44 -f 26/20/20 25/19/19 40/32/32 41/45/45 -f 24/24/24 23/23/23 38/34/34 39/31/31 -f 22/28/28 21/27/27 36/36/36 37/33/33 -f 20/30/30 19/4/4 34/38/38 35/35/35 -f 18/3/3 17/12/12 32/42/42 33/37/37 -f 29/7/7 28/16/16 43/44/44 44/39/39 -f 27/15/15 26/20/20 41/45/45 42/43/43 -f 40/32/32 39/31/31 54/46/46 55/47/47 -f 38/34/34 37/33/33 52/48/48 53/49/49 -f 36/36/36 35/35/35 50/50/50 51/51/51 -f 34/38/38 33/37/37 48/52/52 49/53/53 -f 45/40/40 44/39/39 59/54/54 60/55/55 -f 32/42/42 31/41/41 46/56/56 47/57/57 -f 43/44/44 42/43/43 57/58/58 58/59/59 -f 41/45/45 40/32/32 55/47/47 56/60/60 -f 39/31/31 38/34/34 53/49/49 54/46/46 -f 37/33/33 36/36/36 51/51/51 52/48/48 -f 35/35/35 34/38/38 49/53/53 50/50/50 -f 33/37/37 32/42/42 47/57/57 48/52/52 -f 44/39/39 43/44/44 58/59/59 59/54/54 -f 42/43/43 41/45/45 56/60/60 57/58/58 -f 55/47/47 54/46/46 69/61/61 70/62/62 -f 53/49/49 52/48/48 67/63/63 68/64/64 -f 51/51/51 50/50/50 65/65/65 66/66/66 -f 49/53/53 48/52/52 63/67/67 64/68/68 -f 60/55/55 59/54/54 74/69/69 75/70/70 -f 47/57/57 46/56/56 61/71/71 62/72/72 -f 58/59/59 57/58/58 72/73/73 73/74/74 -f 56/60/60 55/47/47 70/62/62 71/75/75 -f 54/46/46 53/49/49 68/64/64 69/61/61 -f 52/48/48 51/51/51 66/66/66 67/63/63 -f 50/50/50 49/53/53 64/68/68 65/65/65 -f 48/52/52 47/57/57 62/72/72 63/67/67 -f 59/54/54 58/59/59 73/74/74 74/69/69 -f 57/58/58 56/60/60 71/75/75 72/73/73 -f 70/62/62 69/61/61 84/76/76 85/77/77 -f 68/64/64 67/63/63 82/78/78 83/79/79 -f 66/66/66 65/65/65 80/80/80 81/81/81 -f 64/68/68 63/67/67 78/82/82 79/83/83 -f 75/70/70 74/69/69 89/84/84 90/85/85 -f 62/72/72 61/71/71 76/86/86 77/87/87 -f 73/74/74 72/73/73 87/88/88 88/89/89 -f 71/75/75 70/62/62 85/77/77 86/90/90 -f 69/61/61 68/64/64 83/79/79 84/76/76 -f 67/63/63 66/66/66 81/81/81 82/78/78 -f 65/65/65 64/68/68 79/83/83 80/80/80 -f 63/67/67 62/72/72 77/87/87 78/82/82 -f 74/69/69 73/74/74 88/89/89 89/84/84 -f 72/73/73 71/75/75 86/90/90 87/88/88 -f 85/77/77 84/76/76 99/91/91 100/92/92 -f 83/79/79 82/78/78 97/93/93 98/94/94 -f 81/81/81 80/80/80 95/95/95 96/96/96 -f 79/83/83 78/82/82 93/97/97 94/98/98 -f 90/85/85 89/84/84 104/99/99 105/100/100 -f 77/87/87 76/86/86 91/101/101 92/102/102 -f 88/89/89 87/88/88 102/103/103 103/104/104 -f 86/90/90 85/77/77 100/92/92 101/105/105 -f 84/76/76 83/79/79 98/94/94 99/91/91 -f 82/78/78 81/81/81 96/96/96 97/93/93 -f 80/80/80 79/83/83 94/98/98 95/95/95 -f 78/82/82 77/87/87 92/102/102 93/97/97 -f 89/84/84 88/89/89 103/104/104 104/99/99 -f 87/88/88 86/90/90 101/105/105 102/103/103 -f 100/92/92 99/91/91 114/106/106 115/107/107 -f 98/94/94 97/93/93 112/108/108 113/109/109 -f 96/96/96 95/95/95 110/110/110 111/111/111 -f 94/98/98 93/97/97 108/112/112 109/113/113 -f 105/100/100 104/99/99 119/114/114 120/115/115 -f 92/102/102 91/101/101 106/116/116 107/117/117 -f 103/104/104 102/103/103 117/118/118 118/119/119 -f 101/105/105 100/92/92 115/107/107 116/120/120 -f 99/91/91 98/94/94 113/109/109 114/106/106 -f 97/93/93 96/96/96 111/111/111 112/108/108 -f 95/95/95 94/98/98 109/113/113 110/110/110 -f 93/97/97 92/102/102 107/117/117 108/112/112 -f 104/99/99 103/104/104 118/119/119 119/114/114 -f 102/103/103 101/105/105 116/120/120 117/118/118 -f 115/121/107 114/122/106 129/123/121 130/124/122 -f 113/125/109 112/126/108 127/127/123 128/128/124 -f 111/129/111 110/130/110 125/131/125 126/132/126 -f 109/133/113 108/134/112 123/135/127 124/136/128 -f 120/137/115 119/138/114 134/139/129 135/140/130 -f 107/141/117 106/142/116 121/143/131 122/144/132 -f 118/145/119 117/146/118 132/147/133 133/148/134 -f 116/149/120 115/121/107 130/124/122 131/150/135 -f 114/122/106 113/125/109 128/128/124 129/123/121 -f 112/126/108 111/129/111 126/132/126 127/127/123 -f 110/130/110 109/133/113 124/136/128 125/131/125 -f 108/134/112 107/141/117 122/144/132 123/135/127 -f 119/138/114 118/145/119 133/148/134 134/139/129 -f 117/146/118 116/149/120 131/150/135 132/147/133 -f 130/124/122 129/123/121 144/151/136 145/152/137 -f 128/128/124 127/127/123 142/153/138 143/154/139 -f 126/132/126 125/131/125 140/155/140 141/156/141 -f 124/136/128 123/135/127 138/157/142 139/158/143 -f 135/140/130 134/139/129 149/159/144 150/160/145 -f 122/144/132 121/143/131 136/161/146 137/162/147 -f 133/148/134 132/147/133 147/163/148 148/164/149 -f 131/150/135 130/124/122 145/152/137 146/165/150 -f 129/123/121 128/128/124 143/154/139 144/151/136 -f 127/127/123 126/132/126 141/156/141 142/153/138 -f 125/131/125 124/136/128 139/158/143 140/155/140 -f 123/135/127 122/144/132 137/162/147 138/157/142 -f 134/139/129 133/148/134 148/164/149 149/159/144 -f 132/147/133 131/150/135 146/165/150 147/163/148 -f 145/152/137 144/151/136 159/166/151 160/167/152 -f 143/154/139 142/153/138 157/168/153 158/169/154 -f 141/156/141 140/155/140 155/170/155 156/171/156 -f 139/158/143 138/157/142 153/172/157 154/173/158 -f 150/160/145 149/159/144 164/174/159 165/175/160 -f 137/162/147 136/161/146 151/176/161 152/177/162 -f 148/164/149 147/163/148 162/178/163 163/179/164 -f 146/165/150 145/152/137 160/167/152 161/180/165 -f 144/151/136 143/154/139 158/169/154 159/166/151 -f 142/153/138 141/156/141 156/171/156 157/168/153 -f 140/155/140 139/158/143 154/173/158 155/170/155 -f 138/157/142 137/162/147 152/177/162 153/172/157 -f 149/159/144 148/164/149 163/179/164 164/174/159 -f 147/163/148 146/165/150 161/180/165 162/178/163 -f 160/167/152 159/166/151 174/181/166 175/182/167 -f 158/169/154 157/168/153 172/183/168 173/184/169 -f 156/171/156 155/170/155 170/185/170 171/186/171 -f 154/173/158 153/172/157 168/187/172 169/188/173 -f 165/175/160 164/174/159 179/189/174 180/190/175 -f 152/177/162 151/176/161 166/191/176 167/192/177 -f 163/179/164 162/178/163 177/193/178 178/194/179 -f 161/180/165 160/167/152 175/182/167 176/195/180 -f 159/166/151 158/169/154 173/184/169 174/181/166 -f 157/168/153 156/171/156 171/186/171 172/183/168 -f 155/170/155 154/173/158 169/188/173 170/185/170 -f 153/172/157 152/177/162 167/192/177 168/187/172 -f 164/174/159 163/179/164 178/194/179 179/189/174 -f 162/178/163 161/180/165 176/195/180 177/193/178 -f 175/182/167 174/181/166 189/196/181 190/197/182 -f 173/184/169 172/183/168 187/198/183 188/199/184 -f 171/186/171 170/185/170 185/200/185 186/201/186 -f 169/188/173 168/187/172 183/202/187 184/203/188 -f 180/190/175 179/189/174 194/204/189 195/205/190 -f 167/192/177 166/191/176 181/206/191 182/207/192 -f 178/194/179 177/193/178 192/208/193 193/209/194 -f 176/195/180 175/182/167 190/197/182 191/210/195 -f 174/181/166 173/184/169 188/199/184 189/196/181 -f 172/183/168 171/186/171 186/201/186 187/198/183 -f 170/185/170 169/188/173 184/203/188 185/200/185 -f 168/187/172 167/192/177 182/207/192 183/202/187 -f 179/189/174 178/194/179 193/209/194 194/204/189 -f 177/193/178 176/195/180 191/210/195 192/208/193 -f 190/197/182 189/196/181 204/211/196 205/212/197 -f 188/199/184 187/198/183 202/213/198 203/214/199 -f 186/201/186 185/200/185 200/215/200 201/216/201 -f 184/203/188 183/202/187 198/217/202 199/218/203 -f 195/205/190 194/204/189 209/219/204 210/220/205 -f 182/207/192 181/206/191 196/221/206 197/222/207 -f 193/209/194 192/208/193 207/223/208 208/224/209 -f 191/210/195 190/197/182 205/212/197 206/225/210 -f 189/196/181 188/199/184 203/214/199 204/211/196 -f 187/198/183 186/201/186 201/216/201 202/213/198 -f 185/200/185 184/203/188 199/218/203 200/215/200 -f 183/202/187 182/207/192 197/222/207 198/217/202 -f 194/204/189 193/209/194 208/224/209 209/219/204 -f 192/208/193 191/210/195 206/225/210 207/223/208 -f 205/212/197 204/211/196 219/226/211 220/227/212 -f 203/214/199 202/213/198 217/228/213 218/229/214 -f 201/216/201 200/215/200 215/230/215 216/231/216 -f 199/218/203 198/217/202 213/232/217 214/233/218 -f 210/220/205 209/219/204 224/234/219 225/235/220 -f 197/222/207 196/221/206 211/236/221 212/237/222 -f 208/224/209 207/223/208 222/238/223 223/239/224 -f 206/225/210 205/212/197 220/227/212 221/240/225 -f 204/211/196 203/214/199 218/229/214 219/226/211 -f 202/213/198 201/216/201 216/231/216 217/228/213 -f 200/215/200 199/218/203 214/233/218 215/230/215 -f 198/217/202 197/222/207 212/237/222 213/232/217 -f 209/219/204 208/224/209 223/239/224 224/234/219 -f 207/223/208 206/225/210 221/240/225 222/238/223 -f 220/227/212 219/226/211 234/241/226 235/242/227 -f 218/229/214 217/228/213 232/243/228 233/244/229 -f 216/231/216 215/230/215 230/245/230 231/246/231 -f 214/233/218 213/232/217 228/247/232 229/248/233 -f 225/235/220 224/234/219 239/249/234 240/250/235 -f 212/237/222 211/236/221 226/251/236 227/252/237 -f 223/239/224 222/238/223 237/253/238 238/254/239 -f 221/240/225 220/227/212 235/242/227 236/255/240 -f 219/226/211 218/229/214 233/244/229 234/241/226 -f 217/228/213 216/231/216 231/246/231 232/243/228 -f 215/230/215 214/233/218 229/248/233 230/245/230 -f 213/232/217 212/237/222 227/252/237 228/247/232 -f 224/234/219 223/239/224 238/254/239 239/249/234 -f 222/238/223 221/240/225 236/255/240 237/253/238 -f 235/242/227 234/241/226 249/21/241 250/18/242 -f 233/244/229 232/243/228 247/25/243 248/22/244 -f 231/246/231 230/245/230 245/29/245 246/26/246 -f 229/248/233 228/247/232 243/2/247 244/1/248 -f 240/250/235 239/249/234 254/6/249 255/5/250 -f 227/252/237 226/251/236 241/10/251 242/9/252 -f 238/254/239 237/253/238 252/14/253 253/13/254 -f 236/255/240 235/242/227 250/18/242 251/17/255 -f 234/241/226 233/244/229 248/22/244 249/21/241 -f 232/243/228 231/246/231 246/26/246 247/25/243 -f 230/245/230 229/248/233 244/1/248 245/29/245 -f 228/247/232 227/252/237 242/9/252 243/2/247 -f 239/249/234 238/254/239 253/13/254 254/6/249 -f 237/253/238 236/255/240 251/17/255 252/14/253 -f 250/18/242 249/21/241 264/24/256 265/19/257 -f 248/22/244 247/25/243 262/28/258 263/23/259 -f 246/26/246 245/29/245 260/30/260 261/27/261 -f 244/1/248 243/2/247 258/3/262 259/4/263 -f 255/5/250 254/6/249 269/7/264 270/8/265 -f 242/9/252 241/10/251 256/11/266 257/12/267 -f 253/13/254 252/14/253 267/15/268 268/16/269 -f 251/17/255 250/18/242 265/19/257 266/20/270 -f 249/21/241 248/22/244 263/23/259 264/24/256 -f 247/25/243 246/26/246 261/27/261 262/28/258 -f 245/29/245 244/1/248 259/4/263 260/30/260 -f 243/2/247 242/9/252 257/12/267 258/3/262 -f 254/6/249 253/13/254 268/16/269 269/7/264 -f 252/14/253 251/17/255 266/20/270 267/15/268 -f 265/19/257 264/24/256 279/31/271 280/32/272 -f 263/23/259 262/28/258 277/33/273 278/34/274 -f 261/27/261 260/30/260 275/35/275 276/36/276 -f 259/4/263 258/3/262 273/37/277 274/38/278 -f 270/8/265 269/7/264 284/39/279 285/40/280 -f 257/12/267 256/11/266 271/41/281 272/42/282 -f 268/16/269 267/15/268 282/43/283 283/44/284 -f 266/20/270 265/19/257 280/32/272 281/45/285 -f 264/24/256 263/23/259 278/34/274 279/31/271 -f 262/28/258 261/27/261 276/36/276 277/33/273 -f 260/30/260 259/4/263 274/38/278 275/35/275 -f 258/3/262 257/12/267 272/42/282 273/37/277 -f 269/7/264 268/16/269 283/44/284 284/39/279 -f 267/15/268 266/20/270 281/45/285 282/43/283 -f 280/32/272 279/31/271 294/46/286 295/47/287 -f 278/34/274 277/33/273 292/48/288 293/49/289 -f 276/36/276 275/35/275 290/50/290 291/51/291 -f 274/38/278 273/37/277 288/52/292 289/53/293 -f 285/40/280 284/39/279 299/54/294 300/55/295 -f 272/42/282 271/41/281 286/56/296 287/57/297 -f 283/44/284 282/43/283 297/58/298 298/59/299 -f 281/45/285 280/32/272 295/47/287 296/60/300 -f 279/31/271 278/34/274 293/49/289 294/46/286 -f 277/33/273 276/36/276 291/51/291 292/48/288 -f 275/35/275 274/38/278 289/53/293 290/50/290 -f 273/37/277 272/42/282 287/57/297 288/52/292 -f 284/39/279 283/44/284 298/59/299 299/54/294 -f 282/43/283 281/45/285 296/60/300 297/58/298 -f 295/47/287 294/46/286 309/61/301 310/62/302 -f 293/49/289 292/48/288 307/63/303 308/64/304 -f 291/51/291 290/50/290 305/65/305 306/66/306 -f 289/53/293 288/52/292 303/67/307 304/68/308 -f 300/55/295 299/54/294 314/69/309 315/70/310 -f 287/57/297 286/56/296 301/71/311 302/72/312 -f 298/59/299 297/58/298 312/73/313 313/74/314 -f 296/60/300 295/47/287 310/62/302 311/75/315 -f 294/46/286 293/49/289 308/64/304 309/61/301 -f 292/48/288 291/51/291 306/66/306 307/63/303 -f 290/50/290 289/53/293 304/68/308 305/65/305 -f 288/52/292 287/57/297 302/72/312 303/67/307 -f 299/54/294 298/59/299 313/74/314 314/69/309 -f 297/58/298 296/60/300 311/75/315 312/73/313 -f 310/62/302 309/61/301 324/76/316 325/77/317 -f 308/64/304 307/63/303 322/78/318 323/79/319 -f 306/66/306 305/65/305 320/80/320 321/81/321 -f 304/68/308 303/67/307 318/82/322 319/83/323 -f 315/70/310 314/69/309 329/84/324 330/85/325 -f 302/72/312 301/71/311 316/86/326 317/87/327 -f 313/74/314 312/73/313 327/88/328 328/89/329 -f 311/75/315 310/62/302 325/77/317 326/90/330 -f 309/61/301 308/64/304 323/79/319 324/76/316 -f 307/63/303 306/66/306 321/81/321 322/78/318 -f 305/65/305 304/68/308 319/83/323 320/80/320 -f 303/67/307 302/72/312 317/87/327 318/82/322 -f 314/69/309 313/74/314 328/89/329 329/84/324 -f 312/73/313 311/75/315 326/90/330 327/88/328 -f 325/77/317 324/76/316 339/91/331 340/92/332 -f 323/79/319 322/78/318 337/93/333 338/94/334 -f 321/81/321 320/80/320 335/95/335 336/96/336 -f 319/83/323 318/82/322 333/97/337 334/98/338 -f 330/85/325 329/84/324 344/99/339 345/100/340 -f 317/87/327 316/86/326 331/101/341 332/102/342 -f 328/89/329 327/88/328 342/103/343 343/104/344 -f 326/90/330 325/77/317 340/92/332 341/105/345 -f 324/76/316 323/79/319 338/94/334 339/91/331 -f 322/78/318 321/81/321 336/96/336 337/93/333 -f 320/80/320 319/83/323 334/98/338 335/95/335 -f 318/82/322 317/87/327 332/102/342 333/97/337 -f 329/84/324 328/89/329 343/104/344 344/99/339 -f 327/88/328 326/90/330 341/105/345 342/103/343 -f 340/92/332 339/91/331 354/106/346 355/107/347 -f 338/94/334 337/93/333 352/108/348 353/109/349 -f 336/96/336 335/95/335 350/110/350 351/111/351 -f 334/98/338 333/97/337 348/112/352 349/113/353 -f 345/100/340 344/99/339 359/114/354 360/115/355 -f 332/102/342 331/101/341 346/116/356 347/117/357 -f 343/104/344 342/103/343 357/118/358 358/119/359 -f 341/105/345 340/92/332 355/107/347 356/120/360 -f 339/91/331 338/94/334 353/109/349 354/106/346 -f 337/93/333 336/96/336 351/111/351 352/108/348 -f 335/95/335 334/98/338 349/113/353 350/110/350 -f 333/97/337 332/102/342 347/117/357 348/112/352 -f 344/99/339 343/104/344 358/119/359 359/114/354 -f 342/103/343 341/105/345 356/120/360 357/118/358 -f 355/121/347 354/122/346 369/123/361 370/124/362 -f 353/125/349 352/126/348 367/127/363 368/128/364 -f 351/129/351 350/130/350 365/131/365 366/132/366 -f 349/133/353 348/134/352 363/135/367 364/136/368 -f 360/137/355 359/138/354 374/139/369 375/140/370 -f 347/141/357 346/142/356 361/143/371 362/144/372 -f 358/145/359 357/146/358 372/147/373 373/148/374 -f 356/149/360 355/121/347 370/124/362 371/150/375 -f 354/122/346 353/125/349 368/128/364 369/123/361 -f 352/126/348 351/129/351 366/132/366 367/127/363 -f 350/130/350 349/133/353 364/136/368 365/131/365 -f 348/134/352 347/141/357 362/144/372 363/135/367 -f 359/138/354 358/145/359 373/148/374 374/139/369 -f 357/146/358 356/149/360 371/150/375 372/147/373 -f 370/124/362 369/123/361 384/151/376 385/152/377 -f 368/128/364 367/127/363 382/153/378 383/154/379 -f 366/132/366 365/131/365 380/155/380 381/156/381 -f 364/136/368 363/135/367 378/157/382 379/158/383 -f 375/140/370 374/139/369 389/159/384 390/160/385 -f 362/144/372 361/143/371 376/161/386 377/162/387 -f 373/148/374 372/147/373 387/163/388 388/164/389 -f 371/150/375 370/124/362 385/152/377 386/165/390 -f 369/123/361 368/128/364 383/154/379 384/151/376 -f 367/127/363 366/132/366 381/156/381 382/153/378 -f 365/131/365 364/136/368 379/158/383 380/155/380 -f 363/135/367 362/144/372 377/162/387 378/157/382 -f 374/139/369 373/148/374 388/164/389 389/159/384 -f 372/147/373 371/150/375 386/165/390 387/163/388 -f 385/152/377 384/151/376 399/166/391 400/167/392 -f 383/154/379 382/153/378 397/168/393 398/169/394 -f 381/156/381 380/155/380 395/170/395 396/171/396 -f 379/158/383 378/157/382 393/172/397 394/173/398 -f 390/160/385 389/159/384 404/174/399 405/175/400 -f 377/162/387 376/161/386 391/176/401 392/177/402 -f 388/164/389 387/163/388 402/178/403 403/179/404 -f 386/165/390 385/152/377 400/167/392 401/180/405 -f 384/151/376 383/154/379 398/169/394 399/166/391 -f 382/153/378 381/156/381 396/171/396 397/168/393 -f 380/155/380 379/158/383 394/173/398 395/170/395 -f 378/157/382 377/162/387 392/177/402 393/172/397 -f 389/159/384 388/164/389 403/179/404 404/174/399 -f 387/163/388 386/165/390 401/180/405 402/178/403 -f 400/167/392 399/166/391 414/181/406 415/182/407 -f 398/169/394 397/168/393 412/183/408 413/184/409 -f 396/171/396 395/170/395 410/185/410 411/186/411 -f 394/173/398 393/172/397 408/187/412 409/188/413 -f 405/175/400 404/174/399 419/189/414 420/190/415 -f 392/177/402 391/176/401 406/191/416 407/192/417 -f 403/179/404 402/178/403 417/193/418 418/194/419 -f 401/180/405 400/167/392 415/182/407 416/195/420 -f 399/166/391 398/169/394 413/184/409 414/181/406 -f 397/168/393 396/171/396 411/186/411 412/183/408 -f 395/170/395 394/173/398 409/188/413 410/185/410 -f 393/172/397 392/177/402 407/192/417 408/187/412 -f 404/174/399 403/179/404 418/194/419 419/189/414 -f 402/178/403 401/180/405 416/195/420 417/193/418 -f 415/182/407 414/181/406 429/196/421 430/197/422 -f 413/184/409 412/183/408 427/198/423 428/199/424 -f 411/186/411 410/185/410 425/200/425 426/201/426 -f 409/188/413 408/187/412 423/202/427 424/203/428 -f 420/190/415 419/189/414 434/204/429 435/205/430 -f 407/192/417 406/191/416 421/206/431 422/207/432 -f 418/194/419 417/193/418 432/208/433 433/209/434 -f 416/195/420 415/182/407 430/197/422 431/210/435 -f 414/181/406 413/184/409 428/199/424 429/196/421 -f 412/183/408 411/186/411 426/201/426 427/198/423 -f 410/185/410 409/188/413 424/203/428 425/200/425 -f 408/187/412 407/192/417 422/207/432 423/202/427 -f 419/189/414 418/194/419 433/209/434 434/204/429 -f 417/193/418 416/195/420 431/210/435 432/208/433 -f 430/197/422 429/196/421 444/211/436 445/212/437 -f 428/199/424 427/198/423 442/213/438 443/214/439 -f 426/201/426 425/200/425 440/215/440 441/216/441 -f 424/203/428 423/202/427 438/217/442 439/218/443 -f 435/205/430 434/204/429 449/219/444 450/220/445 -f 422/207/432 421/206/431 436/221/446 437/222/447 -f 433/209/434 432/208/433 447/223/448 448/224/449 -f 431/210/435 430/197/422 445/212/437 446/225/450 -f 429/196/421 428/199/424 443/214/439 444/211/436 -f 427/198/423 426/201/426 441/216/441 442/213/438 -f 425/200/425 424/203/428 439/218/443 440/215/440 -f 423/202/427 422/207/432 437/222/447 438/217/442 -f 434/204/429 433/209/434 448/224/449 449/219/444 -f 432/208/433 431/210/435 446/225/450 447/223/448 -f 445/212/437 444/211/436 459/226/451 460/227/452 -f 443/214/439 442/213/438 457/228/453 458/229/454 -f 441/216/441 440/215/440 455/230/455 456/231/456 -f 439/218/443 438/217/442 453/232/457 454/233/458 -f 450/220/445 449/219/444 464/234/459 465/235/460 -f 437/222/447 436/221/446 451/236/461 452/237/462 -f 448/224/449 447/223/448 462/238/463 463/239/464 -f 446/225/450 445/212/437 460/227/452 461/240/465 -f 444/211/436 443/214/439 458/229/454 459/226/451 -f 442/213/438 441/216/441 456/231/456 457/228/453 -f 440/215/440 439/218/443 454/233/458 455/230/455 -f 438/217/442 437/222/447 452/237/462 453/232/457 -f 449/219/444 448/224/449 463/239/464 464/234/459 -f 447/223/448 446/225/450 461/240/465 462/238/463 -f 460/227/452 459/226/451 474/241/466 475/242/467 -f 458/229/454 457/228/453 472/243/468 473/244/469 -f 456/231/456 455/230/455 470/245/470 471/246/471 -f 454/233/458 453/232/457 468/247/472 469/248/473 -f 465/235/460 464/234/459 479/249/474 480/250/475 -f 452/237/462 451/236/461 466/251/476 467/252/477 -f 463/239/464 462/238/463 477/253/478 478/254/479 -f 461/240/465 460/227/452 475/242/467 476/255/480 -f 459/226/451 458/229/454 473/244/469 474/241/466 -f 457/228/453 456/231/456 471/246/471 472/243/468 -f 455/230/455 454/233/458 469/248/473 470/245/470 -f 453/232/457 452/237/462 467/252/477 468/247/472 -f 464/234/459 463/239/464 478/254/479 479/249/474 -f 462/238/463 461/240/465 476/255/480 477/253/478 -f 481/256/481 15/5/5 30/8/8 485/257/482 -f 485/257/482 30/8/8 45/40/40 487/258/483 -f 487/258/483 45/40/40 60/55/55 489/259/484 -f 489/259/484 60/55/55 75/70/70 491/260/485 -f 491/260/485 75/70/70 90/85/85 493/261/486 -f 493/261/486 90/85/85 105/100/100 495/262/487 -f 495/262/487 105/100/100 120/115/115 497/263/488 -f 497/264/488 120/137/115 135/140/130 499/265/489 -f 499/265/489 135/140/130 150/160/145 501/266/490 -f 501/266/490 150/160/145 165/175/160 503/267/491 -f 503/267/491 165/175/160 180/190/175 505/268/492 -f 505/268/492 180/190/175 195/205/190 507/269/493 -f 507/269/493 195/205/190 210/220/205 509/270/494 -f 509/270/494 210/220/205 225/235/220 511/271/495 -f 511/271/495 225/235/220 240/250/235 513/272/496 -f 513/272/496 240/250/235 255/5/250 515/256/497 -f 515/256/497 255/5/250 270/8/265 517/257/498 -f 517/257/498 270/8/265 285/40/280 519/258/499 -f 519/258/499 285/40/280 300/55/295 521/259/500 -f 521/259/500 300/55/295 315/70/310 523/260/501 -f 523/260/501 315/70/310 330/85/325 525/261/502 -f 525/261/502 330/85/325 345/100/340 527/262/503 -f 527/262/503 345/100/340 360/115/355 529/263/504 -f 529/264/504 360/137/355 375/140/370 531/265/505 -f 531/265/505 375/140/370 390/160/385 533/266/506 -f 533/266/506 390/160/385 405/175/400 534/267/507 -f 534/267/507 405/175/400 420/190/415 536/268/508 -f 536/268/508 420/190/415 435/205/430 538/269/509 -f 538/269/509 435/205/430 450/220/445 540/270/510 -f 540/270/510 450/220/445 465/235/460 542/271/511 -f 542/271/511 465/235/460 480/250/475 544/272/512 -f 475/242/467 474/241/466 9/21/21 10/18/18 -f 473/244/469 472/243/468 7/25/25 8/22/22 -f 471/246/471 470/245/470 5/29/29 6/26/26 -f 469/248/473 468/247/472 3/2/2 4/1/1 -f 480/250/475 479/249/474 14/6/6 15/5/5 -f 467/252/477 466/251/476 1/10/10 2/9/9 -f 478/254/479 477/253/478 12/14/14 13/13/13 -f 476/255/480 475/242/467 10/18/18 11/17/17 -f 474/241/466 473/244/469 8/22/22 9/21/21 -f 472/243/468 471/246/471 6/26/26 7/25/25 -f 470/245/470 469/248/473 4/1/1 5/29/29 -f 544/272/512 480/250/475 15/5/5 481/256/481 -f 468/247/472 467/252/477 2/9/9 3/2/2 -f 479/249/474 478/254/479 13/13/13 14/6/6 -f 477/253/478 476/255/480 11/17/17 12/14/14 -f 466/251/476 543/273/513 483/274/514 1/10/10 -f 451/236/461 541/275/515 543/273/513 466/251/476 -f 436/221/446 539/276/516 541/275/515 451/236/461 -f 421/206/431 537/277/517 539/276/516 436/221/446 -f 406/191/416 535/278/518 537/277/517 421/206/431 -f 391/176/401 482/279/519 535/278/518 406/191/416 -f 376/161/386 532/280/520 482/279/519 391/176/401 -f 361/143/371 530/281/521 532/280/520 376/161/386 -f 346/142/356 528/282/522 530/281/521 361/143/371 -f 331/101/341 526/283/523 528/284/522 346/116/356 -f 316/86/326 524/285/524 526/283/523 331/101/341 -f 301/71/311 522/286/525 524/285/524 316/86/326 -f 286/56/296 520/287/526 522/286/525 301/71/311 -f 271/41/281 518/288/527 520/287/526 286/56/296 -f 256/11/266 516/289/528 518/288/527 271/41/281 -f 241/10/251 514/274/529 516/289/528 256/11/266 -f 226/251/236 512/273/530 514/274/529 241/10/251 -f 211/236/221 510/275/531 512/273/530 226/251/236 -f 196/221/206 508/276/532 510/275/531 211/236/221 -f 181/206/191 506/277/533 508/276/532 196/221/206 -f 166/191/176 504/278/534 506/277/533 181/206/191 -f 151/176/161 502/279/535 504/278/534 166/191/176 -f 136/161/146 500/280/536 502/279/535 151/176/161 -f 121/143/131 498/281/537 500/280/536 136/161/146 -f 106/142/116 496/282/538 498/281/537 121/143/131 -f 91/101/101 494/283/539 496/284/538 106/116/116 -f 76/86/86 492/285/540 494/283/539 91/101/101 -f 61/71/71 490/286/541 492/285/540 76/86/86 -f 46/56/56 488/287/542 490/286/541 61/71/71 -f 31/41/41 486/288/543 488/287/542 46/56/56 -f 16/11/11 484/289/544 486/288/543 31/41/41 -f 1/10/10 483/274/514 484/289/544 16/11/11 -f 543/290/513 541/291/515 539/292/516 537/293/517 535/294/518 482/295/519 532/296/520 530/297/521 528/298/522 526/299/523 524/300/524 522/301/525 520/302/526 518/303/527 516/304/528 514/305/529 512/306/530 510/307/531 508/308/532 506/309/533 504/310/534 502/311/535 500/312/536 498/313/537 496/314/538 494/315/539 492/316/540 490/317/541 488/318/542 486/319/543 484/320/544 483/321/514 -f 544/290/512 481/291/481 485/292/482 487/293/483 489/294/484 491/295/485 493/296/486 495/297/487 497/298/488 499/299/489 501/300/490 503/301/491 505/302/492 507/303/493 509/304/494 511/305/495 513/306/496 515/307/497 517/308/498 519/309/499 521/310/500 523/311/501 525/312/502 527/313/503 529/314/504 531/315/505 533/316/506 534/317/507 536/318/508 538/319/509 540/320/510 542/321/511 diff --git a/technic/models/technic_two_curved_edge.obj b/technic/models/technic_two_curved_edge.obj deleted file mode 100644 index a468ddf..0000000 --- a/technic/models/technic_two_curved_edge.obj +++ /dev/null @@ -1,207 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_quarter_round_corner_onetexture.blend' -# www.blender.org -o corner1_Cylinder -v 0.415732 0.277783 0.499997 -v 0.461936 0.191340 0.499997 -v 0.415735 0.277783 -0.415732 -v 0.461940 0.191340 -0.461937 -v 0.490389 0.097544 0.499997 -v 0.353551 0.353551 0.499997 -v 0.353555 0.353551 -0.353551 -v 0.499996 -0.000000 0.499997 -v 0.277783 0.415732 0.499997 -v 0.490393 0.097544 -0.490389 -v 0.277787 0.415732 -0.277784 -v 0.191340 0.461936 0.499997 -v 0.191344 0.461937 -0.191341 -v 0.097544 0.490389 0.499997 -v 0.097547 0.490391 -0.097545 -v -0.000000 0.499996 0.499997 -v -0.499997 0.499997 0.499997 -v -0.499997 0.499997 -0.000030 -v -0.499997 0.415735 -0.277785 -v -0.499997 0.461940 -0.191342 -v -0.499997 0.490393 -0.097545 -v -0.500000 -0.500000 -0.500000 -v -0.499997 -0.499997 0.499997 -v 0.000000 0.499998 0.000000 -v -0.499998 0.000014 -0.499999 -v -0.499997 0.353553 -0.353554 -v -0.499998 0.097545 -0.490393 -v -0.499997 0.277785 -0.415735 -v -0.499998 0.191342 -0.461940 -v 0.499997 -0.000000 -0.499996 -v 0.500000 -0.500000 -0.500000 -v 0.499997 -0.499997 0.499997 -v -0.499997 -0.499997 0.499997 -v -0.499997 0.499997 0.499997 -v -0.499997 0.499997 -0.000030 -v -0.499997 0.415735 -0.277785 -v -0.499997 0.461940 -0.191342 -v -0.499997 0.490393 -0.097545 -v -0.500000 -0.500000 -0.500000 -v -0.499998 0.000014 -0.499999 -v -0.499997 0.353553 -0.353554 -v -0.499998 0.097545 -0.490393 -v -0.499997 0.277785 -0.415735 -v -0.499998 0.191342 -0.461940 -v -0.499998 -0.033351 0.033348 -v -0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 -0.500000 -v 0.499997 -0.499997 0.499997 -v 0.415732 0.277783 0.499997 -v 0.461936 0.191340 0.499997 -v 0.490389 0.097544 0.499997 -v 0.353551 0.353551 0.499997 -v 0.499996 -0.000000 0.499997 -v 0.277783 0.415732 0.499997 -v 0.191340 0.461936 0.499997 -v -0.499997 -0.499997 0.499997 -v 0.097544 0.490389 0.499997 -v -0.000000 0.499996 0.499997 -v -0.499997 0.499997 0.499997 -v -0.033351 -0.033351 0.499997 -v 0.499997 -0.499997 0.499997 -vt 1.000000 0.500100 -vt 0.990395 0.597625 -vt 0.466756 0.466756 -vt 1.000000 0.000200 -vt 0.000201 0.000201 -vt 0.597626 0.990394 -vt 0.500101 1.000000 -vt 0.691404 0.961947 -vt 0.777830 0.915751 -vt 0.853583 0.853583 -vt 0.915752 0.777829 -vt 0.000201 1.000000 -vt 0.961948 0.691403 -vt -0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt -0.000000 1.000000 -vt 0.533443 0.466757 -vt 0.000202 0.500115 -vt 0.402575 0.990397 -vt 0.308797 0.961949 -vt 0.222371 0.915753 -vt 0.146617 0.853584 -vt 0.084449 0.777831 -vt 0.038253 0.691405 -vt 0.009806 0.597626 -vt 0.999996 0.125448 -vt 0.222353 0.125462 -vt 0.146597 0.000612 -vt 0.999995 0.000594 -vt 0.000178 0.874582 -vt 0.915751 0.874577 -vt 0.853580 0.999436 -vt 0.000178 0.999439 -vt 0.999808 0.625427 -vt 0.009599 0.625446 -vt -0.000005 0.500594 -vt 0.999807 0.500594 -vt 0.597441 0.374574 -vt 0.499912 0.499435 -vt 0.000000 0.499434 -vt 0.000000 0.374576 -vt 0.999999 0.375154 -vt 1.000000 0.499969 -vt 0.500093 0.500015 -vt 0.402562 0.375164 -vt 0.999812 0.999983 -vt 0.146415 1.000000 -vt 0.084244 0.875149 -vt 0.999811 0.875131 -vt 0.990396 0.624861 -vt 0.961947 0.749719 -vt 0.000178 0.749724 -vt 0.000178 0.624866 -vt 0.777649 0.124857 -vt 0.691221 0.249715 -vt 0.000001 0.249719 -vt 0.000001 0.124861 -vt 0.308782 0.250314 -vt 0.999998 0.250301 -vt 0.853403 -0.000000 -vt 0.038047 0.750298 -vt 0.999809 0.750280 -vt 0.000177 0.500008 -vt 0.000000 0.500000 -vt 0.500000 1.000000 -vt 0.500000 0.500000 -vn 0.000000 -0.000000 1.000000 -vn -0.000000 -1.000000 0.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.831500 -0.555600 -vn 0.325800 0.887500 -0.325800 -vn 0.429700 0.794100 -0.429700 -vn 0.000000 0.707100 -0.707100 -vn 0.831500 0.555600 0.000000 -vn 0.531000 0.660300 -0.531000 -vn 0.707100 0.707100 0.000000 -vn 0.000000 0.195100 -0.980800 -vn 0.683900 0.254100 -0.683900 -vn 0.705500 0.067100 -0.705500 -vn 0.000000 0.049100 -0.998800 -vn 0.123100 0.984700 -0.123100 -vn 0.036800 0.998600 -0.036800 -vn 0.049100 0.998800 0.000000 -vn 0.195100 0.980800 0.000000 -vn 0.000000 0.980800 -0.195100 -vn 0.000000 0.998800 -0.049100 -vn 0.000000 0.555600 -0.831500 -vn 0.620400 0.479600 -0.620400 -vn 0.923900 0.382700 0.000000 -vn 0.980800 0.195100 0.000000 -vn 0.223300 0.948800 -0.223200 -vn 0.382700 0.923900 0.000000 -vn 0.555600 0.831500 0.000000 -vn 0.000000 0.923900 -0.382700 -vn 0.000000 0.382700 -0.923900 -vn 0.998800 0.049100 0.000000 -vn 0.707100 0.000000 -0.707100 -vn 0.000000 0.000000 -1.000000 -vn -0.000000 1.000000 0.000000 -vn 1.000000 0.000000 0.000000 -s off -f 53/1/1 51/2/1 60/3/1 -f 61/4/1 53/1/1 60/3/1 56/5/1 -f 57/6/1 58/7/1 60/3/1 -f 55/8/1 57/6/1 60/3/1 -f 54/9/1 55/8/1 60/3/1 -f 52/10/1 54/9/1 60/3/1 -f 49/11/1 52/10/1 60/3/1 -f 59/12/1 56/5/1 60/3/1 58/7/1 -f 50/13/1 49/11/1 60/3/1 -f 48/14/2 23/15/2 46/16/2 47/17/2 -f 39/5/3 33/4/3 45/18/3 40/19/3 -f 35/7/3 38/20/3 45/18/3 -f 38/20/3 37/21/3 45/18/3 -f 37/21/3 36/22/3 45/18/3 -f 36/22/3 41/23/3 45/18/3 -f 41/23/3 43/24/3 45/18/3 -f 43/24/3 44/25/3 45/18/3 -f 44/25/3 42/26/3 45/18/3 -f 42/26/3 40/19/3 45/18/3 -f 34/16/3 35/7/3 45/18/3 33/4/3 -f 51/2/1 50/13/1 60/3/1 -s 1 -f 19/27/4 11/28/5 7/29/6 26/30/7 -f 1/31/8 3/32/9 7/33/6 6/34/10 -f 27/35/11 10/36/12 30/37/13 25/38/14 -f 15/39/15 24/40/16 16/41/17 14/42/18 -f 21/43/19 18/44/20 24/45/16 15/46/15 -f 26/47/7 7/48/6 3/49/9 28/50/21 -f 10/51/12 4/52/22 2/53/23 5/54/24 -f 11/55/5 13/56/25 12/57/26 9/58/27 -f 21/43/19 15/46/15 13/59/25 20/60/28 -f 20/60/28 13/59/25 11/28/5 19/27/4 -f 9/58/27 6/14/10 7/61/6 11/55/5 -f 4/52/22 3/32/9 1/31/8 2/53/23 -f 3/49/9 4/62/22 29/63/29 28/50/21 -f 10/51/12 5/54/24 8/64/30 30/44/13 -f 29/63/29 4/62/22 10/36/12 27/35/11 -f 25/44/14 30/65/13 31/14/31 22/15/32 -f 16/66/17 24/67/16 18/44/20 17/16/33 -f 8/65/30 32/14/34 31/15/31 30/44/13 -f 12/57/26 13/56/25 15/39/15 14/42/18 diff --git a/technic/textures/technic_cnc_bottom.png b/technic/textures/technic_cnc_bottom.png deleted file mode 100644 index e600cb1..0000000 Binary files a/technic/textures/technic_cnc_bottom.png and /dev/null differ diff --git a/technic/textures/technic_cnc_cylinder.png b/technic/textures/technic_cnc_cylinder.png deleted file mode 100644 index 48921bd..0000000 Binary files a/technic/textures/technic_cnc_cylinder.png and /dev/null differ diff --git a/technic/textures/technic_cnc_cylinder_horizontal.png b/technic/textures/technic_cnc_cylinder_horizontal.png deleted file mode 100644 index 82eb24c..0000000 Binary files a/technic/textures/technic_cnc_cylinder_horizontal.png and /dev/null differ diff --git a/technic/textures/technic_cnc_element_cross.png b/technic/textures/technic_cnc_element_cross.png deleted file mode 100644 index cc66571..0000000 Binary files a/technic/textures/technic_cnc_element_cross.png and /dev/null differ diff --git a/technic/textures/technic_cnc_element_edge.png b/technic/textures/technic_cnc_element_edge.png deleted file mode 100644 index 1245ea7..0000000 Binary files a/technic/textures/technic_cnc_element_edge.png and /dev/null differ diff --git a/technic/textures/technic_cnc_element_end.png b/technic/textures/technic_cnc_element_end.png deleted file mode 100644 index 562eb2b..0000000 Binary files a/technic/textures/technic_cnc_element_end.png and /dev/null differ diff --git a/technic/textures/technic_cnc_element_straight.png b/technic/textures/technic_cnc_element_straight.png deleted file mode 100644 index d42966e..0000000 Binary files a/technic/textures/technic_cnc_element_straight.png and /dev/null differ diff --git a/technic/textures/technic_cnc_element_t.png b/technic/textures/technic_cnc_element_t.png deleted file mode 100644 index a462764..0000000 Binary files a/technic/textures/technic_cnc_element_t.png and /dev/null differ diff --git a/technic/textures/technic_cnc_front.png b/technic/textures/technic_cnc_front.png deleted file mode 100644 index 6cc0490..0000000 Binary files a/technic/textures/technic_cnc_front.png and /dev/null differ diff --git a/technic/textures/technic_cnc_front_active.png b/technic/textures/technic_cnc_front_active.png deleted file mode 100644 index f7a3c7f..0000000 Binary files a/technic/textures/technic_cnc_front_active.png and /dev/null differ diff --git a/technic/textures/technic_cnc_full.png b/technic/textures/technic_cnc_full.png deleted file mode 100644 index 60f8a81..0000000 Binary files a/technic/textures/technic_cnc_full.png and /dev/null differ diff --git a/technic/textures/technic_cnc_half.png b/technic/textures/technic_cnc_half.png deleted file mode 100644 index 2c4d3a8..0000000 Binary files a/technic/textures/technic_cnc_half.png and /dev/null differ diff --git a/technic/textures/technic_cnc_milling_background.png b/technic/textures/technic_cnc_milling_background.png deleted file mode 100644 index 6a9c2f4..0000000 Binary files a/technic/textures/technic_cnc_milling_background.png and /dev/null differ diff --git a/technic/textures/technic_cnc_oblate_spheroid.png b/technic/textures/technic_cnc_oblate_spheroid.png deleted file mode 100644 index b196e7d..0000000 Binary files a/technic/textures/technic_cnc_oblate_spheroid.png and /dev/null differ diff --git a/technic/textures/technic_cnc_onecurvededge.png b/technic/textures/technic_cnc_onecurvededge.png deleted file mode 100644 index 8325846..0000000 Binary files a/technic/textures/technic_cnc_onecurvededge.png and /dev/null differ diff --git a/technic/textures/technic_cnc_pyramid.png b/technic/textures/technic_cnc_pyramid.png deleted file mode 100644 index d8cc713..0000000 Binary files a/technic/textures/technic_cnc_pyramid.png and /dev/null differ diff --git a/technic/textures/technic_cnc_side.png b/technic/textures/technic_cnc_side.png deleted file mode 100644 index 1ecbbac..0000000 Binary files a/technic/textures/technic_cnc_side.png and /dev/null differ diff --git a/technic/textures/technic_cnc_slope.png b/technic/textures/technic_cnc_slope.png deleted file mode 100644 index 493d560..0000000 Binary files a/technic/textures/technic_cnc_slope.png and /dev/null differ diff --git a/technic/textures/technic_cnc_slope_edge.png b/technic/textures/technic_cnc_slope_edge.png deleted file mode 100644 index 1b601c4..0000000 Binary files a/technic/textures/technic_cnc_slope_edge.png and /dev/null differ diff --git a/technic/textures/technic_cnc_slope_edge_upsdwn.png b/technic/textures/technic_cnc_slope_edge_upsdwn.png deleted file mode 100644 index 350c22d..0000000 Binary files a/technic/textures/technic_cnc_slope_edge_upsdwn.png and /dev/null differ diff --git a/technic/textures/technic_cnc_slope_inner_edge.png b/technic/textures/technic_cnc_slope_inner_edge.png deleted file mode 100644 index 3f5ab9e..0000000 Binary files a/technic/textures/technic_cnc_slope_inner_edge.png and /dev/null differ diff --git a/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png b/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png deleted file mode 100644 index a1fee78..0000000 Binary files a/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png and /dev/null differ diff --git a/technic/textures/technic_cnc_slope_lying.png b/technic/textures/technic_cnc_slope_lying.png deleted file mode 100644 index 099ed59..0000000 Binary files a/technic/textures/technic_cnc_slope_lying.png and /dev/null differ diff --git a/technic/textures/technic_cnc_slope_upsdwn.png b/technic/textures/technic_cnc_slope_upsdwn.png deleted file mode 100644 index 2a34b8b..0000000 Binary files a/technic/textures/technic_cnc_slope_upsdwn.png and /dev/null differ diff --git a/technic/textures/technic_cnc_sphere.png b/technic/textures/technic_cnc_sphere.png deleted file mode 100644 index 791b32b..0000000 Binary files a/technic/textures/technic_cnc_sphere.png and /dev/null differ diff --git a/technic/textures/technic_cnc_spike.png b/technic/textures/technic_cnc_spike.png deleted file mode 100644 index b445b40..0000000 Binary files a/technic/textures/technic_cnc_spike.png and /dev/null differ diff --git a/technic/textures/technic_cnc_stick.png b/technic/textures/technic_cnc_stick.png deleted file mode 100644 index acaf1cb..0000000 Binary files a/technic/textures/technic_cnc_stick.png and /dev/null differ diff --git a/technic/textures/technic_cnc_top.png b/technic/textures/technic_cnc_top.png deleted file mode 100644 index 5123334..0000000 Binary files a/technic/textures/technic_cnc_top.png and /dev/null differ diff --git a/technic/textures/technic_cnc_top_active.png b/technic/textures/technic_cnc_top_active.png deleted file mode 100644 index 2bc9d81..0000000 Binary files a/technic/textures/technic_cnc_top_active.png and /dev/null differ diff --git a/technic/textures/technic_cnc_twocurvededge.png b/technic/textures/technic_cnc_twocurvededge.png deleted file mode 100644 index b50a257..0000000 Binary files a/technic/textures/technic_cnc_twocurvededge.png and /dev/null differ diff --git a/technic_cnc/cnc.lua b/technic_cnc/cnc.lua new file mode 100644 index 0000000..0e23f5a --- /dev/null +++ b/technic_cnc/cnc.lua @@ -0,0 +1,300 @@ +-- Technic CNC v1.0 by kpoppel +-- Based on the NonCubic Blocks MOD v1.4 by yves_de_beck + +-- Idea: +-- Somehow have a tabbed/paged panel if the number of shapes should expand +-- beyond what is available in the panel today. +-- I could imagine some form of API allowing modders to come with their own node +-- box definitions and easily stuff it in the this machine for production. + +local S = technic_cnc.getter + +local allow_metadata_inventory_put +local allow_metadata_inventory_take +local allow_metadata_inventory_move +local can_dig +local desc_tr = S("CNC Machine") + +if technic_cnc.use_technic then + minetest.register_craft({ + output = 'technic:cnc', + recipe = { + {'default:glass', 'technic:diamond_drill_head', 'default:glass'}, + {'technic:control_logic_unit', 'technic:machine_casing', 'basic_materials:motor'}, + {'technic:carbon_steel_ingot', 'technic:lv_cable', 'technic:carbon_steel_ingot'}, + }, + }) + + allow_metadata_inventory_put = technic.machine_inventory_put + allow_metadata_inventory_take = technic.machine_inventory_take + allow_metadata_inventory_move = technic.machine_inventory_move + can_dig = technic.machine_can_dig + desc_tr = S("%s CNC Machine"):format("LV") +else + minetest.register_craft({ + output = 'technic:cnc', + recipe = { + {'default:glass', 'default:diamond', 'default:glass'}, + {'basic_materials:ic', 'default:steelblock', 'basic_materials:motor'}, + {'default:steel_ingot', 'default:mese', 'default:steel_ingot'}, + }, + }) + + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + return stack:get_count() + end + + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + return stack:get_count() + end + + allow_metadata_inventory_move = function(pos, from_list, from_index, + to_list, to_index, count, player) + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + return stack:get_count() + end + + can_dig = function(pos, player) + if player and minetest.is_protected(pos, player:get_player_name()) then return false end + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("dst") + and inv:is_empty("src") + and default.can_interact_with_node(player, pos) + end +end + +local shape = {} +local onesize_products = { + slope = 2, + slope_edge = 1, + slope_inner_edge = 1, + pyramid = 2, + spike = 1, + cylinder = 2, + oblate_spheroid = 1, + sphere = 1, + stick = 8, + slope_upsdown = 2, + slope_edge_upsdown = 1, + slope_inner_edge_upsdown = 1, + cylinder_horizontal = 2, + slope_lying = 2, + onecurvededge = 1, + twocurvededge = 1, +} +local twosize_products = { + element_straight = 2, + element_end = 2, + element_cross = 1, + element_t = 1, + element_edge = 2, +} + +local cnc_formspec = + "size[9,11;]".. + "label[1,0;"..S("Choose Milling Program:").."]".. + "image_button[1,0.5;1,1;technic_cnc_slope.png;slope; ]".. + "image_button[2,0.5;1,1;technic_cnc_slope_edge.png;slope_edge; ]".. + "image_button[3,0.5;1,1;technic_cnc_slope_inner_edge.png;slope_inner_edge; ]".. + "image_button[4,0.5;1,1;technic_cnc_pyramid.png;pyramid; ]".. + "image_button[5,0.5;1,1;technic_cnc_spike.png;spike; ]".. + "image_button[6,0.5;1,1;technic_cnc_cylinder.png;cylinder; ]".. + "image_button[7,0.5;1,1;technic_cnc_oblate_spheroid.png;oblate_spheroid; ]".. + "image_button[8,0.5;1,1;technic_cnc_stick.png;stick; ]".. + + "image_button[1,1.5;1,1;technic_cnc_slope_upsdwn.png;slope_upsdown; ]".. + "image_button[2,1.5;1,1;technic_cnc_slope_edge_upsdwn.png;slope_edge_upsdown; ]".. + "image_button[3,1.5;1,1;technic_cnc_slope_inner_edge_upsdwn.png;slope_inner_edge_upsdown; ]".. + "image_button[4,1.5;1,1;technic_cnc_cylinder_horizontal.png;cylinder_horizontal; ]".. + "image_button[5,1.5;1,1;technic_cnc_sphere.png;sphere; ]".. + + "image_button[1,2.5;1,1;technic_cnc_slope_lying.png;slope_lying; ]".. + "image_button[2,2.5;1,1;technic_cnc_onecurvededge.png;onecurvededge; ]".. + "image_button[3,2.5;1,1;technic_cnc_twocurvededge.png;twocurvededge; ]".. + + "label[1,3.5;"..S("Slim Elements half / normal height:").."]".. + + "image_button[1,4;1,0.5;technic_cnc_full.png;full; ]".. + "image_button[1,4.5;1,0.5;technic_cnc_half.png;half; ]".. + "image_button[2,4;1,1;technic_cnc_element_straight.png;element_straight; ]".. + "image_button[3,4;1,1;technic_cnc_element_end.png;element_end; ]".. + "image_button[4,4;1,1;technic_cnc_element_cross.png;element_cross; ]".. + "image_button[5,4;1,1;technic_cnc_element_t.png;element_t; ]".. + "image_button[6,4;1,1;technic_cnc_element_edge.png;element_edge; ]".. + + "label[0, 5.5;"..S("In:").."]".. + "list[current_name;src;0.5,5.5;1,1;]".. + "label[4, 5.5;"..S("Out:").."]".. + "list[current_name;dst;5,5.5;4,1;]".. + + "list[current_player;main;0,7;8,4;]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]" + +-- The form handler is declared here because we need it in both the inactive and active modes +-- in order to be able to change programs wile it is running. +local function form_handler(pos, formname, fields, sender) + local meta = minetest.get_meta(pos) + + -- REGISTER MILLING PROGRAMS AND OUTPUTS: + ------------------------------------------ + -- Program for half/full size + if fields["full"] then + meta:set_int("size", 1) + return + end + + if fields["half"] then + meta:set_int("size", 2) + return + end + + -- Resolve the node name and the number of items to make + local inv = meta:get_inventory() + local inputstack = inv:get_stack("src", 1) + local inputname = inputstack:get_name() + local multiplier = 0 + local size = meta:get_int("size") + if size < 1 then size = 1 end + + for k, _ in pairs(fields) do + -- Set a multipier for the half/full size capable blocks + if twosize_products[k] ~= nil then + multiplier = size * twosize_products[k] + else + multiplier = onesize_products[k] + end + + if onesize_products[k] ~= nil or twosize_products[k] ~= nil then + meta:set_float( "cnc_multiplier", multiplier) + meta:set_string("cnc_user", sender:get_player_name()) + end + + if onesize_products[k] ~= nil or (twosize_products[k] ~= nil and size==2) then + meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k) + --print(inputname .. "_technic_cnc_" .. k) + break + end + + if twosize_products[k] ~= nil and size==1 then + meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k .. "_double") + --print(inputname .. "_technic_cnc_" .. k .. "_double") + break + end + end + + if not technic_cnc.use_technic then + local result = meta:get_string("cnc_product") + + if not inv:is_empty("src") + and minetest.registered_nodes[result] + and inv:room_for_item("dst", result) then + local srcstack = inv:get_stack("src", 1) + srcstack:take_item() + inv:set_stack("src", 1, srcstack) + inv:add_item("dst", result.." "..meta:get_int("cnc_multiplier")) + end + end +end + +-- Action code performing the transformation +local run = function(pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local eu_input = meta:get_int("LV_EU_input") + local machine_name = desc_tr + local machine_node = "technic:cnc" + local demand = 450 + + local result = meta:get_string("cnc_product") + if inv:is_empty("src") or + (not minetest.registered_nodes[result]) or + (not inv:room_for_item("dst", result)) then + technic.swap_node(pos, machine_node) + meta:set_string("infotext", S("%s Idle"):format(machine_name)) + meta:set_string("cnc_product", "") + meta:set_int("LV_EU_demand", 0) + return + end + + if eu_input < demand then + technic.swap_node(pos, machine_node) + meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) + elseif eu_input >= demand then + technic.swap_node(pos, machine_node.."_active") + meta:set_string("infotext", S("%s Active"):format(machine_name)) + meta:set_int("src_time", meta:get_int("src_time") + 1) + if meta:get_int("src_time") >= 3 then -- 3 ticks per output + meta:set_int("src_time", 0) + srcstack = inv:get_stack("src", 1) + srcstack:take_item() + inv:set_stack("src", 1, srcstack) + inv:add_item("dst", result.." "..meta:get_int("cnc_multiplier")) + end + end + meta:set_int("LV_EU_demand", demand) +end + +-- The actual block inactive state +minetest.register_node(":technic:cnc", { + description = desc_tr, + tiles = {"technic_cnc_top.png", "technic_cnc_bottom.png", "technic_cnc_side.png", + "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front.png"}, + groups = {cracky=2, technic_machine=1, technic_lv=1}, + connect_sides = {"bottom", "back", "left", "right"}, + paramtype2 = "facedir", + legacy_facedir_simple = true, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", desc_tr) + meta:set_float("technic_power_machine", 1) + meta:set_string("formspec", cnc_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("dst", 4) + end, + can_dig = can_dig, + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_take = allow_metadata_inventory_take, + allow_metadata_inventory_move = allow_metadata_inventory_move, + on_receive_fields = form_handler, + technic_run = technic_cnc.use_technic and run, +}) + +-- Active state block +if technic_cnc.use_technic then + + minetest.register_node(":technic:cnc_active", { + description = desc_tr, + tiles = {"technic_cnc_top_active.png", "technic_cnc_bottom.png", "technic_cnc_side.png", + "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front_active.png"}, + groups = {cracky=2, technic_machine=1, technic_lv=1, not_in_creative_inventory=1}, + connect_sides = {"bottom", "back", "left", "right"}, + paramtype2 = "facedir", + drop = "technic:cnc", + legacy_facedir_simple = true, + can_dig = can_dig, + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_take = allow_metadata_inventory_take, + allow_metadata_inventory_move = allow_metadata_inventory_move, + on_receive_fields = form_handler, + technic_run = run, + technic_disabled_machine_name = "technic:cnc", + }) + + technic.register_machine("LV", "technic:cnc", technic.receiver) + technic.register_machine("LV", "technic:cnc_active", technic.receiver) +else + minetest.register_alias("technic:cnc_active", "technic:cnc") +end diff --git a/technic_cnc/cnc_api.lua b/technic_cnc/cnc_api.lua new file mode 100644 index 0000000..c33ef49 --- /dev/null +++ b/technic_cnc/cnc_api.lua @@ -0,0 +1,367 @@ +-- API for the technic CNC machine +-- Again code is adapted from the NonCubic Blocks MOD v1.4 by yves_de_beck + +local S = technic_cnc.getter + +-- REGISTER NONCUBIC FORMS, CREATE MODELS AND RECIPES: +------------------------------------------------------ + +-- Define slope boxes for the various nodes +------------------------------------------- +technic_cnc.programs = { + { 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", + model = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.5}, + desc = S("Element End 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", + 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", + 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", + model = {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, + desc = S("Element Straight Double") + }, + + { 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", + 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", + 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", + 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", + model = {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, + desc = S("Element Straight") + }, + + { suffix = "technic_cnc_oblate_spheroid", + model = "technic_cnc_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_sphere", + model = "technic_cnc_sphere.obj", + desc = S("Sphere") + }, + + { suffix = "technic_cnc_cylinder_horizontal", + model = "technic_cnc_cylinder_horizontal.obj", + desc = S("Horizontal Cylinder") + }, + + { suffix = "technic_cnc_cylinder", + model = "technic_cnc_cylinder.obj", + desc = S("Cylinder") + }, + + { suffix = "technic_cnc_twocurvededge", + model = "technic_cnc_two_curved_edge.obj", + desc = S("Two Curved Edge/Corner Block") + }, + + { suffix = "technic_cnc_onecurvededge", + model = "technic_cnc_one_curved_edge.obj", + desc = S("One Curved Edge Block") + }, + + { suffix = "technic_cnc_spike", + model = "technic_cnc_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_pyramid", + model = "technic_cnc_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_inner_edge_upsdown", + model = "technic_cnc_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_edge_upsdown", + model = "technic_cnc_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_inner_edge", + model = "technic_cnc_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_edge", + model = "technic_cnc_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_upsdown", + model = "technic_cnc_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_lying", + model = "technic_cnc_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_cnc_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_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, 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 = dtype, + node_box = nodeboxdef, + mesh = meshdef, + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + groups = groups, + selection_box = sbox, + collision_box = cbox + }) +end + +-- function to iterate over all the programs the CNC machine knows +function technic_cnc.register_all(recipeitem, groups, images, description) + for _, data in ipairs(technic_cnc.programs) do + -- Disable node creation for disabled node types for some material + local do_register = true + if technic_cnc.programs_disable[recipeitem] ~= nil then + for __, disable in ipairs(technic_cnc.programs_disable[recipeitem]) do + if disable == data.suffix then + do_register = false + end + end + end + -- Create the node if it passes the test + if do_register then + technic_cnc.register_program(recipeitem, data.suffix, data.model, + groups, images, description.." "..data.desc, data.cbox, data.sbox) + end + end +end + + +-- 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_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) + technic_cnc.register_slope_upsdown(recipeitem, groups, images, desc_slope_upsdown) + technic_cnc.register_slope_edge(recipeitem, groups, images, desc_slope_edge) + technic_cnc.register_slope_inner_edge(recipeitem, groups, images, desc_slope_inner_edge) + technic_cnc.register_slope_edge_upsdown(recipeitem, groups, images, desc_slope_upsdwn_edge) + technic_cnc.register_slope_inner_edge_upsdown(recipeitem, groups, images, desc_slope_upsdwn_inner_edge) + technic_cnc.register_pyramid(recipeitem, groups, images, desc_pyramid) + technic_cnc.register_spike(recipeitem, groups, images, desc_spike) + technic_cnc.register_onecurvededge(recipeitem, groups, images, desc_onecurvededge) + 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_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) + technic_cnc.register_element_cross(recipeitem, groups, images, desc_element_cross) + technic_cnc.register_element_end(recipeitem, groups, images, desc_element_end) +end + +-- REGISTER STICKS: noncubic.register_xyz(recipeitem, groups, images, desc_element_xyz) +------------------------------------------------------------------------------------------------------------ +function technic_cnc.register_stick_etc(recipeitem, groups, images, desc_stick) + technic_cnc.register_stick(recipeitem, groups, images, desc_stick) +end + +function technic_cnc.register_elements(recipeitem, groups, images, desc_element_straight_double, desc_element_edge_double, desc_element_t_double, desc_element_cross_double, desc_element_end_double) + technic_cnc.register_element_straight_double(recipeitem, groups, images, desc_element_straight_double) + technic_cnc.register_element_edge_double(recipeitem, groups, images, desc_element_edge_double) + technic_cnc.register_element_t_double(recipeitem, groups, images, desc_element_t_double) + technic_cnc.register_element_cross_double(recipeitem, groups, images, desc_element_cross_double) + technic_cnc.register_element_end_double(recipeitem, groups, images, desc_element_end_double) +end + diff --git a/technic_cnc/cnc_materials.lua b/technic_cnc/cnc_materials.lua new file mode 100644 index 0000000..e63c792 --- /dev/null +++ b/technic_cnc/cnc_materials.lua @@ -0,0 +1,131 @@ +-- REGISTER MATERIALS AND PROPERTIES FOR NONCUBIC ELEMENTS: +----------------------------------------------------------- + +local S = technic_cnc.getter + +-- DIRT +------- +technic_cnc.register_all("default:dirt", + {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, + {"default_dirt.png"}, + S("Dirt")) +-- (DIRT WITH) GRASS +-------------------- +technic_cnc.register_all("default:dirt_with_grass", + {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, + {"default_grass.png"}, + S("Grassy dirt")) +-- WOOD +------- +technic_cnc.register_all("default:wood", + {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1}, + {"default_wood.png"}, + S("Wooden")) +-- STONE +-------- +technic_cnc.register_all("default:stone", + {cracky=3, not_in_creative_inventory=1}, + {"default_stone.png"}, + S("Stone")) +-- COBBLE +--------- +technic_cnc.register_all("default:cobble", + {cracky=3, not_in_creative_inventory=1}, + {"default_cobble.png"}, + S("Cobble")) +-- BRICK +-------- +technic_cnc.register_all("default:brick", + {cracky=3, not_in_creative_inventory=1}, + {"default_brick.png"}, + S("Brick")) + +-- SANDSTONE +------------ +technic_cnc.register_all("default:sandstone", + {crumbly=2, cracky=3, not_in_creative_inventory=1}, + {"default_sandstone.png"}, + S("Sandstone")) + +-- LEAVES +--------- +technic_cnc.register_all("default:leaves", + {snappy=2, choppy=2, oddly_breakable_by_hand=3, not_in_creative_inventory=1}, + {"default_leaves.png"}, + S("Leaves")) +-- TREE +------- +technic_cnc.register_all("default:tree", + {snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, wood=1, not_in_creative_inventory=1}, + {"default_tree.png"}, + S("Tree")) + +-- Bronze +-------- +technic_cnc.register_all("default:bronzeblock", + {cracky=1, level=2, not_in_creative_inventory=1}, + {"default_bronze_block.png"}, + S("Bronze")) + + +local steeltex = "default_steel_block.png" +local steelname = "Steel" + +if technic_cnc.technic_modpath then + steeltex = "technic_wrought_iron_block.png" + steelname = "Wrought Iron" + + -- Stainless Steel + -------- + technic_cnc.register_all("technic:stainless_steel_block", + {cracky=1, level=2, not_in_creative_inventory=1}, + {"technic_stainless_steel_block.png"}, + S("Stainless Steel")) + + -- Marble + ------------ + technic_cnc.register_all("technic:marble", + {cracky=3, not_in_creative_inventory=1}, + {"technic_marble.png"}, + S("Marble")) + + -- Granite + ------------ + technic_cnc.register_all("technic:granite", + {cracky=1, not_in_creative_inventory=1}, + {"technic_granite.png"}, + S("Granite")) + + -- Blast-resistant concrete + --------------------------- + + technic_cnc.register_all("technic:blast_resistant_concrete", + {cracky=2, level=2, not_in_creative_inventory=1}, + {"technic_blast_resistant_concrete_block.png"}, + S("Blast-resistant concrete")) +end + +-- STEEL +--------------- +technic_cnc.register_all("default:steelblock", + {cracky=1, level=2, not_in_creative_inventory=1}, + {steeltex}, + S(steelname)) + +-- CONCRETE AND CEMENT +---------------------- + +technic_cnc.register_all("basic_materials:concrete_block", + {cracky=2, level=2, not_in_creative_inventory=1}, + {"basic_materials_concrete_block.png"}, + S("Concrete")) + +technic_cnc.register_all("basic_materials:cement_block", + {cracky=2, level=2, not_in_creative_inventory=1}, + {"basic_materials_cement_block.png"}, + S("Cement")) + +technic_cnc.register_all("basic_materials:brass_block", + {cracky=1, level=2, not_in_creative_inventory=1}, + {"basic_materials_brass_block.png"}, + S("Brass block")) diff --git a/technic_cnc/depends.txt b/technic_cnc/depends.txt new file mode 100644 index 0000000..bdaa161 --- /dev/null +++ b/technic_cnc/depends.txt @@ -0,0 +1,3 @@ +default +basic_materials +technic? diff --git a/technic_cnc/init.lua b/technic_cnc/init.lua new file mode 100644 index 0000000..3c4da3e --- /dev/null +++ b/technic_cnc/init.lua @@ -0,0 +1,18 @@ +local modpath = minetest.get_modpath("technic_cnc") + +technic_cnc = {} + +technic_cnc.technic_modpath = minetest.get_modpath("technic") + +technic_cnc.use_technic = technic_cnc.technic_modpath + and minetest.settings:get_bool("technic_cnc_use_technic") ~= false + +if rawget(_G, "intllib") then + technic_cnc.getter = intllib.Getter() +else + technic_cnc.getter = function(s,a,...)if a==nil then return s end a={a,...}return s:gsub("(@?)@(%(?)(%d+)(%)?)",function(e,o,n,c)if e==""then return a[tonumber(n)]..(o==""and c or"")else return"@"..o..n..c end end) end +end + +dofile(modpath.."/cnc.lua") +dofile(modpath.."/cnc_api.lua") +dofile(modpath.."/cnc_materials.lua") diff --git a/technic_cnc/locale/de.txt b/technic_cnc/locale/de.txt new file mode 100644 index 0000000..8b4e5ff --- /dev/null +++ b/technic_cnc/locale/de.txt @@ -0,0 +1,36 @@ +## CNC +CNC Machine = CNC-Maschine +%s CNC Machine = %s CNC-Maschine +Cylinder = Zylinder +Element Cross = Halbes Kreuzelement +Element Cross Double = Kreuzelement +Element Edge = Halbes Eckelement +Element Edge Double = Eckelement +Element End = Halbes Endelement +Element End Double = Endelement +Element Straight = Halbes aufrechtes Element +Element Straight Double = Aufrechtes Element +Element T = Halbes T-Element +Element T Double = T-Element +Horizontal Cylinder = Liegender Zylinder +One Curved Edge Block = Block mit einer abgerundeten Kante +Pyramid = Pyramide +Slope = Schraege +Slope Edge = Schraege mit Ecke +Slope Inner Edge = Schraege mit Innenecke +Slope Lying = Liegende Schraege +Slope Upside Down = Umgedrehte Schraege +Slope Upside Down Edge = Umgedrehte Schraege mit Ecke +Slope Upside Down Inner Edge = Umgedrehte Schraege mit Innenecke +Sphere = Kugel +Spike = Spitze +Stick = Stange +Two Curved Edge Block = Block mit zwei abgerundeten Kanten +Brick = Ziegel: +Cobble = Pflasterstein: +Dirt = Erde: +Leaves = Laub: +Sandstone = Sandstein: +Stone = Stein: +Tree = Baumstamm: +Wooden = Holz: diff --git a/technic_cnc/locale/es.txt b/technic_cnc/locale/es.txt new file mode 100644 index 0000000..f18fdfa --- /dev/null +++ b/technic_cnc/locale/es.txt @@ -0,0 +1,35 @@ +## CNC +CNC Machine = Maquina CNC +%s CNC Machine = Maquina CNC %s +Element Edge = Elemento Borde +Tree = Arbol +Element Cross Double = Elemento Cruz Doble +Spike = Pica +Element Edge Double = Elemento Borde Doble +Two Curved Edge Block = Dos Bloques de Borde Curvados +Pyramid = Piramide +Slope Upside Down Inner Edge = Borde Interno de Rampa Al Reves +Slope Upside Down Edge = Borde de Rampa Al Reves +Element Straight Double = Elemento Doble Recto +Sphere = Esfera +Element End Double = Doble Fin de Elemento +Element Straight = Recta de Elemento +Horizontal Cylinder = Cilindro Horizontal +Slope Inner Edge = Borde Interno de Rampa +One Curved Edge Block = Un Bloque de Borde Curvado +Element Cross = Cruce de Elementos +Stick = Varita +Element End = Fin de Elemento +Slope Lying = Rampa en Reposo +Slope Upside Down = Rampa Al Reves +Slope Edge = Borde de Rampa +Slope = Rampa +Element T = Elemento T +Cylinder = Cilindro +Cobble = Adoquines +Stone = Piedra +Brick = Ladrillo +Dirt = Tierra +Sandstone = Arenisca +Wooden = Madera +Leaves = Hojas diff --git a/technic_cnc/locale/it.txt b/technic_cnc/locale/it.txt new file mode 100644 index 0000000..e50fd74 --- /dev/null +++ b/technic_cnc/locale/it.txt @@ -0,0 +1,36 @@ +## CNC +CNC Machine = Tornio CNC +%s CNC Machine = Tornio CNC %s +Cylinder = Cilindro +Element Cross = Elemento a croce +Element Cross Double = Elemento a croce doppio +Element Edge = Elemento bordo +Element Edge Double = Elemento bordo doppio +Element End = Elemento finale +Element End Double = Elemento finale doppio +Element Straight = Elemento dritto +Element Straight Double = Elemento dritto doppio +Element T = Elemento a T +Element T Double = Elemento a T doppio +Horizontal Cylinder = Cilindro orizzontale +One Curved Edge Block = Blocco con bordo curvo +Pyramid = Piramide +Slope = Inclinato +Slope Edge = Bordo inclinato +Slope Inner Edge = Bordo interno inclinato +Slope Lying = Pendenza bugiarda +Slope Upside Down = Pendenza capovolta +Slope Upside Down Edge = Bordo inclinato capovolto +Slope Upside Down Inner Edge = Bordo interno inclinato capovolto +Sphere = Sfera +Spike = Spuntone +Stick = Bastone +Two Curved Edge Block = Blocco con bordo a doppia curva +Brick = Mattone +Cobble = Ciottolato +Dirt = Terra +Leaves = Foglie +Sandstone = Arenaria +Stone = Pietra +Tree = Albero +Wooden = Legno diff --git a/technic_cnc/locale/template.txt b/technic_cnc/locale/template.txt new file mode 100644 index 0000000..bf3cb08 --- /dev/null +++ b/technic_cnc/locale/template.txt @@ -0,0 +1,36 @@ +## CNC +CNC Machine = +%s CNC Machine = +Cylinder = +Element Cross = +Element Cross Double = +Element Edge = +Element Edge Double = +Element End = +Element End Double = +Element Straight = +Element Straight Double = +Element T = +Element T Double = +Horizontal Cylinder = +One Curved Edge Block = +Pyramid = +Slope = +Slope Edge = +Slope Inner Edge = +Slope Lying = +Slope Upside Down = +Slope Upside Down Edge = +Slope Upside Down Inner Edge = +Sphere = +Spike = +Stick = +Two Curved Edge Block = +Brick = +Cobble = +Dirt = +Leaves = +Sandstone = +Stone = +Tree = +Wooden = diff --git a/technic_cnc/models/technic_cnc_cylinder.obj b/technic_cnc/models/technic_cnc_cylinder.obj new file mode 100644 index 0000000..2622347 --- /dev/null +++ b/technic_cnc/models/technic_cnc_cylinder.obj @@ -0,0 +1,238 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_cylinder_onetexture.blend' +# www.blender.org +o Cylinder_Cylinder.001 +v 0.000000 -0.500000 -0.500000 +v 0.000000 0.500000 -0.500000 +v 0.097545 -0.500000 -0.490393 +v 0.097545 0.500000 -0.490393 +v 0.191342 -0.500000 -0.461940 +v 0.191342 0.500000 -0.461940 +v 0.277785 -0.500000 -0.415735 +v 0.277785 0.500000 -0.415735 +v 0.353553 -0.500000 -0.353554 +v 0.353553 0.500000 -0.353554 +v 0.415735 -0.500000 -0.277785 +v 0.415735 0.500000 -0.277785 +v 0.461940 -0.500000 -0.191342 +v 0.461940 0.500000 -0.191342 +v 0.490393 -0.500000 -0.097545 +v 0.490393 0.500000 -0.097545 +v 0.500000 -0.500000 -0.000000 +v 0.500000 0.500000 -0.000000 +v 0.490393 -0.500000 0.097545 +v 0.490393 0.500000 0.097545 +v 0.461940 -0.500000 0.191341 +v 0.461940 0.500000 0.191341 +v 0.415735 -0.500000 0.277785 +v 0.415735 0.500000 0.277785 +v 0.353553 -0.500000 0.353553 +v 0.353553 0.500000 0.353553 +v 0.277785 -0.500000 0.415735 +v 0.277785 0.500000 0.415735 +v 0.191342 -0.500000 0.461940 +v 0.191342 0.500000 0.461940 +v 0.097545 -0.500000 0.490392 +v 0.097545 0.500000 0.490392 +v -0.000000 -0.500000 0.500000 +v -0.000000 0.500000 0.500000 +v -0.097545 -0.500000 0.490392 +v -0.097545 0.500000 0.490392 +v -0.191342 -0.500000 0.461939 +v -0.191342 0.500000 0.461939 +v -0.277785 -0.500000 0.415734 +v -0.277785 0.500000 0.415734 +v -0.353554 -0.500000 0.353553 +v -0.353554 0.500000 0.353553 +v -0.415735 -0.500000 0.277785 +v -0.415735 0.500000 0.277785 +v -0.461940 -0.500000 0.191341 +v -0.461940 0.500000 0.191341 +v -0.490393 -0.500000 0.097545 +v -0.490393 0.500000 0.097545 +v -0.500000 -0.500000 -0.000001 +v -0.500000 0.500000 -0.000001 +v -0.490393 -0.500000 -0.097546 +v -0.490393 0.500000 -0.097546 +v -0.461940 -0.500000 -0.191342 +v -0.461940 0.500000 -0.191342 +v -0.415734 -0.500000 -0.277786 +v -0.415734 0.500000 -0.277786 +v -0.353553 -0.500000 -0.353554 +v -0.353553 0.500000 -0.353554 +v -0.277785 -0.500000 -0.415735 +v -0.277785 0.500000 -0.415735 +v -0.191341 -0.500000 -0.461940 +v -0.191341 0.500000 -0.461940 +v -0.097544 -0.500000 -0.490393 +v -0.097544 0.500000 -0.490393 +vt 0.499996 0.999997 +vt 0.499995 0.000005 +vt 0.562495 0.000004 +vt 0.562496 0.999997 +vt 0.624995 0.000003 +vt 0.624997 0.999997 +vt 0.687496 0.000002 +vt 0.687497 0.999998 +vt 0.749997 0.000001 +vt 0.749997 0.999998 +vt 0.812497 0.000001 +vt 0.812497 0.999998 +vt 0.874997 -0.000000 +vt 0.874997 0.999998 +vt 0.937498 -0.000000 +vt 0.937498 0.999998 +vt 0.999998 -0.000000 +vt 0.999998 0.999998 +vt 0.000005 0.999997 +vt 0.000001 0.000024 +vt 0.062500 0.000023 +vt 0.062505 0.999996 +vt 0.124999 0.000021 +vt 0.125004 0.999996 +vt 0.187498 0.000020 +vt 0.187503 0.999995 +vt 0.249997 0.000018 +vt 0.250003 0.999994 +vt 0.312497 0.000017 +vt 0.312502 0.999994 +vt 0.374997 0.000015 +vt 0.375002 0.999993 +vt 0.437496 0.000014 +vt 0.437501 0.999993 +vt 0.402487 0.009601 +vt 0.597576 0.009614 +vt 0.691371 0.038072 +vt 0.777811 0.084282 +vt 0.853576 0.146469 +vt 0.915753 0.222242 +vt 0.961953 0.308689 +vt 0.990399 0.402487 +vt 1.000000 0.500033 +vt 0.990386 0.597577 +vt 0.961928 0.691370 +vt 0.915717 0.777811 +vt 0.853531 0.853575 +vt 0.777758 0.915753 +vt 0.691312 0.961952 +vt 0.597514 0.990398 +vt 0.402424 0.990386 +vt 0.308630 0.961928 +vt 0.222188 0.915717 +vt 0.146424 0.853531 +vt 0.084248 0.777759 +vt 0.038049 0.691313 +vt 0.009602 0.597515 +vt 0.000000 0.499970 +vt 0.009614 0.402425 +vt 0.038073 0.308630 +vt 0.084283 0.222189 +vt 0.146470 0.146424 +vt 0.222243 0.084248 +vt 0.308689 0.038048 +vt 0.499927 0.999999 +vt 0.084226 0.777725 +vt 0.000000 0.499927 +vt 0.222277 0.084224 +vt 0.500074 0.000000 +vt 0.915777 0.222279 +vt 1.000000 0.500077 +vt 0.777724 0.915775 +vn 0.000000 -0.685700 -0.727900 +vn 0.000000 0.685700 -0.727900 +vn 0.142000 0.685700 -0.713900 +vn 0.142000 -0.685700 -0.713900 +vn 0.278500 0.685700 -0.672500 +vn 0.278500 -0.685700 -0.672500 +vn 0.404400 0.685700 -0.605200 +vn 0.404400 -0.685700 -0.605200 +vn 0.514700 0.685700 -0.514700 +vn 0.514700 -0.685700 -0.514700 +vn 0.605200 0.685700 -0.404400 +vn 0.605200 -0.685700 -0.404400 +vn 0.672500 0.685700 -0.278500 +vn 0.672500 -0.685700 -0.278500 +vn 0.713900 0.685700 -0.142000 +vn 0.713900 -0.685700 -0.142000 +vn 0.727900 0.685700 0.000000 +vn 0.727900 -0.685700 0.000000 +vn 0.713900 0.685700 0.142000 +vn 0.713900 -0.685700 0.142000 +vn 0.672500 0.685700 0.278500 +vn 0.672500 -0.685700 0.278500 +vn 0.605200 0.685700 0.404400 +vn 0.605200 -0.685700 0.404400 +vn 0.514700 0.685700 0.514700 +vn 0.514700 -0.685700 0.514700 +vn 0.404400 0.685700 0.605200 +vn 0.404400 -0.685700 0.605200 +vn 0.278500 0.685700 0.672500 +vn 0.278500 -0.685700 0.672500 +vn 0.142000 0.685700 0.713900 +vn 0.142000 -0.685700 0.713900 +vn 0.000000 0.685700 0.727900 +vn 0.000000 -0.685700 0.727900 +vn -0.142000 0.685700 0.713900 +vn -0.142000 -0.685700 0.713900 +vn -0.278500 0.685700 0.672500 +vn -0.278500 -0.685700 0.672500 +vn -0.404400 0.685700 0.605200 +vn -0.404400 -0.685700 0.605200 +vn -0.514700 0.685700 0.514700 +vn -0.514700 -0.685700 0.514700 +vn -0.605200 0.685700 0.404400 +vn -0.605200 -0.685700 0.404400 +vn -0.672500 0.685700 0.278500 +vn -0.672500 -0.685700 0.278500 +vn -0.713900 0.685700 0.142000 +vn -0.713900 -0.685700 0.142000 +vn -0.727900 0.685700 0.000000 +vn -0.727900 -0.685700 0.000000 +vn -0.713900 0.685700 -0.142000 +vn -0.713900 -0.685700 -0.142000 +vn -0.672500 0.685700 -0.278500 +vn -0.672500 -0.685700 -0.278500 +vn -0.605200 0.685700 -0.404400 +vn -0.605200 -0.685700 -0.404400 +vn -0.514700 0.685700 -0.514700 +vn -0.514700 -0.685700 -0.514700 +vn -0.404400 0.685700 -0.605200 +vn -0.404400 -0.685700 -0.605200 +vn -0.278500 0.685700 -0.672500 +vn -0.278500 -0.685700 -0.672500 +vn -0.142000 0.685700 -0.713900 +vn -0.142000 -0.685700 -0.713900 +s 1 +f 1/1/1 2/2/2 4/3/3 3/4/4 +f 3/4/4 4/3/3 6/5/5 5/6/6 +f 5/6/6 6/5/5 8/7/7 7/8/8 +f 7/8/8 8/7/7 10/9/9 9/10/10 +f 9/10/10 10/9/9 12/11/11 11/12/12 +f 11/12/12 12/11/11 14/13/13 13/14/14 +f 13/14/14 14/13/13 16/15/15 15/16/16 +f 15/16/16 16/15/15 18/17/17 17/18/18 +f 17/19/18 18/20/17 20/21/19 19/22/20 +f 19/22/20 20/21/19 22/23/21 21/24/22 +f 21/24/22 22/23/21 24/25/23 23/26/24 +f 23/26/24 24/25/23 26/27/25 25/28/26 +f 25/28/26 26/27/25 28/29/27 27/30/28 +f 27/30/28 28/29/27 30/31/29 29/32/30 +f 29/32/30 30/31/29 32/33/31 31/34/32 +f 31/34/32 32/33/31 34/2/33 33/1/34 +f 33/1/34 34/2/33 36/3/35 35/4/36 +f 35/4/36 36/3/35 38/5/37 37/6/38 +f 37/6/38 38/5/37 40/7/39 39/8/40 +f 39/8/40 40/7/39 42/9/41 41/10/42 +f 41/10/42 42/9/41 44/11/43 43/12/44 +f 43/12/44 44/11/43 46/13/45 45/14/46 +f 45/14/46 46/13/45 48/15/47 47/16/48 +f 47/16/48 48/15/47 50/17/49 49/18/50 +f 49/19/50 50/20/49 52/21/51 51/22/52 +f 51/22/52 52/21/51 54/23/53 53/24/54 +f 53/24/54 54/23/53 56/25/55 55/26/56 +f 55/26/56 56/25/55 58/27/57 57/28/58 +f 57/28/58 58/27/57 60/29/59 59/30/60 +f 59/30/60 60/29/59 62/31/61 61/32/62 +f 4/35/3 2/2/2 64/36/63 62/37/61 60/38/59 58/39/57 56/40/55 54/41/53 52/42/51 50/43/49 48/44/47 46/45/45 44/46/43 42/47/41 40/48/39 38/49/37 36/50/35 34/1/33 32/51/31 30/52/29 28/53/27 26/54/25 24/55/23 22/56/21 20/57/19 18/58/17 16/59/15 14/60/13 12/61/11 10/62/9 8/63/7 6/64/5 +f 63/34/64 64/33/63 2/2/2 1/1/1 +f 61/32/62 62/31/61 64/33/63 63/34/64 +f 1/65/1 3/51/4 5/52/6 7/53/8 9/54/10 11/66/12 13/56/14 15/57/16 17/67/18 19/59/20 21/60/22 23/61/24 25/62/26 27/68/28 29/64/30 31/35/32 33/69/34 35/36/36 37/37/38 39/38/40 41/39/42 43/70/44 45/41/46 47/42/48 49/71/50 51/44/52 53/45/54 55/46/56 57/47/58 59/72/60 61/49/62 63/50/64 diff --git a/technic_cnc/models/technic_cnc_cylinder_horizontal.obj b/technic_cnc/models/technic_cnc_cylinder_horizontal.obj new file mode 100644 index 0000000..d00b1d6 --- /dev/null +++ b/technic_cnc/models/technic_cnc_cylinder_horizontal.obj @@ -0,0 +1,238 @@ +# Blender v2.73 (sub 0) OBJ File: 'technic-cylinder-horizontal.blend' +# www.blender.org +o Cylinder_Cylinder.001 +v 0.500000 0.000000 -0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.097545 -0.490393 +v -0.500000 0.097545 -0.490393 +v 0.500000 0.191342 -0.461940 +v -0.500000 0.191342 -0.461940 +v 0.500000 0.277785 -0.415735 +v -0.500000 0.277785 -0.415735 +v 0.500000 0.353553 -0.353553 +v -0.500000 0.353553 -0.353554 +v 0.500000 0.415735 -0.277785 +v -0.500000 0.415735 -0.277785 +v 0.500000 0.461940 -0.191342 +v -0.500000 0.461940 -0.191342 +v 0.500000 0.490393 -0.097545 +v -0.500000 0.490393 -0.097545 +v 0.500000 0.500000 -0.000000 +v -0.500000 0.500000 -0.000000 +v 0.500000 0.490393 0.097545 +v -0.500000 0.490393 0.097545 +v 0.500000 0.461940 0.191342 +v -0.500000 0.461940 0.191341 +v 0.500000 0.415735 0.277785 +v -0.500000 0.415735 0.277785 +v 0.500000 0.353553 0.353553 +v -0.500000 0.353553 0.353553 +v 0.500000 0.277785 0.415735 +v -0.500000 0.277785 0.415735 +v 0.500000 0.191342 0.461940 +v -0.500000 0.191342 0.461940 +v 0.500000 0.097545 0.490393 +v -0.500000 0.097545 0.490392 +v 0.500000 -0.000000 0.500000 +v -0.500000 -0.000000 0.500000 +v 0.500000 -0.097546 0.490392 +v -0.500000 -0.097545 0.490392 +v 0.500000 -0.191342 0.461940 +v -0.500000 -0.191342 0.461939 +v 0.500000 -0.277785 0.415734 +v -0.500000 -0.277785 0.415734 +v 0.500000 -0.353554 0.353553 +v -0.500000 -0.353554 0.353553 +v 0.500000 -0.415735 0.277785 +v -0.500000 -0.415735 0.277785 +v 0.500000 -0.461940 0.191341 +v -0.500000 -0.461940 0.191341 +v 0.500000 -0.490393 0.097545 +v -0.500000 -0.490393 0.097544 +v 0.500000 -0.500000 -0.000001 +v -0.500000 -0.500000 -0.000001 +v 0.500000 -0.490393 -0.097546 +v -0.500000 -0.490393 -0.097546 +v 0.500000 -0.461940 -0.191342 +v -0.500000 -0.461940 -0.191343 +v 0.500000 -0.415734 -0.277786 +v -0.500000 -0.415734 -0.277786 +v 0.500000 -0.353553 -0.353554 +v -0.500000 -0.353553 -0.353554 +v 0.500000 -0.277785 -0.415735 +v -0.500000 -0.277784 -0.415735 +v 0.500000 -0.191341 -0.461940 +v -0.500000 -0.191341 -0.461940 +v 0.500000 -0.097544 -0.490393 +v -0.500000 -0.097544 -0.490393 +vt 0.000003 0.499996 +vt 0.999995 0.499995 +vt 0.999996 0.562495 +vt 0.000002 0.562496 +vt 0.999997 0.624995 +vt 0.000003 0.624996 +vt 0.999998 0.687496 +vt 0.000002 0.687496 +vt 0.999999 0.749997 +vt 0.000002 0.749996 +vt 0.999999 0.812497 +vt 0.000002 0.812497 +vt 1.000000 0.874997 +vt 0.000001 0.874997 +vt 1.000000 0.937498 +vt 0.000001 0.937497 +vt 1.000000 0.999998 +vt 0.000001 0.999998 +vt 0.000003 0.000005 +vt 0.999976 0.000001 +vt 0.999977 0.062500 +vt 0.000003 0.062505 +vt 0.999978 0.124999 +vt 0.000004 0.125004 +vt 0.999980 0.187498 +vt 0.000005 0.187503 +vt 0.999982 0.249997 +vt 0.000005 0.250003 +vt 0.999983 0.312497 +vt 0.000006 0.312502 +vt 0.999985 0.374997 +vt 0.000007 0.375001 +vt 0.999986 0.437496 +vt 0.000007 0.437501 +vt 0.009601 0.597512 +vt 0.009614 0.402424 +vt 0.038072 0.308628 +vt 0.084283 0.222189 +vt 0.146469 0.146424 +vt 0.222242 0.084247 +vt 0.308689 0.038047 +vt 0.402487 0.009601 +vt 0.500033 -0.000000 +vt 0.597577 0.009613 +vt 0.691371 0.038072 +vt 0.777811 0.084283 +vt 0.853575 0.146469 +vt 0.915753 0.222242 +vt 0.961952 0.308688 +vt 0.990398 0.402486 +vt 0.990386 0.597576 +vt 0.961928 0.691370 +vt 0.915717 0.777812 +vt 0.853531 0.853576 +vt 0.777759 0.915752 +vt 0.691313 0.961951 +vt 0.597515 0.990398 +vt 0.499970 1.000000 +vt 0.402425 0.990386 +vt 0.308630 0.961927 +vt 0.222189 0.915717 +vt 0.146424 0.853530 +vt 0.084248 0.777757 +vt 0.038048 0.691311 +vt 0.999999 0.500073 +vt 0.777724 0.915774 +vt 0.499927 0.999999 +vt 0.084224 0.777723 +vt 0.000000 0.499925 +vt 0.222279 0.084223 +vt 0.500078 -0.000000 +vt 0.915775 0.222276 +vn 0.685700 0.000000 -0.727900 +vn -0.685700 0.000000 -0.727900 +vn -0.685700 0.142000 -0.713900 +vn 0.685700 0.142000 -0.713900 +vn -0.685700 0.278500 -0.672500 +vn 0.685700 0.278500 -0.672500 +vn -0.685700 0.404400 -0.605200 +vn 0.685700 0.404400 -0.605200 +vn -0.685700 0.514700 -0.514700 +vn 0.685700 0.514700 -0.514700 +vn -0.685700 0.605200 -0.404400 +vn 0.685700 0.605200 -0.404400 +vn -0.685700 0.672500 -0.278500 +vn 0.685700 0.672500 -0.278500 +vn -0.685700 0.713900 -0.142000 +vn 0.685700 0.713900 -0.142000 +vn -0.685700 0.727900 0.000000 +vn 0.685700 0.727900 0.000000 +vn -0.685700 0.713900 0.142000 +vn 0.685700 0.713900 0.142000 +vn -0.685700 0.672500 0.278500 +vn 0.685700 0.672500 0.278500 +vn -0.685700 0.605200 0.404400 +vn 0.685700 0.605200 0.404400 +vn -0.685700 0.514700 0.514700 +vn 0.685700 0.514700 0.514700 +vn -0.685700 0.404400 0.605200 +vn 0.685700 0.404400 0.605200 +vn -0.685700 0.278500 0.672500 +vn 0.685700 0.278500 0.672500 +vn -0.685700 0.142000 0.713900 +vn 0.685700 0.142000 0.713900 +vn -0.685700 0.000000 0.727900 +vn 0.685700 0.000000 0.727900 +vn -0.685700 -0.142000 0.713900 +vn 0.685700 -0.142000 0.713900 +vn -0.685700 -0.278500 0.672500 +vn 0.685700 -0.278500 0.672500 +vn -0.685700 -0.404400 0.605200 +vn 0.685700 -0.404400 0.605200 +vn -0.685700 -0.514700 0.514700 +vn 0.685700 -0.514700 0.514700 +vn -0.685700 -0.605200 0.404400 +vn 0.685700 -0.605200 0.404400 +vn -0.685700 -0.672500 0.278500 +vn 0.685700 -0.672500 0.278500 +vn -0.685700 -0.713900 0.142000 +vn 0.685700 -0.713900 0.142000 +vn -0.685700 -0.727900 0.000000 +vn 0.685700 -0.727900 0.000000 +vn -0.685700 -0.713900 -0.142000 +vn 0.685700 -0.713900 -0.142000 +vn -0.685700 -0.672500 -0.278500 +vn 0.685700 -0.672500 -0.278500 +vn -0.685700 -0.605200 -0.404400 +vn 0.685700 -0.605200 -0.404400 +vn -0.685700 -0.514700 -0.514700 +vn 0.685700 -0.514700 -0.514700 +vn -0.685700 -0.404400 -0.605200 +vn 0.685700 -0.404400 -0.605200 +vn -0.685700 -0.278500 -0.672500 +vn 0.685700 -0.278500 -0.672500 +vn -0.685700 -0.142000 -0.713900 +vn 0.685700 -0.142000 -0.713900 +s 1 +f 1/1/1 2/2/2 4/3/3 3/4/4 +f 3/4/4 4/3/3 6/5/5 5/6/6 +f 5/6/6 6/5/5 8/7/7 7/8/8 +f 7/8/8 8/7/7 10/9/9 9/10/10 +f 9/10/10 10/9/9 12/11/11 11/12/12 +f 11/12/12 12/11/11 14/13/13 13/14/14 +f 13/14/14 14/13/13 16/15/15 15/16/16 +f 15/16/16 16/15/15 18/17/17 17/18/18 +f 17/19/18 18/20/17 20/21/19 19/22/20 +f 19/22/20 20/21/19 22/23/21 21/24/22 +f 21/24/22 22/23/21 24/25/23 23/26/24 +f 23/26/24 24/25/23 26/27/25 25/28/26 +f 25/28/26 26/27/25 28/29/27 27/30/28 +f 27/30/28 28/29/27 30/31/29 29/32/30 +f 29/32/30 30/31/29 32/33/31 31/34/32 +f 31/34/32 32/33/31 34/2/33 33/1/34 +f 33/1/34 34/2/33 36/3/35 35/4/36 +f 35/4/36 36/3/35 38/5/37 37/6/38 +f 37/6/38 38/5/37 40/7/39 39/8/40 +f 39/8/40 40/7/39 42/9/41 41/10/42 +f 41/10/42 42/9/41 44/11/43 43/12/44 +f 43/12/44 44/11/43 46/13/45 45/14/46 +f 45/14/46 46/13/45 48/15/47 47/16/48 +f 47/16/48 48/15/47 50/17/49 49/18/50 +f 49/19/50 50/20/49 52/21/51 51/22/52 +f 51/22/52 52/21/51 54/23/53 53/24/54 +f 53/24/54 54/23/53 56/25/55 55/26/56 +f 55/26/56 56/25/55 58/27/57 57/28/58 +f 57/28/58 58/27/57 60/29/59 59/30/60 +f 59/30/60 60/29/59 62/31/61 61/32/62 +f 4/35/3 2/1/2 64/36/63 62/37/61 60/38/59 58/39/57 56/40/55 54/41/53 52/42/51 50/43/49 48/44/47 46/45/45 44/46/43 42/47/41 40/48/39 38/49/37 36/50/35 34/2/33 32/51/31 30/52/29 28/53/27 26/54/25 24/55/23 22/56/21 20/57/19 18/58/17 16/59/15 14/60/13 12/61/11 10/62/9 8/63/7 6/64/5 +f 63/34/64 64/33/63 2/2/2 1/1/1 +f 61/32/62 62/31/61 64/33/63 63/34/64 +f 1/65/1 3/51/4 5/52/6 7/53/8 9/54/10 11/66/12 13/56/14 15/57/16 17/67/18 19/59/20 21/60/22 23/61/24 25/62/26 27/68/28 29/64/30 31/35/32 33/69/34 35/36/36 37/37/38 39/38/40 41/39/42 43/70/44 45/41/46 47/42/48 49/71/50 51/44/52 53/45/54 55/46/56 57/47/58 59/72/60 61/49/62 63/50/64 diff --git a/technic_cnc/models/technic_cnc_innercorner.obj b/technic_cnc/models/technic_cnc_innercorner.obj new file mode 100644 index 0000000..c962aeb --- /dev/null +++ b/technic_cnc/models/technic_cnc_innercorner.obj @@ -0,0 +1,33 @@ +# Blender v2.73 (sub 0) OBJ File: 'technic-icorner.blend' +# www.blender.org +o Cube_Cube.000 +v -0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vn -0.000000 -0.000000 1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.707100 0.707100 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -1.000000 -0.000000 -0.000000 +vn 0.000000 0.707100 -0.707100 +s off +f 6/1/1 1/2/1 7/3/1 8/4/1 +f 2/1/2 5/3/2 3/4/2 +f 2/1/3 1/2/3 5/4/3 +f 6/2/4 8/3/4 9/4/4 +f 9/1/5 8/2/5 7/3/5 3/4/5 +f 3/3/6 7/4/6 1/1/6 2/2/6 +f 1/1/7 6/2/7 9/3/7 +l 1 4 +l 3 4 diff --git a/technic_cnc/models/technic_cnc_innercorner_upsdown.obj b/technic_cnc/models/technic_cnc_innercorner_upsdown.obj new file mode 100644 index 0000000..68eb560 --- /dev/null +++ b/technic_cnc/models/technic_cnc_innercorner_upsdown.obj @@ -0,0 +1,33 @@ +# Blender v2.73 (sub 0) OBJ File: 'technic-icorner-upsdown.blend' +# www.blender.org +o Cube_Cube.000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn -0.000000 -0.707100 -0.707100 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.707100 -0.707100 -0.000000 +s off +f 6/1/1 1/2/1 7/3/1 8/4/1 +f 2/1/2 5/3/2 3/4/2 +f 2/1/3 1/2/3 5/4/3 +f 6/2/4 8/3/4 9/4/4 +f 9/1/5 8/2/5 7/3/5 3/4/5 +f 3/3/6 7/4/6 1/1/6 2/2/6 +f 1/1/7 6/2/7 9/3/7 +l 1 4 +l 3 4 diff --git a/technic_cnc/models/technic_cnc_oblate_spheroid.obj b/technic_cnc/models/technic_cnc_oblate_spheroid.obj new file mode 100644 index 0000000..e949f5b --- /dev/null +++ b/technic_cnc/models/technic_cnc_oblate_spheroid.obj @@ -0,0 +1,300 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_blob_onetexture.blend' +# www.blender.org +o Cube +v 0.213679 -0.450000 -0.213679 +v -0.213679 -0.450000 0.213680 +v 0.213680 -0.450000 0.213680 +v -0.213679 -0.450000 -0.213679 +v 0.213679 0.450000 -0.213679 +v -0.213679 0.450000 -0.213679 +v 0.213679 0.450000 0.213680 +v 0.500000 -0.000003 0.500000 +v 0.277785 -0.415735 0.277785 +v -0.277785 -0.415735 0.277785 +v 0.353553 -0.353554 0.353553 +v -0.353553 -0.353554 0.353553 +v -0.500000 -0.000002 0.500000 +v 0.415735 -0.277786 0.415735 +v -0.277785 0.415735 0.277785 +v 0.277785 0.415735 0.277785 +v -0.415735 -0.277785 0.415735 +v 0.353554 0.353553 0.353554 +v -0.500000 -0.000002 -0.499983 +v 0.461940 -0.191342 0.461940 +v -0.461940 -0.191342 0.461940 +v -0.353553 0.353553 0.353554 +v 0.490393 -0.097546 0.490393 +v 0.500000 -0.000002 -0.500000 +v 0.490393 0.097545 -0.490392 +v 0.490393 0.097545 0.490393 +v -0.490393 -0.097546 0.490393 +v 0.490393 -0.097545 -0.490393 +v 0.461940 0.191341 0.461940 +v -0.461940 0.191341 0.461940 +v 0.461940 0.191342 -0.461940 +v -0.490393 0.097545 0.490393 +v 0.415735 0.277785 0.415735 +v -0.490393 0.097545 -0.490392 +v -0.415735 0.277785 0.415735 +v 0.461940 -0.191341 -0.461940 +v 0.415735 0.277785 -0.415735 +v -0.461940 0.191341 -0.461940 +v -0.415735 0.277785 -0.415735 +v 0.415735 -0.277785 -0.415735 +v -0.490393 -0.097546 -0.490392 +v 0.353553 0.353553 -0.353553 +v -0.213679 0.450000 0.213680 +v -0.353553 0.353553 -0.353553 +v 0.277785 0.415735 -0.277785 +v -0.461940 -0.191342 -0.461939 +v 0.353554 -0.353553 -0.353554 +v -0.277785 0.415735 -0.277785 +v -0.415735 -0.277785 -0.415734 +v 0.277786 -0.415735 -0.277785 +v -0.353553 -0.353554 -0.353553 +v -0.277785 -0.415735 -0.277784 +vt 0.038487 0.679029 +vt 0.010047 0.589789 +vt 0.990397 0.589790 +vt 0.915772 0.767073 +vt 0.084671 0.767071 +vt 0.961957 0.679029 +vt 0.852473 0.146294 +vt 0.914576 0.232749 +vt 0.084146 0.232744 +vt 0.712776 0.000003 +vt 0.221926 0.061588 +vt 0.285951 0.000000 +vt 0.285945 0.999818 +vt 0.221920 0.938229 +vt 0.712771 0.999818 +vt 0.009578 0.589789 +vt 0.989138 0.589792 +vt 0.960721 0.679031 +vt 0.286638 0.000000 +vt 0.777884 0.061589 +vt 0.222561 0.061589 +vt 0.777608 0.938229 +vt 0.222164 0.938229 +vt 0.146413 0.853527 +vt 0.286255 0.999818 +vt 0.713517 0.999818 +vt 0.776800 0.061592 +vt 0.146251 0.146290 +vt 0.000000 0.499907 +vt 0.989139 0.410032 +vt 0.998734 0.499910 +vt 0.853618 0.146291 +vt 0.915772 0.232746 +vt 0.146826 0.146290 +vt 0.961957 0.320789 +vt 0.084672 0.232745 +vt 0.990397 0.410029 +vt 0.038487 0.320789 +vt 0.776796 0.938230 +vt 0.777790 0.938229 +vt 0.146467 0.853526 +vt 0.853556 0.853527 +vt 0.146825 0.853526 +vt 1.000000 0.499907 +vt 0.010047 0.410028 +vt 0.146246 0.853527 +vt 0.222559 0.938228 +vt 0.777882 0.938230 +vt 0.915737 0.767073 +vt 0.084287 0.767072 +vt 0.038083 0.679029 +vt 0.961941 0.679029 +vt 0.037995 0.679029 +vt 0.960723 0.320792 +vt 0.037998 0.320787 +vt 0.009580 0.410028 +vt 0.990167 0.589790 +vt 0.999772 0.499909 +vt 0.961721 0.679029 +vt 0.084246 0.767072 +vt 0.915526 0.767072 +vt 0.853359 0.853527 +vt 0.914573 0.767074 +vt 0.084142 0.767072 +vt 0.852470 0.853528 +vt 0.777609 0.061590 +vt 0.853360 0.146293 +vt 0.222166 0.061589 +vt 0.146414 0.146291 +vt 0.915527 0.232748 +vt 0.084247 0.232746 +vt 0.961721 0.320791 +vt 0.038052 0.320789 +vt 0.990167 0.410031 +vt 0.713686 0.999818 +vt 0.749950 0.250050 +vt 0.749950 0.749950 +vt 0.250050 0.749950 +vt 0.250050 0.250050 +vt 0.713807 0.000000 +vt 0.286258 0.000000 +vt 0.713519 0.000001 +vt 0.250050 0.250050 +vt 0.749950 0.250050 +vt 0.749950 0.749950 +vt 0.286636 0.999817 +vt 0.777791 0.061589 +vt 0.146467 0.146291 +vt 0.084287 0.232745 +vt 0.915737 0.232746 +vt 0.961941 0.320789 +vt 0.000444 0.499907 +vt 0.713687 0.000000 +vt 0.713805 0.999818 +vn -0.620400 0.479600 0.620400 +vn -0.683900 0.254100 0.683900 +vn 0.683900 0.254100 0.683900 +vn 0.531000 0.660300 0.531000 +vn -0.531000 0.660300 0.531000 +vn 0.620400 0.479600 0.620400 +vn -0.429700 -0.794100 0.429700 +vn -0.531000 -0.660300 0.531000 +vn -0.531000 -0.660300 -0.531000 +vn -0.185700 -0.964900 0.185700 +vn -0.325800 -0.887500 -0.325800 +vn -0.185700 -0.964900 -0.185700 +vn -0.185700 0.964900 -0.185700 +vn -0.325800 0.887500 -0.325800 +vn -0.185700 0.964900 0.185700 +vn -0.683900 0.254000 -0.683900 +vn 0.325800 -0.887500 0.325800 +vn -0.325800 -0.887500 0.325800 +vn 0.325800 0.887500 -0.325800 +vn 0.429700 0.794100 -0.429700 +vn 0.185700 0.964900 -0.185700 +vn -0.429700 -0.794100 -0.429700 +vn -0.707100 0.000000 -0.707100 +vn -0.683900 -0.254100 0.683900 +vn -0.707100 0.000000 0.707100 +vn 0.429700 -0.794100 0.429700 +vn 0.531000 -0.660300 0.531000 +vn 0.620400 -0.479600 0.620400 +vn 0.683900 -0.254100 0.683900 +vn -0.620400 -0.479600 0.620400 +vn -0.325800 0.887500 0.325800 +vn 0.185700 0.964900 0.185700 +vn 0.325800 0.887500 0.325800 +vn 0.429700 0.794100 0.429700 +vn -0.429700 0.794100 0.429700 +vn 0.707100 0.000000 0.707100 +vn -0.429700 0.794100 -0.429700 +vn 0.531000 0.660300 -0.531000 +vn 0.683900 0.254100 -0.683900 +vn 0.707100 0.000000 -0.707100 +vn 0.620400 0.479600 -0.620400 +vn -0.620400 0.479600 -0.620400 +vn -0.620400 -0.479600 -0.620400 +vn -0.683900 -0.254000 -0.683900 +vn 0.683900 -0.254100 -0.683900 +vn -0.531000 0.660300 -0.531000 +vn 0.325800 -0.887500 -0.325800 +vn 0.429700 -0.794100 -0.429700 +vn 0.531000 -0.660300 -0.531000 +vn 0.620400 -0.479600 -0.620400 +vn 0.185700 -0.964900 -0.185700 +vn 0.185700 -0.964900 0.185700 +s 1 +f 30/1/1 32/2/2 26/3/3 +f 33/4/4 35/5/5 29/6/6 +f 12/7/7 17/8/8 49/9/9 +f 2/10/10 52/11/11 4/12/12 +f 6/13/13 48/14/14 43/15/15 +f 34/16/16 32/17/2 30/18/1 +f 2/19/10 9/20/17 10/21/18 +f 48/22/14 45/23/19 42/24/20 +f 5/25/21 45/23/19 6/26/13 +f 10/27/18 12/7/7 51/28/22 +f 19/29/23 27/30/24 13/31/25 +f 9/20/17 11/32/26 10/21/18 +f 11/32/26 14/33/27 12/34/7 +f 14/33/27 20/35/28 17/36/8 +f 20/35/28 23/37/29 21/38/30 +f 43/15/15 48/14/14 15/39/31 +f 7/25/32 16/23/33 45/40/19 +f 18/41/34 42/42/20 45/40/19 +f 29/6/6 30/1/1 26/3/3 +f 22/43/35 33/4/4 18/42/34 +f 26/3/3 32/2/2 8/44/36 +f 8/44/36 27/45/24 23/37/29 +f 11/32/26 12/34/7 10/21/18 +f 14/33/27 17/36/8 12/34/7 +f 20/35/28 21/38/30 17/36/8 +f 23/37/29 27/45/24 21/38/30 +f 10/27/18 52/11/11 2/10/10 +f 15/39/31 48/14/14 44/46/37 +f 22/43/35 35/5/5 33/4/4 +f 15/47/31 22/43/35 16/48/33 +f 37/49/38 42/42/20 18/41/34 +f 33/50/4 29/51/6 37/49/38 +f 8/29/36 25/3/39 26/16/3 +f 24/44/40 25/3/39 8/29/36 +f 29/51/6 26/16/3 31/52/41 +f 26/16/3 25/3/39 31/52/41 +f 29/51/6 31/52/41 37/49/38 +f 38/53/42 34/16/16 30/18/1 +f 19/29/23 32/17/2 34/16/16 +f 13/31/25 32/17/2 19/29/23 +f 17/8/8 21/54/30 46/55/43 +f 21/54/30 27/30/24 41/56/44 +f 8/29/36 28/37/45 24/44/40 +f 34/57/16 25/16/39 19/58/23 +f 38/59/42 31/51/41 34/57/16 +f 31/51/41 25/16/39 34/57/16 +f 37/60/38 38/59/42 39/61/46 +f 37/60/38 31/51/41 38/59/42 +f 44/62/37 42/24/20 37/60/38 +f 38/53/42 30/18/1 35/63/5 +f 39/64/46 35/63/5 22/65/35 +f 52/66/11 51/67/22 50/68/47 +f 51/67/22 47/69/48 50/68/47 +f 51/67/22 49/70/9 47/69/48 +f 49/70/9 40/71/49 47/69/48 +f 49/70/9 46/72/43 40/71/49 +f 46/72/43 36/73/50 40/71/49 +f 19/58/23 28/56/45 41/74/44 +f 46/72/43 41/74/44 36/73/50 +f 41/74/44 28/56/45 36/73/50 +f 22/43/35 18/42/34 16/48/33 +f 5/75/21 7/25/32 45/40/19 +f 2/76/10 4/77/12 1/78/51 3/79/52 +f 44/62/37 48/22/14 42/24/20 +f 35/5/5 30/1/1 29/6/6 +f 3/80/52 9/20/17 2/19/10 +f 45/23/19 48/22/14 6/26/13 +f 1/81/51 52/66/11 50/68/47 +f 39/61/46 44/62/37 37/60/38 +f 52/66/11 1/81/51 4/82/12 +f 24/29/40 28/56/45 19/58/23 +f 7/78/32 5/83/21 6/84/13 43/85/15 +f 24/29/40 19/58/23 25/16/39 +f 15/47/31 16/48/33 43/86/15 +f 22/65/35 44/46/37 39/64/46 +f 39/64/46 38/53/42 35/63/5 +f 41/56/44 27/30/24 19/29/23 +f 46/55/43 21/54/30 41/56/44 +f 49/9/9 17/8/8 46/55/43 +f 51/28/22 12/7/7 49/9/9 +f 52/11/11 10/27/18 51/28/22 +f 9/68/17 50/87/47 11/88/26 +f 50/87/47 47/32/48 11/88/26 +f 11/88/26 47/32/48 14/89/27 +f 47/32/48 40/90/49 14/89/27 +f 14/89/27 40/90/49 20/73/28 +f 40/90/49 36/91/50 20/73/28 +f 23/56/29 28/37/45 8/29/36 +f 20/73/28 36/91/50 23/56/29 +f 36/91/50 28/37/45 23/56/29 +f 13/92/25 8/44/36 32/2/2 +f 50/87/47 9/68/17 1/93/51 +f 13/92/25 27/45/24 8/44/36 +f 16/23/33 18/41/34 45/40/19 +f 22/65/35 15/39/31 44/46/37 +f 9/68/17 3/81/52 1/93/51 +f 33/50/4 37/49/38 18/41/34 +f 43/86/15 16/48/33 7/94/32 diff --git a/technic_cnc/models/technic_cnc_one_curved_edge.obj b/technic_cnc/models/technic_cnc_one_curved_edge.obj new file mode 100644 index 0000000..bb82040 --- /dev/null +++ b/technic_cnc/models/technic_cnc_one_curved_edge.obj @@ -0,0 +1,132 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_quarter_round_onetexture.blend' +# www.blender.org +o Cylinder +v -0.500000 0.490393 -0.097545 +v 0.500000 0.490393 -0.097545 +v -0.500000 0.461940 -0.191342 +v 0.500000 0.461940 -0.191342 +v -0.500000 0.415735 -0.277785 +v 0.500000 0.415735 -0.277785 +v -0.500000 0.353553 -0.353553 +v 0.500000 0.353553 -0.353553 +v -0.500000 0.277785 -0.415735 +v 0.500000 0.277785 -0.415735 +v -0.500000 0.191342 -0.461940 +v 0.500000 0.191342 -0.461940 +v -0.500000 0.097545 -0.490393 +v 0.500000 0.097545 -0.490393 +v 0.500000 -0.000000 -0.500000 +v 0.500000 0.490393 -0.097545 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.500000 -0.000000 +v 0.500000 0.500000 0.000000 +v -0.500000 0.490393 -0.097545 +v -0.500000 0.461940 -0.191342 +v -0.500000 0.415735 -0.277785 +v -0.500000 0.353553 -0.353553 +v -0.500000 0.277785 -0.415735 +v -0.500000 0.191342 -0.461940 +v -0.500000 0.097545 -0.490393 +v -0.500000 0.000000 0.000000 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.500000 -0.000000 +v 0.500000 0.461940 -0.191342 +v 0.500000 0.415735 -0.277785 +v 0.500000 0.353553 -0.353553 +v 0.500000 0.277785 -0.415735 +v 0.500000 0.191342 -0.461940 +v 0.500000 0.097545 -0.490393 +v 0.500000 -0.000000 -0.500000 +v 0.500000 -0.000000 -0.000000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.000000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +vt 1.000000 0.000000 +vt 1.000000 0.500000 +vt 0.500001 0.500000 +vt 0.500001 1.000000 +vt 0.000003 1.000000 +vt 0.000003 0.000000 +vt 0.597546 0.990393 +vt 0.691342 0.961940 +vt 1.000000 1.000000 +vt 0.990393 0.597545 +vt 0.961940 0.691341 +vt 0.777786 0.915735 +vt 0.853554 0.853553 +vt 0.915735 0.777785 +vt 0.146446 0.853552 +vt 0.084265 0.777783 +vt 0.038060 0.691340 +vt 0.308658 0.961938 +vt 0.222214 0.915733 +vt 0.000000 0.499999 +vt 0.402454 0.990391 +vt 0.009607 0.597544 +vt 1.000000 0.375000 +vt 0.000000 0.375000 +vt 0.000000 0.250000 +vt 1.000000 0.250000 +vt 0.000000 0.125000 +vt 1.000000 0.125000 +vt 0.000000 0.875000 +vt 1.000000 0.875000 +vt 0.000000 0.750000 +vt 1.000000 0.750000 +vt 0.000000 0.625000 +vt 1.000000 0.625000 +vn 1.000000 -0.000000 0.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.980800 -0.195100 +vn 0.000000 0.923900 -0.382700 +vn -0.000000 0.831500 -0.555600 +vn -0.000000 0.707100 -0.707100 +vn -0.000000 0.555600 -0.831500 +vn -0.000000 0.382700 -0.923900 +vn -0.000000 0.195100 -0.980800 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 0.998800 -0.049100 +vn -0.000000 0.049100 -0.998800 +vn -0.000000 0.000000 -1.000000 +s off +f 46/1/1 44/2/1 45/3/1 49/4/1 48/5/1 47/6/1 +f 16/7/1 49/4/1 45/3/1 38/8/1 +f 55/5/2 53/6/2 54/1/2 56/9/2 +f 43/10/1 42/11/1 45/3/1 44/2/1 +f 39/12/1 38/8/1 45/3/1 40/13/1 +f 41/14/1 40/13/1 45/3/1 42/11/1 +f 50/9/3 51/5/3 52/6/3 17/1/3 +f 28/15/4 29/16/4 30/17/4 32/3/4 +f 26/18/4 27/19/4 28/15/4 32/3/4 +f 35/9/4 37/4/4 32/3/4 36/20/4 34/6/4 33/1/4 +f 37/4/4 25/21/4 26/18/4 32/3/4 +f 30/17/4 31/22/4 36/20/4 32/3/4 +s 1 +f 1/23/5 2/24/5 4/25/6 3/26/6 +f 3/26/6 4/25/6 6/27/7 5/28/7 +f 5/28/7 6/27/7 8/6/8 7/1/8 +f 7/9/8 8/5/8 10/29/9 9/30/9 +f 9/30/9 10/29/9 12/31/10 11/32/10 +f 11/32/10 12/31/10 14/33/11 13/34/11 +f 21/5/12 24/20/13 23/2/13 20/9/12 +f 13/34/11 14/33/11 15/20/14 22/2/14 +f 23/2/13 24/20/13 2/24/5 1/23/5 +f 18/1/15 22/2/14 15/20/14 19/6/15 diff --git a/technic_cnc/models/technic_cnc_outercorner.obj b/technic_cnc/models/technic_cnc_outercorner.obj new file mode 100644 index 0000000..60ccae6 --- /dev/null +++ b/technic_cnc/models/technic_cnc_outercorner.obj @@ -0,0 +1,23 @@ +# Blender v2.73 (sub 0) OBJ File: 'technic-ocorner.blend' +# www.blender.org +o Cube_Cube.002 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.000000 0.707100 -0.707100 +vn 0.707100 0.707100 -0.000000 +s off +f 3/1/1 2/2/1 4/3/1 5/4/1 +f 1/2/2 3/3/2 5/4/2 +f 1/1/3 2/3/3 3/4/3 +f 1/1/4 4/3/4 2/4/4 +f 1/2/5 5/3/5 4/4/5 diff --git a/technic_cnc/models/technic_cnc_outercorner_upsdown.obj b/technic_cnc/models/technic_cnc_outercorner_upsdown.obj new file mode 100644 index 0000000..c89de8a --- /dev/null +++ b/technic_cnc/models/technic_cnc_outercorner_upsdown.obj @@ -0,0 +1,23 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_ocorner_onetexture.blend' +# www.blender.org +o Cube_Cube.002 +v -0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vn 0.000000 1.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.707100 -0.707100 0.000000 +vn -0.000000 -0.707100 -0.707100 +s off +f 3/1/1 2/2/1 4/3/1 5/4/1 +f 1/2/2 3/3/2 5/4/2 +f 1/1/3 2/3/3 3/4/3 +f 1/1/4 4/3/4 2/4/4 +f 1/2/5 5/3/5 4/4/5 diff --git a/technic_cnc/models/technic_cnc_pyramid.obj b/technic_cnc/models/technic_cnc_pyramid.obj new file mode 100644 index 0000000..a618dcf --- /dev/null +++ b/technic_cnc/models/technic_cnc_pyramid.obj @@ -0,0 +1,24 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_short_onetexture.blend' +# www.blender.org +o Cube +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.000000 0.000000 -0.000000 +vt 1.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.500000 0.500000 +vn 0.000000 -1.000000 0.000000 +vn -0.707100 0.707100 -0.000000 +vn 0.000000 0.707100 -0.707100 +vn 0.707100 0.707100 0.000000 +vn -0.000000 0.707100 0.707100 +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 3/4/2 5/5/2 4/3/2 +f 5/5/3 1/3/3 4/4/3 +f 1/4/4 5/5/4 2/3/4 +f 2/4/5 5/5/5 3/3/5 diff --git a/technic_cnc/models/technic_cnc_pyramid_spike.obj b/technic_cnc/models/technic_cnc_pyramid_spike.obj new file mode 100644 index 0000000..b305af2 --- /dev/null +++ b/technic_cnc/models/technic_cnc_pyramid_spike.obj @@ -0,0 +1,24 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_onetexture.blend' +# www.blender.org +o Cube +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.000000 0.500000 -0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.500000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.894400 0.447200 -0.000000 +vn 0.000000 0.447200 -0.894400 +vn 0.894400 0.447200 0.000000 +vn -0.000000 0.447200 0.894400 +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 3/4/2 5/5/2 4/3/2 +f 5/5/3 1/3/3 4/4/3 +f 1/4/4 5/5/4 2/3/4 +f 2/4/5 5/5/5 3/3/5 diff --git a/technic_cnc/models/technic_cnc_slope.obj b/technic_cnc/models/technic_cnc_slope.obj new file mode 100644 index 0000000..f6f4860 --- /dev/null +++ b/technic_cnc/models/technic_cnc_slope.obj @@ -0,0 +1,24 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_slope_onetexture.blend' +# www.blender.org +o Cube_Cube.002 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -1.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.707100 -0.707100 +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 4/3/2 3/4/2 5/1/2 6/2/2 +f 2/1/3 5/3/3 3/4/3 +f 1/2/4 4/3/4 6/4/4 +f 2/1/5 1/2/5 6/3/5 5/4/5 diff --git a/technic_cnc/models/technic_cnc_slope_horizontal.obj b/technic_cnc/models/technic_cnc_slope_horizontal.obj new file mode 100644 index 0000000..4866a92 --- /dev/null +++ b/technic_cnc/models/technic_cnc_slope_horizontal.obj @@ -0,0 +1,24 @@ +# Blender v2.73 (sub 0) OBJ File: 'technic-slope-horizontal.blend' +# www.blender.org +o Cube_Cube.002 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 1.000000 -0.000000 -0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn -0.707100 0.000000 -0.707100 +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 4/1/2 3/2/2 5/3/2 6/4/2 +f 2/3/3 5/1/3 3/2/3 +f 1/4/4 4/1/4 6/2/4 +f 2/3/5 1/4/5 6/1/5 5/2/5 diff --git a/technic_cnc/models/technic_cnc_slope_upsdown.obj b/technic_cnc/models/technic_cnc_slope_upsdown.obj new file mode 100644 index 0000000..6880595 --- /dev/null +++ b/technic_cnc/models/technic_cnc_slope_upsdown.obj @@ -0,0 +1,24 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_slope_onetexture.blend' +# www.blender.org +o Cube_Cube.002 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 -0.000000 +vn 1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -0.000000 -0.707100 -0.707100 +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 4/3/2 3/4/2 5/1/2 6/2/2 +f 2/1/3 5/3/3 3/4/3 +f 1/2/4 4/3/4 6/4/4 +f 2/1/5 1/2/5 6/3/5 5/4/5 diff --git a/technic_cnc/models/technic_cnc_sphere.obj b/technic_cnc/models/technic_cnc_sphere.obj new file mode 100644 index 0000000..772b570 --- /dev/null +++ b/technic_cnc/models/technic_cnc_sphere.obj @@ -0,0 +1,1927 @@ +# Blender v2.73 (sub 0) OBJ File: 'globe.blend' +# www.blender.org +o Sphere +v -0.097545 0.490393 0.000000 +v -0.191342 0.461940 0.000000 +v -0.277785 0.415735 0.000000 +v -0.353553 0.353553 0.000000 +v -0.415735 0.277785 0.000000 +v -0.461940 0.191342 0.000000 +v -0.490393 0.097545 0.000000 +v -0.500000 0.000000 0.000000 +v -0.490393 -0.097545 0.000000 +v -0.461940 -0.191342 0.000000 +v -0.415735 -0.277785 0.000000 +v -0.353553 -0.353553 0.000000 +v -0.277785 -0.415735 0.000000 +v -0.191342 -0.461940 0.000000 +v -0.097545 -0.490393 0.000000 +v -0.095671 0.490393 -0.019030 +v -0.187665 0.461940 -0.037329 +v -0.272448 0.415735 -0.054193 +v -0.346760 0.353553 -0.068975 +v -0.407747 0.277785 -0.081106 +v -0.453064 0.191342 -0.090120 +v -0.480970 0.097545 -0.095671 +v -0.490393 0.000000 -0.097545 +v -0.480970 -0.097545 -0.095671 +v -0.453064 -0.191342 -0.090120 +v -0.407747 -0.277785 -0.081106 +v -0.346760 -0.353553 -0.068975 +v -0.272448 -0.415735 -0.054193 +v -0.187665 -0.461940 -0.037329 +v -0.095671 -0.490393 -0.019030 +v -0.090120 0.490393 -0.037329 +v -0.176777 0.461940 -0.073223 +v -0.256640 0.415735 -0.106304 +v -0.326641 0.353553 -0.135299 +v -0.384089 0.277785 -0.159095 +v -0.426777 0.191342 -0.176777 +v -0.453064 0.097545 -0.187665 +v -0.461940 0.000000 -0.191342 +v -0.453064 -0.097545 -0.187665 +v -0.426777 -0.191342 -0.176777 +v -0.384089 -0.277785 -0.159095 +v -0.326641 -0.353553 -0.135299 +v -0.256640 -0.415735 -0.106304 +v -0.176777 -0.461940 -0.073223 +v -0.090120 -0.490393 -0.037329 +v -0.081106 0.490393 -0.054193 +v -0.159095 0.461940 -0.106304 +v -0.230970 0.415735 -0.154329 +v -0.293969 0.353553 -0.196424 +v -0.345671 0.277785 -0.230970 +v -0.384089 0.191342 -0.256640 +v -0.407746 0.097545 -0.272448 +v -0.415735 0.000000 -0.277785 +v -0.407746 -0.097545 -0.272448 +v -0.384089 -0.191342 -0.256640 +v -0.345671 -0.277785 -0.230970 +v -0.293969 -0.353553 -0.196424 +v -0.230970 -0.415735 -0.154329 +v -0.159095 -0.461940 -0.106304 +v -0.081106 -0.490393 -0.054193 +v -0.068975 0.490393 -0.068975 +v -0.135299 0.461940 -0.135299 +v -0.196424 0.415735 -0.196424 +v -0.250000 0.353553 -0.250000 +v -0.293969 0.277785 -0.293969 +v -0.326641 0.191342 -0.326641 +v -0.346760 0.097545 -0.346760 +v -0.353553 0.000000 -0.353554 +v -0.346760 -0.097545 -0.346760 +v -0.326641 -0.191342 -0.326641 +v -0.293969 -0.277785 -0.293969 +v -0.250000 -0.353553 -0.250000 +v -0.196424 -0.415735 -0.196424 +v -0.135299 -0.461940 -0.135299 +v -0.068975 -0.490393 -0.068975 +v -0.054193 0.490393 -0.081106 +v -0.106304 0.461940 -0.159095 +v -0.154329 0.415735 -0.230970 +v -0.196424 0.353553 -0.293969 +v -0.230970 0.277785 -0.345671 +v -0.256640 0.191342 -0.384089 +v -0.272447 0.097545 -0.407747 +v -0.277785 0.000000 -0.415735 +v -0.272447 -0.097545 -0.407747 +v -0.256640 -0.191342 -0.384089 +v -0.230970 -0.277785 -0.345671 +v -0.196424 -0.353553 -0.293969 +v -0.154329 -0.415735 -0.230970 +v -0.106304 -0.461940 -0.159095 +v -0.054193 -0.490393 -0.081106 +v -0.037329 0.490393 -0.090120 +v -0.073223 0.461940 -0.176777 +v -0.106304 0.415735 -0.256640 +v -0.135299 0.353553 -0.326641 +v -0.159095 0.277785 -0.384089 +v -0.176777 0.191342 -0.426777 +v -0.187665 0.097545 -0.453064 +v -0.191342 0.000000 -0.461940 +v -0.187665 -0.097545 -0.453064 +v -0.176777 -0.191342 -0.426777 +v -0.159095 -0.277785 -0.384089 +v -0.135299 -0.353553 -0.326641 +v -0.106304 -0.415735 -0.256640 +v -0.073223 -0.461940 -0.176777 +v -0.037329 -0.490393 -0.090120 +v -0.019030 0.490393 -0.095671 +v -0.037329 0.461940 -0.187665 +v -0.054193 0.415735 -0.272448 +v -0.068975 0.353553 -0.346760 +v -0.081106 0.277785 -0.407747 +v -0.090120 0.191342 -0.453064 +v -0.095671 0.097545 -0.480970 +v -0.097545 0.000000 -0.490393 +v -0.095671 -0.097545 -0.480970 +v -0.090120 -0.191342 -0.453064 +v -0.081106 -0.277785 -0.407747 +v -0.068975 -0.353553 -0.346760 +v -0.054193 -0.415735 -0.272448 +v -0.037329 -0.461940 -0.187665 +v -0.019030 -0.490393 -0.095671 +v 0.000000 0.490393 -0.097545 +v 0.000000 0.461940 -0.191342 +v 0.000000 0.415735 -0.277785 +v 0.000000 0.353553 -0.353553 +v 0.000000 0.277785 -0.415735 +v 0.000000 0.191342 -0.461940 +v 0.000000 0.097545 -0.490393 +v 0.000000 0.000000 -0.500000 +v 0.000000 -0.097545 -0.490393 +v 0.000000 -0.191342 -0.461940 +v 0.000000 -0.277785 -0.415735 +v 0.000000 -0.353553 -0.353553 +v 0.000000 -0.415735 -0.277785 +v 0.000000 -0.461940 -0.191342 +v 0.000000 -0.490393 -0.097545 +v 0.019030 0.490393 -0.095671 +v 0.037329 0.461940 -0.187665 +v 0.054193 0.415735 -0.272448 +v 0.068975 0.353553 -0.346760 +v 0.081106 0.277785 -0.407747 +v 0.090120 0.191342 -0.453064 +v 0.095671 0.097545 -0.480970 +v 0.097545 0.000000 -0.490393 +v 0.095671 -0.097545 -0.480970 +v 0.090120 -0.191342 -0.453064 +v 0.081106 -0.277785 -0.407747 +v 0.068975 -0.353553 -0.346760 +v 0.054193 -0.415735 -0.272448 +v 0.037329 -0.461940 -0.187665 +v 0.019030 -0.490393 -0.095671 +v 0.037329 0.490393 -0.090120 +v 0.073224 0.461940 -0.176777 +v 0.106304 0.415735 -0.256640 +v 0.135299 0.353553 -0.326641 +v 0.159095 0.277785 -0.384089 +v 0.176777 0.191342 -0.426777 +v 0.187665 0.097545 -0.453064 +v 0.191342 0.000000 -0.461940 +v 0.187665 -0.097545 -0.453064 +v 0.176777 -0.191342 -0.426777 +v 0.159095 -0.277785 -0.384089 +v 0.135299 -0.353553 -0.326641 +v 0.106304 -0.415735 -0.256640 +v 0.073223 -0.461940 -0.176777 +v 0.037329 -0.490393 -0.090120 +v 0.054193 0.490393 -0.081106 +v 0.106304 0.461940 -0.159095 +v 0.154329 0.415735 -0.230970 +v 0.196424 0.353553 -0.293969 +v 0.230970 0.277785 -0.345671 +v 0.256640 0.191342 -0.384089 +v 0.272448 0.097545 -0.407747 +v 0.277785 0.000000 -0.415735 +v 0.272448 -0.097545 -0.407747 +v 0.256640 -0.191342 -0.384089 +v 0.230970 -0.277785 -0.345671 +v 0.196424 -0.353553 -0.293969 +v 0.154329 -0.415735 -0.230970 +v 0.106304 -0.461940 -0.159095 +v 0.054193 -0.490393 -0.081106 +v 0.068975 0.490393 -0.068975 +v 0.135299 0.461940 -0.135299 +v 0.196424 0.415735 -0.196424 +v 0.250000 0.353553 -0.250000 +v 0.293969 0.277785 -0.293969 +v 0.326641 0.191342 -0.326641 +v 0.346760 0.097545 -0.346760 +v 0.353554 0.000000 -0.353553 +v 0.346760 -0.097545 -0.346760 +v 0.326641 -0.191342 -0.326641 +v 0.293969 -0.277785 -0.293969 +v 0.250000 -0.353553 -0.250000 +v 0.196424 -0.415735 -0.196424 +v 0.135299 -0.461940 -0.135299 +v 0.068975 -0.490393 -0.068975 +v 0.081106 0.490393 -0.054193 +v 0.159095 0.461940 -0.106304 +v 0.230970 0.415735 -0.154329 +v 0.293969 0.353553 -0.196424 +v 0.345671 0.277785 -0.230970 +v 0.384089 0.191342 -0.256640 +v 0.407747 0.097545 -0.272447 +v 0.415735 0.000000 -0.277785 +v 0.407747 -0.097545 -0.272447 +v 0.384089 -0.191342 -0.256640 +v 0.345671 -0.277785 -0.230970 +v 0.293969 -0.353553 -0.196424 +v 0.230970 -0.415735 -0.154329 +v 0.159095 -0.461940 -0.106304 +v 0.081106 -0.490393 -0.054193 +v 0.090120 0.490393 -0.037329 +v 0.176777 0.461940 -0.073223 +v 0.256640 0.415735 -0.106304 +v 0.326641 0.353553 -0.135299 +v 0.384089 0.277785 -0.159095 +v 0.426777 0.191342 -0.176777 +v 0.453064 0.097545 -0.187665 +v 0.461940 0.000000 -0.191342 +v 0.453064 -0.097545 -0.187665 +v 0.426777 -0.191342 -0.176777 +v 0.384089 -0.277785 -0.159095 +v 0.326641 -0.353553 -0.135299 +v 0.256640 -0.415735 -0.106304 +v 0.176777 -0.461940 -0.073223 +v 0.090120 -0.490393 -0.037329 +v 0.095671 0.490393 -0.019030 +v 0.187665 0.461940 -0.037329 +v 0.272448 0.415735 -0.054193 +v 0.346760 0.353553 -0.068975 +v 0.407747 0.277785 -0.081106 +v 0.453064 0.191342 -0.090120 +v 0.480970 0.097545 -0.095671 +v 0.490393 0.000000 -0.097545 +v 0.480970 -0.097545 -0.095671 +v 0.453064 -0.191342 -0.090120 +v 0.407747 -0.277785 -0.081106 +v 0.346760 -0.353553 -0.068975 +v 0.272448 -0.415735 -0.054193 +v 0.187665 -0.461940 -0.037329 +v 0.095671 -0.490393 -0.019030 +v 0.097545 0.490393 0.000000 +v 0.191342 0.461940 -0.000000 +v 0.277785 0.415735 -0.000000 +v 0.353554 0.353553 0.000000 +v 0.415735 0.277785 0.000000 +v 0.461940 0.191342 -0.000000 +v 0.490393 0.097545 0.000000 +v 0.500000 0.000000 0.000000 +v 0.490393 -0.097545 0.000000 +v 0.461940 -0.191342 -0.000000 +v 0.415735 -0.277785 0.000000 +v 0.353554 -0.353553 0.000000 +v 0.277785 -0.415735 0.000000 +v 0.191342 -0.461940 -0.000000 +v 0.097545 -0.490393 -0.000000 +v 0.095671 0.490393 0.019030 +v 0.187665 0.461940 0.037329 +v 0.272448 0.415735 0.054193 +v 0.346760 0.353553 0.068975 +v 0.407747 0.277785 0.081106 +v 0.453064 0.191342 0.090120 +v 0.480970 0.097545 0.095671 +v 0.490393 0.000000 0.097545 +v 0.480970 -0.097545 0.095671 +v 0.453064 -0.191342 0.090120 +v 0.407747 -0.277785 0.081106 +v 0.346760 -0.353553 0.068975 +v 0.272448 -0.415735 0.054193 +v 0.187665 -0.461940 0.037329 +v 0.095671 -0.490393 0.019030 +v 0.090120 0.490393 0.037329 +v 0.176777 0.461940 0.073223 +v 0.256640 0.415735 0.106304 +v 0.326641 0.353553 0.135299 +v 0.384089 0.277785 0.159095 +v 0.426777 0.191342 0.176777 +v 0.453064 0.097545 0.187665 +v 0.461940 0.000000 0.191342 +v 0.453064 -0.097545 0.187665 +v 0.426777 -0.191342 0.176777 +v 0.384089 -0.277785 0.159095 +v 0.326641 -0.353553 0.135299 +v 0.256640 -0.415735 0.106304 +v 0.176777 -0.461940 0.073223 +v 0.090120 -0.490393 0.037329 +v 0.081106 0.490393 0.054193 +v 0.159095 0.461940 0.106304 +v 0.230970 0.415735 0.154329 +v 0.293969 0.353553 0.196424 +v 0.345671 0.277785 0.230970 +v 0.384089 0.191342 0.256640 +v 0.407747 0.097545 0.272448 +v 0.415735 0.000000 0.277785 +v 0.407747 -0.097545 0.272448 +v 0.384089 -0.191342 0.256640 +v 0.345671 -0.277785 0.230970 +v 0.293969 -0.353553 0.196424 +v 0.230970 -0.415735 0.154329 +v 0.159095 -0.461940 0.106304 +v 0.081106 -0.490393 0.054193 +v 0.068975 0.490393 0.068975 +v 0.135299 0.461940 0.135299 +v 0.196424 0.415735 0.196424 +v 0.250000 0.353553 0.250000 +v 0.293969 0.277785 0.293969 +v 0.326641 0.191342 0.326641 +v 0.346760 0.097545 0.346760 +v 0.353553 0.000000 0.353553 +v 0.346760 -0.097545 0.346760 +v 0.326641 -0.191342 0.326641 +v 0.293969 -0.277785 0.293969 +v 0.250000 -0.353553 0.250000 +v 0.196424 -0.415735 0.196424 +v 0.135299 -0.461940 0.135299 +v 0.068975 -0.490393 0.068975 +v 0.054193 0.490393 0.081106 +v 0.106304 0.461940 0.159095 +v 0.154329 0.415735 0.230970 +v 0.196424 0.353553 0.293969 +v 0.230970 0.277785 0.345671 +v 0.256640 0.191342 0.384089 +v 0.272448 0.097545 0.407746 +v 0.277785 0.000000 0.415735 +v 0.272448 -0.097545 0.407746 +v 0.256640 -0.191342 0.384089 +v 0.230970 -0.277785 0.345671 +v 0.196424 -0.353553 0.293969 +v 0.154329 -0.415735 0.230970 +v 0.106304 -0.461940 0.159095 +v 0.054193 -0.490393 0.081106 +v 0.037329 0.490393 0.090120 +v 0.073223 0.461940 0.176777 +v 0.106304 0.415735 0.256640 +v 0.135299 0.353553 0.326641 +v 0.159095 0.277785 0.384089 +v 0.176777 0.191342 0.426777 +v 0.187665 0.097545 0.453064 +v 0.191342 0.000000 0.461940 +v 0.187665 -0.097545 0.453064 +v 0.176777 -0.191342 0.426777 +v 0.159095 -0.277785 0.384089 +v 0.135299 -0.353553 0.326641 +v 0.106304 -0.415735 0.256640 +v 0.073223 -0.461940 0.176777 +v 0.037329 -0.490393 0.090120 +v 0.019030 0.490393 0.095671 +v 0.037329 0.461940 0.187665 +v 0.054193 0.415735 0.272448 +v 0.068975 0.353553 0.346760 +v 0.081106 0.277785 0.407746 +v 0.090120 0.191342 0.453064 +v 0.095671 0.097545 0.480970 +v 0.097545 0.000000 0.490393 +v 0.095671 -0.097545 0.480970 +v 0.090120 -0.191342 0.453064 +v 0.081106 -0.277785 0.407746 +v 0.068975 -0.353553 0.346760 +v 0.054193 -0.415735 0.272447 +v 0.037329 -0.461940 0.187665 +v 0.019030 -0.490393 0.095671 +v 0.000000 0.490393 0.097545 +v 0.000000 0.461940 0.191342 +v 0.000000 0.415735 0.277785 +v 0.000000 0.353553 0.353553 +v 0.000000 0.277785 0.415735 +v 0.000000 0.191342 0.461940 +v 0.000000 0.097545 0.490392 +v 0.000000 0.000000 0.500000 +v 0.000000 -0.097545 0.490392 +v 0.000000 -0.191342 0.461940 +v 0.000000 -0.277785 0.415735 +v 0.000000 -0.353553 0.353553 +v 0.000000 -0.415735 0.277785 +v 0.000000 -0.461940 0.191342 +v 0.000000 -0.490393 0.097545 +v -0.019030 0.490393 0.095671 +v -0.037329 0.461940 0.187665 +v -0.054193 0.415735 0.272448 +v -0.068975 0.353553 0.346760 +v -0.081106 0.277785 0.407746 +v -0.090120 0.191342 0.453064 +v -0.095671 0.097545 0.480970 +v -0.097545 0.000000 0.490393 +v -0.095671 -0.097545 0.480970 +v -0.090120 -0.191342 0.453064 +v -0.081106 -0.277785 0.407746 +v -0.068975 -0.353553 0.346760 +v -0.054193 -0.415735 0.272447 +v -0.037329 -0.461940 0.187665 +v -0.019030 -0.490393 0.095671 +v -0.037329 0.490393 0.090120 +v -0.073223 0.461940 0.176777 +v -0.106304 0.415735 0.256640 +v -0.135299 0.353553 0.326641 +v -0.159095 0.277785 0.384089 +v -0.176777 0.191342 0.426777 +v -0.187665 0.097545 0.453063 +v -0.191342 0.000000 0.461940 +v -0.187665 -0.097545 0.453063 +v -0.176777 -0.191342 0.426777 +v -0.159095 -0.277785 0.384089 +v -0.135299 -0.353553 0.326641 +v -0.106304 -0.415735 0.256640 +v -0.073223 -0.461940 0.176777 +v -0.037329 -0.490393 0.090120 +v -0.054193 0.490393 0.081106 +v -0.106304 0.461940 0.159095 +v -0.154329 0.415735 0.230970 +v -0.196424 0.353553 0.293969 +v -0.230970 0.277785 0.345671 +v -0.256640 0.191342 0.384089 +v -0.272447 0.097545 0.407746 +v -0.277785 0.000000 0.415735 +v -0.272447 -0.097545 0.407746 +v -0.256640 -0.191342 0.384089 +v -0.230970 -0.277785 0.345671 +v -0.196424 -0.353553 0.293969 +v -0.154329 -0.415735 0.230970 +v -0.106304 -0.461940 0.159095 +v -0.054193 -0.490393 0.081106 +v -0.068975 0.490393 0.068975 +v -0.135299 0.461940 0.135299 +v -0.196424 0.415735 0.196424 +v -0.250000 0.353553 0.250000 +v -0.293969 0.277785 0.293969 +v -0.326641 0.191342 0.326641 +v -0.346760 0.097545 0.346760 +v -0.353553 0.000000 0.353553 +v -0.346760 -0.097545 0.346760 +v -0.326641 -0.191342 0.326641 +v -0.293969 -0.277785 0.293969 +v -0.250000 -0.353553 0.250000 +v -0.196424 -0.415735 0.196424 +v -0.135299 -0.461940 0.135299 +v -0.068975 -0.490393 0.068975 +v -0.081106 0.490393 0.054193 +v -0.159095 0.461940 0.106304 +v -0.230970 0.415735 0.154329 +v -0.293969 0.353553 0.196424 +v -0.345671 0.277785 0.230970 +v -0.384089 0.191342 0.256640 +v -0.407746 0.097545 0.272447 +v -0.415735 0.000000 0.277785 +v -0.407746 -0.097545 0.272447 +v -0.384089 -0.191342 0.256640 +v -0.345671 -0.277785 0.230970 +v -0.293969 -0.353553 0.196424 +v -0.230970 -0.415735 0.154329 +v -0.159095 -0.461940 0.106304 +v -0.081106 -0.490393 0.054193 +v -0.090120 0.490393 0.037329 +v -0.176776 0.461940 0.073223 +v -0.256640 0.415735 0.106304 +v -0.326641 0.353553 0.135299 +v -0.384089 0.277785 0.159095 +v -0.426776 0.191342 0.176777 +v -0.453063 0.097545 0.187665 +v -0.461939 0.000000 0.191342 +v -0.453063 -0.097545 0.187665 +v -0.426776 -0.191342 0.176777 +v -0.384089 -0.277785 0.159095 +v -0.326641 -0.353553 0.135299 +v -0.256640 -0.415735 0.106304 +v -0.176776 -0.461940 0.073223 +v -0.090120 -0.490393 0.037329 +v -0.095671 0.490393 0.019030 +v -0.187665 0.461940 0.037329 +v -0.272447 0.415735 0.054193 +v -0.346760 0.353553 0.068975 +v -0.407746 0.277785 0.081106 +v -0.453063 0.191342 0.090120 +v -0.480969 0.097545 0.095671 +v -0.490392 0.000000 0.097545 +v -0.480969 -0.097545 0.095671 +v -0.453063 -0.191342 0.090120 +v -0.407746 -0.277785 0.081106 +v -0.346760 -0.353553 0.068975 +v -0.272447 -0.415735 0.054193 +v -0.187665 -0.461940 0.037329 +v -0.095671 -0.490393 0.019030 +v -0.013167 -0.495196 0.000000 +v -0.005039 0.495196 0.012165 +v -0.013167 0.495196 0.000000 +v -0.012914 0.495196 -0.002569 +v -0.012914 -0.495196 -0.002569 +v -0.012165 0.495196 -0.005039 +v -0.012165 -0.495196 -0.005039 +v -0.010948 0.495196 -0.007315 +v -0.010948 -0.495196 -0.007315 +v -0.009311 0.495196 -0.009311 +v -0.009311 -0.495196 -0.009311 +v -0.007315 0.495196 -0.010948 +v -0.007315 -0.495196 -0.010948 +v -0.005039 0.495196 -0.012165 +v -0.005039 -0.495196 -0.012165 +v -0.002569 0.495196 -0.012914 +v -0.002569 -0.495196 -0.012914 +v 0.000000 0.495196 -0.013167 +v 0.000000 -0.495196 -0.013167 +v 0.002569 0.495196 -0.012914 +v 0.002569 -0.495196 -0.012914 +v 0.005039 0.495196 -0.012165 +v 0.005039 -0.495196 -0.012165 +v 0.007316 0.495196 -0.010948 +v 0.007316 -0.495196 -0.010948 +v 0.009311 0.495196 -0.009311 +v 0.009311 -0.495196 -0.009311 +v 0.010948 0.495196 -0.007315 +v 0.010948 -0.495196 -0.007315 +v 0.012165 0.495196 -0.005039 +v 0.012165 -0.495196 -0.005039 +v 0.012915 0.495196 -0.002569 +v 0.012915 -0.495196 -0.002569 +v 0.013168 0.495196 0.000000 +v 0.013168 -0.495196 0.000000 +v 0.012915 0.495196 0.002569 +v 0.012915 -0.495196 0.002569 +v 0.012165 0.495196 0.005039 +v 0.012165 -0.495196 0.005039 +v 0.010948 0.495196 0.007315 +v 0.010948 -0.495196 0.007315 +v 0.009311 0.495196 0.009311 +v 0.009311 -0.495196 0.009311 +v 0.007316 0.495196 0.010948 +v 0.007316 -0.495196 0.010948 +v 0.005039 0.495196 0.012165 +v 0.005039 -0.495196 0.012165 +v 0.002569 0.495196 0.012914 +v 0.002569 -0.495196 0.012914 +v 0.000000 0.495196 0.013167 +v 0.000000 -0.495196 0.013167 +v -0.002569 0.495196 0.012914 +v -0.002569 -0.495196 0.012914 +v -0.005039 -0.495196 0.012165 +v -0.007315 0.495196 0.010948 +v -0.007315 -0.495196 0.010948 +v -0.009311 0.495196 0.009311 +v -0.009311 -0.495196 0.009311 +v -0.010948 0.495196 0.007315 +v -0.010948 -0.495196 0.007315 +v -0.012165 0.495196 0.005039 +v -0.012165 -0.495196 0.005039 +v -0.012914 0.495196 0.002569 +v -0.012914 -0.495196 0.002569 +vt 0.437500 0.750000 +vt 0.437500 0.812500 +vt 0.375000 0.812500 +vt 0.375000 0.750000 +vt 0.437500 0.062500 +vt 0.437500 0.125000 +vt 0.375000 0.125000 +vt 0.375000 0.062500 +vt 0.437500 0.875000 +vt 0.437500 0.937500 +vt 0.375000 0.937500 +vt 0.375000 0.875000 +vt 0.437500 0.187500 +vt 0.437500 0.250000 +vt 0.375000 0.250000 +vt 0.375000 0.187500 +vt 0.437500 0.312500 +vt 0.437500 0.375000 +vt 0.375000 0.375000 +vt 0.375000 0.312500 +vt 0.437500 0.437500 +vt 0.437500 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.437500 +vt 0.437500 0.562500 +vt 0.437500 0.625000 +vt 0.375000 0.625000 +vt 0.375000 0.562500 +vt 0.437500 0.687500 +vt 0.375000 0.687500 +vt 0.312500 0.437500 +vt 0.312500 0.375000 +vt 0.312500 0.562500 +vt 0.312500 0.500000 +vt 0.312500 0.687500 +vt 0.312500 0.625000 +vt 0.312500 0.812500 +vt 0.312500 0.750000 +vt 0.312500 0.125000 +vt 0.312500 0.062500 +vt 0.312500 0.937500 +vt 0.312500 0.875000 +vt 0.312500 0.250000 +vt 0.312500 0.187500 +vt 0.312500 0.312500 +vt 0.250000 0.437500 +vt 0.250000 0.375000 +vt 0.250000 0.562500 +vt 0.250000 0.500000 +vt 0.250000 0.687500 +vt 0.250000 0.625000 +vt 0.250000 0.812500 +vt 0.250000 0.750000 +vt 0.250000 0.125000 +vt 0.250000 0.062500 +vt 0.250000 0.937500 +vt 0.250000 0.875000 +vt 0.250000 0.250000 +vt 0.250000 0.187500 +vt 0.250000 0.312500 +vt 0.187500 0.437500 +vt 0.187500 0.375000 +vt 0.187500 0.562500 +vt 0.187500 0.500000 +vt 0.187500 0.687500 +vt 0.187500 0.625000 +vt 0.187500 0.812500 +vt 0.187500 0.750000 +vt 0.187500 0.125000 +vt 0.187500 0.062500 +vt 0.187500 0.937500 +vt 0.187500 0.875000 +vt 0.187500 0.250000 +vt 0.187500 0.187500 +vt 0.187500 0.312500 +vt 0.125000 0.437500 +vt 0.125000 0.375000 +vt 0.125000 0.562500 +vt 0.125000 0.500000 +vt 0.125000 0.687500 +vt 0.125000 0.625000 +vt 0.125000 0.812500 +vt 0.125000 0.750000 +vt 0.125000 0.125000 +vt 0.125000 0.062500 +vt 0.125000 0.937500 +vt 0.125000 0.875000 +vt 0.125000 0.250000 +vt 0.125000 0.187500 +vt 0.125000 0.312500 +vt 0.062500 0.437500 +vt 0.062500 0.375000 +vt 0.062500 0.562500 +vt 0.062500 0.500000 +vt 0.062500 0.687500 +vt 0.062500 0.625000 +vt 0.062500 0.812500 +vt 0.062500 0.750000 +vt 0.062500 0.125000 +vt 0.062500 0.062500 +vt 0.062500 0.937500 +vt 0.062500 0.875000 +vt 0.062500 0.250000 +vt 0.062500 0.187500 +vt 0.062500 0.312500 +vt 0.000000 0.437500 +vt 0.000000 0.375000 +vt 0.000000 0.562500 +vt 0.000000 0.500000 +vt 0.000000 0.687500 +vt 0.000000 0.625000 +vt 0.000000 0.812500 +vt 0.000000 0.750000 +vt 0.000000 0.125000 +vt 0.000000 0.062500 +vt 0.000000 0.937500 +vt 0.000000 0.875000 +vt 0.000000 0.250000 +vt 0.000000 0.187500 +vt 0.000000 0.312500 +vt 1.000000 0.375000 +vt 1.000000 0.437500 +vt 0.937500 0.437500 +vt 0.937500 0.375000 +vt 1.000000 0.500000 +vt 1.000000 0.562500 +vt 0.937500 0.562500 +vt 0.937500 0.500000 +vt 1.000000 0.625000 +vt 1.000000 0.687500 +vt 0.937500 0.687500 +vt 0.937500 0.625000 +vt 1.000000 0.750000 +vt 1.000000 0.812500 +vt 0.937500 0.812500 +vt 0.937500 0.750000 +vt 1.000000 0.062500 +vt 1.000000 0.125000 +vt 0.937500 0.125000 +vt 0.937500 0.062500 +vt 1.000000 0.875000 +vt 1.000000 0.937500 +vt 0.937500 0.937500 +vt 0.937500 0.875000 +vt 1.000000 0.187500 +vt 1.000000 0.250000 +vt 0.937500 0.250000 +vt 0.937500 0.187500 +vt 1.000000 0.312500 +vt 0.937500 0.312500 +vt 0.875000 0.437500 +vt 0.875000 0.375000 +vt 0.875000 0.562500 +vt 0.875000 0.500000 +vt 0.875000 0.687500 +vt 0.875000 0.625000 +vt 0.875000 0.812500 +vt 0.875000 0.750000 +vt 0.875000 0.125000 +vt 0.875000 0.062500 +vt 0.875000 0.937500 +vt 0.875000 0.875000 +vt 0.875000 0.250000 +vt 0.875000 0.187500 +vt 0.875000 0.312500 +vt 0.812500 0.437500 +vt 0.812500 0.375000 +vt 0.812500 0.562500 +vt 0.812500 0.500000 +vt 0.812500 0.687500 +vt 0.812500 0.625000 +vt 0.812500 0.812500 +vt 0.812500 0.750000 +vt 0.812500 0.125000 +vt 0.812500 0.062500 +vt 0.812500 0.937500 +vt 0.812500 0.875000 +vt 0.812500 0.250000 +vt 0.812500 0.187500 +vt 0.812500 0.312500 +vt 0.750000 0.437500 +vt 0.750000 0.375000 +vt 0.750000 0.562500 +vt 0.750000 0.500000 +vt 0.750000 0.687500 +vt 0.750000 0.625000 +vt 0.750000 0.812500 +vt 0.750000 0.750000 +vt 0.750000 0.125000 +vt 0.750000 0.062500 +vt 0.750000 0.937500 +vt 0.750000 0.875000 +vt 0.750000 0.250000 +vt 0.750000 0.187500 +vt 0.750000 0.312500 +vt 0.687500 0.437500 +vt 0.687500 0.375000 +vt 0.687500 0.562500 +vt 0.687500 0.500000 +vt 0.687500 0.687500 +vt 0.687500 0.625000 +vt 0.687500 0.812500 +vt 0.687500 0.750000 +vt 0.687500 0.125000 +vt 0.687500 0.062500 +vt 0.687500 0.937500 +vt 0.687500 0.875000 +vt 0.687500 0.250000 +vt 0.687500 0.187500 +vt 0.687500 0.312500 +vt 0.625000 0.437500 +vt 0.625000 0.375000 +vt 0.625000 0.562500 +vt 0.625000 0.500000 +vt 0.625000 0.687500 +vt 0.625000 0.625000 +vt 0.625000 0.812500 +vt 0.625000 0.750000 +vt 0.625000 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.937500 +vt 0.625000 0.875000 +vt 0.625000 0.250000 +vt 0.625000 0.187500 +vt 0.625000 0.312500 +vt 0.562500 0.437500 +vt 0.562500 0.375000 +vt 0.562500 0.562500 +vt 0.562500 0.500000 +vt 0.562500 0.687500 +vt 0.562500 0.625000 +vt 0.562500 0.812500 +vt 0.562500 0.750000 +vt 0.562500 0.125000 +vt 0.562500 0.062500 +vt 0.562500 0.937500 +vt 0.562500 0.875000 +vt 0.562500 0.250000 +vt 0.562500 0.187500 +vt 0.562500 0.312500 +vt 0.500000 0.437500 +vt 0.500000 0.375000 +vt 0.500000 0.562500 +vt 0.500000 0.500000 +vt 0.500000 0.687500 +vt 0.500000 0.625000 +vt 0.500000 0.812500 +vt 0.500000 0.750000 +vt 0.500000 0.125000 +vt 0.500000 0.062500 +vt 0.500000 0.937500 +vt 0.500000 0.875000 +vt 0.500000 0.250000 +vt 0.500000 0.187500 +vt 0.500000 0.312500 +vt 0.437500 0.000000 +vt 0.375000 0.000000 +vt 0.312500 0.000000 +vt 0.250000 0.000000 +vt 0.187500 0.000000 +vt 0.125000 0.000000 +vt 0.062500 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.937500 0.000000 +vt 0.875000 0.000000 +vt 0.812500 0.000000 +vt 0.750000 0.000000 +vt 0.687500 0.000000 +vt 0.625000 0.000000 +vt 0.562500 0.000000 +vt 0.500000 0.000000 +vt 0.500000 1.000000 +vt 0.437500 1.000000 +vt 0.562500 1.000000 +vt 0.625000 1.000000 +vt 0.687500 1.000000 +vt 0.750000 1.000000 +vt 0.812500 1.000000 +vt 0.875000 1.000000 +vt 0.937500 1.000000 +vt 1.000000 1.000000 +vt 0.062500 1.000000 +vt -0.000000 1.000000 +vt 0.125000 1.000000 +vt 0.187500 1.000000 +vt 0.250000 1.000000 +vt 0.312500 1.000000 +vt 0.375000 1.000000 +vt 0.031303 0.999906 +vt 0.037377 0.999307 +vt 0.043218 0.997535 +vt 0.048601 0.994658 +vt 0.053319 0.990786 +vt 0.057192 0.986068 +vt 0.060069 0.980685 +vt 0.061841 0.974844 +vt 0.062439 0.968769 +vt 0.061841 0.962695 +vt 0.060069 0.956854 +vt 0.057192 0.951471 +vt 0.053319 0.946753 +vt 0.048601 0.942881 +vt 0.043218 0.940004 +vt 0.037377 0.938232 +vt 0.031303 0.937633 +vt 0.025229 0.938232 +vt 0.019388 0.940004 +vt 0.014005 0.942881 +vt 0.009286 0.946753 +vt 0.005414 0.951471 +vt 0.002537 0.956854 +vt 0.000765 0.962695 +vt 0.000167 0.968770 +vt 0.000765 0.974844 +vt 0.002537 0.980685 +vt 0.005414 0.986068 +vt 0.009286 0.990786 +vt 0.014005 0.994658 +vt 0.019388 0.997535 +vt 0.025229 0.999307 +vn -0.710100 0.704000 0.000000 +vn -0.559800 0.828600 0.000000 +vn -0.549000 0.828600 -0.109200 +vn -0.696500 0.704000 -0.138500 +vn -0.182000 -0.983300 0.000000 +vn -0.387900 -0.921700 0.000000 +vn -0.380400 -0.921700 -0.075700 +vn -0.178400 -0.983300 -0.035500 +vn -0.387900 0.921700 0.000000 +vn -0.182000 0.983300 0.000000 +vn -0.178400 0.983300 -0.035500 +vn -0.380400 0.921700 -0.075700 +vn -0.559800 -0.828600 0.000000 +vn -0.710100 -0.704000 0.000000 +vn -0.696500 -0.704000 -0.138500 +vn -0.549000 -0.828600 -0.109200 +vn -0.833300 -0.552800 0.000000 +vn -0.924700 -0.380500 0.000000 +vn -0.907000 -0.380500 -0.180400 +vn -0.817300 -0.552800 -0.162600 +vn -0.981000 -0.193900 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.980800 0.000000 -0.195100 +vn -0.962200 -0.193900 -0.191400 +vn -0.981000 0.193900 0.000000 +vn -0.924700 0.380500 0.000000 +vn -0.907000 0.380500 -0.180400 +vn -0.962200 0.193900 -0.191400 +vn -0.833300 0.552800 0.000000 +vn -0.817300 0.552800 -0.162600 +vn -0.906300 -0.193900 -0.375400 +vn -0.854400 -0.380500 -0.353900 +vn -0.906300 0.193900 -0.375400 +vn -0.923900 0.000000 -0.382700 +vn -0.769900 0.552800 -0.318900 +vn -0.854400 0.380500 -0.353900 +vn -0.517100 0.828600 -0.214200 +vn -0.656100 0.704000 -0.271700 +vn -0.358300 -0.921700 -0.148400 +vn -0.168100 -0.983300 -0.069600 +vn -0.168100 0.983300 -0.069600 +vn -0.358300 0.921700 -0.148400 +vn -0.656100 -0.704000 -0.271700 +vn -0.517100 -0.828600 -0.214200 +vn -0.769900 -0.552800 -0.318900 +vn -0.815700 -0.193900 -0.545000 +vn -0.768900 -0.380500 -0.513700 +vn -0.815700 0.193900 -0.545000 +vn -0.831400 0.000000 -0.555600 +vn -0.692900 0.552800 -0.463000 +vn -0.768900 0.380500 -0.513700 +vn -0.465400 0.828600 -0.311000 +vn -0.590400 0.704000 -0.394500 +vn -0.322500 -0.921700 -0.215500 +vn -0.151300 -0.983300 -0.101100 +vn -0.151300 0.983300 -0.101100 +vn -0.322500 0.921700 -0.215500 +vn -0.590400 -0.704000 -0.394500 +vn -0.465400 -0.828600 -0.311000 +vn -0.692900 -0.552800 -0.463000 +vn -0.693700 -0.193900 -0.693700 +vn -0.653900 -0.380500 -0.653900 +vn -0.693700 0.193900 -0.693700 +vn -0.707100 0.000000 -0.707100 +vn -0.589300 0.552800 -0.589300 +vn -0.653900 0.380500 -0.653900 +vn -0.395800 0.828600 -0.395800 +vn -0.502100 0.704000 -0.502100 +vn -0.274300 -0.921700 -0.274300 +vn -0.128600 -0.983300 -0.128600 +vn -0.128600 0.983300 -0.128600 +vn -0.274300 0.921700 -0.274300 +vn -0.502100 -0.704000 -0.502100 +vn -0.395800 -0.828600 -0.395800 +vn -0.589300 -0.552800 -0.589300 +vn -0.545000 -0.193900 -0.815700 +vn -0.513700 -0.380500 -0.768900 +vn -0.545000 0.193900 -0.815700 +vn -0.555600 0.000000 -0.831400 +vn -0.463000 0.552800 -0.692900 +vn -0.513700 0.380500 -0.768900 +vn -0.311000 0.828600 -0.465400 +vn -0.394500 0.704000 -0.590400 +vn -0.215500 -0.921700 -0.322500 +vn -0.101100 -0.983300 -0.151300 +vn -0.101100 0.983300 -0.151300 +vn -0.215500 0.921700 -0.322500 +vn -0.394500 -0.704000 -0.590400 +vn -0.311000 -0.828600 -0.465400 +vn -0.463000 -0.552800 -0.692900 +vn -0.375400 -0.193900 -0.906300 +vn -0.353900 -0.380500 -0.854400 +vn -0.375400 0.193900 -0.906300 +vn -0.382700 0.000000 -0.923900 +vn -0.318900 0.552800 -0.769900 +vn -0.353900 0.380500 -0.854400 +vn -0.214200 0.828600 -0.517100 +vn -0.271700 0.704000 -0.656100 +vn -0.148400 -0.921700 -0.358300 +vn -0.069600 -0.983300 -0.168100 +vn -0.069600 0.983300 -0.168100 +vn -0.148400 0.921700 -0.358300 +vn -0.271700 -0.704000 -0.656100 +vn -0.214200 -0.828600 -0.517100 +vn -0.318900 -0.552800 -0.769900 +vn -0.191400 -0.193900 -0.962200 +vn -0.180400 -0.380500 -0.907000 +vn -0.191400 0.193900 -0.962200 +vn -0.195100 0.000000 -0.980800 +vn -0.162600 0.552800 -0.817300 +vn -0.180400 0.380500 -0.907000 +vn -0.109200 0.828600 -0.549000 +vn -0.138500 0.704000 -0.696500 +vn -0.075700 -0.921700 -0.380400 +vn -0.035500 -0.983300 -0.178400 +vn -0.035500 0.983300 -0.178400 +vn -0.075700 0.921700 -0.380400 +vn -0.138500 -0.704000 -0.696500 +vn -0.109200 -0.828600 -0.549000 +vn -0.162600 -0.552800 -0.817300 +vn 0.000000 -0.193900 -0.981000 +vn 0.000000 -0.380500 -0.924700 +vn 0.000000 0.193900 -0.981000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.552800 -0.833300 +vn 0.000000 0.380500 -0.924700 +vn 0.000000 0.828600 -0.559800 +vn 0.000000 0.704000 -0.710100 +vn 0.000000 -0.921700 -0.387900 +vn 0.000000 -0.983300 -0.182000 +vn 0.000000 0.983300 -0.182000 +vn 0.000000 0.921700 -0.387900 +vn 0.000000 -0.704000 -0.710100 +vn 0.000000 -0.828600 -0.559800 +vn 0.000000 -0.552800 -0.833300 +vn 0.191400 -0.193900 -0.962200 +vn 0.180400 -0.380500 -0.907000 +vn 0.191400 0.193900 -0.962200 +vn 0.195100 0.000000 -0.980800 +vn 0.162600 0.552800 -0.817300 +vn 0.180400 0.380500 -0.907000 +vn 0.109200 0.828600 -0.549000 +vn 0.138500 0.704000 -0.696500 +vn 0.075700 -0.921700 -0.380400 +vn 0.035500 -0.983300 -0.178400 +vn 0.035500 0.983300 -0.178400 +vn 0.075700 0.921700 -0.380400 +vn 0.138500 -0.704000 -0.696500 +vn 0.109200 -0.828600 -0.549000 +vn 0.162600 -0.552800 -0.817300 +vn 0.375400 -0.193900 -0.906300 +vn 0.353900 -0.380500 -0.854400 +vn 0.375400 0.193900 -0.906300 +vn 0.382700 0.000000 -0.923900 +vn 0.318900 0.552800 -0.769900 +vn 0.353900 0.380500 -0.854400 +vn 0.214200 0.828600 -0.517100 +vn 0.271700 0.704000 -0.656100 +vn 0.148400 -0.921700 -0.358300 +vn 0.069600 -0.983300 -0.168100 +vn 0.069600 0.983300 -0.168100 +vn 0.148400 0.921700 -0.358300 +vn 0.271700 -0.704000 -0.656100 +vn 0.214200 -0.828600 -0.517100 +vn 0.318900 -0.552800 -0.769900 +vn 0.545000 -0.193900 -0.815700 +vn 0.513700 -0.380500 -0.768900 +vn 0.545000 0.193900 -0.815700 +vn 0.555600 0.000000 -0.831400 +vn 0.463000 0.552800 -0.692900 +vn 0.513700 0.380500 -0.768900 +vn 0.311000 0.828600 -0.465400 +vn 0.394500 0.704000 -0.590400 +vn 0.215500 -0.921700 -0.322500 +vn 0.101100 -0.983300 -0.151300 +vn 0.101100 0.983300 -0.151300 +vn 0.215500 0.921700 -0.322500 +vn 0.394500 -0.704000 -0.590400 +vn 0.311000 -0.828600 -0.465400 +vn 0.463000 -0.552800 -0.692900 +vn 0.693700 -0.193900 -0.693700 +vn 0.653900 -0.380500 -0.653900 +vn 0.693700 0.193900 -0.693700 +vn 0.707100 0.000000 -0.707100 +vn 0.589300 0.552800 -0.589300 +vn 0.653900 0.380500 -0.653900 +vn 0.395800 0.828600 -0.395800 +vn 0.502100 0.704000 -0.502100 +vn 0.274300 -0.921700 -0.274300 +vn 0.128600 -0.983300 -0.128600 +vn 0.128600 0.983300 -0.128600 +vn 0.274300 0.921700 -0.274300 +vn 0.502100 -0.704000 -0.502100 +vn 0.395800 -0.828600 -0.395800 +vn 0.589300 -0.552800 -0.589300 +vn 0.815700 -0.193900 -0.545000 +vn 0.768900 -0.380500 -0.513700 +vn 0.815700 0.193900 -0.545000 +vn 0.831400 0.000000 -0.555600 +vn 0.692900 0.552800 -0.463000 +vn 0.768900 0.380500 -0.513700 +vn 0.465400 0.828600 -0.311000 +vn 0.590400 0.704000 -0.394500 +vn 0.322500 -0.921700 -0.215500 +vn 0.151300 -0.983300 -0.101100 +vn 0.151300 0.983300 -0.101100 +vn 0.322500 0.921700 -0.215500 +vn 0.590400 -0.704000 -0.394500 +vn 0.465400 -0.828600 -0.311000 +vn 0.692900 -0.552800 -0.463000 +vn 0.906300 -0.193900 -0.375400 +vn 0.854400 -0.380500 -0.353900 +vn 0.906300 0.193900 -0.375400 +vn 0.923900 0.000000 -0.382700 +vn 0.769900 0.552800 -0.318900 +vn 0.854400 0.380500 -0.353900 +vn 0.517100 0.828600 -0.214200 +vn 0.656100 0.704000 -0.271700 +vn 0.358300 -0.921700 -0.148400 +vn 0.168100 -0.983300 -0.069600 +vn 0.168100 0.983300 -0.069600 +vn 0.358300 0.921700 -0.148400 +vn 0.656100 -0.704000 -0.271700 +vn 0.517100 -0.828600 -0.214200 +vn 0.769900 -0.552800 -0.318900 +vn 0.962200 -0.193900 -0.191400 +vn 0.907000 -0.380500 -0.180400 +vn 0.962200 0.193900 -0.191400 +vn 0.980800 0.000000 -0.195100 +vn 0.817300 0.552800 -0.162600 +vn 0.907000 0.380500 -0.180400 +vn 0.549000 0.828600 -0.109200 +vn 0.696500 0.704000 -0.138500 +vn 0.380400 -0.921700 -0.075700 +vn 0.178400 -0.983300 -0.035500 +vn 0.178400 0.983300 -0.035500 +vn 0.380400 0.921700 -0.075700 +vn 0.696500 -0.704000 -0.138500 +vn 0.549000 -0.828600 -0.109200 +vn 0.817300 -0.552800 -0.162600 +vn 0.981000 -0.193900 0.000000 +vn 0.924700 -0.380500 0.000000 +vn 0.981000 0.193900 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.833300 0.552800 0.000000 +vn 0.924700 0.380500 0.000000 +vn 0.559800 0.828600 0.000000 +vn 0.710100 0.704000 0.000000 +vn 0.387900 -0.921700 0.000000 +vn 0.182000 -0.983300 0.000000 +vn 0.182000 0.983300 0.000000 +vn 0.387900 0.921700 0.000000 +vn 0.710100 -0.704000 0.000000 +vn 0.559800 -0.828600 0.000000 +vn 0.833300 -0.552800 0.000000 +vn 0.962200 -0.193900 0.191400 +vn 0.907000 -0.380500 0.180400 +vn 0.962200 0.193900 0.191400 +vn 0.980800 0.000000 0.195100 +vn 0.817300 0.552800 0.162600 +vn 0.907000 0.380500 0.180400 +vn 0.549000 0.828600 0.109200 +vn 0.696500 0.704000 0.138500 +vn 0.380400 -0.921700 0.075700 +vn 0.178400 -0.983300 0.035500 +vn 0.178400 0.983300 0.035500 +vn 0.380400 0.921700 0.075700 +vn 0.696500 -0.704000 0.138500 +vn 0.549000 -0.828600 0.109200 +vn 0.817300 -0.552800 0.162600 +vn 0.906300 -0.193900 0.375400 +vn 0.854400 -0.380500 0.353900 +vn 0.906300 0.193900 0.375400 +vn 0.923900 0.000000 0.382700 +vn 0.769900 0.552800 0.318900 +vn 0.854400 0.380500 0.353900 +vn 0.517100 0.828600 0.214200 +vn 0.656100 0.704000 0.271700 +vn 0.358300 -0.921700 0.148400 +vn 0.168100 -0.983300 0.069600 +vn 0.168100 0.983300 0.069600 +vn 0.358300 0.921700 0.148400 +vn 0.656100 -0.704000 0.271700 +vn 0.517100 -0.828600 0.214200 +vn 0.769900 -0.552800 0.318900 +vn 0.815700 -0.193900 0.545000 +vn 0.768900 -0.380500 0.513700 +vn 0.815700 0.193900 0.545000 +vn 0.831400 0.000000 0.555600 +vn 0.692900 0.552800 0.463000 +vn 0.768900 0.380500 0.513700 +vn 0.465400 0.828600 0.311000 +vn 0.590400 0.704000 0.394500 +vn 0.322500 -0.921700 0.215500 +vn 0.151300 -0.983300 0.101100 +vn 0.151300 0.983300 0.101100 +vn 0.322500 0.921700 0.215500 +vn 0.590400 -0.704000 0.394500 +vn 0.465400 -0.828600 0.311000 +vn 0.692900 -0.552800 0.463000 +vn 0.693700 -0.193900 0.693700 +vn 0.653900 -0.380500 0.653900 +vn 0.693700 0.193900 0.693700 +vn 0.707100 0.000000 0.707100 +vn 0.589300 0.552800 0.589300 +vn 0.653900 0.380500 0.653900 +vn 0.395800 0.828600 0.395800 +vn 0.502100 0.704000 0.502100 +vn 0.274300 -0.921700 0.274300 +vn 0.128600 -0.983300 0.128600 +vn 0.128600 0.983300 0.128600 +vn 0.274300 0.921700 0.274300 +vn 0.502100 -0.704000 0.502100 +vn 0.395800 -0.828600 0.395800 +vn 0.589300 -0.552800 0.589300 +vn 0.545000 -0.193900 0.815700 +vn 0.513700 -0.380500 0.768900 +vn 0.545000 0.193900 0.815700 +vn 0.555600 0.000000 0.831400 +vn 0.463000 0.552800 0.692900 +vn 0.513700 0.380500 0.768900 +vn 0.311000 0.828600 0.465400 +vn 0.394500 0.704000 0.590400 +vn 0.215500 -0.921700 0.322500 +vn 0.101100 -0.983300 0.151300 +vn 0.101100 0.983300 0.151300 +vn 0.215500 0.921700 0.322500 +vn 0.394500 -0.704000 0.590400 +vn 0.311000 -0.828600 0.465400 +vn 0.463000 -0.552800 0.692900 +vn 0.375400 -0.193900 0.906300 +vn 0.353900 -0.380500 0.854400 +vn 0.375400 0.193900 0.906300 +vn 0.382700 0.000000 0.923900 +vn 0.318900 0.552800 0.769900 +vn 0.353900 0.380500 0.854400 +vn 0.214200 0.828600 0.517100 +vn 0.271700 0.704000 0.656100 +vn 0.148400 -0.921700 0.358300 +vn 0.069600 -0.983300 0.168100 +vn 0.069600 0.983300 0.168100 +vn 0.148400 0.921700 0.358300 +vn 0.271700 -0.704000 0.656100 +vn 0.214200 -0.828600 0.517100 +vn 0.318900 -0.552800 0.769900 +vn 0.191400 -0.193900 0.962200 +vn 0.180400 -0.380500 0.907000 +vn 0.191400 0.193900 0.962200 +vn 0.195100 0.000000 0.980800 +vn 0.162600 0.552800 0.817300 +vn 0.180400 0.380500 0.907000 +vn 0.109200 0.828600 0.549000 +vn 0.138500 0.704000 0.696500 +vn 0.075700 -0.921700 0.380400 +vn 0.035500 -0.983300 0.178400 +vn 0.035500 0.983300 0.178400 +vn 0.075700 0.921700 0.380400 +vn 0.138500 -0.704000 0.696500 +vn 0.109200 -0.828600 0.549000 +vn 0.162600 -0.552800 0.817300 +vn 0.000000 -0.193900 0.981000 +vn 0.000000 -0.380500 0.924700 +vn 0.000000 0.193900 0.981000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.552800 0.833300 +vn 0.000000 0.380500 0.924700 +vn 0.000000 0.828600 0.559800 +vn 0.000000 0.704000 0.710100 +vn 0.000000 -0.921700 0.387900 +vn 0.000000 -0.983300 0.182000 +vn 0.000000 0.983300 0.182000 +vn 0.000000 0.921700 0.387900 +vn 0.000000 -0.704000 0.710100 +vn 0.000000 -0.828600 0.559800 +vn 0.000000 -0.552800 0.833300 +vn -0.191400 -0.193900 0.962200 +vn -0.180400 -0.380500 0.907000 +vn -0.191400 0.193900 0.962200 +vn -0.195100 0.000000 0.980800 +vn -0.162600 0.552800 0.817300 +vn -0.180400 0.380500 0.907000 +vn -0.109200 0.828600 0.549000 +vn -0.138500 0.704000 0.696500 +vn -0.075700 -0.921700 0.380400 +vn -0.035500 -0.983300 0.178400 +vn -0.035500 0.983300 0.178400 +vn -0.075700 0.921700 0.380400 +vn -0.138500 -0.704000 0.696500 +vn -0.109200 -0.828600 0.549000 +vn -0.162600 -0.552800 0.817300 +vn -0.375400 -0.193900 0.906300 +vn -0.353900 -0.380500 0.854400 +vn -0.375400 0.193900 0.906300 +vn -0.382700 0.000000 0.923900 +vn -0.318900 0.552800 0.769900 +vn -0.353900 0.380500 0.854400 +vn -0.214200 0.828600 0.517100 +vn -0.271700 0.704000 0.656100 +vn -0.148400 -0.921700 0.358300 +vn -0.069600 -0.983300 0.168100 +vn -0.069600 0.983300 0.168100 +vn -0.148400 0.921700 0.358300 +vn -0.271700 -0.704000 0.656100 +vn -0.214200 -0.828600 0.517100 +vn -0.318900 -0.552800 0.769900 +vn -0.545000 -0.193900 0.815700 +vn -0.513700 -0.380500 0.768900 +vn -0.545000 0.193900 0.815700 +vn -0.555600 0.000000 0.831400 +vn -0.463000 0.552800 0.692900 +vn -0.513700 0.380500 0.768900 +vn -0.311000 0.828600 0.465400 +vn -0.394500 0.704000 0.590400 +vn -0.215500 -0.921700 0.322500 +vn -0.101100 -0.983300 0.151300 +vn -0.101100 0.983300 0.151300 +vn -0.215500 0.921700 0.322500 +vn -0.394500 -0.704000 0.590400 +vn -0.311000 -0.828600 0.465400 +vn -0.463000 -0.552800 0.692900 +vn -0.693700 -0.193900 0.693700 +vn -0.653900 -0.380500 0.653900 +vn -0.693700 0.193900 0.693700 +vn -0.707100 0.000000 0.707100 +vn -0.589300 0.552800 0.589300 +vn -0.653900 0.380500 0.653900 +vn -0.395800 0.828600 0.395800 +vn -0.502100 0.704000 0.502100 +vn -0.274300 -0.921700 0.274300 +vn -0.128600 -0.983300 0.128600 +vn -0.128600 0.983300 0.128600 +vn -0.274300 0.921700 0.274300 +vn -0.502100 -0.704000 0.502100 +vn -0.395800 -0.828600 0.395800 +vn -0.589300 -0.552800 0.589300 +vn -0.815700 -0.193900 0.545000 +vn -0.768900 -0.380500 0.513700 +vn -0.815700 0.193900 0.545000 +vn -0.831400 0.000000 0.555600 +vn -0.692900 0.552800 0.463000 +vn -0.768900 0.380500 0.513700 +vn -0.465400 0.828600 0.311000 +vn -0.590400 0.704000 0.394500 +vn -0.322500 -0.921700 0.215500 +vn -0.151300 -0.983300 0.101100 +vn -0.151300 0.983300 0.101100 +vn -0.322500 0.921700 0.215500 +vn -0.590400 -0.704000 0.394500 +vn -0.465400 -0.828600 0.311000 +vn -0.692900 -0.552800 0.463000 +vn -0.906300 -0.193900 0.375400 +vn -0.854400 -0.380500 0.353900 +vn -0.906300 0.193900 0.375400 +vn -0.923900 0.000000 0.382700 +vn -0.769900 0.552800 0.318900 +vn -0.854400 0.380500 0.353900 +vn -0.517100 0.828600 0.214200 +vn -0.656100 0.704000 0.271700 +vn -0.358300 -0.921700 0.148400 +vn -0.168100 -0.983300 0.069600 +vn -0.168100 0.983300 0.069600 +vn -0.358300 0.921700 0.148400 +vn -0.656100 -0.704000 0.271700 +vn -0.517100 -0.828600 0.214200 +vn -0.769900 -0.552800 0.318900 +vn -0.962200 -0.193900 0.191400 +vn -0.907000 -0.380500 0.180400 +vn -0.962200 0.193900 0.191400 +vn -0.980800 0.000000 0.195100 +vn -0.817300 0.552800 0.162600 +vn -0.907000 0.380500 0.180400 +vn -0.549000 0.828600 0.109200 +vn -0.696500 0.704000 0.138500 +vn -0.380400 -0.921700 0.075700 +vn -0.178400 -0.983300 0.035500 +vn -0.178400 0.983300 0.035500 +vn -0.380400 0.921700 0.075700 +vn -0.696500 -0.704000 0.138500 +vn -0.549000 -0.828600 0.109200 +vn -0.817300 -0.552800 0.162600 +vn -0.030200 -0.999500 0.000000 +vn -0.029600 -0.999500 -0.005900 +vn -0.027900 -0.999500 -0.011500 +vn -0.025100 -0.999500 -0.016800 +vn -0.021300 -0.999500 -0.021300 +vn -0.016800 -0.999500 -0.025100 +vn -0.011500 -0.999500 -0.027900 +vn -0.005900 -0.999500 -0.029600 +vn 0.000000 -0.999500 -0.030200 +vn 0.005900 -0.999500 -0.029600 +vn 0.011500 -0.999500 -0.027900 +vn 0.016800 -0.999500 -0.025100 +vn 0.021300 -0.999500 -0.021300 +vn 0.025100 -0.999500 -0.016800 +vn 0.027900 -0.999500 -0.011500 +vn 0.029600 -0.999500 -0.005900 +vn 0.030200 -0.999500 0.000000 +vn 0.029600 -0.999500 0.005900 +vn 0.027900 -0.999500 0.011500 +vn 0.025100 -0.999500 0.016800 +vn 0.021300 -0.999500 0.021300 +vn 0.016800 -0.999500 0.025100 +vn 0.011500 -0.999500 0.027900 +vn 0.005900 -0.999500 0.029600 +vn 0.000000 -0.999500 0.030200 +vn -0.005900 -0.999500 0.029600 +vn -0.011500 -0.999500 0.027900 +vn -0.016800 -0.999500 0.025100 +vn -0.021300 -0.999500 0.021300 +vn -0.025100 -0.999500 0.016800 +vn -0.027900 -0.999500 0.011500 +vn -0.029600 -0.999500 0.005900 +vn -0.029600 0.999500 0.005900 +vn -0.030200 0.999500 0.000000 +vn -0.027900 0.999500 0.011500 +vn -0.025100 0.999500 0.016800 +vn -0.021300 0.999500 0.021300 +vn -0.016800 0.999500 0.025100 +vn -0.011500 0.999500 0.027900 +vn -0.005900 0.999500 0.029600 +vn 0.000000 0.999500 0.030200 +vn 0.005900 0.999500 0.029600 +vn 0.011500 0.999500 0.027900 +vn 0.016800 0.999500 0.025100 +vn 0.021300 0.999500 0.021300 +vn 0.025100 0.999500 0.016800 +vn 0.027900 0.999500 0.011500 +vn 0.029600 0.999500 0.005900 +vn 0.030200 0.999500 0.000000 +vn 0.029600 0.999500 -0.005900 +vn 0.027900 0.999500 -0.011500 +vn 0.025100 0.999500 -0.016800 +vn 0.021300 0.999500 -0.021300 +vn 0.016800 0.999500 -0.025100 +vn 0.011500 0.999500 -0.027900 +vn 0.005900 0.999500 -0.029600 +vn 0.000000 0.999500 -0.030200 +vn -0.005900 0.999500 -0.029600 +vn -0.011500 0.999500 -0.027900 +vn -0.016800 0.999500 -0.025100 +vn -0.021300 0.999500 -0.021300 +vn -0.025100 0.999500 -0.016800 +vn -0.027900 0.999500 -0.011500 +vn -0.029600 0.999500 -0.005900 +s 1 +f 4/1/1 3/2/2 18/3/3 19/4/4 +f 15/5/5 14/6/6 29/7/7 30/8/8 +f 2/9/9 1/10/10 16/11/11 17/12/12 +f 13/13/13 12/14/14 27/15/15 28/16/16 +f 11/17/17 10/18/18 25/19/19 26/20/20 +f 9/21/21 8/22/22 23/23/23 24/24/24 +f 7/25/25 6/26/26 21/27/27 22/28/28 +f 5/29/29 4/1/1 19/4/4 20/30/30 +f 3/2/2 2/9/9 17/12/12 18/3/3 +f 14/6/6 13/13/13 28/16/16 29/7/7 +f 12/14/14 11/17/17 26/20/20 27/15/15 +f 10/18/18 9/21/21 24/24/24 25/19/19 +f 8/22/22 7/25/25 22/28/28 23/23/23 +f 6/26/26 5/29/29 20/30/30 21/27/27 +f 25/19/19 24/24/24 39/31/31 40/32/32 +f 23/23/23 22/28/28 37/33/33 38/34/34 +f 21/27/27 20/30/30 35/35/35 36/36/36 +f 19/4/4 18/3/3 33/37/37 34/38/38 +f 30/8/8 29/7/7 44/39/39 45/40/40 +f 17/12/12 16/11/11 31/41/41 32/42/42 +f 28/16/16 27/15/15 42/43/43 43/44/44 +f 26/20/20 25/19/19 40/32/32 41/45/45 +f 24/24/24 23/23/23 38/34/34 39/31/31 +f 22/28/28 21/27/27 36/36/36 37/33/33 +f 20/30/30 19/4/4 34/38/38 35/35/35 +f 18/3/3 17/12/12 32/42/42 33/37/37 +f 29/7/7 28/16/16 43/44/44 44/39/39 +f 27/15/15 26/20/20 41/45/45 42/43/43 +f 40/32/32 39/31/31 54/46/46 55/47/47 +f 38/34/34 37/33/33 52/48/48 53/49/49 +f 36/36/36 35/35/35 50/50/50 51/51/51 +f 34/38/38 33/37/37 48/52/52 49/53/53 +f 45/40/40 44/39/39 59/54/54 60/55/55 +f 32/42/42 31/41/41 46/56/56 47/57/57 +f 43/44/44 42/43/43 57/58/58 58/59/59 +f 41/45/45 40/32/32 55/47/47 56/60/60 +f 39/31/31 38/34/34 53/49/49 54/46/46 +f 37/33/33 36/36/36 51/51/51 52/48/48 +f 35/35/35 34/38/38 49/53/53 50/50/50 +f 33/37/37 32/42/42 47/57/57 48/52/52 +f 44/39/39 43/44/44 58/59/59 59/54/54 +f 42/43/43 41/45/45 56/60/60 57/58/58 +f 55/47/47 54/46/46 69/61/61 70/62/62 +f 53/49/49 52/48/48 67/63/63 68/64/64 +f 51/51/51 50/50/50 65/65/65 66/66/66 +f 49/53/53 48/52/52 63/67/67 64/68/68 +f 60/55/55 59/54/54 74/69/69 75/70/70 +f 47/57/57 46/56/56 61/71/71 62/72/72 +f 58/59/59 57/58/58 72/73/73 73/74/74 +f 56/60/60 55/47/47 70/62/62 71/75/75 +f 54/46/46 53/49/49 68/64/64 69/61/61 +f 52/48/48 51/51/51 66/66/66 67/63/63 +f 50/50/50 49/53/53 64/68/68 65/65/65 +f 48/52/52 47/57/57 62/72/72 63/67/67 +f 59/54/54 58/59/59 73/74/74 74/69/69 +f 57/58/58 56/60/60 71/75/75 72/73/73 +f 70/62/62 69/61/61 84/76/76 85/77/77 +f 68/64/64 67/63/63 82/78/78 83/79/79 +f 66/66/66 65/65/65 80/80/80 81/81/81 +f 64/68/68 63/67/67 78/82/82 79/83/83 +f 75/70/70 74/69/69 89/84/84 90/85/85 +f 62/72/72 61/71/71 76/86/86 77/87/87 +f 73/74/74 72/73/73 87/88/88 88/89/89 +f 71/75/75 70/62/62 85/77/77 86/90/90 +f 69/61/61 68/64/64 83/79/79 84/76/76 +f 67/63/63 66/66/66 81/81/81 82/78/78 +f 65/65/65 64/68/68 79/83/83 80/80/80 +f 63/67/67 62/72/72 77/87/87 78/82/82 +f 74/69/69 73/74/74 88/89/89 89/84/84 +f 72/73/73 71/75/75 86/90/90 87/88/88 +f 85/77/77 84/76/76 99/91/91 100/92/92 +f 83/79/79 82/78/78 97/93/93 98/94/94 +f 81/81/81 80/80/80 95/95/95 96/96/96 +f 79/83/83 78/82/82 93/97/97 94/98/98 +f 90/85/85 89/84/84 104/99/99 105/100/100 +f 77/87/87 76/86/86 91/101/101 92/102/102 +f 88/89/89 87/88/88 102/103/103 103/104/104 +f 86/90/90 85/77/77 100/92/92 101/105/105 +f 84/76/76 83/79/79 98/94/94 99/91/91 +f 82/78/78 81/81/81 96/96/96 97/93/93 +f 80/80/80 79/83/83 94/98/98 95/95/95 +f 78/82/82 77/87/87 92/102/102 93/97/97 +f 89/84/84 88/89/89 103/104/104 104/99/99 +f 87/88/88 86/90/90 101/105/105 102/103/103 +f 100/92/92 99/91/91 114/106/106 115/107/107 +f 98/94/94 97/93/93 112/108/108 113/109/109 +f 96/96/96 95/95/95 110/110/110 111/111/111 +f 94/98/98 93/97/97 108/112/112 109/113/113 +f 105/100/100 104/99/99 119/114/114 120/115/115 +f 92/102/102 91/101/101 106/116/116 107/117/117 +f 103/104/104 102/103/103 117/118/118 118/119/119 +f 101/105/105 100/92/92 115/107/107 116/120/120 +f 99/91/91 98/94/94 113/109/109 114/106/106 +f 97/93/93 96/96/96 111/111/111 112/108/108 +f 95/95/95 94/98/98 109/113/113 110/110/110 +f 93/97/97 92/102/102 107/117/117 108/112/112 +f 104/99/99 103/104/104 118/119/119 119/114/114 +f 102/103/103 101/105/105 116/120/120 117/118/118 +f 115/121/107 114/122/106 129/123/121 130/124/122 +f 113/125/109 112/126/108 127/127/123 128/128/124 +f 111/129/111 110/130/110 125/131/125 126/132/126 +f 109/133/113 108/134/112 123/135/127 124/136/128 +f 120/137/115 119/138/114 134/139/129 135/140/130 +f 107/141/117 106/142/116 121/143/131 122/144/132 +f 118/145/119 117/146/118 132/147/133 133/148/134 +f 116/149/120 115/121/107 130/124/122 131/150/135 +f 114/122/106 113/125/109 128/128/124 129/123/121 +f 112/126/108 111/129/111 126/132/126 127/127/123 +f 110/130/110 109/133/113 124/136/128 125/131/125 +f 108/134/112 107/141/117 122/144/132 123/135/127 +f 119/138/114 118/145/119 133/148/134 134/139/129 +f 117/146/118 116/149/120 131/150/135 132/147/133 +f 130/124/122 129/123/121 144/151/136 145/152/137 +f 128/128/124 127/127/123 142/153/138 143/154/139 +f 126/132/126 125/131/125 140/155/140 141/156/141 +f 124/136/128 123/135/127 138/157/142 139/158/143 +f 135/140/130 134/139/129 149/159/144 150/160/145 +f 122/144/132 121/143/131 136/161/146 137/162/147 +f 133/148/134 132/147/133 147/163/148 148/164/149 +f 131/150/135 130/124/122 145/152/137 146/165/150 +f 129/123/121 128/128/124 143/154/139 144/151/136 +f 127/127/123 126/132/126 141/156/141 142/153/138 +f 125/131/125 124/136/128 139/158/143 140/155/140 +f 123/135/127 122/144/132 137/162/147 138/157/142 +f 134/139/129 133/148/134 148/164/149 149/159/144 +f 132/147/133 131/150/135 146/165/150 147/163/148 +f 145/152/137 144/151/136 159/166/151 160/167/152 +f 143/154/139 142/153/138 157/168/153 158/169/154 +f 141/156/141 140/155/140 155/170/155 156/171/156 +f 139/158/143 138/157/142 153/172/157 154/173/158 +f 150/160/145 149/159/144 164/174/159 165/175/160 +f 137/162/147 136/161/146 151/176/161 152/177/162 +f 148/164/149 147/163/148 162/178/163 163/179/164 +f 146/165/150 145/152/137 160/167/152 161/180/165 +f 144/151/136 143/154/139 158/169/154 159/166/151 +f 142/153/138 141/156/141 156/171/156 157/168/153 +f 140/155/140 139/158/143 154/173/158 155/170/155 +f 138/157/142 137/162/147 152/177/162 153/172/157 +f 149/159/144 148/164/149 163/179/164 164/174/159 +f 147/163/148 146/165/150 161/180/165 162/178/163 +f 160/167/152 159/166/151 174/181/166 175/182/167 +f 158/169/154 157/168/153 172/183/168 173/184/169 +f 156/171/156 155/170/155 170/185/170 171/186/171 +f 154/173/158 153/172/157 168/187/172 169/188/173 +f 165/175/160 164/174/159 179/189/174 180/190/175 +f 152/177/162 151/176/161 166/191/176 167/192/177 +f 163/179/164 162/178/163 177/193/178 178/194/179 +f 161/180/165 160/167/152 175/182/167 176/195/180 +f 159/166/151 158/169/154 173/184/169 174/181/166 +f 157/168/153 156/171/156 171/186/171 172/183/168 +f 155/170/155 154/173/158 169/188/173 170/185/170 +f 153/172/157 152/177/162 167/192/177 168/187/172 +f 164/174/159 163/179/164 178/194/179 179/189/174 +f 162/178/163 161/180/165 176/195/180 177/193/178 +f 175/182/167 174/181/166 189/196/181 190/197/182 +f 173/184/169 172/183/168 187/198/183 188/199/184 +f 171/186/171 170/185/170 185/200/185 186/201/186 +f 169/188/173 168/187/172 183/202/187 184/203/188 +f 180/190/175 179/189/174 194/204/189 195/205/190 +f 167/192/177 166/191/176 181/206/191 182/207/192 +f 178/194/179 177/193/178 192/208/193 193/209/194 +f 176/195/180 175/182/167 190/197/182 191/210/195 +f 174/181/166 173/184/169 188/199/184 189/196/181 +f 172/183/168 171/186/171 186/201/186 187/198/183 +f 170/185/170 169/188/173 184/203/188 185/200/185 +f 168/187/172 167/192/177 182/207/192 183/202/187 +f 179/189/174 178/194/179 193/209/194 194/204/189 +f 177/193/178 176/195/180 191/210/195 192/208/193 +f 190/197/182 189/196/181 204/211/196 205/212/197 +f 188/199/184 187/198/183 202/213/198 203/214/199 +f 186/201/186 185/200/185 200/215/200 201/216/201 +f 184/203/188 183/202/187 198/217/202 199/218/203 +f 195/205/190 194/204/189 209/219/204 210/220/205 +f 182/207/192 181/206/191 196/221/206 197/222/207 +f 193/209/194 192/208/193 207/223/208 208/224/209 +f 191/210/195 190/197/182 205/212/197 206/225/210 +f 189/196/181 188/199/184 203/214/199 204/211/196 +f 187/198/183 186/201/186 201/216/201 202/213/198 +f 185/200/185 184/203/188 199/218/203 200/215/200 +f 183/202/187 182/207/192 197/222/207 198/217/202 +f 194/204/189 193/209/194 208/224/209 209/219/204 +f 192/208/193 191/210/195 206/225/210 207/223/208 +f 205/212/197 204/211/196 219/226/211 220/227/212 +f 203/214/199 202/213/198 217/228/213 218/229/214 +f 201/216/201 200/215/200 215/230/215 216/231/216 +f 199/218/203 198/217/202 213/232/217 214/233/218 +f 210/220/205 209/219/204 224/234/219 225/235/220 +f 197/222/207 196/221/206 211/236/221 212/237/222 +f 208/224/209 207/223/208 222/238/223 223/239/224 +f 206/225/210 205/212/197 220/227/212 221/240/225 +f 204/211/196 203/214/199 218/229/214 219/226/211 +f 202/213/198 201/216/201 216/231/216 217/228/213 +f 200/215/200 199/218/203 214/233/218 215/230/215 +f 198/217/202 197/222/207 212/237/222 213/232/217 +f 209/219/204 208/224/209 223/239/224 224/234/219 +f 207/223/208 206/225/210 221/240/225 222/238/223 +f 220/227/212 219/226/211 234/241/226 235/242/227 +f 218/229/214 217/228/213 232/243/228 233/244/229 +f 216/231/216 215/230/215 230/245/230 231/246/231 +f 214/233/218 213/232/217 228/247/232 229/248/233 +f 225/235/220 224/234/219 239/249/234 240/250/235 +f 212/237/222 211/236/221 226/251/236 227/252/237 +f 223/239/224 222/238/223 237/253/238 238/254/239 +f 221/240/225 220/227/212 235/242/227 236/255/240 +f 219/226/211 218/229/214 233/244/229 234/241/226 +f 217/228/213 216/231/216 231/246/231 232/243/228 +f 215/230/215 214/233/218 229/248/233 230/245/230 +f 213/232/217 212/237/222 227/252/237 228/247/232 +f 224/234/219 223/239/224 238/254/239 239/249/234 +f 222/238/223 221/240/225 236/255/240 237/253/238 +f 235/242/227 234/241/226 249/21/241 250/18/242 +f 233/244/229 232/243/228 247/25/243 248/22/244 +f 231/246/231 230/245/230 245/29/245 246/26/246 +f 229/248/233 228/247/232 243/2/247 244/1/248 +f 240/250/235 239/249/234 254/6/249 255/5/250 +f 227/252/237 226/251/236 241/10/251 242/9/252 +f 238/254/239 237/253/238 252/14/253 253/13/254 +f 236/255/240 235/242/227 250/18/242 251/17/255 +f 234/241/226 233/244/229 248/22/244 249/21/241 +f 232/243/228 231/246/231 246/26/246 247/25/243 +f 230/245/230 229/248/233 244/1/248 245/29/245 +f 228/247/232 227/252/237 242/9/252 243/2/247 +f 239/249/234 238/254/239 253/13/254 254/6/249 +f 237/253/238 236/255/240 251/17/255 252/14/253 +f 250/18/242 249/21/241 264/24/256 265/19/257 +f 248/22/244 247/25/243 262/28/258 263/23/259 +f 246/26/246 245/29/245 260/30/260 261/27/261 +f 244/1/248 243/2/247 258/3/262 259/4/263 +f 255/5/250 254/6/249 269/7/264 270/8/265 +f 242/9/252 241/10/251 256/11/266 257/12/267 +f 253/13/254 252/14/253 267/15/268 268/16/269 +f 251/17/255 250/18/242 265/19/257 266/20/270 +f 249/21/241 248/22/244 263/23/259 264/24/256 +f 247/25/243 246/26/246 261/27/261 262/28/258 +f 245/29/245 244/1/248 259/4/263 260/30/260 +f 243/2/247 242/9/252 257/12/267 258/3/262 +f 254/6/249 253/13/254 268/16/269 269/7/264 +f 252/14/253 251/17/255 266/20/270 267/15/268 +f 265/19/257 264/24/256 279/31/271 280/32/272 +f 263/23/259 262/28/258 277/33/273 278/34/274 +f 261/27/261 260/30/260 275/35/275 276/36/276 +f 259/4/263 258/3/262 273/37/277 274/38/278 +f 270/8/265 269/7/264 284/39/279 285/40/280 +f 257/12/267 256/11/266 271/41/281 272/42/282 +f 268/16/269 267/15/268 282/43/283 283/44/284 +f 266/20/270 265/19/257 280/32/272 281/45/285 +f 264/24/256 263/23/259 278/34/274 279/31/271 +f 262/28/258 261/27/261 276/36/276 277/33/273 +f 260/30/260 259/4/263 274/38/278 275/35/275 +f 258/3/262 257/12/267 272/42/282 273/37/277 +f 269/7/264 268/16/269 283/44/284 284/39/279 +f 267/15/268 266/20/270 281/45/285 282/43/283 +f 280/32/272 279/31/271 294/46/286 295/47/287 +f 278/34/274 277/33/273 292/48/288 293/49/289 +f 276/36/276 275/35/275 290/50/290 291/51/291 +f 274/38/278 273/37/277 288/52/292 289/53/293 +f 285/40/280 284/39/279 299/54/294 300/55/295 +f 272/42/282 271/41/281 286/56/296 287/57/297 +f 283/44/284 282/43/283 297/58/298 298/59/299 +f 281/45/285 280/32/272 295/47/287 296/60/300 +f 279/31/271 278/34/274 293/49/289 294/46/286 +f 277/33/273 276/36/276 291/51/291 292/48/288 +f 275/35/275 274/38/278 289/53/293 290/50/290 +f 273/37/277 272/42/282 287/57/297 288/52/292 +f 284/39/279 283/44/284 298/59/299 299/54/294 +f 282/43/283 281/45/285 296/60/300 297/58/298 +f 295/47/287 294/46/286 309/61/301 310/62/302 +f 293/49/289 292/48/288 307/63/303 308/64/304 +f 291/51/291 290/50/290 305/65/305 306/66/306 +f 289/53/293 288/52/292 303/67/307 304/68/308 +f 300/55/295 299/54/294 314/69/309 315/70/310 +f 287/57/297 286/56/296 301/71/311 302/72/312 +f 298/59/299 297/58/298 312/73/313 313/74/314 +f 296/60/300 295/47/287 310/62/302 311/75/315 +f 294/46/286 293/49/289 308/64/304 309/61/301 +f 292/48/288 291/51/291 306/66/306 307/63/303 +f 290/50/290 289/53/293 304/68/308 305/65/305 +f 288/52/292 287/57/297 302/72/312 303/67/307 +f 299/54/294 298/59/299 313/74/314 314/69/309 +f 297/58/298 296/60/300 311/75/315 312/73/313 +f 310/62/302 309/61/301 324/76/316 325/77/317 +f 308/64/304 307/63/303 322/78/318 323/79/319 +f 306/66/306 305/65/305 320/80/320 321/81/321 +f 304/68/308 303/67/307 318/82/322 319/83/323 +f 315/70/310 314/69/309 329/84/324 330/85/325 +f 302/72/312 301/71/311 316/86/326 317/87/327 +f 313/74/314 312/73/313 327/88/328 328/89/329 +f 311/75/315 310/62/302 325/77/317 326/90/330 +f 309/61/301 308/64/304 323/79/319 324/76/316 +f 307/63/303 306/66/306 321/81/321 322/78/318 +f 305/65/305 304/68/308 319/83/323 320/80/320 +f 303/67/307 302/72/312 317/87/327 318/82/322 +f 314/69/309 313/74/314 328/89/329 329/84/324 +f 312/73/313 311/75/315 326/90/330 327/88/328 +f 325/77/317 324/76/316 339/91/331 340/92/332 +f 323/79/319 322/78/318 337/93/333 338/94/334 +f 321/81/321 320/80/320 335/95/335 336/96/336 +f 319/83/323 318/82/322 333/97/337 334/98/338 +f 330/85/325 329/84/324 344/99/339 345/100/340 +f 317/87/327 316/86/326 331/101/341 332/102/342 +f 328/89/329 327/88/328 342/103/343 343/104/344 +f 326/90/330 325/77/317 340/92/332 341/105/345 +f 324/76/316 323/79/319 338/94/334 339/91/331 +f 322/78/318 321/81/321 336/96/336 337/93/333 +f 320/80/320 319/83/323 334/98/338 335/95/335 +f 318/82/322 317/87/327 332/102/342 333/97/337 +f 329/84/324 328/89/329 343/104/344 344/99/339 +f 327/88/328 326/90/330 341/105/345 342/103/343 +f 340/92/332 339/91/331 354/106/346 355/107/347 +f 338/94/334 337/93/333 352/108/348 353/109/349 +f 336/96/336 335/95/335 350/110/350 351/111/351 +f 334/98/338 333/97/337 348/112/352 349/113/353 +f 345/100/340 344/99/339 359/114/354 360/115/355 +f 332/102/342 331/101/341 346/116/356 347/117/357 +f 343/104/344 342/103/343 357/118/358 358/119/359 +f 341/105/345 340/92/332 355/107/347 356/120/360 +f 339/91/331 338/94/334 353/109/349 354/106/346 +f 337/93/333 336/96/336 351/111/351 352/108/348 +f 335/95/335 334/98/338 349/113/353 350/110/350 +f 333/97/337 332/102/342 347/117/357 348/112/352 +f 344/99/339 343/104/344 358/119/359 359/114/354 +f 342/103/343 341/105/345 356/120/360 357/118/358 +f 355/121/347 354/122/346 369/123/361 370/124/362 +f 353/125/349 352/126/348 367/127/363 368/128/364 +f 351/129/351 350/130/350 365/131/365 366/132/366 +f 349/133/353 348/134/352 363/135/367 364/136/368 +f 360/137/355 359/138/354 374/139/369 375/140/370 +f 347/141/357 346/142/356 361/143/371 362/144/372 +f 358/145/359 357/146/358 372/147/373 373/148/374 +f 356/149/360 355/121/347 370/124/362 371/150/375 +f 354/122/346 353/125/349 368/128/364 369/123/361 +f 352/126/348 351/129/351 366/132/366 367/127/363 +f 350/130/350 349/133/353 364/136/368 365/131/365 +f 348/134/352 347/141/357 362/144/372 363/135/367 +f 359/138/354 358/145/359 373/148/374 374/139/369 +f 357/146/358 356/149/360 371/150/375 372/147/373 +f 370/124/362 369/123/361 384/151/376 385/152/377 +f 368/128/364 367/127/363 382/153/378 383/154/379 +f 366/132/366 365/131/365 380/155/380 381/156/381 +f 364/136/368 363/135/367 378/157/382 379/158/383 +f 375/140/370 374/139/369 389/159/384 390/160/385 +f 362/144/372 361/143/371 376/161/386 377/162/387 +f 373/148/374 372/147/373 387/163/388 388/164/389 +f 371/150/375 370/124/362 385/152/377 386/165/390 +f 369/123/361 368/128/364 383/154/379 384/151/376 +f 367/127/363 366/132/366 381/156/381 382/153/378 +f 365/131/365 364/136/368 379/158/383 380/155/380 +f 363/135/367 362/144/372 377/162/387 378/157/382 +f 374/139/369 373/148/374 388/164/389 389/159/384 +f 372/147/373 371/150/375 386/165/390 387/163/388 +f 385/152/377 384/151/376 399/166/391 400/167/392 +f 383/154/379 382/153/378 397/168/393 398/169/394 +f 381/156/381 380/155/380 395/170/395 396/171/396 +f 379/158/383 378/157/382 393/172/397 394/173/398 +f 390/160/385 389/159/384 404/174/399 405/175/400 +f 377/162/387 376/161/386 391/176/401 392/177/402 +f 388/164/389 387/163/388 402/178/403 403/179/404 +f 386/165/390 385/152/377 400/167/392 401/180/405 +f 384/151/376 383/154/379 398/169/394 399/166/391 +f 382/153/378 381/156/381 396/171/396 397/168/393 +f 380/155/380 379/158/383 394/173/398 395/170/395 +f 378/157/382 377/162/387 392/177/402 393/172/397 +f 389/159/384 388/164/389 403/179/404 404/174/399 +f 387/163/388 386/165/390 401/180/405 402/178/403 +f 400/167/392 399/166/391 414/181/406 415/182/407 +f 398/169/394 397/168/393 412/183/408 413/184/409 +f 396/171/396 395/170/395 410/185/410 411/186/411 +f 394/173/398 393/172/397 408/187/412 409/188/413 +f 405/175/400 404/174/399 419/189/414 420/190/415 +f 392/177/402 391/176/401 406/191/416 407/192/417 +f 403/179/404 402/178/403 417/193/418 418/194/419 +f 401/180/405 400/167/392 415/182/407 416/195/420 +f 399/166/391 398/169/394 413/184/409 414/181/406 +f 397/168/393 396/171/396 411/186/411 412/183/408 +f 395/170/395 394/173/398 409/188/413 410/185/410 +f 393/172/397 392/177/402 407/192/417 408/187/412 +f 404/174/399 403/179/404 418/194/419 419/189/414 +f 402/178/403 401/180/405 416/195/420 417/193/418 +f 415/182/407 414/181/406 429/196/421 430/197/422 +f 413/184/409 412/183/408 427/198/423 428/199/424 +f 411/186/411 410/185/410 425/200/425 426/201/426 +f 409/188/413 408/187/412 423/202/427 424/203/428 +f 420/190/415 419/189/414 434/204/429 435/205/430 +f 407/192/417 406/191/416 421/206/431 422/207/432 +f 418/194/419 417/193/418 432/208/433 433/209/434 +f 416/195/420 415/182/407 430/197/422 431/210/435 +f 414/181/406 413/184/409 428/199/424 429/196/421 +f 412/183/408 411/186/411 426/201/426 427/198/423 +f 410/185/410 409/188/413 424/203/428 425/200/425 +f 408/187/412 407/192/417 422/207/432 423/202/427 +f 419/189/414 418/194/419 433/209/434 434/204/429 +f 417/193/418 416/195/420 431/210/435 432/208/433 +f 430/197/422 429/196/421 444/211/436 445/212/437 +f 428/199/424 427/198/423 442/213/438 443/214/439 +f 426/201/426 425/200/425 440/215/440 441/216/441 +f 424/203/428 423/202/427 438/217/442 439/218/443 +f 435/205/430 434/204/429 449/219/444 450/220/445 +f 422/207/432 421/206/431 436/221/446 437/222/447 +f 433/209/434 432/208/433 447/223/448 448/224/449 +f 431/210/435 430/197/422 445/212/437 446/225/450 +f 429/196/421 428/199/424 443/214/439 444/211/436 +f 427/198/423 426/201/426 441/216/441 442/213/438 +f 425/200/425 424/203/428 439/218/443 440/215/440 +f 423/202/427 422/207/432 437/222/447 438/217/442 +f 434/204/429 433/209/434 448/224/449 449/219/444 +f 432/208/433 431/210/435 446/225/450 447/223/448 +f 445/212/437 444/211/436 459/226/451 460/227/452 +f 443/214/439 442/213/438 457/228/453 458/229/454 +f 441/216/441 440/215/440 455/230/455 456/231/456 +f 439/218/443 438/217/442 453/232/457 454/233/458 +f 450/220/445 449/219/444 464/234/459 465/235/460 +f 437/222/447 436/221/446 451/236/461 452/237/462 +f 448/224/449 447/223/448 462/238/463 463/239/464 +f 446/225/450 445/212/437 460/227/452 461/240/465 +f 444/211/436 443/214/439 458/229/454 459/226/451 +f 442/213/438 441/216/441 456/231/456 457/228/453 +f 440/215/440 439/218/443 454/233/458 455/230/455 +f 438/217/442 437/222/447 452/237/462 453/232/457 +f 449/219/444 448/224/449 463/239/464 464/234/459 +f 447/223/448 446/225/450 461/240/465 462/238/463 +f 460/227/452 459/226/451 474/241/466 475/242/467 +f 458/229/454 457/228/453 472/243/468 473/244/469 +f 456/231/456 455/230/455 470/245/470 471/246/471 +f 454/233/458 453/232/457 468/247/472 469/248/473 +f 465/235/460 464/234/459 479/249/474 480/250/475 +f 452/237/462 451/236/461 466/251/476 467/252/477 +f 463/239/464 462/238/463 477/253/478 478/254/479 +f 461/240/465 460/227/452 475/242/467 476/255/480 +f 459/226/451 458/229/454 473/244/469 474/241/466 +f 457/228/453 456/231/456 471/246/471 472/243/468 +f 455/230/455 454/233/458 469/248/473 470/245/470 +f 453/232/457 452/237/462 467/252/477 468/247/472 +f 464/234/459 463/239/464 478/254/479 479/249/474 +f 462/238/463 461/240/465 476/255/480 477/253/478 +f 481/256/481 15/5/5 30/8/8 485/257/482 +f 485/257/482 30/8/8 45/40/40 487/258/483 +f 487/258/483 45/40/40 60/55/55 489/259/484 +f 489/259/484 60/55/55 75/70/70 491/260/485 +f 491/260/485 75/70/70 90/85/85 493/261/486 +f 493/261/486 90/85/85 105/100/100 495/262/487 +f 495/262/487 105/100/100 120/115/115 497/263/488 +f 497/264/488 120/137/115 135/140/130 499/265/489 +f 499/265/489 135/140/130 150/160/145 501/266/490 +f 501/266/490 150/160/145 165/175/160 503/267/491 +f 503/267/491 165/175/160 180/190/175 505/268/492 +f 505/268/492 180/190/175 195/205/190 507/269/493 +f 507/269/493 195/205/190 210/220/205 509/270/494 +f 509/270/494 210/220/205 225/235/220 511/271/495 +f 511/271/495 225/235/220 240/250/235 513/272/496 +f 513/272/496 240/250/235 255/5/250 515/256/497 +f 515/256/497 255/5/250 270/8/265 517/257/498 +f 517/257/498 270/8/265 285/40/280 519/258/499 +f 519/258/499 285/40/280 300/55/295 521/259/500 +f 521/259/500 300/55/295 315/70/310 523/260/501 +f 523/260/501 315/70/310 330/85/325 525/261/502 +f 525/261/502 330/85/325 345/100/340 527/262/503 +f 527/262/503 345/100/340 360/115/355 529/263/504 +f 529/264/504 360/137/355 375/140/370 531/265/505 +f 531/265/505 375/140/370 390/160/385 533/266/506 +f 533/266/506 390/160/385 405/175/400 534/267/507 +f 534/267/507 405/175/400 420/190/415 536/268/508 +f 536/268/508 420/190/415 435/205/430 538/269/509 +f 538/269/509 435/205/430 450/220/445 540/270/510 +f 540/270/510 450/220/445 465/235/460 542/271/511 +f 542/271/511 465/235/460 480/250/475 544/272/512 +f 475/242/467 474/241/466 9/21/21 10/18/18 +f 473/244/469 472/243/468 7/25/25 8/22/22 +f 471/246/471 470/245/470 5/29/29 6/26/26 +f 469/248/473 468/247/472 3/2/2 4/1/1 +f 480/250/475 479/249/474 14/6/6 15/5/5 +f 467/252/477 466/251/476 1/10/10 2/9/9 +f 478/254/479 477/253/478 12/14/14 13/13/13 +f 476/255/480 475/242/467 10/18/18 11/17/17 +f 474/241/466 473/244/469 8/22/22 9/21/21 +f 472/243/468 471/246/471 6/26/26 7/25/25 +f 470/245/470 469/248/473 4/1/1 5/29/29 +f 544/272/512 480/250/475 15/5/5 481/256/481 +f 468/247/472 467/252/477 2/9/9 3/2/2 +f 479/249/474 478/254/479 13/13/13 14/6/6 +f 477/253/478 476/255/480 11/17/17 12/14/14 +f 466/251/476 543/273/513 483/274/514 1/10/10 +f 451/236/461 541/275/515 543/273/513 466/251/476 +f 436/221/446 539/276/516 541/275/515 451/236/461 +f 421/206/431 537/277/517 539/276/516 436/221/446 +f 406/191/416 535/278/518 537/277/517 421/206/431 +f 391/176/401 482/279/519 535/278/518 406/191/416 +f 376/161/386 532/280/520 482/279/519 391/176/401 +f 361/143/371 530/281/521 532/280/520 376/161/386 +f 346/142/356 528/282/522 530/281/521 361/143/371 +f 331/101/341 526/283/523 528/284/522 346/116/356 +f 316/86/326 524/285/524 526/283/523 331/101/341 +f 301/71/311 522/286/525 524/285/524 316/86/326 +f 286/56/296 520/287/526 522/286/525 301/71/311 +f 271/41/281 518/288/527 520/287/526 286/56/296 +f 256/11/266 516/289/528 518/288/527 271/41/281 +f 241/10/251 514/274/529 516/289/528 256/11/266 +f 226/251/236 512/273/530 514/274/529 241/10/251 +f 211/236/221 510/275/531 512/273/530 226/251/236 +f 196/221/206 508/276/532 510/275/531 211/236/221 +f 181/206/191 506/277/533 508/276/532 196/221/206 +f 166/191/176 504/278/534 506/277/533 181/206/191 +f 151/176/161 502/279/535 504/278/534 166/191/176 +f 136/161/146 500/280/536 502/279/535 151/176/161 +f 121/143/131 498/281/537 500/280/536 136/161/146 +f 106/142/116 496/282/538 498/281/537 121/143/131 +f 91/101/101 494/283/539 496/284/538 106/116/116 +f 76/86/86 492/285/540 494/283/539 91/101/101 +f 61/71/71 490/286/541 492/285/540 76/86/86 +f 46/56/56 488/287/542 490/286/541 61/71/71 +f 31/41/41 486/288/543 488/287/542 46/56/56 +f 16/11/11 484/289/544 486/288/543 31/41/41 +f 1/10/10 483/274/514 484/289/544 16/11/11 +f 543/290/513 541/291/515 539/292/516 537/293/517 535/294/518 482/295/519 532/296/520 530/297/521 528/298/522 526/299/523 524/300/524 522/301/525 520/302/526 518/303/527 516/304/528 514/305/529 512/306/530 510/307/531 508/308/532 506/309/533 504/310/534 502/311/535 500/312/536 498/313/537 496/314/538 494/315/539 492/316/540 490/317/541 488/318/542 486/319/543 484/320/544 483/321/514 +f 544/290/512 481/291/481 485/292/482 487/293/483 489/294/484 491/295/485 493/296/486 495/297/487 497/298/488 499/299/489 501/300/490 503/301/491 505/302/492 507/303/493 509/304/494 511/305/495 513/306/496 515/307/497 517/308/498 519/309/499 521/310/500 523/311/501 525/312/502 527/313/503 529/314/504 531/315/505 533/316/506 534/317/507 536/318/508 538/319/509 540/320/510 542/321/511 diff --git a/technic_cnc/models/technic_cnc_two_curved_edge.obj b/technic_cnc/models/technic_cnc_two_curved_edge.obj new file mode 100644 index 0000000..a468ddf --- /dev/null +++ b/technic_cnc/models/technic_cnc_two_curved_edge.obj @@ -0,0 +1,207 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_quarter_round_corner_onetexture.blend' +# www.blender.org +o corner1_Cylinder +v 0.415732 0.277783 0.499997 +v 0.461936 0.191340 0.499997 +v 0.415735 0.277783 -0.415732 +v 0.461940 0.191340 -0.461937 +v 0.490389 0.097544 0.499997 +v 0.353551 0.353551 0.499997 +v 0.353555 0.353551 -0.353551 +v 0.499996 -0.000000 0.499997 +v 0.277783 0.415732 0.499997 +v 0.490393 0.097544 -0.490389 +v 0.277787 0.415732 -0.277784 +v 0.191340 0.461936 0.499997 +v 0.191344 0.461937 -0.191341 +v 0.097544 0.490389 0.499997 +v 0.097547 0.490391 -0.097545 +v -0.000000 0.499996 0.499997 +v -0.499997 0.499997 0.499997 +v -0.499997 0.499997 -0.000030 +v -0.499997 0.415735 -0.277785 +v -0.499997 0.461940 -0.191342 +v -0.499997 0.490393 -0.097545 +v -0.500000 -0.500000 -0.500000 +v -0.499997 -0.499997 0.499997 +v 0.000000 0.499998 0.000000 +v -0.499998 0.000014 -0.499999 +v -0.499997 0.353553 -0.353554 +v -0.499998 0.097545 -0.490393 +v -0.499997 0.277785 -0.415735 +v -0.499998 0.191342 -0.461940 +v 0.499997 -0.000000 -0.499996 +v 0.500000 -0.500000 -0.500000 +v 0.499997 -0.499997 0.499997 +v -0.499997 -0.499997 0.499997 +v -0.499997 0.499997 0.499997 +v -0.499997 0.499997 -0.000030 +v -0.499997 0.415735 -0.277785 +v -0.499997 0.461940 -0.191342 +v -0.499997 0.490393 -0.097545 +v -0.500000 -0.500000 -0.500000 +v -0.499998 0.000014 -0.499999 +v -0.499997 0.353553 -0.353554 +v -0.499998 0.097545 -0.490393 +v -0.499997 0.277785 -0.415735 +v -0.499998 0.191342 -0.461940 +v -0.499998 -0.033351 0.033348 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.499997 -0.499997 0.499997 +v 0.415732 0.277783 0.499997 +v 0.461936 0.191340 0.499997 +v 0.490389 0.097544 0.499997 +v 0.353551 0.353551 0.499997 +v 0.499996 -0.000000 0.499997 +v 0.277783 0.415732 0.499997 +v 0.191340 0.461936 0.499997 +v -0.499997 -0.499997 0.499997 +v 0.097544 0.490389 0.499997 +v -0.000000 0.499996 0.499997 +v -0.499997 0.499997 0.499997 +v -0.033351 -0.033351 0.499997 +v 0.499997 -0.499997 0.499997 +vt 1.000000 0.500100 +vt 0.990395 0.597625 +vt 0.466756 0.466756 +vt 1.000000 0.000200 +vt 0.000201 0.000201 +vt 0.597626 0.990394 +vt 0.500101 1.000000 +vt 0.691404 0.961947 +vt 0.777830 0.915751 +vt 0.853583 0.853583 +vt 0.915752 0.777829 +vt 0.000201 1.000000 +vt 0.961948 0.691403 +vt -0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt -0.000000 1.000000 +vt 0.533443 0.466757 +vt 0.000202 0.500115 +vt 0.402575 0.990397 +vt 0.308797 0.961949 +vt 0.222371 0.915753 +vt 0.146617 0.853584 +vt 0.084449 0.777831 +vt 0.038253 0.691405 +vt 0.009806 0.597626 +vt 0.999996 0.125448 +vt 0.222353 0.125462 +vt 0.146597 0.000612 +vt 0.999995 0.000594 +vt 0.000178 0.874582 +vt 0.915751 0.874577 +vt 0.853580 0.999436 +vt 0.000178 0.999439 +vt 0.999808 0.625427 +vt 0.009599 0.625446 +vt -0.000005 0.500594 +vt 0.999807 0.500594 +vt 0.597441 0.374574 +vt 0.499912 0.499435 +vt 0.000000 0.499434 +vt 0.000000 0.374576 +vt 0.999999 0.375154 +vt 1.000000 0.499969 +vt 0.500093 0.500015 +vt 0.402562 0.375164 +vt 0.999812 0.999983 +vt 0.146415 1.000000 +vt 0.084244 0.875149 +vt 0.999811 0.875131 +vt 0.990396 0.624861 +vt 0.961947 0.749719 +vt 0.000178 0.749724 +vt 0.000178 0.624866 +vt 0.777649 0.124857 +vt 0.691221 0.249715 +vt 0.000001 0.249719 +vt 0.000001 0.124861 +vt 0.308782 0.250314 +vt 0.999998 0.250301 +vt 0.853403 -0.000000 +vt 0.038047 0.750298 +vt 0.999809 0.750280 +vt 0.000177 0.500008 +vt 0.000000 0.500000 +vt 0.500000 1.000000 +vt 0.500000 0.500000 +vn 0.000000 -0.000000 1.000000 +vn -0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.831500 -0.555600 +vn 0.325800 0.887500 -0.325800 +vn 0.429700 0.794100 -0.429700 +vn 0.000000 0.707100 -0.707100 +vn 0.831500 0.555600 0.000000 +vn 0.531000 0.660300 -0.531000 +vn 0.707100 0.707100 0.000000 +vn 0.000000 0.195100 -0.980800 +vn 0.683900 0.254100 -0.683900 +vn 0.705500 0.067100 -0.705500 +vn 0.000000 0.049100 -0.998800 +vn 0.123100 0.984700 -0.123100 +vn 0.036800 0.998600 -0.036800 +vn 0.049100 0.998800 0.000000 +vn 0.195100 0.980800 0.000000 +vn 0.000000 0.980800 -0.195100 +vn 0.000000 0.998800 -0.049100 +vn 0.000000 0.555600 -0.831500 +vn 0.620400 0.479600 -0.620400 +vn 0.923900 0.382700 0.000000 +vn 0.980800 0.195100 0.000000 +vn 0.223300 0.948800 -0.223200 +vn 0.382700 0.923900 0.000000 +vn 0.555600 0.831500 0.000000 +vn 0.000000 0.923900 -0.382700 +vn 0.000000 0.382700 -0.923900 +vn 0.998800 0.049100 0.000000 +vn 0.707100 0.000000 -0.707100 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +s off +f 53/1/1 51/2/1 60/3/1 +f 61/4/1 53/1/1 60/3/1 56/5/1 +f 57/6/1 58/7/1 60/3/1 +f 55/8/1 57/6/1 60/3/1 +f 54/9/1 55/8/1 60/3/1 +f 52/10/1 54/9/1 60/3/1 +f 49/11/1 52/10/1 60/3/1 +f 59/12/1 56/5/1 60/3/1 58/7/1 +f 50/13/1 49/11/1 60/3/1 +f 48/14/2 23/15/2 46/16/2 47/17/2 +f 39/5/3 33/4/3 45/18/3 40/19/3 +f 35/7/3 38/20/3 45/18/3 +f 38/20/3 37/21/3 45/18/3 +f 37/21/3 36/22/3 45/18/3 +f 36/22/3 41/23/3 45/18/3 +f 41/23/3 43/24/3 45/18/3 +f 43/24/3 44/25/3 45/18/3 +f 44/25/3 42/26/3 45/18/3 +f 42/26/3 40/19/3 45/18/3 +f 34/16/3 35/7/3 45/18/3 33/4/3 +f 51/2/1 50/13/1 60/3/1 +s 1 +f 19/27/4 11/28/5 7/29/6 26/30/7 +f 1/31/8 3/32/9 7/33/6 6/34/10 +f 27/35/11 10/36/12 30/37/13 25/38/14 +f 15/39/15 24/40/16 16/41/17 14/42/18 +f 21/43/19 18/44/20 24/45/16 15/46/15 +f 26/47/7 7/48/6 3/49/9 28/50/21 +f 10/51/12 4/52/22 2/53/23 5/54/24 +f 11/55/5 13/56/25 12/57/26 9/58/27 +f 21/43/19 15/46/15 13/59/25 20/60/28 +f 20/60/28 13/59/25 11/28/5 19/27/4 +f 9/58/27 6/14/10 7/61/6 11/55/5 +f 4/52/22 3/32/9 1/31/8 2/53/23 +f 3/49/9 4/62/22 29/63/29 28/50/21 +f 10/51/12 5/54/24 8/64/30 30/44/13 +f 29/63/29 4/62/22 10/36/12 27/35/11 +f 25/44/14 30/65/13 31/14/31 22/15/32 +f 16/66/17 24/67/16 18/44/20 17/16/33 +f 8/65/30 32/14/34 31/15/31 30/44/13 +f 12/57/26 13/56/25 15/39/15 14/42/18 diff --git a/technic_cnc/textures/technic_cnc_bottom.png b/technic_cnc/textures/technic_cnc_bottom.png new file mode 100644 index 0000000..e600cb1 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_bottom.png differ diff --git a/technic_cnc/textures/technic_cnc_cylinder.png b/technic_cnc/textures/technic_cnc_cylinder.png new file mode 100644 index 0000000..48921bd Binary files /dev/null and b/technic_cnc/textures/technic_cnc_cylinder.png differ diff --git a/technic_cnc/textures/technic_cnc_cylinder_horizontal.png b/technic_cnc/textures/technic_cnc_cylinder_horizontal.png new file mode 100644 index 0000000..82eb24c Binary files /dev/null and b/technic_cnc/textures/technic_cnc_cylinder_horizontal.png differ diff --git a/technic_cnc/textures/technic_cnc_element_cross.png b/technic_cnc/textures/technic_cnc_element_cross.png new file mode 100644 index 0000000..cc66571 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_element_cross.png differ diff --git a/technic_cnc/textures/technic_cnc_element_edge.png b/technic_cnc/textures/technic_cnc_element_edge.png new file mode 100644 index 0000000..1245ea7 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_element_edge.png differ diff --git a/technic_cnc/textures/technic_cnc_element_end.png b/technic_cnc/textures/technic_cnc_element_end.png new file mode 100644 index 0000000..562eb2b Binary files /dev/null and b/technic_cnc/textures/technic_cnc_element_end.png differ diff --git a/technic_cnc/textures/technic_cnc_element_straight.png b/technic_cnc/textures/technic_cnc_element_straight.png new file mode 100644 index 0000000..d42966e Binary files /dev/null and b/technic_cnc/textures/technic_cnc_element_straight.png differ diff --git a/technic_cnc/textures/technic_cnc_element_t.png b/technic_cnc/textures/technic_cnc_element_t.png new file mode 100644 index 0000000..a462764 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_element_t.png differ diff --git a/technic_cnc/textures/technic_cnc_front.png b/technic_cnc/textures/technic_cnc_front.png new file mode 100644 index 0000000..6cc0490 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_front.png differ diff --git a/technic_cnc/textures/technic_cnc_front_active.png b/technic_cnc/textures/technic_cnc_front_active.png new file mode 100644 index 0000000..f7a3c7f Binary files /dev/null and b/technic_cnc/textures/technic_cnc_front_active.png differ diff --git a/technic_cnc/textures/technic_cnc_full.png b/technic_cnc/textures/technic_cnc_full.png new file mode 100644 index 0000000..60f8a81 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_full.png differ diff --git a/technic_cnc/textures/technic_cnc_half.png b/technic_cnc/textures/technic_cnc_half.png new file mode 100644 index 0000000..2c4d3a8 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_half.png differ diff --git a/technic_cnc/textures/technic_cnc_milling_background.png b/technic_cnc/textures/technic_cnc_milling_background.png new file mode 100644 index 0000000..6a9c2f4 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_milling_background.png differ diff --git a/technic_cnc/textures/technic_cnc_oblate_spheroid.png b/technic_cnc/textures/technic_cnc_oblate_spheroid.png new file mode 100644 index 0000000..b196e7d Binary files /dev/null and b/technic_cnc/textures/technic_cnc_oblate_spheroid.png differ diff --git a/technic_cnc/textures/technic_cnc_onecurvededge.png b/technic_cnc/textures/technic_cnc_onecurvededge.png new file mode 100644 index 0000000..8325846 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_onecurvededge.png differ diff --git a/technic_cnc/textures/technic_cnc_pyramid.png b/technic_cnc/textures/technic_cnc_pyramid.png new file mode 100644 index 0000000..d8cc713 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_pyramid.png differ diff --git a/technic_cnc/textures/technic_cnc_side.png b/technic_cnc/textures/technic_cnc_side.png new file mode 100644 index 0000000..1ecbbac Binary files /dev/null and b/technic_cnc/textures/technic_cnc_side.png differ diff --git a/technic_cnc/textures/technic_cnc_slope.png b/technic_cnc/textures/technic_cnc_slope.png new file mode 100644 index 0000000..493d560 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_slope.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_edge.png b/technic_cnc/textures/technic_cnc_slope_edge.png new file mode 100644 index 0000000..1b601c4 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_slope_edge.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_edge_upsdwn.png b/technic_cnc/textures/technic_cnc_slope_edge_upsdwn.png new file mode 100644 index 0000000..350c22d Binary files /dev/null and b/technic_cnc/textures/technic_cnc_slope_edge_upsdwn.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_inner_edge.png b/technic_cnc/textures/technic_cnc_slope_inner_edge.png new file mode 100644 index 0000000..3f5ab9e Binary files /dev/null and b/technic_cnc/textures/technic_cnc_slope_inner_edge.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_inner_edge_upsdwn.png b/technic_cnc/textures/technic_cnc_slope_inner_edge_upsdwn.png new file mode 100644 index 0000000..a1fee78 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_slope_inner_edge_upsdwn.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_lying.png b/technic_cnc/textures/technic_cnc_slope_lying.png new file mode 100644 index 0000000..099ed59 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_slope_lying.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_upsdwn.png b/technic_cnc/textures/technic_cnc_slope_upsdwn.png new file mode 100644 index 0000000..2a34b8b Binary files /dev/null and b/technic_cnc/textures/technic_cnc_slope_upsdwn.png differ diff --git a/technic_cnc/textures/technic_cnc_sphere.png b/technic_cnc/textures/technic_cnc_sphere.png new file mode 100644 index 0000000..791b32b Binary files /dev/null and b/technic_cnc/textures/technic_cnc_sphere.png differ diff --git a/technic_cnc/textures/technic_cnc_spike.png b/technic_cnc/textures/technic_cnc_spike.png new file mode 100644 index 0000000..b445b40 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_spike.png differ diff --git a/technic_cnc/textures/technic_cnc_stick.png b/technic_cnc/textures/technic_cnc_stick.png new file mode 100644 index 0000000..acaf1cb Binary files /dev/null and b/technic_cnc/textures/technic_cnc_stick.png differ diff --git a/technic_cnc/textures/technic_cnc_top.png b/technic_cnc/textures/technic_cnc_top.png new file mode 100644 index 0000000..5123334 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_top.png differ diff --git a/technic_cnc/textures/technic_cnc_top_active.png b/technic_cnc/textures/technic_cnc_top_active.png new file mode 100644 index 0000000..2bc9d81 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_top_active.png differ diff --git a/technic_cnc/textures/technic_cnc_twocurvededge.png b/technic_cnc/textures/technic_cnc_twocurvededge.png new file mode 100644 index 0000000..b50a257 Binary files /dev/null and b/technic_cnc/textures/technic_cnc_twocurvededge.png differ -- cgit v1.2.3