Bump version to 0.3.0
|
@ -1,5 +1,7 @@
|
|||
Meshnodes for Minetest [meshnode]
|
||||
=================================
|
||||
|
||||
Copyright (C) 2013 Stuart Jones - LGPL
|
||||
License Source Code: Copyright (C) 2013-2017 Stuart Jones - LGPL v2.1
|
||||
|
||||
License Media Files: CC0 1.0 Universal (CC0 1.0)
|
||||
|
||||
|
|
|
@ -0,0 +1,144 @@
|
|||
Meshnodes for Minetest [meshnode]
|
||||
=================================
|
||||
|
||||
**Mod Version:** 0.3.0
|
||||
|
||||
**Minetest Version:** 0.4.14 or later
|
||||
|
||||
**Depends:** default
|
||||
|
||||
Description
|
||||
-----------
|
||||
Meshnodes is a mod that transforms ordinary minetest nodes into a connected
|
||||
array of replica entities to which players can attach to and manoeuvre.
|
||||
|
||||
To use, simply build or place a model using nodes with a supported drawtype
|
||||
then place a meshnode controller in an appropriate position. Now use the
|
||||
special 'glue' that you will find in the controller node's inventory to
|
||||
connect your structure. Alternatively, if you are using worldedit, you can
|
||||
use the position markers to define the extents of your model.
|
||||
|
||||
When everything is connected you should return the 'glue' to the controller
|
||||
to enable activation. Once activated, players can then attach themselves
|
||||
to the controller or restore the model back to nodes. Restored models can
|
||||
be easily reconnected using the 'Connect from meta positions' option.
|
||||
|
||||
Please note that the 'glue' bottles are unique to a controller's position
|
||||
and are only useable within a limited range.
|
||||
|
||||
**Supported Drawtypes**
|
||||
|
||||
I have done my best to include support for most of the common nodes that
|
||||
are useful for building ships etc, like fences, xpanes and walls including
|
||||
support for all default stairs and slabs in full 6d rotation. It may or
|
||||
may not work with other decorative nodeboxes/meshnodes, the best way to
|
||||
find out is to simply try it.
|
||||
|
||||
Exceptions include flowing liquids, wallmounted nodes, rails or any node
|
||||
with non-generated wield or inventory images. Some drawtypes have only
|
||||
partial support, like 'plantlike' for example.
|
||||
|
||||
**Construction Advice**
|
||||
|
||||
Place the controller node in the direction you wish to face when you attach
|
||||
to it and always try to make your models hollow wherever possible.
|
||||
|
||||
Controls
|
||||
--------
|
||||
```
|
||||
[Up] Forward
|
||||
[Down] Reverse
|
||||
[Left] Turn Left
|
||||
[Right] Turn Right
|
||||
[Jump] Up
|
||||
[Sneak] Down
|
||||
[RMB] Interact
|
||||
```
|
||||
Crafting
|
||||
--------
|
||||
By default crafting is enabled in singleplayer mode only.
|
||||
|
||||
**Meshnode Controller** [meshnode:controller]
|
||||
<table>
|
||||
<tr>
|
||||
<td>[default:bronzeblock]</td>
|
||||
<td>[default:diamondblock]</td>
|
||||
<td>[default:bronzeblock]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>[default:obsidian_block]</td>
|
||||
<td>[default:steelblock]</td>
|
||||
<td>[default:goldblock]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>[default:bronzeblock]</td>
|
||||
<td>[default:steelblock]</td>
|
||||
<td>[default:bronzeblock]</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Multiplayer
|
||||
-----------
|
||||
Take care if you use this mod on a public server, while I have done my
|
||||
best to support basic protection, I am sure this mod could still provide
|
||||
serious potential for grief in the hands of the wrong people.
|
||||
|
||||
By default the controller node will only be available via `/give[me]` and
|
||||
requires the 'meshnode' privilege to be effective, however, non-privileged
|
||||
players will still be able to attach to and operate pre-activated models.
|
||||
|
||||
Note that you will probably need to increase `max_objects_per_block` to
|
||||
something a little higher than the default 64 to avoid server warnings and
|
||||
broken models. You can set `meshnode_autoconf = true` to automatically
|
||||
increase that limit to 4096 which, in theory, equates to one solid map-block
|
||||
full of meshnodes, though I would not advise testing that on live server.
|
||||
|
||||
Blacklist
|
||||
---------
|
||||
A global blacklist table is stored is in `meshnode.blacklist` keyed by item
|
||||
name, in multiplayer mode the following nodes are blacklisted by default.
|
||||
```
|
||||
meshnode.blacklist["default:chest_locked"] = true
|
||||
meshnode.blacklist["default:water_source"] = true
|
||||
meshnode.blacklist["default:river_water_source"] = true
|
||||
meshnode.blacklist["default:lava_source"] = true
|
||||
```
|
||||
Configuration
|
||||
-------------
|
||||
The global config table is stored `meshnode.config` and can overridden by
|
||||
adding the config name prefixed with 'meshnode_' to your minetest.conf file.
|
||||
|
||||
**Example:** (multiplayer defaults)
|
||||
```
|
||||
meshnode_max_speed = 2
|
||||
meshnode_max_lift = 1
|
||||
meshnode_yaw_amount = 0.017
|
||||
meshnode_max_radius = 8
|
||||
meshnode_show_in_creative = false
|
||||
meshnode_enable_crafting = false
|
||||
meshnode_autoconf = false
|
||||
```
|
||||
Note that speed, lift, yaw and radius may still be altered by other mods after
|
||||
the initial start-up via the global `meshnode.config` table.
|
||||
|
||||
API
|
||||
---
|
||||
I would like to think that this mod could be used as the base for other mods
|
||||
like airships or sailing ships or perhaps even some fancy construction tool.
|
||||
|
||||
For this reason I have exposed everything that I thought might be potentially
|
||||
useful under the `meshnode` namespace. I would hope that the source code is
|
||||
reasonably self-explanatory.
|
||||
|
||||
Know Issues
|
||||
-----------
|
||||
Active objects sometimes disappear following a re-start/connect. This could
|
||||
be for a number or reasons including /clearobjects or a minetest bug. For this
|
||||
reason you are advised to always 'restore' your model to 'real' nodes before
|
||||
logging out or moving any significant distance away from it.
|
||||
|
||||
The player controlling the entity may appear to be connected to the wrong
|
||||
part of the model when viewed by a player that was not present during the
|
||||
initial attachment. Currently the only solution is for the operator to
|
||||
detach then re-attach to the model in the presence of said player.
|
||||
|
62
README.txt
|
@ -1,62 +0,0 @@
|
|||
Meshnodes for Minetest [meshnode]
|
||||
=================================
|
||||
|
||||
Meshnodes is a mod that transforms ordinary nodes into a connected
|
||||
array of replica entities to which players can attach to and manoeuvre.
|
||||
|
||||
To use, simply build or place a model using nodes with a supported drawtype.
|
||||
Next place a meshnode controller in the appropriate position, the operator
|
||||
will be attached directly on top of the controller node.
|
||||
|
||||
Now right click the controller and enter the minimum and maximum extents of
|
||||
the model (relative to the controller x,y,z)
|
||||
|
||||
e.g. for a 3x3 square of nodes with the controller placed above the center
|
||||
node, the relative positions would be minp = -1,-1,-1 maxp = 1,0,1
|
||||
|
||||
Alternatively, if you are using worldedit, you can use the position
|
||||
markers to define the extents of the model. However, this must be done
|
||||
before the controller is placed.
|
||||
|
||||
Supported Drawtypes
|
||||
===================
|
||||
|
||||
normal
|
||||
allfaces_optional
|
||||
glasslike
|
||||
plantlike
|
||||
fencelike
|
||||
|
||||
Also supports all default stairs and slabs in full 6d rotation.
|
||||
|
||||
Controls
|
||||
========
|
||||
|
||||
[Up] Forward
|
||||
[Down] Reverse
|
||||
[Left] Rotate Left
|
||||
[Right] Rotate Right
|
||||
[Jump] Up
|
||||
[Sneak] Down
|
||||
[RMB] Attach/Detach
|
||||
|
||||
Limitations
|
||||
===========
|
||||
|
||||
Models will disappear or become detached from the controller if they become
|
||||
unloaded. This can cause the server to warn against excessive objects and
|
||||
destroy them accordingly.
|
||||
|
||||
I have tried a number of ways the get the models to persist after a server
|
||||
restart but so far all of my efforts have been thwarted by minetest's buggy
|
||||
object management system. I also wanted to be able to attach 'passengers'
|
||||
to the entities, however, this has not been possible for the same reason.
|
||||
|
||||
Know Issues
|
||||
===========
|
||||
|
||||
The player controlling the entity may appear to be connected to the wrong
|
||||
part of the model when viewed by a player that was not present during the
|
||||
initial attachment. Currently the only solution is for the operator to
|
||||
detach then re-attach to the model in the presence of said player.
|
||||
|
|
@ -0,0 +1,356 @@
|
|||
meshnode = {}
|
||||
|
||||
meshnode.config = {
|
||||
max_speed = 2,
|
||||
max_lift = 1,
|
||||
yaw_amount = 0.017,
|
||||
max_radius = 8,
|
||||
show_in_creative = false,
|
||||
enable_crafting = false,
|
||||
autoconf = false,
|
||||
}
|
||||
|
||||
meshnode.blacklist = {}
|
||||
|
||||
local face_rotation = {
|
||||
{x=0, y=0, z=0}, {x=0, y=90, z=0}, {x=0, y=180, z=0},
|
||||
{x=0, y=-90, z=0}, {x=90, y=0, z=0}, {x=90, y=0, z=90},
|
||||
{x=90, y=0, z=180}, {x=90, y=0, z=-90}, {x=-90, y=0, z=0},
|
||||
{x=-90, y=0, z=-90}, {x=-90, y=0, z=180}, {x=-90, y=0, z=90},
|
||||
{x=0, y=0, z=-90}, {x=90, y=90, z=0}, {x=180, y=0, z=90},
|
||||
{x=0, y=-90, z=-90}, {x=0, y=0, z=90}, {x=0, y=90, z=90},
|
||||
{x=180, y=0, z=-90}, {x=0, y=-90, z=90}, {x=180, y=180, z=0},
|
||||
{x=180, y=90, z=0}, {x=180, y=0, z=0}, {x=180, y=-90, z=0},
|
||||
}
|
||||
|
||||
local meshnode_id = 0
|
||||
|
||||
local function connects_to_group(pos, groups)
|
||||
local node = minetest.get_node(pos)
|
||||
for _, group in pairs(groups) do
|
||||
if minetest.get_item_group(node.name, group) > 0 then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function get_face_textures(facecons, texture)
|
||||
local textures = {
|
||||
"meshnode_trans.png",
|
||||
"meshnode_trans.png",
|
||||
"meshnode_trans.png",
|
||||
"meshnode_trans.png",
|
||||
}
|
||||
for i = 1, 4 do
|
||||
if facecons[i] == true then
|
||||
textures[i] = texture
|
||||
end
|
||||
end
|
||||
return textures
|
||||
end
|
||||
|
||||
local function restore_facedir(node, delta, yaw)
|
||||
local facedir = node.param2 or 0
|
||||
local def = minetest.registered_items[node.name] or {}
|
||||
if def.paramtype2 == "facedir" then
|
||||
local rot = (meshnode.yaw_to_facedir(yaw) + delta) % 4
|
||||
node.param2 = meshnode.rotate_facedir(rot, facedir)
|
||||
end
|
||||
end
|
||||
|
||||
meshnode.new_id = function()
|
||||
meshnode_id = meshnode_id + 1
|
||||
return tostring(meshnode_id)
|
||||
end
|
||||
|
||||
meshnode.get_luaentity = function(id)
|
||||
for _, entity in pairs(minetest.luaentities) do
|
||||
if entity.mesh_id == id then
|
||||
return entity
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
meshnode.get_map_pos = function(ref, parent)
|
||||
local pos = parent.object:getpos()
|
||||
local yaw = parent.object:getyaw()
|
||||
local rot = meshnode.rotate_offset(yaw, ref.offset)
|
||||
local vec = vector.add(pos, rot)
|
||||
return vector.round(vec)
|
||||
end
|
||||
|
||||
meshnode.facedir_to_yaw = function(facedir)
|
||||
local yaw = 0
|
||||
local rot = facedir % 4
|
||||
if rot == 1 then
|
||||
yaw = 3 * math.pi / 2
|
||||
elseif rot == 2 then
|
||||
yaw = math.pi
|
||||
elseif rot == 3 then
|
||||
yaw = math.pi / 2
|
||||
end
|
||||
return yaw
|
||||
end
|
||||
|
||||
meshnode.yaw_to_facedir = function(yaw)
|
||||
local deg = math.floor(math.deg(yaw) + 0.5) % 360
|
||||
if deg < 90 then
|
||||
return 0
|
||||
end
|
||||
return 4 - math.floor(deg / 90)
|
||||
end
|
||||
|
||||
meshnode.facedir_to_rotation = function(facedir)
|
||||
return face_rotation[facedir + 1] or face_rotation[1]
|
||||
end
|
||||
|
||||
meshnode.rotation_to_facedir = function(rotation)
|
||||
for i, v in ipairs(face_rotation) do
|
||||
if vector.equals(v, rotation) then
|
||||
return i - 1
|
||||
end
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
meshnode.rotate_facedir = function(rot, facedir)
|
||||
if rot == 0 then
|
||||
return facedir
|
||||
end
|
||||
local rotation = facedir % 32
|
||||
local axis = math.floor(rotation / 4)
|
||||
if axis == 0 then
|
||||
rotation = rotation + rot
|
||||
elseif axis == 5 then
|
||||
rotation = rotation - rot
|
||||
else
|
||||
local axis_rotation = {
|
||||
{3, 2, 4},
|
||||
{4, 1, 3},
|
||||
{2, 4, 1},
|
||||
{1, 3, 2},
|
||||
}
|
||||
local next_axis = axis_rotation[axis]
|
||||
axis = next_axis[rot]
|
||||
rotation = rotation + rot
|
||||
end
|
||||
return axis * 4 + (rotation % 4)
|
||||
end
|
||||
|
||||
meshnode.rotate_offset = function(yaw, offset)
|
||||
local cos = math.cos(yaw)
|
||||
local sin = math.sin(yaw)
|
||||
local x = offset.x * cos - offset.z * sin
|
||||
local z = offset.x * sin + offset.z * cos
|
||||
local ret = vector.round({x=x, y=offset.y, z=z})
|
||||
return vector.round({x=x, y=offset.y, z=z})
|
||||
end
|
||||
|
||||
meshnode.add_entity = function(ref, parent)
|
||||
local pos = meshnode.get_map_pos(ref, parent)
|
||||
local object = minetest.add_entity(pos, "meshnode:mesh")
|
||||
if object then
|
||||
local properties = {textures={ref.node.name}}
|
||||
local def = minetest.registered_items[ref.node.name] or {}
|
||||
if ref.meshtype == "plant" then
|
||||
properties.visual = "mesh"
|
||||
properties.visual_size = {x=1, y=1}
|
||||
properties.mesh = "meshnode_plant.obj"
|
||||
properties.textures = {def.tiles[1]}
|
||||
elseif ref.meshtype == "fence" then
|
||||
local textures = get_face_textures(ref.facecons, def.tiles[1])
|
||||
table.insert(textures, 1, def.tiles[1])
|
||||
properties.visual = "mesh"
|
||||
properties.visual_size = {x=1, y=1}
|
||||
properties.mesh = "meshnode_fence.obj"
|
||||
properties.textures = textures
|
||||
elseif ref.meshtype == "wall" then
|
||||
local textures = get_face_textures(ref.facecons, def.tiles[1])
|
||||
table.insert(textures, 1, def.tiles[1])
|
||||
properties.visual = "mesh"
|
||||
properties.visual_size = {x=1, y=1}
|
||||
properties.mesh = "meshnode_wall.obj"
|
||||
properties.textures = textures
|
||||
elseif ref.meshtype == "pane" then
|
||||
local textures = get_face_textures(ref.facecons, def.tiles[3])
|
||||
properties.visual = "mesh"
|
||||
properties.visual_size = {x=1, y=1}
|
||||
properties.mesh = "meshnode_pane.obj"
|
||||
properties.textures = textures
|
||||
end
|
||||
object:set_properties(properties)
|
||||
if parent then
|
||||
local entity = object:get_luaentity()
|
||||
if entity then
|
||||
entity.mesh_id = ref.id
|
||||
entity.parent_id = parent.mesh_id
|
||||
else
|
||||
object:remove()
|
||||
return
|
||||
end
|
||||
local yaw = parent.object:getyaw()
|
||||
local offset = vector.multiply(ref.offset, 10)
|
||||
local rotation = vector.new(ref.rotation)
|
||||
object:set_attach(parent.object, "", offset, rotation)
|
||||
end
|
||||
end
|
||||
return object
|
||||
end
|
||||
|
||||
meshnode.create = function(pos, parent)
|
||||
local node = minetest.get_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local def = minetest.registered_items[node.name] or {}
|
||||
local meshtype = "wielditem"
|
||||
local scaffold = "meshnode:scaffold"
|
||||
local facecons = {}
|
||||
local faces = {
|
||||
[1] = {x=0, y=0, z=-1},
|
||||
[2] = {x=-1, y=0, z=0},
|
||||
[3] = {x=0, y=0, z=1},
|
||||
[4] = {x=1, y=0, z=0},
|
||||
}
|
||||
if not parent or
|
||||
meshnode.blacklist[node.name] or
|
||||
node.name == "meshnode:controller" or
|
||||
node.name == "air" or
|
||||
node.name == "ignore" or
|
||||
def.paramtype2 == "wallmounted" or
|
||||
def.paramtype2 == "flowingliquid" then
|
||||
return
|
||||
elseif def.drawtype == "plantlike" then
|
||||
meshtype = "plant"
|
||||
elseif minetest.get_item_group(node.name, "fence") > 0 then
|
||||
scaffold = "meshnode:scaffold_fence"
|
||||
if def.drawtype ~= "mesh" then
|
||||
meshtype = "fence"
|
||||
for i, face in pairs(faces) do
|
||||
local p = vector.add(pos, face)
|
||||
facecons[i] = connects_to_group(p, {"fence", "wood", "tree"})
|
||||
end
|
||||
end
|
||||
elseif minetest.get_item_group(node.name, "wall") > 0 then
|
||||
scaffold = "meshnode:scaffold_wall"
|
||||
if def.drawtype ~= "mesh" then
|
||||
meshtype = "wall"
|
||||
for i, face in pairs(faces) do
|
||||
local p = vector.add(pos, face)
|
||||
facecons[i] = connects_to_group(p, {"wall", "stone"})
|
||||
end
|
||||
end
|
||||
elseif minetest.get_item_group(node.name, "pane") > 0 then
|
||||
meshtype = "pane"
|
||||
scaffold = "meshnode:scaffold_pane"
|
||||
if string.find(node.name, "_flat$") then
|
||||
facecons = {[2]=true, [4]=true}
|
||||
else
|
||||
for i, face in pairs(faces) do
|
||||
local p = vector.add(pos, face)
|
||||
facecons[i] = connects_to_group(p, {"pane"})
|
||||
end
|
||||
end
|
||||
elseif def.wield_image ~= "" or def.inventory_image ~="" then
|
||||
return
|
||||
end
|
||||
local param2 = node.param2 or 0
|
||||
local offset = vector.subtract(pos, parent.object:getpos())
|
||||
local yaw = math.pi * 2 - parent.object:getyaw()
|
||||
local delta = meshnode.yaw_to_facedir(yaw)
|
||||
local facedir = meshnode.rotate_facedir(delta, param2)
|
||||
local meta_str = nil
|
||||
local meta_tab = meta:to_table() or {}
|
||||
if meta_tab.inventory then
|
||||
for _, list in pairs(meta_tab.inventory) do
|
||||
for i, stack in ipairs(list) do
|
||||
list[i] = ItemStack(stack):to_string()
|
||||
end
|
||||
end
|
||||
end
|
||||
if next(meta_tab) then
|
||||
meta_str = minetest.serialize(meta_tab)
|
||||
end
|
||||
local ref = {
|
||||
id = meshnode.new_id(),
|
||||
node = node,
|
||||
meta = meta_str,
|
||||
delta = delta,
|
||||
meshtype = meshtype,
|
||||
facecons = facecons,
|
||||
offset = meshnode.rotate_offset(yaw, offset),
|
||||
rotation = meshnode.facedir_to_rotation(facedir),
|
||||
}
|
||||
local object = meshnode.add_entity(ref, parent)
|
||||
if object then
|
||||
minetest.set_node(pos, {name=scaffold})
|
||||
table.insert(parent.nodes, ref)
|
||||
end
|
||||
return object
|
||||
end
|
||||
|
||||
meshnode.restore = function(ref, parent)
|
||||
local entity = meshnode.get_luaentity(ref.id)
|
||||
local pos = meshnode.get_map_pos(ref, parent)
|
||||
local yaw = parent.object:getyaw()
|
||||
restore_facedir(ref.node, ref.delta, yaw)
|
||||
minetest.add_node(pos, ref.node)
|
||||
if entity then
|
||||
entity.object:setpos(pos)
|
||||
entity.object:set_detach()
|
||||
entity.object:remove()
|
||||
end
|
||||
if ref.meta then
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta_tab = minetest.deserialize(ref.meta) or {}
|
||||
meta:from_table(meta_tab)
|
||||
end
|
||||
end
|
||||
|
||||
meshnode.restore_all = function(parent, name)
|
||||
local positions = {}
|
||||
if #parent.nodes == 0 then
|
||||
return positions
|
||||
end
|
||||
local minp = {x=32000, y=32000, z=32000}
|
||||
local maxp = vector.multiply(minp, -1)
|
||||
local yaw = parent.object:getyaw()
|
||||
local nodedata = {}
|
||||
for _, ref in pairs(parent.nodes) do
|
||||
local pos = meshnode.get_map_pos(ref, parent)
|
||||
if name and minetest.is_protected(pos, name) then
|
||||
return
|
||||
end
|
||||
table.insert(nodedata, {pos=pos, ref=ref})
|
||||
for axis, val in pairs(pos) do
|
||||
if val < minp[axis] then
|
||||
minp[axis] = val
|
||||
end
|
||||
if val > maxp[axis] then
|
||||
maxp[axis] = val
|
||||
end
|
||||
end
|
||||
end
|
||||
local vm = minetest.get_voxel_manip(minp, maxp)
|
||||
for _, data in pairs(nodedata) do
|
||||
restore_facedir(data.ref.node, data.ref.delta, yaw)
|
||||
vm:set_node_at(data.pos, data.ref.node)
|
||||
end
|
||||
vm:write_to_map()
|
||||
vm:update_liquids()
|
||||
vm:update_map()
|
||||
for _, data in pairs(nodedata) do
|
||||
local entity = meshnode.get_luaentity(data.ref.id)
|
||||
if entity then
|
||||
entity.object:setpos(data.pos)
|
||||
entity.object:set_detach()
|
||||
entity.object:remove()
|
||||
end
|
||||
if data.ref.meta then
|
||||
local meta = minetest.get_meta(data.pos)
|
||||
local meta_tab = minetest.deserialize(data.ref.meta) or {}
|
||||
meta:from_table(meta_tab)
|
||||
end
|
||||
table.insert(positions, data.pos)
|
||||
end
|
||||
return positions
|
||||
end
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
default
|
||||
wordedit?
|
|
@ -0,0 +1 @@
|
|||
Poor man's voxel area entities.
|
532
init.lua
|
@ -1,55 +1,219 @@
|
|||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/meshnode.lua")
|
||||
|
||||
local groups = {cracky=3, oddly_breakable_by_hand=3}
|
||||
if MESHNODE_SHOW_IN_CREATIVE == false then
|
||||
groups.not_in_creative_inventory=1
|
||||
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||
local S = function(s) return s end
|
||||
if minetest.get_modpath("intllib") then
|
||||
S = intllib.Getter()
|
||||
end
|
||||
|
||||
local function is_valid_pos(pos)
|
||||
if pos then
|
||||
if pos.x and pos.y and pos.z then
|
||||
return math.abs(pos.x) <= MESHNODE_MAX_RADIUS and
|
||||
math.abs(pos.y) <= MESHNODE_MAX_RADIUS and
|
||||
math.abs(pos.z) <= MESHNODE_MAX_RADIUS
|
||||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/api.lua")
|
||||
|
||||
local has_worldedit = minetest.global_exists("worldedit")
|
||||
local is_singleplayer = minetest.is_singleplayer()
|
||||
local control_textures = {
|
||||
"default_steel_block.png",
|
||||
"default_diamond_block.png",
|
||||
"default_bronze_block.png",
|
||||
"default_obsidian_block.png",
|
||||
"default_gold_block.png",
|
||||
}
|
||||
|
||||
if is_singleplayer then
|
||||
meshnode.config.max_radius = 16
|
||||
meshnode.config.show_in_creative = true
|
||||
meshnode.config.enable_crafting = true
|
||||
meshnode.config.autoconf = true
|
||||
else
|
||||
meshnode.blacklist["default:chest_locked"] = true
|
||||
meshnode.blacklist["default:water_source"] = true
|
||||
meshnode.blacklist["default:river_water_source"] = true
|
||||
meshnode.blacklist["default:lava_source"] = true
|
||||
end
|
||||
|
||||
for name, config in pairs(meshnode.config) do
|
||||
local setting = minetest.setting_get("meshnode_"..name)
|
||||
if type(config) == "number" then
|
||||
setting = tonumber(setting)
|
||||
elseif type(config) == "boolean" then
|
||||
setting = minetest.setting_getbool("meshnode_"..name)
|
||||
end
|
||||
if setting then
|
||||
meshnode.config[name] = setting
|
||||
end
|
||||
end
|
||||
|
||||
if meshnode.config.autoconf == true then
|
||||
minetest.setting_set("max_objects_per_block", "4096")
|
||||
end
|
||||
|
||||
local function has_privilege(name)
|
||||
if is_singleplayer then
|
||||
return true
|
||||
end
|
||||
return minetest.check_player_privs(name, {meshnode=true})
|
||||
end
|
||||
|
||||
local function show_meshnode_formspec(pos, player)
|
||||
local name = player:get_player_name()
|
||||
if not has_privilege(name) then
|
||||
return
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local id = minetest.pos_to_string(pos)
|
||||
local entity = meshnode.get_luaentity(id)
|
||||
local spos = pos.x..","..pos.y..","..pos.z
|
||||
local formspec = "size[8,8]"..
|
||||
default.gui_bg..
|
||||
default.gui_bg_img..
|
||||
default.gui_slots..
|
||||
default.get_hotbar_bg(0,4)..
|
||||
"list[current_player;main;0,4;8,1;]"..
|
||||
"list[current_player;main;0,5.25;8,3;8]"..
|
||||
"list[nodemeta:"..spos..";tool;0.5,1.5;1,1;]"
|
||||
local buttons = {}
|
||||
if entity and #entity.nodes > 0 then
|
||||
if inv:contains_item("tool", "meshnode:glue") then
|
||||
table.insert(buttons, {"activate", "Activate meshnode"})
|
||||
end
|
||||
table.insert(buttons, {"reset", "Reset connections"})
|
||||
end
|
||||
if meta:get_string("meshnode") ~= "" then
|
||||
table.insert(buttons, {"connect_meta", "Connect meta positions"})
|
||||
end
|
||||
if has_worldedit and worldedit.pos1[name] and worldedit.pos2[name] then
|
||||
table.insert(buttons, {"connect_we", "Connect worldedit markers"})
|
||||
end
|
||||
local y = 0.25
|
||||
for _, btn in pairs(buttons) do
|
||||
formspec = formspec.."button_exit[2.25,"..y..
|
||||
";5,0.5;"..btn[1]..";"..S(btn[2]).."]"
|
||||
y = y + 0.9
|
||||
end
|
||||
minetest.show_formspec(name, "meshnode_"..id, formspec)
|
||||
end
|
||||
|
||||
local function get_step(a, b)
|
||||
if a > b then
|
||||
return -1
|
||||
end
|
||||
return 1
|
||||
local function register_scaffold(name, groups)
|
||||
groups.not_in_creative_inventory = 1
|
||||
groups.cracky = 1
|
||||
minetest.register_node(name, {
|
||||
paramtype = "light",
|
||||
drawtype = "glasslike",
|
||||
is_ground_content = false,
|
||||
sunlight_propagates = true,
|
||||
use_texture_alpha = true,
|
||||
tiles = {"meshnode_highlight.png"},
|
||||
groups = groups,
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_entity("meshnode:ctrl", {
|
||||
register_scaffold("meshnode:scaffold", {})
|
||||
register_scaffold("meshnode:scaffold_fence", {fence=1})
|
||||
register_scaffold("meshnode:scaffold_wall", {wall=1})
|
||||
register_scaffold("meshnode:scaffold_pane", {pane=1})
|
||||
|
||||
if meshnode.config.enable_crafting then
|
||||
minetest.register_craft({
|
||||
output = "meshnode:controller",
|
||||
recipe = {
|
||||
{"default:bronzeblock", "default:diamondblock", "default:bronzeblock"},
|
||||
{"default:obsidian_block", "default:steelblock", "default:goldblock"},
|
||||
{"default:bronzeblock", "default:steelblock", "default:bronzeblock"},
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_entity("meshnode:mesh", {
|
||||
physical = true,
|
||||
visual = "cube",
|
||||
visual_size = {x=1, y=1},
|
||||
textures = {
|
||||
"meshnode_top.png",
|
||||
"meshnode_side.png",
|
||||
"meshnode_side.png",
|
||||
"meshnode_side.png",
|
||||
"meshnode_side.png",
|
||||
"meshnode_side.png",
|
||||
},
|
||||
player = nil,
|
||||
speed = 0,
|
||||
lift = 0,
|
||||
on_activate = function(self, staticdata, dtime_s)
|
||||
self.object:set_armor_groups({cracky=50})
|
||||
visual = "wielditem",
|
||||
visual_size = {x=0.666, y=0.666},
|
||||
on_activate = function(self, staticdata)
|
||||
if staticdata == "expired" then
|
||||
self.object:remove()
|
||||
end
|
||||
end,
|
||||
on_rightclick = function(self, clicker)
|
||||
if self.player == nil then
|
||||
clicker:set_attach(self.object, "", {x=0,y=15,z=0}, {x=0,y=90,z=0})
|
||||
self.player = clicker
|
||||
get_staticdata = function(self)
|
||||
return "expired"
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_entity("meshnode:ctrl", {
|
||||
physical = true,
|
||||
visual = "mesh",
|
||||
mesh = "meshnode_plant.obj",
|
||||
visual_size = {x=1, y=1},
|
||||
textures = {"meshnode_trans.png"},
|
||||
facedir = 0,
|
||||
speed = 0,
|
||||
lift = 0,
|
||||
nodes = {},
|
||||
activated = false,
|
||||
animation = "stand",
|
||||
on_activate = function(self, staticdata)
|
||||
local pos = self.object:getpos()
|
||||
local objects = minetest.get_objects_inside_radius(pos, 0.5) or {}
|
||||
for _, object in pairs(objects) do
|
||||
if object ~= self.object then
|
||||
local entity = object:get_luaentity()
|
||||
if entity and entity.name == "meshnode:ctrl" then
|
||||
minetest.log("warning", "meshnode: duplicate object removed")
|
||||
self.object:remove()
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
self.object:set_armor_groups({immortal=1})
|
||||
if staticdata then
|
||||
local data = minetest.deserialize(staticdata) or {}
|
||||
self.mesh_id = data[1]
|
||||
self.activated = data[2]
|
||||
self.nodes = data[3] or {}
|
||||
end
|
||||
if self.activated then
|
||||
self.mesh_id = meshnode.new_id()
|
||||
else
|
||||
self.player:set_detach()
|
||||
self.player = nil
|
||||
local node = minetest.get_node(pos)
|
||||
if node.name ~= "meshnode:controller" then
|
||||
minetest.log("warning", "meshnode: stray object removed")
|
||||
self.object:remove()
|
||||
return
|
||||
end
|
||||
end
|
||||
for _, ref in pairs(self.nodes) do
|
||||
ref.id = meshnode.new_id()
|
||||
meshnode.add_entity(ref, self)
|
||||
end
|
||||
self:set_activated(self.activated)
|
||||
end,
|
||||
on_punch = function(self, puncher)
|
||||
--self.object:remove()
|
||||
end,
|
||||
on_rightclick = function(self, clicker)
|
||||
if not self.mesh_id then
|
||||
return
|
||||
end
|
||||
if self.activated then
|
||||
local name = clicker:get_player_name()
|
||||
local buttons = {}
|
||||
local formspec = "size[4,3.5]"
|
||||
if self.player then
|
||||
table.insert(buttons, {"detach", "Detach"})
|
||||
local btn = {"animation_sit", "Sit"}
|
||||
if self.animation == "sit" then
|
||||
btn = {"animation_stand", "Stand"}
|
||||
end
|
||||
table.insert(buttons, btn)
|
||||
else
|
||||
table.insert(buttons, {"attach", "Attach"})
|
||||
table.insert(buttons, {"restore", "Restore"})
|
||||
end
|
||||
table.insert(buttons, {"align", "Align"})
|
||||
local y = 0.5
|
||||
for _, btn in pairs(buttons) do
|
||||
formspec = formspec.."button_exit[0.5,"..y..
|
||||
";3,0.75;"..btn[1]..";"..S(btn[2]).."]"
|
||||
y = y + 1
|
||||
end
|
||||
local formname = "meshnode_"..self.mesh_id
|
||||
minetest.show_formspec(name, formname, formspec)
|
||||
end
|
||||
end,
|
||||
on_step = function(self, dtime)
|
||||
|
@ -66,31 +230,31 @@ minetest.register_entity("meshnode:ctrl", {
|
|||
else
|
||||
speed = speed * 0.99
|
||||
end
|
||||
if speed > MESHNODE_MAX_SPEED then
|
||||
speed = MESHNODE_MAX_SPEED
|
||||
elseif speed < 0 - MESHNODE_MAX_SPEED then
|
||||
speed = 0 - MESHNODE_MAX_SPEED
|
||||
if speed > meshnode.config.max_speed then
|
||||
speed = meshnode.config.max_speed
|
||||
elseif speed < 0 - meshnode.config.max_speed then
|
||||
speed = 0 - meshnode.config.max_speed
|
||||
end
|
||||
if ctrl.jump then
|
||||
lift = lift + 0.1
|
||||
elseif ctrl.sneak then
|
||||
lift = lift - 0.1
|
||||
else
|
||||
lift = lift * 0.9
|
||||
lift = lift * 0.99
|
||||
end
|
||||
if lift > MESHNODE_MAX_LIFT then
|
||||
lift = MESHNODE_MAX_LIFT
|
||||
elseif lift < 0 - MESHNODE_MAX_LIFT then
|
||||
lift = 0 - MESHNODE_MAX_LIFT
|
||||
if lift > meshnode.config.max_lift then
|
||||
lift = meshnode.config.max_lift
|
||||
elseif lift < 0 - meshnode.config.max_lift then
|
||||
lift = 0 - meshnode.config.max_lift
|
||||
end
|
||||
if ctrl.left then
|
||||
yaw = yaw + MESHNODE_YAW_AMOUNT
|
||||
yaw = yaw + meshnode.config.yaw_amount
|
||||
elseif ctrl.right then
|
||||
yaw = yaw - MESHNODE_YAW_AMOUNT
|
||||
yaw = yaw - meshnode.config.yaw_amount
|
||||
end
|
||||
velocity.x = math.cos(yaw) * speed
|
||||
velocity.x = -math.sin(yaw) * speed
|
||||
velocity.y = lift
|
||||
velocity.z = math.sin(yaw) * speed
|
||||
velocity.z = math.cos(yaw) * speed
|
||||
self.object:setyaw(yaw)
|
||||
self.object:setvelocity(velocity)
|
||||
self.speed = speed
|
||||
|
@ -102,80 +266,238 @@ minetest.register_entity("meshnode:ctrl", {
|
|||
end
|
||||
end,
|
||||
get_staticdata = function(self)
|
||||
return "expired"
|
||||
local data = {self.mesh_id, self.activated, self.nodes}
|
||||
return minetest.serialize(data)
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_entity("meshnode:mesh", {
|
||||
physical = true,
|
||||
visual_size = {x=1, y=1},
|
||||
on_activate = function(self, staticdata, dtime_s)
|
||||
if staticdata == "expired" then
|
||||
self.object:remove()
|
||||
set_alignment = function(self)
|
||||
local pos = self.object:getpos()
|
||||
local yaw = self.object:getyaw()
|
||||
local deg = math.deg(yaw) + 45
|
||||
deg = math.floor(deg / 90) * 90
|
||||
self.object:setvelocity({x=0, y=0, z=0})
|
||||
self.object:setyaw(math.rad(deg))
|
||||
self.object:setpos(vector.round(pos))
|
||||
self.speed = 0
|
||||
self.lift = 0
|
||||
end,
|
||||
set_activated = function(self, active)
|
||||
local mesh = "meshnode_plant.obj"
|
||||
local anim = {x=0, y=0}
|
||||
local textures = {"meshnode_trans.png"}
|
||||
local collisionbox = {0,0,0, 0,0,0}
|
||||
if active then
|
||||
mesh = "meshnode_ctrl.b3d"
|
||||
anim = {x=20, y=100}
|
||||
textures = control_textures
|
||||
collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}
|
||||
end
|
||||
end,
|
||||
get_staticdata = function(self)
|
||||
return "expired"
|
||||
self.object:set_properties({
|
||||
mesh = mesh,
|
||||
textures = textures,
|
||||
collisionbox = collisionbox,
|
||||
})
|
||||
self.object:set_animation(anim, 15)
|
||||
self.activated = active
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("meshnode:controller", {
|
||||
description = "Meshnode Controller",
|
||||
description = S("Meshnode Controller"),
|
||||
drawtype = "mesh",
|
||||
mesh = "meshnode_ctrl.obj",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
tiles = {"meshnode_top.png", "meshnode_side.png", "meshnode_side.png"},
|
||||
is_ground_content = true,
|
||||
groups = groups,
|
||||
tiles = control_textures,
|
||||
groups = {choppy=2, oddly_breakable_by_hand=2},
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "size[5,3]"
|
||||
.."field[0.5,1;2,0.5;minp;Minp;${minp}]"
|
||||
.."field[3.0,1;2,0.5;maxp;Maxp;${maxp}]"
|
||||
.."button_exit[1.0,2;3,0.5;connect;Generate Entity]"
|
||||
)
|
||||
meta:set_string("infotext", "Meshnode Controller")
|
||||
local inv = meta:get_inventory()
|
||||
local stack = {
|
||||
name = "meshnode:glue",
|
||||
metadata = minetest.pos_to_string(pos),
|
||||
}
|
||||
inv:set_size("tool", 1)
|
||||
inv:add_item("tool", stack)
|
||||
meta:set_string("infotext", S("Meshnode Controller"))
|
||||
end,
|
||||
on_destruct = function(pos)
|
||||
local id = minetest.pos_to_string(pos)
|
||||
local entity = meshnode.get_luaentity(id)
|
||||
if entity then
|
||||
meshnode.restore_all(entity)
|
||||
entity.object:remove()
|
||||
end
|
||||
end,
|
||||
after_place_node = function(pos, placer)
|
||||
if worldedit then
|
||||
local name = placer:get_player_name()
|
||||
local meta = minetest.get_meta(pos)
|
||||
if worldedit.pos1[name] then
|
||||
local p = vector.subtract(worldedit.pos1[name], pos)
|
||||
meta:set_string("minp", p.x..","..p.y..","..p.z)
|
||||
end
|
||||
if worldedit.pos2[name] then
|
||||
local p = vector.subtract(worldedit.pos2[name], pos)
|
||||
meta:set_string("maxp", p.x..","..p.y..","..p.z)
|
||||
local node = minetest.get_node(pos)
|
||||
local id = minetest.pos_to_string(pos)
|
||||
local object = minetest.add_entity(pos, "meshnode:ctrl")
|
||||
if object then
|
||||
local entity = object:get_luaentity()
|
||||
if entity then
|
||||
local facedir = node.param2 or 0
|
||||
local yaw = meshnode.facedir_to_yaw(facedir)
|
||||
object:setyaw(yaw)
|
||||
entity.mesh_id = id
|
||||
end
|
||||
end
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
if fields.connect then
|
||||
local minp = minetest.string_to_pos(fields.minp)
|
||||
local maxp = minetest.string_to_pos(fields.maxp)
|
||||
if is_valid_pos(minp) and is_valid_pos(maxp) then
|
||||
local node = minetest.get_node(pos)
|
||||
minetest.remove_node(pos)
|
||||
local positions = {}
|
||||
local parent = minetest.add_entity(pos, "meshnode:ctrl")
|
||||
if parent then
|
||||
for x = minp.x, maxp.x, get_step(minp.x, maxp.x) do
|
||||
for y = minp.y, maxp.y, get_step(minp.y, maxp.y) do
|
||||
for z = minp.z, maxp.z, get_step(minp.z, maxp.z) do
|
||||
local node_pos = vector.add(pos, {x=x, y=y, z=z})
|
||||
meshnode:create(node_pos, parent)
|
||||
table.insert(positions, node_pos)
|
||||
on_rightclick = function(pos, node, clicker, itemstack)
|
||||
show_meshnode_formspec(pos, clicker)
|
||||
end,
|
||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
local meta = stack:get_metadata()
|
||||
if meta then
|
||||
if vector.equals(minetest.string_to_pos(meta), pos) then
|
||||
return 1
|
||||
end
|
||||
end
|
||||
return 0
|
||||
end,
|
||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
show_meshnode_formspec(pos, player)
|
||||
end,
|
||||
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
show_meshnode_formspec(pos, player)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_tool("meshnode:glue", {
|
||||
description = S("Meshnode Glue"),
|
||||
inventory_image = "meshnode_glue.png",
|
||||
liquids_pointable = true,
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
local meta = itemstack:get_metadata()
|
||||
local parent = meshnode.get_luaentity(meta)
|
||||
if not parent then
|
||||
return
|
||||
end
|
||||
local name = user:get_player_name()
|
||||
if not has_privilege(name) then
|
||||
return ""
|
||||
end
|
||||
if pointed_thing and pointed_thing.type == "node" then
|
||||
local pos = minetest.get_pointed_thing_position(pointed_thing)
|
||||
if pos then
|
||||
if minetest.is_protected(pos, name) then
|
||||
minetest.chat_send_player(name, S("Protected node").."!")
|
||||
return
|
||||
end
|
||||
local node = minetest.get_node_or_nil(pos)
|
||||
if node then
|
||||
if string.find(node.name, "meshnode:scaffold") then
|
||||
for i, ref in pairs(parent.nodes) do
|
||||
local map_pos = meshnode.get_map_pos(ref, parent)
|
||||
if vector.equals(map_pos, pos) then
|
||||
meshnode.restore(ref, parent)
|
||||
parent.nodes[i] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
for _, pos in pairs(positions) do
|
||||
minetest.remove_node(pos)
|
||||
else
|
||||
local dist = vector.distance(parent.object:getpos(), pos)
|
||||
if dist > meshnode.config.max_radius then
|
||||
minetest.chat_send_player(name, S("Out of range").."!")
|
||||
else
|
||||
meshnode.create(pos, parent)
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
local name = sender:get_player_name()
|
||||
minetest.chat_send_player(name, "Invalid Position!")
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname then
|
||||
local id = formname:gsub("meshnode_", "")
|
||||
if id == formname then
|
||||
return
|
||||
end
|
||||
local name = player:get_player_name()
|
||||
local entity = meshnode.get_luaentity(id)
|
||||
if not entity then
|
||||
return
|
||||
end
|
||||
local pos = vector.round(entity.object:getpos())
|
||||
if fields.activate then
|
||||
local id = meshnode.new_id()
|
||||
entity.mesh_id = meshnode.new_id()
|
||||
entity:set_activated(true)
|
||||
for _, ref in pairs(entity.nodes) do
|
||||
local map_pos = meshnode.get_map_pos(ref, entity)
|
||||
minetest.remove_node(map_pos)
|
||||
ref.parent = id
|
||||
end
|
||||
minetest.remove_node(pos)
|
||||
elseif fields.connect_meta then
|
||||
local node = minetest.get_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local spos = meta:get_string("meshnode")
|
||||
local positions = minetest.deserialize(spos) or {}
|
||||
for _, p in pairs(positions) do
|
||||
meshnode.create(p, entity)
|
||||
end
|
||||
elseif fields.connect_we then
|
||||
if has_worldedit then
|
||||
local p1 = worldedit.pos1[name]
|
||||
local p2 = worldedit.pos2[name]
|
||||
if p1 and p2 then
|
||||
local area = VoxelArea:new{MinEdge=p1, MaxEdge=p2}
|
||||
for i in area:iterp(p1, p2) do
|
||||
local p = area:position(i)
|
||||
meshnode.create(p, entity)
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif fields.reset then
|
||||
meshnode.restore_all(entity)
|
||||
entity.nodes = {}
|
||||
elseif fields.attach and entity.player == nil then
|
||||
player:set_attach(entity.object, "", {x=0, y=15, z=0}, {x=0, y=0, z=0})
|
||||
entity.player = player
|
||||
entity.object:set_animation({x=0, y=0}, 15)
|
||||
default.player_attached[name] = true
|
||||
elseif fields.detach and entity.player == player then
|
||||
player:set_detach()
|
||||
entity.player = nil
|
||||
entity.animation = "stand"
|
||||
entity.object:set_animation({x=20, y=100}, 15)
|
||||
default.player_attached[name] = false
|
||||
elseif fields.animation_sit then
|
||||
default.player_set_animation(player, "sit", 30)
|
||||
entity.animation = "sit"
|
||||
elseif fields.animation_stand then
|
||||
default.player_set_animation(player, "stand", 30)
|
||||
entity.animation = "stand"
|
||||
elseif fields.align then
|
||||
entity:set_alignment()
|
||||
elseif fields.restore then
|
||||
if not has_privilege(name) then
|
||||
local msg = S("Requires the meshnode privilege")
|
||||
minetest.chat_send_player(name, msg)
|
||||
return
|
||||
end
|
||||
entity:set_alignment()
|
||||
local positions = meshnode.restore_all(entity, name)
|
||||
if positions then
|
||||
local yaw = entity.object:getyaw()
|
||||
local node = {
|
||||
name = "meshnode:controller",
|
||||
param2 = meshnode.yaw_to_facedir(yaw),
|
||||
}
|
||||
minetest.add_node(pos, node)
|
||||
if #positions > 0 then
|
||||
local meta = minetest.get_meta(pos)
|
||||
local spos = minetest.serialize(positions)
|
||||
meta:set_string("meshnode", spos)
|
||||
end
|
||||
entity.nodes = {}
|
||||
entity.mesh_id = minetest.pos_to_string(pos)
|
||||
entity:set_activated(false)
|
||||
else
|
||||
minetest.chat_send_player(name, S("Protected area").."!")
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
-- Meshnode configuration (defaults)
|
||||
|
||||
-- Maximum Entity Speed
|
||||
MESHNODE_MAX_SPEED = 2
|
||||
|
||||
-- Maximum Up/Down Velocity
|
||||
MESHNODE_MAX_LIFT = 1
|
||||
|
||||
-- Rotational Step (Radians)
|
||||
MESHNODE_YAW_AMOUNT = 0.02
|
||||
|
||||
-- Maximum Entity Area
|
||||
MESHNODE_MAX_RADIUS = 50
|
||||
|
||||
-- Show Controller in Creative Inventory
|
||||
MESHNODE_SHOW_IN_CREATIVE = true
|
||||
|
111
meshnode.lua
|
@ -1,111 +0,0 @@
|
|||
MESHNODE_MAX_SPEED = 2
|
||||
MESHNODE_MAX_LIFT = 1
|
||||
MESHNODE_YAW_AMOUNT = 0.02
|
||||
MESHNODE_MAX_RADIUS = 50
|
||||
MESHNODE_SHOW_IN_CREATIVE = true
|
||||
|
||||
meshnode = {
|
||||
face_rotation = {
|
||||
{x=0, y=0, z=0}, {x=0, y=90, z=0}, {x=0, y=180, z=0}, {x=0, y=-90, z=0},
|
||||
{x=90, y=0, z=0}, {x=90, y=0, z=90}, {x=90, y=0, z=180}, {x=90, y=0, z=-90},
|
||||
{x=-90, y=0, z=0}, {x=-90, y=0, z=-90}, {x=-90, y=0, z=180}, {x=-90, y=0, z=90},
|
||||
{x=0, y=0, z=-90}, {x=90, y=90, z=0}, {x=180, y=0, z=90}, {x=0, y=-90, z=-90},
|
||||
{x=0, y=0, z=90}, {x=0, y=90, z=90}, {x=180, y=0, z=-90}, {x=0, y=-90, z=90},
|
||||
{x=180, y=180, z=0}, {x=180, y=90, z=0}, {x=180, y=0, z=0}, {x=180, y=-90, z=0},
|
||||
}
|
||||
}
|
||||
|
||||
local modpath = minetest.get_modpath(minetest.get_current_modname())
|
||||
local input = io.open(modpath.."/meshnode.conf", "r")
|
||||
if input then
|
||||
dofile(modpath.."/meshnode.conf")
|
||||
input:close()
|
||||
input = nil
|
||||
end
|
||||
|
||||
function meshnode:get_drawtype(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
local item = minetest.registered_items[node.name]
|
||||
if item then
|
||||
return item.drawtype
|
||||
end
|
||||
end
|
||||
|
||||
function meshnode:create(pos, parent)
|
||||
local node = minetest.get_node(pos)
|
||||
local item = minetest.registered_items[node.name]
|
||||
local object = nil
|
||||
local rotation = {x=0, y=0, z=0}
|
||||
if item then
|
||||
if item.tiles then
|
||||
local t = item.tiles
|
||||
local textures = {t[1], t[1], t[1], t[1], t[1], t[1]}
|
||||
if #t == 3 then
|
||||
textures = {t[1], t[2], t[3], t[3], t[3], t[3]}
|
||||
elseif #t == 6 then
|
||||
textures = t
|
||||
end
|
||||
local properties = {textures=textures}
|
||||
if item.drawtype == "fencelike" then
|
||||
textures = {
|
||||
"meshnode_trans.png",
|
||||
"meshnode_trans.png",
|
||||
"meshnode_trans.png",
|
||||
"meshnode_trans.png",
|
||||
t[1],
|
||||
}
|
||||
local p = pos
|
||||
if self:get_drawtype({x=p.x, y=p.y, z=p.z + 1}) == "fencelike" then
|
||||
textures[1] = t[1]
|
||||
end
|
||||
if self:get_drawtype({x=p.x - 1, y=p.y, z=p.z}) == "fencelike" then
|
||||
textures[2] = t[1]
|
||||
end
|
||||
if self:get_drawtype({x=p.x + 1, y=p.y, z=p.z}) == "fencelike" then
|
||||
textures[3] = t[1]
|
||||
end
|
||||
if self:get_drawtype({x=p.x, y=p.y, z=p.z - 1}) == "fencelike" then
|
||||
textures[4] = t[1]
|
||||
end
|
||||
object = minetest.add_entity(pos, "meshnode:mesh")
|
||||
properties.textures = textures
|
||||
properties.mesh = "meshnode_fence.x"
|
||||
properties.visual = "mesh"
|
||||
elseif item.drawtype == "plantlike" then
|
||||
object = minetest.add_entity(pos, "meshnode:mesh")
|
||||
properties.textures = {textures[1]}
|
||||
properties.mesh = "meshnode_plant.x"
|
||||
properties.visual = "mesh"
|
||||
elseif string.find(node.name, "stairs:slab") then
|
||||
object = minetest.add_entity(pos, "meshnode:mesh")
|
||||
properties.textures = {textures[1]}
|
||||
properties.mesh = "meshnode_slab.x"
|
||||
properties.visual = "mesh"
|
||||
elseif string.find(node.name, "stairs:stair") then
|
||||
object = minetest.add_entity(pos, "meshnode:mesh")
|
||||
properties.textures = {textures[1]}
|
||||
properties.mesh = "meshnode_stair.x"
|
||||
properties.visual = "mesh"
|
||||
elseif item.drawtype == "normal" or
|
||||
item.drawtype == "allfaces_optional" or
|
||||
item.drawtype == "glasslike" then
|
||||
object = minetest.add_entity(pos, "meshnode:mesh")
|
||||
properties.visual = "cube"
|
||||
end
|
||||
if object then
|
||||
object:set_properties(properties)
|
||||
local facedir = node.param2
|
||||
if item.paramtype2 == "facedir" and facedir then
|
||||
rotation = self.face_rotation[facedir + 1]
|
||||
end
|
||||
if parent then
|
||||
local offset = vector.subtract(pos, parent:getpos())
|
||||
offset = vector.multiply(offset, {x=10,y=10,z=10})
|
||||
object:set_attach(parent, "", offset, rotation)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return object, rotation
|
||||
end
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
# Blender v2.76 (sub 0) OBJ File: 'meshnode_fence.blend'
|
||||
# www.blender.org
|
||||
mtllib meshnode_fence.mtl
|
||||
v 0.625000 1.875000 -5.000000
|
||||
v 0.625000 1.875000 -1.250000
|
||||
v -0.625000 1.875000 -1.250000
|
||||
v -0.625000 1.875000 -5.000000
|
||||
v 0.625000 3.125000 -5.000000
|
||||
v 0.625000 3.125000 -1.250000
|
||||
v -0.625000 3.125000 -1.250000
|
||||
v -0.625000 3.125000 -5.000000
|
||||
v -0.625000 -1.875000 -5.000000
|
||||
v -0.625000 -1.875000 -1.250000
|
||||
v 0.625000 -1.875000 -1.250000
|
||||
v 0.625000 -1.875000 -5.000000
|
||||
v -0.625000 -3.125000 -5.000000
|
||||
v -0.625000 -3.125000 -1.250000
|
||||
v 0.625000 -3.125000 -1.250000
|
||||
v 0.625000 -3.125000 -5.000000
|
||||
v -5.000000 1.875000 -0.624998
|
||||
v -1.250000 1.875000 -0.625000
|
||||
v -1.250000 1.875000 0.625000
|
||||
v -5.000000 1.875000 0.625002
|
||||
v -5.000000 3.125000 -0.624998
|
||||
v -1.250000 3.125000 -0.625000
|
||||
v -1.250000 3.125000 0.625000
|
||||
v -5.000000 3.125000 0.625002
|
||||
v -5.000000 -1.875000 0.625002
|
||||
v -1.250000 -1.875000 0.625000
|
||||
v -1.250000 -1.875000 -0.625000
|
||||
v -5.000000 -1.875000 -0.624998
|
||||
v -5.000000 -3.125000 0.625002
|
||||
v -1.250000 -3.125000 0.625000
|
||||
v -1.250000 -3.125000 -0.625000
|
||||
v -5.000000 -3.125000 -0.624998
|
||||
v 1.250004 1.875000 -0.624998
|
||||
v 5.000004 1.875000 -0.625000
|
||||
v 5.000005 1.875000 0.625000
|
||||
v 1.250005 1.875000 0.625002
|
||||
v 1.250005 3.125000 -0.624998
|
||||
v 5.000005 3.125000 -0.625000
|
||||
v 5.000005 3.125000 0.625000
|
||||
v 1.250005 3.125000 0.625002
|
||||
v 1.250005 -1.875000 0.625002
|
||||
v 5.000005 -1.875000 0.625000
|
||||
v 5.000005 -1.875000 -0.625000
|
||||
v 1.250005 -1.875000 -0.624998
|
||||
v 1.250005 -3.125000 0.625002
|
||||
v 5.000005 -3.125000 0.625000
|
||||
v 5.000004 -3.125000 -0.625000
|
||||
v 1.250004 -3.125000 -0.624998
|
||||
v 0.625000 1.875000 1.250006
|
||||
v 0.625000 1.875000 5.000006
|
||||
v -0.625000 1.875000 5.000006
|
||||
v -0.625000 1.875000 1.250005
|
||||
v 0.625000 3.125000 1.250006
|
||||
v 0.625000 3.125000 5.000006
|
||||
v -0.625000 3.125000 5.000005
|
||||
v -0.625000 3.125000 1.250006
|
||||
v -0.625000 -1.875000 1.250006
|
||||
v -0.625000 -1.875000 5.000005
|
||||
v 0.625000 -1.875000 5.000006
|
||||
v 0.625000 -1.875000 1.250006
|
||||
v -0.625000 -3.125000 1.250005
|
||||
v -0.625000 -3.125000 5.000006
|
||||
v 0.625000 -3.125000 5.000006
|
||||
v 0.625000 -3.125000 1.250006
|
||||
v 1.250000 -5.000000 -1.250000
|
||||
v 1.250000 -5.000000 1.250000
|
||||
v -1.250000 -5.000000 1.250000
|
||||
v -1.250000 -5.000000 -1.250000
|
||||
v 1.250000 5.000000 -1.250000
|
||||
v 1.250000 5.000000 1.250000
|
||||
v -1.250000 5.000000 1.250000
|
||||
v -1.250000 5.000000 -1.250000
|
||||
vt 0.375000 0.625000
|
||||
vt 0.375000 0.375000
|
||||
vt 0.625000 0.375000
|
||||
vt 0.625000 0.625000
|
||||
vt 0.625000 0.000000
|
||||
vt 0.625000 1.000000
|
||||
vt 0.375000 1.000000
|
||||
vt 0.375000 0.000000
|
||||
vt 1.000000 0.750000
|
||||
vt 0.625000 0.750000
|
||||
vt 1.000000 0.625000
|
||||
vt 1.000000 0.875000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.625000 0.875000
|
||||
vt 0.625000 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.625000 0.125000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.125000
|
||||
vt 1.000000 0.250000
|
||||
vt 1.000000 0.375000
|
||||
vt 0.625000 0.250000
|
||||
vt 0.375000 0.750000
|
||||
vt 0.000000 0.750000
|
||||
vt 0.000000 0.625000
|
||||
vt 0.375000 0.875000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.000000 0.875000
|
||||
vt -0.000000 0.500000
|
||||
vt 0.375000 0.500000
|
||||
vt -0.000000 0.125000
|
||||
vt 0.000000 -0.000000
|
||||
vt 0.375000 0.125000
|
||||
vt 0.375000 0.250000
|
||||
vt -0.000000 0.375000
|
||||
vt -0.000000 0.250000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn -0.000000 -0.000000 1.000000
|
||||
vn -1.000000 -0.000000 -0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
g Cube_Cube_post
|
||||
usemtl post
|
||||
s off
|
||||
f 65/1/1 66/2/1 67/3/1 68/4/1
|
||||
f 69/2/2 72/3/2 71/4/2 70/1/2
|
||||
f 65/5/3 69/6/3 70/7/3 66/8/3
|
||||
f 66/5/4 70/6/4 71/7/4 67/8/4
|
||||
f 67/5/5 71/6/5 72/7/5 68/8/5
|
||||
f 69/7/6 65/8/6 68/5/6 72/6/6
|
||||
g Cube_Cube_rail_1
|
||||
usemtl rail_1
|
||||
f 1/9/1 2/10/1 3/4/1 4/11/1
|
||||
f 5/12/2 8/13/2 7/6/2 6/14/2
|
||||
f 1/9/3 5/12/3 6/14/3 2/10/3
|
||||
f 3/4/5 7/15/5 8/16/5 4/11/5
|
||||
f 14/17/5 10/5/5 9/18/5 13/19/5
|
||||
f 16/20/3 12/21/3 11/3/3 15/22/3
|
||||
f 12/21/2 9/16/2 10/15/2 11/3/2
|
||||
f 16/20/1 15/22/1 14/17/1 13/19/1
|
||||
g Cube_Cube_rail_2
|
||||
usemtl rail_2
|
||||
f 33/4/1 34/11/1 35/9/1 36/10/1
|
||||
f 37/6/2 40/14/2 39/12/2 38/13/2
|
||||
f 33/4/6 37/15/6 38/16/6 34/11/6
|
||||
f 35/9/4 39/12/4 40/14/4 36/10/4
|
||||
f 46/20/4 42/21/4 41/3/4 45/22/4
|
||||
f 48/18/6 44/19/6 43/17/6 47/5/6
|
||||
f 44/15/2 41/3/2 42/21/2 43/16/2
|
||||
f 48/17/1 47/19/1 46/20/1 45/22/1
|
||||
g Cube_Cube_rail_3
|
||||
usemtl rail_3
|
||||
f 49/23/1 50/24/1 51/25/1 52/1/1
|
||||
f 53/26/2 56/7/2 55/27/2 54/28/2
|
||||
f 49/23/3 53/26/3 54/28/3 50/24/3
|
||||
f 51/25/5 55/29/5 56/30/5 52/1/5
|
||||
f 62/31/5 58/32/5 57/8/5 61/33/5
|
||||
f 64/34/3 60/2/3 59/35/3 63/36/3
|
||||
f 60/2/2 57/30/2 58/29/2 59/35/2
|
||||
f 64/34/1 63/36/1 62/31/1 61/33/1
|
||||
g Cube_Cube_rail_4
|
||||
usemtl rail_4
|
||||
f 17/25/1 18/1/1 19/23/1 20/24/1
|
||||
f 21/27/2 24/28/2 23/26/2 22/7/2
|
||||
f 17/25/6 21/29/6 22/30/6 18/1/6
|
||||
f 19/23/4 23/26/4 24/28/4 20/24/4
|
||||
f 30/34/4 26/2/4 25/35/4 29/36/4
|
||||
f 32/31/6 28/32/6 27/8/6 31/33/6
|
||||
f 28/29/2 25/35/2 26/2/2 27/30/2
|
||||
f 32/31/1 31/33/1 30/34/1 29/36/1
|
|
@ -1,633 +0,0 @@
|
|||
xof 0303txt 0032
|
||||
|
||||
Frame Root {
|
||||
FrameTransformMatrix {
|
||||
1.000000, 0.000000, 0.000000, 0.000000,
|
||||
0.000000, 0.000000, 1.000000, 0.000000,
|
||||
0.000000, 1.000000,-0.000000, 0.000000,
|
||||
0.000000, 0.000000, 0.000000, 1.000000;;
|
||||
}
|
||||
Frame Cube {
|
||||
FrameTransformMatrix {
|
||||
1.250000, 0.000000, 0.000000, 0.000000,
|
||||
0.000000, 1.250000, 0.000000, 0.000000,
|
||||
0.000000, 0.000000, 5.000000, 0.000000,
|
||||
0.000000, 0.000000, 0.000000, 1.000000;;
|
||||
}
|
||||
Mesh { //Cube_007 Mesh
|
||||
152;
|
||||
-0.500000; 4.000000; 0.475000;,
|
||||
-0.500000; 1.000000; 0.475000;,
|
||||
0.500000; 1.000000; 0.475000;,
|
||||
0.500000; 4.000000; 0.475000;,
|
||||
0.500000; 1.000000; 0.725000;,
|
||||
-0.500000; 1.000000; 0.725000;,
|
||||
-0.500000; 4.000000; 0.725000;,
|
||||
0.500000; 4.000000; 0.725000;,
|
||||
0.500000; 1.000000; 0.475000;,
|
||||
0.500000; 1.000000; 0.725000;,
|
||||
0.500000; 4.000000; 0.725000;,
|
||||
0.500000; 4.000000; 0.475000;,
|
||||
-0.500000; 4.000000; 0.475000;,
|
||||
-0.500000; 4.000000; 0.725000;,
|
||||
-0.500000; 1.000000; 0.725000;,
|
||||
-0.500000; 1.000000; 0.475000;,
|
||||
-0.500000; 4.000000;-0.712500;,
|
||||
-0.500000; 4.000000;-0.462500;,
|
||||
-0.500000; 1.000000;-0.462500;,
|
||||
-0.500000; 1.000000;-0.712500;,
|
||||
0.500000; 1.000000;-0.712500;,
|
||||
0.500000; 1.000000;-0.462500;,
|
||||
0.500000; 4.000000;-0.462500;,
|
||||
0.500000; 4.000000;-0.712500;,
|
||||
0.500000; 1.000000;-0.462500;,
|
||||
-0.500000; 1.000000;-0.462500;,
|
||||
-0.500000; 4.000000;-0.462500;,
|
||||
0.500000; 4.000000;-0.462500;,
|
||||
-0.500000; 4.000000;-0.712500;,
|
||||
-0.500000; 1.000000;-0.712500;,
|
||||
0.500000; 1.000000;-0.712500;,
|
||||
0.500000; 4.000000;-0.712500;,
|
||||
-4.000000;-0.500001; 0.475000;,
|
||||
-1.000000;-0.500000; 0.475000;,
|
||||
-1.000000; 0.500000; 0.475000;,
|
||||
-4.000000; 0.499998; 0.475000;,
|
||||
-1.000000; 0.500000; 0.725000;,
|
||||
-1.000000;-0.500000; 0.725000;,
|
||||
-4.000000;-0.500001; 0.725000;,
|
||||
-4.000000; 0.499999; 0.725000;,
|
||||
-1.000000; 0.500000; 0.475000;,
|
||||
-1.000000; 0.500000; 0.725000;,
|
||||
-4.000000; 0.499999; 0.725000;,
|
||||
-4.000000; 0.499998; 0.475000;,
|
||||
-4.000000;-0.500001; 0.475000;,
|
||||
-4.000000;-0.500001; 0.725000;,
|
||||
-1.000000;-0.500000; 0.725000;,
|
||||
-1.000000;-0.500000; 0.475000;,
|
||||
-4.000000;-0.500001;-0.712500;,
|
||||
-4.000000;-0.500001;-0.462500;,
|
||||
-1.000000;-0.500000;-0.462500;,
|
||||
-1.000000;-0.500000;-0.712500;,
|
||||
-1.000000; 0.500000;-0.712500;,
|
||||
-1.000000; 0.500000;-0.462500;,
|
||||
-4.000000; 0.499999;-0.462500;,
|
||||
-4.000000; 0.499998;-0.712500;,
|
||||
-1.000000; 0.500000;-0.462500;,
|
||||
-1.000000;-0.500000;-0.462500;,
|
||||
-4.000000;-0.500001;-0.462500;,
|
||||
-4.000000; 0.499999;-0.462500;,
|
||||
-4.000000;-0.500001;-0.712500;,
|
||||
-1.000000;-0.500000;-0.712500;,
|
||||
-1.000000; 0.500000;-0.712500;,
|
||||
-4.000000; 0.499998;-0.712500;,
|
||||
1.000004;-0.500001; 0.475000;,
|
||||
4.000004;-0.500000; 0.475000;,
|
||||
4.000003; 0.500000; 0.475000;,
|
||||
1.000003; 0.499998; 0.475000;,
|
||||
4.000004; 0.500000; 0.725000;,
|
||||
4.000004;-0.500000; 0.725000;,
|
||||
1.000004;-0.500001; 0.725000;,
|
||||
1.000004; 0.499999; 0.725000;,
|
||||
4.000003; 0.500000; 0.475000;,
|
||||
4.000004; 0.500000; 0.725000;,
|
||||
1.000004; 0.499999; 0.725000;,
|
||||
1.000003; 0.499998; 0.475000;,
|
||||
1.000004;-0.500001; 0.475000;,
|
||||
1.000004;-0.500001; 0.725000;,
|
||||
4.000004;-0.500000; 0.725000;,
|
||||
4.000004;-0.500000; 0.475000;,
|
||||
1.000004;-0.500001;-0.712500;,
|
||||
1.000004;-0.500001;-0.462500;,
|
||||
4.000004;-0.500000;-0.462500;,
|
||||
4.000004;-0.500000;-0.712500;,
|
||||
4.000003; 0.500000;-0.712500;,
|
||||
4.000004; 0.500000;-0.462500;,
|
||||
1.000004; 0.499999;-0.462500;,
|
||||
1.000003; 0.499998;-0.712500;,
|
||||
4.000004; 0.500000;-0.462500;,
|
||||
4.000004;-0.500000;-0.462500;,
|
||||
1.000004;-0.500001;-0.462500;,
|
||||
1.000004; 0.499999;-0.462500;,
|
||||
1.000004;-0.500001;-0.712500;,
|
||||
4.000004;-0.500000;-0.712500;,
|
||||
4.000003; 0.500000;-0.712500;,
|
||||
1.000003; 0.499998;-0.712500;,
|
||||
-0.500000;-1.000004; 0.475000;,
|
||||
-0.500000;-4.000005; 0.475000;,
|
||||
0.500000;-4.000005; 0.475000;,
|
||||
0.500000;-1.000005; 0.475000;,
|
||||
0.500000;-4.000005; 0.725000;,
|
||||
-0.500000;-4.000004; 0.725000;,
|
||||
-0.500000;-1.000005; 0.725000;,
|
||||
0.500000;-1.000005; 0.725000;,
|
||||
0.500000;-4.000005; 0.475000;,
|
||||
0.500000;-4.000005; 0.725000;,
|
||||
0.500000;-1.000005; 0.725000;,
|
||||
0.500000;-1.000005; 0.475000;,
|
||||
-0.500000;-1.000004; 0.475000;,
|
||||
-0.500000;-1.000005; 0.725000;,
|
||||
-0.500000;-4.000004; 0.725000;,
|
||||
-0.500000;-4.000005; 0.475000;,
|
||||
-0.500000;-1.000004;-0.712500;,
|
||||
-0.500000;-1.000005;-0.462500;,
|
||||
-0.500000;-4.000004;-0.462500;,
|
||||
-0.500000;-4.000005;-0.712500;,
|
||||
0.500000;-4.000005;-0.712500;,
|
||||
0.500000;-4.000005;-0.462500;,
|
||||
0.500000;-1.000005;-0.462500;,
|
||||
0.500000;-1.000005;-0.712500;,
|
||||
0.500000;-4.000005;-0.462500;,
|
||||
-0.500000;-4.000004;-0.462500;,
|
||||
-0.500000;-1.000005;-0.462500;,
|
||||
0.500000;-1.000005;-0.462500;,
|
||||
-0.500000;-1.000004;-0.712500;,
|
||||
-0.500000;-4.000005;-0.712500;,
|
||||
0.500000;-4.000005;-0.712500;,
|
||||
0.500000;-1.000005;-0.712500;,
|
||||
-1.000000; 1.000000;-1.000000;,
|
||||
-1.000000;-1.000000;-1.000000;,
|
||||
1.000000;-1.000000;-1.000000;,
|
||||
1.000000; 1.000000;-1.000000;,
|
||||
1.000000;-1.000000; 1.000000;,
|
||||
-1.000000;-1.000000; 1.000000;,
|
||||
-1.000000; 1.000000; 1.000000;,
|
||||
1.000000; 1.000000; 1.000000;,
|
||||
1.000000;-1.000000;-1.000000;,
|
||||
1.000000;-1.000000; 1.000000;,
|
||||
1.000000; 1.000000; 1.000000;,
|
||||
1.000000; 1.000000;-1.000000;,
|
||||
-1.000000;-1.000000;-1.000000;,
|
||||
-1.000000;-1.000000; 1.000000;,
|
||||
1.000000;-1.000000; 1.000000;,
|
||||
1.000000;-1.000000;-1.000000;,
|
||||
-1.000000; 1.000000;-1.000000;,
|
||||
-1.000000; 1.000000; 1.000000;,
|
||||
-1.000000;-1.000000; 1.000000;,
|
||||
-1.000000;-1.000000;-1.000000;,
|
||||
-1.000000; 1.000000; 1.000000;,
|
||||
-1.000000; 1.000000;-1.000000;,
|
||||
1.000000; 1.000000;-1.000000;,
|
||||
1.000000; 1.000000; 1.000000;;
|
||||
38;
|
||||
4;0;1;2;3;,
|
||||
4;4;5;6;7;,
|
||||
4;8;9;10;11;,
|
||||
4;12;13;14;15;,
|
||||
4;16;17;18;19;,
|
||||
4;20;21;22;23;,
|
||||
4;24;25;26;27;,
|
||||
4;28;29;30;31;,
|
||||
4;32;33;34;35;,
|
||||
4;36;37;38;39;,
|
||||
4;40;41;42;43;,
|
||||
4;44;45;46;47;,
|
||||
4;48;49;50;51;,
|
||||
4;52;53;54;55;,
|
||||
4;56;57;58;59;,
|
||||
4;60;61;62;63;,
|
||||
4;64;65;66;67;,
|
||||
4;68;69;70;71;,
|
||||
4;72;73;74;75;,
|
||||
4;76;77;78;79;,
|
||||
4;80;81;82;83;,
|
||||
4;84;85;86;87;,
|
||||
4;88;89;90;91;,
|
||||
4;92;93;94;95;,
|
||||
4;96;97;98;99;,
|
||||
4;100;101;102;103;,
|
||||
4;104;105;106;107;,
|
||||
4;108;109;110;111;,
|
||||
4;112;113;114;115;,
|
||||
4;116;117;118;119;,
|
||||
4;120;121;122;123;,
|
||||
4;124;125;126;127;,
|
||||
4;128;129;130;131;,
|
||||
4;132;133;134;135;,
|
||||
4;136;137;138;139;,
|
||||
4;140;141;142;143;,
|
||||
4;144;145;146;147;,
|
||||
4;148;149;150;151;;
|
||||
MeshNormals { //Cube_007 Normals
|
||||
152;
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
0.000001;-1.000000;-0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
-0.000001; 1.000000; 0.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000; 1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
-1.000000; 0.000000;-0.000001;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;;
|
||||
38;
|
||||
4;0;1;2;3;,
|
||||
4;4;5;6;7;,
|
||||
4;8;9;10;11;,
|
||||
4;12;13;14;15;,
|
||||
4;16;17;18;19;,
|
||||
4;20;21;22;23;,
|
||||
4;24;25;26;27;,
|
||||
4;28;29;30;31;,
|
||||
4;32;33;34;35;,
|
||||
4;36;37;38;39;,
|
||||
4;40;41;42;43;,
|
||||
4;44;45;46;47;,
|
||||
4;48;49;50;51;,
|
||||
4;52;53;54;55;,
|
||||
4;56;57;58;59;,
|
||||
4;60;61;62;63;,
|
||||
4;64;65;66;67;,
|
||||
4;68;69;70;71;,
|
||||
4;72;73;74;75;,
|
||||
4;76;77;78;79;,
|
||||
4;80;81;82;83;,
|
||||
4;84;85;86;87;,
|
||||
4;88;89;90;91;,
|
||||
4;92;93;94;95;,
|
||||
4;96;97;98;99;,
|
||||
4;100;101;102;103;,
|
||||
4;104;105;106;107;,
|
||||
4;108;109;110;111;,
|
||||
4;112;113;114;115;,
|
||||
4;116;117;118;119;,
|
||||
4;120;121;122;123;,
|
||||
4;124;125;126;127;,
|
||||
4;128;129;130;131;,
|
||||
4;132;133;134;135;,
|
||||
4;136;137;138;139;,
|
||||
4;140;141;142;143;,
|
||||
4;144;145;146;147;,
|
||||
4;148;149;150;151;;
|
||||
} //End of Cube_007 Normals
|
||||
MeshMaterialList { //Cube_007 Material List
|
||||
5;
|
||||
38;
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
3,
|
||||
3,
|
||||
3,
|
||||
3,
|
||||
3,
|
||||
3,
|
||||
3,
|
||||
3,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4;;
|
||||
Material rail_1 {
|
||||
0.640000; 0.640000; 0.640000; 1.000000;;
|
||||
96.078431;
|
||||
0.500000; 0.500000; 0.500000;;
|
||||
0.000000; 0.000000; 0.000000;;
|
||||
}
|
||||
Material rail_4 {
|
||||
0.640000; 0.640000; 0.640000; 1.000000;;
|
||||
96.078431;
|
||||
0.500000; 0.500000; 0.500000;;
|
||||
0.000000; 0.000000; 0.000000;;
|
||||
}
|
||||
Material rail_2 {
|
||||
0.640000; 0.640000; 0.640000; 1.000000;;
|
||||
96.078431;
|
||||
0.500000; 0.500000; 0.500000;;
|
||||
0.000000; 0.000000; 0.000000;;
|
||||
}
|
||||
Material rail_3 {
|
||||
0.640000; 0.640000; 0.640000; 1.000000;;
|
||||
96.078431;
|
||||
0.500000; 0.500000; 0.500000;;
|
||||
0.000000; 0.000000; 0.000000;;
|
||||
}
|
||||
Material post {
|
||||
0.640000; 0.640000; 0.640000; 1.000000;;
|
||||
96.078431;
|
||||
0.073171; 0.073171; 0.073171;;
|
||||
0.000000; 0.000000; 0.000000;;
|
||||
}
|
||||
} //End of Cube_007 Material List
|
||||
MeshTextureCoords { //Cube_007 UV Coordinates
|
||||
152;
|
||||
0.500000; 0.750000;,
|
||||
1.000000; 0.750000;,
|
||||
1.000000; 0.875000;,
|
||||
0.500000; 0.875000;,
|
||||
0.500000; 0.562500;,
|
||||
0.500000; 0.437500;,
|
||||
1.000000; 0.437500;,
|
||||
1.000000; 0.562500;,
|
||||
0.500000; 0.500000;,
|
||||
0.500000; 0.375000;,
|
||||
1.000000; 0.375000;,
|
||||
1.000000; 0.500000;,
|
||||
0.500000; 0.687500;,
|
||||
0.500000; 0.562500;,
|
||||
1.000000; 0.562500;,
|
||||
1.000000; 0.687500;,
|
||||
0.500000; 0.687500;,
|
||||
0.500000; 0.562500;,
|
||||
1.000000; 0.562500;,
|
||||
1.000000; 0.687500;,
|
||||
0.500000; 0.500000;,
|
||||
0.500000; 0.375000;,
|
||||
1.000000; 0.375000;,
|
||||
1.000000; 0.500000;,
|
||||
0.500000; 0.562500;,
|
||||
0.500000; 0.437500;,
|
||||
1.000000; 0.437500;,
|
||||
1.000000; 0.562500;,
|
||||
0.500000; 0.750000;,
|
||||
1.000000; 0.750000;,
|
||||
1.000000; 0.875000;,
|
||||
0.500000; 0.875000;,
|
||||
0.562500; 0.375000;,
|
||||
0.000000; 0.375000;,
|
||||
0.000000; 0.250000;,
|
||||
0.562500; 0.250000;,
|
||||
0.000000; 0.187500;,
|
||||
0.000000; 0.062500;,
|
||||
0.500000; 0.062500;,
|
||||
0.500000; 0.187500;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.875000;,
|
||||
0.500000; 0.875000;,
|
||||
0.500000; 1.000000;,
|
||||
0.500000; 0.625000;,
|
||||
0.500000; 0.500000;,
|
||||
1.000000; 0.500000;,
|
||||
1.000000; 0.625000;,
|
||||
0.500000; 0.625000;,
|
||||
0.500000; 0.500000;,
|
||||
1.000000; 0.500000;,
|
||||
1.000000; 0.625000;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.875000;,
|
||||
0.500000; 0.875000;,
|
||||
0.500000; 1.000000;,
|
||||
0.000000; 0.187500;,
|
||||
0.000000; 0.062500;,
|
||||
0.500000; 0.062500;,
|
||||
0.500000; 0.187500;,
|
||||
0.562500; 0.375000;,
|
||||
0.000000; 0.375000;,
|
||||
0.000000; 0.250000;,
|
||||
0.562500; 0.250000;,
|
||||
1.000000; 0.375000;,
|
||||
0.500000; 0.375000;,
|
||||
0.500000; 0.250000;,
|
||||
1.000000; 0.250000;,
|
||||
0.500000; 0.187500;,
|
||||
0.500000; 0.062500;,
|
||||
1.000000; 0.062500;,
|
||||
1.000000; 0.187500;,
|
||||
0.500000; 1.000000;,
|
||||
0.500000; 0.875000;,
|
||||
1.000000; 0.875000;,
|
||||
1.000000; 1.000000;,
|
||||
0.000000; 0.625000;,
|
||||
0.000000; 0.500000;,
|
||||
0.500000; 0.500000;,
|
||||
0.500000; 0.625000;,
|
||||
0.000000; 0.625000;,
|
||||
0.000000; 0.500000;,
|
||||
0.500000; 0.500000;,
|
||||
0.500000; 0.625000;,
|
||||
0.500000; 1.000000;,
|
||||
0.500000; 0.875000;,
|
||||
1.000000; 0.875000;,
|
||||
1.000000; 1.000000;,
|
||||
0.500000; 0.187500;,
|
||||
0.500000; 0.062500;,
|
||||
1.000000; 0.062500;,
|
||||
1.000000; 0.187500;,
|
||||
1.000000; 0.375000;,
|
||||
0.500000; 0.375000;,
|
||||
0.500000; 0.250000;,
|
||||
1.000000; 0.250000;,
|
||||
0.500000; 0.875000;,
|
||||
0.000000; 0.875000;,
|
||||
0.000000; 0.750000;,
|
||||
0.500000; 0.750000;,
|
||||
0.500000; 0.437500;,
|
||||
0.500000; 0.562500;,
|
||||
0.000000; 0.562500;,
|
||||
0.000000; 0.437500;,
|
||||
0.000000; 0.500000;,
|
||||
0.000000; 0.375000;,
|
||||
0.500000; 0.375000;,
|
||||
0.500000; 0.500000;,
|
||||
0.000000; 0.687500;,
|
||||
0.000000; 0.562500;,
|
||||
0.500000; 0.562500;,
|
||||
0.500000; 0.687500;,
|
||||
0.000000; 0.687500;,
|
||||
0.000000; 0.562500;,
|
||||
0.500000; 0.562500;,
|
||||
0.500000; 0.687500;,
|
||||
0.000000; 0.500000;,
|
||||
0.000000; 0.375000;,
|
||||
0.500000; 0.375000;,
|
||||
0.500000; 0.500000;,
|
||||
0.500000; 0.437500;,
|
||||
0.500000; 0.562500;,
|
||||
0.000000; 0.562500;,
|
||||
0.000000; 0.437500;,
|
||||
0.500000; 0.875000;,
|
||||
0.000000; 0.875000;,
|
||||
0.000000; 0.750000;,
|
||||
0.500000; 0.750000;,
|
||||
0.375000; 0.375000;,
|
||||
0.625000; 0.375000;,
|
||||
0.625000; 0.625000;,
|
||||
0.375000; 0.625000;,
|
||||
0.375000; 0.625000;,
|
||||
0.375000; 0.375000;,
|
||||
0.625000; 0.375000;,
|
||||
0.625000; 0.625000;,
|
||||
0.000000; 0.000000;,
|
||||
1.000000; 0.000000;,
|
||||
1.000000; 0.250000;,
|
||||
0.000000; 0.250000;,
|
||||
0.000000; 0.750000;,
|
||||
1.000000; 0.750000;,
|
||||
1.000000; 1.000000;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.250000;,
|
||||
1.000000; 0.250000;,
|
||||
1.000000; 0.500000;,
|
||||
0.000000; 0.500000;,
|
||||
1.000000; 0.750000;,
|
||||
0.000000; 0.750000;,
|
||||
0.000000; 0.500000;,
|
||||
1.000000; 0.500000;;
|
||||
} //End of Cube_007 UV Coordinates
|
||||
} //End of Cube_007 Mesh
|
||||
} //End of Cube
|
||||
} //End of Root Frame
|
|
@ -0,0 +1,86 @@
|
|||
# Blender v2.76 (sub 0) OBJ File: 'meshnode_pane.blend'
|
||||
# www.blender.org
|
||||
mtllib meshnode_pane.mtl
|
||||
v -0.312500 -5.000000 -5.000000
|
||||
v -0.312500 5.000000 -5.000000
|
||||
v 0.312500 5.000000 -5.000000
|
||||
v 0.312500 -5.000000 -5.000000
|
||||
v -0.312500 5.000000 0.000000
|
||||
v -0.312500 -5.000000 0.000000
|
||||
v 0.312500 5.000000 0.000000
|
||||
v 0.312500 -5.000000 0.000000
|
||||
v 5.000000 -5.000000 -0.312500
|
||||
v 5.000000 5.000000 -0.312500
|
||||
v 5.000000 5.000000 0.312500
|
||||
v 5.000000 -5.000000 0.312500
|
||||
v 0.000000 5.000000 -0.312500
|
||||
v 0.000000 -5.000000 -0.312500
|
||||
v 0.000000 5.000000 0.312500
|
||||
v 0.000000 -5.000000 0.312500
|
||||
v -0.312500 -5.000000 5.000000
|
||||
v -0.312500 5.000000 5.000000
|
||||
v 0.312500 5.000000 5.000000
|
||||
v 0.312500 -5.000000 5.000000
|
||||
v -0.312500 5.000000 0.000000
|
||||
v -0.312500 -5.000000 0.000000
|
||||
v 0.312500 5.000000 0.000000
|
||||
v 0.312500 -5.000000 0.000000
|
||||
v -5.000000 -5.000000 -0.312500
|
||||
v -5.000000 5.000000 -0.312500
|
||||
v -5.000000 5.000000 0.312500
|
||||
v -5.000000 -5.000000 0.312500
|
||||
v 0.000000 5.000000 -0.312500
|
||||
v 0.000000 -5.000000 -0.312500
|
||||
v 0.000000 5.000000 0.312500
|
||||
v 0.000000 -5.000000 0.312500
|
||||
vt 0.500000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.500000 0.000000
|
||||
vt 0.500000 0.937500
|
||||
vt 1.000000 0.937500
|
||||
vt 1.000000 0.062500
|
||||
vt 0.500000 0.062500
|
||||
vt 0.937500 1.000000
|
||||
vt 0.937500 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.062500 1.000000
|
||||
vt 0.062500 0.000000
|
||||
vt 0.000000 0.937500
|
||||
vt 0.000000 0.062500
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 0.000000 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.000000 1.000000
|
||||
g Cube_Cube.001_Pane_1
|
||||
usemtl Pane_1
|
||||
s off
|
||||
f 5/1/1 2/2/1 1/3/1 6/4/1
|
||||
f 7/5/2 3/6/2 2/2/2 5/1/2
|
||||
f 6/4/3 1/3/3 4/7/3 8/8/3
|
||||
f 2/9/4 3/2/4 4/3/4 1/10/4
|
||||
f 4/3/5 3/2/5 7/1/5 8/4/5
|
||||
g Cube_Cube.001_Pane_2
|
||||
usemtl Pane_2
|
||||
f 13/1/4 10/11/4 9/12/4 14/4/4
|
||||
f 10/11/5 11/13/5 12/14/5 9/12/5
|
||||
f 10/15/2 13/5/2 15/1/2 11/11/2
|
||||
f 12/12/3 16/4/3 14/8/3 9/16/3
|
||||
f 11/11/6 15/1/6 16/4/6 12/12/6
|
||||
g Cube_Cube.001_Pane_3
|
||||
usemtl Pane_3
|
||||
f 19/11/6 18/13/6 17/14/6 20/12/6
|
||||
f 17/12/3 22/4/3 24/8/3 20/16/3
|
||||
f 19/15/2 23/5/2 21/1/2 18/11/2
|
||||
f 18/11/1 21/1/1 22/4/1 17/12/1
|
||||
f 19/11/5 20/12/5 24/4/5 23/1/5
|
||||
g Cube_Cube.001_Pane_4
|
||||
usemtl Pane_4
|
||||
f 27/9/1 26/2/1 25/3/1 28/10/1
|
||||
f 32/4/3 28/3/3 25/7/3 30/8/3
|
||||
f 29/5/2 26/6/2 27/2/2 31/1/2
|
||||
f 28/3/6 32/4/6 31/1/6 27/2/6
|
||||
f 26/2/4 29/1/4 30/4/4 25/3/4
|
|
@ -0,0 +1,34 @@
|
|||
# Blender v2.76 (sub 0) OBJ File: 'meshnode_plant.blend'
|
||||
# www.blender.org
|
||||
mtllib meshnode_plant.mtl
|
||||
o Cube
|
||||
v -3.531999 5.000000 3.539069
|
||||
v 3.539071 5.000000 -3.531997
|
||||
v 3.531999 5.000000 -3.539069
|
||||
v -3.539071 5.000000 3.531997
|
||||
v -3.532001 -5.000000 3.539069
|
||||
v 3.539071 -5.000000 -3.531996
|
||||
v 3.531999 -5.000000 -3.539069
|
||||
v -3.539070 -5.000000 3.531997
|
||||
v -3.539068 -5.000000 -3.532000
|
||||
v -3.531997 -5.000000 -3.539071
|
||||
v 3.539068 -5.000000 3.532000
|
||||
v 3.531995 -5.000000 3.539071
|
||||
v -3.539069 5.000000 -3.531999
|
||||
v -3.531997 5.000000 -3.539071
|
||||
v 3.539069 5.000000 3.531999
|
||||
v 3.531997 5.000000 3.539071
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 -0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn 0.707100 -0.000000 0.707100
|
||||
vn -0.707100 -0.000000 -0.707100
|
||||
vn 0.707100 -0.000000 -0.707100
|
||||
vn -0.707100 0.000000 0.707100
|
||||
usemtl Material
|
||||
s off
|
||||
f 1/1/1 5/2/1 6/3/1 2/4/1
|
||||
f 8/2/2 4/1/2 3/4/2 7/3/2
|
||||
f 10/2/3 14/1/3 15/4/3 11/3/3
|
||||
f 13/1/4 9/2/4 12/3/4 16/4/4
|
|
@ -1,99 +0,0 @@
|
|||
xof 0303txt 0032
|
||||
|
||||
Frame Root {
|
||||
FrameTransformMatrix {
|
||||
1.000000, 0.000000, 0.000000, 0.000000,
|
||||
0.000000, 0.000000, 1.000000, 0.000000,
|
||||
0.000000, 1.000000,-0.000000, 0.000000,
|
||||
0.000000, 0.000000, 0.000000, 1.000000;;
|
||||
}
|
||||
Frame Cube {
|
||||
FrameTransformMatrix {
|
||||
3.535533,-3.535535, 0.000000, 0.000000,
|
||||
3.535535, 3.535533, 0.000000, 0.000000,
|
||||
0.000000, 0.000000, 5.000000, 0.000000,
|
||||
0.000000, 0.000000, 0.000000, 1.000000;;
|
||||
}
|
||||
Mesh { //Cube_003 Mesh
|
||||
16;
|
||||
-0.001000;-1.000000; 1.000000;,
|
||||
-0.001000;-1.000000;-1.000000;,
|
||||
-0.001000; 1.000000;-1.000000;,
|
||||
-0.001000; 1.000000; 1.000000;,
|
||||
0.001000;-1.000000;-1.000000;,
|
||||
0.001000;-1.000000; 1.000000;,
|
||||
0.001000; 1.000000; 1.000000;,
|
||||
0.001000; 1.000000;-1.000000;,
|
||||
-1.000000;-0.001000;-1.000000;,
|
||||
-1.000000;-0.001000; 1.000000;,
|
||||
1.000000;-0.001000; 1.000000;,
|
||||
1.000000;-0.001000;-1.000000;,
|
||||
-1.000000; 0.001000; 1.000000;,
|
||||
-1.000000; 0.001000;-1.000000;,
|
||||
1.000000; 0.001000;-1.000000;,
|
||||
1.000000; 0.001000; 1.000000;;
|
||||
4;
|
||||
4;0;1;2;3;,
|
||||
4;4;5;6;7;,
|
||||
4;8;9;10;11;,
|
||||
4;12;13;14;15;;
|
||||
MeshNormals { //Cube_003 Normals
|
||||
16;
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;;
|
||||
4;
|
||||
4;0;1;2;3;,
|
||||
4;4;5;6;7;,
|
||||
4;8;9;10;11;,
|
||||
4;12;13;14;15;;
|
||||
} //End of Cube_003 Normals
|
||||
MeshMaterialList { //Cube_003 Material List
|
||||
1;
|
||||
4;
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0;;
|
||||
Material Material {
|
||||
0.640000; 0.640000; 0.640000; 1.000000;;
|
||||
96.078431;
|
||||
0.073171; 0.073171; 0.073171;;
|
||||
0.000000; 0.000000; 0.000000;;
|
||||
}
|
||||
} //End of Cube_003 Material List
|
||||
MeshTextureCoords { //Cube_003 UV Coordinates
|
||||
16;
|
||||
0.000000; 0.000000;,
|
||||
0.000000; 1.000000;,
|
||||
1.000000; 1.000000;,
|
||||
1.000000; 0.000000;,
|
||||
-0.000000; 1.000000;,
|
||||
0.000000; 0.000000;,
|
||||
1.000000; 0.000000;,
|
||||
1.000000; 1.000000;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.000000;,
|
||||
1.000000; 0.000000;,
|
||||
1.000000; 1.000000;,
|
||||
0.000000; 0.000000;,
|
||||
0.000000; 1.000000;,
|
||||
1.000000; 1.000000;,
|
||||
1.000000; 0.000000;;
|
||||
} //End of Cube_003 UV Coordinates
|
||||
} //End of Cube_003 Mesh
|
||||
} //End of Cube
|
||||
} //End of Root Frame
|
|
@ -1,130 +0,0 @@
|
|||
xof 0303txt 0032
|
||||
|
||||
Frame Root {
|
||||
FrameTransformMatrix {
|
||||
1.000000, 0.000000, 0.000000, 0.000000,
|
||||
0.000000, 0.000000, 1.000000, 0.000000,
|
||||
0.000000, 1.000000,-0.000000, 0.000000,
|
||||
0.000000, 0.000000, 0.000000, 1.000000;;
|
||||
}
|
||||
Frame Cube {
|
||||
FrameTransformMatrix {
|
||||
5.000000, 0.000000, 0.000000, 0.000000,
|
||||
0.000000, 5.000000, 0.000000, 0.000000,
|
||||
0.000000, 0.000000, 5.000000, 0.000000,
|
||||
0.000000, 0.000000, 0.000000, 1.000000;;
|
||||
}
|
||||
Mesh { //Cube_001 Mesh
|
||||
24;
|
||||
-1.000000; 1.000000;-1.000000;,
|
||||
-1.000000;-1.000000;-1.000000;,
|
||||
1.000000;-1.000000;-1.000000;,
|
||||
1.000000; 1.000000;-1.000000;,
|
||||
1.000000;-1.000000; 0.000000;,
|
||||
-1.000000;-1.000000; 0.000000;,
|
||||
-1.000000; 1.000000; 0.000000;,
|
||||
1.000000; 1.000000; 0.000000;,
|
||||
1.000000;-1.000000;-1.000000;,
|
||||
1.000000;-1.000000; 0.000000;,
|
||||
1.000000; 1.000000; 0.000000;,
|
||||
1.000000; 1.000000;-1.000000;,
|
||||
-1.000000;-1.000000;-1.000000;,
|
||||
-1.000000;-1.000000; 0.000000;,
|
||||
1.000000;-1.000000; 0.000000;,
|
||||
1.000000;-1.000000;-1.000000;,
|
||||
-1.000000; 1.000000;-1.000000;,
|
||||
-1.000000; 1.000000; 0.000000;,
|
||||
-1.000000;-1.000000; 0.000000;,
|
||||
-1.000000;-1.000000;-1.000000;,
|
||||
-1.000000; 1.000000; 0.000000;,
|
||||
-1.000000; 1.000000;-1.000000;,
|
||||
1.000000; 1.000000;-1.000000;,
|
||||
1.000000; 1.000000; 0.000000;;
|
||||
6;
|
||||
4;0;1;2;3;,
|
||||
4;4;5;6;7;,
|
||||
4;8;9;10;11;,
|
||||
4;12;13;14;15;,
|
||||
4;16;17;18;19;,
|
||||
4;20;21;22;23;;
|
||||
MeshNormals { //Cube_001 Normals
|
||||
24;
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;;
|
||||
6;
|
||||
4;0;1;2;3;,
|
||||
4;4;5;6;7;,
|
||||
4;8;9;10;11;,
|
||||
4;12;13;14;15;,
|
||||
4;16;17;18;19;,
|
||||
4;20;21;22;23;;
|
||||
} //End of Cube_001 Normals
|
||||
MeshMaterialList { //Cube_001 Material List
|
||||
1;
|
||||
6;
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0;;
|
||||
Material Material {
|
||||
0.640000; 0.640000; 0.640000; 1.000000;;
|
||||
96.078431;
|
||||
0.073171; 0.073171; 0.073171;;
|
||||
0.000000; 0.000000; 0.000000;;
|
||||
TextureFilename {"wood.png";}
|
||||
}
|
||||
} //End of Cube_001 Material List
|
||||
MeshTextureCoords { //Cube_001 UV Coordinates
|
||||
24;
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.000000;,
|
||||
1.000000; 0.000000;,
|
||||
1.000000; 1.000000;,
|
||||
1.000000; 1.000000;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.000000;,
|
||||
1.000000; 0.000000;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.500000;,
|
||||
1.000000; 0.500000;,
|
||||
1.000000; 1.000000;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.500000;,
|
||||
1.000000; 0.500000;,
|
||||
1.000000; 1.000000;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.500000;,
|
||||
1.000000; 0.500000;,
|
||||
1.000000; 1.000000;,
|
||||
1.000000; 0.500000;,
|
||||
1.000000; 1.000000;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.500000;;
|
||||
} //End of Cube_001 UV Coordinates
|
||||
} //End of Cube_001 Mesh
|
||||
} //End of Cube
|
||||
} //End of Root Frame
|
|
@ -1,204 +0,0 @@
|
|||
xof 0303txt 0032
|
||||
|
||||
Frame Root {
|
||||
FrameTransformMatrix {
|
||||
1.000000, 0.000000, 0.000000, 0.000000,
|
||||
0.000000, 0.000000, 1.000000, 0.000000,
|
||||
0.000000, 1.000000,-0.000000, 0.000000,
|
||||
0.000000, 0.000000, 0.000000, 1.000000;;
|
||||
}
|
||||
Frame Cube {
|
||||
FrameTransformMatrix {
|
||||
5.000000, 0.000000, 0.000000, 0.000000,
|
||||
0.000000, 5.000000, 0.000000, 0.000000,
|
||||
0.000000, 0.000000, 5.000000, 0.000000,
|
||||
0.000000, 0.000000, 0.000000, 1.000000;;
|
||||
}
|
||||
Mesh { //Cube_002 Mesh
|
||||
44;
|
||||
1.000000; 0.000000; 1.000000;,
|
||||
-1.000000; 0.000000; 1.000000;,
|
||||
-1.000000; 1.000000; 1.000000;,
|
||||
1.000000; 1.000000; 1.000000;,
|
||||
1.000000; 0.000000; 0.000000;,
|
||||
1.000000; 0.000000; 1.000000;,
|
||||
1.000000; 1.000000; 1.000000;,
|
||||
1.000000; 1.000000; 0.000000;,
|
||||
-1.000000; 0.000000; 0.000000;,
|
||||
-1.000000; 0.000000; 1.000000;,
|
||||
1.000000; 0.000000; 1.000000;,
|
||||
1.000000; 0.000000; 0.000000;,
|
||||
-1.000000; 1.000000; 0.000000;,
|
||||
-1.000000; 1.000000; 1.000000;,
|
||||
-1.000000; 0.000000; 1.000000;,
|
||||
-1.000000; 0.000000; 0.000000;,
|
||||
-1.000000; 1.000000; 1.000000;,
|
||||
-1.000000; 1.000000; 0.000000;,
|
||||
1.000000; 1.000000; 0.000000;,
|
||||
1.000000; 1.000000; 1.000000;,
|
||||
-1.000000; 1.000000;-1.000000;,
|
||||
-1.000000;-1.000000;-1.000000;,
|
||||
1.000000;-1.000000;-1.000000;,
|
||||
1.000000; 1.000000;-1.000000;,
|
||||
1.000000;-1.000000;-1.000000;,
|
||||
1.000000;-1.000000; 0.000000;,
|
||||
1.000000; 1.000000; 0.000000;,
|
||||
1.000000; 1.000000;-1.000000;,
|
||||
-1.000000;-1.000000;-1.000000;,
|
||||
-1.000000;-1.000000; 0.000000;,
|
||||
1.000000;-1.000000; 0.000000;,
|
||||
1.000000;-1.000000;-1.000000;,
|
||||
-1.000000; 1.000000;-1.000000;,
|
||||
-1.000000; 1.000000; 0.000000;,
|
||||
-1.000000;-1.000000; 0.000000;,
|
||||
-1.000000;-1.000000;-1.000000;,
|
||||
-1.000000; 1.000000; 0.000000;,
|
||||
-1.000000; 1.000000;-1.000000;,
|
||||
1.000000; 1.000000;-1.000000;,
|
||||
1.000000; 1.000000; 0.000000;,
|
||||
1.000000;-1.000000; 0.000000;,
|
||||
-1.000000;-1.000000; 0.000000;,
|
||||
-1.000000; 0.000000; 0.000000;,
|
||||
1.000000; 0.000000; 0.000000;;
|
||||
11;
|
||||
4;0;1;2;3;,
|
||||
4;4;5;6;7;,
|
||||
4;8;9;10;11;,
|
||||
4;12;13;14;15;,
|
||||
4;16;17;18;19;,
|
||||
4;20;21;22;23;,
|
||||
4;24;25;26;27;,
|
||||
4;28;29;30;31;,
|
||||
4;32;33;34;35;,
|
||||
4;36;37;38;39;,
|
||||
4;40;41;42;43;;
|
||||
MeshNormals { //Cube_002 Normals
|
||||
44;
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
0.000000;-1.000000; 0.000000;,
|
||||
0.000000;-1.000000; 0.000000;,
|
||||
0.000000;-1.000000; 0.000000;,
|
||||
0.000000;-1.000000; 0.000000;,
|
||||
-1.000000;-0.000000; 0.000000;,
|
||||
-1.000000;-0.000000; 0.000000;,
|
||||
-1.000000;-0.000000; 0.000000;,
|
||||
-1.000000;-0.000000; 0.000000;,
|
||||
-0.000000; 1.000000; 0.000000;,
|
||||
-0.000000; 1.000000; 0.000000;,
|
||||
-0.000000; 1.000000; 0.000000;,
|
||||
-0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
0.000000; 0.000000;-1.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
1.000000;-0.000000; 0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-0.000000;-1.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
-1.000000; 0.000000;-0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000; 1.000000; 0.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;,
|
||||
0.000000;-0.000000; 1.000000;;
|
||||
11;
|
||||
4;0;1;2;3;,
|
||||
4;4;5;6;7;,
|
||||
4;8;9;10;11;,
|
||||
4;12;13;14;15;,
|
||||
4;16;17;18;19;,
|
||||
4;20;21;22;23;,
|
||||
4;24;25;26;27;,
|
||||
4;28;29;30;31;,
|
||||
4;32;33;34;35;,
|
||||
4;36;37;38;39;,
|
||||
4;40;41;42;43;;
|
||||
} //End of Cube_002 Normals
|
||||
MeshMaterialList { //Cube_002 Material List
|
||||
1;
|
||||
11;
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0;;
|
||||
Material Material {
|
||||
0.640000; 0.640000; 0.640000; 1.000000;;
|
||||
96.078431;
|
||||
0.073171; 0.073171; 0.073171;;
|
||||
0.000000; 0.000000; 0.000000;;
|
||||
}
|
||||
} //End of Cube_002 Material List
|
||||
MeshTextureCoords { //Cube_002 UV Coordinates
|
||||
44;
|
||||
1.000000; 0.500000;,
|
||||
0.000000; 0.500000;,
|
||||
0.000000; 0.000000;,
|
||||
1.000000; 0.000000;,
|
||||
0.500000; 0.500000;,
|
||||
0.500000; 0.000000;,
|
||||
1.000000; 0.000000;,
|
||||
1.000000; 0.500000;,
|
||||
0.000000; 0.500000;,
|
||||
0.000000; 0.000000;,
|
||||
1.000000; 0.000000;,
|
||||
1.000000; 0.500000;,
|
||||
0.000000; 0.500000;,
|
||||
0.000000; 0.000000;,
|
||||
0.500000; 0.000000;,
|
||||
0.500000; 0.500000;,
|
||||
1.000000; 0.000000;,
|
||||
1.000000; 0.500000;,
|
||||
0.000000; 0.500000;,
|
||||
-0.000000; 0.000000;,
|
||||
-0.000000; 1.000000;,
|
||||
0.000000; 0.000000;,
|
||||
1.000000; 0.000000;,
|
||||
1.000000; 1.000000;,
|
||||
-0.000000; 1.000000;,
|
||||
0.000000; 0.500000;,
|
||||
1.000000; 0.500000;,
|
||||
1.000000; 1.000000;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.500000;,
|
||||
1.000000; 0.500000;,
|
||||
1.000000; 1.000000;,
|
||||
-0.000000; 1.000000;,
|
||||
0.000000; 0.498216;,
|
||||
1.000000; 0.498216;,
|
||||
1.000000; 1.000000;,
|
||||
1.000000; 0.500000;,
|
||||
1.000000; 1.000000;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.500000;,
|
||||
1.000000; 1.000000;,
|
||||
0.000000; 1.000000;,
|
||||
0.000000; 0.500000;,
|
||||
1.000000; 0.500000;;
|
||||
} //End of Cube_002 UV Coordinates
|
||||
} //End of Cube_002 Mesh
|
||||
} //End of Cube
|
||||
} //End of Root Frame
|
|
@ -0,0 +1,112 @@
|
|||
# Blender v2.76 (sub 0) OBJ File: 'meshnode_wall.blend'
|
||||
# www.blender.org
|
||||
mtllib meshnode_wall.mtl
|
||||
v -2.500000 -5.000000 2.500000
|
||||
v -2.500000 5.000000 2.500000
|
||||
v -2.500000 -5.000000 -2.500000
|
||||
v -2.500000 5.000000 -2.500000
|
||||
v 2.500000 -5.000000 2.500000
|
||||
v 2.500000 5.000000 2.500000
|
||||
v 2.500000 -5.000000 -2.500000
|
||||
v 2.500000 5.000000 -2.500000
|
||||
v 2.500000 -5.000000 1.875000
|
||||
v 2.500000 3.750000 1.875000
|
||||
v 2.500000 -5.000000 -1.875000
|
||||
v 2.500000 3.750000 -1.875000
|
||||
v 5.000000 -5.000000 1.875000
|
||||
v 5.000000 3.750000 1.875000
|
||||
v 5.000000 -5.000000 -1.875000
|
||||
v 5.000000 3.750000 -1.875000
|
||||
v -2.500000 -5.000000 -1.875000
|
||||
v -2.500000 3.750000 -1.875000
|
||||
v -2.500000 -5.000000 1.875000
|
||||
v -2.500000 3.750000 1.875000
|
||||
v -5.000000 -5.000000 -1.875000
|
||||
v -5.000000 3.750000 -1.875000
|
||||
v -5.000000 -5.000000 1.875000
|
||||
v -5.000000 3.750000 1.875000
|
||||
v 1.875000 -5.000000 -2.500000
|
||||
v 1.875000 3.750000 -2.500000
|
||||
v -1.875000 -5.000000 -2.500000
|
||||
v -1.875000 3.750000 -2.500000
|
||||
v 1.875000 -5.000000 -5.000000
|
||||
v 1.875000 3.750000 -5.000000
|
||||
v -1.875000 -5.000000 -5.000000
|
||||
v -1.875000 3.750000 -5.000000
|
||||
v -1.875000 -5.000000 2.500000
|
||||
v -1.875000 3.750000 2.500000
|
||||
v 1.875000 -5.000000 2.500000
|
||||
v 1.875000 3.750000 2.500000
|
||||
v -1.875000 -5.000000 5.000000
|
||||
v -1.875000 3.750000 5.000000
|
||||
v 1.875000 -5.000000 5.000000
|
||||
v 1.875000 3.750000 5.000000
|
||||
vt 0.750000 1.000000
|
||||
vt 0.250000 1.000000
|
||||
vt 0.250000 0.000000
|
||||
vt 0.750000 0.000000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.750000 0.750000
|
||||
vt 0.250000 0.750000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.250000 0.875000
|
||||
vt 0.000000 0.875000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.875000
|
||||
vt 0.750000 0.875000
|
||||
vt 1.000000 -0.000000
|
||||
vt 0.312500 0.750000
|
||||
vt 0.687500 0.750000
|
||||
vt 0.687500 1.000000
|
||||
vt 0.312500 1.000000
|
||||
vt 0.312500 0.000000
|
||||
vt 0.687500 0.000000
|
||||
vt 0.687500 0.250000
|
||||
vt 0.312500 0.250000
|
||||
vt 0.250000 0.312500
|
||||
vt 0.250000 0.687500
|
||||
vt 0.000000 0.687500
|
||||
vt 0.000000 0.312500
|
||||
vt 0.750000 0.687500
|
||||
vt 0.750000 0.312500
|
||||
vt 1.000000 0.312500
|
||||
vt 1.000000 0.687500
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
g Cube_Cube.001_Pillar
|
||||
usemtl Pillar
|
||||
s off
|
||||
f 2/1/1 4/2/1 3/3/1 1/4/1
|
||||
f 4/1/2 8/2/2 7/3/2 3/4/2
|
||||
f 8/1/3 6/2/3 5/3/3 7/4/3
|
||||
f 6/1/4 2/2/4 1/3/4 5/4/4
|
||||
f 1/5/5 3/6/5 7/7/5 5/8/5
|
||||
f 6/7/6 8/8/6 4/5/6 2/6/6
|
||||
g Cube_Cube.001_Wall_1
|
||||
usemtl Wall_1
|
||||
f 28/9/1 32/10/1 31/11/1 27/3/1
|
||||
f 30/12/3 26/13/3 25/4/3 29/14/3
|
||||
f 25/15/5 27/16/5 31/17/5 29/18/5
|
||||
f 30/19/6 32/20/6 28/21/6 26/22/6
|
||||
g Cube_Cube.001_Wall_2
|
||||
usemtl Wall_2
|
||||
f 12/9/2 16/10/2 15/11/2 11/3/2
|
||||
f 14/12/4 10/13/4 9/4/4 13/14/4
|
||||
f 9/23/5 11/24/5 15/25/5 13/26/5
|
||||
f 14/25/6 16/26/6 12/23/6 10/24/6
|
||||
g Cube_Cube.001_Wall_3
|
||||
usemtl Wall_3
|
||||
f 36/9/3 40/10/3 39/11/3 35/3/3
|
||||
f 38/12/1 34/13/1 33/4/1 37/14/1
|
||||
f 33/21/5 35/22/5 39/19/5 37/20/5
|
||||
f 38/17/6 40/18/6 36/15/6 34/16/6
|
||||
g Cube_Cube.001_Wall_4
|
||||
usemtl Wall_4
|
||||
f 20/9/4 24/10/4 23/11/4 19/3/4
|
||||
f 22/12/2 18/13/2 17/4/2 21/14/2
|
||||
f 17/27/5 19/28/5 23/29/5 21/30/5
|
||||
f 22/29/6 24/30/6 20/27/6 18/28/6
|
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 422 B |
After Width: | Height: | Size: 144 B |
Before Width: | Height: | Size: 699 B |
Before Width: | Height: | Size: 878 B |
Before Width: | Height: | Size: 146 B After Width: | Height: | Size: 128 B |