1 Commits

Author SHA1 Message Date
9cf5fab245 technic_cnc: Use client-side translation API 2024-03-29 13:34:34 +01:00
25 changed files with 957 additions and 1092 deletions

View File

@ -160,11 +160,6 @@ Unsorted functions:
* If `technic.power_tools[itemstack:get_name()]` is `nil` (or `false`), this
function does nothing, else that value is the maximum charge.
* The itemstack metadata is changed to contain the charge.
* `technic.get_charge(itemstack)`
* Returns the charge and max charge of the given itemstack.
* If the itemstack is not an RE chargeable item, both return values will be zero.
* `technic.set_charge(itemstack, charge)`
* Modifies the charge of the given itemstack.
### Node-specific
* `technic.get_or_load_node(pos)`

View File

@ -9,25 +9,5 @@ minetest.register_craft({
}
})
if (minetest.get_modpath('everness')) then
minetest.register_craft({
output = 'technic:lv_grinder',
recipe = {
{'everness:coral_desert_stone', 'default:diamond', 'everness:coral_desert_stone'},
{'everness:coral_desert_stone', 'technic:machine_casing', 'everness:coral_desert_stone'},
{'technic:granite', 'technic:lv_cable', 'technic:granite'},
}
})
minetest.register_craft({
output = 'technic:lv_grinder',
recipe = {
{'everness:forsaken_desert_stone', 'default:diamond', 'everness:forsaken_desert_stone'},
{'everness:forsaken_desert_stone', 'technic:machine_casing', 'everness:forsaken_desert_stone'},
{'technic:granite', 'technic:lv_cable', 'technic:granite'},
}
})
end
technic.register_grinder({tier="LV", demand={200}, speed=1})

View File

@ -90,7 +90,6 @@ minetest.register_craft({
recipe = {
{"", "homedecor:plastic_sheeting", ""},
{"homedecor:plastic_sheeting", "technic:doped_silicon_wafer", "homedecor:plastic_sheeting"},
{"", "basic_materials:silver_wire", ""},
},
replacements = { {"basic_materials:silver_wire", "basic_materials:empty_spool"}, },
{"", "technic:fine_silver_wire", ""},
}
})

View File

@ -324,7 +324,6 @@ for zp = 0, 1 do
on_rightclick = function(pos, node, placer, itemstack, pointed_thing)
if is_supported_node(itemstack:get_name()) then
-- Stripped down version of "core.item_place_node"
if minetest.is_protected(pos, placer:get_player_name()) then
minetest.log("action", placer:get_player_name()
.. " tried to place " .. itemstack:get_name()
@ -348,7 +347,8 @@ for zp = 0, 1 do
end
-- Run script hook
for _, callback in ipairs(minetest.registered_on_placenodes) do
local callback = nil
for _, _ in ipairs(minetest.registered_on_placenodes) do
-- Copy pos and node because callback can modify them
local pos_copy = { x = pos.x, y = pos.y, z = pos.z }
local newnode_copy = { name = def.name, param1 = 0, param2 = 0 }

View File

@ -92,7 +92,7 @@ local dirtab = {
local tube = {
insert_object = function(pos, node, stack, direction)
--print(minetest.pos_to_string(direction), dirtab[direction.x+2+(direction.z+2)*2], node.param2)
print(minetest.pos_to_string(direction), dirtab[direction.x+2+(direction.z+2)*2], node.param2)
if direction.y == 1
or (direction.y == 0 and dirtab[direction.x+2+(direction.z+2)*2] == node.param2) then
return stack
@ -106,7 +106,7 @@ local tube = {
end
end,
can_insert = function(pos, node, stack, direction)
--print(minetest.pos_to_string(direction), dirtab[direction.x+2+(direction.z+2)*2], node.param2)
print(minetest.pos_to_string(direction), dirtab[direction.x+2+(direction.z+2)*2], node.param2)
if direction.y == 1
or (direction.y == 0 and dirtab[direction.x+2+(direction.z+2)*2] == node.param2) then
return false
@ -409,7 +409,7 @@ minetest.register_on_player_receive_fields(
end
)
function technic.get_charge(itemstack)
local function default_get_charge(itemstack)
-- check if is chargable
local tool_name = itemstack:get_name()
if not technic.power_tools[tool_name] then
@ -419,7 +419,7 @@ function technic.get_charge(itemstack)
return item_meta:get_int("technic:charge"), technic.power_tools[tool_name]
end
function technic.set_charge(itemstack, charge)
local function default_set_charge(itemstack, charge)
local tool_name = itemstack:get_name()
if technic.power_tools[tool_name] then
technic.set_RE_wear(itemstack, charge, technic.power_tools[tool_name])
@ -437,8 +437,8 @@ function technic.charge_tools(meta, batt_charge, charge_step)
-- get callbacks
local src_def = src_stack:get_definition()
local technic_get_charge = src_def.technic_get_charge or technic.get_charge
local technic_set_charge = src_def.technic_set_charge or technic.set_charge
local technic_get_charge = src_def.technic_get_charge or default_get_charge
local technic_set_charge = src_def.technic_set_charge or default_set_charge
-- get tool charge
local tool_charge, item_max_charge = technic_get_charge(src_stack)
@ -471,8 +471,8 @@ function technic.discharge_tools(meta, batt_charge, charge_step, max_charge)
-- get callbacks
local src_def = src_stack:get_definition()
local technic_get_charge = src_def.technic_get_charge or technic.get_charge
local technic_set_charge = src_def.technic_set_charge or technic.set_charge
local technic_get_charge = src_def.technic_get_charge or default_get_charge
local technic_set_charge = src_def.technic_set_charge or default_set_charge
-- get tool charge
local tool_charge, item_max_charge = technic_get_charge(src_stack)

View File

@ -43,41 +43,17 @@ local function check_connections(pos)
return connections
end
local clear_networks
local function clear_network(network_id)
if not network_id then
return
end
for _,v in pairs(technic.networks[network_id].all_nodes) do
local pos1 = minetest.hash_node_position(v)
technic.cables[pos1] = nil
end
local network_bckup = technic.networks[network_id]
technic.networks[network_id] = nil
for _,n_pos in pairs(network_bckup.PR_nodes) do
clear_networks(n_pos)
end
for _,n_pos in pairs(network_bckup.RE_nodes) do
clear_networks(n_pos)
end
for _,n_pos in pairs(network_bckup.BA_nodes) do
clear_networks(n_pos)
end
end
clear_networks = function(pos)
local function clear_networks(pos)
local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
local placed = node.name ~= "air"
local positions = check_connections(pos)
if #positions < 1 then return end
if #positions == 1 then
if placed then
local dead_end = #positions == 1
for _,connected_pos in pairs(positions) do
local net = technic.cables[minetest.hash_node_position(connected_pos)]
if net and technic.networks[net] then
if dead_end and placed then
-- Dead end placed, add it to the network
-- Get the network
local network_id = technic.cables[minetest.hash_node_position(positions[1])]
@ -85,19 +61,22 @@ clear_networks = function(pos)
-- We're evidently not on a network, nothing to add ourselves to
return
end
local sw_pos = minetest.get_position_from_hash(network_id)
sw_pos.y = sw_pos.y + 1
local network = technic.networks[network_id]
local tier = network.tier
-- Actually add it to the (cached) network
-- !! IMPORTANT: ../switching_station.lua -> check_node_subp() must be kept in sync
if technic.is_tier_cable(node.name, tier) then
technic.cables[minetest.hash_node_position(pos)] = network_id
pos.visited = 1
if technic.is_tier_cable(node.name, tier) then
-- Found a cable
table.insert(network.all_nodes,pos)
elseif technic.machines[tier][node.name] then
-- Found a machine
local eu_type = technic.machines[tier][node.name]
meta:set_string(tier.."_network", string.format("%.20g", network_id))
meta:set_int(tier.."_EU_timeout", 2)
if eu_type == technic.producer then
table.insert(network.PR_nodes, pos)
elseif eu_type == technic.receiver then
@ -110,7 +89,7 @@ clear_networks = function(pos)
end
-- Note: SPECIAL (i.e. switching station) is not traversed!
end
else
elseif dead_end and not placed then
-- Dead end removed, remove it from the network
-- Get the network
local network_id = technic.cables[minetest.hash_node_position(positions[1])]
@ -133,16 +112,15 @@ clear_networks = function(pos)
end
end
end
end
return
end
clear_network(technic.cables[minetest.hash_node_position(pos)])
for _,connected_pos in pairs(positions) do
local network_id = technic.cables[minetest.hash_node_position(connected_pos)]
else
-- Not a dead end, so the whole network needs to be recalculated
clear_network(network_id)
for _,v in pairs(technic.networks[net].all_nodes) do
local pos1 = minetest.hash_node_position(v)
technic.cables[pos1] = nil
end
technic.networks[net] = nil
end
end
end
end
@ -192,7 +170,7 @@ function technic.register_cable(tier, size)
connects_to = {"group:technic_"..ltier.."_cable",
"group:technic_"..ltier, "group:technic_all_tiers"},
on_construct = clear_networks,
after_destruct = clear_networks,
on_destruct = clear_networks,
})
local xyz = {
@ -232,7 +210,7 @@ function technic.register_cable(tier, size)
connects_to = {"group:technic_"..ltier.."_cable",
"group:technic_"..ltier, "group:technic_all_tiers"},
on_construct = clear_networks,
after_destruct = clear_networks,
on_destruct = clear_networks,
}
def.node_box.fixed = {
{-size, -size, -size, size, size, size},

View File

@ -8,71 +8,6 @@ function technic.register_compressor_recipe(data)
technic.register_recipe("compressing", data)
end
-- Defuse the default recipes, since we have
-- the compressor to take over in a more realistic manner.
local crafts_to_clear = {
"default:desert_sand",
"default:sand",
"default:silver_sand",
}
local dependent_crafts_to_clear = {
everness = {
"everness:coral_sand",
"everness:coral_forest_deep_ocean_sand",
"everness:coral_white_sand",
"everness:crystal_sand",
"everness:cursed_sand",
"everness:cursed_lands_deep_ocean_sand",
"everness:crystal_forest_deep_ocean_sand",
"everness:mineral_sand",
},
nether = {
"nether:brick",
"nether:brick_compressed",
"nether:rack",
"nether:rack_deep",
},
}
-- Add dependent recipes to main collection of
-- recipes to be cleared if their mods are used.
for dependency, crafts in pairs(dependent_crafts_to_clear) do
if minetest.get_modpath(dependency) then
for _, craft_entry in ipairs(crafts) do
table.insert(crafts_to_clear, craft_entry)
end
end
end
-- Clear recipes
for _, craft_name in ipairs(crafts_to_clear) do
-- Regular bricks are 2x2 shaped, nether bricks are 3x3 shaped (irregular)
local is_regular = string.sub(craft_name, 1, 12) ~= "nether:brick"
local shaped_recipe
if is_regular then
shaped_recipe = {
{craft_name, craft_name},
{craft_name, craft_name},
}
else
shaped_recipe = {
{craft_name, craft_name, craft_name},
{craft_name, craft_name, craft_name},
{craft_name, craft_name, craft_name},
}
end
minetest.clear_craft({
type = "shaped",
recipe = shaped_recipe,
})
end
--
-- Compile compressor recipes
--
local recipes = {
{"default:snowblock", "default:ice"},
{"default:sand 2", "default:sandstone"},
@ -86,8 +21,8 @@ local recipes = {
{"technic:uranium35_ingot 5", "technic:uranium_fuel"},
}
local dependent_recipes = {
everness = {
if minetest.get_modpath("everness") then
local everness_sand_to_sandstone_recipes = {
{"everness:coral_deep_ocean_sand 2", "everness:coral_deep_ocean_sandstone_block"},
{"everness:coral_sand 2", "everness:coral_sandstone"},
{"everness:coral_white_sand 2", "everness:coral_white_sandstone"},
@ -96,26 +31,47 @@ local dependent_recipes = {
{"everness:cursed_lands_deep_ocean_sand 2", "everness:cursed_lands_deep_ocean_sandstone_block"},
{"everness:cursed_sand 2", "everness:cursed_sandstone_block"},
{"everness:mineral_sand 2", "everness:mineral_sandstone"},
},
nether = {
{"nether:brick 9", "nether:brick_compressed"},
{"nether:brick_compressed 9", "nether:nether_lump"},
{"nether:rack", "nether:brick",},
{"nether:rack_deep", "nether:brick_deep"},
},
}
-- Add dependent recipes to main recipe collection
-- if their mods are used.
for dependency, recipes_to_add in pairs(dependent_recipes) do
if minetest.get_modpath(dependency) then
for _, recipe_entry in ipairs(recipes_to_add) do
table.insert(recipes, recipe_entry)
end
for _, data in ipairs(everness_sand_to_sandstone_recipes) do
table.insert(recipes, {data[1], data[2]})
end
end
-- Register compressor recipes
-- defuse the default sandstone recipe, since we have the compressor to take over in a more realistic manner
local crafts_to_clear = {
"default:desert_sand",
"default:sand",
"default:silver_sand"
}
if minetest.get_modpath("everness") then
local everness_crafts_to_clear = {
"everness:coral_sand",
"everness:coral_forest_deep_ocean_sand",
"everness:coral_white_sand",
"everness:crystal_sand",
"everness:cursed_sand",
"everness:cursed_lands_deep_ocean_sand",
"everness:crystal_forest_deep_ocean_sand",
"everness:mineral_sand",
}
for _, sand_name in ipairs(everness_crafts_to_clear) do
table.insert(crafts_to_clear, sand_name)
end
end
for _, sand_name in ipairs(crafts_to_clear) do
minetest.clear_craft({
type = "shaped",
recipe = {
{sand_name, sand_name},
{sand_name, sand_name},
},
})
end
for _, data in pairs(recipes) do
technic.register_compressor_recipe({input = {data[1]}, output = data[2]})
end

View File

@ -36,73 +36,73 @@ local recipes = {
{"default:ice", "default:snowblock"},
}
local dependent_recipes = {
-- Sandstones
everness = {
{"everness:coral_deep_ocean_sandstone_block", "everness:coral_deep_ocean_sand 2"},
{"everness:coral_sandstone", "everness:coral_sand 2"},
{"everness:coral_white_sandstone", "everness:coral_white_sand 2"},
{"everness:crystal_forest_deep_ocean_sandstone_block", "everness:crystal_forest_deep_ocean_sand 2"},
{"everness:crystal_sandstone", "everness:crystal_sand 2"},
{"everness:cursed_lands_deep_ocean_sandstone_block", "everness:cursed_lands_deep_ocean_sand 2"},
{"everness:cursed_sandstone_block", "everness:cursed_sand 2"},
{"everness:mineral_sandstone", "everness:mineral_sand 2"},
-- Lumps and wheat
{"everness:pyrite_lump", "technic:pyrite_dust 2"},
},
farming = {
{"farming:seed_wheat", "farming:flour 1"},
},
gloopores = {
{"gloopores:alatro_lump", "technic:alatro_dust 2"},
{"gloopores:kalite_lump", "technic:kalite_dust 2"},
{"gloopores:arol_lump", "technic:arol_dust 2"},
{"gloopores:talinite_lump", "technic:talinite_dust 2"},
{"gloopores:akalin_lump", "technic:akalin_dust 2"},
},
homedecor = {
{"home_decor:brass_ingot", "technic:brass_dust 1"},
},
moreores = {
{"moreores:mithril_lump", "technic:mithril_dust 2"},
{"moreores:silver_lump", "technic:silver_dust 2"},
},
nether = {
{"nether:nether_lump", "technic:nether_dust 2"},
},
}
for dependency, materials_to_add in pairs(dependent_recipes) do
if minetest.get_modpath(dependency) then
for _, material_entry in ipairs(materials_to_add) do
table.insert(recipes, material_entry)
end
end
if minetest.get_modpath("everness") then
table.insert(recipes, {"everness:coral_deep_ocean_sandstone_block", "everness:coral_deep_ocean_sand 2"})
table.insert(recipes, {"everness:coral_sandstone", "everness:coral_sand 2"})
table.insert(recipes, {"everness:coral_white_sandstone", "everness:coral_white_sand 2"})
table.insert(recipes, {"everness:crystal_forest_deep_ocean_sandstone_block", "everness:crystal_forest_deep_ocean_sand 2"})
table.insert(recipes, {"everness:crystal_sandstone", "everness:crystal_sand 2"})
table.insert(recipes, {"everness:cursed_lands_deep_ocean_sandstone_block", "everness:cursed_lands_deep_ocean_sand 2"})
table.insert(recipes, {"everness:cursed_sandstone_block", "everness:cursed_sand 2"})
table.insert(recipes, {"everness:mineral_sandstone", "everness:mineral_sand 2"})
end
-- defuse the sandstone -> 4 sand recipe to avoid infinite sand bugs (also consult the inverse compressor recipe)
minetest.clear_craft({
recipe = {{"default:sandstone"}},
recipe = {
{"default:sandstone"}
},
})
minetest.clear_craft({
recipe = {{"default:desert_sandstone"}},
recipe = {
{"default:desert_sandstone"}
},
})
minetest.clear_craft({
recipe = {{"default:silver_sandstone"}},
recipe = {
{"default:silver_sandstone"}
},
})
if minetest.get_modpath("everness") then
minetest.clear_craft({
recipe = {{"everness:mineral_sandstone"}},
recipe = {
{"everness:mineral_sandstone"}
},
})
-- Currently (2024-03-09), there seem to be no reverse recipes for any of the other everness sandstones.
end
for _, data in ipairs(recipes) do
if minetest.get_modpath("farming") then
table.insert(recipes, {"farming:seed_wheat", "farming:flour 1"})
end
if minetest.get_modpath("moreores") then
table.insert(recipes, {"moreores:mithril_lump", "technic:mithril_dust 2"})
table.insert(recipes, {"moreores:silver_lump", "technic:silver_dust 2"})
end
if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then
table.insert(recipes, {"gloopores:alatro_lump", "technic:alatro_dust 2"})
table.insert(recipes, {"gloopores:kalite_lump", "technic:kalite_dust 2"})
table.insert(recipes, {"gloopores:arol_lump", "technic:arol_dust 2"})
table.insert(recipes, {"gloopores:talinite_lump", "technic:talinite_dust 2"})
table.insert(recipes, {"gloopores:akalin_lump", "technic:akalin_dust 2"})
end
if minetest.get_modpath("homedecor") then
table.insert(recipes, {"home_decor:brass_ingot", "technic:brass_dust 1"})
end
if minetest.get_modpath("everness") then
table.insert(recipes, {"everness:pyrite_lump", "technic:pyrite_dust 2"})
end
for _, data in pairs(recipes) do
technic.register_grinder_recipe({input = {data[1]}, output = data[2]})
end
-- Dusts
-- dusts
local function register_dust(name, ingot)
local lname = string.lower(name)
lname = string.gsub(lname, ' ', '_')
@ -120,57 +120,36 @@ local function register_dust(name, ingot)
end
end
-- Sorted alphabetically
local dusts = {
{"Brass", "basic_materials:brass_ingot"},
{"Bronze", "default:bronze_ingot"},
{"Carbon Steel", "technic:carbon_steel_ingot"},
{"Cast Iron", "technic:cast_iron_ingot"},
{"Chernobylite", "technic:chernobylite_block"},
{"Chromium", "technic:chromium_ingot"},
{"Coal", nil},
{"Copper", "default:copper_ingot"},
{"Lead", "technic:lead_ingot"},
{"Gold", "default:gold_ingot"},
{"Mithril", "moreores:mithril_ingot"},
{"Silver", "moreores:silver_ingot"},
{"Stainless Steel", "technic:stainless_steel_ingot"},
{"Stone", "default:stone"},
{"Sulfur", nil},
{"Tin", "default:tin_ingot"},
{"Wrought Iron", "technic:wrought_iron_ingot"},
{"Zinc", "technic:zinc_ingot"},
}
local dependent_dusts = {
everness = {
{"Pyrite", "everness:pyrite_ingot"},
},
gloopores = {
{"Akalin", "glooptest:akalin_ingot"},
{"Alatro", "glooptest:alatro_ingot"},
{"Arol", "glooptest:arol_ingot"},
{"Kalite", nil},
{"Talinite", "glooptest:talinite_ingot"},
},
nether = {
{"Nether", "nether:nether_ingot"},
},
}
for dependency, dusts_to_add in pairs(dependent_dusts) do
if minetest.get_modpath(dependency) then
for _, dust_entry in pairs(dusts_to_add) do
table.insert(dusts, dust_entry)
end
-- Sorted alphibeticaly
register_dust("Brass", "basic_materials:brass_ingot")
register_dust("Bronze", "default:bronze_ingot")
register_dust("Carbon Steel", "technic:carbon_steel_ingot")
register_dust("Cast Iron", "technic:cast_iron_ingot")
register_dust("Chernobylite", "technic:chernobylite_block")
register_dust("Chromium", "technic:chromium_ingot")
register_dust("Coal", nil)
register_dust("Copper", "default:copper_ingot")
register_dust("Lead", "technic:lead_ingot")
register_dust("Gold", "default:gold_ingot")
register_dust("Mithril", "moreores:mithril_ingot")
register_dust("Silver", "moreores:silver_ingot")
register_dust("Stainless Steel", "technic:stainless_steel_ingot")
register_dust("Stone", "default:stone")
register_dust("Sulfur", nil)
register_dust("Tin", "default:tin_ingot")
register_dust("Wrought Iron", "technic:wrought_iron_ingot")
register_dust("Zinc", "technic:zinc_ingot")
if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then
register_dust("Akalin", "glooptest:akalin_ingot")
register_dust("Alatro", "glooptest:alatro_ingot")
register_dust("Arol", "glooptest:arol_ingot")
register_dust("Kalite", nil)
register_dust("Talinite", "glooptest:talinite_ingot")
end
if minetest.get_modpath("everness") then
register_dust("Pyrite", "everness:pyrite_ingot")
end
for _, data in ipairs(dusts) do
register_dust(data[1], data[2])
end
-- Uranium
for p = 0, 35 do
local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil
local psuffix = p == 7 and "" or p
@ -206,7 +185,6 @@ for pa = 0, 34 do
end
end
-- Fuels
minetest.register_craft({
type = "fuel",
recipe = "technic:coal_dust",

View File

@ -32,10 +32,7 @@ function technic.register_recipe_type(typename, origdata)
end
local function get_recipe_index(items)
if type(items) ~= "table" then
return false
end
if not items or type(items) ~= "table" then return false end
local l = {}
for i, stack in ipairs(items) do
l[i] = ItemStack(stack):get_name()
@ -78,21 +75,22 @@ local function register_recipe(typename, data)
end
if (have_cg or have_i3) and technic.recipes[typename].output_size == 1 then
local result = data.output
if type(result) == "table" then
if (type(result)=="table") then
result = result[1]
end
local items = table.concat(data.input, ", ")
if have_cg and craftguide.register_craft then
craftguide.register_craft({
type = typename,
result = result,
items = data.input,
items = {items},
})
end
if have_i3 then
i3.register_craft({
type = typename,
result = result,
items = data.input,
items = {items},
})
end
end

View File

@ -97,14 +97,12 @@ local function flatten(map)
return list
end
-- Add a node to the LV/MV/HV network
-- Returns: indicator whether the node is new in the network
-- Add a wire node to the LV/MV/HV network
-- Returns: indicator whether the cable is new in the network
local hash_node_position = minetest.hash_node_position
local function add_network_node(nodes, pos, network_id)
local node_id = hash_node_position(pos)
if network_id then
technic.cables[node_id] = network_id
end
if nodes[node_id] then
return false
end
@ -138,31 +136,21 @@ local check_node_subp = function(network, pos, machines, sw_pos, from_below, net
local meta = minetest.get_meta(pos)
-- Normal tostring() does not have enough precision, neither does meta:set_int()
-- Lua 5.1 bug: Cannot use hexadecimal notation for compression (see LuaJIT #911)
local network_str = string.format("%.20g", network_id)
local network_key = network.tier.."_network"
local m_network_str = meta:get_string(network_key)
if m_network_str == "" then
meta:set_string(network_key, network_str)
else
if m_network_str ~= network_str then
return
end
end
meta:set_string(network.tier.."_network", string.format("%.20g", network_id))
if eu_type == technic.producer then
add_network_node(network.PR_nodes, pos)
add_network_node(network.PR_nodes, pos, network_id)
elseif eu_type == technic.receiver then
add_network_node(network.RE_nodes, pos)
add_network_node(network.RE_nodes, pos, network_id)
elseif eu_type == technic.producer_receiver then
add_network_node(network.PR_nodes, pos)
add_network_node(network.RE_nodes, pos)
add_network_node(network.PR_nodes, pos, network_id)
add_network_node(network.RE_nodes, pos, network_id)
elseif eu_type == technic.battery then
add_network_node(network.BA_nodes, pos)
add_network_node(network.BA_nodes, pos, network_id)
elseif eu_type == "SPECIAL" and from_below and
not vector.equals(pos, sw_pos) then
-- Another switching station -> disable it
add_network_node(network.SP_nodes, pos)
add_network_node(network.SP_nodes, pos, network_id)
meta:set_int("active", 0)
end
@ -205,6 +193,7 @@ local get_network = function(sw_pos, cable_pos, tier)
end
return cached.PR_nodes, cached.BA_nodes, cached.RE_nodes
end
local machines = technic.machines[tier]
local network = {
tier = tier,
@ -466,7 +455,6 @@ local function switching_station_timeout_count(pos, tier)
local meta = minetest.get_meta(pos)
local timeout = meta:get_int(tier.."_EU_timeout")
if timeout <= 0 then
meta:set_string(tier.."_network", "")
meta:set_int(tier.."_EU_input", 0) -- Not needed anymore <-- actually, it is for supply converter
return true
else
@ -480,29 +468,22 @@ minetest.register_abm({
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local has_network = false
local technic_machine = false
for tier, machines in pairs(technic.machines) do
if machines[node.name] then
technic_machine = true
if not switching_station_timeout_count(pos, tier) then
has_network = true
end
end
end
if technic_machine and not has_network then
if machines[node.name] and switching_station_timeout_count(pos, tier) then
local nodedef = minetest.registered_nodes[node.name]
if nodedef then
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("%s Has No Network"):format(nodedef.description))
if nodedef.technic_disabled_machine_name then
end
if nodedef and nodedef.technic_disabled_machine_name then
node.name = nodedef.technic_disabled_machine_name
minetest.swap_node(pos, node)
end
if nodedef.technic_on_disable then
if nodedef and nodedef.technic_on_disable then
nodedef.technic_on_disable(pos, node)
end
end
end
end,
})

View File

@ -1,3 +1,3 @@
name = technic
depends = default, pipeworks, technic_worldgen, basic_materials
optional_depends = bucket, screwdriver, mesecons, mesecons_mvps, digilines, digiline_remote, intllib, unified_inventory, vector_extras, dye, craftguide, i3, everness, nether
optional_depends = bucket, screwdriver, mesecons, mesecons_mvps, digilines, digiline_remote, intllib, unified_inventory, vector_extras, dye, craftguide, i3, everness

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

View File

@ -128,7 +128,6 @@ local function dig_recursive(x, y, z)
if safe_cut and cutter.param2[i] ~= 0 then
-- Do not dig manually placed nodes
-- Problem: moretrees' generated jungle trees use param2 = 2
cutter.stopped_by_safe_cut = true
return
end
@ -202,11 +201,6 @@ local function chainsaw_dig(player, pos, remaining_charge)
return
end
if cutter.stopped_by_safe_cut then
minetest.chat_send_player(player_name, S("The chainsaw could not dig all nodes" ..
" because the safety mechanism was activated."))
end
minetest.sound_play("chainsaw", {
pos = pos,
gain = 1.0,

View File

@ -8,6 +8,14 @@ technic.register_power_tool("technic:sonic_screwdriver", sonic_screwdriver_max_c
local ROTATE_FACE = 1
local ROTATE_AXIS = 2
local function nextrange(x, max)
x = x + 1
if x > max then
x = 0
end
return x
end
-- Handles rotation
local function screwdriver_handler(itemstack, user, pointed_thing, mode)
if pointed_thing.type ~= "node" then
@ -23,80 +31,16 @@ local function screwdriver_handler(itemstack, user, pointed_thing, mode)
local node = minetest.get_node(pos)
local ndef = minetest.registered_nodes[node.name]
if not ndef then return end
local paramtype2 = ndef.paramtype2
if not ndef or not ndef.paramtype2 == "facedir" or
(ndef.drawtype == "nodebox" and
not ndef.node_box.type == "fixed") or
node.param2 == nil then
return
end
-- contrary to the default screwdriver, do not check for can_dig, to allow rotating machines with CLU's in them
-- this is consistent with the previous sonic screwdriver
-- Set param2
local new_param2
local param2 = node.param2
local dirs_per_axis = 4
local dir_components = {
-- 2^5, 5 bits
facedir = 32,
colorfacedir = 32,
colordegrotate = 32,
-- 2^2, 2 bits
["4dir"] = 4, -- lua doesn't like it when vars start with a digit
color4dir = 4,
}
local dir_component = dir_components[paramtype2]
local floor = math.floor
-- non-direction data is preserved whether it be color or otherwise
if (paramtype2 == "facedir") or (paramtype2 == "colorfacedir") then
local aux = floor(param2 / dir_component)
local dir = param2 % dir_component
if mode == ROTATE_FACE then
dir = (floor(param2 / dirs_per_axis)) * dirs_per_axis + ((dir + 1) % dirs_per_axis)
elseif mode == ROTATE_AXIS then
dir = ((floor(param2 / dirs_per_axis) + 1) * dirs_per_axis) % 24
end
new_param2 = aux * dir_component + dir
elseif (paramtype2 == "4dir") or (paramtype2 == "color4dir") then
local aux = floor(param2 / dir_component)
local dir = param2 % dir_component
if mode == ROTATE_FACE then
dir = (dir + 1) % dirs_per_axis
elseif mode == ROTATE_AXIS then
dir = 0
end
new_param2 = aux * dir_component + dir
elseif (paramtype2 == "degrotate") then
if mode == ROTATE_FACE then
new_param2 = param2 + 1
elseif mode == ROTATE_AXIS then
new_param2 = param2 + 20
end
new_param2 = new_param2 % 240
elseif (paramtype2 == "colordegrotate") then
local aux = floor(param2 / dir_component)
local rotation = param2 % dir_component
if mode == ROTATE_FACE then
rotation = rotation + 1
elseif mode == ROTATE_AXIS then
rotation = rotation + 4
end
rotation = rotation % 24
new_param2 = aux * dir_component + rotation
else
return
end
local meta = technic.get_stack_meta(itemstack)
local charge = meta:get_int("technic:charge")
if charge < 100 then
@ -105,7 +49,19 @@ local function screwdriver_handler(itemstack, user, pointed_thing, mode)
minetest.sound_play("technic_sonic_screwdriver", {pos = pos, gain = 0.3, max_hear_distance = 10})
node.param2 = new_param2
-- Set param2
local rotationPart = node.param2 % 32 -- get first 4 bits
local preservePart = node.param2 - rotationPart
local axisdir = math.floor(rotationPart / 4)
local rotation = rotationPart - axisdir * 4
if mode == ROTATE_FACE then
rotationPart = axisdir * 4 + nextrange(rotation, 3)
elseif mode == ROTATE_AXIS then
rotationPart = nextrange(axisdir, 5) * 4
end
node.param2 = preservePart + rotationPart
minetest.swap_node(pos, node)
if not technic.creative_mode then

View File

@ -72,46 +72,64 @@ else
end
end
local function add_buttons(do_variants, t, x, y)
local X_OFFSET = 1
local BUTTONS_PER_ROW = 7
-- ipairs: only iterate over continuous integers
for _, data in ipairs(technic_cnc.programs) do
-- Never add full variants. Only add half variants when asked
if not data.half_counterpart and (do_variants == (data.full_counterpart ~= nil)) then
--print("add", data.suffix)
t[#t + 1] = ("image_button[%g,%g;1,1;%s.png;%s; ]"):format(
x + X_OFFSET, y, data.suffix, data.short_name
)
t[#t + 1] = ("tooltip[%s;%s]"):format(
data.short_name, minetest.formspec_escape(data.desc .. " (* " .. data.output .. ")")
)
x = x + 1
if x == BUTTONS_PER_ROW then
x = 0
y = y + 1
end
end
end
end
local function make_formspec()
local t = {
"size[9,11;]",
"label[1,0;"..S("Choose Milling Program:").."]",
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,
}
add_buttons(false, t, 0, 0.5)
t[#t + 1] = (
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; ]"
)
add_buttons(true, t, 1, 4)
t[#t + 1] = (
"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;"..S("In:").."]"..
"list[current_name;src;0.5,5.5;1,1;]"..
"label[4, 5;"..S("Out:").."]"..
@ -122,18 +140,6 @@ local function make_formspec()
"listring[current_player;main]"..
"listring[current_name;src]"..
"listring[current_player;main]"
)
return table.concat(t)
end
local cnc_formspec = nil
minetest.register_on_mods_loaded(function()
technic_cnc._populate_shortcuts()
cnc_formspec = make_formspec()
end)
-- 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.
@ -162,28 +168,27 @@ local function form_handler(pos, formname, fields, sender)
for k, _ in pairs(fields) do
-- Set a multipier for the half/full size capable blocks
local program = technic_cnc.programs["technic_cnc_" .. k]
if size == 1 and program and program.full_counterpart then
program = technic_cnc.programs["technic_cnc_" .. k .. "_double"]
local multiplier
if twosize_products[k] ~= nil then
multiplier = size * twosize_products[k]
else
multiplier = onesize_products[k]
end
if program then
local multiplier = program.output
local product = inputname .. "_" .. program.suffix
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())
if program.half_counterpart then -- is full
if size == 1 then
meta:set_string("cnc_product", product)
--print(product, multiplier)
end
break -- no larger sizes allowed
end
-- half for normal
meta:set_string("cnc_product", product)
--print(product, multiplier)
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
@ -231,7 +236,7 @@ local run = function(pos, node)
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)
local srcstack = inv:get_stack("src", 1)
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"))

View File

@ -8,27 +8,16 @@ local ALPHA_CLIP = minetest.features.use_texture_alpha_string_modes and "clip" o
------------------------------------------------------
-- Define slope boxes for the various nodes
--[[
Additional keys after registration:
programs[program.suffix] = program
Additional fields after registration:
program.short_name = (trimmed suffix)
program.full_counterpart = suffix (optional, for full/half variants)
program.half_counterpart = suffix (optional, for full/half variants)
]]
-------------------------------------------
technic_cnc.programs = {
{ suffix = "technic_cnc_stick",
model = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15},
desc = S("Stick"),
output = 8
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"),
output = 2
desc = S("Element End Double")
},
{ suffix = "technic_cnc_element_cross_double",
@ -36,8 +25,7 @@ technic_cnc.programs = {
{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"),
output = 1
desc = S("Element Cross Double")
},
{ suffix = "technic_cnc_element_t_double",
@ -45,28 +33,24 @@ technic_cnc.programs = {
{-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"),
output = 1
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"),
output = 2
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"),
output = 2
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"),
output = nil -- calculated
desc = S("Element End")
},
{ suffix = "technic_cnc_element_cross",
@ -74,8 +58,7 @@ technic_cnc.programs = {
{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"),
output = nil -- calculated
desc = S("Element Cross")
},
{ suffix = "technic_cnc_element_t",
@ -83,22 +66,19 @@ technic_cnc.programs = {
{-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"),
output = nil -- calculated
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"),
output = nil -- calculated
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"),
output = nil -- calculated
desc = S("Element Straight")
},
{ suffix = "technic_cnc_oblate_spheroid",
@ -111,38 +91,32 @@ technic_cnc.programs = {
{ -8/16, -4/16, -8/16, 8/16, 4/16, 8/16 },
{ -6/16, -8/16, -6/16, 6/16, -4/16, 6/16 }
}
},
output = 1
}
},
{ suffix = "technic_cnc_sphere",
model = "technic_cnc_sphere.obj",
desc = S("Sphere"),
output = 1
desc = S("Sphere")
},
{ suffix = "technic_cnc_cylinder_horizontal",
model = "technic_cnc_cylinder_horizontal.obj",
desc = S("Horizontal Cylinder"),
output = 2
desc = S("Horizontal Cylinder")
},
{ suffix = "technic_cnc_cylinder",
model = "technic_cnc_cylinder.obj",
desc = S("Cylinder"),
output = 2
desc = S("Cylinder")
},
{ suffix = "technic_cnc_twocurvededge",
model = "technic_cnc_two_curved_edge.obj",
desc = S("Two Curved Edge/Corner Block"),
output = 1
desc = S("Two Curved Edge/Corner Block")
},
{ suffix = "technic_cnc_onecurvededge",
model = "technic_cnc_one_curved_edge.obj",
desc = S("One Curved Edge Block"),
output = 1
desc = S("One Curved Edge Block")
},
{ suffix = "technic_cnc_spike",
@ -156,8 +130,7 @@ technic_cnc.programs = {
{ -6/16, -4/16, -6/16, 6/16, 0, 6/16 },
{ -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 }
}
},
output = 1
}
},
{ suffix = "technic_cnc_pyramid",
@ -171,8 +144,7 @@ technic_cnc.programs = {
{ -6/16, -6/16, -6/16, 6/16, -4/16, 6/16 },
{ -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 }
}
},
output = 2
}
},
{ suffix = "technic_cnc_slope_inner_edge_upsdown",
@ -193,8 +165,7 @@ technic_cnc.programs = {
{ -0.5, 0.25, -0.25, 0.5, 0, 0.5 },
{ -0.5, 0.5, -0.5, 0.5, 0.25, 0.5 }
}
},
output = 1
}
},
{ suffix = "technic_cnc_slope_edge_upsdown",
@ -208,8 +179,7 @@ technic_cnc.programs = {
{ 0, 0, 0, 8/16, -4/16, 8/16 },
{ 4/16, -4/16, 4/16, 8/16, -8/16, 8/16 }
}
},
output = 1
}
},
{ suffix = "technic_cnc_slope_inner_edge",
@ -230,8 +200,7 @@ technic_cnc.programs = {
{ -0.5, 0.25, 0.25, 0.5, 0.5, 0.5 },
{ 0.25, 0.25, -0.5, 0.5, 0.5, 0.5 }
}
},
output = 1
}
},
{ suffix = "technic_cnc_slope_edge",
@ -245,8 +214,7 @@ technic_cnc.programs = {
{ -4/16, -4/16, -4/16, 8/16, 0, 8/16 },
{ -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 }
}
},
output = 1
}
},
{ suffix = "technic_cnc_slope_upsdown",
@ -260,8 +228,7 @@ technic_cnc.programs = {
{ -8/16, 0, 0, 8/16, -4/16, 8/16 },
{ -8/16, -4/16, 4/16, 8/16, -8/16, 8/16 }
}
},
output = 1
}
},
{ suffix = "technic_cnc_slope_lying",
@ -275,8 +242,7 @@ technic_cnc.programs = {
{ -4/16, -8/16, -4/16, 0, 8/16, 8/16 },
{ -8/16, -8/16, -8/16, -4/16, 8/16, 8/16 }
}
},
output = 2
}
},
{ suffix = "technic_cnc_slope",
@ -290,40 +256,11 @@ technic_cnc.programs = {
{ -8/16, -4/16, -4/16, 8/16, 0, 8/16 },
{ -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 }
}
},
output = 2
}
},
}
technic_cnc._populate_shortcuts = function()
-- Program quick access by string key
for _, data in ipairs(technic_cnc.programs) do
technic_cnc.programs[data.suffix] = data
data.short_name = assert(data.suffix:match("technic_cnc_(%S+)"))
end
-- Detect half/full counterparts
for k, data in pairs(technic_cnc.programs) do
if type(k) == "string" then
local full = technic_cnc.programs[k .. "_double"]
if full then
full.half_counterpart = k
data.full_counterpart = k .. "_double"
data.output = full.output * 2
--print("populate", k)
end
end
end
-- Final checks
for _, data in ipairs(technic_cnc.programs) do
assert(type(data.output) == "number", data.suffix)
assert(type(data.short_name) == "string", data.suffix)
end
end
-- 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
@ -390,3 +327,44 @@ function technic_cnc.register_all(recipeitem, groups, images, description)
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)
-- TODO: Remove this evil sorcery
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)
-- TODO: Remove this evil sorcery
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)
-- TODO: Remove this evil sorcery
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

View File

@ -10,7 +10,6 @@ local function register_material(nodename, tiles_override, descr_override)
end
local groups = {
cracky = ndef.groups.cracky,
crumbly = ndef.groups.crumbly,
choppy = ndef.groups.choppy,
flammable = ndef.groups.flammable,
@ -20,12 +19,6 @@ local function register_material(nodename, tiles_override, descr_override)
oddly_breakable_by_hand = ndef.groups.oddly_breakable_by_hand,
not_in_creative_inventory = 1,
}
local count = 0
for _ in pairs(groups) do
count = count + 1
end
assert(count >= 2, "Too few groups. node name=" .. nodename)
local tiles = tiles_override or { ndef.tiles[#ndef.tiles] }
assert(tiles and #tiles == 1, "Unknown tile format in node name=" .. nodename)

View File

@ -1,205 +1,238 @@
v 0 -0.5 -0.5
v 0 0.5 -0.5
v 0.097545 0.5 -0.490393
v 0.097545 -0.5 -0.490393
v 0.191342 0.5 -0.46194
v 0.191342 -0.5 -0.46194
v 0.277785 0.5 -0.415735
v 0.277785 -0.5 -0.415735
v 0.353553 0.5 -0.353554
v 0.353553 -0.5 -0.353554
v 0.415735 0.5 -0.277785
v 0.415735 -0.5 -0.277785
v 0.46194 0.5 -0.191342
v 0.46194 -0.5 -0.191342
v 0.490393 0.5 -0.097545
v 0.490393 -0.5 -0.097545
v 0.5 0.5 0
v 0.5 -0.5 0
v 0.490393 0.5 0.097545
v 0.490393 -0.5 0.097545
v 0.46194 0.5 0.191341
v 0.46194 -0.5 0.191341
v 0.415735 0.5 0.277785
v 0.415735 -0.5 0.277785
v 0.353553 0.5 0.353553
v 0.353553 -0.5 0.353553
v 0.277785 0.5 0.415735
v 0.277785 -0.5 0.415735
v 0.191342 0.5 0.46194
v 0.191342 -0.5 0.46194
v 0.097545 0.5 0.490392
v 0.097545 -0.5 0.490392
v 0 0.5 0.5
v 0 -0.5 0.5
v -0.097545 0.5 0.490392
v -0.097545 -0.5 0.490392
v -0.191342 0.5 0.461939
v -0.191342 -0.5 0.461939
v -0.277785 0.5 0.415734
v -0.277785 -0.5 0.415734
v -0.353554 0.5 0.353553
v -0.353554 -0.5 0.353553
v -0.415735 0.5 0.277785
v -0.415735 -0.5 0.277785
v -0.46194 0.5 0.191341
v -0.46194 -0.5 0.191341
v -0.490393 0.5 0.097545
v -0.490393 -0.5 0.097545
v -0.5 0.5 -0.000001
v -0.5 -0.5 -0.000001
v -0.490393 0.5 -0.097546
v -0.490393 -0.5 -0.097546
v -0.46194 0.5 -0.191342
v -0.46194 -0.5 -0.191342
v -0.415734 0.5 -0.277786
v -0.415734 -0.5 -0.277786
v -0.353553 0.5 -0.353554
v -0.353553 -0.5 -0.353554
v -0.277785 0.5 -0.415735
v -0.277785 -0.5 -0.415735
v -0.191341 0.5 -0.46194
v -0.191341 -0.5 -0.46194
v -0.097544 0.5 -0.490393
v -0.097544 -0.5 -0.490393
vn 0 0 -1
vn 0.1951 0 -0.9808
vn 0.3827 0 -0.9239
vn 0.5556 0 -0.8315
vn 0.7071 0 -0.7071
vn 0.8315 0 -0.5556
vn 0.9239 0 -0.3827
vn 0.9808 0 -0.1951
vn 1 0 0
vn 0.9808 0 0.1951
vn 0.9239 0 0.3827
vn 0.8315 0 0.5556
vn 0.7071 0 0.7071
vn 0.5556 0 0.8315
vn 0.3827 0 0.9239
vn 0.1951 0 0.9808
vn 0 0 1
vn -0.1951 0 0.9808
vn -0.3827 0 0.9239
vn -0.5556 0 0.8315
vn -0.7071 0 0.7071
vn -0.8315 0 0.5556
vn -0.9239 0 0.3827
vn -0.9808 0 0.1951
vn -1 0 0
vn -0.9808 0 -0.1951
vn -0.9239 0 -0.3827
vn -0.8315 0 -0.5556
vn -0.7071 0 -0.7071
vn -0.5556 0 -0.8315
vn -0.3827 0 -0.9239
vn 0 1 0
vn -0.1951 0 -0.9808
vn 0 -1 0
vt 0.500003 0.000001
vt 0.500004 0.999993
vt 0.437504 0.999994
vt 0.437503 0.000001
vt 0.375004 0.999995
vt 0.375002 0.000001
vt 0.312503 0.999996
vt 0.312502 0
vt 0.250002 0.999997
vt 0.250002 0
vt 0.187502 0.999997
vt 0.187502 0
vt 0.125002 0.999998
vt 0.125002 0
vt 0.062501 0.999998
vt 0.062501 0
vt 0.000001 0.999998
vt 0.000001 0
vt 0.999994 0.000001
vt 0.999998 0.999974
vt 0.937499 0.999975
vt 0.937494 0.000002
vt 0.875 0.999977
vt 0.874995 0.000002
vt 0.812501 0.999978
vt 0.812496 0.000003
vt 0.750002 0.99998
vt 0.749996 0.000004
vt 0.687502 0.999981
vt 0.687497 0.000004
vt 0.625002 0.999983
vt 0.624997 0.000005
vt 0.562503 0.999984
vt 0.562498 0.000005
vt 0.9904 0.402488
vt 0.999996 0.499996
vt 0.990387 0.597577
vt 0.961929 0.691372
vt 0.915719 0.777812
vt 0.853532 0.853577
vt 0.777759 0.915754
vt 0.691312 0.961954
vt 0.597514 0.9904
vt 0.402424 0.990387
vt 0.308631 0.961929
vt 0.22219 0.915718
vt 0.146426 0.853532
# 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.009603 0.597515
vt 0.000004 0.499997
vt 0.009615 0.402425
vt 0.038073 0.308631
vt 0.084284 0.222189
vt 0.14647 0.146425
vt 0.222242 0.084249
vt 0.308688 0.03805
vt 0.402486 0.009603
vt 0.597576 0.009615
vt 0.691371 0.038074
vt 0.777812 0.084284
vt 0.853577 0.146471
vt 0.915753 0.222244
vt 0.961953 0.30869
vt 0.500073 0
vt 0.915774 0.222274
vt 1 0.500072
vt 0.777723 0.915775
vt 0.499926 0.999999
vt 0.084223 0.77772
vt 0 0.499922
vt 0.222276 0.084224
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/1 3/3/2 4/4/2
f 4/4/2 3/3/2 5/5/3 6/6/3
f 6/6/3 5/5/3 7/7/4 8/8/4
f 8/8/4 7/7/4 9/9/5 10/10/5
f 10/10/5 9/9/5 11/11/6 12/12/6
f 12/12/6 11/11/6 13/13/7 14/14/7
f 14/14/7 13/13/7 15/15/8 16/16/8
f 16/16/8 15/15/8 17/17/9 18/18/9
f 18/19/9 17/20/9 19/21/10 20/22/10
f 20/22/10 19/21/10 21/23/11 22/24/11
f 22/24/11 21/23/11 23/25/12 24/26/12
f 24/26/12 23/25/12 25/27/13 26/28/13
f 26/28/13 25/27/13 27/29/14 28/30/14
f 28/30/14 27/29/14 29/31/15 30/32/15
f 30/32/15 29/31/15 31/33/16 32/34/16
f 32/34/16 31/33/16 33/2/17 34/1/17
f 34/1/17 33/2/17 35/3/18 36/4/18
f 36/4/18 35/3/18 37/5/19 38/6/19
f 38/6/19 37/5/19 39/7/20 40/8/20
f 40/8/20 39/7/20 41/9/21 42/10/21
f 42/10/21 41/9/21 43/11/22 44/12/22
f 44/12/22 43/11/22 45/13/23 46/14/23
f 46/14/23 45/13/23 47/15/24 48/16/24
f 48/16/24 47/15/24 49/17/25 50/18/25
f 50/19/25 49/20/25 51/21/26 52/22/26
f 52/22/26 51/21/26 53/23/27 54/24/27
f 54/24/27 53/23/27 55/25/28 56/26/28
f 56/26/28 55/25/28 57/27/29 58/28/29
f 58/28/29 57/27/29 59/29/30 60/30/30
f 60/30/30 59/29/30 61/31/31 62/32/31
f 3/35/32 2/36/32 63/37/32 61/38/32 59/39/32 57/40/32 55/41/32 53/42/32 51/43/32 49/2/32 47/44/32 45/45/32 43/46/32 41/47/32 39/48/32 37/49/32 35/50/32 33/51/32 31/52/32 29/53/32 27/54/32 25/55/32 23/56/32 21/57/32 19/58/32 17/1/32 15/59/32 13/60/32 11/61/32 9/62/32 7/63/32 5/64/32
f 64/34/33 63/33/33 2/2/1 1/1/1
f 62/32/31 61/31/31 63/33/33 64/34/33
f 1/65/34 4/59/34 6/60/34 8/61/34 10/62/34 12/66/34 14/64/34 16/35/34 18/67/34 20/37/34 22/38/34 24/39/34 26/40/34 28/68/34 30/42/34 32/43/34 34/69/34 36/44/34 38/45/34 40/46/34 42/47/34 44/70/34 46/49/34 48/50/34 50/71/34 52/52/34 54/53/34 56/54/34 58/55/34 60/72/34 62/57/34 64/58/34
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

View File

@ -1,101 +1,70 @@
v 0.5 0 -0.5
v -0.5 0 -0.5
v 0.5 0.097545 -0.490393
v -0.5 0.097545 -0.490393
v 0.5 0.191342 -0.46194
v -0.5 0.191342 -0.46194
v 0.5 0.277785 -0.415735
v -0.5 0.277785 -0.415735
v 0.5 0.353553 -0.353553
v -0.5 0.353553 -0.353554
v 0.5 0.415735 -0.277785
v -0.5 0.415735 -0.277785
v 0.5 0.46194 -0.191342
v -0.5 0.46194 -0.191342
v 0.5 0.490393 -0.097545
v -0.5 0.490393 -0.097545
v 0.5 0.5 0
v -0.5 0.5 0
v 0.5 0.490393 0.097545
v -0.5 0.490393 0.097545
v 0.5 0.46194 0.191342
v -0.5 0.46194 0.191341
v 0.5 0.415735 0.277785
v -0.5 0.415735 0.277785
v 0.5 0.353553 0.353553
v -0.5 0.353553 0.353553
v 0.5 0.277785 0.415735
v -0.5 0.277785 0.415735
v 0.5 0.191342 0.46194
v -0.5 0.191342 0.46194
v 0.5 0.097545 0.490393
v -0.5 0.097545 0.490392
v 0.5 0 0.5
v -0.5 0 0.5
v 0.5 -0.097546 0.490392
v -0.5 -0.097545 0.490392
v 0.5 -0.191342 0.46194
v -0.5 -0.191342 0.461939
v 0.5 -0.277785 0.415734
v -0.5 -0.277785 0.415734
v 0.5 -0.353554 0.353553
v -0.5 -0.353554 0.353553
v 0.5 -0.415735 0.277785
v -0.5 -0.415735 0.277785
v 0.5 -0.46194 0.191341
v -0.5 -0.46194 0.191341
v 0.5 -0.490393 0.097545
v -0.5 -0.490393 0.097544
v 0.5 -0.5 -0.000001
v -0.5 -0.5 -0.000001
v 0.5 -0.490393 -0.097546
v -0.5 -0.490393 -0.097546
v 0.5 -0.46194 -0.191342
v -0.5 -0.46194 -0.191343
v 0.5 -0.415734 -0.277786
v -0.5 -0.415734 -0.277786
v 0.5 -0.353553 -0.353554
v -0.5 -0.353553 -0.353554
v 0.5 -0.277785 -0.415735
v -0.5 -0.277784 -0.415735
v 0.5 -0.191341 -0.46194
v -0.5 -0.191341 -0.46194
v 0.5 -0.097544 -0.490393
v -0.5 -0.097544 -0.490393
vn 0 0 -1
vn 0 0.1951 -0.9808
vn 0 0.3827 -0.9239
vn 0 0.5556 -0.8315
vn 0 0.7071 -0.7071
vn 0 0.8315 -0.5556
vn 0 0.9239 -0.3827
vn 0 0.9808 -0.1951
vn 0 1 0
vn 0 0.9808 0.1951
vn 0 0.9239 0.3827
vn 0 0.8315 0.5556
vn 0 0.7071 0.7071
vn 0 0.5556 0.8315
vn 0 0.3827 0.9239
vn 0 0.1951 0.9808
vn 0 0 1
vn 0 -0.1951 0.9808
vn 0 -0.3827 0.9239
vn 0 -0.5556 0.8315
vn 0 -0.7071 0.7071
vn 0 -0.8315 0.5556
vn 0 -0.9239 0.3827
vn 0 -0.9808 0.1951
vn 0 -1 0
vn 0 -0.9808 -0.1951
vn 0 -0.9239 -0.3827
vn 0 -0.8315 -0.5556
vn 0 -0.7071 -0.7071
vn 0 -0.5556 -0.8315
vn 0 -0.3827 -0.9239
vn -1 0 0
vn 0 -0.1951 -0.9808
vn 1 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
@ -108,19 +77,19 @@ vt 0.999999 0.749997
vt 0.000002 0.749996
vt 0.999999 0.812497
vt 0.000002 0.812497
vt 1 0.874997
vt 1.000000 0.874997
vt 0.000001 0.874997
vt 1 0.937498
vt 1.000000 0.937498
vt 0.000001 0.937497
vt 1 0.999998
vt 1.000000 0.999998
vt 0.000001 0.999998
vt 0.000003 0.000005
vt 0.999976 0.000001
vt 0.999977 0.0625
vt 0.999977 0.062500
vt 0.000003 0.062505
vt 0.999978 0.124999
vt 0.000004 0.125004
vt 0.99998 0.187498
vt 0.999980 0.187498
vt 0.000005 0.187503
vt 0.999982 0.249997
vt 0.000005 0.250003
@ -138,7 +107,7 @@ vt 0.146469 0.146424
vt 0.222242 0.084247
vt 0.308689 0.038047
vt 0.402487 0.009601
vt 0.500033 0
vt 0.500033 -0.000000
vt 0.597577 0.009613
vt 0.691371 0.038072
vt 0.777811 0.084283
@ -147,59 +116,123 @@ vt 0.915753 0.222242
vt 0.961952 0.308688
vt 0.990398 0.402486
vt 0.990386 0.597576
vt 0.961928 0.69137
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.49997 1
vt 0.499970 1.000000
vt 0.402425 0.990386
vt 0.30863 0.961927
vt 0.308630 0.961927
vt 0.222189 0.915717
vt 0.146424 0.85353
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 0.499925
vt 0.000000 0.499925
vt 0.222279 0.084223
vt 0.500078 0
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/1 4/3/2 3/4/2
f 3/4/2 4/3/2 6/5/3 5/6/3
f 5/6/3 6/5/3 8/7/4 7/8/4
f 7/8/4 8/7/4 10/9/5 9/10/5
f 9/10/5 10/9/5 12/11/6 11/12/6
f 11/12/6 12/11/6 14/13/7 13/14/7
f 13/14/7 14/13/7 16/15/8 15/16/8
f 15/16/8 16/15/8 18/17/9 17/18/9
f 17/19/9 18/20/9 20/21/10 19/22/10
f 19/22/10 20/21/10 22/23/11 21/24/11
f 21/24/11 22/23/11 24/25/12 23/26/12
f 23/26/12 24/25/12 26/27/13 25/28/13
f 25/28/13 26/27/13 28/29/14 27/30/14
f 27/30/14 28/29/14 30/31/15 29/32/15
f 29/32/15 30/31/15 32/33/16 31/34/16
f 31/34/16 32/33/16 34/2/17 33/1/17
f 33/1/17 34/2/17 36/3/18 35/4/18
f 35/4/18 36/3/18 38/5/19 37/6/19
f 37/6/19 38/5/19 40/7/20 39/8/20
f 39/8/20 40/7/20 42/9/21 41/10/21
f 41/10/21 42/9/21 44/11/22 43/12/22
f 43/12/22 44/11/22 46/13/23 45/14/23
f 45/14/23 46/13/23 48/15/24 47/16/24
f 47/16/24 48/15/24 50/17/25 49/18/25
f 49/19/25 50/20/25 52/21/26 51/22/26
f 51/22/26 52/21/26 54/23/27 53/24/27
f 53/24/27 54/23/27 56/25/28 55/26/28
f 55/26/28 56/25/28 58/27/29 57/28/29
f 57/28/29 58/27/29 60/29/30 59/30/30
f 59/30/30 60/29/30 62/31/31 61/32/31
f 4/35/32 2/1/32 64/36/32 62/37/32 60/38/32 58/39/32 56/40/32 54/41/32 52/42/32 50/43/32 48/44/32 46/45/32 44/46/32 42/47/32 40/48/32 38/49/32 36/50/32 34/2/32 32/51/32 30/52/32 28/53/32 26/54/32 24/55/32 22/56/32 20/57/32 18/58/32 16/59/32 14/60/32 12/61/32 10/62/32 8/63/32 6/64/32
f 63/34/33 64/33/33 2/2/1 1/1/1
f 61/32/31 62/31/31 64/33/33 63/34/33
f 1/65/34 3/51/34 5/52/34 7/53/34 9/54/34 11/66/34 13/56/34 15/57/34 17/67/34 19/59/34 21/60/34 23/61/34 25/62/34 27/68/34 29/64/34 31/35/34 33/69/34 35/36/34 37/37/34 39/38/34 41/39/34 43/70/34 45/41/34 47/42/34 49/71/34 51/44/34 53/45/34 55/46/34 57/47/34 59/72/34 61/49/34 63/50/34
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

View File

@ -1,24 +1,27 @@
v -0.5 0.5 0.5
v -0.5 0.5 -0.5
v -0.5 -0.5 -0.5
v -0.5 -0.5 0.5
v 0.5 -0.5 -0.5
v 0.5 0.5 0.5
v -0.5 -0.5 0.5
v 0.5 -0.5 0.5
v 0.5 -0.5 -0.5
vn 0 0 1
vn 0 0 -1
vn 0.7071 0.7071 0
vn 1 0 0
vn 0 -1 0
vn -1 0 0
vn 0 0.7071 -0.7071
vt 1 1
vt 0 1
vt 0 0
vt 1 0
s 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
@ -26,3 +29,5 @@ 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

View File

@ -1,24 +1,27 @@
v -0.5 -0.5 0.5
v 0.5 -0.5 0.5
v 0.5 0.5 0.5
v -0.5 0.5 0.5
v 0.5 0.5 -0.5
v -0.5 -0.5 -0.5
v -0.5 0.5 0.5
v -0.5 0.5 -0.5
v 0.5 0.5 -0.5
vn -1 0 0
vn 1 0 0
vn 0 -0.7071 -0.7071
vn 0 0 -1
vn 0 1 0
vn 0 0 1
vn 0.7071 -0.7071 0
vt 0 0
vt 1 0
vt 1 1
vt 0 1
s 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
@ -26,3 +29,5 @@ 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

View File

@ -1,121 +1,84 @@
# 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.19134 0.499997
v 0.461936 0.191340 0.499997
v 0.415735 0.277783 -0.415732
v 0.46194 0.19134 -0.461937
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 0.499997
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.19134 0.461936 0.499997
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 0.499996 0.499997
v -0.000000 0.499996 0.499997
v -0.499997 0.499997 0.499997
v -0.499997 0.499997 -0.00003
v -0.499997 0.499997 -0.000030
v -0.499997 0.415735 -0.277785
v -0.499997 0.46194 -0.191342
v -0.499997 0.461940 -0.191342
v -0.499997 0.490393 -0.097545
v -0.5 -0.5 -0.5
v -0.500000 -0.500000 -0.500000
v -0.499997 -0.499997 0.499997
v 0 0.499998 0
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.46194
v 0.499997 0 -0.499996
v 0.5 -0.5 -0.5
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.00003
v -0.499997 0.499997 -0.000030
v -0.499997 0.415735 -0.277785
v -0.499997 0.46194 -0.191342
v -0.499997 0.461940 -0.191342
v -0.499997 0.490393 -0.097545
v -0.5 -0.5 -0.5
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.46194
v -0.499998 0.191342 -0.461940
v -0.499998 -0.033351 0.033348
v -0.5 -0.5 -0.5
v 0.5 -0.5 -0.5
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.19134 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 0.499997
v 0.499996 -0.000000 0.499997
v 0.277783 0.415732 0.499997
v 0.19134 0.461936 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 0.499996 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
vn 0 0 1
vn 0 -1 0
vn -1 0 0
vn 0 0.8315 -0.5556
vn 0 0.8061 -0.5917
vn 0 0.6786 -0.7345
vn 0 0.7071 -0.7071
vn 0.8315 0.5556 0
vn 0.8493 0.528 0
vn 0.7345 0.6786 0
vn 0.7071 0.7071 0
vn 0 0.1951 -0.9808
vn 0 0.1827 -0.9832
vn 0 0.0475 -0.9989
vn 0 0.0491 -0.9988
vn 0.2427 0.9701 0
vn 0.098 0.9952 0
vn 0.1951 0.9808 0
vn 0 0.9808 -0.1951
vn 0 0.9952 -0.098
vn 0 0.9701 -0.2426
vn 0 0.528 -0.8493
vn 0 0.5556 -0.8315
vn 0.9832 0.1826 0
vn 0.9327 0.3605 0
vn 0.9239 0.3827 0
vn 0.9808 0.1951 0
vn 0.5917 0.8061 0
vn 0.4258 0.9048 0
vn 0.3827 0.9239 0
vn 0.5556 0.8315 0
vn 0 0.9048 -0.4258
vn 0 0.9239 -0.3827
vn 0 0.3605 -0.9327
vn 0 0.3827 -0.9239
vn 0.9988 0.0491 0
vn 0.9989 0.0475 0
vn 0 0 -1
vn 0 1 0
vn 1 0 0
vt 1 0.5001
vt 1.000000 0.500100
vt 0.990395 0.597625
vt 0.466756 0.466756
vt 1 0.0002
vt 1.000000 0.000200
vt 0.000201 0.000201
vt 0.597626 0.990394
vt 0.500101 1
vt 0.500101 1.000000
vt 0.691404 0.961947
vt 0.77783 0.915751
vt 0.777830 0.915751
vt 0.853583 0.853583
vt 0.915752 0.777829
vt 0.000201 1
vt 0.000201 1.000000
vt 0.961948 0.691403
vt 0 0
vt 1 0
vt 1 1
vt 0 1
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
@ -131,7 +94,7 @@ vt 0.146597 0.000612
vt 0.999995 0.000594
vt 0.000178 0.874582
vt 0.915751 0.874577
vt 0.85358 0.999436
vt 0.853580 0.999436
vt 0.000178 0.999439
vt 0.999808 0.625427
vt 0.009599 0.625446
@ -139,14 +102,14 @@ vt -0.000005 0.500594
vt 0.999807 0.500594
vt 0.597441 0.374574
vt 0.499912 0.499435
vt 0 0.499434
vt 0 0.374576
vt 0.000000 0.499434
vt 0.000000 0.374576
vt 0.999999 0.375154
vt 1 0.499969
vt 1.000000 0.499969
vt 0.500093 0.500015
vt 0.402562 0.375164
vt 0.999812 0.999983
vt 0.146415 1
vt 0.146415 1.000000
vt 0.084244 0.875149
vt 0.999811 0.875131
vt 0.990396 0.624861
@ -159,14 +122,48 @@ vt 0.000001 0.249719
vt 0.000001 0.124861
vt 0.308782 0.250314
vt 0.999998 0.250301
vt 0.853403 0
vt 0.853403 -0.000000
vt 0.038047 0.750298
vt 0.999809 0.75028
vt 0.999809 0.750280
vt 0.000177 0.500008
vt 0 0.5
vt 0.5 1
vt 0.5 0.5
s 1
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
@ -188,22 +185,23 @@ 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/10 6/34/11
f 27/35/12 10/36/13 30/37/14 25/38/15
f 15/39/16 24/40/17 16/41/17 14/42/18
f 21/43/19 18/44/20 24/45/20 15/46/21
f 26/47/7 7/48/6 3/49/22 28/50/23
f 10/51/24 4/52/25 2/53/26 5/54/27
f 11/55/28 13/56/29 12/57/30 9/58/31
f 21/43/19 15/46/21 13/59/32 20/60/33
f 20/60/33 13/59/32 11/28/5 19/27/4
f 9/58/31 6/14/11 7/61/10 11/55/28
f 4/52/25 3/32/9 1/31/8 2/53/26
f 3/49/22 4/62/34 29/63/35 28/50/23
f 10/51/24 5/54/27 8/64/36 30/44/37
f 29/63/35 4/62/34 10/36/13 27/35/12
f 25/44/15 30/65/14 31/14/38 22/15/38
f 16/66/39 24/67/39 18/44/39 17/16/39
f 8/65/36 32/14/40 31/15/40 30/44/37
f 12/57/30 13/56/29 15/39/16 14/42/18
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

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB