first commit
|
@ -0,0 +1,106 @@
|
|||
Moontest: _Moon Habitat Simulator_
|
||||
==================================
|
||||
<pre>
|
||||
<h1>Introduction</h1>
|
||||
You are a prospector on a newly discovered moon.
|
||||
Your habitat has been constructed and your mining systems are operational.
|
||||
|
||||
As a resident engineer, you must manage life support systems and
|
||||
mining equipment to ensure your income is adequate for survival.
|
||||
|
||||
Expenses are deducted from your balance at regular intervals.
|
||||
The amount deducted increases as time goes on, increasing the
|
||||
difficulty of the game the longer you play.
|
||||
|
||||
You can win the game by earning $30,000 and lose if you reach $10,000 in debt.
|
||||
These limits can be removed with the /unlimited console command.
|
||||
You must be granted server privileges to use this command, (ie: /grantme server)
|
||||
|
||||
Moontest is playable in both single player and multiplayer game modes.
|
||||
|
||||
<h1>Gameplay</h1>
|
||||
<img src="https://i.imgur.com/ISomiAN.png" alt="Moontest" width="427" height="240">
|
||||
This is your <b>nuclear reactor</b>, the power source for your habitat.
|
||||
Left click the reactor to turn it on or off. If the reactor is overloaded
|
||||
or you turn it off, all of your equipment will have to be manually restarted.
|
||||
|
||||
|
||||
<img src="https://i.imgur.com/AVnMmdr.png" alt="Moontest" width="427" height="240">
|
||||
This is your <b>gravity generator</b>. Without it, other machines become unstable.
|
||||
Left click the generator to turn it on or off. Right click to adjust the intensity.
|
||||
The gravity gravity generator's power consumption is dependent on the intensity.
|
||||
Lower values allow you to divert power elsewhere. Higher values provide more stability.
|
||||
Any value over 100 will also cause your machines to become unstable.
|
||||
|
||||
The formula used to calculate gravity's effect on machine stability is below.
|
||||
|
||||
<b>if gravity_on() and generated_gravity > 100 then</b> <i>--intensity is too high</i>
|
||||
<b>stability = 92 - (generated_gravity - 100)</b> <i>--stability is reduced</i>
|
||||
<b>else</b>
|
||||
<b>stability = 8 + (gravity_on() * (generated_gravity - 16))</b> <i>--stability is increased</i>
|
||||
<b>end</b>
|
||||
<b>if stability > 92 then stability = 92 end</b> <i>--stability limit</i>
|
||||
<b>if math.random(0, 100) > stability then something_fails() end</b> <i>--failures occur</i>
|
||||
|
||||
|
||||
<img src="https://i.imgur.com/yYaS4Pk.png" alt="Moontest" width="427" height="240">
|
||||
This is your <b>oxygen generator</b>. Without it, you cannot survive. Left click the
|
||||
generator to turn it on or off. Right click the generator to adjust it's output.
|
||||
The oxygen generator's power consumption is dependent on it's output.
|
||||
Lower values allow you to divert power elsewhere. Higher values provide more safety.
|
||||
Extremely high oxygen output settings can be dangerous.
|
||||
|
||||
|
||||
<img src="https://i.imgur.com/I25ZDqd.png" alt="Moontest" width="427" height="240">
|
||||
This is your <b>hvac system</b>. Without it, you cannot survive. Left click the
|
||||
box on top to turn it on or off. Right click the box to adjust the thermostat.
|
||||
The hvac system's power consumption is dependent on the thermostat setting.
|
||||
Lower values allow you to divert power elsewhere. Higher values provide more safety.
|
||||
Extremely high thermostat settings can be dangerous.
|
||||
|
||||
|
||||
<img src="https://i.imgur.com/gZ95JqW.png" alt="Moontest" width="427" height="240">
|
||||
This is your <b>mining drill</b>; your primary source of passive income.
|
||||
Left click the drill to turn it on or off. Right click to adjust it's speed.
|
||||
The drill's power consumption is dependent on the speed setting. Be careful
|
||||
about increasing this without adjusting the speed of your coolant pump.
|
||||
If not, you will experience greater fluctuations in power consumption and
|
||||
may overload your reactor.
|
||||
|
||||
|
||||
<img src="https://i.imgur.com/6VF6ktQ.png" alt="Moontest" width="427" height="240">
|
||||
This is your <b>coolant system</b>. This prevents the mining drill from overloading the reactor.
|
||||
Left click the coolant pump to turn it on or off. Right click the pump to adjust it's speed.
|
||||
The coolant system's power consumption is dependent on the pump speed.
|
||||
The speed setting should be set with reference to the drill's speed setting.
|
||||
|
||||
The formula used to calculate the pump's effect on the drill is below.
|
||||
|
||||
<b>resistance = math.random(drill_speed * 2, drill_speed * 3)</b> <i>--the resistance</i>
|
||||
<b>digging = drill_speed + resistance</b> <i>--the amount of ore mined</i>
|
||||
<b>cooling = pump_is_on * pump_speed * 3</b> <i>--cooling provided</i>
|
||||
<b>if cooling > resistance * 0.9 then cooling = resistance * 0.9 end</b> <i>--cooling limit</i>
|
||||
<b>drill_power = digging - cooling</b> <i>--the power consumption of the drill</i>
|
||||
<b>money = money + digging</b> <i>--the amount of money earned from the ore</i>
|
||||
|
||||
|
||||
<img src="https://i.imgur.com/6Llfvtm.png" alt="Moontest" width="427" height="240">
|
||||
This is your <b>space food vending machine</b>. Without it, you cannot survive.
|
||||
Restocking fees are a part of your regular expenses. Left click to buy food.
|
||||
Left click with the food in your hand to eat it. Space food replenishes your
|
||||
hunger if you are hungry and heals you if you are full.
|
||||
|
||||
|
||||
<img src="https://i.imgur.com/iobKYQy.png" alt="Moontest" width="427" height="240">
|
||||
These are your <b>sleeping quarters</b>. Without sleep, you will eventually die.
|
||||
Keep an eye on your energy level and when you need to sleep, left click the
|
||||
middle of the bottom bunk on one of the bunk beds. You will sleep until your
|
||||
energy is full then you will be moved to the lobby of the space habitat.
|
||||
|
||||
|
||||
<img src="https://i.imgur.com/VhMXVYq.png" alt="Moontest" width="427" height="240">
|
||||
This is your <b>research station</b>. Here, you can conduct research on organic matter
|
||||
'harvested' on the moon's surface. Organic matter is worth $10 each early in the game.
|
||||
This value increase each time you process research data. The limit is $50.
|
||||
To conduct research, left click the research station while holding the organic matter.
|
||||
</pre>
|
|
@ -0,0 +1,56 @@
|
|||
--Textures--
|
||||
Moon surface texture: CC0, https://tileable.co/terms-and-conditions/
|
||||
Duct texture: CC0, https://tileable.co/terms-and-conditions/
|
||||
Wall texture: CC0, https://3dtextures.me/about/
|
||||
Airlock texture: CC0, https://opengameart.org/content/40-free-metal-textures-from-mtc-sets
|
||||
Vent texture: CC0, https://publicdomainvectors.org/en/free-clipart/Metal-ventilation-grill-vector-image/13994.html
|
||||
Crate texture: CC0, https://opengameart.org/content/sci-fi-crate-1
|
||||
Table and chair textures: CC0, https://ambientcg.com/view?id=Wood067
|
||||
Counter texture: CC0, https://ambientcg.com/view?id=Marble016
|
||||
Sofa texture: CC0, https://ambientcg.com/view?id=Fabric045
|
||||
Motor texture: CC0, https://publicdomainvectors.org/en/free-clipart/Electrical-motor/56259.html
|
||||
|
||||
The hovercraft fan,refridgerator and cabinet textures were created from photographs of real objects.
|
||||
Other textures not listed here were created from scratch using GIMP.
|
||||
|
||||
--Sprites--
|
||||
Astronaut sprite: CC0, https://opengameart.org/content/astronaut-ideas
|
||||
Alien sprite: CC0, https://opengameart.org/content/2d-rpg-enemy-set
|
||||
Alien splat: CC0, https://opengameart.org/content/splattexture
|
||||
Wrench: CC0, https://publicdomainvectors.org/en/free-clipart/Pipe-wrench-vector-illustration/11183.html
|
||||
|
||||
--Menu Assets--
|
||||
Menu background image: CC0, https://svs.gsfc.nasa.gov/3895
|
||||
Menu moon image: CC0, https://www.publicdomainpictures.net/en/view-image.php?image=44955&picture=full-moon-at-midnight-close-up
|
||||
Icon: CC0, https://photojournal.jpl.nasa.gov/catalog/PIA14021
|
||||
|
||||
--Sounds--
|
||||
Airlock sound: CC0, https://freesound.org/people/Paul368/sounds/264063/
|
||||
Oxygen sound: CC0, https://freesound.org/people/davidlay1/sounds/416080/
|
||||
HVAC sound: CC0, https://freesound.org/people/raygrote/sounds/189986/
|
||||
Drill sound: CC0, https://freesound.org/people/PapercutterJohn/sounds/318203/
|
||||
Gravity generator sound: CC0, https://freesound.org/people/ct202/sounds/415478/
|
||||
Reactor start/stop sound: CC0, https://freesound.org/people/qubodup/sounds/222372/
|
||||
Reactor running sound: https://freesound.org/people/felix.blume/sounds/155834/
|
||||
Vending machine sound: CC0, https://freesound.org/people/Emma7073/sounds/250195/
|
||||
Eating sound: CC0, https://freesound.org/people/Breviceps/sounds/447916/
|
||||
Alien sound: CC0, https://freesound.org/people/JustInvoke/sounds/147017/
|
||||
Alien attack sound: CC0, https://freesound.org/people/vmgraw/sounds/257690/
|
||||
Alien death sound: CC0, https://freesound.org/people/mrickey13/sounds/515620/
|
||||
|
||||
--Models--
|
||||
Reactor model: CC BY-SA 4.0, https://sketchfab.com/3d-models/big-reactor-38f045b46af043a798ca40d96f754e54
|
||||
Gravity generator model: CC BY-SA 4.0, https://sketchfab.com/3d-models/reactor-core-c1411e8423274f92bde84a8e92544397
|
||||
Coolant tank model: CC BY-SA 4.0, https://sketchfab.com/3d-models/scifi-water-tank-ad06ee30b8784201bb6509ec77edfcac
|
||||
Drill model: CC BY-SA 4.0, https://sketchfab.com/3d-models/driller-cc521221251a4c87b0cb429f98de882c
|
||||
HVAC model: CC BY-SA 4.0, https://sketchfab.com/3d-models/hvac-unit-0bf1acaa6f1d4a9bb38cfc91fd115f9c
|
||||
Oxygen generator model: CC BY-SA 4.0, https://sketchfab.com/3d-models/apparatus02-c00e97d2f9454840a96d8adcae22738f
|
||||
Console model: CC BY-SA 4.0, https://sketchfab.com/3d-models/control-painel-c05341af291b49ef9cfce8e9fbe413f8
|
||||
Research station model: CC BY-SA 4.0, https://sketchfab.com/3d-models/kyecorp-console-f609887785fc497e9f0443fb7b276b81
|
||||
Toilet model: CC BY 4.0, https://sketchfab.com/3d-models/toilet-868beb5a0e6840d7a1d647a42a5e5a8c
|
||||
|
||||
The hovercraft, coolant pump, pipes, bunk beds, refridgerator, light fixtures, sink and shower meshes were all created by Droog71 and are licensed CC0.
|
||||
|
||||
--Code--
|
||||
All code was written by Droog71 and is licensed AGPLv3
|
||||
Mob code is based on this repo https://github.com/CasimirKaPazi/mobapi
|
|
@ -0,0 +1,5 @@
|
|||
name = Moontest
|
||||
description = Moon Habitat Simulator
|
||||
allowed_mapgens = singlenode
|
||||
author = Droog71
|
||||
min_minetest_version = 5.4.1
|
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.6 KiB |
|
@ -0,0 +1,662 @@
|
|||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU Affero General Public License is a free, copyleft license for
|
||||
software and other kinds of works, specifically designed to ensure
|
||||
cooperation with the community in the case of network server software.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
our General Public Licenses are intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
Developers that use our General Public Licenses protect your rights
|
||||
with two steps: (1) assert copyright on the software, and (2) offer
|
||||
you this License which gives you legal permission to copy, distribute
|
||||
and/or modify the software.
|
||||
|
||||
A secondary benefit of defending all users' freedom is that
|
||||
improvements made in alternate versions of the program, if they
|
||||
receive widespread use, become available for other developers to
|
||||
incorporate. Many developers of free software are heartened and
|
||||
encouraged by the resulting cooperation. However, in the case of
|
||||
software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and
|
||||
letting the public access it on a server without ever releasing its
|
||||
source code to the public.
|
||||
|
||||
The GNU Affero General Public License is designed specifically to
|
||||
ensure that, in such cases, the modified source code becomes available
|
||||
to the community. It requires the operator of a network server to
|
||||
provide the source code of the modified version running there to the
|
||||
users of that server. Therefore, public use of a modified version, on
|
||||
a publicly accessible server, gives the public access to the source
|
||||
code of the modified version.
|
||||
|
||||
An older license, called the Affero General Public License and
|
||||
published by Affero, was designed to accomplish similar goals. This is
|
||||
a different license, not a version of the Affero GPL, but Affero has
|
||||
released a new version of the Affero GPL which permits relicensing under
|
||||
this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the
|
||||
Program, your modified version must prominently offer all users
|
||||
interacting with it remotely through a computer network (if your version
|
||||
supports such interaction) an opportunity to receive the Corresponding
|
||||
Source of your version by providing access to the Corresponding Source
|
||||
from a network server at no charge, through some standard or customary
|
||||
means of facilitating copying of software. This Corresponding Source
|
||||
shall include the Corresponding Source for any work covered by version 3
|
||||
of the GNU General Public License that is incorporated pursuant to the
|
||||
following paragraph.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the work with which it is combined will remain governed by version
|
||||
3 of the GNU General Public License.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU Affero General Public License from time to time. Such new versions
|
||||
will be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU Affero General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU Affero General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU Affero General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published
|
||||
by the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If your software can interact with users remotely through a computer
|
||||
network, you should also make sure that it provides a way for users to
|
||||
get its source. For example, if your program is a web application, its
|
||||
interface could display a "Source" link that leads users to an archive
|
||||
of the code. There are many ways you could offer source, and different
|
||||
solutions will be better for different programs; see section 13 for the
|
||||
specific requirements.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
Moontest
|
||||
===============
|
||||
|
||||
Moon habitat simulator.
|
||||
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
Dependencies: none
|
|
@ -0,0 +1,303 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
aliens = {}
|
||||
alien_count = 0
|
||||
local spawn_timer = 0
|
||||
|
||||
--spawns aliens
|
||||
function spawn_aliens()
|
||||
spawn_timer = spawn_timer + 1
|
||||
if spawn_timer >= 500 - (450 * progress) then
|
||||
for x = -30,30,1 do
|
||||
for z = 26,46,1 do
|
||||
if z > 33 then
|
||||
if x < -10 or x > 10 then
|
||||
if alien_count < (20 * (progress - 0.2)) then
|
||||
local chance = math.random(1,1000)
|
||||
if chance >= 999 and minetest.get_node(vector.new(x,1,z)).name == "air" then
|
||||
minetest.add_entity(vector.new(x,1,z), "moontest:alien")
|
||||
alien_count = alien_count + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
if alien_count < (20 * (progress - 0.2)) then
|
||||
local chance = math.random(1,1000)
|
||||
if chance >= 999 and minetest.get_node(vector.new(x,1,z)).name == "air" then
|
||||
minetest.add_entity(vector.new(x,1,z), "moontest:alien")
|
||||
alien_count = alien_count + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
spawn_timer = 0
|
||||
end
|
||||
end
|
||||
|
||||
--defines the alien entity
|
||||
alien_definition = {
|
||||
physical = true,
|
||||
collisionbox = {-0.49, -0.49, -0.49, 0.49, 0.49, 0.49 },
|
||||
spritediv = {x = 1, y = 1},
|
||||
initial_sprite_basepos = {x = 0, y = 0},
|
||||
visual = "upright_sprite",
|
||||
visual_size = { x = 1, y = 1 },
|
||||
textures = { "alien.png", "alien_back.png" },
|
||||
view_range = 128,
|
||||
walk_velocity = 4,
|
||||
run_velocity = 8,
|
||||
damage = 1,
|
||||
drawtype = "front",
|
||||
timer = 0,
|
||||
attack = {player=nil, dist=nil},
|
||||
state = "stand",
|
||||
v_start = false,
|
||||
|
||||
on_punch = function(self, hitter, time_from_last_punch, tool_capabilities)
|
||||
minetest.sound_play("splat", {object = self.object})
|
||||
self.object:set_properties({textures = { "splat.png", "splat.png" }})
|
||||
minetest.after(0.1,function()
|
||||
local item = ItemStack("moontest:splat")
|
||||
hitter:get_inventory():add_item("main", item)
|
||||
self.object:remove()
|
||||
alien_count = alien_count - 1
|
||||
end)
|
||||
end,
|
||||
|
||||
jump = function (self)
|
||||
local v = self.object:get_velocity()
|
||||
v.y = 5
|
||||
self.object:set_velocity(v)
|
||||
end,
|
||||
|
||||
set_velocity = function(self, v)
|
||||
local yaw = self.object:get_yaw()
|
||||
local x = math.sin(yaw) * -v
|
||||
local z = math.cos(yaw) * v
|
||||
self.object:set_velocity({x=x, y=self.object:get_velocity().y, z=z})
|
||||
end,
|
||||
|
||||
get_velocity = function(self)
|
||||
local v = self.object:get_velocity()
|
||||
return (v.x^2 + v.z^2)^(0.5)
|
||||
end,
|
||||
|
||||
on_step = function(self, dtime)
|
||||
alien_step(self, dtime)
|
||||
end,
|
||||
|
||||
on_activate = function(self, staticdata, dtime_s)
|
||||
self.object:set_acceleration({x=0, y=-10, z=0})
|
||||
self.state = "stand"
|
||||
self.attack = {player = nil, dist = nil}
|
||||
self.object:set_velocity({x=0, y=self.object:get_velocity().y, z=0})
|
||||
self.object:set_yaw(math.random(1, 360)/180*math.pi)
|
||||
table.insert(aliens, self.object)
|
||||
end,
|
||||
|
||||
__index = function(table,key)
|
||||
return alien_definition[key]
|
||||
end
|
||||
}
|
||||
|
||||
--updates the entity
|
||||
function alien_step(self, dtime)
|
||||
apply_gravity(self)
|
||||
|
||||
self.timer = self.timer + dtime
|
||||
if self.state ~= "attack" then
|
||||
if self.timer < 1 then
|
||||
return
|
||||
end
|
||||
self.timer = 0
|
||||
end
|
||||
|
||||
if math.random(1, 100) <= 1 then
|
||||
minetest.sound_play("alien", {object = self.object})
|
||||
end
|
||||
|
||||
look_for_player(self)
|
||||
|
||||
if self.following and self.following:is_player() then
|
||||
follow_player(self)
|
||||
end
|
||||
|
||||
update_state(self)
|
||||
|
||||
if minetest.get_node(self.object:get_pos()).name ~= "air" then
|
||||
self.object:remove()
|
||||
alien_count = alien_count - 1
|
||||
end
|
||||
end
|
||||
|
||||
--simulates gravity
|
||||
function apply_gravity(self)
|
||||
if self.object:get_velocity().y > 0.1 then
|
||||
local yaw = self.object:get_yaw()
|
||||
local x = math.sin(yaw) * -2
|
||||
local z = math.cos(yaw) * 2
|
||||
self.object:set_acceleration({x=x, y=-10, z=z})
|
||||
else
|
||||
self.object:set_acceleration({x=0, y=-10, z=0})
|
||||
end
|
||||
end
|
||||
|
||||
--finds a player to follow and attack
|
||||
function look_for_player(self)
|
||||
local s = self.object:get_pos()
|
||||
for _,player in pairs(minetest.get_connected_players()) do
|
||||
local p = player:get_pos()
|
||||
local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5
|
||||
if dist < self.view_range then
|
||||
if self.attack.dist then
|
||||
if dist < self.attack.dist then
|
||||
self.attack.player = player
|
||||
self.attack.dist = dist
|
||||
end
|
||||
else
|
||||
self.state = "attack"
|
||||
self.attack.player = player
|
||||
self.attack.dist = dist
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if self.attack.player then
|
||||
local p = self.attack.player:get_pos()
|
||||
if not p or not s or not minetest.line_of_sight({x=s.x, y=s.y+1, z=s.z}, {x=p.x, y=p.y+1, z=p.z}) then
|
||||
self.state = "stand"
|
||||
self.attack = {player = nil, dist = nil}
|
||||
end
|
||||
end
|
||||
|
||||
if self.follow and self.follow ~= "" and not self.following then
|
||||
for _,player in pairs(minetest.get_connected_players()) do
|
||||
local s = self.object:get_pos()
|
||||
local p = player:get_pos()
|
||||
local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5
|
||||
if self.view_range and dist < self.view_range then
|
||||
self.following = player
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--follows the designated player
|
||||
function follow_player(self)
|
||||
if self.following:get_wielded_item():get_name() ~= self.follow then
|
||||
self.following = nil
|
||||
self.v_start = false
|
||||
else
|
||||
local s = self.object:get_pos()
|
||||
local p = self.following:get_pos()
|
||||
local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5
|
||||
if dist > self.view_range then
|
||||
self.following = nil
|
||||
self.v_start = false
|
||||
else
|
||||
local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z}
|
||||
local yaw = math.atan(vec.z/vec.x) + math.pi/2
|
||||
if p.x > s.x then
|
||||
yaw = yaw + math.pi
|
||||
end
|
||||
self.object:set_yaw(yaw)
|
||||
if dist > 2 then
|
||||
if not self.v_start then
|
||||
self.v_start = true
|
||||
self.set_velocity(self, self.walk_velocity)
|
||||
else
|
||||
if self.jump and self.get_velocity(self) <= 0.5 and self.object:get_velocity().y == 0 then
|
||||
self:jump()
|
||||
end
|
||||
self.set_velocity(self, self.walk_velocity)
|
||||
end
|
||||
else
|
||||
self.v_start = false
|
||||
self.set_velocity(self, 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--performs state specific actions
|
||||
function update_state(self)
|
||||
if self.state == "stand" then
|
||||
if math.random(1, 4) == 1 then
|
||||
self.object:set_yaw(self.object:get_yaw()+((math.random(0,360)-180)/180*math.pi))
|
||||
end
|
||||
self.set_velocity(self, 0)
|
||||
if math.random(1, 100) <= 50 then
|
||||
self.set_velocity(self, self.walk_velocity)
|
||||
self.state = "walk"
|
||||
end
|
||||
elseif self.state == "walk" then
|
||||
if math.random(1, 100) <= 30 then
|
||||
self.object:set_yaw(self.object:get_yaw()+((math.random(0,360)-180)/180*math.pi))
|
||||
end
|
||||
if self.jump and self.get_velocity(self) <= 0.5 and self.object:get_velocity().y == 0 then
|
||||
self:jump()
|
||||
end
|
||||
self.set_velocity(self, self.walk_velocity)
|
||||
if math.random(1, 100) <= 10 then
|
||||
self.set_velocity(self, 0)
|
||||
self.state = "stand"
|
||||
end
|
||||
elseif self.state == "attack" then
|
||||
do_attack_state(self)
|
||||
end
|
||||
end
|
||||
|
||||
--attacks the player or reverts to standing state
|
||||
function do_attack_state(self)
|
||||
if not self.attack.player or not self.attack.player:is_player() then
|
||||
self.state = "stand"
|
||||
self.attack = {player=nil, dist=nil}
|
||||
return
|
||||
end
|
||||
local s = self.object:get_pos()
|
||||
local p = self.attack.player:get_pos()
|
||||
local dist = ((p.x-s.x)^2 + (p.y-s.y)^2 + (p.z-s.z)^2)^0.5
|
||||
if dist > self.view_range or self.attack.player:get_hp() <= 0 then
|
||||
self.state = "stand"
|
||||
self.v_start = false
|
||||
self.set_velocity(self, 0)
|
||||
self.attack = {player=nil, dist=nil}
|
||||
return
|
||||
else
|
||||
self.attack.dist = dist
|
||||
end
|
||||
|
||||
local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z}
|
||||
local yaw = math.atan(vec.z/vec.x)+math.pi/2
|
||||
if p.x > s.x then
|
||||
yaw = yaw+math.pi
|
||||
end
|
||||
self.object:set_yaw(yaw)
|
||||
if self.attack.dist > 2 then
|
||||
if not self.v_start then
|
||||
self.v_start = true
|
||||
self.set_velocity(self, self.run_velocity)
|
||||
else
|
||||
if self.jump and self.get_velocity(self) <= 0.5 and self.object:get_velocity().y == 0 then
|
||||
self:jump()
|
||||
end
|
||||
self.set_velocity(self, self.run_velocity)
|
||||
end
|
||||
else
|
||||
self.set_velocity(self, 0)
|
||||
self.v_start = false
|
||||
if self.timer > 1 then
|
||||
self.timer = 0
|
||||
minetest.sound_play("alien_attack", {object = self.object})
|
||||
self.attack.player:punch(self.object, 1.0, {
|
||||
full_punch_interval=1.0,
|
||||
damage_groups = {fleshy=self.damage}
|
||||
}, vec)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,80 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
thermostat = 100
|
||||
temperature_levels = {}
|
||||
local temperature_timer = 0
|
||||
|
||||
--initializes temperature variable
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
if player then
|
||||
temperature_levels[player:get_player_name()] = 100
|
||||
end
|
||||
end)
|
||||
|
||||
--changes the thermostat setting for the hvac system
|
||||
function set_thermostat(value)
|
||||
thermostat = value
|
||||
end
|
||||
|
||||
--manages temperature changes
|
||||
function update_climate()
|
||||
temperature_timer = temperature_timer + 1
|
||||
if temperature_timer >= 100 then
|
||||
if hvac_on() == false or airlock_closed() == false then
|
||||
freeze_players()
|
||||
else
|
||||
heat_players()
|
||||
end
|
||||
temperature_timer = 0
|
||||
end
|
||||
end
|
||||
|
||||
--attempts to decrease temperature for all players
|
||||
function freeze_players()
|
||||
for name, temperature_level in pairs(temperature_levels) do
|
||||
freeze_player(name)
|
||||
end
|
||||
end
|
||||
|
||||
--attempts to increase temperature for all players
|
||||
function heat_players()
|
||||
for name, temperature_level in pairs(temperature_levels) do
|
||||
heat_player(name)
|
||||
end
|
||||
end
|
||||
|
||||
--attempts to decrease the temperature of the given player
|
||||
function freeze_player(name)
|
||||
if temperature_levels[name] > 0 and minetest.get_player_by_name(name):get_hp() > 0 then
|
||||
temperature_levels[name] = temperature_levels[name] - 1
|
||||
update_temperature_hud(name)
|
||||
else
|
||||
if minetest.get_player_by_name(name):get_hp() > 0 then
|
||||
hurt_player(name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--attempts to increase the temperature of the given player
|
||||
function heat_player(name)
|
||||
if inside_habitat(name) then
|
||||
if temperature_levels[name] < thermostat then
|
||||
temperature_levels[name] = temperature_levels[name] + 1
|
||||
update_temperature_hud(name)
|
||||
else
|
||||
if temperature_levels[name] >= 200 then
|
||||
player:set_hp(0)
|
||||
temperature_levels[name] = 100
|
||||
hunger_levels[name] = 100
|
||||
else
|
||||
freeze_player(name)
|
||||
end
|
||||
end
|
||||
else
|
||||
freeze_player(name)
|
||||
end
|
||||
end
|
|
@ -0,0 +1,75 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
minetest.register_node("moontest:invisible", {
|
||||
name = "invisible",
|
||||
description = "invisible",
|
||||
tiles = {"invisible.png"},
|
||||
drawtype = 'airlike',
|
||||
light_source = 10
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:reactor_collider", {
|
||||
name = "reactor_collider",
|
||||
description = "reactor_collider",
|
||||
tiles = {"invisible.png"},
|
||||
drawtype = 'airlike',
|
||||
light_source = 10
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:gravity_generator_collider", {
|
||||
name = "gravity_generator_collider",
|
||||
description = "gravity_generator_collider",
|
||||
tiles = {"invisible.png"},
|
||||
drawtype = 'airlike',
|
||||
on_receive_fields = function(pos, formname, fields, player)
|
||||
if fields.Intensity then
|
||||
if tonumber(fields.Intensity) then
|
||||
if tonumber(fields.Intensity) > 0 then
|
||||
set_gravity(tonumber(fields.Intensity))
|
||||
add_hud_message(player:get_player_name() .. " set gravity to " .. fields.Intensity)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
light_source = 10
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:drill_collider", {
|
||||
name = "drill_collider",
|
||||
description = "drill_collider",
|
||||
tiles = {"invisible.png"},
|
||||
drawtype = 'airlike',
|
||||
on_receive_fields = function(pos, formname, fields, player)
|
||||
if fields.Speed then
|
||||
if tonumber(fields.Speed) then
|
||||
if tonumber(fields.Speed) > 0 then
|
||||
set_drill_speed(tonumber(fields.Speed))
|
||||
add_hud_message(player:get_player_name() .. " set drill speed to " .. fields.Speed)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
light_source = 10
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:oxygen_generator_collider", {
|
||||
name = "oxygen_generator_collider",
|
||||
description = "oxygen_generator_collider",
|
||||
tiles = {"invisible.png"},
|
||||
drawtype = 'airlike',
|
||||
on_receive_fields = function(pos, formname, fields, player)
|
||||
if fields.Output then
|
||||
if tonumber(fields.Output) then
|
||||
if tonumber(fields.Output) > 0 then
|
||||
set_oxygen_output(tonumber(fields.Output))
|
||||
add_hud_message(player:get_player_name() .. " set oxygen output to " .. fields.Output)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
light_source = 10
|
||||
})
|
|
@ -0,0 +1,90 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
energy_levels = {}
|
||||
sleeping = {}
|
||||
local energy_timer = 0
|
||||
|
||||
--initializes the energy variable
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
if player then
|
||||
energy_levels[player:get_player_name()] = 100
|
||||
end
|
||||
end)
|
||||
|
||||
--manages fatigue and sleeping
|
||||
function update_energy()
|
||||
energy_timer = energy_timer + 1
|
||||
if energy_timer >= 100 then
|
||||
for name, energy_level in pairs(energy_levels) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if energy_levels[name] > 0 and player:get_hp() > 0 then
|
||||
energy_levels[name] = energy_levels[name] - 1
|
||||
update_energy_hud(name)
|
||||
elseif minetest.get_player_by_name(name):get_hp() > 0 then
|
||||
hurt_player(name)
|
||||
end
|
||||
end
|
||||
for name, pos in pairs(sleeping) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if energy_levels[name] ~= nil then
|
||||
if energy_levels[name] <= 90 then
|
||||
energy_levels[name] = energy_levels[name] + 10
|
||||
update_energy_hud(name)
|
||||
end
|
||||
end
|
||||
end
|
||||
energy_timer = 0
|
||||
end
|
||||
|
||||
for name, pos in pairs(sleeping) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if energy_levels[name] ~= nil then
|
||||
if energy_levels[name] <= 90 then
|
||||
player:set_pos(pos)
|
||||
player:set_properties({
|
||||
visual_size = { x = 2, y = 1 },
|
||||
textures = { "player_sleep.png", "player_back_sleep.png" },
|
||||
visual = "sprite",
|
||||
})
|
||||
player:set_eye_offset({x=0,y=-12,z=0},{x=0,y=0,z=0})
|
||||
else
|
||||
sleeping[name] = nil
|
||||
player:set_properties({
|
||||
visual_size = { x = 1, y = 2 },
|
||||
textures = { "player.png", "player_back.png" },
|
||||
visual = "upright_sprite",
|
||||
})
|
||||
player:set_eye_offset({x=0,y=0,z=0},{x=0,y=0,z=0})
|
||||
player:set_pos(vector.new(0, 2, 0))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--puts the player to sleep in the bed at the given position
|
||||
function sleep(player, pos)
|
||||
local sleep_pos = vector.new(pos.x, 1.5, pos.z)
|
||||
sleeping[player:get_player_name()] = sleep_pos
|
||||
end
|
||||
|
||||
--returns true if the player is sleeping
|
||||
function is_sleeping(player)
|
||||
for name, pos in pairs(sleeping) do
|
||||
if name == player then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
--used to display sleeping status on the HUD
|
||||
function sleep_display(name)
|
||||
if is_sleeping(name) then
|
||||
return " (Sleeping)"
|
||||
end
|
||||
return ""
|
||||
end
|
|
@ -0,0 +1,149 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
local text_list = {"\n\nYou are a prospector on a newly discovered moon.\n" ..
|
||||
"Your habitat has been constructed and your mining systems are operational.\n" ..
|
||||
"As a resident engineer, you must manage life support systems and\n" ..
|
||||
"mining equipment to ensure your income is adequate for survival.\n\n" ..
|
||||
"Expenses are deducted from your balance at regular intervals.\n" ..
|
||||
"The amount deducted increases as time goes on, increasing the difficulty of the game.\n\n" ..
|
||||
"You can win the game by earning $30,000 and lose if you reach $10,000 in debt.\n" ..
|
||||
"These limits can be removed with the /unlimited console command.\n" ..
|
||||
"You must be granted server privileges to use this command, (ie: /grantme server)\n",
|
||||
|
||||
"\n\n\n\n This is your nuclear reactor, the power source for your habitat.\n" ..
|
||||
" Left click the reactor to turn it on or off.\n\n If the reactor is overloaded" ..
|
||||
" or you turn it off,\n all of your equipment will have to be manually restarted.",
|
||||
|
||||
"\n\n\n\nThis is your gravity generator. Without it, other machines become unstable.\n" ..
|
||||
"Left click the generator to turn it on or off. Right click to adjust the intensity.\n\n" ..
|
||||
"The gravity gravity generator's power consumption is dependent on the intensity.\n\n" ..
|
||||
"Lower values allow you to divert power elsewhere.\nHigher values provide more stability.\n" ..
|
||||
"Any value over 100 will also cause your machines to become unstable.",
|
||||
|
||||
"\n\n\nThe formula used to calculate gravity's effect on machine stability is below.\n\n" ..
|
||||
"if gravity_on() and generated_gravity > 100 then --intensity is too high\n" ..
|
||||
" stability = 92 - (generated_gravity - 100) --stability is reduced\n" ..
|
||||
"else\n" ..
|
||||
" stability = 8 + (gravity_on() * (generated_gravity - 16)) --stability is increased\n" ..
|
||||
"end\n" ..
|
||||
"if stability > 92 then stability = 92 end --stability limit\n" ..
|
||||
"if math.random(0, 100) > stability then something_fails() end --failures occur",
|
||||
|
||||
"\n\n\n\nThis is your oxygen generator. Without it, you cannot survive. Left click the\n" ..
|
||||
"generator to turn it on or off. Right click the generator to adjust it's output.\n\n" ..
|
||||
"The oxygen generator's power consumption is dependent on it's output.\n\n" ..
|
||||
"Lower values allow you to divert power elsewhere.\nHigher values provide more safety.\n" ..
|
||||
"Extremely high oxygen output settings can be dangerous.",
|
||||
|
||||
"\n\n\n\nThis is your hvac system. Without it, you cannot survive. Left click the\n" ..
|
||||
"box on top to turn it on or off. Right click the box to adjust the thermostat.\n\n" ..
|
||||
"The hvac system's power consumption is dependent on the thermostat setting.\n\n" ..
|
||||
"Lower values allow you to divert power elsewhere.\nHigher values provide more safety.\n" ..
|
||||
"Extremely high thermostat settings can be dangerous.",
|
||||
|
||||
"\n\n\n\nThis is your mining drill, your primary source of passive income.\n" ..
|
||||
"Left click the drill to turn it on or off. Right click to adjust it's speed.\n" ..
|
||||
"The drill's power consumption is dependent on the speed setting.\n\nBe mindful " ..
|
||||
"of your coolant pump speed or you may experience\n" ..
|
||||
"greater fluctuations in power consumption and may overload your reactor.",
|
||||
|
||||
"\n\n\n\n\nThis is your coolant system. This prevents the mining drill from overloading the reactor.\n" ..
|
||||
"Left click the coolant pump to turn it on or off. Right click the pump to adjust it's speed.\n" ..
|
||||
"The coolant system's power consumption is dependent on the pump speed.\n" ..
|
||||
"The speed setting should be set with reference to the drill's speed setting.",
|
||||
|
||||
"\n\n\nThe formula used to calculate the pump's effect on the drill is below.\n\n" ..
|
||||
"resistance = math.random(drill_speed * 2, drill_speed * 3) --the resistance\n" ..
|
||||
"digging = drill_speed + resistance --the amount of ore mined\n" ..
|
||||
"cooling = pump_on() * pump_speed * 3 --cooling provided\n" ..
|
||||
"if cooling > resistance * 0.9 then cooling = resistance * 0.9 --cooling limit\n" ..
|
||||
"drill_power = digging - cooling --the power consumption of the drill\n" ..
|
||||
"money = money + digging --the amount of money earned from the ore",
|
||||
|
||||
"\n\n\n\nThis is your space food vending machine. Without it, you cannot survive.\n" ..
|
||||
"Restocking fees are a part of your regular expenses. Left click to buy food.\n" ..
|
||||
"Left click with the food in your hand to eat it. Space food replenishes your\n" ..
|
||||
"hunger if you are hungry and heals you if you are full.",
|
||||
|
||||
"\n\n\n\nThese are your sleeping quarters. Without sleep, you will eventually die.\n" ..
|
||||
"Keep an eye on your energy level and when you need to sleep, left click the\n" ..
|
||||
"middle of the bottom bunk on one of the bunk beds. You will sleep until your\n" ..
|
||||
"energy is full then you will be moved to the lobby of the space habitat.",
|
||||
|
||||
"\n\n\n\nThis is your research station. Here, you can conduct research on organic matter\n" ..
|
||||
"'harvested' on the moon's surface. Organic matter is worth $10 each early in the game.\n" ..
|
||||
"This value increase each time you process research data. The limit is $50.\n" ..
|
||||
"To conduct research, left click the research station while holding the organic matter."
|
||||
}
|
||||
local index = 1
|
||||
local text = text_list[1]
|
||||
local image = "readme__" .. index .. ".png"
|
||||
|
||||
--defines the inventory formspec
|
||||
local function inventory_formspec(player)
|
||||
local formspec = {
|
||||
"size[8,7.5]",
|
||||
"bgcolor[#252525;false]",
|
||||
"list[current_player;main;0,3.5;8,4;]",
|
||||
"button[3,0.9;2,0.5;Help;Help]"
|
||||
}
|
||||
return formspec
|
||||
end
|
||||
|
||||
--defines the help formspec
|
||||
local function help_formspec(player)
|
||||
local formspec = {
|
||||
"size[30,22]",
|
||||
"bgcolor[#252525;false]",
|
||||
"image[5.5,0.5;24,13.5;"..image.."]",
|
||||
"label[9,12;"..text.."]",
|
||||
"button[12,18;3,0.75;<-;<-]",
|
||||
"button[16,18;3,0.75;->;->]",
|
||||
"button[14,20;3,0.75;Inventory;Inventory]"
|
||||
}
|
||||
return formspec
|
||||
end
|
||||
|
||||
--sets the inventory formspec
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local formspec = inventory_formspec(player)
|
||||
player:set_inventory_formspec(table.concat(formspec, ""))
|
||||
end)
|
||||
|
||||
--handles clicked buttons
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname ~= "" then return end
|
||||
for key, val in pairs(fields) do
|
||||
if key == "Help" then
|
||||
local formspec = help_formspec(player)
|
||||
player:set_inventory_formspec(table.concat(formspec, ""))
|
||||
elseif key == "Inventory" then
|
||||
local formspec = inventory_formspec(player)
|
||||
player:set_inventory_formspec(table.concat(formspec, ""))
|
||||
elseif key == "->" then
|
||||
if index < 12 then
|
||||
index = index + 1
|
||||
else
|
||||
index = 1
|
||||
end
|
||||
text = text_list[index]
|
||||
image = "readme__" .. index .. ".png"
|
||||
local formspec = help_formspec(player)
|
||||
player:set_inventory_formspec(table.concat(formspec, ""))
|
||||
elseif key == "<-" then
|
||||
if index > 1 then
|
||||
index = index - 1
|
||||
else
|
||||
index = 12
|
||||
end
|
||||
text = text_list[index]
|
||||
image = "readme__" .. index .. ".png"
|
||||
local formspec = help_formspec(player)
|
||||
player:set_inventory_formspec(table.concat(formspec, ""))
|
||||
end
|
||||
end
|
||||
end)
|
|
@ -0,0 +1,185 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "structure.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "rooms.lua")
|
||||
|
||||
habitat_built = false
|
||||
pump_pos = vector.new(-4, 1, -20)
|
||||
oxygen_generator_pos = vector.new(11, 1, -20)
|
||||
reactor_pos = vector.new(0, 1, -14)
|
||||
drill_pos = vector.new(0, 1, 35)
|
||||
hvac_pos = vector.new(4, 3, -20)
|
||||
gravity_generator_pos = vector.new(16, 1, 0)
|
||||
food_vending_top_pos = vector.new(24, 2, -20)
|
||||
food_vending_bottom_pos = vector.new(24, 1, -20)
|
||||
airlock_controller_pos = vector.new(4, 2, 25)
|
||||
airlock_pos = vector.new(0, 2, 25)
|
||||
research_station_pos = vector.new(9,1,0)
|
||||
|
||||
--builds the habitat, called 10 seconds after the world is created
|
||||
function build_habitat()
|
||||
build_wall_one()
|
||||
build_wall_two()
|
||||
build_wall_three()
|
||||
build_wall_four()
|
||||
build_floor()
|
||||
build_roof()
|
||||
build_ducts()
|
||||
build_lights()
|
||||
build_sleeping_room()
|
||||
build_break_room()
|
||||
build_gravity_room()
|
||||
build_bathroom()
|
||||
build_garage()
|
||||
build_consoles()
|
||||
build_reactor()
|
||||
build_oxygen_generator()
|
||||
build_gravity_generator()
|
||||
build_hvac()
|
||||
build_drill()
|
||||
build_coolant_system()
|
||||
build_research_station()
|
||||
end
|
||||
|
||||
--creates the drill mesh, colliders and GUI
|
||||
function build_drill()
|
||||
for y = 1, 10 do
|
||||
for x = -2,2,1 do
|
||||
for z = 33,37,1 do
|
||||
minetest.set_node(vector.new(x, y, z), {name = "moontest:drill_collider"})
|
||||
minetest.get_meta(vector.new(x, y, z)):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;Mining Drill]"..
|
||||
"field[1.8,3;2,1;Speed;Speed;]")
|
||||
end
|
||||
end
|
||||
end
|
||||
for x = -3,-5,-1 do
|
||||
for z = 35,38,1 do
|
||||
minetest.set_node(vector.new(x, 2, z), {name = "moontest:drill_collider"})
|
||||
minetest.get_meta(vector.new(x, 2, z)):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;Mining Drill]"..
|
||||
"field[1.8,3;2,1;Speed;Speed;]")
|
||||
end
|
||||
end
|
||||
for y = 1,4,1 do
|
||||
for z = 38,41,1 do
|
||||
minetest.set_node(vector.new(0, y, z), {name = "moontest:drill_collider"})
|
||||
minetest.get_meta(vector.new(0, y, z)):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;Mining Drill]"..
|
||||
"field[1.8,3;2,1;Speed;Speed;]")
|
||||
end
|
||||
end
|
||||
minetest.set_node(drill_pos, {name = "moontest:drill_on"})
|
||||
end
|
||||
|
||||
--creates the coolant pump mesh, pipes, coolant tank, colliders and GUI
|
||||
function build_coolant_system()
|
||||
minetest.set_node(vector.new(-4, 2, -20), {name = "moontest:coolant_pipe_pump"})
|
||||
for y = 3,5,1 do
|
||||
minetest.set_node(vector.new(-4, y, -20), {name = "moontest:coolant_pipe_single_vertical_2"})
|
||||
end
|
||||
minetest.set_node(vector.new(-4, 6, -20), {name = "moontest:coolant_pipe_bend_1"})
|
||||
for z = -19,24,1 do
|
||||
minetest.set_node(vector.new(-4, 6, z), {name = "moontest:coolant_pipe_horizontal"})
|
||||
end
|
||||
for z = 26,36,1 do
|
||||
minetest.set_node(vector.new(-4, 6, z), {name = "moontest:coolant_pipe_horizontal"})
|
||||
end
|
||||
minetest.set_node(vector.new(-4, 6, 37), {name = "moontest:coolant_pipe_bend_2"})
|
||||
for y = 5,1,-1 do
|
||||
minetest.set_node(vector.new(-4, y, 37), {name = "moontest:coolant_pipe_vertical_2"})
|
||||
end
|
||||
for x = -5,-9,-1 do
|
||||
minetest.set_node(vector.new(x, 6, -20), {name = "moontest:coolant_pipe_single_horizontal_1"})
|
||||
end
|
||||
for x = -5,-9,-1 do
|
||||
minetest.set_node(vector.new(x, 2, -20), {name = "moontest:coolant_pipe_single_horizontal_2"})
|
||||
end
|
||||
minetest.set_node(vector.new(-10, 6, -20), {name = "moontest:coolant_pipe_single_bend_1"})
|
||||
for y = 5,2,-1 do
|
||||
minetest.set_node(vector.new(-10, y, -20), {name = "moontest:coolant_pipe_single_vertical_1"})
|
||||
end
|
||||
minetest.set_node(vector.new(-10, 1, -20), {name = "moontest:coolant_tank"})
|
||||
minetest.set_node(vector.new(-11, 1, -20), {name = "moontest:invisible"})
|
||||
minetest.set_node(pump_pos, {name = "moontest:pump_on"})
|
||||
minetest.get_meta(pump_pos):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;Coolant Pump]"..
|
||||
"field[1.8,3;2,1;Speed;Speed;]")
|
||||
end
|
||||
|
||||
--creates the hvac system mesh, colliders and GUI
|
||||
function build_hvac()
|
||||
minetest.set_node(vector.new(4, 1, -20), {name = "moontest:hvac_prop"})
|
||||
for z = -18,-22,-1 do
|
||||
for x = 3,5,1 do
|
||||
for y = 1,2,1 do
|
||||
if not (z == -20 and x == 4) then
|
||||
minetest.set_node(vector.new(x, y, z), {name = "moontest:invisible"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.set_node(hvac_pos, {name = "moontest:hvac_on"})
|
||||
minetest.get_meta(hvac_pos):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;HVAC System]"..
|
||||
"field[1.8,3;2,1;Thermostat;Thermostat;]")
|
||||
end
|
||||
|
||||
--creates the oxygen generator mesh, colliders and GUI
|
||||
function build_oxygen_generator()
|
||||
for x = 10,12,1 do
|
||||
for z = -19,-21,-1 do
|
||||
for y = 1,2,1 do
|
||||
minetest.set_node(vector.new(x, y, z), {name = "moontest:oxygen_generator_collider"})
|
||||
minetest.get_meta(vector.new(x, y, z)):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;Oxygen Generator]"..
|
||||
"field[1.8,3;2,1;Output;Output;]")
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.set_node(oxygen_generator_pos, {name = "moontest:oxygen_generator_on"})
|
||||
end
|
||||
|
||||
--creates the gravity generator mesh and colliders
|
||||
function build_gravity_generator()
|
||||
for x = 15,17,1 do
|
||||
for z = -1,1,1 do
|
||||
for y = 1,5 do
|
||||
minetest.set_node(vector.new(x, y, z), {name = "moontest:gravity_generator_collider"})
|
||||
minetest.get_meta(vector.new(x, y, z)):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;Gravity Generator]"..
|
||||
"field[1.8,3;2,1;Intensity;Intensity;]")
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.set_node(gravity_generator_pos, {name = "moontest:gravity_generator_on"})
|
||||
end
|
||||
|
||||
--creates the reactor mesh and colliders
|
||||
function build_reactor()
|
||||
for x = -1,1,1 do
|
||||
for z = -13,-15,-1 do
|
||||
for y = 1,3,1 do
|
||||
minetest.set_node(vector.new(x, y, z), {name = "moontest:reactor_collider"})
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.set_node(reactor_pos, {name = "moontest:reactor_on"})
|
||||
end
|
||||
|
||||
--creates the research station mesh and interactive node for the panel
|
||||
function build_research_station()
|
||||
minetest.set_node(research_station_pos, {name = "moontest:research_station"})
|
||||
minetest.set_node(vector.new(9,2,0), {name = "moontest:research_panel"})
|
||||
end
|
|
@ -0,0 +1,541 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
local messages = ""
|
||||
local message_count = 0
|
||||
local shared_hud_timer = 0
|
||||
local message_list = {}
|
||||
hud_bg_ids = {}
|
||||
game_over_hud_ids = {}
|
||||
money_hud_ids = {}
|
||||
hunger_hud_ids = {}
|
||||
energy_hud_ids = {}
|
||||
oxygen_hud_ids = {}
|
||||
temperature_hud_ids = {}
|
||||
airlock_hud_ids = {}
|
||||
gravity_hud_ids = {}
|
||||
thermostat_hud_ids = {}
|
||||
oxygen_output_hud_ids = {}
|
||||
power_hud_ids = {}
|
||||
drill_hud_ids = {}
|
||||
coolant_hud_ids = {}
|
||||
message_bg_hud_ids = {}
|
||||
message_hud_ids = {}
|
||||
|
||||
--initializes all of the HUD elements
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
if player then
|
||||
hud_bg_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 163, y = 430},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "hud_bg_transparent.png"
|
||||
})
|
||||
oxygen_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 250},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Oxygen: " .. oxygen_levels[player:get_player_name()],
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
hunger_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 280},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Hunger: " .. hunger_levels[player:get_player_name()],
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
temperature_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 310},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Temperature: " .. temperature_levels[player:get_player_name()],
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
energy_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 340},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Energy: " .. energy_levels[player:get_player_name()] .. sleep_display(player:get_player_name()),
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
airlock_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 400},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Airlock: " .. bool_to_open_closed(airlock_closed()),
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
gravity_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 430},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Gravity generator: " .. bool_to_on_off(gravity_on()) .. "; Intensity: " .. generated_gravity,
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
thermostat_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 460},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "HVAC: " .. bool_to_on_off(hvac_on()) .. "; Thermostat: " .. thermostat,
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
oxygen_output_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 490},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Oxygen generator: " .. bool_to_on_off(oxygen_on()) .. "; Output: " .. oxygen_output,
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
drill_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 520},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Drill: " .. bool_to_on_off(drill_on()) .. "; Speed: " .. drill_speed,
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
coolant_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 550},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Coolant pump: " .. bool_to_on_off(pump_on()) .. "; Speed: " .. pump_speed,
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
power_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 580},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Power consumption: " .. power_consumption() .. "/1000",
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
money_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 610},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Money: $" .. money,
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
game_over_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0.5, y = 0.5},
|
||||
offset = {x = 0, y = 0},
|
||||
scale = {x = 1.5, y = 1.5},
|
||||
text = ""
|
||||
})
|
||||
message_bg_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x = 1, y = 0.38},
|
||||
offset = {x = -210, y = 0},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "message_background_transparent.png"
|
||||
})
|
||||
message_hud_ids[player:get_player_name()] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 1, y = 0.4},
|
||||
offset = {x = -210, y = 0},
|
||||
scale = {x = 1, y = 1},
|
||||
text = messages,
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
end
|
||||
end)
|
||||
|
||||
--updates HUD info that is shared among all players
|
||||
function update_shared_hud()
|
||||
shared_hud_timer = shared_hud_timer + 1
|
||||
if shared_hud_timer >= 10 then
|
||||
update_airlock_hud()
|
||||
update_gravity_hud()
|
||||
update_oxygen_output_hud()
|
||||
update_thermostat_hud()
|
||||
update_drill_hud()
|
||||
update_coolant_hud()
|
||||
update_money_hud()
|
||||
update_game_over_hud()
|
||||
update_message_hud()
|
||||
shared_hud_timer = 0
|
||||
end
|
||||
end
|
||||
|
||||
--updates the oxygen variable on the HUD
|
||||
function update_oxygen_hud(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(oxygen_hud_ids[name])
|
||||
local display = "Oxygen: " .. oxygen_levels[name]
|
||||
local color = 0xFFFFFF
|
||||
if oxygen_levels[name] == 0 then
|
||||
display = display .. " (SUFFOCATING)"
|
||||
color = 0xFF0000
|
||||
elseif oxygen_levels[name] >= 200 then
|
||||
display = display .. " (POISONED)"
|
||||
end
|
||||
oxygen_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 250},
|
||||
scale = {x = 1, y = 1},
|
||||
text = display,
|
||||
number = color
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
--updates hunger variable on the HUD
|
||||
function update_hunger_hud(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(hunger_hud_ids[name])
|
||||
local display = "Hunger: " .. hunger_levels[name]
|
||||
local color = 0xFFFFFF
|
||||
if hunger_levels[name] == 0 then
|
||||
display = display .. " (STARVING)"
|
||||
color = 0xFF0000
|
||||
end
|
||||
hunger_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 280},
|
||||
scale = {x = 1, y = 1},
|
||||
text = display,
|
||||
number = color
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
--updates temperature variable on the HUD
|
||||
function update_temperature_hud(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(temperature_hud_ids[name])
|
||||
local display = "Temperature: " .. temperature_levels[name]
|
||||
local color = 0xFFFFFF
|
||||
if temperature_levels[name] == 0 then
|
||||
display = display .. " (FREEZING)"
|
||||
color = 0xFF0000
|
||||
elseif temperature_levels[name] >= 200 then
|
||||
display = display .. " (OVERHEATED)"
|
||||
color = 0xFF0000
|
||||
end
|
||||
temperature_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 310},
|
||||
scale = {x = 1, y = 1},
|
||||
text = display,
|
||||
number = color
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
--updates energy variable on the HUD
|
||||
function update_energy_hud(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(energy_hud_ids[name])
|
||||
local display = "Energy: " .. energy_levels[name]
|
||||
local color = 0xFFFFFF
|
||||
if energy_levels[name] == 0 then
|
||||
display = display .. " (EXHAUSTED)"
|
||||
color = 0xFF0000
|
||||
else
|
||||
display = display .. sleep_display(player:get_player_name())
|
||||
end
|
||||
energy_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 340},
|
||||
scale = {x = 1, y = 1},
|
||||
text = display,
|
||||
number = color
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
--updates airlock status on the HUD for all players
|
||||
function update_airlock_hud()
|
||||
for name, id in pairs(thermostat_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(airlock_hud_ids[name])
|
||||
local display = "Airlock: " .. bool_to_open_closed(airlock_closed())
|
||||
local color = 0xFFFFFF
|
||||
if airlock_failed then
|
||||
display = "Airlock: (FAILED)"
|
||||
color = 0xFF0000
|
||||
end
|
||||
airlock_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 400},
|
||||
scale = {x = 1, y = 1},
|
||||
text = display,
|
||||
number = color
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--updates gravity status on the HUD for all players
|
||||
function update_gravity_hud()
|
||||
for name, id in pairs(gravity_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(gravity_hud_ids[name])
|
||||
local display = "Gravity generator: " .. bool_to_on_off(gravity_on()) .. "; Intensity: " .. generated_gravity
|
||||
local color = 0xFFFFFF
|
||||
if gravity_failed then
|
||||
display = "Gravity generator: (FAILED)"
|
||||
color = 0xFF0000
|
||||
elseif gravity_on() == false then
|
||||
color = 0xFFFF00
|
||||
end
|
||||
gravity_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 430},
|
||||
scale = {x = 1, y = 1},
|
||||
text = display,
|
||||
number = color
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--updates hvac status on the HUD for all players
|
||||
function update_thermostat_hud()
|
||||
for name, id in pairs(thermostat_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(thermostat_hud_ids[name])
|
||||
local display = "HVAC: " .. bool_to_on_off(hvac_on()) .. "; Thermostat: " .. thermostat
|
||||
local color = 0xFFFFFF
|
||||
if hvac_failed then
|
||||
display = "HVAC: (FAILED)"
|
||||
color = 0xFF0000
|
||||
elseif hvac_on() == false then
|
||||
color = 0xFFFF00
|
||||
end
|
||||
thermostat_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 460},
|
||||
scale = {x = 1, y = 1},
|
||||
text = display,
|
||||
number = color
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--updates oxygen generator status on the HUD for all players
|
||||
function update_oxygen_output_hud()
|
||||
for name, id in pairs(oxygen_output_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(oxygen_output_hud_ids[name])
|
||||
local display = "Oxygen generator: " .. bool_to_on_off(oxygen_on()) .. "; Output: " .. oxygen_output
|
||||
local color = 0xFFFFFF
|
||||
if oxygen_failed then
|
||||
display = "Oxygen generator: (FAILED)"
|
||||
color = 0xFF0000
|
||||
elseif oxygen_on() == false then
|
||||
color = 0xFFFF00
|
||||
end
|
||||
oxygen_output_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 490},
|
||||
scale = {x = 1, y = 1},
|
||||
text = display,
|
||||
number = color
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--updates drill information on the HUD for all players
|
||||
function update_drill_hud()
|
||||
for name, id in pairs(drill_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(drill_hud_ids[name])
|
||||
local display = "Drill: " .. bool_to_on_off(drill_on()) .. "; Speed: " .. drill_speed
|
||||
local color = 0xFFFFFF
|
||||
if drill_failed then
|
||||
display = "Drill: (FAILED)"
|
||||
color = 0xFF0000
|
||||
elseif drill_on() == false then
|
||||
color = 0xFFFF00
|
||||
end
|
||||
drill_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 520},
|
||||
scale = {x = 1, y = 1},
|
||||
text = display,
|
||||
number = color
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--updates coolant system status on the HUD for all players
|
||||
function update_coolant_hud()
|
||||
for name, id in pairs(coolant_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(coolant_hud_ids[name])
|
||||
local display = "Coolant pump: " .. bool_to_on_off(pump_on()) .. "; Speed: " .. pump_speed
|
||||
local color = 0xFFFFFF
|
||||
if pump_failed then
|
||||
display = "Coolant pump: (FAILED)"
|
||||
color = 0xFF0000
|
||||
elseif pump_on() == false then
|
||||
color = 0xFFFF00
|
||||
end
|
||||
coolant_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 550},
|
||||
scale = {x = 1, y = 1},
|
||||
text = display,
|
||||
number = color
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--updates power consumption on the HUD for all players
|
||||
function update_power_hud()
|
||||
for name, id in pairs(money_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(power_hud_ids[name])
|
||||
power_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 580},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Power consumption: " .. power_consumption() .. "/1000",
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--updates money info on the HUD for all players
|
||||
function update_money_hud()
|
||||
for name, id in pairs(money_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(money_hud_ids[name])
|
||||
money_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0, y = 0},
|
||||
offset = {x = 150, y = 610},
|
||||
scale = {x = 1, y = 1},
|
||||
text = "Money: $" .. money,
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--updates money info on the HUD for all players
|
||||
function update_message_hud()
|
||||
for name, id in pairs(message_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if player then
|
||||
player:hud_remove(message_hud_ids[name])
|
||||
message_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 1, y = 0.4},
|
||||
offset = {x = -210, y = 0},
|
||||
scale = {x = 1, y = 1},
|
||||
text = messages,
|
||||
number = 0xFFFFFF
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--displays game over message for all players
|
||||
function update_game_over_hud()
|
||||
if game_over == true and success == true then
|
||||
for name, id in pairs(game_over_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
player:hud_remove(game_over_hud_ids[name])
|
||||
game_over_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x = 0.5, y = 0.5},
|
||||
offset = {x = 0, y = 0},
|
||||
scale = {x = 1.5, y = 1.5},
|
||||
text = "success.png"
|
||||
})
|
||||
end
|
||||
elseif game_over == true and success == false then
|
||||
for name, id in pairs(game_over_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
player:hud_remove(game_over_hud_ids[name])
|
||||
game_over_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "image",
|
||||
position = {x = 0.5, y = 0.5},
|
||||
offset = {x = 0, y = 0},
|
||||
scale = {x = 1.5, y = 1.5},
|
||||
text = "failure.png"
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--removes game over message for all players
|
||||
function reset_game_over_hud()
|
||||
for name, id in pairs(game_over_hud_ids) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
player:hud_remove(game_over_hud_ids[name])
|
||||
game_over_hud_ids[name] = player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
position = {x = 0.5, y = 0.5},
|
||||
offset = {x = 0, y = 0},
|
||||
scale = {x = 1.5, y = 1.5},
|
||||
text = ""
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
--adds a message to the HUD
|
||||
function add_hud_message(message)
|
||||
table.insert(message_list, message)
|
||||
message_count = message_count + 1
|
||||
if message_count >= 16 then
|
||||
messages = ""
|
||||
for index, msg in pairs(message_list) do
|
||||
if index == 1 then
|
||||
table.remove(message_list, 1)
|
||||
message_count = message_count - 1
|
||||
else
|
||||
messages = messages .. msg .. "\n"
|
||||
end
|
||||
end
|
||||
else
|
||||
messages = messages .. message .. "\n"
|
||||
end
|
||||
update_message_hud()
|
||||
end
|
|
@ -0,0 +1,87 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
hunger_levels = {}
|
||||
local hunger_timer = 0
|
||||
|
||||
--initializes the hunger variable
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
if player then
|
||||
hunger_levels[player:get_player_name()] = 100
|
||||
end
|
||||
end)
|
||||
|
||||
--defines the space food item and on_use function
|
||||
minetest.register_craftitem("moontest:space_food", {
|
||||
description = "Freeze dried food paste.",
|
||||
inventory_image = "space_food.png",
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
local name = user:get_player_name()
|
||||
if is_sleeping(name) == false then
|
||||
if hunger_levels[name] <= 99 and itemstack:take_item() ~= nil then
|
||||
local hunger = 100 - hunger_levels[name]
|
||||
if hunger <= 10 then
|
||||
hunger_levels[name] = hunger_levels[name] + hunger
|
||||
else
|
||||
hunger_levels[name] = hunger_levels[name] + 10
|
||||
end
|
||||
minetest.sound_play('eat', {
|
||||
pos = user:get_pos(),
|
||||
max_hear_distance = 16,
|
||||
gain = 0.5
|
||||
})
|
||||
update_hunger_hud(name)
|
||||
return itemstack
|
||||
elseif user:get_hp() <= 99 and itemstack:take_item() ~= nil then
|
||||
local health = 100 - user:get_hp()
|
||||
if health <= 10 then
|
||||
user:set_hp(user:get_hp() + health)
|
||||
else
|
||||
user:set_hp(user:get_hp() + 10)
|
||||
end
|
||||
minetest.sound_play('eat', {
|
||||
pos = user:get_pos(),
|
||||
max_hear_distance = 16,
|
||||
gain = 0.5
|
||||
})
|
||||
update_hunger_hud(name)
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
--manages hunger for all players
|
||||
function update_hunger()
|
||||
hunger_timer = hunger_timer + 1
|
||||
if hunger_timer >= 100 then
|
||||
for name, hunger_level in pairs(hunger_levels) do
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if hunger_levels[name] > 0 and player:get_hp() > 0 then
|
||||
hunger_levels[name] = hunger_levels[name] - 1
|
||||
update_hunger_hud(name)
|
||||
else
|
||||
if minetest.get_player_by_name(name):get_hp() > 0 then
|
||||
hurt_player(name)
|
||||
end
|
||||
end
|
||||
end
|
||||
hunger_timer = 0
|
||||
end
|
||||
end
|
||||
|
||||
--called when the player left clicks the space food vending machine
|
||||
function buy_space_food(buyer)
|
||||
local item = ItemStack("moontest:space_food")
|
||||
buyer:get_inventory():add_item("main", item)
|
||||
money = money - 10
|
||||
minetest.sound_play('vending', {
|
||||
pos = food_vending_bottom_pos,
|
||||
max_hear_distance = 16,
|
||||
gain = 0.5
|
||||
})
|
||||
add_hud_message(buyer:get_player_name() .. " bought space food.")
|
||||
end
|
|
@ -0,0 +1,116 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
--handles all interactions based on left clicking static objects in the world
|
||||
minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing)
|
||||
|
||||
if node.name == "moontest:food_vending_top" or node.name == "moontest:food_vending_bottom" then
|
||||
if money >= 10 and power_on() then
|
||||
buy_space_food(puncher)
|
||||
end
|
||||
end
|
||||
|
||||
if node.name == "moontest:reactor_collider" and power_on() then
|
||||
reactor_stop()
|
||||
elseif node.name == "moontest:reactor_collider" and power_on() == false then
|
||||
reactor_start()
|
||||
end
|
||||
|
||||
if node.name == "moontest:drill_collider" and drill_on() then
|
||||
minetest.set_node(drill_pos, {name = "moontest:drill_off"})
|
||||
add_hud_message("Drill: off")
|
||||
elseif node.name == "moontest:drill_collider" and drill_on() == false and power_on() == true then
|
||||
minetest.set_node(drill_pos, {name = "moontest:drill_on"})
|
||||
add_hud_message("Drill: on")
|
||||
end
|
||||
|
||||
if node.name == "moontest:hvac_on" then
|
||||
minetest.sound_play('hvac_off', {
|
||||
pos = hvac_pos,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
minetest.set_node(pos, {name = "moontest:hvac_off"})
|
||||
add_hud_message("HVAC: off")
|
||||
minetest.get_meta(hvac_pos):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;HVAC System]"..
|
||||
"field[1.8,3;2,1;Thermostat;Thermostat;]")
|
||||
end
|
||||
|
||||
if node.name == "moontest:hvac_off" and power_on() then
|
||||
minetest.sound_play('hvac_on', {
|
||||
pos = hvac_pos,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
minetest.set_node(pos, {name = "moontest:hvac_on"})
|
||||
add_hud_message("HVAC: on")
|
||||
minetest.get_meta(hvac_pos):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;HVAC System]"..
|
||||
"field[1.8,3;2,1;Thermostat;Thermostat;]")
|
||||
end
|
||||
|
||||
if node.name == "moontest:oxygen_generator_collider" and oxygen_on() then
|
||||
minetest.sound_play('oxygen_start_stop', {
|
||||
pos = oxygen_generator_pos,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
minetest.set_node(oxygen_generator_pos, {name = "moontest:oxygen_generator_off"})
|
||||
add_hud_message("Oxygen generator: off")
|
||||
elseif node.name == "moontest:oxygen_generator_collider" and oxygen_on() == false and power_on() then
|
||||
minetest.sound_play('oxygen_start_stop', {
|
||||
pos = oxygen_generator_pos,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
minetest.set_node(oxygen_generator_pos, {name = "moontest:oxygen_generator_on"})
|
||||
add_hud_message("Oxygen generator: on")
|
||||
end
|
||||
|
||||
if node.name == "moontest:gravity_generator_collider" and gravity_on() then
|
||||
minetest.set_node(gravity_generator_pos, {name = "moontest:gravity_generator_off"})
|
||||
add_hud_message("Gravity generator: off")
|
||||
elseif node.name == "moontest:gravity_generator_collider" and gravity_on() == false and power_on() then
|
||||
minetest.set_node(gravity_generator_pos, {name = "moontest:gravity_generator_on"})
|
||||
add_hud_message("Gravity generator: on")
|
||||
end
|
||||
|
||||
if node.name == "moontest:pump_on" then
|
||||
minetest.set_node(pos, {name = "moontest:pump_off"})
|
||||
add_hud_message("Coolant pump: off")
|
||||
minetest.get_meta(pump_pos):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;Coolant Pump]"..
|
||||
"field[1.8,3;2,1;Speed;Speed;]")
|
||||
end
|
||||
|
||||
if node.name == "moontest:pump_off" and power_on() then
|
||||
minetest.set_node(pos, {name = "moontest:pump_on"})
|
||||
add_hud_message("Coolant pump: on")
|
||||
minetest.get_meta(pump_pos):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;Coolant Pump]"..
|
||||
"field[1.8,3;2,1;Speed;Speed;]")
|
||||
end
|
||||
|
||||
if node.name == "moontest:bunkbed" then
|
||||
sleep(puncher, pos)
|
||||
end
|
||||
|
||||
if node.name == "moontest:airlock_controller_on" then
|
||||
if airlock_closed() then
|
||||
open_airlock()
|
||||
add_hud_message("Airlock: open")
|
||||
else
|
||||
close_airlock()
|
||||
add_hud_message("Airlock: closed")
|
||||
end
|
||||
end
|
||||
|
||||
if node.name == "moontest:airlock_controller_off" and power_on() then
|
||||
minetest.set_node(airlock_controller_pos, {name = "moontest:airlock_controller_on"})
|
||||
airlock_failed = false
|
||||
end
|
||||
end)
|
|
@ -0,0 +1,159 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
--all machine nodes are registered here
|
||||
|
||||
minetest.register_node("moontest:drill_on", {
|
||||
name = "drill_on",
|
||||
description = "drill_on",
|
||||
tiles = {"drill_on.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "drill.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:drill_off", {
|
||||
name = "drill_off",
|
||||
description = "drill_off",
|
||||
tiles = {"drill_off.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "drill.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:reactor_on", {
|
||||
name = "reactor_on",
|
||||
description = "reactor_on",
|
||||
tiles = {"reactor_on.png"},
|
||||
use_texture_alpha = "clip",
|
||||
drawtype = 'mesh',
|
||||
mesh = "reactor.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:reactor_off", {
|
||||
name = "reactor_off",
|
||||
description = "reactor_off",
|
||||
tiles = {"reactor_off.png"},
|
||||
use_texture_alpha = "clip",
|
||||
drawtype = 'mesh',
|
||||
mesh = "reactor.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:oxygen_generator_on", {
|
||||
name = "oxygen_generator_on",
|
||||
description = "oxygen_generator_on",
|
||||
tiles = {"oxygen_generator_on.png"},
|
||||
use_texture_alpha = "clip",
|
||||
drawtype = 'mesh',
|
||||
mesh = "oxygen_generator.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:oxygen_generator_off", {
|
||||
name = "oxygen_generator_off",
|
||||
description = "oxygen_generator_off",
|
||||
tiles = {"oxygen_generator_off.png"},
|
||||
use_texture_alpha = "clip",
|
||||
drawtype = 'mesh',
|
||||
mesh = "oxygen_generator.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:gravity_generator_on", {
|
||||
name = "gravity_generator_on",
|
||||
description = "gravity_generator_on",
|
||||
tiles = {"gravity_generator_on.png"},
|
||||
use_texture_alpha = "clip",
|
||||
drawtype = 'mesh',
|
||||
mesh = "gravity_generator.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:gravity_generator_off", {
|
||||
name = "gravity_generator_off",
|
||||
description = "gravity_generator_off",
|
||||
tiles = {"gravity_generator_off.png"},
|
||||
use_texture_alpha = "clip",
|
||||
drawtype = 'mesh',
|
||||
mesh = "gravity_generator.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:pump_on", {
|
||||
name = "pump_on",
|
||||
description = "pump_on",
|
||||
tiles = {"pump_on.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "pump.obj",
|
||||
on_receive_fields = function(pos, formname, fields, player)
|
||||
if fields.Speed then
|
||||
if tonumber(fields.Speed) then
|
||||
if tonumber(fields.Speed) > 0 then
|
||||
set_pump_speed(tonumber(fields.Speed))
|
||||
add_hud_message(player:get_player_name() .. " set coolant pump speed to " .. fields.Speed)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:pump_off", {
|
||||
name = "pump_off",
|
||||
description = "pump_off",
|
||||
tiles = {"pump_off.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "pump.obj",
|
||||
on_receive_fields = function(pos, formname, fields, player)
|
||||
if fields.Speed then
|
||||
if tonumber(fields.Speed) then
|
||||
if tonumber(fields.Speed) > 0 then
|
||||
set_pump_speed(tonumber(fields.Speed))
|
||||
add_hud_message(player:get_player_name() .. " set coolant pump speed to " .. fields.Speed)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:hvac_on", {
|
||||
name = "hvac_on",
|
||||
description = "hvac_on",
|
||||
tiles = {
|
||||
"hvac_on.png",
|
||||
"hvac_on.png",
|
||||
"hvac_on.png",
|
||||
"hvac_on.png",
|
||||
"hvac_on.png",
|
||||
"vent.png"
|
||||
},
|
||||
on_receive_fields = function(pos, formname, fields, player)
|
||||
if fields.Thermostat then
|
||||
if tonumber(fields.Thermostat) then
|
||||
if tonumber(fields.Thermostat) > 0 then
|
||||
set_thermostat(tonumber(fields.Thermostat))
|
||||
add_hud_message(player:get_player_name() .. " set thermostat to " .. fields.Thermostat)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:hvac_off", {
|
||||
name = "hvac_off",
|
||||
description = "hvac_off",
|
||||
tiles = {
|
||||
"hvac_off.png",
|
||||
"hvac_off.png",
|
||||
"hvac_off.png",
|
||||
"hvac_off.png",
|
||||
"hvac_off.png",
|
||||
"vent.png"
|
||||
},
|
||||
on_receive_fields = function(pos, formname, fields, player)
|
||||
if fields.Thermostat then
|
||||
if tonumber(fields.Thermostat) then
|
||||
if tonumber(fields.Thermostat) > 0 then
|
||||
set_thermostat(tonumber(fields.Thermostat))
|
||||
add_hud_message(player:get_player_name() .. " set thermostat to " .. fields.Thermostat)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
|
@ -0,0 +1,349 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
generated_gravity = 100
|
||||
drill_speed = 100
|
||||
pump_speed = 100
|
||||
local drill_mining_timer = 0
|
||||
local drill_power_timer = 0
|
||||
local drill_power = 0
|
||||
local hvac_sound
|
||||
local reactor_sound
|
||||
local oxygen_sound
|
||||
local gravity_sound
|
||||
local drill_sound
|
||||
local pump_sound
|
||||
local hvac_sound_playing = false
|
||||
local reactor_sound_playing = false
|
||||
local oxygen_sound_playing = false
|
||||
local gravity_sound_playing = false
|
||||
local drill_sound_playing = false
|
||||
local pump_sound_playing = false
|
||||
|
||||
--returns the total power consumption of the habitat
|
||||
function power_consumption()
|
||||
local drill_load = bool_to_number(drill_on()) * drill_power
|
||||
local hvac_load = bool_to_number(hvac_on()) * thermostat
|
||||
local oxygen_load = bool_to_number(oxygen_on()) * oxygen_output
|
||||
local gravity_load = bool_to_number(gravity_on()) * 100
|
||||
local pump_load = bool_to_number(pump_on()) * pump_speed
|
||||
local total_load = drill_load + hvac_load + oxygen_load + gravity_load + pump_load
|
||||
return math.floor(total_load)
|
||||
end
|
||||
|
||||
--calls the dig function and handles any subsequent reactor overloads
|
||||
function update_machines()
|
||||
if power_on() then
|
||||
if drill_on() then
|
||||
dig()
|
||||
else
|
||||
drill_power = 0
|
||||
end
|
||||
if power_consumption() >= 1000 then
|
||||
add_hud_message("Reactor overloaded!")
|
||||
reactor_stop()
|
||||
end
|
||||
else
|
||||
drill_power = 0
|
||||
end
|
||||
for _,player in pairs(minetest.get_connected_players()) do
|
||||
update_gravity(player:get_player_name())
|
||||
end
|
||||
update_power_hud()
|
||||
end
|
||||
|
||||
--determines the amount of ore mined and power consumed with each cycle of the drill
|
||||
function dig()
|
||||
local resistance = math.random(drill_speed * 2, drill_speed * 3)
|
||||
drill_mining_timer = drill_mining_timer + 1
|
||||
if drill_mining_timer >= 500 then
|
||||
local mined = drill_speed + resistance
|
||||
money = money + mined
|
||||
add_hud_message("Drill mined $" .. mined .. " worth of ore.")
|
||||
drill_mining_timer = 0
|
||||
end
|
||||
drill_power_timer = drill_power_timer + 1
|
||||
if drill_power_timer >= 100 then
|
||||
local digging = drill_speed + resistance
|
||||
local cooling = (bool_to_number(pump_on()) * pump_speed) * 3
|
||||
if cooling > resistance * 0.9 then
|
||||
cooling = resistance * 0.9
|
||||
end
|
||||
drill_power = digging - cooling
|
||||
drill_power_timer = 0
|
||||
end
|
||||
end
|
||||
|
||||
--updates gravity for the given player
|
||||
function update_gravity(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if inside_habitat(name) then
|
||||
if gravity_on() == true then
|
||||
minetest.get_player_by_name(name):set_physics_override({gravity = generated_gravity * 0.01})
|
||||
else
|
||||
minetest.get_player_by_name(name):set_physics_override({gravity = 0.25})
|
||||
end
|
||||
else
|
||||
minetest.get_player_by_name(name):set_physics_override({gravity = 0.25})
|
||||
end
|
||||
end
|
||||
|
||||
--changes the speed of the drill
|
||||
function set_drill_speed(value)
|
||||
if value ~= nil then
|
||||
drill_speed = value
|
||||
end
|
||||
end
|
||||
|
||||
--changes the speed of the coolant pump
|
||||
function set_pump_speed(value)
|
||||
if value ~= nil then
|
||||
pump_speed = value
|
||||
end
|
||||
end
|
||||
|
||||
--changes the speed of the coolant pump
|
||||
function set_gravity(value)
|
||||
if value ~= nil then
|
||||
generated_gravity = value
|
||||
end
|
||||
end
|
||||
|
||||
--opens the airlock
|
||||
function open_airlock()
|
||||
if power_on() then
|
||||
for i = 1,7,1 do
|
||||
for j = -25,25,1 do
|
||||
local node_pos = vector.new(j, i, 25)
|
||||
if i >= 1 and i <= 5 then
|
||||
if j >= -2 and j <= 2 then
|
||||
minetest.remove_node(node_pos)
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.sound_play('airlock', {
|
||||
gain = 0.1,
|
||||
pos = airlock_controller_pos,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--closes the airlock
|
||||
function close_airlock()
|
||||
if power_on() then
|
||||
for i = 1,7,1 do
|
||||
for j = -25,25,1 do
|
||||
local node_pos = vector.new(j, i, 25)
|
||||
if i >= 1 and i <= 5 then
|
||||
if j >= -2 and j <= 2 then
|
||||
minetest.set_node(node_pos, {name = "moontest:airlock"})
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.sound_play('airlock', {
|
||||
gain = 0.1,
|
||||
pos = airlock_controller_pos,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--starts the reactor and turns on the lights
|
||||
function reactor_start()
|
||||
minetest.sound_play('power_up', {
|
||||
pos = reactor_pos,
|
||||
max_hear_distance = 64
|
||||
})
|
||||
minetest.set_node(reactor_pos, {name = "moontest:reactor_on"})
|
||||
if airlock_failed == false then
|
||||
minetest.set_node(airlock_controller_pos, {name = "moontest:airlock_controller_on"})
|
||||
close_airlock()
|
||||
end
|
||||
add_hud_message("Reactor: on")
|
||||
for z = -22,22,4 do
|
||||
for x = -22,22,6 do
|
||||
if x ~= -10 and x ~= 8 and not (x == -16 and z == -18) then
|
||||
if minetest.get_node(vector.new(x, 5, z)).name == "moontest:light_off" then
|
||||
minetest.set_node(vector.new(x, 5, z), {name = "moontest:light_on"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.set_node(vector.new(-7,5,26), {name = "moontest:exterior_light_on"})
|
||||
minetest.set_node(vector.new(7,5,26), {name = "moontest:exterior_light_on"})
|
||||
end
|
||||
|
||||
--stops the reactor, shuts down all of the equipment and turns off the lights
|
||||
function reactor_stop()
|
||||
minetest.sound_play('power_down', {
|
||||
pos = reactor_pos,
|
||||
max_hear_distance = 64
|
||||
})
|
||||
open_airlock()
|
||||
minetest.set_node(drill_pos, {name = "moontest:drill_off"})
|
||||
minetest.set_node(hvac_pos, {name = "moontest:hvac_off"})
|
||||
minetest.set_node(oxygen_generator_pos, {name = "moontest:oxygen_generator_off"})
|
||||
minetest.set_node(gravity_generator_pos, {name = "moontest:gravity_generator_off"})
|
||||
minetest.set_node(airlock_controller_pos, {name = "moontest:airlock_controller_off"})
|
||||
minetest.set_node(pump_pos, {name = "moontest:pump_off"})
|
||||
minetest.set_node(reactor_pos, {name = "moontest:reactor_off"})
|
||||
add_hud_message("Reactor: off")
|
||||
minetest.get_meta(hvac_pos):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;HVAC System]"..
|
||||
"field[1.8,3;2,1;Thermostat;Thermostat;]")
|
||||
minetest.get_meta(pump_pos):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;Coolant Pump]"..
|
||||
"field[1.8,3;2,1;Speed;Speed;]")
|
||||
for z = -22,22,4 do
|
||||
for x = -22,22,6 do
|
||||
if x ~= -10 and x ~= 8 and not (x == -16 and z == -18) then
|
||||
if minetest.get_node(vector.new(x, 5, z)).name == "moontest:light_on" then
|
||||
minetest.set_node(vector.new(x, 5, z), {name = "moontest:light_off"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.set_node(vector.new(-7,5,26), {name = "moontest:exterior_light_off"})
|
||||
minetest.set_node(vector.new(7,5,26), {name = "moontest:exterior_light_off"})
|
||||
end
|
||||
|
||||
--returns true if the power is on, determines sound effects played
|
||||
function power_on()
|
||||
local result = minetest.get_node(reactor_pos).name == "moontest:reactor_on"
|
||||
if reactor_sound_playing == false and result == true and player_in_range(reactor_pos) then
|
||||
reactor_sound_playing = true
|
||||
minetest.after(3,function()
|
||||
reactor_sound = minetest.sound_play('reactor', {
|
||||
pos = reactor_pos,
|
||||
loop = true,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
end)
|
||||
else
|
||||
if reactor_sound and result == false and reactor_sound_playing == true then
|
||||
minetest.sound_stop(reactor_sound)
|
||||
reactor_sound_playing = false
|
||||
end
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
--returns true if the drill is on, determines sound effects played
|
||||
function drill_on()
|
||||
local result = minetest.get_node(drill_pos).name == "moontest:drill_on"
|
||||
if drill_sound_playing == false and result == true and player_in_range(drill_pos) then
|
||||
drill_sound = minetest.sound_play('drill', {
|
||||
pos = drill_pos,
|
||||
loop = true,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
drill_sound_playing = true
|
||||
else
|
||||
if result == false and drill_sound_playing == true then
|
||||
minetest.sound_stop(drill_sound)
|
||||
drill_sound_playing = false
|
||||
end
|
||||
end
|
||||
if result then drill_failed = false end
|
||||
return result
|
||||
end
|
||||
|
||||
--returns true if the pump is on, determines sound effects played
|
||||
function pump_on()
|
||||
local result = minetest.get_node(pump_pos).name == "moontest:pump_on"
|
||||
if pump_sound_playing == false and result == true and player_in_range(pump_pos) then
|
||||
pump_sound = minetest.sound_play('pump', {
|
||||
pos = pump_pos,
|
||||
loop = true,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
pump_sound_playing = true
|
||||
else
|
||||
if result == false and pump_sound_playing == true then
|
||||
minetest.sound_stop(pump_sound)
|
||||
pump_sound_playing = false
|
||||
end
|
||||
end
|
||||
if result then pump_failed = false end
|
||||
return result
|
||||
end
|
||||
|
||||
--returns true if the hvac system is on, determines sound effects played
|
||||
function hvac_on()
|
||||
local result = minetest.get_node(hvac_pos).name == "moontest:hvac_on"
|
||||
if hvac_sound_playing == false and result == true and player_in_range(hvac_pos) then
|
||||
hvac_sound_playing = true
|
||||
minetest.after(3,function()
|
||||
hvac_sound = minetest.sound_play('hvac_running', {
|
||||
pos = hvac_pos,
|
||||
loop = true,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
end)
|
||||
else
|
||||
if hvac_sound and result == false and hvac_sound_playing == true then
|
||||
minetest.sound_stop(hvac_sound)
|
||||
hvac_sound_playing = false
|
||||
end
|
||||
end
|
||||
if result then hvac_failed = false end
|
||||
return result
|
||||
end
|
||||
|
||||
--returns true if the oxygen generator is on, determines sound effects played
|
||||
function oxygen_on()
|
||||
local result = minetest.get_node(oxygen_generator_pos).name == "moontest:oxygen_generator_on"
|
||||
if oxygen_sound_playing == false and result == true and player_in_range(oxygen_generator_pos) then
|
||||
oxygen_sound_playing = true
|
||||
minetest.after(2,function()
|
||||
oxygen_sound = minetest.sound_play('oxygen', {
|
||||
pos = oxygen_generator_pos,
|
||||
loop = true,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
end)
|
||||
else
|
||||
if oxygen_sound and result == false and oxygen_sound_playing == true then
|
||||
minetest.sound_stop(oxygen_sound)
|
||||
oxygen_sound_playing = false
|
||||
end
|
||||
end
|
||||
if result then oxygen_failed = false end
|
||||
return result
|
||||
end
|
||||
|
||||
--returns true if the gravity generator is on, determines sound effects played
|
||||
function gravity_on()
|
||||
local result = minetest.get_node(gravity_generator_pos).name == "moontest:gravity_generator_on"
|
||||
if gravity_sound_playing == false and result == true and player_in_range(gravity_generator_pos) then
|
||||
gravity_sound = minetest.sound_play('gravity', {
|
||||
pos = gravity_generator_pos,
|
||||
loop = true,
|
||||
gain = 2.0,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
gravity_sound_playing = true
|
||||
else
|
||||
if result == false and gravity_sound_playing == true then
|
||||
minetest.sound_stop(gravity_sound)
|
||||
gravity_sound_playing = false
|
||||
end
|
||||
end
|
||||
if result then gravity_failed = false end
|
||||
return result
|
||||
end
|
||||
|
||||
--returns true if the airlock is closed
|
||||
function airlock_closed()
|
||||
local result = minetest.get_node(airlock_pos).name == "moontest:airlock"
|
||||
if result then airlock_failed = false end
|
||||
return result
|
||||
end
|
|
@ -0,0 +1,192 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
--all standard nodes are registered here, other nodes are handled by the scripts below
|
||||
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "machine_nodes.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "pipe_nodes.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "special_nodes.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "colliders.lua")
|
||||
|
||||
minetest.register_node("moontest:moon_surface", {
|
||||
name = "moon_surface",
|
||||
description = "moon_surface",
|
||||
tiles = {"moon_surface.png"},
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:wall", {
|
||||
name = "wall",
|
||||
description = "wall",
|
||||
tiles = {"wall.png"}
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:floor", {
|
||||
name = "floor",
|
||||
description = "floor",
|
||||
tiles = {"floor.png"}
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:duct", {
|
||||
name = "duct",
|
||||
description = "duct",
|
||||
tiles = {"duct.png"}
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:vent", {
|
||||
name = "vent",
|
||||
description = "vent",
|
||||
tiles = {
|
||||
"duct.png",
|
||||
"vent.png",
|
||||
"duct.png",
|
||||
"duct.png",
|
||||
"duct.png",
|
||||
"duct.png"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:crate", {
|
||||
name = "crate",
|
||||
description = "crate",
|
||||
tiles = {"crate.png"}
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:console", {
|
||||
name = "console",
|
||||
description = "console",
|
||||
tiles = {"console.png"},
|
||||
use_texture_alpha = "clip",
|
||||
drawtype = 'mesh',
|
||||
mesh = "console.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:console_2", {
|
||||
name = "console_2",
|
||||
description = "console_2",
|
||||
tiles = {"console.png"},
|
||||
use_texture_alpha = "clip",
|
||||
drawtype = 'mesh',
|
||||
mesh = "console_2.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:hovercraft", {
|
||||
name = "hovercraft",
|
||||
description = "hovercraft",
|
||||
tiles = {"hovercraft.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "hovercraft.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:hovercraft_2", {
|
||||
name = "hovercraft_2",
|
||||
description = "hovercraft_2",
|
||||
tiles = {"hovercraft.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "hovercraft_2.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:refridgerator", {
|
||||
name = "refridgerator",
|
||||
description = "refridgerator",
|
||||
tiles = {"refridgerator.png"},
|
||||
use_texture_alpha = "clip",
|
||||
drawtype = 'mesh',
|
||||
mesh = "refridgerator.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:microwave", {
|
||||
name = "microwave",
|
||||
description = "microwave",
|
||||
tiles = {"microwave.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "microwave.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:cabinet", {
|
||||
name = "cabinet",
|
||||
description = "cabinet",
|
||||
tiles = {"cabinet.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "cabinet.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:counter", {
|
||||
name = "counter",
|
||||
description = "counter",
|
||||
tiles = {"counter.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "counter.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:sink", {
|
||||
name = "sink",
|
||||
description = "sink",
|
||||
tiles = {"sink.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "sink.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:toilet", {
|
||||
name = "toilet",
|
||||
description = "toilet",
|
||||
tiles = {"toilet.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "toilet.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:shower", {
|
||||
name = "shower",
|
||||
description = "shower",
|
||||
tiles = {"shower.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "shower.obj",
|
||||
light_source = 5
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:floor_drain", {
|
||||
name = "floor_drain",
|
||||
description = "floor_drain",
|
||||
tiles = {
|
||||
"floor_drain.png",
|
||||
"floor.png",
|
||||
"floor.png",
|
||||
"floor.png",
|
||||
"floor.png",
|
||||
"floor.png"
|
||||
},
|
||||
light_source = 5
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:table", {
|
||||
name = "table",
|
||||
description = "table",
|
||||
tiles = {"table.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "table.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:chair", {
|
||||
name = "chair",
|
||||
description = "chair",
|
||||
tiles = {"chair.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "chair.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:sofa", {
|
||||
name = "sofa",
|
||||
description = "sofa",
|
||||
tiles = {"sofa.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "sofa.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:glass", {
|
||||
name = "glass",
|
||||
description = "glass",
|
||||
tiles = {"glass.png"},
|
||||
drawtype = 'glasslike_framed'
|
||||
})
|
|
@ -0,0 +1,82 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
oxygen_output = 100
|
||||
oxygen_levels = {}
|
||||
local oxygen_timer = 0
|
||||
|
||||
--initializes the oxygen variable
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
if player then
|
||||
oxygen_levels[player:get_player_name()] = 100
|
||||
end
|
||||
end)
|
||||
|
||||
--changes the oxygen output setting
|
||||
function set_oxygen_output(value)
|
||||
oxygen_output = value
|
||||
end
|
||||
|
||||
--manages oxygen for all players
|
||||
function update_oxygen()
|
||||
oxygen_timer = oxygen_timer + 1
|
||||
if oxygen_timer >= 100 then
|
||||
if oxygen_on() == false or airlock_closed() == false then
|
||||
suffocate_players()
|
||||
else
|
||||
supply_air()
|
||||
end
|
||||
oxygen_timer = 0
|
||||
end
|
||||
end
|
||||
|
||||
--attempts to decrease oxygen for all players
|
||||
function suffocate_players()
|
||||
for name, oxygen_level in pairs(oxygen_levels) do
|
||||
suffocate_player(name)
|
||||
end
|
||||
end
|
||||
|
||||
--attempts to increase oxygen for all players
|
||||
function supply_air()
|
||||
for name, oxygen_level in pairs(oxygen_levels) do
|
||||
give_air_to_player(name)
|
||||
end
|
||||
end
|
||||
|
||||
--attempts to decrease the oxygen of the given player
|
||||
function suffocate_player(name)
|
||||
if oxygen_levels[name] > 0 then
|
||||
if minetest.get_player_by_name(name):get_hp() > 0 then
|
||||
oxygen_levels[name] = oxygen_levels[name] - 1
|
||||
update_oxygen_hud(name)
|
||||
end
|
||||
else
|
||||
if minetest.get_player_by_name(name):get_hp() > 0 then
|
||||
hurt_player(name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--attempts to increase the oxygen of the given player
|
||||
function give_air_to_player(name)
|
||||
if inside_habitat(name) then
|
||||
if oxygen_levels[name] < oxygen_output then
|
||||
oxygen_levels[name] = oxygen_levels[name] + 1
|
||||
update_oxygen_hud(name)
|
||||
else
|
||||
if oxygen_levels[name] >= 200 then
|
||||
if minetest.get_player_by_name(name):get_hp() > 0 then
|
||||
hurt_player(name)
|
||||
end
|
||||
else
|
||||
suffocate_player(name)
|
||||
end
|
||||
end
|
||||
else
|
||||
suffocate_player(name)
|
||||
end
|
||||
end
|
|
@ -0,0 +1,104 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
--all pipe nodes are registered here
|
||||
|
||||
minetest.register_node("moontest:vertical_pipe", {
|
||||
name = "vertical_pipe",
|
||||
description = "vertical_pipe",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "vertical_pipe.obj",
|
||||
light_source = 5
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_pipe_vertical_1", {
|
||||
name = "coolant_pipe_vertical_1",
|
||||
description = "coolant_pipe_vertical_1",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_pipe_vertical_1.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_pipe_vertical_2", {
|
||||
name = "coolant_pipe_vertical_2",
|
||||
description = "coolant_pipe_vertical_2",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_pipe_vertical_2.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_pipe_horizontal", {
|
||||
name = "coolant_pipe_horizontal",
|
||||
description = "coolant_pipe_horizontal",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_pipe_horizontal.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_pipe_bend_1", {
|
||||
name = "coolant_pipe_bend_1",
|
||||
description = "coolant_pipe_bend_1",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_pipe_bend_1.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_pipe_bend_2", {
|
||||
name = "coolant_pipe_bend_2",
|
||||
description = "coolant_pipe_bend_2",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_pipe_bend_2.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_pipe_single_horizontal_1", {
|
||||
name = "coolant_pipe_single_horizontal_1",
|
||||
description = "coolant_pipe_single_horizontal_1",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_pipe_single_horizontal_1.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_pipe_single_horizontal_2", {
|
||||
name = "coolant_pipe_single_horizontal_2",
|
||||
description = "coolant_pipe_single_horizontal_2",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_pipe_single_horizontal_2.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_pipe_single_bend_1", {
|
||||
name = "coolant_pipe_single_bend_1",
|
||||
description = "coolant_pipe_single_bend_1",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_pipe_single_bend_1.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_pipe_single_vertical_1", {
|
||||
name = "coolant_pipe_single_vertical_1",
|
||||
description = "coolant_pipe_single_vertical_1",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_pipe_single_vertical_1.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_pipe_single_vertical_2", {
|
||||
name = "coolant_pipe_single_vertical_2",
|
||||
description = "coolant_pipe_single_vertical_2",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_pipe_single_vertical_2.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_pipe_pump", {
|
||||
name = "coolant_pipe_pump",
|
||||
description = "coolant_pipe_pump",
|
||||
tiles = {"pipe.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_pipe_pump.obj"
|
||||
})
|
|
@ -0,0 +1,45 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
research_progress = 1
|
||||
|
||||
--defines the organic matter item and on_use function
|
||||
minetest.register_craftitem("moontest:splat", {
|
||||
description = "Organic matter.",
|
||||
inventory_image = "splat.png",
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if pointed_thing.under ~= nil then
|
||||
local under = minetest.get_node(pointed_thing.under)
|
||||
if under ~= nil and power_on() then
|
||||
if under.name == "moontest:research_station" or under.name == "moontest:research_panel" then
|
||||
local amount = 0
|
||||
local worth = 0
|
||||
for i = 1,itemstack:get_count(),1 do
|
||||
if itemstack:take_item() ~= nil then
|
||||
amount = amount + 1
|
||||
worth = worth + (10 * research_progress)
|
||||
end
|
||||
end
|
||||
if amount > 0 then
|
||||
money = math.floor(money + worth)
|
||||
add_hud_message(user:get_player_name() ..
|
||||
" processed $" .. math.floor(worth) .. " worth of research data.")
|
||||
if research_progress < 5 then
|
||||
research_progress = research_progress + (amount * 0.01)
|
||||
if research_progress > 5 then research_progress = 5 end
|
||||
add_hud_message("Research data is now worth $" ..
|
||||
math.floor(10 * research_progress) .. " per item.")
|
||||
end
|
||||
minetest.sound_play('research', {
|
||||
pos = research_station_pos,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
|
@ -0,0 +1,225 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
--builds the break room
|
||||
function build_break_room()
|
||||
for y = 1,6,1 do
|
||||
for z = -18,-24,-1 do
|
||||
minetest.set_node(vector.new(14, y, z), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
|
||||
for y = 1,6,1 do
|
||||
for x = 24,21,-1 do
|
||||
minetest.set_node(vector.new(x, y, -17), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
|
||||
for y = 1,6,1 do
|
||||
for x = 17,14,-1 do
|
||||
minetest.set_node(vector.new(x, y, -17), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
|
||||
for x = 20,18,-1 do
|
||||
minetest.set_node(vector.new(x, 6, -17), {name = "moontest:wall"})
|
||||
end
|
||||
|
||||
for x = 19,24,1 do
|
||||
minetest.set_node(vector.new(x, 4, -24), {name = "moontest:cabinet"})
|
||||
end
|
||||
|
||||
minetest.set_node(food_vending_top_pos, {name = "moontest:food_vending_top"})
|
||||
minetest.set_node(food_vending_bottom_pos, {name = "moontest:food_vending_bottom"})
|
||||
minetest.set_node(vector.new(22, 1, -24), {name = "moontest:refridgerator"})
|
||||
minetest.set_node(vector.new(22, 2, -24), {name = "moontest:invisible"})
|
||||
minetest.set_node(vector.new(24, 1, -24), {name = "moontest:counter"})
|
||||
minetest.set_node(vector.new(23, 1, -24), {name = "moontest:counter"})
|
||||
minetest.set_node(vector.new(21, 1, -24), {name = "moontest:counter"})
|
||||
minetest.set_node(vector.new(20, 1, -24), {name = "moontest:sink"})
|
||||
minetest.set_node(vector.new(19, 1, -24), {name = "moontest:counter"})
|
||||
minetest.set_node(vector.new(19, 2, -24), {name = "moontest:microwave"})
|
||||
minetest.set_node(vector.new(17, 1, -20), {name = "moontest:table"})
|
||||
minetest.set_node(vector.new(16, 1, -20), {name = "moontest:chair"})
|
||||
minetest.set_node(vector.new(17, 1, -21), {name = "moontest:chair"})
|
||||
end
|
||||
|
||||
--builds the sleeping room
|
||||
function build_sleeping_room()
|
||||
for y = 1, 6 do
|
||||
for z = -7,7,1 do
|
||||
minetest.set_node(vector.new(-8, y, z), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
|
||||
for y = 1, 6 do
|
||||
for x = -8,-24,-1 do
|
||||
minetest.set_node(vector.new(x, y, 7), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
|
||||
for y = 1, 6 do
|
||||
for x = -8,-14,-1 do
|
||||
minetest.set_node(vector.new(x, y, -7), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
|
||||
for y = 1, 6 do
|
||||
for x = -18,-24,-1 do
|
||||
minetest.set_node(vector.new(x, y, -7), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
|
||||
for x = -19,-23,-1 do
|
||||
minetest.set_node(vector.new(x, 1, -6), {name = "moontest:sofa"})
|
||||
end
|
||||
|
||||
for x = -15,-17,-1 do
|
||||
minetest.set_node(vector.new(x, 6, -7), {name = "moontest:wall"})
|
||||
end
|
||||
|
||||
for x = -9,-24,-1 do
|
||||
minetest.set_node(vector.new(x, 1, 6), {name = "moontest:counter"})
|
||||
end
|
||||
|
||||
for x = -9,-24,-1 do
|
||||
minetest.set_node(vector.new(x, 3, 6), {name = "moontest:cabinet"})
|
||||
end
|
||||
|
||||
for x = -20,-10,4 do
|
||||
minetest.set_node(vector.new(x, 1, 0), {name = "moontest:bunkbed"})
|
||||
end
|
||||
|
||||
for x = -20,-10,4 do
|
||||
for z = -1,1,1 do
|
||||
for y = 2, 4 do
|
||||
if not ((z == 0 and y == 2) or z == 0 and y == 3) then
|
||||
minetest.set_node(vector.new(x, y, z), {name = "moontest:invisible"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
minetest.set_node(vector.new(-9, 4, -4), {name = "moontest:vent"})
|
||||
minetest.set_node(vector.new(-9, 4, 4), {name = "moontest:vent"})
|
||||
end
|
||||
|
||||
--builds the gravity generator room
|
||||
function build_gravity_room()
|
||||
for y = 1, 6 do
|
||||
for z = -7,7,1 do
|
||||
minetest.set_node(vector.new(8, y, z), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
for y = 1, 6 do
|
||||
for x = 8,24,1 do
|
||||
minetest.set_node(vector.new(x, y, 7), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
for y = 1, 6 do
|
||||
for x = 8,14,1 do
|
||||
minetest.set_node(vector.new(x, y, -7), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
for y = 1, 6 do
|
||||
for x = 18,24,1 do
|
||||
minetest.set_node(vector.new(x, y, -7), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
for x = 15,17,1 do
|
||||
minetest.set_node(vector.new(x, 6, -7), {name = "moontest:wall"})
|
||||
end
|
||||
|
||||
minetest.set_node(vector.new(9, 4, -4), {name = "moontest:vent"})
|
||||
minetest.set_node(vector.new(9, 4, 4), {name = "moontest:vent"})
|
||||
end
|
||||
|
||||
--builds the bathroom
|
||||
function build_bathroom()
|
||||
for y = 1,6,1 do
|
||||
for x = -24,-14,1 do
|
||||
minetest.set_node(vector.new(x, y, -14), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
|
||||
for y = 1,6,1 do
|
||||
for x = -22,-14,1 do
|
||||
minetest.set_node(vector.new(x, y, -17), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
|
||||
for y = 1,6,1 do
|
||||
for z = -18,-24,-1 do
|
||||
minetest.set_node(vector.new(-14, y, z), {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
|
||||
for y = 1,6,1 do
|
||||
for x = -15,-18,-1 do
|
||||
minetest.set_node(vector.new(x, y, -21), {name = "moontest:glass"})
|
||||
end
|
||||
end
|
||||
|
||||
for z = -17,-20,-1 do
|
||||
minetest.set_node(vector.new(-24, 5, z), {name = "moontest:duct"})
|
||||
end
|
||||
|
||||
minetest.set_node(vector.new(-24, 4, -20), {name = "moontest:vent"})
|
||||
minetest.set_node(vector.new(-17, 1, -24), {name = "moontest:toilet"})
|
||||
minetest.set_node(vector.new(-22, 1, -24), {name = "moontest:counter"})
|
||||
minetest.set_node(vector.new(-23, 1, -24), {name = "moontest:sink"})
|
||||
minetest.set_node(vector.new(-24, 1, -24), {name = "moontest:counter"})
|
||||
minetest.set_node(vector.new(-16, 6, -19), {name = "moontest:vertical_pipe"})
|
||||
minetest.set_node(vector.new(-16, 5, -19), {name = "moontest:vertical_pipe"})
|
||||
minetest.set_node(vector.new(-16, 4, -19), {name = "moontest:shower"})
|
||||
minetest.set_node(vector.new(-16, 0, -19), {name = "moontest:floor_drain"})
|
||||
end
|
||||
|
||||
--builds the garage
|
||||
function build_garage()
|
||||
minetest.set_node(vector.new(15, 1, 20), {name = "moontest:hovercraft"})
|
||||
minetest.set_node(vector.new(-15, 1, 20), {name = "moontest:hovercraft_2"})
|
||||
|
||||
for x = 12,18,1 do
|
||||
for z = 19,22,1 do
|
||||
for y = 2, 3 do
|
||||
minetest.set_node(vector.new(x, y, z), {name = "moontest:invisible"})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for x = -12,-18,-1 do
|
||||
for z = 19,22,1 do
|
||||
for y = 2, 3 do
|
||||
minetest.set_node(vector.new(x, y, z), {name = "moontest:invisible"})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for y = 1,2,1 do
|
||||
for x = -24,-9,1 do
|
||||
for z = 8,16,1 do
|
||||
if math.random(0, 100) > y * 40 then
|
||||
if y == 1 or (y == 2 and minetest.get_node(vector.new(x, 1, z)).name == "moontest:crate") then
|
||||
minetest.set_node(vector.new(x, y, z), {name = "moontest:crate"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for y = 1,2,1 do
|
||||
for x = 9,24,1 do
|
||||
for z = 8,16,1 do
|
||||
if math.random(0, 100) > y * 40 then
|
||||
if y == 1 or (y == 2 and minetest.get_node(vector.new(x, 1, z)).name == "moontest:crate") then
|
||||
minetest.set_node(vector.new(x, y, z), {name = "moontest:crate"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,73 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
gravity_failed = false
|
||||
airlock_failed = false
|
||||
oxygen_failed = false
|
||||
hvac_failed = false
|
||||
drill_failed = false
|
||||
pump_failed = false
|
||||
local simulation_timer = 0
|
||||
|
||||
--simulates equipment failures
|
||||
function update_simulation()
|
||||
simulation_timer = simulation_timer + 1
|
||||
if simulation_timer > 100 then
|
||||
local stability = 92
|
||||
if gravity_on() and generated_gravity > 100 then
|
||||
stability = stability - (generated_gravity - 100)
|
||||
else
|
||||
stability = 8 + (bool_to_number(gravity_on()) * (generated_gravity - 16))
|
||||
end
|
||||
if stability > 92 then stability = 92 end
|
||||
if math.random(0, 100) > stability then
|
||||
local machine = math.random(1, 6)
|
||||
if machine == 1 and oxygen_on() then
|
||||
minetest.sound_play('oxygen_start_stop', {
|
||||
pos = oxygen_generator_pos,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
minetest.set_node(oxygen_generator_pos, {name = "moontest:oxygen_generator_off"})
|
||||
add_hud_message("Oxygen generator: failed")
|
||||
oxygen_failed = true
|
||||
elseif machine == 2 and hvac_on() then
|
||||
minetest.sound_play('hvac_off', {
|
||||
pos = hvac_pos,
|
||||
max_hear_distance = 16
|
||||
})
|
||||
minetest.set_node(hvac_pos, {name = "moontest:hvac_off"})
|
||||
add_hud_message("HVAC: failed")
|
||||
minetest.get_meta(hvac_pos):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;HVAC System]"..
|
||||
"field[1.8,3;2,1;Thermostat;Thermostat;]")
|
||||
hvac_failed = true
|
||||
elseif machine == 3 and pump_on() then
|
||||
minetest.set_node(pump_pos, {name = "moontest:pump_off"})
|
||||
add_hud_message("Coolant pump: failed")
|
||||
minetest.get_meta(pump_pos):set_string("formspec",
|
||||
"size[5,5]"..
|
||||
"label[1.5,1;Coolant Pump]"..
|
||||
"field[1.8,3;2,1;Speed;Speed;]")
|
||||
pump_failed = true
|
||||
elseif machine == 4 and power_on() and airlock_closed() and airlock_failed == false then
|
||||
open_airlock()
|
||||
minetest.set_node(airlock_controller_pos, {name = "moontest:airlock_controller_off"})
|
||||
add_hud_message("Airlock: failed")
|
||||
airlock_failed = true
|
||||
elseif machine == 5 and gravity_on() then
|
||||
minetest.set_node(gravity_generator_pos, {name = "moontest:gravity_generator_off"})
|
||||
add_hud_message("Gravity generator: failed")
|
||||
gravity_failed = true
|
||||
elseif machine == 6 and drill_on() then
|
||||
minetest.set_node(drill_pos, {name = "moontest:drill_off"})
|
||||
add_hud_message("Drill: failed")
|
||||
drill_failed = true
|
||||
end
|
||||
end
|
||||
simulation_timer = 0
|
||||
end
|
||||
end
|
|
@ -0,0 +1,125 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
--special purpose nodes are registered here
|
||||
|
||||
minetest.register_node("moontest:food_vending_top", {
|
||||
description = "Space Food Vending",
|
||||
tiles = {
|
||||
"food_vending.png",
|
||||
"food_vending.png",
|
||||
"food_vending.png",
|
||||
"food_vending_top_front.png",
|
||||
"food_vending.png",
|
||||
"food_vending.png"
|
||||
},
|
||||
light_source = 10
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:food_vending_bottom", {
|
||||
description = "Space Food Vending",
|
||||
tiles = {
|
||||
"food_vending.png",
|
||||
"food_vending.png",
|
||||
"food_vending.png",
|
||||
"food_vending_bottom_front.png",
|
||||
"food_vending.png",
|
||||
"food_vending.png"
|
||||
},
|
||||
light_source = 10
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:airlock", {
|
||||
name = "airlock",
|
||||
description = "airlock",
|
||||
tiles = {"airlock.png"}
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:airlock_controller_on", {
|
||||
name = "airlock_controller_on",
|
||||
description = "airlock_controller_on",
|
||||
tiles = {"airlock_controller_on.png"}
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:airlock_controller_off", {
|
||||
name = "airlock_controller_off",
|
||||
description = "airlock_controller_off",
|
||||
tiles = {"airlock_controller_off.png"}
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:research_station", {
|
||||
name = "research_station",
|
||||
description = "research_station",
|
||||
tiles = {"research_station.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "research.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:research_panel", {
|
||||
name = "research_panel",
|
||||
description = "research_panel",
|
||||
tiles = {"invisible.png"},
|
||||
drawtype = 'airlike',
|
||||
light_source = 10
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:light_on", {
|
||||
name = "light",
|
||||
description = "light",
|
||||
tiles = {"light.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "light.obj",
|
||||
light_source = 14
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:light_off", {
|
||||
name = "light",
|
||||
description = "light",
|
||||
tiles = {"light.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "light.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:exterior_light_on", {
|
||||
name = "exterior_light_on",
|
||||
description = "exterior_light_on",
|
||||
tiles = {"light.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "exterior_light.obj",
|
||||
light_source = 14
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:exterior_light_off", {
|
||||
name = "exterior_light_off",
|
||||
description = "exterior_light_off",
|
||||
tiles = {"light.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "exterior_light.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:bunkbed", {
|
||||
name = "bunkbed",
|
||||
description = "bunkbed",
|
||||
tiles = {"bunkbed.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "bunkbed.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:hvac_prop", {
|
||||
name = "hvac_prop",
|
||||
description = "hvac_prop",
|
||||
tiles = {"hvac_prop.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "hvac_prop.obj"
|
||||
})
|
||||
|
||||
minetest.register_node("moontest:coolant_tank", {
|
||||
name = "coolant_tank",
|
||||
description = "coolant_tank",
|
||||
tiles = {"coolant_tank.png"},
|
||||
drawtype = 'mesh',
|
||||
mesh = "coolant_tank.obj"
|
||||
})
|
|
@ -0,0 +1,43 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
local energy_timers = {}
|
||||
|
||||
--sets up the player character and loads the world
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
if player then
|
||||
energy_timers[player:get_player_name()] = 0
|
||||
end
|
||||
end)
|
||||
|
||||
--removes the player from list
|
||||
minetest.register_on_leaveplayer(function(player)
|
||||
if player then
|
||||
energy_timers[player:get_player_name()] = nil
|
||||
end
|
||||
end)
|
||||
|
||||
--handles sprinting and energy
|
||||
minetest.register_globalstep(function(dtime)
|
||||
for _,player in pairs(minetest.get_connected_players()) do
|
||||
local name = player:get_player_name()
|
||||
if player:get_player_control().aux1 then
|
||||
if energy_levels[name] > 0 then
|
||||
player:set_physics_override({speed = 1.8})
|
||||
energy_timers[name] = energy_timers[name] + 1
|
||||
if energy_timers[name] >= 50 then
|
||||
energy_levels[name] = energy_levels[name] - 1
|
||||
energy_timers[name] = 0
|
||||
update_energy_hud(name)
|
||||
end
|
||||
else
|
||||
player:set_physics_override({speed = 1})
|
||||
end
|
||||
else
|
||||
player:set_physics_override({speed = 1})
|
||||
end
|
||||
end
|
||||
end)
|
|
@ -0,0 +1,191 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
--builds an exterior wall
|
||||
function build_wall_one()
|
||||
for y = 0,8,1 do
|
||||
for z = -25,25,1 do
|
||||
local node_pos = vector.new(25, y, z)
|
||||
if y >= 2 and y <= 5 then
|
||||
if z >= -5 and z <= 5 then
|
||||
minetest.set_node(node_pos, {name = "moontest:glass"})
|
||||
else
|
||||
minetest.set_node(node_pos, {name = "moontest:wall"})
|
||||
end
|
||||
else
|
||||
minetest.set_node(node_pos, {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--builds an exterior wall
|
||||
function build_wall_two()
|
||||
for y = 0,8,1 do
|
||||
for z = -25,25,1 do
|
||||
local node_pos = vector.new(-25, y, z)
|
||||
if y >= 2 and y <= 5 then
|
||||
if z >= -5 and z <= 5 then
|
||||
minetest.set_node(node_pos, {name = "moontest:glass"})
|
||||
else
|
||||
minetest.set_node(node_pos, {name = "moontest:wall"})
|
||||
end
|
||||
else
|
||||
minetest.set_node(node_pos, {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--builds an exterior wall
|
||||
function build_wall_three()
|
||||
for y = 0,8,1 do
|
||||
for x = -25,25,1 do
|
||||
local node_pos = vector.new(x, y, 25)
|
||||
if y >= 1 and y <= 5 then
|
||||
if x >= -2 and x <= 2 then
|
||||
minetest.set_node(node_pos, {name = "moontest:airlock"})
|
||||
else
|
||||
if y == 2 and x == 4 then
|
||||
minetest.set_node(node_pos, {name = "moontest:airlock_controller_on"})
|
||||
else
|
||||
minetest.set_node(node_pos, {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
else
|
||||
if y == 0 and x >= -2 and x <= 2 then
|
||||
minetest.set_node(node_pos, {name = "moontest:floor"})
|
||||
else
|
||||
minetest.set_node(node_pos, {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--builds an exterior wall
|
||||
function build_wall_four()
|
||||
for y = 0,8,1 do
|
||||
for x = -25,25,1 do
|
||||
local node_pos = vector.new(x, y, -25)
|
||||
if y >= 2 and y <= 5 then
|
||||
if x >= -5 and x <= 5 then
|
||||
minetest.set_node(node_pos, {name = "moontest:glass"})
|
||||
else
|
||||
minetest.set_node(node_pos, {name = "moontest:wall"})
|
||||
end
|
||||
else
|
||||
minetest.set_node(node_pos, {name = "moontest:wall"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--builds the floor
|
||||
function build_floor()
|
||||
for x = -24,24,1 do
|
||||
for z = -24,24,1
|
||||
do
|
||||
local node_pos = vector.new(x, 0, z)
|
||||
minetest.set_node(node_pos, {name = "moontest:floor"})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--builds the roof
|
||||
function build_roof()
|
||||
for x = -24,24,1 do
|
||||
for z = -24,24,1
|
||||
do
|
||||
local node_pos = vector.new(x, 7, z)
|
||||
minetest.set_node(node_pos, {name = "moontest:floor"})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--builds the air ducts
|
||||
function build_ducts()
|
||||
for z = -16,16,4 do
|
||||
if z > 4 or z < -4 then
|
||||
for x = -24,24,1 do
|
||||
minetest.set_node(vector.new(x, 5, z), {name = "moontest:duct"})
|
||||
end
|
||||
for vent_x = -18,18,6 do
|
||||
minetest.set_node(vector.new(vent_x, 4, z), {name = "moontest:vent"})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for z = -16,16,1 do
|
||||
minetest.set_node(vector.new(9, 5, z), {name = "moontest:duct"})
|
||||
end
|
||||
|
||||
for z = -16,16,1 do
|
||||
minetest.set_node(vector.new(-9, 5, z), {name = "moontest:duct"})
|
||||
end
|
||||
|
||||
for z = -16,-20,-1 do
|
||||
minetest.set_node(vector.new(11, 5, z), {name = "moontest:duct"})
|
||||
end
|
||||
|
||||
for y = 5,2,-1 do
|
||||
minetest.set_node(vector.new(11, y, -20), {name = "moontest:duct"})
|
||||
end
|
||||
|
||||
for z = -16,-20,-1 do
|
||||
minetest.set_node(vector.new(4, 5, z), {name = "moontest:duct"})
|
||||
end
|
||||
|
||||
for y = 5,4,-1 do
|
||||
minetest.set_node(vector.new(4, y, -20), {name = "moontest:duct"})
|
||||
end
|
||||
end
|
||||
|
||||
--builds the light fixtures
|
||||
function build_lights()
|
||||
for z = -22,22,4 do
|
||||
for x = -22,22,6 do
|
||||
if x ~= -10 and x ~= 8 and not (x == -16 and z == -18) then
|
||||
minetest.set_node(vector.new(x, 5, z), {name = "moontest:light_on"})
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.set_node(vector.new(-7,5,26), {name = "moontest:exterior_light_on"})
|
||||
minetest.set_node(vector.new(7,5,26), {name = "moontest:exterior_light_on"})
|
||||
end
|
||||
|
||||
--builds the consoles
|
||||
function build_consoles()
|
||||
for z = -5,5,5 do
|
||||
minetest.set_node(vector.new(7,1,z), {name = "moontest:console"})
|
||||
end
|
||||
for y = 1,2,1 do
|
||||
for z = -6,6,1 do
|
||||
for x = 6,7,1 do
|
||||
if y == 1 and z ~= -5 and z ~= 0 and z ~= 5 then
|
||||
minetest.set_node(vector.new(x,y,z), {name = "moontest:invisible"})
|
||||
elseif y == 2 then
|
||||
minetest.set_node(vector.new(x,y,z), {name = "moontest:invisible"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for z = -5,5,5 do
|
||||
minetest.set_node(vector.new(-7,1,z), {name = "moontest:console_2"})
|
||||
end
|
||||
for y = 1,2,1 do
|
||||
for z = -6,6,1 do
|
||||
for x = -7,-6,1 do
|
||||
if y == 1 and z ~= -5 and z ~= 0 and z ~= 5 then
|
||||
minetest.set_node(vector.new(x,y,z), {name = "moontest:invisible"})
|
||||
elseif y == 2 then
|
||||
minetest.set_node(vector.new(x,y,z), {name = "moontest:invisible"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1 @@
|
|||
Moon habitat simulator.
|
|
@ -0,0 +1,388 @@
|
|||
--[[
|
||||
Moon Habitat Simulator
|
||||
Version: 1
|
||||
License: GNU Affero General Public License version 3 (AGPLv3)
|
||||
]]--
|
||||
|
||||
money = 1000
|
||||
progress = 0.3
|
||||
unlimited = 0
|
||||
game_over = false
|
||||
game_over_timer = 0
|
||||
success = false
|
||||
local expense_timer = 0
|
||||
local save_timer = 0
|
||||
|
||||
minetest.settings:set_bool("menu_clouds", false)
|
||||
minetest.settings:set_bool("smooth_lighting", true)
|
||||
minetest.register_item(":", { type = "none", wield_image = "hand.png"})
|
||||
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "nodes.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "habitat.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "oxygen.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "climate.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "hunger.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "energy.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "machines.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "interaction.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "simulation.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "aliens.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "research.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "sprint.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "hud.lua")
|
||||
dofile(minetest.get_modpath("moontest") .. DIR_DELIM .. "code" .. DIR_DELIM .. "formspec.lua")
|
||||
|
||||
minetest.register_entity("moontest:alien", alien_definition)
|
||||
|
||||
--disables creative mode and invulnerability
|
||||
minetest.register_on_prejoinplayer(function(pname)
|
||||
if minetest.settings:get_bool("creative_mode") == true then
|
||||
return "This game does not support creative mode."
|
||||
end
|
||||
if minetest.settings:get_bool("enable_damage") == false then
|
||||
return "Damage must be enabled to play this game."
|
||||
end
|
||||
end)
|
||||
|
||||
--sets up the player character and loads the world
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
if player then
|
||||
player:hud_set_flags({
|
||||
hotbar = true,
|
||||
healthbar = true
|
||||
})
|
||||
player:set_clouds({
|
||||
density = 0
|
||||
})
|
||||
player:set_properties({
|
||||
textures = { "player.png", "player_back.png" },
|
||||
visual = "upright_sprite",
|
||||
visual_size = { x = 1, y = 2 },
|
||||
collisionbox = {-0.49, 0, -0.49, 0.49, 2, 0.49 },
|
||||
initial_sprite_basepos = {x = 0, y = 0}
|
||||
})
|
||||
if habitat_built == false then
|
||||
if minetest.get_gametime() < 10 then
|
||||
player:set_pos(vector.new(0, 20, 0))
|
||||
minetest.after(10, function()
|
||||
build_habitat()
|
||||
player:set_pos(vector.new(0, 2, 5))
|
||||
habitat_built = true
|
||||
end)
|
||||
else
|
||||
load_world()
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
--removes the player from lists
|
||||
minetest.register_on_leaveplayer(function(player)
|
||||
if player then
|
||||
local name = player:get_player_name()
|
||||
hunger_levels[name] = nil
|
||||
oxygen_levels[name] = nil
|
||||
temperature_levels[name] = nil
|
||||
energy_levels[name] = nil
|
||||
hud_bg_ids[name] = nil
|
||||
game_over_hud_ids[name] = nil
|
||||
money_hud_ids[name] = nil
|
||||
hunger_hud_ids[name] = nil
|
||||
energy_hud_ids[name] = nil
|
||||
oxygen_hud_ids[name] = nil
|
||||
temperature_hud_ids[name] = nil
|
||||
airlock_hud_ids[name] = nil
|
||||
gravity_hud_ids[name] = nil
|
||||
thermostat_hud_ids[name] = nil
|
||||
oxygen_output_hud_ids[name] = nil
|
||||
power_hud_ids[name] = nil
|
||||
drill_hud_ids[name] = nil
|
||||
coolant_hud_ids[name] = nil
|
||||
message_bg_hud_ids[name] = nil
|
||||
message_hud_ids[name] = nil
|
||||
end
|
||||
end)
|
||||
|
||||
--resets all player variables on death
|
||||
minetest.register_on_dieplayer(function(player)
|
||||
local player_name = player:get_player_name()
|
||||
empty_inventory(player)
|
||||
oxygen_levels[player_name] = 100
|
||||
hunger_levels[player_name] = 100
|
||||
temperature_levels[player_name] = 100
|
||||
energy_levels[player_name] = 100
|
||||
money = money - 2000
|
||||
add_hud_message(player_name .. " is being cloned for $2000.")
|
||||
end)
|
||||
|
||||
--loads saved game data from file
|
||||
function load_world()
|
||||
local save_data = {}
|
||||
local filepath = minetest.get_worldpath()
|
||||
local file = io.open(minetest.get_worldpath() .. DIR_DELIM .. "moontest_save.txt", "r")
|
||||
io.input(file)
|
||||
|
||||
for str in string.gmatch(io.read(), "([^".."}".."]+)") do
|
||||
table.insert(save_data, str)
|
||||
end
|
||||
|
||||
local loaded_money = save_data[1]
|
||||
local loaded_thermostat = save_data[2]
|
||||
local loaded_oxygen_output = save_data[3]
|
||||
local loaded_drill_speed = save_data[4]
|
||||
local loaded_pump_speed = save_data[5]
|
||||
local loaded_gravity = save_data[6]
|
||||
local loaded_progress = save_data[7]
|
||||
local loaded_research_progress = save_data[8]
|
||||
local loaded_alien_count = save_data[9]
|
||||
local loaded_unlimited = save_data[10]
|
||||
|
||||
if loaded_money then
|
||||
money = tonumber(loaded_money)
|
||||
end
|
||||
|
||||
if loaded_thermostat then
|
||||
set_thermostat(tonumber(loaded_thermostat))
|
||||
end
|
||||
|
||||
if loaded_oxygen_output then
|
||||
set_oxygen_output(tonumber(loaded_oxygen_output))
|
||||
end
|
||||
|
||||
if loaded_drill_speed then
|
||||
set_drill_speed(tonumber(loaded_drill_speed))
|
||||
end
|
||||
|
||||
if loaded_pump_speed then
|
||||
set_pump_speed(tonumber(loaded_pump_speed))
|
||||
end
|
||||
|
||||
if loaded_gravity then
|
||||
set_gravity(tonumber(loaded_gravity))
|
||||
end
|
||||
|
||||
if loaded_progress then
|
||||
progress = tonumber(loaded_progress)
|
||||
end
|
||||
|
||||
if loaded_research_progress then
|
||||
research_progress = tonumber(loaded_research_progress)
|
||||
end
|
||||
|
||||
if loaded_alien_count then
|
||||
alien_count = tonumber(loaded_alien_count)
|
||||
end
|
||||
|
||||
if loaded_unlimited then
|
||||
unlimited = tonumber(loaded_unlimited)
|
||||
end
|
||||
|
||||
io.close(file)
|
||||
print("Loaded money: " .. loaded_money)
|
||||
end
|
||||
|
||||
--prevents cheating by exiting to the menu to avoid payments
|
||||
minetest.register_on_shutdown(function()
|
||||
money = money - math.floor(2000 * progress)
|
||||
save_game()
|
||||
end)
|
||||
|
||||
--generates terrain
|
||||
minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||
if minp.y > 0 or maxp.y < 0 then return end
|
||||
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
|
||||
local area = VoxelArea:new{MinEdge=emin, MaxEdge=emax}
|
||||
local data = vm:get_data()
|
||||
for z = minp.z, maxp.z do
|
||||
for x = minp.x, maxp.x do
|
||||
local vi = area:index(x, 0, z)
|
||||
data[area:index(x, 0, z)] = minetest.get_content_id("moontest:moon_surface")
|
||||
end
|
||||
end
|
||||
vm:set_data(data)
|
||||
vm:write_to_map(data)
|
||||
end)
|
||||
|
||||
--main game loop
|
||||
minetest.register_globalstep(function(dtime)
|
||||
minetest.set_timeofday(0)
|
||||
update_oxygen()
|
||||
update_hunger()
|
||||
update_energy()
|
||||
update_climate()
|
||||
update_machines()
|
||||
update_simulation()
|
||||
update_shared_hud()
|
||||
|
||||
if minetest.get_gametime() > 10 then
|
||||
spawn_aliens()
|
||||
end
|
||||
|
||||
expense_timer = expense_timer + 1
|
||||
if expense_timer >= 1000 then
|
||||
money = money - math.floor(2000 * progress)
|
||||
update_money_hud()
|
||||
add_hud_message("Expenses paid: " .. "$" .. math.floor(2000 * progress))
|
||||
expense_timer = 0
|
||||
if progress < 1 then
|
||||
progress = progress + 0.01
|
||||
add_hud_message("Expenses increased to: " .. "$" .. math.floor(2000 * progress))
|
||||
end
|
||||
end
|
||||
|
||||
save_timer = save_timer + 1
|
||||
if save_timer > 100 then
|
||||
save_game()
|
||||
end
|
||||
|
||||
if money >= 30000 and unlimited == 0 then
|
||||
success = true
|
||||
game_over = true
|
||||
end
|
||||
|
||||
if money <= -10000 and unlimited == 0 then
|
||||
success = false
|
||||
game_over = true
|
||||
end
|
||||
|
||||
if game_over == true then
|
||||
game_over_timer = game_over_timer + 1
|
||||
if game_over_timer >= 200 then
|
||||
restart_game()
|
||||
reset_game_over_hud()
|
||||
game_over_timer = 0
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
--saves game data to file
|
||||
function save_game()
|
||||
local save_path = minetest.get_worldpath() .. DIR_DELIM .. "moontest_save.txt"
|
||||
minetest.safe_file_write(save_path, money .. "}"
|
||||
.. thermostat .. "}"
|
||||
.. oxygen_output .. "}"
|
||||
.. drill_speed .. "}"
|
||||
.. pump_speed .. "}"
|
||||
.. generated_gravity .. "}"
|
||||
.. progress .. "}"
|
||||
.. research_progress .. "}"
|
||||
.. alien_count .. "}"
|
||||
.. unlimited)
|
||||
end
|
||||
|
||||
--restarts the game
|
||||
function restart_game()
|
||||
game_over = false
|
||||
success = false
|
||||
money = 1000
|
||||
thermostat = 100
|
||||
oxygen_output = 100
|
||||
drill_speed = 100
|
||||
pump_speed = 100
|
||||
generated_gravity = 100
|
||||
progress = 0.3
|
||||
research_progress = 1
|
||||
expense_timer = 0
|
||||
for index, alien in pairs(aliens) do
|
||||
alien:remove()
|
||||
aliens[index] = nil
|
||||
end
|
||||
alien_count = 0
|
||||
build_habitat()
|
||||
for _,player in pairs(minetest.get_connected_players()) do
|
||||
local player_name = player:get_player_name()
|
||||
oxygen_levels[player_name] = 100
|
||||
hunger_levels[player_name] = 100
|
||||
energy_levels[player_name] = 100
|
||||
temperature_levels[player_name] = 100
|
||||
empty_inventory(player)
|
||||
player:set_hp(20)
|
||||
player:set_pos(vector.new(0, 2, 5))
|
||||
end
|
||||
end
|
||||
|
||||
--removes the success and failure conditions
|
||||
minetest.register_chatcommand("unlimited", {
|
||||
privs = {
|
||||
server = true
|
||||
},
|
||||
func = function(name, param)
|
||||
if param then
|
||||
local input = tonumber(param)
|
||||
if input then
|
||||
if input == 0 or input == 1 then
|
||||
unlimited = input
|
||||
return true, "Endless game = " .. unlimited
|
||||
else
|
||||
return true, "Usage: '/unlimited 0' or '/unlimited 1'"
|
||||
end
|
||||
else
|
||||
return true, "Usage: '/unlimited 0' or '/unlimited 1'"
|
||||
end
|
||||
else
|
||||
return true, "Usage: '/unlimited 0' or '/unlimited 1'"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
--handles player damage and death
|
||||
function hurt_player(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
player:set_hp(player:get_hp() - 1)
|
||||
end
|
||||
|
||||
--empties the player's inventory
|
||||
function empty_inventory(player)
|
||||
local items = {ItemStack("moontest:splat"), ItemStack("moontest:space_food")}
|
||||
local inventories = player:get_inventory():get_lists()
|
||||
for name, list in pairs(inventories) do
|
||||
for index, item in pairs(items) do
|
||||
while player:get_inventory():contains_item(name, items[index]) do
|
||||
player:get_inventory():remove_item(name, items[index])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--returns true if the given player is inside the habitat
|
||||
function inside_habitat(name)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
local pos = player:get_pos()
|
||||
if pos.x > 25 or pos.x < -25 or pos.y < 0 or pos.y > 6 or pos.z > 25 or pos.z < -25 then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
--returns true if the player is within 16 meters of the given position
|
||||
function player_in_range(machine_pos)
|
||||
for _,player in pairs(minetest.get_connected_players()) do
|
||||
local player_pos = player:get_pos()
|
||||
local distance = vector.distance(player_pos, machine_pos)
|
||||
if distance < 16 then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
--converts the given boolean variable to a number
|
||||
function bool_to_number(value)
|
||||
return value and 1 or 0
|
||||
end
|
||||
|
||||
--converts the given boolean variable to text for the HUD
|
||||
function bool_to_on_off(value)
|
||||
if value then
|
||||
return "ON"
|
||||
end
|
||||
return "OFF"
|
||||
end
|
||||
|
||||
--converts the given boolean variable to text for the HUD
|
||||
function bool_to_open_closed(value)
|
||||
if value then
|
||||
return "CLOSED"
|
||||
end
|
||||
return "OPEN"
|
||||
end
|
|
@ -0,0 +1,4 @@
|
|||
name = moontest
|
||||
author = Droog71
|
||||
description = Moon Habitat Simulator
|
||||
title = Moontest
|
|
@ -0,0 +1,49 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: 'cabinet.blend'
|
||||
# www.blender.org
|
||||
mtllib cabinet.mtl
|
||||
o Cube_Cube.001
|
||||
v -0.499996 0.290006 0.499998
|
||||
v -0.499996 0.290006 -0.500002
|
||||
v -0.499996 -0.495509 0.499998
|
||||
v -0.499996 -0.495509 -0.500002
|
||||
v 0.500004 0.290006 0.499998
|
||||
v 0.500004 0.290006 -0.500002
|
||||
v 0.500004 -0.495509 0.499998
|
||||
v 0.500004 -0.495509 -0.500002
|
||||
vt 0.500000 1.000000
|
||||
vt 0.000001 1.000000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.500000 0.000000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.500000 0.000000
|
||||
vt 0.500000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.500000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/5/2 4/6/2 8/7/2 7/8/2
|
||||
f 7/9/3 8/10/3 6/11/3 5/12/3
|
||||
f 5/13/4 6/14/4 2/15/4 1/16/4
|
||||
f 3/17/5 7/18/5 5/19/5 1/20/5
|
||||
f 8/21/6 4/22/6 2/23/6 6/11/6
|
|
@ -0,0 +1,255 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib Chair.mtl
|
||||
o Cube.005_Cube.000
|
||||
v 0.212500 -0.499998 0.212500
|
||||
v 0.212500 -0.499998 0.312500
|
||||
v 0.212500 0.005002 0.312500
|
||||
v 0.212500 0.005002 0.212500
|
||||
v 0.312500 0.005002 0.312500
|
||||
v 0.312500 0.005002 0.212500
|
||||
v 0.312500 -0.499998 0.312500
|
||||
v 0.312500 -0.499998 0.212500
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 -0.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
usemtl None.008
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 4/5/2 3/6/2 5/7/2 6/8/2
|
||||
f 6/9/3 5/10/3 7/11/3 8/12/3
|
||||
f 8/13/4 7/14/4 2/15/4 1/16/4
|
||||
f 4/5/5 6/17/5 8/18/5 1/16/5
|
||||
f 5/19/6 3/6/6 2/15/6 7/20/6
|
||||
o Cube.004_Cube.000
|
||||
v -0.312500 -0.499998 0.212500
|
||||
v -0.312500 -0.499998 0.312500
|
||||
v -0.312500 0.005002 0.312500
|
||||
v -0.312500 0.005002 0.212500
|
||||
v -0.212500 0.005002 0.312500
|
||||
v -0.212500 0.005002 0.212500
|
||||
v -0.212500 -0.499998 0.312500
|
||||
v -0.212500 -0.499998 0.212500
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
usemtl None.008
|
||||
s 1
|
||||
f 9/21/7 10/22/7 11/23/7 12/24/7
|
||||
f 12/25/8 11/26/8 13/27/8 14/28/8
|
||||
f 14/29/9 13/30/9 15/31/9 16/32/9
|
||||
f 16/33/10 15/34/10 10/35/10 9/36/10
|
||||
f 12/25/11 14/37/11 16/38/11 9/36/11
|
||||
f 13/39/12 11/26/12 10/35/12 15/40/12
|
||||
o Cube.003_Cube.000
|
||||
v -0.312500 -0.499998 -0.312500
|
||||
v -0.312500 -0.499998 -0.212500
|
||||
v -0.312500 0.005002 -0.212500
|
||||
v -0.312500 0.005002 -0.312500
|
||||
v -0.212500 0.005002 -0.212500
|
||||
v -0.212500 0.005002 -0.312500
|
||||
v -0.212500 -0.499998 -0.212500
|
||||
v -0.212500 -0.499998 -0.312500
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
usemtl None.008
|
||||
s 1
|
||||
f 17/41/13 18/42/13 19/43/13 20/44/13
|
||||
f 20/45/14 19/46/14 21/47/14 22/48/14
|
||||
f 22/49/15 21/50/15 23/51/15 24/52/15
|
||||
f 24/53/16 23/54/16 18/55/16 17/56/16
|
||||
f 20/45/17 22/57/17 24/58/17 17/56/17
|
||||
f 21/59/18 19/46/18 18/55/18 23/60/18
|
||||
o Cube.002_Cube.000
|
||||
v 0.212500 -0.499998 -0.312500
|
||||
v 0.212500 -0.499998 -0.212500
|
||||
v 0.212500 0.005002 -0.212500
|
||||
v 0.212500 0.005002 -0.312500
|
||||
v 0.312500 0.005002 -0.212500
|
||||
v 0.312500 0.005002 -0.312500
|
||||
v 0.312500 -0.499998 -0.212500
|
||||
v 0.312500 -0.499998 -0.312500
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
usemtl None.008
|
||||
s 1
|
||||
f 25/61/19 26/62/19 27/63/19 28/64/19
|
||||
f 28/65/20 27/66/20 29/67/20 30/68/20
|
||||
f 30/69/21 29/70/21 31/71/21 32/72/21
|
||||
f 32/73/22 31/74/22 26/75/22 25/76/22
|
||||
f 28/65/23 30/77/23 32/78/23 25/76/23
|
||||
f 29/79/24 27/66/24 26/75/24 31/80/24
|
||||
o Cube.001_Cube.000
|
||||
v -0.312500 0.105002 -0.312500
|
||||
v -0.312500 0.105002 -0.212500
|
||||
v -0.312500 0.655002 -0.212500
|
||||
v -0.312500 0.655002 -0.312500
|
||||
v 0.312500 0.655002 -0.212500
|
||||
v 0.312500 0.655002 -0.312500
|
||||
v 0.312500 0.105002 -0.212500
|
||||
v 0.312500 0.105002 -0.312500
|
||||
vt 0.000000 0.000000
|
||||
vt 0.125000 0.000000
|
||||
vt 0.125000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000040 0.160027
|
||||
vt 0.000040 0.000040
|
||||
vt 0.999960 0.000040
|
||||
vt 0.999960 0.160027
|
||||
vt 0.875000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.875000 0.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
usemtl None.008
|
||||
s 1
|
||||
f 33/81/25 34/82/25 35/83/25 36/84/25
|
||||
f 36/85/26 35/86/26 37/87/26 38/88/26
|
||||
f 38/89/27 37/90/27 39/91/27 40/92/27
|
||||
f 40/92/28 39/91/28 34/82/28 33/81/28
|
||||
f 36/84/29 38/89/29 40/92/29 33/81/29
|
||||
f 37/90/30 35/83/30 34/82/30 39/91/30
|
||||
o Cube_Cube.000
|
||||
v -0.312500 0.005002 0.312500
|
||||
v -0.312500 0.105002 0.312500
|
||||
v -0.312500 0.105002 -0.312500
|
||||
v -0.312500 0.005002 -0.312500
|
||||
v 0.312500 0.105002 -0.312500
|
||||
v 0.312500 0.005002 -0.312500
|
||||
v 0.312500 0.105002 0.312500
|
||||
v 0.312500 0.005002 0.312500
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
usemtl None.008
|
||||
s 1
|
||||
f 41/93/31 42/94/31 43/95/31 44/96/31
|
||||
f 44/97/32 43/98/32 45/99/32 46/100/32
|
||||
f 46/101/33 45/102/33 47/103/33 48/104/33
|
||||
f 48/105/34 47/106/34 42/107/34 41/108/34
|
||||
f 44/109/35 46/101/35 48/104/35 41/110/35
|
||||
f 45/111/36 43/112/36 42/113/36 47/114/36
|
|
@ -0,0 +1,520 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: 'coolant_single_horizontal_1.blend'
|
||||
# www.blender.org
|
||||
mtllib coolant_pipe_single_horizontal_1.mtl
|
||||
o Cylinder.003_Cylinder.001
|
||||
v 0.499994 0.391809 0.305282
|
||||
v -0.500187 0.391809 0.305282
|
||||
v -0.500187 0.392070 0.299967
|
||||
v 0.499994 0.392070 0.299967
|
||||
v -0.500187 0.392851 0.294703
|
||||
v 0.499994 0.392851 0.294703
|
||||
v -0.500187 0.394144 0.289541
|
||||
v 0.499994 0.394144 0.289541
|
||||
v -0.500187 0.395937 0.284531
|
||||
v 0.499994 0.395937 0.284531
|
||||
v -0.500187 0.398212 0.279720
|
||||
v 0.499994 0.398212 0.279720
|
||||
v -0.500187 0.400948 0.275156
|
||||
v 0.499994 0.400948 0.275156
|
||||
v -0.500187 0.404118 0.270882
|
||||
v 0.499994 0.404118 0.270882
|
||||
v -0.500187 0.407691 0.266939
|
||||
v 0.499994 0.407691 0.266939
|
||||
v -0.500187 0.411634 0.263365
|
||||
v 0.499994 0.411634 0.263365
|
||||
v -0.500187 0.415908 0.260195
|
||||
v 0.499994 0.415908 0.260195
|
||||
v -0.500187 0.420473 0.257459
|
||||
v 0.499994 0.420473 0.257459
|
||||
v -0.500187 0.425283 0.255184
|
||||
v 0.499994 0.425283 0.255184
|
||||
v -0.500187 0.430294 0.253391
|
||||
v 0.499994 0.430294 0.253391
|
||||
v -0.500187 0.435456 0.252098
|
||||
v 0.499994 0.435456 0.252098
|
||||
v -0.500187 0.440720 0.251318
|
||||
v 0.499994 0.440720 0.251318
|
||||
v -0.500187 0.446035 0.251056
|
||||
v 0.499994 0.446035 0.251056
|
||||
v -0.500187 0.451350 0.251318
|
||||
v 0.499994 0.451350 0.251318
|
||||
v -0.500187 0.456613 0.252098
|
||||
v 0.499994 0.456613 0.252098
|
||||
v -0.500187 0.461775 0.253391
|
||||
v 0.499994 0.461775 0.253391
|
||||
v -0.500187 0.466786 0.255184
|
||||
v 0.499994 0.466786 0.255184
|
||||
v -0.500187 0.471596 0.257459
|
||||
v 0.499994 0.471596 0.257459
|
||||
v -0.500187 0.476161 0.260195
|
||||
v 0.499994 0.476161 0.260195
|
||||
v -0.500187 0.480435 0.263365
|
||||
v 0.499994 0.480435 0.263365
|
||||
v -0.500187 0.484378 0.266939
|
||||
v 0.499994 0.484378 0.266939
|
||||
v -0.500187 0.487951 0.270882
|
||||
v 0.499994 0.487951 0.270882
|
||||
v -0.500187 0.491121 0.275156
|
||||
v 0.499994 0.491121 0.275156
|
||||
v -0.500187 0.493857 0.279720
|
||||
v 0.499994 0.493857 0.279720
|
||||
v -0.500187 0.496132 0.284531
|
||||
v 0.499994 0.496132 0.284531
|
||||
v -0.500187 0.497925 0.289541
|
||||
v 0.499994 0.497925 0.289541
|
||||
v -0.500187 0.499218 0.294703
|
||||
v 0.499994 0.499218 0.294703
|
||||
v -0.500187 0.499999 0.299967
|
||||
v 0.499994 0.499999 0.299967
|
||||
v -0.500187 0.500260 0.305282
|
||||
v 0.499994 0.500260 0.305282
|
||||
v -0.500187 0.499999 0.310597
|
||||
v 0.499994 0.499999 0.310597
|
||||
v -0.500187 0.499218 0.315861
|
||||
v 0.499994 0.499218 0.315861
|
||||
v -0.500187 0.497925 0.321023
|
||||
v 0.499994 0.497925 0.321023
|
||||
v -0.500187 0.496132 0.326033
|
||||
v 0.499994 0.496132 0.326033
|
||||
v -0.500187 0.493857 0.330844
|
||||
v 0.499994 0.493857 0.330844
|
||||
v -0.500187 0.491121 0.335408
|
||||
v 0.499994 0.491121 0.335408
|
||||
v -0.500187 0.487951 0.339682
|
||||
v 0.499994 0.487951 0.339682
|
||||
v -0.500187 0.484378 0.343625
|
||||
v 0.499994 0.484378 0.343625
|
||||
v -0.500187 0.480435 0.347199
|
||||
v 0.499994 0.480435 0.347199
|
||||
v -0.500187 0.476161 0.350369
|
||||
v 0.499994 0.476161 0.350369
|
||||
v -0.500187 0.471596 0.353104
|
||||
v 0.499994 0.471596 0.353104
|
||||
v -0.500187 0.466786 0.355380
|
||||
v 0.499994 0.466786 0.355380
|
||||
v -0.500187 0.461775 0.357172
|
||||
v 0.499994 0.461775 0.357172
|
||||
v -0.500187 0.456613 0.358465
|
||||
v 0.499994 0.456613 0.358465
|
||||
v -0.500187 0.451350 0.359246
|
||||
v 0.499994 0.451350 0.359246
|
||||
v -0.500187 0.446035 0.359507
|
||||
v 0.499994 0.446035 0.359507
|
||||
v -0.500187 0.440720 0.359246
|
||||
v 0.499994 0.440720 0.359246
|
||||
v -0.500187 0.435456 0.358465
|
||||
v 0.499994 0.435456 0.358465
|
||||
v -0.500187 0.430294 0.357172
|
||||
v 0.499994 0.430294 0.357172
|
||||
v -0.500187 0.425283 0.355380
|
||||
v 0.499994 0.425283 0.355380
|
||||
v -0.500187 0.420473 0.353104
|
||||
v 0.499994 0.420473 0.353104
|
||||
v -0.500187 0.415909 0.350369
|
||||
v 0.499994 0.415909 0.350369
|
||||
v -0.500187 0.411634 0.347199
|
||||
v 0.499994 0.411634 0.347199
|
||||
v -0.500187 0.407691 0.343625
|
||||
v 0.499994 0.407691 0.343625
|
||||
v -0.500187 0.404118 0.339682
|
||||
v 0.499994 0.404118 0.339682
|
||||
v -0.500187 0.400948 0.335408
|
||||
v 0.499994 0.400948 0.335408
|
||||
v -0.500187 0.398212 0.330844
|
||||
v 0.499994 0.398212 0.330844
|
||||
v -0.500187 0.395937 0.326033
|
||||
v 0.499994 0.395937 0.326033
|
||||
v -0.500187 0.394144 0.321023
|
||||
v 0.499994 0.394144 0.321023
|
||||
v -0.500187 0.392851 0.315861
|
||||
v 0.499994 0.392851 0.315861
|
||||
v -0.500187 0.392070 0.310597
|
||||
v 0.499994 0.392070 0.310597
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.002406 1.000000
|
||||
vt 0.002406 0.000000
|
||||
vt 0.009607 1.000000
|
||||
vt 0.009607 0.000000
|
||||
vt 0.021529 1.000000
|
||||
vt 0.021529 0.000000
|
||||
vt 0.038060 1.000000
|
||||
vt 0.038060 0.000000
|
||||
vt 0.059039 1.000000
|
||||
vt 0.059039 0.000000
|
||||
vt 0.084266 1.000000
|
||||
vt 0.084266 0.000000
|
||||
vt 0.113494 1.000000
|
||||
vt 0.113494 0.000000
|
||||
vt 0.146447 1.000000
|
||||
vt 0.146447 0.000000
|
||||
vt 0.182804 1.000000
|
||||
vt 0.182804 0.000000
|
||||
vt 0.222215 1.000000
|
||||
vt 0.222215 0.000000
|
||||
vt 0.264303 1.000000
|
||||
vt 0.264303 0.000000
|
||||
vt 0.308658 1.000000
|
||||
vt 0.308658 0.000000
|
||||
vt 0.354858 1.000000
|
||||
vt 0.354858 0.000000
|
||||
vt 0.402455 1.000000
|
||||
vt 0.402455 0.000000
|
||||
vt 0.450991 1.000000
|
||||
vt 0.450991 0.000000
|
||||
vt 0.499999 1.000000
|
||||
vt 0.499999 0.000000
|
||||
vt 0.549009 1.000000
|
||||
vt 0.549009 0.000000
|
||||
vt 0.597545 1.000000
|
||||
vt 0.597545 0.000000
|
||||
vt 0.645143 1.000000
|
||||
vt 0.645143 0.000000
|
||||
vt 0.691343 1.000000
|
||||
vt 0.691343 0.000000
|
||||
vt 0.735698 1.000000
|
||||
vt 0.735698 0.000000
|
||||
vt 0.777786 1.000000
|
||||
vt 0.777786 0.000000
|
||||
vt 0.817198 1.000000
|
||||
vt 0.817198 0.000000
|
||||
vt 0.853553 1.000000
|
||||
vt 0.853553 0.000000
|
||||
vt 0.886506 1.000000
|
||||
vt 0.886506 0.000000
|
||||
vt 0.915735 1.000000
|
||||
vt 0.915735 0.000000
|
||||
vt 0.940961 1.000000
|
||||
vt 0.940961 0.000000
|
||||
vt 0.961941 1.000000
|
||||
vt 0.961941 0.000000
|
||||
vt 0.978472 1.000000
|
||||
vt 0.978472 0.000000
|
||||
vt 0.990394 1.000000
|
||||
vt 0.990394 0.000000
|
||||
vt 0.997593 1.000000
|
||||
vt 0.997593 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.997593 1.000000
|
||||
vt 0.997593 0.000000
|
||||
vt 0.990394 1.000000
|
||||
vt 0.990394 0.000000
|
||||
vt 0.978472 1.000000
|
||||
vt 0.978472 0.000000
|
||||
vt 0.961940 1.000000
|
||||
vt 0.961940 0.000000
|
||||
vt 0.940961 1.000000
|
||||
vt 0.940961 0.000000
|
||||
vt 0.915734 1.000000
|
||||
vt 0.915734 0.000000
|
||||
vt 0.886506 1.000000
|
||||
vt 0.886506 0.000000
|
||||
vt 0.853553 1.000000
|
||||
vt 0.853553 0.000000
|
||||
vt 0.817196 1.000000
|
||||
vt 0.817196 0.000000
|
||||
vt 0.777785 1.000000
|
||||
vt 0.777785 0.000000
|
||||
vt 0.735698 1.000000
|
||||
vt 0.735698 0.000000
|
||||
vt 0.691342 1.000000
|
||||
vt 0.691342 0.000000
|
||||
vt 0.645143 1.000000
|
||||
vt 0.645143 0.000000
|
||||
vt 0.597545 1.000000
|
||||
vt 0.597545 0.000000
|
||||
vt 0.549009 1.000000
|
||||
vt 0.549009 0.000000
|
||||
vt 0.499999 1.000000
|
||||
vt 0.499999 0.000000
|
||||
vt 0.450991 1.000000
|
||||
vt 0.450991 0.000000
|
||||
vt 0.402455 1.000000
|
||||
vt 0.402455 0.000000
|
||||
vt 0.354858 1.000000
|
||||
vt 0.354858 0.000000
|
||||
vt 0.308658 1.000000
|
||||
vt 0.308658 0.000000
|
||||
vt 0.264303 1.000000
|
||||
vt 0.264303 0.000000
|
||||
vt 0.222215 1.000000
|
||||
vt 0.222215 0.000000
|
||||
vt 0.182804 1.000000
|
||||
vt 0.182804 0.000000
|
||||
vt 0.146447 1.000000
|
||||
vt 0.146447 0.000000
|
||||
vt 0.113497 1.000000
|
||||
vt 0.113497 0.000000
|
||||
vt 0.084266 1.000000
|
||||
vt 0.084266 0.000000
|
||||
vt 0.059040 1.000000
|
||||
vt 0.059040 0.000000
|
||||
vt 0.038060 1.000000
|
||||
vt 0.038060 0.000000
|
||||
vt 0.021529 1.000000
|
||||
vt 0.021529 0.000000
|
||||
vt 0.009607 1.000000
|
||||
vt 0.009607 0.000000
|
||||
vt 0.002406 0.549009
|
||||
vt 0.000000 0.500001
|
||||
vt 0.002406 0.450989
|
||||
vt 0.009607 0.402453
|
||||
vt 0.021529 0.354856
|
||||
vt 0.038060 0.308656
|
||||
vt 0.059039 0.264301
|
||||
vt 0.084266 0.222213
|
||||
vt 0.113494 0.182804
|
||||
vt 0.146447 0.146446
|
||||
vt 0.182804 0.113494
|
||||
vt 0.222215 0.084266
|
||||
vt 0.264303 0.059039
|
||||
vt 0.308658 0.038060
|
||||
vt 0.354858 0.021529
|
||||
vt 0.402455 0.009608
|
||||
vt 0.450991 0.002408
|
||||
vt 0.499999 0.000000
|
||||
vt 0.549009 0.002408
|
||||
vt 0.597545 0.009608
|
||||
vt 0.645141 0.021529
|
||||
vt 0.691342 0.038060
|
||||
vt 0.735697 0.059039
|
||||
vt 0.777785 0.084266
|
||||
vt 0.817196 0.113494
|
||||
vt 0.853553 0.146446
|
||||
vt 0.886506 0.182804
|
||||
vt 0.915734 0.222214
|
||||
vt 0.940961 0.264301
|
||||
vt 0.961940 0.308658
|
||||
vt 0.978471 0.354857
|
||||
vt 0.990394 0.402454
|
||||
vt 0.997593 0.450990
|
||||
vt 1.000000 0.499998
|
||||
vt 0.997593 0.549007
|
||||
vt 0.990394 0.597544
|
||||
vt 0.978472 0.645142
|
||||
vt 0.961940 0.691341
|
||||
vt 0.940961 0.735697
|
||||
vt 0.915735 0.777783
|
||||
vt 0.886506 0.817195
|
||||
vt 0.853553 0.853551
|
||||
vt 0.817196 0.886504
|
||||
vt 0.777786 0.915734
|
||||
vt 0.735698 0.940958
|
||||
vt 0.691343 0.961938
|
||||
vt 0.645143 0.978469
|
||||
vt 0.597545 0.990390
|
||||
vt 0.549009 0.997592
|
||||
vt 0.450991 0.997592
|
||||
vt 0.402455 0.990390
|
||||
vt 0.354858 0.978469
|
||||
vt 0.308658 0.961938
|
||||
vt 0.264300 0.940958
|
||||
vt 0.222215 0.915734
|
||||
vt 0.182804 0.886504
|
||||
vt 0.146447 0.853554
|
||||
vt 0.113494 0.817195
|
||||
vt 0.084265 0.777783
|
||||
vt 0.059039 0.735697
|
||||
vt 0.038058 0.691341
|
||||
vt 0.021528 0.645142
|
||||
vt 0.009606 0.597545
|
||||
vt 0.002409 1.000000
|
||||
vt 0.002409 0.000000
|
||||
vt 0.000000 0.500002
|
||||
vt 0.002407 0.450992
|
||||
vt 0.009607 0.402455
|
||||
vt 0.021529 0.354859
|
||||
vt 0.038059 0.308660
|
||||
vt 0.059040 0.264302
|
||||
vt 0.084266 0.222215
|
||||
vt 0.113495 0.182803
|
||||
vt 0.146445 0.146448
|
||||
vt 0.182805 0.113495
|
||||
vt 0.222215 0.084266
|
||||
vt 0.264301 0.059040
|
||||
vt 0.308658 0.038062
|
||||
vt 0.354857 0.021531
|
||||
vt 0.402456 0.009607
|
||||
vt 0.450991 0.002409
|
||||
vt 0.549009 0.002409
|
||||
vt 0.597546 0.009607
|
||||
vt 0.645141 0.021531
|
||||
vt 0.691342 0.038062
|
||||
vt 0.735699 0.059040
|
||||
vt 0.777785 0.084266
|
||||
vt 0.817196 0.113495
|
||||
vt 0.853553 0.146448
|
||||
vt 0.886506 0.182803
|
||||
vt 0.915734 0.222215
|
||||
vt 0.940961 0.264302
|
||||
vt 0.961940 0.308660
|
||||
vt 0.978471 0.354859
|
||||
vt 0.990392 0.402455
|
||||
vt 0.997593 0.450992
|
||||
vt 1.000000 0.500002
|
||||
vt 0.997593 0.549009
|
||||
vt 0.990392 0.597546
|
||||
vt 0.978471 0.645145
|
||||
vt 0.961940 0.691344
|
||||
vt 0.940961 0.735700
|
||||
vt 0.915734 0.777788
|
||||
vt 0.886506 0.817199
|
||||
vt 0.853553 0.853556
|
||||
vt 0.817196 0.886506
|
||||
vt 0.777785 0.915736
|
||||
vt 0.735697 0.940962
|
||||
vt 0.691342 0.961941
|
||||
vt 0.645141 0.978472
|
||||
vt 0.597546 0.990393
|
||||
vt 0.549009 0.997594
|
||||
vt 0.500000 1.000000
|
||||
vt 0.450991 0.997594
|
||||
vt 0.402456 0.990395
|
||||
vt 0.354857 0.978472
|
||||
vt 0.308659 0.961941
|
||||
vt 0.264301 0.940962
|
||||
vt 0.222216 0.915736
|
||||
vt 0.182805 0.886506
|
||||
vt 0.146448 0.853556
|
||||
vt 0.113495 0.817199
|
||||
vt 0.084267 0.777788
|
||||
vt 0.059040 0.735702
|
||||
vt 0.038059 0.691344
|
||||
vt 0.021529 0.645145
|
||||
vt 0.009607 0.597549
|
||||
vt 0.002407 0.549011
|
||||
vn 0.0000 -0.9988 -0.0491
|
||||
vn 0.0000 -0.9892 -0.1468
|
||||
vn 0.0000 -0.9700 -0.2430
|
||||
vn 0.0000 -0.9415 -0.3370
|
||||
vn 0.0000 -0.9040 -0.4275
|
||||
vn 0.0000 -0.8577 -0.5142
|
||||
vn -0.0000 -0.8032 -0.5957
|
||||
vn -0.0000 -0.7410 -0.6715
|
||||
vn 0.0000 -0.6716 -0.7409
|
||||
vn -0.0000 -0.5957 -0.8032
|
||||
vn -0.0000 -0.5141 -0.8577
|
||||
vn -0.0000 -0.4276 -0.9040
|
||||
vn -0.0000 -0.3369 -0.9415
|
||||
vn -0.0000 -0.2430 -0.9700
|
||||
vn -0.0000 -0.1466 -0.9892
|
||||
vn -0.0000 -0.0492 -0.9988
|
||||
vn -0.0000 0.0489 -0.9988
|
||||
vn -0.0000 0.1466 -0.9892
|
||||
vn -0.0000 0.2430 -0.9700
|
||||
vn -0.0000 0.3369 -0.9415
|
||||
vn -0.0000 0.4276 -0.9040
|
||||
vn -0.0000 0.5141 -0.8577
|
||||
vn -0.0000 0.5957 -0.8032
|
||||
vn -0.0000 0.6716 -0.7409
|
||||
vn -0.0000 0.7410 -0.6715
|
||||
vn -0.0000 0.8032 -0.5957
|
||||
vn -0.0000 0.8577 -0.5142
|
||||
vn -0.0000 0.9040 -0.4275
|
||||
vn -0.0000 0.9415 -0.3370
|
||||
vn -0.0000 0.9700 -0.2430
|
||||
vn -0.0000 0.9892 -0.1468
|
||||
vn -0.0000 0.9988 -0.0491
|
||||
vn -0.0000 0.9988 0.0491
|
||||
vn -0.0000 0.9892 0.1468
|
||||
vn -0.0000 0.9700 0.2430
|
||||
vn -0.0000 0.9415 0.3370
|
||||
vn -0.0000 0.9040 0.4275
|
||||
vn -0.0000 0.8577 0.5142
|
||||
vn 0.0000 0.8032 0.5957
|
||||
vn 0.0000 0.7410 0.6715
|
||||
vn 0.0000 0.6716 0.7409
|
||||
vn 0.0000 0.5957 0.8032
|
||||
vn 0.0000 0.5139 0.8578
|
||||
vn 0.0000 0.4277 0.9039
|
||||
vn 0.0000 0.3367 0.9416
|
||||
vn 0.0000 0.2430 0.9700
|
||||
vn 0.0000 0.1468 0.9892
|
||||
vn 0.0000 0.0490 0.9988
|
||||
vn 0.0000 -0.0490 0.9988
|
||||
vn 0.0000 -0.1468 0.9892
|
||||
vn 0.0000 -0.2430 0.9700
|
||||
vn 0.0000 -0.3367 0.9416
|
||||
vn 0.0000 -0.4277 0.9039
|
||||
vn 0.0000 -0.5140 0.8578
|
||||
vn 0.0000 -0.5956 0.8033
|
||||
vn 0.0000 -0.6716 0.7409
|
||||
vn 0.0000 -0.7410 0.6715
|
||||
vn 0.0000 -0.8032 0.5957
|
||||
vn 0.0000 -0.8577 0.5142
|
||||
vn 0.0000 -0.9040 0.4275
|
||||
vn 0.0000 -0.9415 0.3370
|
||||
vn 0.0000 -0.9700 0.2430
|
||||
vn -1.0000 -0.0000 0.0000
|
||||
vn 0.0000 -0.9892 0.1468
|
||||
vn 0.0000 -0.9988 0.0491
|
||||
vn 1.0000 0.0000 0.0000
|
||||
usemtl None.005
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 4/4/2 3/3/2 5/5/2 6/6/2
|
||||
f 6/6/3 5/5/3 7/7/3 8/8/3
|
||||
f 8/8/4 7/7/4 9/9/4 10/10/4
|
||||
f 10/10/5 9/9/5 11/11/5 12/12/5
|
||||
f 12/12/6 11/11/6 13/13/6 14/14/6
|
||||
f 14/14/7 13/13/7 15/15/7 16/16/7
|
||||
f 16/16/8 15/15/8 17/17/8 18/18/8
|
||||
f 18/18/9 17/17/9 19/19/9 20/20/9
|
||||
f 20/20/10 19/19/10 21/21/10 22/22/10
|
||||
f 22/22/11 21/21/11 23/23/11 24/24/11
|
||||
f 24/24/12 23/23/12 25/25/12 26/26/12
|
||||
f 26/26/13 25/25/13 27/27/13 28/28/13
|
||||
f 28/28/14 27/27/14 29/29/14 30/30/14
|
||||
f 30/30/15 29/29/15 31/31/15 32/32/15
|
||||
f 32/32/16 31/31/16 33/33/16 34/34/16
|
||||
f 34/34/17 33/33/17 35/35/17 36/36/17
|
||||
f 36/36/18 35/35/18 37/37/18 38/38/18
|
||||
f 38/38/19 37/37/19 39/39/19 40/40/19
|
||||
f 40/40/20 39/39/20 41/41/20 42/42/20
|
||||
f 42/42/21 41/41/21 43/43/21 44/44/21
|
||||
f 44/44/22 43/43/22 45/45/22 46/46/22
|
||||
f 46/46/23 45/45/23 47/47/23 48/48/23
|
||||
f 48/48/24 47/47/24 49/49/24 50/50/24
|
||||
f 50/50/25 49/49/25 51/51/25 52/52/25
|
||||
f 52/52/26 51/51/26 53/53/26 54/54/26
|
||||
f 54/54/27 53/53/27 55/55/27 56/56/27
|
||||
f 56/56/28 55/55/28 57/57/28 58/58/28
|
||||
f 58/58/29 57/57/29 59/59/29 60/60/29
|
||||
f 60/60/30 59/59/30 61/61/30 62/62/30
|
||||
f 62/62/31 61/61/31 63/63/31 64/64/31
|
||||
f 64/64/32 63/63/32 65/65/32 66/66/32
|
||||
f 66/66/33 65/65/33 67/67/33 68/68/33
|
||||
f 68/68/34 67/67/34 69/69/34 70/70/34
|
||||
f 70/70/35 69/69/35 71/71/35 72/72/35
|
||||
f 72/72/36 71/71/36 73/73/36 74/74/36
|
||||
f 74/74/37 73/73/37 75/75/37 76/76/37
|
||||
f 76/76/38 75/75/38 77/77/38 78/78/38
|
||||
f 78/78/39 77/77/39 79/79/39 80/80/39
|
||||
f 80/80/40 79/79/40 81/81/40 82/82/40
|
||||
f 82/82/41 81/81/41 83/83/41 84/84/41
|
||||
f 84/84/42 83/83/42 85/85/42 86/86/42
|
||||
f 86/86/43 85/85/43 87/87/43 88/88/43
|
||||
f 88/88/44 87/87/44 89/89/44 90/90/44
|
||||
f 90/90/45 89/89/45 91/91/45 92/92/45
|
||||
f 92/92/46 91/91/46 93/93/46 94/94/46
|
||||
f 94/94/47 93/93/47 95/95/47 96/96/47
|
||||
f 96/96/48 95/95/48 97/97/48 98/98/48
|
||||
f 98/98/49 97/97/49 99/99/49 100/100/49
|
||||
f 100/100/50 99/99/50 101/101/50 102/102/50
|
||||
f 102/102/51 101/101/51 103/103/51 104/104/51
|
||||
f 104/104/52 103/103/52 105/105/52 106/106/52
|
||||
f 106/106/53 105/105/53 107/107/53 108/108/53
|
||||
f 108/108/54 107/107/54 109/109/54 110/110/54
|
||||
f 110/110/55 109/109/55 111/111/55 112/112/55
|
||||
f 112/112/56 111/111/56 113/113/56 114/114/56
|
||||
f 114/114/57 113/113/57 115/115/57 116/116/57
|
||||
f 116/116/58 115/115/58 117/117/58 118/118/58
|
||||
f 118/118/59 117/117/59 119/119/59 120/120/59
|
||||
f 120/120/60 119/119/60 121/121/60 122/122/60
|
||||
f 122/122/61 121/121/61 123/123/61 124/124/61
|
||||
f 124/124/62 123/123/62 125/125/62 126/126/62
|
||||
f 3/127/63 2/128/63 127/129/63 125/130/63 123/131/63 121/132/63 119/133/63 117/134/63 115/135/63 113/136/63 111/137/63 109/138/63 107/139/63 105/140/63 103/141/63 101/142/63 99/143/63 97/144/63 95/145/63 93/146/63 91/147/63 89/148/63 87/149/63 85/150/63 83/151/63 81/152/63 79/153/63 77/154/63 75/155/63 73/156/63 71/157/63 69/158/63 67/159/63 65/160/63 63/161/63 61/162/63 59/163/63 57/164/63 55/165/63 53/166/63 51/167/63 49/168/63 47/169/63 45/170/63 43/171/63 41/172/63 39/173/63 37/174/63 35/175/63 33/33/63 31/176/63 29/177/63 27/178/63 25/179/63 23/180/63 21/181/63 19/182/63 17/183/63 15/184/63 13/185/63 11/186/63 9/187/63 7/188/63 5/189/63
|
||||
f 126/126/64 125/125/64 127/190/64 128/191/64
|
||||
f 128/191/65 127/190/65 2/2/65 1/1/65
|
||||
f 1/192/66 4/193/66 6/194/66 8/195/66 10/196/66 12/197/66 14/198/66 16/199/66 18/200/66 20/201/66 22/202/66 24/203/66 26/204/66 28/205/66 30/206/66 32/207/66 34/34/66 36/208/66 38/209/66 40/210/66 42/211/66 44/212/66 46/213/66 48/214/66 50/215/66 52/216/66 54/217/66 56/218/66 58/219/66 60/220/66 62/221/66 64/222/66 66/223/66 68/224/66 70/225/66 72/226/66 74/227/66 76/228/66 78/229/66 80/230/66 82/231/66 84/232/66 86/233/66 88/234/66 90/235/66 92/236/66 94/237/66 96/238/66 98/239/66 100/240/66 102/241/66 104/242/66 106/243/66 108/244/66 110/245/66 112/246/66 114/247/66 116/248/66 118/249/66 120/250/66 122/251/66 124/252/66 126/253/66 128/254/66
|
|
@ -0,0 +1,520 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: 'coolant_pipe_pump.blend'
|
||||
# www.blender.org
|
||||
mtllib coolant_pipe_single_horizontal_2.mtl
|
||||
o Cylinder.003_Cylinder.001
|
||||
v 0.499994 -0.359173 0.305282
|
||||
v -0.500187 -0.359173 0.305282
|
||||
v -0.500187 -0.358912 0.299967
|
||||
v 0.499994 -0.358912 0.299967
|
||||
v -0.500187 -0.358131 0.294703
|
||||
v 0.499994 -0.358131 0.294703
|
||||
v -0.500187 -0.356838 0.289541
|
||||
v 0.499994 -0.356838 0.289541
|
||||
v -0.500187 -0.355045 0.284531
|
||||
v 0.499994 -0.355045 0.284531
|
||||
v -0.500187 -0.352770 0.279720
|
||||
v 0.499994 -0.352770 0.279720
|
||||
v -0.500187 -0.350034 0.275156
|
||||
v 0.499994 -0.350034 0.275156
|
||||
v -0.500187 -0.346864 0.270882
|
||||
v 0.499994 -0.346864 0.270882
|
||||
v -0.500187 -0.343291 0.266939
|
||||
v 0.499994 -0.343291 0.266939
|
||||
v -0.500187 -0.339348 0.263365
|
||||
v 0.499994 -0.339348 0.263365
|
||||
v -0.500187 -0.335074 0.260195
|
||||
v 0.499994 -0.335074 0.260195
|
||||
v -0.500187 -0.330509 0.257459
|
||||
v 0.499994 -0.330509 0.257459
|
||||
v -0.500187 -0.325699 0.255184
|
||||
v 0.499994 -0.325699 0.255184
|
||||
v -0.500187 -0.320688 0.253391
|
||||
v 0.499994 -0.320688 0.253391
|
||||
v -0.500187 -0.315526 0.252098
|
||||
v 0.499994 -0.315526 0.252098
|
||||
v -0.500187 -0.310262 0.251318
|
||||
v 0.499994 -0.310262 0.251318
|
||||
v -0.500187 -0.304947 0.251056
|
||||
v 0.499994 -0.304947 0.251056
|
||||
v -0.500187 -0.299632 0.251318
|
||||
v 0.499994 -0.299632 0.251318
|
||||
v -0.500187 -0.294369 0.252098
|
||||
v 0.499994 -0.294369 0.252098
|
||||
v -0.500187 -0.289207 0.253391
|
||||
v 0.499994 -0.289207 0.253391
|
||||
v -0.500187 -0.284196 0.255184
|
||||
v 0.499994 -0.284196 0.255184
|
||||
v -0.500187 -0.279386 0.257459
|
||||
v 0.499994 -0.279386 0.257459
|
||||
v -0.500187 -0.274821 0.260195
|
||||
v 0.499994 -0.274821 0.260195
|
||||
v -0.500187 -0.270547 0.263365
|
||||
v 0.499994 -0.270547 0.263365
|
||||
v -0.500187 -0.266604 0.266939
|
||||
v 0.499994 -0.266604 0.266939
|
||||
v -0.500187 -0.263031 0.270882
|
||||
v 0.499994 -0.263031 0.270882
|
||||
v -0.500187 -0.259861 0.275156
|
||||
v 0.499994 -0.259861 0.275156
|
||||
v -0.500187 -0.257125 0.279720
|
||||
v 0.499994 -0.257125 0.279720
|
||||
v -0.500187 -0.254850 0.284531
|
||||
v 0.499994 -0.254850 0.284531
|
||||
v -0.500187 -0.253057 0.289541
|
||||
v 0.499994 -0.253057 0.289541
|
||||
v -0.500187 -0.251764 0.294703
|
||||
v 0.499994 -0.251764 0.294703
|
||||
v -0.500187 -0.250983 0.299967
|
||||
v 0.499994 -0.250983 0.299967
|
||||
v -0.500187 -0.250722 0.305282
|
||||
v 0.499994 -0.250722 0.305282
|
||||
v -0.500187 -0.250983 0.310597
|
||||
v 0.499994 -0.250983 0.310597
|
||||
v -0.500187 -0.251764 0.315861
|
||||
v 0.499994 -0.251764 0.315861
|
||||
v -0.500187 -0.253057 0.321023
|
||||
v 0.499994 -0.253057 0.321023
|
||||
v -0.500187 -0.254850 0.326033
|
||||
v 0.499994 -0.254850 0.326033
|
||||
v -0.500187 -0.257125 0.330844
|
||||
v 0.499994 -0.257125 0.330844
|
||||
v -0.500187 -0.259861 0.335408
|
||||
v 0.499994 -0.259861 0.335408
|
||||
v -0.500187 -0.263031 0.339682
|
||||
v 0.499994 -0.263031 0.339682
|
||||
v -0.500187 -0.266604 0.343625
|
||||
v 0.499994 -0.266604 0.343625
|
||||
v -0.500187 -0.270547 0.347199
|
||||
v 0.499994 -0.270547 0.347199
|
||||
v -0.500187 -0.274821 0.350369
|
||||
v 0.499994 -0.274821 0.350369
|
||||
v -0.500187 -0.279386 0.353104
|
||||
v 0.499994 -0.279386 0.353104
|
||||
v -0.500187 -0.284196 0.355380
|
||||
v 0.499994 -0.284196 0.355380
|
||||
v -0.500187 -0.289207 0.357172
|
||||
v 0.499994 -0.289207 0.357172
|
||||
v -0.500187 -0.294369 0.358465
|
||||
v 0.499994 -0.294369 0.358465
|
||||
v -0.500187 -0.299632 0.359246
|
||||
v 0.499994 -0.299632 0.359246
|
||||
v -0.500187 -0.304947 0.359507
|
||||
v 0.499994 -0.304947 0.359507
|
||||
v -0.500187 -0.310262 0.359246
|
||||
v 0.499994 -0.310262 0.359246
|
||||
v -0.500187 -0.315526 0.358465
|
||||
v 0.499994 -0.315526 0.358465
|
||||
v -0.500187 -0.320688 0.357172
|
||||
v 0.499994 -0.320688 0.357172
|
||||
v -0.500187 -0.325699 0.355380
|
||||
v 0.499994 -0.325699 0.355380
|
||||
v -0.500187 -0.330509 0.353104
|
||||
v 0.499994 -0.330509 0.353104
|
||||
v -0.500187 -0.335073 0.350369
|
||||
v 0.499994 -0.335073 0.350369
|
||||
v -0.500187 -0.339348 0.347199
|
||||
v 0.499994 -0.339348 0.347199
|
||||
v -0.500187 -0.343291 0.343625
|
||||
v 0.499994 -0.343291 0.343625
|
||||
v -0.500187 -0.346864 0.339682
|
||||
v 0.499994 -0.346864 0.339682
|
||||
v -0.500187 -0.350034 0.335408
|
||||
v 0.499994 -0.350034 0.335408
|
||||
v -0.500187 -0.352770 0.330844
|
||||
v 0.499994 -0.352770 0.330844
|
||||
v -0.500187 -0.355045 0.326033
|
||||
v 0.499994 -0.355045 0.326033
|
||||
v -0.500187 -0.356838 0.321023
|
||||
v 0.499994 -0.356838 0.321023
|
||||
v -0.500187 -0.358131 0.315861
|
||||
v 0.499994 -0.358131 0.315861
|
||||
v -0.500187 -0.358912 0.310597
|
||||
v 0.499994 -0.358912 0.310597
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.002406 1.000000
|
||||
vt 0.002406 0.000000
|
||||
vt 0.009607 1.000000
|
||||
vt 0.009607 0.000000
|
||||
vt 0.021529 1.000000
|
||||
vt 0.021529 0.000000
|
||||
vt 0.038060 1.000000
|
||||
vt 0.038060 0.000000
|
||||
vt 0.059039 1.000000
|
||||
vt 0.059039 0.000000
|
||||
vt 0.084266 1.000000
|
||||
vt 0.084266 0.000000
|
||||
vt 0.113494 1.000000
|
||||
vt 0.113494 0.000000
|
||||
vt 0.146447 1.000000
|
||||
vt 0.146447 0.000000
|
||||
vt 0.182804 1.000000
|
||||
vt 0.182804 0.000000
|
||||
vt 0.222215 1.000000
|
||||
vt 0.222215 0.000000
|
||||
vt 0.264303 1.000000
|
||||
vt 0.264303 0.000000
|
||||
vt 0.308658 1.000000
|
||||
vt 0.308658 0.000000
|
||||
vt 0.354858 1.000000
|
||||
vt 0.354858 0.000000
|
||||
vt 0.402455 1.000000
|
||||
vt 0.402455 0.000000
|
||||
vt 0.450991 1.000000
|
||||
vt 0.450991 0.000000
|
||||
vt 0.499999 1.000000
|
||||
vt 0.499999 0.000000
|
||||
vt 0.549009 1.000000
|
||||
vt 0.549009 0.000000
|
||||
vt 0.597545 1.000000
|
||||
vt 0.597545 0.000000
|
||||
vt 0.645143 1.000000
|
||||
vt 0.645143 0.000000
|
||||
vt 0.691343 1.000000
|
||||
vt 0.691343 0.000000
|
||||
vt 0.735698 1.000000
|
||||
vt 0.735698 0.000000
|
||||
vt 0.777786 1.000000
|
||||
vt 0.777786 0.000000
|
||||
vt 0.817198 1.000000
|
||||
vt 0.817198 0.000000
|
||||
vt 0.853553 1.000000
|
||||
vt 0.853553 0.000000
|
||||
vt 0.886506 1.000000
|
||||
vt 0.886506 0.000000
|
||||
vt 0.915735 1.000000
|
||||
vt 0.915735 0.000000
|
||||
vt 0.940961 1.000000
|
||||
vt 0.940961 0.000000
|
||||
vt 0.961941 1.000000
|
||||
vt 0.961941 0.000000
|
||||
vt 0.978472 1.000000
|
||||
vt 0.978472 0.000000
|
||||
vt 0.990394 1.000000
|
||||
vt 0.990394 0.000000
|
||||
vt 0.997593 1.000000
|
||||
vt 0.997593 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.997593 1.000000
|
||||
vt 0.997593 0.000000
|
||||
vt 0.990394 1.000000
|
||||
vt 0.990394 0.000000
|
||||
vt 0.978472 1.000000
|
||||
vt 0.978472 0.000000
|
||||
vt 0.961940 1.000000
|
||||
vt 0.961940 0.000000
|
||||
vt 0.940961 1.000000
|
||||
vt 0.940961 0.000000
|
||||
vt 0.915734 1.000000
|
||||
vt 0.915734 0.000000
|
||||
vt 0.886506 1.000000
|
||||
vt 0.886506 0.000000
|
||||
vt 0.853553 1.000000
|
||||
vt 0.853553 0.000000
|
||||
vt 0.817196 1.000000
|
||||
vt 0.817196 0.000000
|
||||
vt 0.777785 1.000000
|
||||
vt 0.777785 0.000000
|
||||
vt 0.735698 1.000000
|
||||
vt 0.735698 0.000000
|
||||
vt 0.691342 1.000000
|
||||
vt 0.691342 0.000000
|
||||
vt 0.645143 1.000000
|
||||
vt 0.645143 0.000000
|
||||
vt 0.597545 1.000000
|
||||
vt 0.597545 0.000000
|
||||
vt 0.549009 1.000000
|
||||
vt 0.549009 0.000000
|
||||
vt 0.499999 1.000000
|
||||
vt 0.499999 0.000000
|
||||
vt 0.450991 1.000000
|
||||
vt 0.450991 0.000000
|
||||
vt 0.402455 1.000000
|
||||
vt 0.402455 0.000000
|
||||
vt 0.354858 1.000000
|
||||
vt 0.354858 0.000000
|
||||
vt 0.308658 1.000000
|
||||
vt 0.308658 0.000000
|
||||
vt 0.264303 1.000000
|
||||
vt 0.264303 0.000000
|
||||
vt 0.222215 1.000000
|
||||
vt 0.222215 0.000000
|
||||
vt 0.182804 1.000000
|
||||
vt 0.182804 0.000000
|
||||
vt 0.146447 1.000000
|
||||
vt 0.146447 0.000000
|
||||
vt 0.113497 1.000000
|
||||
vt 0.113497 0.000000
|
||||
vt 0.084266 1.000000
|
||||
vt 0.084266 0.000000
|
||||
vt 0.059040 1.000000
|
||||
vt 0.059040 0.000000
|
||||
vt 0.038060 1.000000
|
||||
vt 0.038060 0.000000
|
||||
vt 0.021529 1.000000
|
||||
vt 0.021529 0.000000
|
||||
vt 0.009607 1.000000
|
||||
vt 0.009607 0.000000
|
||||
vt 0.002406 0.549009
|
||||
vt 0.000000 0.500001
|
||||
vt 0.002406 0.450989
|
||||
vt 0.009607 0.402453
|
||||
vt 0.021529 0.354856
|
||||
vt 0.038060 0.308656
|
||||
vt 0.059039 0.264301
|
||||
vt 0.084266 0.222213
|
||||
vt 0.113494 0.182804
|
||||
vt 0.146447 0.146446
|
||||
vt 0.182804 0.113494
|
||||
vt 0.222215 0.084266
|
||||
vt 0.264303 0.059039
|
||||
vt 0.308658 0.038060
|
||||
vt 0.354858 0.021529
|
||||
vt 0.402455 0.009608
|
||||
vt 0.450991 0.002408
|
||||
vt 0.499999 0.000000
|
||||
vt 0.549009 0.002408
|
||||
vt 0.597545 0.009608
|
||||
vt 0.645141 0.021529
|
||||
vt 0.691342 0.038060
|
||||
vt 0.735697 0.059039
|
||||
vt 0.777785 0.084266
|
||||
vt 0.817196 0.113494
|
||||
vt 0.853553 0.146446
|
||||
vt 0.886506 0.182804
|
||||
vt 0.915734 0.222214
|
||||
vt 0.940961 0.264301
|
||||
vt 0.961940 0.308658
|
||||
vt 0.978471 0.354857
|
||||
vt 0.990394 0.402454
|
||||
vt 0.997593 0.450990
|
||||
vt 1.000000 0.499998
|
||||
vt 0.997593 0.549007
|
||||
vt 0.990394 0.597544
|
||||
vt 0.978472 0.645142
|
||||
vt 0.961940 0.691341
|
||||
vt 0.940961 0.735697
|
||||
vt 0.915735 0.777783
|
||||
vt 0.886506 0.817195
|
||||
vt 0.853553 0.853551
|
||||
vt 0.817196 0.886504
|
||||
vt 0.777786 0.915734
|
||||
vt 0.735698 0.940958
|
||||
vt 0.691343 0.961938
|
||||
vt 0.645143 0.978469
|
||||
vt 0.597545 0.990390
|
||||
vt 0.549009 0.997592
|
||||
vt 0.450991 0.997592
|
||||
vt 0.402455 0.990390
|
||||
vt 0.354858 0.978469
|
||||
vt 0.308658 0.961938
|
||||
vt 0.264300 0.940958
|
||||
vt 0.222215 0.915734
|
||||
vt 0.182804 0.886504
|
||||
vt 0.146447 0.853554
|
||||
vt 0.113494 0.817195
|
||||
vt 0.084265 0.777783
|
||||
vt 0.059039 0.735697
|
||||
vt 0.038058 0.691341
|
||||
vt 0.021528 0.645142
|
||||
vt 0.009606 0.597545
|
||||
vt 0.002409 1.000000
|
||||
vt 0.002409 0.000000
|
||||
vt 0.000000 0.500002
|
||||
vt 0.002407 0.450992
|
||||
vt 0.009607 0.402455
|
||||
vt 0.021529 0.354859
|
||||
vt 0.038059 0.308660
|
||||
vt 0.059040 0.264302
|
||||
vt 0.084266 0.222215
|
||||
vt 0.113495 0.182803
|
||||
vt 0.146445 0.146448
|
||||
vt 0.182805 0.113495
|
||||
vt 0.222215 0.084266
|
||||
vt 0.264301 0.059040
|
||||
vt 0.308658 0.038062
|
||||
vt 0.354857 0.021531
|
||||
vt 0.402456 0.009607
|
||||
vt 0.450991 0.002409
|
||||
vt 0.549009 0.002409
|
||||
vt 0.597546 0.009607
|
||||
vt 0.645141 0.021531
|
||||
vt 0.691342 0.038062
|
||||
vt 0.735699 0.059040
|
||||
vt 0.777785 0.084266
|
||||
vt 0.817196 0.113495
|
||||
vt 0.853553 0.146448
|
||||
vt 0.886506 0.182803
|
||||
vt 0.915734 0.222215
|
||||
vt 0.940961 0.264302
|
||||
vt 0.961940 0.308660
|
||||
vt 0.978471 0.354859
|
||||
vt 0.990392 0.402455
|
||||
vt 0.997593 0.450992
|
||||
vt 1.000000 0.500002
|
||||
vt 0.997593 0.549009
|
||||
vt 0.990392 0.597546
|
||||
vt 0.978471 0.645145
|
||||
vt 0.961940 0.691344
|
||||
vt 0.940961 0.735700
|
||||
vt 0.915734 0.777788
|
||||
vt 0.886506 0.817199
|
||||
vt 0.853553 0.853556
|
||||
vt 0.817196 0.886506
|
||||
vt 0.777785 0.915736
|
||||
vt 0.735697 0.940962
|
||||
vt 0.691342 0.961941
|
||||
vt 0.645141 0.978472
|
||||
vt 0.597546 0.990393
|
||||
vt 0.549009 0.997594
|
||||
vt 0.500000 1.000000
|
||||
vt 0.450991 0.997594
|
||||
vt 0.402456 0.990395
|
||||
vt 0.354857 0.978472
|
||||
vt 0.308659 0.961941
|
||||
vt 0.264301 0.940962
|
||||
vt 0.222216 0.915736
|
||||
vt 0.182805 0.886506
|
||||
vt 0.146448 0.853556
|
||||
vt 0.113495 0.817199
|
||||
vt 0.084267 0.777788
|
||||
vt 0.059040 0.735702
|
||||
vt 0.038059 0.691344
|
||||
vt 0.021529 0.645145
|
||||
vt 0.009607 0.597549
|
||||
vt 0.002407 0.549011
|
||||
vn 0.0000 -0.9988 -0.0491
|
||||
vn 0.0000 -0.9892 -0.1468
|
||||
vn 0.0000 -0.9700 -0.2430
|
||||
vn 0.0000 -0.9415 -0.3370
|
||||
vn 0.0000 -0.9040 -0.4275
|
||||
vn 0.0000 -0.8577 -0.5142
|
||||
vn 0.0000 -0.8032 -0.5957
|
||||
vn 0.0000 -0.7410 -0.6715
|
||||
vn 0.0000 -0.6716 -0.7409
|
||||
vn 0.0000 -0.5957 -0.8032
|
||||
vn 0.0000 -0.5141 -0.8577
|
||||
vn 0.0000 -0.4276 -0.9040
|
||||
vn 0.0000 -0.3369 -0.9415
|
||||
vn 0.0000 -0.2430 -0.9700
|
||||
vn 0.0000 -0.1466 -0.9892
|
||||
vn 0.0000 -0.0492 -0.9988
|
||||
vn -0.0000 0.0489 -0.9988
|
||||
vn 0.0000 0.1466 -0.9892
|
||||
vn 0.0000 0.2430 -0.9700
|
||||
vn 0.0000 0.3369 -0.9415
|
||||
vn 0.0000 0.4276 -0.9040
|
||||
vn 0.0000 0.5141 -0.8577
|
||||
vn 0.0000 0.5957 -0.8032
|
||||
vn 0.0000 0.6716 -0.7409
|
||||
vn 0.0000 0.7410 -0.6715
|
||||
vn 0.0000 0.8032 -0.5957
|
||||
vn 0.0000 0.8577 -0.5142
|
||||
vn 0.0000 0.9040 -0.4275
|
||||
vn 0.0000 0.9415 -0.3370
|
||||
vn 0.0000 0.9700 -0.2430
|
||||
vn 0.0000 0.9892 -0.1468
|
||||
vn 0.0000 0.9988 -0.0491
|
||||
vn 0.0000 0.9988 0.0491
|
||||
vn 0.0000 0.9892 0.1468
|
||||
vn 0.0000 0.9700 0.2430
|
||||
vn 0.0000 0.9415 0.3370
|
||||
vn 0.0000 0.9040 0.4275
|
||||
vn 0.0000 0.8577 0.5142
|
||||
vn 0.0000 0.8032 0.5957
|
||||
vn 0.0000 0.7410 0.6715
|
||||
vn 0.0000 0.6716 0.7409
|
||||
vn 0.0000 0.5957 0.8032
|
||||
vn 0.0000 0.5139 0.8578
|
||||
vn 0.0000 0.4277 0.9039
|
||||
vn 0.0000 0.3367 0.9416
|
||||
vn 0.0000 0.2430 0.9700
|
||||
vn 0.0000 0.1468 0.9892
|
||||
vn 0.0000 0.0490 0.9988
|
||||
vn 0.0000 -0.0490 0.9988
|
||||
vn 0.0000 -0.1468 0.9892
|
||||
vn 0.0000 -0.2430 0.9700
|
||||
vn 0.0000 -0.3367 0.9416
|
||||
vn 0.0000 -0.4277 0.9039
|
||||
vn 0.0000 -0.5140 0.8578
|
||||
vn 0.0000 -0.5956 0.8033
|
||||
vn 0.0000 -0.6716 0.7409
|
||||
vn 0.0000 -0.7410 0.6715
|
||||
vn 0.0000 -0.8032 0.5957
|
||||
vn 0.0000 -0.8577 0.5142
|
||||
vn 0.0000 -0.9040 0.4275
|
||||
vn 0.0000 -0.9415 0.3370
|
||||
vn 0.0000 -0.9700 0.2430
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 -0.9892 0.1468
|
||||
vn 0.0000 -0.9988 0.0491
|
||||
vn 1.0000 0.0000 0.0000
|
||||
usemtl None.005
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 4/4/2 3/3/2 5/5/2 6/6/2
|
||||
f 6/6/3 5/5/3 7/7/3 8/8/3
|
||||
f 8/8/4 7/7/4 9/9/4 10/10/4
|
||||
f 10/10/5 9/9/5 11/11/5 12/12/5
|
||||
f 12/12/6 11/11/6 13/13/6 14/14/6
|
||||
f 14/14/7 13/13/7 15/15/7 16/16/7
|
||||
f 16/16/8 15/15/8 17/17/8 18/18/8
|
||||
f 18/18/9 17/17/9 19/19/9 20/20/9
|
||||
f 20/20/10 19/19/10 21/21/10 22/22/10
|
||||
f 22/22/11 21/21/11 23/23/11 24/24/11
|
||||
f 24/24/12 23/23/12 25/25/12 26/26/12
|
||||
f 26/26/13 25/25/13 27/27/13 28/28/13
|
||||
f 28/28/14 27/27/14 29/29/14 30/30/14
|
||||
f 30/30/15 29/29/15 31/31/15 32/32/15
|
||||
f 32/32/16 31/31/16 33/33/16 34/34/16
|
||||
f 34/34/17 33/33/17 35/35/17 36/36/17
|
||||
f 36/36/18 35/35/18 37/37/18 38/38/18
|
||||
f 38/38/19 37/37/19 39/39/19 40/40/19
|
||||
f 40/40/20 39/39/20 41/41/20 42/42/20
|
||||
f 42/42/21 41/41/21 43/43/21 44/44/21
|
||||
f 44/44/22 43/43/22 45/45/22 46/46/22
|
||||
f 46/46/23 45/45/23 47/47/23 48/48/23
|
||||
f 48/48/24 47/47/24 49/49/24 50/50/24
|
||||
f 50/50/25 49/49/25 51/51/25 52/52/25
|
||||
f 52/52/26 51/51/26 53/53/26 54/54/26
|
||||
f 54/54/27 53/53/27 55/55/27 56/56/27
|
||||
f 56/56/28 55/55/28 57/57/28 58/58/28
|
||||
f 58/58/29 57/57/29 59/59/29 60/60/29
|
||||
f 60/60/30 59/59/30 61/61/30 62/62/30
|
||||
f 62/62/31 61/61/31 63/63/31 64/64/31
|
||||
f 64/64/32 63/63/32 65/65/32 66/66/32
|
||||
f 66/66/33 65/65/33 67/67/33 68/68/33
|
||||
f 68/68/34 67/67/34 69/69/34 70/70/34
|
||||
f 70/70/35 69/69/35 71/71/35 72/72/35
|
||||
f 72/72/36 71/71/36 73/73/36 74/74/36
|
||||
f 74/74/37 73/73/37 75/75/37 76/76/37
|
||||
f 76/76/38 75/75/38 77/77/38 78/78/38
|
||||
f 78/78/39 77/77/39 79/79/39 80/80/39
|
||||
f 80/80/40 79/79/40 81/81/40 82/82/40
|
||||
f 82/82/41 81/81/41 83/83/41 84/84/41
|
||||
f 84/84/42 83/83/42 85/85/42 86/86/42
|
||||
f 86/86/43 85/85/43 87/87/43 88/88/43
|
||||
f 88/88/44 87/87/44 89/89/44 90/90/44
|
||||
f 90/90/45 89/89/45 91/91/45 92/92/45
|
||||
f 92/92/46 91/91/46 93/93/46 94/94/46
|
||||
f 94/94/47 93/93/47 95/95/47 96/96/47
|
||||
f 96/96/48 95/95/48 97/97/48 98/98/48
|
||||
f 98/98/49 97/97/49 99/99/49 100/100/49
|
||||
f 100/100/50 99/99/50 101/101/50 102/102/50
|
||||
f 102/102/51 101/101/51 103/103/51 104/104/51
|
||||
f 104/104/52 103/103/52 105/105/52 106/106/52
|
||||
f 106/106/53 105/105/53 107/107/53 108/108/53
|
||||
f 108/108/54 107/107/54 109/109/54 110/110/54
|
||||
f 110/110/55 109/109/55 111/111/55 112/112/55
|
||||
f 112/112/56 111/111/56 113/113/56 114/114/56
|
||||
f 114/114/57 113/113/57 115/115/57 116/116/57
|
||||
f 116/116/58 115/115/58 117/117/58 118/118/58
|
||||
f 118/118/59 117/117/59 119/119/59 120/120/59
|
||||
f 120/120/60 119/119/60 121/121/60 122/122/60
|
||||
f 122/122/61 121/121/61 123/123/61 124/124/61
|
||||
f 124/124/62 123/123/62 125/125/62 126/126/62
|
||||
f 3/127/63 2/128/63 127/129/63 125/130/63 123/131/63 121/132/63 119/133/63 117/134/63 115/135/63 113/136/63 111/137/63 109/138/63 107/139/63 105/140/63 103/141/63 101/142/63 99/143/63 97/144/63 95/145/63 93/146/63 91/147/63 89/148/63 87/149/63 85/150/63 83/151/63 81/152/63 79/153/63 77/154/63 75/155/63 73/156/63 71/157/63 69/158/63 67/159/63 65/160/63 63/161/63 61/162/63 59/163/63 57/164/63 55/165/63 53/166/63 51/167/63 49/168/63 47/169/63 45/170/63 43/171/63 41/172/63 39/173/63 37/174/63 35/175/63 33/33/63 31/176/63 29/177/63 27/178/63 25/179/63 23/180/63 21/181/63 19/182/63 17/183/63 15/184/63 13/185/63 11/186/63 9/187/63 7/188/63 5/189/63
|
||||
f 126/126/64 125/125/64 127/190/64 128/191/64
|
||||
f 128/191/65 127/190/65 2/2/65 1/1/65
|
||||
f 1/192/66 4/193/66 6/194/66 8/195/66 10/196/66 12/197/66 14/198/66 16/199/66 18/200/66 20/201/66 22/202/66 24/203/66 26/204/66 28/205/66 30/206/66 32/207/66 34/34/66 36/208/66 38/209/66 40/210/66 42/211/66 44/212/66 46/213/66 48/214/66 50/215/66 52/216/66 54/217/66 56/218/66 58/219/66 60/220/66 62/221/66 64/222/66 66/223/66 68/224/66 70/225/66 72/226/66 74/227/66 76/228/66 78/229/66 80/230/66 82/231/66 84/232/66 86/233/66 88/234/66 90/235/66 92/236/66 94/237/66 96/238/66 98/239/66 100/240/66 102/241/66 104/242/66 106/243/66 108/244/66 110/245/66 112/246/66 114/247/66 116/248/66 118/249/66 120/250/66 122/251/66 124/252/66 126/253/66 128/254/66
|
|
@ -0,0 +1,520 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: 'coolant_pipe_single_vertical_1.blend'
|
||||
# www.blender.org
|
||||
mtllib coolant_pipe_single_vertical_1.mtl
|
||||
o Cylinder.003
|
||||
v -0.305294 -0.499953 0.359518
|
||||
v -0.305294 0.500131 0.359518
|
||||
v -0.310609 0.500131 0.359257
|
||||
v -0.310609 -0.499953 0.359257
|
||||
v -0.315873 0.500131 0.358476
|
||||
v -0.315873 -0.499953 0.358476
|
||||
v -0.321035 0.500131 0.357183
|
||||
v -0.321035 -0.499953 0.357183
|
||||
v -0.326045 0.500131 0.355390
|
||||
v -0.326045 -0.499953 0.355390
|
||||
v -0.330856 0.500131 0.353115
|
||||
v -0.330856 -0.499953 0.353115
|
||||
v -0.335420 0.500131 0.350379
|
||||
v -0.335420 -0.499953 0.350379
|
||||
v -0.339694 0.500131 0.347209
|
||||
v -0.339694 -0.499953 0.347209
|
||||
v -0.343637 0.500131 0.343636
|
||||
v -0.343637 -0.499953 0.343636
|
||||
v -0.347211 0.500131 0.339693
|
||||
v -0.347211 -0.499953 0.339693
|
||||
v -0.350381 0.500131 0.335418
|
||||
v -0.350381 -0.499953 0.335418
|
||||
v -0.353117 0.500131 0.330854
|
||||
v -0.353117 -0.499953 0.330854
|
||||
v -0.355392 0.500131 0.326044
|
||||
v -0.355392 -0.499953 0.326044
|
||||
v -0.357185 0.500131 0.321033
|
||||
v -0.357185 -0.499953 0.321033
|
||||
v -0.358478 0.500131 0.315871
|
||||
v -0.358478 -0.499953 0.315871
|
||||
v -0.359258 0.500131 0.310607
|
||||
v -0.359258 -0.499953 0.310607
|
||||
v -0.359519 0.500131 0.305292
|
||||
v -0.359519 -0.499953 0.305292
|
||||
v -0.359258 0.500131 0.299977
|
||||
v -0.359258 -0.499953 0.299977
|
||||
v -0.358478 0.500131 0.294714
|
||||
v -0.358478 -0.499953 0.294714
|
||||
v -0.357185 0.500131 0.289552
|
||||
v -0.357185 -0.499953 0.289552
|
||||
v -0.355392 0.500131 0.284541
|
||||
v -0.355392 -0.499953 0.284541
|
||||
v -0.353117 0.500131 0.279731
|
||||
v -0.353117 -0.499953 0.279731
|
||||
v -0.350381 0.500131 0.275166
|
||||
v -0.350381 -0.499953 0.275166
|
||||
v -0.347211 0.500131 0.270892
|
||||
v -0.347211 -0.499953 0.270892
|
||||
v -0.343637 0.500131 0.266949
|
||||
v -0.343637 -0.499953 0.266949
|
||||
v -0.339694 0.500131 0.263376
|
||||
v -0.339694 -0.499953 0.263376
|
||||
v -0.335420 0.500131 0.260206
|
||||
v -0.335420 -0.499953 0.260206
|
||||
v -0.330856 0.500131 0.257470
|
||||
v -0.330856 -0.499953 0.257470
|
||||
v -0.326045 0.500131 0.255195
|
||||
v -0.326045 -0.499953 0.255195
|
||||
v -0.321035 0.500131 0.253402
|
||||
v -0.321035 -0.499953 0.253402
|
||||
v -0.315873 0.500131 0.252109
|
||||
v -0.315873 -0.499953 0.252109
|
||||
v -0.310609 0.500131 0.251328
|
||||
v -0.310609 -0.499953 0.251328
|
||||
v -0.305294 0.500131 0.251067
|
||||
v -0.305294 -0.499953 0.251067
|
||||
v -0.299979 0.500131 0.251328
|
||||
v -0.299979 -0.499953 0.251328
|
||||
v -0.294715 0.500131 0.252109
|
||||
v -0.294715 -0.499953 0.252109
|
||||
v -0.289553 0.500131 0.253402
|
||||
v -0.289553 -0.499953 0.253402
|
||||
v -0.284543 0.500131 0.255195
|
||||
v -0.284543 -0.499953 0.255195
|
||||
v -0.279732 0.500131 0.257470
|
||||
v -0.279732 -0.499953 0.257470
|
||||
v -0.275168 0.500131 0.260206
|
||||
v -0.275168 -0.499953 0.260206
|
||||
v -0.270894 0.500131 0.263376
|
||||
v -0.270894 -0.499953 0.263376
|
||||
v -0.266951 0.500131 0.266949
|
||||
v -0.266951 -0.499953 0.266949
|
||||
v -0.263377 0.500131 0.270892
|
||||
v -0.263377 -0.499953 0.270892
|
||||
v -0.260207 0.500131 0.275166
|
||||
v -0.260207 -0.499953 0.275166
|
||||
v -0.257471 0.500131 0.279731
|
||||
v -0.257471 -0.499953 0.279731
|
||||
v -0.255196 0.500131 0.284541
|
||||
v -0.255196 -0.499953 0.284541
|
||||
v -0.253404 0.500131 0.289552
|
||||
v -0.253404 -0.499953 0.289552
|
||||
v -0.252111 0.500131 0.294714
|
||||
v -0.252111 -0.499953 0.294714
|
||||
v -0.251330 0.500131 0.299977
|
||||
v -0.251330 -0.499953 0.299977
|
||||
v -0.251069 0.500131 0.305292
|
||||
v -0.251069 -0.499953 0.305292
|
||||
v -0.251330 0.500131 0.310607
|
||||
v -0.251330 -0.499953 0.310607
|
||||
v -0.252110 0.500131 0.315871
|
||||
v -0.252110 -0.499953 0.315871
|
||||
v -0.253404 0.500131 0.321033
|
||||
v -0.253404 -0.499953 0.321033
|
||||
v -0.255196 0.500131 0.326044
|
||||
v -0.255196 -0.499953 0.326044
|
||||
v -0.257471 0.500131 0.330854
|
||||
v -0.257471 -0.499953 0.330854
|
||||
v -0.260207 0.500131 0.335418
|
||||
v -0.260207 -0.499953 0.335418
|
||||
v -0.263377 0.500131 0.339693
|
||||
v -0.263377 -0.499953 0.339693
|
||||
v -0.266951 0.500131 0.343636
|
||||
v -0.266951 -0.499953 0.343636
|
||||
v -0.270894 0.500131 0.347209
|
||||
v -0.270894 -0.499953 0.347209
|
||||
v -0.275168 0.500131 0.350379
|
||||
v -0.275168 -0.499953 0.350379
|
||||
v -0.279732 0.500131 0.353115
|
||||
v -0.279732 -0.499953 0.353115
|
||||
v -0.284543 0.500131 0.355390
|
||||
v -0.284543 -0.499953 0.355390
|
||||
v -0.289553 0.500131 0.357183
|
||||
v -0.289553 -0.499953 0.357183
|
||||
v -0.294715 0.500131 0.358476
|
||||
v -0.294715 -0.499953 0.358476
|
||||
v -0.299979 0.500131 0.359257
|
||||
v -0.299979 -0.499953 0.359257
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.002409 1.000000
|
||||
vt 0.002409 0.000000
|
||||
vt 0.009607 1.000000
|
||||
vt 0.009607 0.000000
|
||||
vt 0.021529 1.000000
|
||||
vt 0.021529 0.000000
|
||||
vt 0.038060 1.000000
|
||||
vt 0.038060 0.000000
|
||||
vt 0.059040 1.000000
|
||||
vt 0.059040 0.000000
|
||||
vt 0.084266 1.000000
|
||||
vt 0.084266 0.000000
|
||||
vt 0.113494 1.000000
|
||||
vt 0.113494 0.000000
|
||||
vt 0.146447 1.000000
|
||||
vt 0.146447 0.000000
|
||||
vt 0.182804 1.000000
|
||||
vt 0.182804 0.000000
|
||||
vt 0.222215 1.000000
|
||||
vt 0.222215 0.000000
|
||||
vt 0.264303 1.000000
|
||||
vt 0.264303 0.000000
|
||||
vt 0.308658 1.000000
|
||||
vt 0.308658 0.000000
|
||||
vt 0.354857 1.000000
|
||||
vt 0.354857 0.000000
|
||||
vt 0.402454 1.000000
|
||||
vt 0.402454 0.000000
|
||||
vt 0.450992 1.000000
|
||||
vt 0.450992 0.000000
|
||||
vt 0.500001 1.000000
|
||||
vt 0.500001 0.000000
|
||||
vt 0.549009 1.000000
|
||||
vt 0.549009 0.000000
|
||||
vt 0.597544 1.000000
|
||||
vt 0.597544 0.000000
|
||||
vt 0.645143 1.000000
|
||||
vt 0.645143 0.000000
|
||||
vt 0.691342 1.000000
|
||||
vt 0.691342 0.000000
|
||||
vt 0.735700 1.000000
|
||||
vt 0.735700 0.000000
|
||||
vt 0.777785 1.000000
|
||||
vt 0.777785 0.000000
|
||||
vt 0.817197 1.000000
|
||||
vt 0.817197 0.000000
|
||||
vt 0.853553 1.000000
|
||||
vt 0.853553 0.000000
|
||||
vt 0.886506 1.000000
|
||||
vt 0.886506 0.000000
|
||||
vt 0.915734 1.000000
|
||||
vt 0.915734 0.000000
|
||||
vt 0.940960 1.000000
|
||||
vt 0.940960 0.000000
|
||||
vt 0.961940 1.000000
|
||||
vt 0.961940 0.000000
|
||||
vt 0.978471 1.000000
|
||||
vt 0.978471 0.000000
|
||||
vt 0.990393 1.000000
|
||||
vt 0.990393 0.000000
|
||||
vt 0.997592 1.000000
|
||||
vt 0.997592 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.997592 1.000000
|
||||
vt 0.997592 0.000000
|
||||
vt 0.990393 1.000000
|
||||
vt 0.990393 0.000000
|
||||
vt 0.978471 1.000000
|
||||
vt 0.978471 0.000000
|
||||
vt 0.961940 1.000000
|
||||
vt 0.961940 0.000000
|
||||
vt 0.940960 1.000000
|
||||
vt 0.940960 0.000000
|
||||
vt 0.915734 1.000000
|
||||
vt 0.915734 0.000000
|
||||
vt 0.886505 1.000000
|
||||
vt 0.886505 0.000000
|
||||
vt 0.853552 1.000000
|
||||
vt 0.853552 0.000000
|
||||
vt 0.817197 1.000000
|
||||
vt 0.817197 0.000000
|
||||
vt 0.777785 1.000000
|
||||
vt 0.777785 0.000000
|
||||
vt 0.735697 1.000000
|
||||
vt 0.735697 0.000000
|
||||
vt 0.691342 1.000000
|
||||
vt 0.691342 0.000000
|
||||
vt 0.645143 1.000000
|
||||
vt 0.645143 0.000000
|
||||
vt 0.597544 1.000000
|
||||
vt 0.597544 0.000000
|
||||
vt 0.549009 1.000000
|
||||
vt 0.549009 0.000000
|
||||
vt 0.500001 1.000000
|
||||
vt 0.500001 0.000000
|
||||
vt 0.450992 1.000000
|
||||
vt 0.450992 0.000000
|
||||
vt 0.402454 1.000000
|
||||
vt 0.402454 0.000000
|
||||
vt 0.354857 1.000000
|
||||
vt 0.354857 0.000000
|
||||
vt 0.308660 1.000000
|
||||
vt 0.308660 0.000000
|
||||
vt 0.264303 1.000000
|
||||
vt 0.264303 0.000000
|
||||
vt 0.222215 1.000000
|
||||
vt 0.222215 0.000000
|
||||
vt 0.182804 1.000000
|
||||
vt 0.182804 0.000000
|
||||
vt 0.146448 1.000000
|
||||
vt 0.146448 0.000000
|
||||
vt 0.113496 1.000000
|
||||
vt 0.113496 0.000000
|
||||
vt 0.084266 1.000000
|
||||
vt 0.084266 0.000000
|
||||
vt 0.059040 1.000000
|
||||
vt 0.059040 0.000000
|
||||
vt 0.038062 1.000000
|
||||
vt 0.038062 0.000000
|
||||
vt 0.021531 1.000000
|
||||
vt 0.021531 0.000000
|
||||
vt 0.009607 1.000000
|
||||
vt 0.009607 0.000000
|
||||
vt 0.002409 0.549009
|
||||
vt 0.000000 0.500000
|
||||
vt 0.002409 0.450991
|
||||
vt 0.009607 0.402453
|
||||
vt 0.021531 0.354857
|
||||
vt 0.038062 0.308658
|
||||
vt 0.059040 0.264300
|
||||
vt 0.084266 0.222215
|
||||
vt 0.113496 0.182803
|
||||
vt 0.146448 0.146447
|
||||
vt 0.182805 0.113494
|
||||
vt 0.222216 0.084266
|
||||
vt 0.264303 0.059040
|
||||
vt 0.308660 0.038059
|
||||
vt 0.354857 0.021531
|
||||
vt 0.402456 0.009607
|
||||
vt 0.450992 0.002409
|
||||
vt 0.500001 0.000000
|
||||
vt 0.549009 0.002409
|
||||
vt 0.597546 0.009607
|
||||
vt 0.645143 0.021531
|
||||
vt 0.691342 0.038062
|
||||
vt 0.735697 0.059040
|
||||
vt 0.777785 0.084266
|
||||
vt 0.817197 0.113494
|
||||
vt 0.853552 0.146447
|
||||
vt 0.886505 0.182803
|
||||
vt 0.915734 0.222215
|
||||
vt 0.940960 0.264303
|
||||
vt 0.961940 0.308658
|
||||
vt 0.978471 0.354857
|
||||
vt 0.990394 0.402453
|
||||
vt 0.997592 0.450991
|
||||
vt 1.000000 0.500000
|
||||
vt 0.997592 0.549009
|
||||
vt 0.990394 0.597544
|
||||
vt 0.978471 0.645143
|
||||
vt 0.961940 0.691342
|
||||
vt 0.940960 0.735700
|
||||
vt 0.915737 0.777785
|
||||
vt 0.886506 0.817197
|
||||
vt 0.853553 0.853553
|
||||
vt 0.817197 0.886506
|
||||
vt 0.777785 0.915737
|
||||
vt 0.735700 0.940960
|
||||
vt 0.691342 0.961938
|
||||
vt 0.645144 0.978469
|
||||
vt 0.597546 0.990393
|
||||
vt 0.549009 0.997594
|
||||
vt 0.450992 0.997594
|
||||
vt 0.402456 0.990393
|
||||
vt 0.354857 0.978469
|
||||
vt 0.308660 0.961938
|
||||
vt 0.264303 0.940960
|
||||
vt 0.222215 0.915737
|
||||
vt 0.182804 0.886506
|
||||
vt 0.146447 0.853553
|
||||
vt 0.113496 0.817197
|
||||
vt 0.084266 0.777785
|
||||
vt 0.059040 0.735700
|
||||
vt 0.038060 0.691342
|
||||
vt 0.021531 0.645143
|
||||
vt 0.009607 0.597544
|
||||
vt 0.002409 1.000000
|
||||
vt 0.002409 0.000000
|
||||
vt 0.000000 0.500001
|
||||
vt 0.002407 0.450992
|
||||
vt 0.009607 0.402456
|
||||
vt 0.021529 0.354859
|
||||
vt 0.038059 0.308660
|
||||
vt 0.059040 0.264303
|
||||
vt 0.084266 0.222215
|
||||
vt 0.113495 0.182804
|
||||
vt 0.146445 0.146448
|
||||
vt 0.182803 0.113496
|
||||
vt 0.222215 0.084266
|
||||
vt 0.264301 0.059040
|
||||
vt 0.308658 0.038062
|
||||
vt 0.354857 0.021532
|
||||
vt 0.402456 0.009608
|
||||
vt 0.450991 0.002409
|
||||
vt 0.549008 0.002409
|
||||
vt 0.597546 0.009608
|
||||
vt 0.645141 0.021532
|
||||
vt 0.691342 0.038062
|
||||
vt 0.735697 0.059040
|
||||
vt 0.777785 0.084266
|
||||
vt 0.817196 0.113496
|
||||
vt 0.853553 0.146448
|
||||
vt 0.886506 0.182804
|
||||
vt 0.915734 0.222215
|
||||
vt 0.940961 0.264303
|
||||
vt 0.961940 0.308660
|
||||
vt 0.978471 0.354859
|
||||
vt 0.990392 0.402456
|
||||
vt 0.997592 0.450992
|
||||
vt 1.000000 0.500001
|
||||
vt 0.997592 0.549009
|
||||
vt 0.990392 0.597546
|
||||
vt 0.978471 0.645144
|
||||
vt 0.961940 0.691343
|
||||
vt 0.940961 0.735700
|
||||
vt 0.915734 0.777787
|
||||
vt 0.886504 0.817198
|
||||
vt 0.853552 0.853555
|
||||
vt 0.817196 0.886506
|
||||
vt 0.777785 0.915737
|
||||
vt 0.735697 0.940961
|
||||
vt 0.691342 0.961940
|
||||
vt 0.645141 0.978471
|
||||
vt 0.597546 0.990394
|
||||
vt 0.549008 0.997594
|
||||
vt 0.500000 1.000000
|
||||
vt 0.450991 0.997594
|
||||
vt 0.402456 0.990394
|
||||
vt 0.354857 0.978471
|
||||
vt 0.308658 0.961940
|
||||
vt 0.264301 0.940961
|
||||
vt 0.222216 0.915737
|
||||
vt 0.182805 0.886506
|
||||
vt 0.146448 0.853556
|
||||
vt 0.113495 0.817198
|
||||
vt 0.084266 0.777787
|
||||
vt 0.059040 0.735700
|
||||
vt 0.038059 0.691343
|
||||
vt 0.021529 0.645144
|
||||
vt 0.009607 0.597548
|
||||
vt 0.002407 0.549011
|
||||
vn -0.0491 -0.0000 0.9988
|
||||
vn -0.1468 -0.0000 0.9892
|
||||
vn -0.2430 -0.0000 0.9700
|
||||
vn -0.3370 -0.0000 0.9415
|
||||
vn -0.4275 -0.0000 0.9040
|
||||
vn -0.5142 -0.0000 0.8577
|
||||
vn -0.5957 -0.0000 0.8032
|
||||
vn -0.6715 -0.0000 0.7410
|
||||
vn -0.7409 -0.0000 0.6716
|
||||
vn -0.8033 -0.0000 0.5956
|
||||
vn -0.8577 -0.0000 0.5142
|
||||
vn -0.9040 -0.0000 0.4276
|
||||
vn -0.9415 -0.0000 0.3369
|
||||
vn -0.9700 -0.0000 0.2430
|
||||
vn -0.9891 0.0000 0.1469
|
||||
vn -0.9988 -0.0000 0.0490
|
||||
vn -0.9988 0.0000 -0.0490
|
||||
vn -0.9892 0.0000 -0.1466
|
||||
vn -0.9700 0.0000 -0.2430
|
||||
vn -0.9415 0.0000 -0.3369
|
||||
vn -0.9040 0.0000 -0.4276
|
||||
vn -0.8577 0.0000 -0.5141
|
||||
vn -0.8032 0.0000 -0.5957
|
||||
vn -0.7409 0.0000 -0.6716
|
||||
vn -0.6715 0.0000 -0.7410
|
||||
vn -0.5957 0.0000 -0.8032
|
||||
vn -0.5142 0.0000 -0.8577
|
||||
vn -0.4275 0.0000 -0.9040
|
||||
vn -0.3370 0.0000 -0.9415
|
||||
vn -0.2430 0.0000 -0.9700
|
||||
vn -0.1468 0.0000 -0.9892
|
||||
vn -0.0491 0.0000 -0.9988
|
||||
vn 0.0491 0.0000 -0.9988
|
||||
vn 0.1468 0.0000 -0.9892
|
||||
vn 0.2430 0.0000 -0.9700
|
||||
vn 0.3370 0.0000 -0.9415
|
||||
vn 0.4275 0.0000 -0.9040
|
||||
vn 0.5142 0.0000 -0.8577
|
||||
vn 0.5957 0.0000 -0.8032
|
||||
vn 0.6715 0.0000 -0.7410
|
||||
vn 0.7409 0.0000 -0.6716
|
||||
vn 0.8032 0.0000 -0.5957
|
||||
vn 0.8577 0.0000 -0.5141
|
||||
vn 0.9040 0.0000 -0.4276
|
||||
vn 0.9416 0.0000 -0.3367
|
||||
vn 0.9700 0.0000 -0.2430
|
||||
vn 0.9892 0.0000 -0.1468
|
||||
vn 0.9988 0.0000 -0.0490
|
||||
vn 0.9988 0.0000 0.0490
|
||||
vn 0.9892 -0.0000 0.1469
|
||||
vn 0.9700 -0.0000 0.2432
|
||||
vn 0.9416 -0.0000 0.3367
|
||||
vn 0.9040 -0.0000 0.4276
|
||||
vn 0.8577 -0.0000 0.5142
|
||||
vn 0.8033 -0.0000 0.5956
|
||||
vn 0.7409 -0.0000 0.6716
|
||||
vn 0.6715 -0.0000 0.7410
|
||||
vn 0.5957 -0.0000 0.8032
|
||||
vn 0.5142 -0.0000 0.8577
|
||||
vn 0.4275 -0.0000 0.9040
|
||||
vn 0.3370 -0.0000 0.9415
|
||||
vn 0.2430 -0.0000 0.9700
|
||||
vn 0.0000 1.0000 -0.0000
|
||||
vn 0.1468 -0.0000 0.9892
|
||||
vn 0.0491 -0.0000 0.9988
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
usemtl None.008
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 4/4/2 3/3/2 5/5/2 6/6/2
|
||||
f 6/6/3 5/5/3 7/7/3 8/8/3
|
||||
f 8/8/4 7/7/4 9/9/4 10/10/4
|
||||
f 10/10/5 9/9/5 11/11/5 12/12/5
|
||||
f 12/12/6 11/11/6 13/13/6 14/14/6
|
||||
f 14/14/7 13/13/7 15/15/7 16/16/7
|
||||
f 16/16/8 15/15/8 17/17/8 18/18/8
|
||||
f 18/18/9 17/17/9 19/19/9 20/20/9
|
||||
f 20/20/10 19/19/10 21/21/10 22/22/10
|
||||
f 22/22/11 21/21/11 23/23/11 24/24/11
|
||||
f 24/24/12 23/23/12 25/25/12 26/26/12
|
||||
f 26/26/13 25/25/13 27/27/13 28/28/13
|
||||
f 28/28/14 27/27/14 29/29/14 30/30/14
|
||||
f 30/30/15 29/29/15 31/31/15 32/32/15
|
||||
f 32/32/16 31/31/16 33/33/16 34/34/16
|
||||
f 34/34/17 33/33/17 35/35/17 36/36/17
|
||||
f 36/36/18 35/35/18 37/37/18 38/38/18
|
||||
f 38/38/19 37/37/19 39/39/19 40/40/19
|
||||
f 40/40/20 39/39/20 41/41/20 42/42/20
|
||||
f 42/42/21 41/41/21 43/43/21 44/44/21
|
||||
f 44/44/22 43/43/22 45/45/22 46/46/22
|
||||
f 46/46/23 45/45/23 47/47/23 48/48/23
|
||||
f 48/48/24 47/47/24 49/49/24 50/50/24
|
||||
f 50/50/25 49/49/25 51/51/25 52/52/25
|
||||
f 52/52/26 51/51/26 53/53/26 54/54/26
|
||||
f 54/54/27 53/53/27 55/55/27 56/56/27
|
||||
f 56/56/28 55/55/28 57/57/28 58/58/28
|
||||
f 58/58/29 57/57/29 59/59/29 60/60/29
|
||||
f 60/60/30 59/59/30 61/61/30 62/62/30
|
||||
f 62/62/31 61/61/31 63/63/31 64/64/31
|
||||
f 64/64/32 63/63/32 65/65/32 66/66/32
|
||||
f 66/66/33 65/65/33 67/67/33 68/68/33
|
||||
f 68/68/34 67/67/34 69/69/34 70/70/34
|
||||
f 70/70/35 69/69/35 71/71/35 72/72/35
|
||||
f 72/72/36 71/71/36 73/73/36 74/74/36
|
||||
f 74/74/37 73/73/37 75/75/37 76/76/37
|
||||
f 76/76/38 75/75/38 77/77/38 78/78/38
|
||||
f 78/78/39 77/77/39 79/79/39 80/80/39
|
||||
f 80/80/40 79/79/40 81/81/40 82/82/40
|
||||
f 82/82/41 81/81/41 83/83/41 84/84/41
|
||||
f 84/84/42 83/83/42 85/85/42 86/86/42
|
||||
f 86/86/43 85/85/43 87/87/43 88/88/43
|
||||
f 88/88/44 87/87/44 89/89/44 90/90/44
|
||||
f 90/90/45 89/89/45 91/91/45 92/92/45
|
||||
f 92/92/46 91/91/46 93/93/46 94/94/46
|
||||
f 94/94/47 93/93/47 95/95/47 96/96/47
|
||||
f 96/96/48 95/95/48 97/97/48 98/98/48
|
||||
f 98/98/49 97/97/49 99/99/49 100/100/49
|
||||
f 100/100/50 99/99/50 101/101/50 102/102/50
|
||||
f 102/102/51 101/101/51 103/103/51 104/104/51
|
||||
f 104/104/52 103/103/52 105/105/52 106/106/52
|
||||
f 106/106/53 105/105/53 107/107/53 108/108/53
|
||||
f 108/108/54 107/107/54 109/109/54 110/110/54
|
||||
f 110/110/55 109/109/55 111/111/55 112/112/55
|
||||
f 112/112/56 111/111/56 113/113/56 114/114/56
|
||||
f 114/114/57 113/113/57 115/115/57 116/116/57
|
||||
f 116/116/58 115/115/58 117/117/58 118/118/58
|
||||
f 118/118/59 117/117/59 119/119/59 120/120/59
|
||||
f 120/120/60 119/119/60 121/121/60 122/122/60
|
||||
f 122/122/61 121/121/61 123/123/61 124/124/61
|
||||
f 124/124/62 123/123/62 125/125/62 126/126/62
|
||||
f 3/127/63 2/128/63 127/129/63 125/130/63 123/131/63 121/132/63 119/133/63 117/134/63 115/135/63 113/136/63 111/137/63 109/138/63 107/139/63 105/140/63 103/141/63 101/142/63 99/143/63 97/144/63 95/145/63 93/146/63 91/147/63 89/148/63 87/149/63 85/150/63 83/151/63 81/152/63 79/153/63 77/154/63 75/155/63 73/156/63 71/157/63 69/158/63 67/159/63 65/160/63 63/161/63 61/162/63 59/163/63 57/164/63 55/165/63 53/166/63 51/167/63 49/168/63 47/169/63 45/170/63 43/171/63 41/172/63 39/173/63 37/174/63 35/175/63 33/33/63 31/176/63 29/177/63 27/178/63 25/179/63 23/180/63 21/181/63 19/182/63 17/183/63 15/184/63 13/185/63 11/186/63 9/187/63 7/188/63 5/189/63
|
||||
f 126/126/64 125/125/64 127/190/64 128/191/64
|
||||
f 128/191/65 127/190/65 2/2/65 1/1/65
|
||||
f 1/192/66 4/193/66 6/194/66 8/195/66 10/196/66 12/197/66 14/198/66 16/199/66 18/200/66 20/201/66 22/202/66 24/203/66 26/204/66 28/205/66 30/206/66 32/207/66 34/34/66 36/208/66 38/209/66 40/210/66 42/211/66 44/212/66 46/213/66 48/214/66 50/215/66 52/216/66 54/217/66 56/218/66 58/219/66 60/220/66 62/221/66 64/222/66 66/223/66 68/224/66 70/225/66 72/226/66 74/227/66 76/228/66 78/229/66 80/230/66 82/231/66 84/232/66 86/233/66 88/234/66 90/235/66 92/236/66 94/237/66 96/238/66 98/239/66 100/240/66 102/241/66 104/242/66 106/243/66 108/244/66 110/245/66 112/246/66 114/247/66 116/248/66 118/249/66 120/250/66 122/251/66 124/252/66 126/253/66 128/254/66
|
|
@ -0,0 +1,520 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: 'coolant_pipe_single_vertical_2.blend'
|
||||
# www.blender.org
|
||||
mtllib coolant_pipe_single_vertical_2.mtl
|
||||
o Cylinder.005
|
||||
v -0.152745 -0.499953 0.359519
|
||||
v -0.152745 0.500131 0.359519
|
||||
v -0.158060 0.500131 0.359258
|
||||
v -0.158060 -0.499953 0.359258
|
||||
v -0.163324 0.500131 0.358477
|
||||
v -0.163324 -0.499953 0.358477
|
||||
v -0.168486 0.500131 0.357184
|
||||
v -0.168486 -0.499953 0.357184
|
||||
v -0.173496 0.500131 0.355391
|
||||
v -0.173496 -0.499953 0.355391
|
||||
v -0.178307 0.500131 0.353116
|
||||
v -0.178307 -0.499953 0.353116
|
||||
v -0.182871 0.500131 0.350380
|
||||
v -0.182871 -0.499953 0.350380
|
||||
v -0.187145 0.500131 0.347210
|
||||
v -0.187145 -0.499953 0.347210
|
||||
v -0.191088 0.500131 0.343637
|
||||
v -0.191088 -0.499953 0.343637
|
||||
v -0.194662 0.500131 0.339694
|
||||
v -0.194662 -0.499953 0.339694
|
||||
v -0.197832 0.500131 0.335419
|
||||
v -0.197832 -0.499953 0.335419
|
||||
v -0.200568 0.500131 0.330855
|
||||
v -0.200568 -0.499953 0.330855
|
||||
v -0.202843 0.500131 0.326045
|
||||
v -0.202843 -0.499953 0.326045
|
||||
v -0.204636 0.500131 0.321034
|
||||
v -0.204636 -0.499953 0.321034
|
||||
v -0.205929 0.500131 0.315872
|
||||
v -0.205929 -0.499953 0.315872
|
||||
v -0.206709 0.500131 0.310608
|
||||
v -0.206709 -0.499953 0.310608
|
||||
v -0.206970 0.500131 0.305293
|
||||
v -0.206970 -0.499953 0.305293
|
||||
v -0.206709 0.500131 0.299978
|
||||
v -0.206709 -0.499953 0.299978
|
||||
v -0.205929 0.500131 0.294715
|
||||
v -0.205929 -0.499953 0.294715
|
||||
v -0.204636 0.500131 0.289553
|
||||
v -0.204636 -0.499953 0.289553
|
||||
v -0.202843 0.500131 0.284542
|
||||
v -0.202843 -0.499953 0.284542
|
||||
v -0.200568 0.500131 0.279732
|
||||
v -0.200568 -0.499953 0.279732
|
||||
v -0.197832 0.500131 0.275167
|
||||
v -0.197832 -0.499953 0.275167
|
||||
v -0.194662 0.500131 0.270893
|
||||
v -0.194662 -0.499953 0.270893
|
||||
v -0.191088 0.500131 0.266950
|
||||
v -0.191088 -0.499953 0.266950
|
||||
v -0.187145 0.500131 0.263377
|
||||
v -0.187145 -0.499953 0.263377
|
||||
v -0.182871 0.500131 0.260207
|
||||
v -0.182871 -0.499953 0.260207
|
||||
v -0.178307 0.500131 0.257471
|
||||
v -0.178307 -0.499953 0.257471
|
||||
v -0.173496 0.500131 0.255196
|
||||
v -0.173496 -0.499953 0.255196
|
||||
v -0.168486 0.500131 0.253403
|
||||
v -0.168486 -0.499953 0.253403
|
||||
v -0.163324 0.500131 0.252110
|
||||
v -0.163324 -0.499953 0.252110
|
||||
v -0.158060 0.500131 0.251329
|
||||
v -0.158060 -0.499953 0.251329
|
||||
v -0.152745 0.500131 0.251068
|
||||
v -0.152745 -0.499953 0.251068
|
||||
v -0.147430 0.500131 0.251329
|
||||
v -0.147430 -0.499953 0.251329
|
||||
v -0.142166 0.500131 0.252110
|
||||
v -0.142166 -0.499953 0.252110
|
||||
v -0.137004 0.500131 0.253403
|
||||
v -0.137004 -0.499953 0.253403
|
||||
v -0.131994 0.500131 0.255196
|
||||
v -0.131994 -0.499953 0.255196
|
||||
v -0.127183 0.500131 0.257471
|
||||
v -0.127183 -0.499953 0.257471
|
||||
v -0.122619 0.500131 0.260207
|
||||
v -0.122619 -0.499953 0.260207
|
||||
v -0.118345 0.500131 0.263377
|
||||
v -0.118345 -0.499953 0.263377
|
||||
v -0.114402 0.500131 0.266950
|
||||
v -0.114402 -0.499953 0.266950
|
||||
v -0.110828 0.500131 0.270893
|
||||
v -0.110828 -0.499953 0.270893
|
||||
v -0.107658 0.500131 0.275167
|
||||
v -0.107658 -0.499953 0.275167
|
||||
v -0.104922 0.500131 0.279732
|
||||
v -0.104922 -0.499953 0.279732
|
||||
v -0.102647 0.500131 0.284542
|
||||
v -0.102647 -0.499953 0.284542
|
||||
v -0.100855 0.500131 0.289553
|
||||
v -0.100855 -0.499953 0.289553
|
||||
v -0.099562 0.500131 0.294715
|
||||
v -0.099562 -0.499953 0.294715
|
||||
v -0.098781 0.500131 0.299978
|
||||
v -0.098781 -0.499953 0.299978
|
||||
v -0.098520 0.500131 0.305293
|
||||
v -0.098520 -0.499953 0.305293
|
||||
v -0.098781 0.500131 0.310608
|
||||
v -0.098781 -0.499953 0.310608
|
||||
v -0.099561 0.500131 0.315872
|
||||
v -0.099561 -0.499953 0.315872
|
||||
v -0.100855 0.500131 0.321034
|
||||
v -0.100855 -0.499953 0.321034
|
||||
v -0.102647 0.500131 0.326045
|
||||
v -0.102647 -0.499953 0.326045
|
||||
v -0.104922 0.500131 0.330855
|
||||
v -0.104922 -0.499953 0.330855
|
||||
v -0.107658 0.500131 0.335419
|
||||
v -0.107658 -0.499953 0.335419
|
||||
v -0.110828 0.500131 0.339694
|
||||
v -0.110828 -0.499953 0.339694
|
||||
v -0.114402 0.500131 0.343637
|
||||
v -0.114402 -0.499953 0.343637
|
||||
v -0.118345 0.500131 0.347210
|
||||
v -0.118345 -0.499953 0.347210
|
||||
v -0.122619 0.500131 0.350380
|
||||
v -0.122619 -0.499953 0.350380
|
||||
v -0.127183 0.500131 0.353116
|
||||
v -0.127183 -0.499953 0.353116
|
||||
v -0.131994 0.500131 0.355391
|
||||
v -0.131994 -0.499953 0.355391
|
||||
v -0.137004 0.500131 0.357184
|
||||
v -0.137004 -0.499953 0.357184
|
||||
v -0.142166 0.500131 0.358477
|
||||
v -0.142166 -0.499953 0.358477
|
||||
v -0.147430 0.500131 0.359258
|
||||
v -0.147430 -0.499953 0.359258
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.002409 1.000000
|
||||
vt 0.002409 0.000000
|
||||
vt 0.009607 1.000000
|
||||
vt 0.009607 0.000000
|
||||
vt 0.021529 1.000000
|
||||
vt 0.021529 0.000000
|
||||
vt 0.038060 1.000000
|
||||
vt 0.038060 0.000000
|
||||
vt 0.059040 1.000000
|
||||
vt 0.059040 0.000000
|
||||
vt 0.084266 1.000000
|
||||
vt 0.084266 0.000000
|
||||
vt 0.113494 1.000000
|
||||
vt 0.113494 0.000000
|
||||
vt 0.146447 1.000000
|
||||
vt 0.146447 0.000000
|
||||
vt 0.182804 1.000000
|
||||
vt 0.182804 0.000000
|
||||
vt 0.222215 1.000000
|
||||
vt 0.222215 0.000000
|
||||
vt 0.264303 1.000000
|
||||
vt 0.264303 0.000000
|
||||
vt 0.308658 1.000000
|
||||
vt 0.308658 0.000000
|
||||
vt 0.354857 1.000000
|
||||
vt 0.354857 0.000000
|
||||
vt 0.402454 1.000000
|
||||
vt 0.402454 0.000000
|
||||
vt 0.450992 1.000000
|
||||
vt 0.450992 0.000000
|
||||
vt 0.500001 1.000000
|
||||
vt 0.500001 0.000000
|
||||
vt 0.549009 1.000000
|
||||
vt 0.549009 0.000000
|
||||
vt 0.597544 1.000000
|
||||
vt 0.597544 0.000000
|
||||
vt 0.645143 1.000000
|
||||
vt 0.645143 0.000000
|
||||
vt 0.691342 1.000000
|
||||
vt 0.691342 0.000000
|
||||
vt 0.735700 1.000000
|
||||
vt 0.735700 0.000000
|
||||
vt 0.777785 1.000000
|
||||
vt 0.777785 0.000000
|
||||
vt 0.817197 1.000000
|
||||
vt 0.817197 0.000000
|
||||
vt 0.853553 1.000000
|
||||
vt 0.853553 0.000000
|
||||
vt 0.886506 1.000000
|
||||
vt 0.886506 0.000000
|
||||
vt 0.915734 1.000000
|
||||
vt 0.915734 0.000000
|
||||
vt 0.940960 1.000000
|
||||
vt 0.940960 0.000000
|
||||
vt 0.961940 1.000000
|
||||
vt 0.961940 0.000000
|
||||
vt 0.978471 1.000000
|
||||
vt 0.978471 0.000000
|
||||
vt 0.990393 1.000000
|
||||
vt 0.990393 0.000000
|
||||
vt 0.997592 1.000000
|
||||
vt 0.997592 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.997592 1.000000
|
||||
vt 0.997592 0.000000
|
||||
vt 0.990393 1.000000
|
||||
vt 0.990393 0.000000
|
||||
vt 0.978471 1.000000
|
||||
vt 0.978471 0.000000
|
||||
vt 0.961940 1.000000
|
||||
vt 0.961940 0.000000
|
||||
vt 0.940960 1.000000
|
||||
vt 0.940960 0.000000
|
||||
vt 0.915734 1.000000
|
||||
vt 0.915734 0.000000
|
||||
vt 0.886505 1.000000
|
||||
vt 0.886505 0.000000
|
||||
vt 0.853552 1.000000
|
||||
vt 0.853552 0.000000
|
||||
vt 0.817197 1.000000
|
||||
vt 0.817197 0.000000
|
||||
vt 0.777785 1.000000
|
||||
vt 0.777785 0.000000
|
||||
vt 0.735697 1.000000
|
||||
vt 0.735697 0.000000
|
||||
vt 0.691342 1.000000
|
||||
vt 0.691342 0.000000
|
||||
vt 0.645143 1.000000
|
||||
vt 0.645143 0.000000
|
||||
vt 0.597544 1.000000
|
||||
vt 0.597544 0.000000
|
||||
vt 0.549009 1.000000
|
||||
vt 0.549009 0.000000
|
||||
vt 0.500001 1.000000
|
||||
vt 0.500001 0.000000
|
||||
vt 0.450992 1.000000
|
||||
vt 0.450992 0.000000
|
||||
vt 0.402454 1.000000
|
||||
vt 0.402454 0.000000
|
||||
vt 0.354857 1.000000
|
||||
vt 0.354857 0.000000
|
||||
vt 0.308660 1.000000
|
||||
vt 0.308660 0.000000
|
||||
vt 0.264303 1.000000
|
||||
vt 0.264303 0.000000
|
||||
vt 0.222215 1.000000
|
||||
vt 0.222215 0.000000
|
||||
vt 0.182804 1.000000
|
||||
vt 0.182804 0.000000
|
||||
vt 0.146448 1.000000
|
||||
vt 0.146448 0.000000
|
||||
vt 0.113496 1.000000
|
||||
vt 0.113496 0.000000
|
||||
vt 0.084266 1.000000
|
||||
vt 0.084266 0.000000
|
||||
vt 0.059040 1.000000
|
||||
vt 0.059040 0.000000
|
||||
vt 0.038062 1.000000
|
||||
vt 0.038062 0.000000
|
||||
vt 0.021531 1.000000
|
||||
vt 0.021531 0.000000
|
||||
vt 0.009607 1.000000
|
||||
vt 0.009607 0.000000
|
||||
vt 0.002409 0.549009
|
||||
vt 0.000000 0.500000
|
||||
vt 0.002409 0.450991
|
||||
vt 0.009607 0.402453
|
||||
vt 0.021531 0.354857
|
||||
vt 0.038062 0.308658
|
||||
vt 0.059040 0.264300
|
||||
vt 0.084266 0.222215
|
||||
vt 0.113496 0.182803
|
||||
vt 0.146448 0.146447
|
||||
vt 0.182805 0.113494
|
||||
vt 0.222216 0.084266
|
||||
vt 0.264303 0.059040
|
||||
vt 0.308660 0.038059
|
||||
vt 0.354857 0.021531
|
||||
vt 0.402456 0.009607
|
||||
vt 0.450992 0.002409
|
||||
vt 0.500001 0.000000
|
||||
vt 0.549009 0.002409
|
||||
vt 0.597546 0.009607
|
||||
vt 0.645143 0.021531
|
||||
vt 0.691342 0.038062
|
||||
vt 0.735697 0.059040
|
||||
vt 0.777785 0.084266
|
||||
vt 0.817197 0.113494
|
||||
vt 0.853552 0.146447
|
||||
vt 0.886505 0.182803
|
||||
vt 0.915734 0.222215
|
||||
vt 0.940960 0.264303
|
||||
vt 0.961940 0.308658
|
||||
vt 0.978471 0.354857
|
||||
vt 0.990394 0.402453
|
||||
vt 0.997592 0.450991
|
||||
vt 1.000000 0.500000
|
||||
vt 0.997592 0.549009
|
||||
vt 0.990394 0.597544
|
||||
vt 0.978471 0.645143
|
||||
vt 0.961940 0.691342
|
||||
vt 0.940960 0.735700
|
||||
vt 0.915737 0.777785
|
||||
vt 0.886506 0.817197
|
||||
vt 0.853553 0.853553
|
||||
vt 0.817197 0.886506
|
||||
vt 0.777785 0.915737
|
||||
vt 0.735700 0.940960
|
||||
vt 0.691342 0.961938
|
||||
vt 0.645144 0.978469
|
||||
vt 0.597546 0.990393
|
||||
vt 0.549009 0.997594
|
||||
vt 0.450992 0.997594
|
||||
vt 0.402456 0.990393
|
||||
vt 0.354857 0.978469
|
||||
vt 0.308660 0.961938
|
||||
vt 0.264303 0.940960
|
||||
vt 0.222215 0.915737
|
||||
vt 0.182804 0.886506
|
||||
vt 0.146447 0.853553
|
||||
vt 0.113496 0.817197
|
||||
vt 0.084266 0.777785
|
||||
vt 0.059040 0.735700
|
||||
vt 0.038060 0.691342
|
||||
vt 0.021531 0.645143
|
||||
vt 0.009607 0.597544
|
||||
vt 0.002409 1.000000
|
||||
vt 0.002409 0.000000
|
||||
vt 0.000000 0.500001
|
||||
vt 0.002407 0.450992
|
||||
vt 0.009607 0.402456
|
||||
vt 0.021529 0.354859
|
||||
vt 0.038059 0.308660
|
||||
vt 0.059040 0.264303
|
||||
vt 0.084266 0.222215
|
||||
vt 0.113495 0.182804
|
||||
vt 0.146445 0.146448
|
||||
vt 0.182803 0.113496
|
||||
vt 0.222215 0.084266
|
||||
vt 0.264301 0.059040
|
||||
vt 0.308658 0.038062
|
||||
vt 0.354857 0.021532
|
||||
vt 0.402456 0.009608
|
||||
vt 0.450991 0.002409
|
||||
vt 0.549008 0.002409
|
||||
vt 0.597546 0.009608
|
||||
vt 0.645141 0.021532
|
||||
vt 0.691342 0.038062
|
||||
vt 0.735697 0.059040
|
||||
vt 0.777785 0.084266
|
||||
vt 0.817196 0.113496
|
||||
vt 0.853553 0.146448
|
||||
vt 0.886506 0.182804
|
||||
vt 0.915734 0.222215
|
||||
vt 0.940961 0.264303
|
||||
vt 0.961940 0.308660
|
||||
vt 0.978471 0.354859
|
||||
vt 0.990392 0.402456
|
||||
vt 0.997592 0.450992
|
||||
vt 1.000000 0.500001
|
||||
vt 0.997592 0.549009
|
||||
vt 0.990392 0.597546
|
||||
vt 0.978471 0.645144
|
||||
vt 0.961940 0.691343
|
||||
vt 0.940961 0.735700
|
||||
vt 0.915734 0.777787
|
||||
vt 0.886504 0.817198
|
||||
vt 0.853552 0.853555
|
||||
vt 0.817196 0.886506
|
||||
vt 0.777785 0.915737
|
||||
vt 0.735697 0.940961
|
||||
vt 0.691342 0.961940
|
||||
vt 0.645141 0.978471
|
||||
vt 0.597546 0.990394
|
||||
vt 0.549008 0.997594
|
||||
vt 0.500000 1.000000
|
||||
vt 0.450991 0.997594
|
||||
vt 0.402456 0.990394
|
||||
vt 0.354857 0.978471
|
||||
vt 0.308658 0.961940
|
||||
vt 0.264301 0.940961
|
||||
vt 0.222216 0.915737
|
||||
vt 0.182805 0.886506
|
||||
vt 0.146448 0.853556
|
||||
vt 0.113495 0.817198
|
||||
vt 0.084266 0.777787
|
||||
vt 0.059040 0.735700
|
||||
vt 0.038059 0.691343
|
||||
vt 0.021529 0.645144
|
||||
vt 0.009607 0.597548
|
||||
vt 0.002407 0.549011
|
||||
vn -0.0491 -0.0000 0.9988
|
||||
vn -0.1468 -0.0000 0.9892
|
||||
vn -0.2430 -0.0000 0.9700
|
||||
vn -0.3370 -0.0000 0.9415
|
||||
vn -0.4275 -0.0000 0.9040
|
||||
vn -0.5142 -0.0000 0.8577
|
||||
vn -0.5957 -0.0000 0.8032
|
||||
vn -0.6715 -0.0000 0.7410
|
||||
vn -0.7409 -0.0000 0.6716
|
||||
vn -0.8033 -0.0000 0.5956
|
||||
vn -0.8577 -0.0000 0.5142
|
||||
vn -0.9040 -0.0000 0.4276
|
||||
vn -0.9415 -0.0000 0.3369
|
||||
vn -0.9700 -0.0000 0.2430
|
||||
vn -0.9892 -0.0000 0.1469
|
||||
vn -0.9988 0.0000 0.0490
|
||||
vn -0.9988 0.0000 -0.0490
|
||||
vn -0.9892 0.0000 -0.1466
|
||||
vn -0.9700 0.0000 -0.2430
|
||||
vn -0.9415 0.0000 -0.3369
|
||||
vn -0.9040 0.0000 -0.4276
|
||||
vn -0.8577 0.0000 -0.5141
|
||||
vn -0.8032 0.0000 -0.5957
|
||||
vn -0.7409 0.0000 -0.6716
|
||||
vn -0.6715 0.0000 -0.7410
|
||||
vn -0.5957 0.0000 -0.8032
|
||||
vn -0.5142 0.0000 -0.8577
|
||||
vn -0.4275 0.0000 -0.9040
|
||||
vn -0.3370 0.0000 -0.9415
|
||||
vn -0.2430 0.0000 -0.9700
|
||||
vn -0.1468 0.0000 -0.9892
|
||||
vn -0.0491 0.0000 -0.9988
|
||||
vn 0.0491 0.0000 -0.9988
|
||||
vn 0.1468 0.0000 -0.9892
|
||||
vn 0.2430 0.0000 -0.9700
|
||||
vn 0.3370 0.0000 -0.9415
|
||||
vn 0.4275 0.0000 -0.9040
|
||||
vn 0.5142 0.0000 -0.8577
|
||||
vn 0.5957 0.0000 -0.8032
|
||||
vn 0.6715 0.0000 -0.7410
|
||||
vn 0.7409 0.0000 -0.6716
|
||||
vn 0.8032 0.0000 -0.5957
|
||||
vn 0.8577 0.0000 -0.5141
|
||||
vn 0.9040 0.0000 -0.4276
|
||||
vn 0.9416 0.0000 -0.3367
|
||||
vn 0.9700 0.0000 -0.2430
|
||||
vn 0.9892 0.0000 -0.1468
|
||||
vn 0.9988 0.0000 -0.0490
|
||||
vn 0.9988 -0.0000 0.0490
|
||||
vn 0.9892 -0.0000 0.1469
|
||||
vn 0.9700 -0.0000 0.2432
|
||||
vn 0.9416 -0.0000 0.3367
|
||||
vn 0.9040 -0.0000 0.4276
|
||||
vn 0.8577 -0.0000 0.5142
|
||||
vn 0.8033 -0.0000 0.5956
|
||||
vn 0.7409 -0.0000 0.6716
|
||||
vn 0.6715 -0.0000 0.7410
|
||||
vn 0.5957 -0.0000 0.8032
|
||||
vn 0.5142 -0.0000 0.8577
|
||||
vn 0.4275 -0.0000 0.9040
|
||||
vn 0.3370 -0.0000 0.9415
|
||||
vn 0.2430 -0.0000 0.9700
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.1468 -0.0000 0.9892
|
||||
vn 0.0491 -0.0000 0.9988
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
usemtl None.009
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 4/4/2 3/3/2 5/5/2 6/6/2
|
||||
f 6/6/3 5/5/3 7/7/3 8/8/3
|
||||
f 8/8/4 7/7/4 9/9/4 10/10/4
|
||||
f 10/10/5 9/9/5 11/11/5 12/12/5
|
||||
f 12/12/6 11/11/6 13/13/6 14/14/6
|
||||
f 14/14/7 13/13/7 15/15/7 16/16/7
|
||||
f 16/16/8 15/15/8 17/17/8 18/18/8
|
||||
f 18/18/9 17/17/9 19/19/9 20/20/9
|
||||
f 20/20/10 19/19/10 21/21/10 22/22/10
|
||||
f 22/22/11 21/21/11 23/23/11 24/24/11
|
||||
f 24/24/12 23/23/12 25/25/12 26/26/12
|
||||
f 26/26/13 25/25/13 27/27/13 28/28/13
|
||||
f 28/28/14 27/27/14 29/29/14 30/30/14
|
||||
f 30/30/15 29/29/15 31/31/15 32/32/15
|
||||
f 32/32/16 31/31/16 33/33/16 34/34/16
|
||||
f 34/34/17 33/33/17 35/35/17 36/36/17
|
||||
f 36/36/18 35/35/18 37/37/18 38/38/18
|
||||
f 38/38/19 37/37/19 39/39/19 40/40/19
|
||||
f 40/40/20 39/39/20 41/41/20 42/42/20
|
||||
f 42/42/21 41/41/21 43/43/21 44/44/21
|
||||
f 44/44/22 43/43/22 45/45/22 46/46/22
|
||||
f 46/46/23 45/45/23 47/47/23 48/48/23
|
||||
f 48/48/24 47/47/24 49/49/24 50/50/24
|
||||
f 50/50/25 49/49/25 51/51/25 52/52/25
|
||||
f 52/52/26 51/51/26 53/53/26 54/54/26
|
||||
f 54/54/27 53/53/27 55/55/27 56/56/27
|
||||
f 56/56/28 55/55/28 57/57/28 58/58/28
|
||||
f 58/58/29 57/57/29 59/59/29 60/60/29
|
||||
f 60/60/30 59/59/30 61/61/30 62/62/30
|
||||
f 62/62/31 61/61/31 63/63/31 64/64/31
|
||||
f 64/64/32 63/63/32 65/65/32 66/66/32
|
||||
f 66/66/33 65/65/33 67/67/33 68/68/33
|
||||
f 68/68/34 67/67/34 69/69/34 70/70/34
|
||||
f 70/70/35 69/69/35 71/71/35 72/72/35
|
||||
f 72/72/36 71/71/36 73/73/36 74/74/36
|
||||
f 74/74/37 73/73/37 75/75/37 76/76/37
|
||||
f 76/76/38 75/75/38 77/77/38 78/78/38
|
||||
f 78/78/39 77/77/39 79/79/39 80/80/39
|
||||
f 80/80/40 79/79/40 81/81/40 82/82/40
|
||||
f 82/82/41 81/81/41 83/83/41 84/84/41
|
||||
f 84/84/42 83/83/42 85/85/42 86/86/42
|
||||
f 86/86/43 85/85/43 87/87/43 88/88/43
|
||||
f 88/88/44 87/87/44 89/89/44 90/90/44
|
||||
f 90/90/45 89/89/45 91/91/45 92/92/45
|
||||
f 92/92/46 91/91/46 93/93/46 94/94/46
|
||||
f 94/94/47 93/93/47 95/95/47 96/96/47
|
||||
f 96/96/48 95/95/48 97/97/48 98/98/48
|
||||
f 98/98/49 97/97/49 99/99/49 100/100/49
|
||||
f 100/100/50 99/99/50 101/101/50 102/102/50
|
||||
f 102/102/51 101/101/51 103/103/51 104/104/51
|
||||
f 104/104/52 103/103/52 105/105/52 106/106/52
|
||||
f 106/106/53 105/105/53 107/107/53 108/108/53
|
||||
f 108/108/54 107/107/54 109/109/54 110/110/54
|
||||
f 110/110/55 109/109/55 111/111/55 112/112/55
|
||||
f 112/112/56 111/111/56 113/113/56 114/114/56
|
||||
f 114/114/57 113/113/57 115/115/57 116/116/57
|
||||
f 116/116/58 115/115/58 117/117/58 118/118/58
|
||||
f 118/118/59 117/117/59 119/119/59 120/120/59
|
||||
f 120/120/60 119/119/60 121/121/60 122/122/60
|
||||
f 122/122/61 121/121/61 123/123/61 124/124/61
|
||||
f 124/124/62 123/123/62 125/125/62 126/126/62
|
||||
f 3/127/63 2/128/63 127/129/63 125/130/63 123/131/63 121/132/63 119/133/63 117/134/63 115/135/63 113/136/63 111/137/63 109/138/63 107/139/63 105/140/63 103/141/63 101/142/63 99/143/63 97/144/63 95/145/63 93/146/63 91/147/63 89/148/63 87/149/63 85/150/63 83/151/63 81/152/63 79/153/63 77/154/63 75/155/63 73/156/63 71/157/63 69/158/63 67/159/63 65/160/63 63/161/63 61/162/63 59/163/63 57/164/63 55/165/63 53/166/63 51/167/63 49/168/63 47/169/63 45/170/63 43/171/63 41/172/63 39/173/63 37/174/63 35/175/63 33/33/63 31/176/63 29/177/63 27/178/63 25/179/63 23/180/63 21/181/63 19/182/63 17/183/63 15/184/63 13/185/63 11/186/63 9/187/63 7/188/63 5/189/63
|
||||
f 126/126/64 125/125/64 127/190/64 128/191/64
|
||||
f 128/191/65 127/190/65 2/2/65 1/1/65
|
||||
f 1/192/66 4/193/66 6/194/66 8/195/66 10/196/66 12/197/66 14/198/66 16/199/66 18/200/66 20/201/66 22/202/66 24/203/66 26/204/66 28/205/66 30/206/66 32/207/66 34/34/66 36/208/66 38/209/66 40/210/66 42/211/66 44/212/66 46/213/66 48/214/66 50/215/66 52/216/66 54/217/66 56/218/66 58/219/66 60/220/66 62/221/66 64/222/66 66/223/66 68/224/66 70/225/66 72/226/66 74/227/66 76/228/66 78/229/66 80/230/66 82/231/66 84/232/66 86/233/66 88/234/66 90/235/66 92/236/66 94/237/66 96/238/66 98/239/66 100/240/66 102/241/66 104/242/66 106/243/66 108/244/66 110/245/66 112/246/66 114/247/66 116/248/66 118/249/66 120/250/66 122/251/66 124/252/66 126/253/66 128/254/66
|
|
@ -0,0 +1,91 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: 'cabinet.blend'
|
||||
# www.blender.org
|
||||
mtllib cabinet.mtl
|
||||
o Cube_Cube.001
|
||||
v -0.499996 0.290006 0.499998
|
||||
v -0.499996 0.290006 -0.500002
|
||||
v -0.499996 -0.495509 0.499998
|
||||
v -0.499996 -0.495509 -0.500002
|
||||
v 0.500004 0.290006 0.499998
|
||||
v 0.500004 0.290006 -0.500002
|
||||
v 0.500004 -0.495509 0.499998
|
||||
v 0.500004 -0.495509 -0.500002
|
||||
vt 0.500000 1.000000
|
||||
vt 0.000001 1.000000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.500000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.500000 0.000000
|
||||
vt 0.500000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/5/2 4/6/2 8/7/2 7/8/2
|
||||
f 7/9/3 8/10/3 6/11/3 5/12/3
|
||||
f 5/13/4 6/11/4 2/14/4 1/15/4
|
||||
f 3/16/5 7/17/5 5/13/5 1/15/5
|
||||
f 8/18/6 4/19/6 2/14/6 6/11/6
|
||||
o Grinder_Cube_Cube.007
|
||||
v -0.500003 0.290033 0.499994
|
||||
v -0.500003 0.503650 0.499994
|
||||
v -0.500003 0.503650 -0.500006
|
||||
v -0.500003 0.290033 -0.500006
|
||||
v 0.499997 0.503650 -0.500006
|
||||
v 0.499997 0.290033 -0.500006
|
||||
v 0.499997 0.503650 0.499994
|
||||
v 0.499997 0.290033 0.499994
|
||||
vt 0.000071 0.249929
|
||||
vt 0.000071 0.000071
|
||||
vt 0.500000 0.000071
|
||||
vt 0.500000 0.249929
|
||||
vt 0.499779 0.250792
|
||||
vt 0.499778 -0.000780
|
||||
vt -0.000185 -0.000780
|
||||
vt -0.000185 0.250792
|
||||
vt 0.000071 0.249929
|
||||
vt 0.000071 0.000071
|
||||
vt 0.500000 0.000071
|
||||
vt 0.500000 0.249929
|
||||
vt 0.500000 0.000000
|
||||
vt 0.500000 0.250000
|
||||
vt -0.000000 0.250000
|
||||
vt 0.000000 -0.000000
|
||||
vt 0.500071 0.001028
|
||||
vt 1.000000 0.001028
|
||||
vt 1.000000 0.999685
|
||||
vt 0.500071 0.999685
|
||||
vt 0.250000 0.499929
|
||||
vt 0.000071 0.499929
|
||||
vt 0.250000 0.000071
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
usemtl None.012
|
||||
s 1
|
||||
f 9/20/7 10/21/7 11/22/7 12/23/7
|
||||
f 12/24/8 11/25/8 13/26/8 14/27/8
|
||||
f 14/28/9 13/29/9 15/30/9 16/31/9
|
||||
f 16/32/10 15/33/10 10/34/10 9/35/10
|
||||
f 12/36/11 14/37/11 16/38/11 9/39/11
|
||||
f 13/40/12 11/41/12 10/21/12 15/42/12
|
|
@ -0,0 +1,589 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: 'light.blend'
|
||||
# www.blender.org
|
||||
mtllib light.mtl
|
||||
o Cylinder.001
|
||||
v -0.999519 -0.546855 -0.010000
|
||||
v -0.999519 2.077504 -0.010000
|
||||
v -0.997568 -0.546855 -0.009808
|
||||
v -0.997568 2.077504 -0.009808
|
||||
v -0.995692 -0.546855 -0.009239
|
||||
v -0.995692 2.077504 -0.009239
|
||||
v -0.993963 -0.546855 -0.008315
|
||||
v -0.993963 2.077504 -0.008315
|
||||
v -0.992448 -0.546855 -0.007071
|
||||
v -0.992448 2.077504 -0.007071
|
||||
v -0.991204 -0.546855 -0.005556
|
||||
v -0.991204 2.077504 -0.005556
|
||||
v -0.990280 -0.546855 -0.003827
|
||||
v -0.990280 2.077504 -0.003827
|
||||
v -0.989711 -0.546855 -0.001951
|
||||
v -0.989711 2.077504 -0.001951
|
||||
v -0.989519 -0.546855 -0.000000
|
||||
v -0.989519 2.077504 -0.000000
|
||||
v -0.989711 -0.546855 0.001951
|
||||
v -0.989711 2.077504 0.001951
|
||||
v -0.990280 -0.546855 0.003827
|
||||
v -0.990280 2.077504 0.003827
|
||||
v -0.991204 -0.546855 0.005556
|
||||
v -0.991204 2.077504 0.005556
|
||||
v -0.992448 -0.546855 0.007071
|
||||
v -0.992448 2.077504 0.007071
|
||||
v -0.993963 -0.546855 0.008315
|
||||
v -0.993963 2.077504 0.008315
|
||||
v -0.995692 -0.546855 0.009239
|
||||
v -0.995692 2.077504 0.009239
|
||||
v -0.997568 -0.546855 0.009808
|
||||
v -0.997568 2.077504 0.009808
|
||||
v -0.999519 -0.546855 0.010000
|
||||
v -0.999519 2.077504 0.010000
|
||||
v -1.001470 -0.546855 0.009808
|
||||
v -1.001470 2.077504 0.009808
|
||||
v -1.003346 -0.546855 0.009239
|
||||
v -1.003346 2.077504 0.009239
|
||||
v -1.005075 -0.546855 0.008315
|
||||
v -1.005075 2.077504 0.008315
|
||||
v -1.006590 -0.546855 0.007071
|
||||
v -1.006590 2.077504 0.007071
|
||||
v -1.007834 -0.546855 0.005556
|
||||
v -1.007834 2.077504 0.005556
|
||||
v -1.008758 -0.546855 0.003827
|
||||
v -1.008758 2.077504 0.003827
|
||||
v -1.009327 -0.546855 0.001951
|
||||
v -1.009327 2.077504 0.001951
|
||||
v -1.009519 -0.546855 -0.000000
|
||||
v -1.009519 2.077504 -0.000000
|
||||
v -1.009327 -0.546855 -0.001951
|
||||
v -1.009327 2.077504 -0.001951
|
||||
v -1.008758 -0.546855 -0.003827
|
||||
v -1.008758 2.077504 -0.003827
|
||||
v -1.007834 -0.546855 -0.005556
|
||||
v -1.007834 2.077504 -0.005556
|
||||
v -1.006590 -0.546855 -0.007071
|
||||
v -1.006590 2.077504 -0.007071
|
||||
v -1.005075 -0.546855 -0.008315
|
||||
v -1.005075 2.077504 -0.008315
|
||||
v -1.003346 -0.546855 -0.009239
|
||||
v -1.003346 2.077504 -0.009239
|
||||
v -1.001470 -0.546855 -0.009808
|
||||
v -1.001470 2.077504 -0.009808
|
||||
vt 0.797264 0.502500
|
||||
vt 0.797264 0.668031
|
||||
vt 0.777069 0.668031
|
||||
vt 0.777069 0.502500
|
||||
vt 0.757263 0.668031
|
||||
vt 0.757263 0.502500
|
||||
vt 0.738606 0.668031
|
||||
vt 0.738606 0.502500
|
||||
vt 0.721815 0.668031
|
||||
vt 0.721815 0.502500
|
||||
vt 0.707536 0.668031
|
||||
vt 0.707536 0.502500
|
||||
vt 0.633203 0.831969
|
||||
vt 0.633203 0.997500
|
||||
vt 0.616412 0.997500
|
||||
vt 0.616412 0.831969
|
||||
vt 0.597755 0.997500
|
||||
vt 0.597755 0.831969
|
||||
vt 0.577948 0.997500
|
||||
vt 0.577948 0.831969
|
||||
vt 0.557754 0.997500
|
||||
vt 0.557754 0.831969
|
||||
vt 0.537948 0.997500
|
||||
vt 0.537948 0.831969
|
||||
vt 0.519291 0.997500
|
||||
vt 0.519291 0.831969
|
||||
vt 0.502500 0.997500
|
||||
vt 0.502500 0.831969
|
||||
vt 0.852518 0.833563
|
||||
vt 0.852518 0.668031
|
||||
vt 0.869309 0.668031
|
||||
vt 0.869309 0.833563
|
||||
vt 0.887966 0.668031
|
||||
vt 0.887966 0.833563
|
||||
vt 0.907772 0.668031
|
||||
vt 0.907772 0.833563
|
||||
vt 0.927966 0.668031
|
||||
vt 0.927966 0.833563
|
||||
vt 0.947773 0.668031
|
||||
vt 0.947773 0.833563
|
||||
vt 0.966430 0.668031
|
||||
vt 0.966430 0.833563
|
||||
vt 0.983220 0.668031
|
||||
vt 0.983220 0.833563
|
||||
vt 0.997500 0.668031
|
||||
vt 0.997500 0.833563
|
||||
vt 0.707536 0.833563
|
||||
vt 0.707536 0.668031
|
||||
vt 0.724327 0.668031
|
||||
vt 0.724327 0.833563
|
||||
vt 0.742984 0.668031
|
||||
vt 0.742984 0.833563
|
||||
vt 0.762790 0.668031
|
||||
vt 0.762790 0.833563
|
||||
vt 0.782984 0.668031
|
||||
vt 0.782984 0.833563
|
||||
vt 0.802790 0.668031
|
||||
vt 0.802790 0.833563
|
||||
vt 0.821447 0.668031
|
||||
vt 0.821447 0.833563
|
||||
vt 0.838238 0.668031
|
||||
vt 0.838238 0.833563
|
||||
vt 0.852518 0.668031
|
||||
vt 0.852518 0.833563
|
||||
vt 0.866797 0.502500
|
||||
vt 0.866797 0.668031
|
||||
vt 0.852518 0.668031
|
||||
vt 0.852518 0.502500
|
||||
vt 0.835727 0.668031
|
||||
vt 0.835727 0.502500
|
||||
vt 0.594921 0.831969
|
||||
vt 0.575114 0.828803
|
||||
vt 0.556458 0.822594
|
||||
vt 0.539667 0.813580
|
||||
vt 0.525387 0.802107
|
||||
vt 0.514168 0.788617
|
||||
vt 0.506440 0.773627
|
||||
vt 0.502500 0.757714
|
||||
vt 0.502500 0.741489
|
||||
vt 0.506440 0.725576
|
||||
vt 0.514168 0.710586
|
||||
vt 0.525387 0.697095
|
||||
vt 0.539666 0.685623
|
||||
vt 0.556457 0.676609
|
||||
vt 0.575114 0.670400
|
||||
vt 0.594921 0.667234
|
||||
vt 0.615115 0.667234
|
||||
vt 0.634921 0.670400
|
||||
vt 0.653578 0.676609
|
||||
vt 0.670369 0.685623
|
||||
vt 0.684649 0.697095
|
||||
vt 0.695868 0.710586
|
||||
vt 0.703596 0.725576
|
||||
vt 0.707536 0.741489
|
||||
vt 0.707536 0.757714
|
||||
vt 0.703596 0.773627
|
||||
vt 0.695868 0.788617
|
||||
vt 0.684649 0.802107
|
||||
vt 0.670369 0.813580
|
||||
vt 0.653578 0.822594
|
||||
vt 0.634921 0.828803
|
||||
vt 0.615115 0.831969
|
||||
vt 0.817070 0.668031
|
||||
vt 0.817070 0.502500
|
||||
vt 0.502500 0.592980
|
||||
vt 0.502500 0.576755
|
||||
vt 0.506440 0.560842
|
||||
vt 0.514168 0.545852
|
||||
vt 0.525387 0.532361
|
||||
vt 0.539666 0.520888
|
||||
vt 0.556457 0.511874
|
||||
vt 0.575114 0.505665
|
||||
vt 0.594921 0.502500
|
||||
vt 0.615115 0.502500
|
||||
vt 0.634921 0.505665
|
||||
vt 0.653578 0.511874
|
||||
vt 0.670369 0.520888
|
||||
vt 0.684649 0.532361
|
||||
vt 0.695868 0.545852
|
||||
vt 0.703596 0.560842
|
||||
vt 0.707536 0.576755
|
||||
vt 0.707536 0.592980
|
||||
vt 0.703596 0.608893
|
||||
vt 0.695868 0.623883
|
||||
vt 0.684649 0.637373
|
||||
vt 0.670369 0.648846
|
||||
vt 0.653578 0.657860
|
||||
vt 0.634921 0.664069
|
||||
vt 0.615115 0.667234
|
||||
vt 0.594921 0.667234
|
||||
vt 0.575114 0.664069
|
||||
vt 0.556457 0.657860
|
||||
vt 0.539666 0.648846
|
||||
vt 0.525387 0.637373
|
||||
vt 0.514168 0.623882
|
||||
vt 0.506440 0.608893
|
||||
vn 0.0980 0.0000 -0.9952
|
||||
vn 0.2903 0.0000 -0.9569
|
||||
vn 0.4714 0.0000 -0.8819
|
||||
vn 0.6344 0.0000 -0.7730
|
||||
vn 0.7730 0.0000 -0.6344
|
||||
vn 0.8819 0.0000 -0.4714
|
||||
vn 0.9569 0.0000 -0.2903
|
||||
vn 0.9952 0.0000 -0.0980
|
||||
vn 0.9952 0.0000 0.0980
|
||||
vn 0.9569 0.0000 0.2903
|
||||
vn 0.8819 0.0000 0.4714
|
||||
vn 0.7730 0.0000 0.6344
|
||||
vn 0.6344 0.0000 0.7730
|
||||
vn 0.4714 0.0000 0.8819
|
||||
vn 0.2903 0.0000 0.9569
|
||||
vn 0.0980 0.0000 0.9952
|
||||
vn -0.0980 0.0000 0.9952
|
||||
vn -0.2903 0.0000 0.9569
|
||||
vn -0.4714 0.0000 0.8819
|
||||
vn -0.6344 0.0000 0.7730
|
||||
vn -0.7730 0.0000 0.6344
|
||||
vn -0.8819 0.0000 0.4714
|
||||
vn -0.9570 0.0000 0.2903
|
||||
vn -0.9952 0.0000 0.0980
|
||||
vn -0.9952 0.0000 -0.0980
|
||||
vn -0.9570 0.0000 -0.2903
|
||||
vn -0.8819 0.0000 -0.4714
|
||||
vn -0.7730 0.0000 -0.6344
|
||||
vn -0.6344 0.0000 -0.7730
|
||||
vn -0.4714 0.0000 -0.8819
|
||||
vn 0.0000 1.0000 -0.0000
|
||||
vn -0.2903 0.0000 -0.9569
|
||||
vn -0.0980 0.0000 -0.9952
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/4/2 4/3/2 6/5/2 5/6/2
|
||||
f 5/6/3 6/5/3 8/7/3 7/8/3
|
||||
f 7/8/4 8/7/4 10/9/4 9/10/4
|
||||
f 9/10/5 10/9/5 12/11/5 11/12/5
|
||||
f 11/13/6 12/14/6 14/15/6 13/16/6
|
||||
f 13/16/7 14/15/7 16/17/7 15/18/7
|
||||
f 15/18/8 16/17/8 18/19/8 17/20/8
|
||||
f 17/20/9 18/19/9 20/21/9 19/22/9
|
||||
f 19/22/10 20/21/10 22/23/10 21/24/10
|
||||
f 21/24/11 22/23/11 24/25/11 23/26/11
|
||||
f 23/26/12 24/25/12 26/27/12 25/28/12
|
||||
f 25/29/13 26/30/13 28/31/13 27/32/13
|
||||
f 27/32/14 28/31/14 30/33/14 29/34/14
|
||||
f 29/34/15 30/33/15 32/35/15 31/36/15
|
||||
f 31/36/16 32/35/16 34/37/16 33/38/16
|
||||
f 33/38/17 34/37/17 36/39/17 35/40/17
|
||||
f 35/40/18 36/39/18 38/41/18 37/42/18
|
||||
f 37/42/19 38/41/19 40/43/19 39/44/19
|
||||
f 39/44/20 40/43/20 42/45/20 41/46/20
|
||||
f 41/47/21 42/48/21 44/49/21 43/50/21
|
||||
f 43/50/22 44/49/22 46/51/22 45/52/22
|
||||
f 45/52/23 46/51/23 48/53/23 47/54/23
|
||||
f 47/54/24 48/53/24 50/55/24 49/56/24
|
||||
f 49/56/25 50/55/25 52/57/25 51/58/25
|
||||
f 51/58/26 52/57/26 54/59/26 53/60/26
|
||||
f 53/60/27 54/59/27 56/61/27 55/62/27
|
||||
f 55/62/28 56/61/28 58/63/28 57/64/28
|
||||
f 57/65/29 58/66/29 60/67/29 59/68/29
|
||||
f 59/68/30 60/67/30 62/69/30 61/70/30
|
||||
f 4/71/31 2/72/31 64/73/31 62/74/31 60/75/31 58/76/31 56/77/31 54/78/31 52/79/31 50/80/31 48/81/31 46/82/31 44/83/31 42/84/31 40/85/31 38/86/31 36/87/31 34/88/31 32/89/31 30/90/31 28/91/31 26/92/31 24/93/31 22/94/31 20/95/31 18/96/31 16/97/31 14/98/31 12/99/31 10/100/31 8/101/31 6/102/31
|
||||
f 61/70/32 62/69/32 64/103/32 63/104/32
|
||||
f 63/104/33 64/103/33 2/2/33 1/1/33
|
||||
f 1/105/34 3/106/34 5/107/34 7/108/34 9/109/34 11/110/34 13/111/34 15/112/34 17/113/34 19/114/34 21/115/34 23/116/34 25/117/34 27/118/34 29/119/34 31/120/34 33/121/34 35/122/34 37/123/34 39/124/34 41/125/34 43/126/34 45/127/34 47/128/34 49/129/34 51/130/34 53/131/34 55/132/34 57/133/34 59/134/34 61/135/34 63/136/34
|
||||
o Cylinder
|
||||
v 1.000481 -0.546855 -0.010000
|
||||
v 1.000481 2.077504 -0.010000
|
||||
v 1.002432 -0.546855 -0.009808
|
||||
v 1.002432 2.077504 -0.009808
|
||||
v 1.004308 -0.546855 -0.009239
|
||||
v 1.004308 2.077504 -0.009239
|
||||
v 1.006037 -0.546855 -0.008315
|
||||
v 1.006037 2.077504 -0.008315
|
||||
v 1.007552 -0.546855 -0.007071
|
||||
v 1.007552 2.077504 -0.007071
|
||||
v 1.008796 -0.546855 -0.005556
|
||||
v 1.008796 2.077504 -0.005556
|
||||
v 1.009720 -0.546855 -0.003827
|
||||
v 1.009720 2.077504 -0.003827
|
||||
v 1.010289 -0.546855 -0.001951
|
||||
v 1.010289 2.077504 -0.001951
|
||||
v 1.010481 -0.546855 -0.000000
|
||||
v 1.010481 2.077504 -0.000000
|
||||
v 1.010289 -0.546855 0.001951
|
||||
v 1.010289 2.077504 0.001951
|
||||
v 1.009720 -0.546855 0.003827
|
||||
v 1.009720 2.077504 0.003827
|
||||
v 1.008796 -0.546855 0.005556
|
||||
v 1.008796 2.077504 0.005556
|
||||
v 1.007552 -0.546855 0.007071
|
||||
v 1.007552 2.077504 0.007071
|
||||
v 1.006037 -0.546855 0.008315
|
||||
v 1.006037 2.077504 0.008315
|
||||
v 1.004308 -0.546855 0.009239
|
||||
v 1.004308 2.077504 0.009239
|
||||
v 1.002432 -0.546855 0.009808
|
||||
v 1.002432 2.077504 0.009808
|
||||
v 1.000481 -0.546855 0.010000
|
||||
v 1.000481 2.077504 0.010000
|
||||
v 0.998530 -0.546855 0.009808
|
||||
v 0.998530 2.077504 0.009808
|
||||
v 0.996654 -0.546855 0.009239
|
||||
v 0.996654 2.077504 0.009239
|
||||
v 0.994925 -0.546855 0.008315
|
||||
v 0.994925 2.077504 0.008315
|
||||
v 0.993410 -0.546855 0.007071
|
||||
v 0.993410 2.077504 0.007071
|
||||
v 0.992166 -0.546855 0.005556
|
||||
v 0.992166 2.077504 0.005556
|
||||
v 0.991242 -0.546855 0.003827
|
||||
v 0.991242 2.077504 0.003827
|
||||
v 0.990673 -0.546855 0.001951
|
||||
v 0.990673 2.077504 0.001951
|
||||
v 0.990481 -0.546855 -0.000000
|
||||
v 0.990481 2.077504 -0.000000
|
||||
v 0.990673 -0.546855 -0.001951
|
||||
v 0.990673 2.077504 -0.001951
|
||||
v 0.991242 -0.546855 -0.003827
|
||||
v 0.991242 2.077504 -0.003827
|
||||
v 0.992166 -0.546855 -0.005556
|
||||
v 0.992166 2.077504 -0.005556
|
||||
v 0.993410 -0.546855 -0.007071
|
||||
v 0.993410 2.077504 -0.007071
|
||||
v 0.994925 -0.546855 -0.008315
|
||||
v 0.994925 2.077504 -0.008315
|
||||
v 0.996654 -0.546855 -0.009239
|
||||
v 0.996654 2.077504 -0.009239
|
||||
v 0.998530 -0.546855 -0.009808
|
||||
v 0.998530 2.077504 -0.009808
|
||||
vt 0.797741 0.500000
|
||||
vt 0.797741 0.667203
|
||||
vt 0.777343 0.667203
|
||||
vt 0.777343 0.500000
|
||||
vt 0.757336 0.667203
|
||||
vt 0.757336 0.500000
|
||||
vt 0.738491 0.667203
|
||||
vt 0.738491 0.500000
|
||||
vt 0.721530 0.667203
|
||||
vt 0.721530 0.500000
|
||||
vt 0.707107 0.667203
|
||||
vt 0.707107 0.500000
|
||||
vt 0.632023 0.832797
|
||||
vt 0.632023 1.000000
|
||||
vt 0.615062 1.000000
|
||||
vt 0.615062 0.832797
|
||||
vt 0.596217 1.000000
|
||||
vt 0.596217 0.832797
|
||||
vt 0.576210 1.000000
|
||||
vt 0.576210 0.832797
|
||||
vt 0.555812 1.000000
|
||||
vt 0.555812 0.832797
|
||||
vt 0.535806 1.000000
|
||||
vt 0.535806 0.832797
|
||||
vt 0.516961 1.000000
|
||||
vt 0.516961 0.832797
|
||||
vt 0.500000 1.000000
|
||||
vt 0.500000 0.832797
|
||||
vt 0.853553 0.834407
|
||||
vt 0.853553 0.667203
|
||||
vt 0.870514 0.667203
|
||||
vt 0.870514 0.834407
|
||||
vt 0.889359 0.667203
|
||||
vt 0.889359 0.834407
|
||||
vt 0.909366 0.667203
|
||||
vt 0.909366 0.834407
|
||||
vt 0.929764 0.667203
|
||||
vt 0.929764 0.834407
|
||||
vt 0.949770 0.667203
|
||||
vt 0.949770 0.834407
|
||||
vt 0.968616 0.667203
|
||||
vt 0.968616 0.834407
|
||||
vt 0.985576 0.667203
|
||||
vt 0.985576 0.834407
|
||||
vt 1.000000 0.667203
|
||||
vt 1.000000 0.834407
|
||||
vt 0.707107 0.834407
|
||||
vt 0.707107 0.667203
|
||||
vt 0.724067 0.667203
|
||||
vt 0.724067 0.834407
|
||||
vt 0.742913 0.667203
|
||||
vt 0.742913 0.834407
|
||||
vt 0.762919 0.667203
|
||||
vt 0.762919 0.834407
|
||||
vt 0.783317 0.667203
|
||||
vt 0.783317 0.834407
|
||||
vt 0.803324 0.667203
|
||||
vt 0.803324 0.834407
|
||||
vt 0.822169 0.667203
|
||||
vt 0.822169 0.834407
|
||||
vt 0.839130 0.667203
|
||||
vt 0.839130 0.834407
|
||||
vt 0.853553 0.667203
|
||||
vt 0.853553 0.834407
|
||||
vt 0.867977 0.500000
|
||||
vt 0.867977 0.667203
|
||||
vt 0.853553 0.667203
|
||||
vt 0.853553 0.500000
|
||||
vt 0.836593 0.667203
|
||||
vt 0.836593 0.500000
|
||||
vt 0.593354 0.832797
|
||||
vt 0.573348 0.829599
|
||||
vt 0.554503 0.823328
|
||||
vt 0.537542 0.814222
|
||||
vt 0.523118 0.802634
|
||||
vt 0.511786 0.789007
|
||||
vt 0.503980 0.773866
|
||||
vt 0.500000 0.757792
|
||||
vt 0.500000 0.741403
|
||||
vt 0.503979 0.725329
|
||||
vt 0.511786 0.710188
|
||||
vt 0.523118 0.696561
|
||||
vt 0.537542 0.684972
|
||||
vt 0.554502 0.675867
|
||||
vt 0.573348 0.669596
|
||||
vt 0.593354 0.666398
|
||||
vt 0.613752 0.666398
|
||||
vt 0.633759 0.669596
|
||||
vt 0.652604 0.675867
|
||||
vt 0.669565 0.684972
|
||||
vt 0.683989 0.696561
|
||||
vt 0.695321 0.710188
|
||||
vt 0.703127 0.725329
|
||||
vt 0.707107 0.741403
|
||||
vt 0.707107 0.757792
|
||||
vt 0.703127 0.773866
|
||||
vt 0.695321 0.789007
|
||||
vt 0.683989 0.802634
|
||||
vt 0.669565 0.814222
|
||||
vt 0.652604 0.823328
|
||||
vt 0.633759 0.829599
|
||||
vt 0.613752 0.832797
|
||||
vt 0.817747 0.667203
|
||||
vt 0.817747 0.500000
|
||||
vt 0.500000 0.591394
|
||||
vt 0.500000 0.575005
|
||||
vt 0.503980 0.558931
|
||||
vt 0.511786 0.543790
|
||||
vt 0.523118 0.530163
|
||||
vt 0.537542 0.518574
|
||||
vt 0.554502 0.509469
|
||||
vt 0.573348 0.503197
|
||||
vt 0.593354 0.500000
|
||||
vt 0.613752 0.500000
|
||||
vt 0.633759 0.503197
|
||||
vt 0.652604 0.509469
|
||||
vt 0.669565 0.518574
|
||||
vt 0.683988 0.530163
|
||||
vt 0.695321 0.543790
|
||||
vt 0.703127 0.558931
|
||||
vt 0.707107 0.575005
|
||||
vt 0.707107 0.591394
|
||||
vt 0.703127 0.607467
|
||||
vt 0.695321 0.622609
|
||||
vt 0.683988 0.636235
|
||||
vt 0.669565 0.647824
|
||||
vt 0.652604 0.656929
|
||||
vt 0.633759 0.663201
|
||||
vt 0.613752 0.666398
|
||||
vt 0.593354 0.666398
|
||||
vt 0.573348 0.663201
|
||||
vt 0.554502 0.656929
|
||||
vt 0.537542 0.647824
|
||||
vt 0.523118 0.636235
|
||||
vt 0.511786 0.622609
|
||||
vt 0.503979 0.607467
|
||||
vn 0.0980 0.0000 -0.9952
|
||||
vn 0.2903 0.0000 -0.9569
|
||||
vn 0.4714 0.0000 -0.8819
|
||||
vn 0.6344 0.0000 -0.7730
|
||||
vn 0.7730 0.0000 -0.6344
|
||||
vn 0.8819 0.0000 -0.4714
|
||||
vn 0.9570 0.0000 -0.2903
|
||||
vn 0.9952 0.0000 -0.0980
|
||||
vn 0.9952 0.0000 0.0980
|
||||
vn 0.9570 0.0000 0.2903
|
||||
vn 0.8819 0.0000 0.4714
|
||||
vn 0.7730 0.0000 0.6344
|
||||
vn 0.6344 0.0000 0.7730
|
||||
vn 0.4714 0.0000 0.8819
|
||||
vn 0.2903 0.0000 0.9569
|
||||
vn 0.0980 0.0000 0.9952
|
||||
vn -0.0980 0.0000 0.9952
|
||||
vn -0.2903 0.0000 0.9569
|
||||
vn -0.4714 0.0000 0.8819
|
||||
vn -0.6344 0.0000 0.7730
|
||||
vn -0.7730 0.0000 0.6344
|
||||
vn -0.8819 0.0000 0.4714
|
||||
vn -0.9569 0.0000 0.2903
|
||||
vn -0.9952 0.0000 0.0980
|
||||
vn -0.9952 0.0000 -0.0980
|
||||
vn -0.9569 0.0000 -0.2903
|
||||
vn -0.8819 0.0000 -0.4714
|
||||
vn -0.7730 0.0000 -0.6344
|
||||
vn -0.6344 0.0000 -0.7730
|
||||
vn -0.4714 0.0000 -0.8819
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn -0.2903 0.0000 -0.9569
|
||||
vn -0.0980 0.0000 -0.9952
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 65/137/35 66/138/35 68/139/35 67/140/35
|
||||
f 67/140/36 68/139/36 70/141/36 69/142/36
|
||||
f 69/142/37 70/141/37 72/143/37 71/144/37
|
||||
f 71/144/38 72/143/38 74/145/38 73/146/38
|
||||
f 73/146/39 74/145/39 76/147/39 75/148/39
|
||||
f 75/149/40 76/150/40 78/151/40 77/152/40
|
||||
f 77/152/41 78/151/41 80/153/41 79/154/41
|
||||
f 79/154/42 80/153/42 82/155/42 81/156/42
|
||||
f 81/156/43 82/155/43 84/157/43 83/158/43
|
||||
f 83/158/44 84/157/44 86/159/44 85/160/44
|
||||
f 85/160/45 86/159/45 88/161/45 87/162/45
|
||||
f 87/162/46 88/161/46 90/163/46 89/164/46
|
||||
f 89/165/47 90/166/47 92/167/47 91/168/47
|
||||
f 91/168/48 92/167/48 94/169/48 93/170/48
|
||||
f 93/170/49 94/169/49 96/171/49 95/172/49
|
||||
f 95/172/50 96/171/50 98/173/50 97/174/50
|
||||
f 97/174/51 98/173/51 100/175/51 99/176/51
|
||||
f 99/176/52 100/175/52 102/177/52 101/178/52
|
||||
f 101/178/53 102/177/53 104/179/53 103/180/53
|
||||
f 103/180/54 104/179/54 106/181/54 105/182/54
|
||||
f 105/183/55 106/184/55 108/185/55 107/186/55
|
||||
f 107/186/56 108/185/56 110/187/56 109/188/56
|
||||
f 109/188/57 110/187/57 112/189/57 111/190/57
|
||||
f 111/190/58 112/189/58 114/191/58 113/192/58
|
||||
f 113/192/59 114/191/59 116/193/59 115/194/59
|
||||
f 115/194/60 116/193/60 118/195/60 117/196/60
|
||||
f 117/196/61 118/195/61 120/197/61 119/198/61
|
||||
f 119/198/62 120/197/62 122/199/62 121/200/62
|
||||
f 121/201/63 122/202/63 124/203/63 123/204/63
|
||||
f 123/204/64 124/203/64 126/205/64 125/206/64
|
||||
f 68/207/65 66/208/65 128/209/65 126/210/65 124/211/65 122/212/65 120/213/65 118/214/65 116/215/65 114/216/65 112/217/65 110/218/65 108/219/65 106/220/65 104/221/65 102/222/65 100/223/65 98/224/65 96/225/65 94/226/65 92/227/65 90/228/65 88/229/65 86/230/65 84/231/65 82/232/65 80/233/65 78/234/65 76/235/65 74/236/65 72/237/65 70/238/65
|
||||
f 125/206/66 126/205/66 128/239/66 127/240/66
|
||||
f 127/240/67 128/239/67 66/138/67 65/137/67
|
||||
f 65/241/68 67/242/68 69/243/68 71/244/68 73/245/68 75/246/68 77/247/68 79/248/68 81/249/68 83/250/68 85/251/68 87/252/68 89/253/68 91/254/68 93/255/68 95/256/68 97/257/68 99/258/68 101/259/68 103/260/68 105/261/68 107/262/68 109/263/68 111/264/68 113/265/68 115/266/68 117/267/68 119/268/68 121/269/68 123/270/68 125/271/68 127/272/68
|
||||
o Cube_Cube.001
|
||||
v -1.500000 -0.510087 0.250000
|
||||
v -1.500000 -0.610087 0.250000
|
||||
v -1.500000 -0.510087 -0.250000
|
||||
v -1.500000 -0.610087 -0.250000
|
||||
v 1.500000 -0.510087 0.250000
|
||||
v 1.500000 -0.610087 0.250000
|
||||
v 1.500000 -0.510087 -0.250000
|
||||
v 1.500000 -0.610087 -0.250000
|
||||
vt 0.490000 0.990000
|
||||
vt 0.010000 0.990000
|
||||
vt 0.010000 0.510000
|
||||
vt 0.490000 0.510000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.500000 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt -0.000000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.010000 0.510000
|
||||
vt 0.490000 0.510000
|
||||
vt 0.490000 0.990000
|
||||
vt 0.500000 0.000000
|
||||
vt -0.000000 0.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 129/273/69 131/274/69 132/275/69 130/276/69
|
||||
f 131/277/70 135/278/70 136/279/70 132/280/70
|
||||
f 135/281/71 133/282/71 134/283/71 136/284/71
|
||||
f 133/285/72 129/286/72 130/287/72 134/288/72
|
||||
f 131/274/73 129/289/73 133/290/73 135/291/73
|
||||
f 136/292/74 134/288/74 130/287/74 132/293/74
|
|
@ -0,0 +1,50 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib microwave.mtl
|
||||
o Grinder_Cube_Cube.000
|
||||
v -0.500000 0.004659 -0.508604
|
||||
v -0.500000 0.503993 -0.508604
|
||||
v 0.500000 0.503994 -0.508604
|
||||
v 0.500000 0.004659 -0.508604
|
||||
v 0.500000 0.503994 0.191396
|
||||
v 0.500000 0.004659 0.191396
|
||||
v -0.500000 0.503993 0.191396
|
||||
v -0.500000 0.004659 0.191396
|
||||
vt 0.919320 0.114925
|
||||
vt 0.919320 0.447658
|
||||
vt 0.080680 0.447658
|
||||
vt 0.080680 0.114925
|
||||
vt 0.927009 0.108942
|
||||
vt 0.927009 0.451625
|
||||
vt 0.072991 0.451625
|
||||
vt 0.072991 0.108942
|
||||
vt 0.940856 0.563847
|
||||
vt 0.940856 0.918011
|
||||
vt 0.061817 0.918011
|
||||
vt 0.061817 0.563847
|
||||
vt 0.913195 0.115806
|
||||
vt 0.913195 0.444761
|
||||
vt 0.086805 0.444761
|
||||
vt 0.086805 0.115806
|
||||
vt 0.915305 0.113088
|
||||
vt 0.915305 0.447479
|
||||
vt 0.084695 0.447479
|
||||
vt 0.084695 0.113088
|
||||
vt 0.919181 0.111625
|
||||
vt 0.921691 0.444910
|
||||
vt 0.078145 0.444910
|
||||
vt 0.075635 0.111625
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn -0.0000 -0.0000 1.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
vn -0.0000 1.0000 0.0000
|
||||
usemtl None.001
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 4/5/2 3/6/2 5/7/2 6/8/2
|
||||
f 6/9/3 5/10/3 7/11/3 8/12/3
|
||||
f 8/13/4 7/14/4 2/15/4 1/16/4
|
||||
f 4/17/5 6/18/5 8/19/5 1/20/5
|
||||
f 5/21/6 3/22/6 2/23/6 7/24/6
|
|
@ -0,0 +1,50 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib Refridgerator.mtl
|
||||
o Fridge_Grinder_Cube_Cube.002
|
||||
v -0.450000 -0.500000 0.450000
|
||||
v -0.450000 1.500000 0.450000
|
||||
v -0.450000 1.500000 -0.450000
|
||||
v -0.450000 -0.500000 -0.450000
|
||||
v 0.450000 1.500000 -0.450000
|
||||
v 0.450000 -0.500000 -0.450000
|
||||
v 0.450000 1.500000 0.450000
|
||||
v 0.450000 -0.500000 0.450000
|
||||
vt 0.515331 0.072757
|
||||
vt 0.945055 0.072757
|
||||
vt 0.945055 0.932203
|
||||
vt 0.515331 0.932203
|
||||
vt 0.493821 0.999929
|
||||
vt 0.493821 0.000071
|
||||
vt 0.993750 0.000071
|
||||
vt 0.993750 0.999929
|
||||
vt 0.502537 0.075832
|
||||
vt 0.963762 0.075832
|
||||
vt 0.963762 0.927743
|
||||
vt 0.502537 0.927743
|
||||
vt 0.465066 0.073595
|
||||
vt 0.465066 0.943767
|
||||
vt 0.028950 0.943767
|
||||
vt 0.028950 0.073595
|
||||
vt 0.545838 0.070474
|
||||
vt 0.924469 0.070474
|
||||
vt 0.924469 0.433365
|
||||
vt 0.545838 0.433365
|
||||
vt 0.935257 0.939892
|
||||
vt 0.535050 0.939892
|
||||
vt 0.535050 0.561131
|
||||
vt 0.935257 0.561131
|
||||
vn -1.0000 -0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
usemtl None.007
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 4/5/2 3/6/2 5/7/2 6/8/2
|
||||
f 6/9/3 5/10/3 7/11/3 8/12/3
|
||||
f 8/13/4 7/14/4 2/15/4 1/16/4
|
||||
f 4/17/5 6/18/5 8/19/5 1/20/5
|
||||
f 5/21/6 3/22/6 2/23/6 7/24/6
|
|
@ -0,0 +1,113 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib Sofa.mtl
|
||||
o Grinder_Cube_Cube.000
|
||||
v -0.500000 -0.500000 0.500000
|
||||
v -0.500000 -0.000000 0.500000
|
||||
v -0.500000 0.500000 -0.500000
|
||||
v -0.500000 -0.500000 -0.500000
|
||||
v 0.500000 0.500000 -0.500000
|
||||
v 0.500000 -0.500000 -0.500000
|
||||
v 0.500000 -0.000000 0.500000
|
||||
v 0.500000 -0.500000 0.500000
|
||||
v 0.500000 0.500000 -0.200000
|
||||
v 0.500000 -0.500000 -0.000000
|
||||
v -0.500000 0.500000 -0.200000
|
||||
v -0.500000 -0.500000 -0.000000
|
||||
v 0.500000 0.000000 -0.500000
|
||||
v 0.500000 -0.000000 0.500000
|
||||
v -0.500000 -0.000000 0.500000
|
||||
v -0.500000 0.000000 -0.500000
|
||||
v 0.500000 0.000000 -0.200000
|
||||
v -0.500000 0.000000 -0.200000
|
||||
v 0.500000 -0.000000 -0.150000
|
||||
v 0.500000 -0.500000 0.250000
|
||||
v -0.500000 -0.000000 -0.150000
|
||||
v -0.500000 -0.500000 0.250000
|
||||
v -0.500000 -0.000000 -0.150000
|
||||
v 0.500000 -0.000000 -0.150000
|
||||
vt 0.300000 0.500000
|
||||
vt 0.300000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.250000 0.000000
|
||||
vt 0.250000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.671750
|
||||
vt 1.000000 0.671750
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.500000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.700000 1.000000
|
||||
vt 0.700000 0.500000
|
||||
vt 0.350000 0.500000
|
||||
vt 0.350000 0.500000
|
||||
vt 0.750000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.500000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.250000 0.000000
|
||||
vt 0.650000 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.650000 0.500000
|
||||
vn -1.0000 -0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn -0.7534 0.6575 0.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 0.7415 0.6710
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn -0.4241 -0.9056 0.0000
|
||||
vn -0.7071 -0.7071 0.0000
|
||||
usemtl None.001
|
||||
s 1
|
||||
f 18/1/1 11/2/1 3/3/1 16/4/1
|
||||
f 16/5/2 3/6/2 5/7/2 13/8/2
|
||||
f 24/9/3 19/10/1 7/11/1 14/12/4
|
||||
f 14/12/5 7/11/5 2/13/5 15/14/5
|
||||
f 22/15/6 20/16/6 8/17/6 1/18/6
|
||||
f 19/10/7 21/19/7 2/13/8 7/11/8
|
||||
f 5/20/8 3/3/8 11/21/7 9/22/7
|
||||
f 4/23/6 6/24/6 10/25/6 12/26/6
|
||||
f 13/27/3 5/20/3 9/28/3 17/29/3
|
||||
f 23/30/1 21/31/9 11/2/1 18/1/1
|
||||
f 22/32/1 23/30/1 18/1/1 12/26/1
|
||||
f 6/33/3 13/27/3 17/29/3 10/34/3
|
||||
f 8/35/5 14/36/5 15/37/5 1/18/5
|
||||
f 20/38/3 24/39/3 14/40/4 8/41/3
|
||||
f 4/23/2 16/5/2 13/8/2 6/42/2
|
||||
f 12/26/1 18/1/1 16/4/1 4/43/1
|
||||
f 10/34/3 17/29/3 24/39/3 20/38/3
|
||||
f 1/44/1 15/45/10 23/30/1 22/32/1
|
||||
f 15/14/10 2/13/6 21/19/9 23/46/1
|
||||
f 9/47/7 11/48/7 21/49/7 19/50/7
|
||||
f 12/26/6 10/25/6 20/16/6 22/15/6
|
||||
f 17/29/3 9/28/3 19/51/1 24/39/3
|
|
@ -0,0 +1,232 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib Table.mtl
|
||||
o Cube.005_Cube.006
|
||||
v 0.212500 -0.500027 0.212500
|
||||
v 0.212500 -0.500027 0.312500
|
||||
v 0.212500 0.418315 0.312500
|
||||
v 0.212500 0.418315 0.212500
|
||||
v 0.312500 0.418315 0.312500
|
||||
v 0.312500 0.418315 0.212500
|
||||
v 0.312500 -0.500027 0.312500
|
||||
v 0.312500 -0.500027 0.212500
|
||||
vt 0.400000 1.000000
|
||||
vt 0.200001 1.000000
|
||||
vt 0.200000 0.000000
|
||||
vt 0.400000 0.000000
|
||||
vt 0.800000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.108892
|
||||
vt 0.800000 0.108892
|
||||
vt 0.200000 1.000000
|
||||
vt 0.000001 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.200000 0.000000
|
||||
vt 0.800000 0.217784
|
||||
vt 0.800000 0.108892
|
||||
vt 1.000000 0.108892
|
||||
vt 1.000000 0.217784
|
||||
vt 0.600000 0.000000
|
||||
vt 0.600000 1.000000
|
||||
vt 0.600000 0.000000
|
||||
vt 0.800000 0.000000
|
||||
vt 0.800000 1.000000
|
||||
vt 0.600000 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
usemtl None.006
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 4/5/2 3/6/2 5/7/2 6/8/2
|
||||
f 6/9/3 5/10/3 7/11/3 8/12/3
|
||||
f 8/13/4 7/14/4 2/15/4 1/16/4
|
||||
f 4/4/5 6/17/5 8/18/5 1/1/5
|
||||
f 5/19/6 3/20/6 2/21/6 7/22/6
|
||||
o Cube.004_Cube.005
|
||||
v -0.312500 -0.500027 0.212500
|
||||
v -0.312500 -0.500027 0.312500
|
||||
v -0.312500 0.418315 0.312500
|
||||
v -0.312500 0.418315 0.212500
|
||||
v -0.212500 0.418315 0.312500
|
||||
v -0.212500 0.418315 0.212500
|
||||
v -0.212500 -0.500027 0.312500
|
||||
v -0.212500 -0.500027 0.212500
|
||||
vt 0.400000 1.000000
|
||||
vt 0.200001 1.000000
|
||||
vt 0.200000 0.000000
|
||||
vt 0.400000 0.000000
|
||||
vt 0.800000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.108892
|
||||
vt 0.800000 0.108892
|
||||
vt 0.200000 1.000000
|
||||
vt 0.000001 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.200000 0.000000
|
||||
vt 0.800000 0.217784
|
||||
vt 0.800000 0.108892
|
||||
vt 1.000000 0.108892
|
||||
vt 1.000000 0.217784
|
||||
vt 0.600001 0.000000
|
||||
vt 0.800000 0.000000
|
||||
vt 0.800000 1.000000
|
||||
vt 0.600000 1.000000
|
||||
vt 0.400000 0.000000
|
||||
vt 0.600000 0.000000
|
||||
vt 0.600000 1.000000
|
||||
vt 0.400001 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
usemtl None.006
|
||||
s 1
|
||||
f 9/23/7 10/24/7 11/25/7 12/26/7
|
||||
f 12/27/8 11/28/8 13/29/8 14/30/8
|
||||
f 14/31/9 13/32/9 15/33/9 16/34/9
|
||||
f 16/35/10 15/36/10 10/37/10 9/38/10
|
||||
f 12/39/11 14/40/11 16/41/11 9/42/11
|
||||
f 13/43/12 11/44/12 10/45/12 15/46/12
|
||||
o Cube.003_Cube.004
|
||||
v -0.312500 -0.500027 -0.312500
|
||||
v -0.312500 -0.500027 -0.212500
|
||||
v -0.312500 0.418315 -0.212500
|
||||
v -0.312500 0.418315 -0.312500
|
||||
v -0.212500 0.418315 -0.212500
|
||||
v -0.212500 0.418315 -0.312500
|
||||
v -0.212500 -0.500027 -0.212500
|
||||
v -0.212500 -0.500027 -0.312500
|
||||
vt 0.600000 0.000000
|
||||
vt 0.800000 0.000000
|
||||
vt 0.800000 1.000000
|
||||
vt 0.600000 1.000000
|
||||
vt 1.000000 0.108892
|
||||
vt 0.800000 0.108892
|
||||
vt 0.800000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.200000 0.000000
|
||||
vt 0.200000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.800000 0.217784
|
||||
vt 0.800000 0.108892
|
||||
vt 1.000000 0.108892
|
||||
vt 1.000000 0.217784
|
||||
vt 0.400000 0.000000
|
||||
vt 0.600000 0.000000
|
||||
vt 0.600000 1.000000
|
||||
vt 0.400000 1.000000
|
||||
vt 0.400000 0.000000
|
||||
vt 0.400000 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
usemtl None.006
|
||||
s 1
|
||||
f 17/47/13 18/48/13 19/49/13 20/50/13
|
||||
f 20/51/14 19/52/14 21/53/14 22/54/14
|
||||
f 22/55/15 21/56/15 23/57/15 24/58/15
|
||||
f 24/59/16 23/60/16 18/61/16 17/62/16
|
||||
f 20/63/17 22/64/17 24/65/17 17/66/17
|
||||
f 21/56/18 19/67/18 18/68/18 23/57/18
|
||||
o Cube.002_Cube.003
|
||||
v 0.212500 -0.500027 -0.312500
|
||||
v 0.212500 -0.500027 -0.212500
|
||||
v 0.212500 0.418315 -0.212500
|
||||
v 0.212500 0.418315 -0.312500
|
||||
v 0.312500 0.418315 -0.212500
|
||||
v 0.312500 0.418315 -0.312500
|
||||
v 0.312500 -0.500027 -0.212500
|
||||
v 0.312500 -0.500027 -0.312500
|
||||
vt 0.600000 0.000000
|
||||
vt 0.800000 0.000000
|
||||
vt 0.800000 1.000000
|
||||
vt 0.600000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.108892
|
||||
vt 0.800000 0.108892
|
||||
vt 0.800000 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.200000 0.000000
|
||||
vt 0.200000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.800000 0.217784
|
||||
vt 0.800000 0.108892
|
||||
vt 1.000000 0.108892
|
||||
vt 1.000000 0.217784
|
||||
vt 0.200000 0.000000
|
||||
vt 0.400000 0.000000
|
||||
vt 0.400000 1.000000
|
||||
vt 0.200000 1.000000
|
||||
vt 0.400000 0.000000
|
||||
vt 0.600000 0.000000
|
||||
vt 0.600000 1.000000
|
||||
vt 0.400000 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 1.0000 -0.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
usemtl None.006
|
||||
s 1
|
||||
f 25/69/19 26/70/19 27/71/19 28/72/19
|
||||
f 28/73/20 27/74/20 29/75/20 30/76/20
|
||||
f 30/77/21 29/78/21 31/79/21 32/80/21
|
||||
f 32/81/22 31/82/22 26/83/22 25/84/22
|
||||
f 28/85/23 30/86/23 32/87/23 25/88/23
|
||||
f 29/89/24 27/90/24 26/91/24 31/92/24
|
||||
o Cube_Cube.001
|
||||
v -0.500000 0.399565 0.500000
|
||||
v -0.500000 0.499565 0.500000
|
||||
v -0.500000 0.499565 -0.500000
|
||||
v -0.500000 0.399565 -0.500000
|
||||
v 0.500000 0.499565 -0.500000
|
||||
v 0.500000 0.399565 -0.500000
|
||||
v 0.500000 0.499565 0.500000
|
||||
v 0.500000 0.399565 0.500000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
usemtl None.006
|
||||
s 1
|
||||
f 33/93/25 34/94/25 35/95/25 36/96/25
|
||||
f 36/97/26 35/98/26 37/99/26 38/100/26
|
||||
f 38/101/27 37/102/27 39/103/27 40/104/27
|
||||
f 40/105/28 39/106/28 34/107/28 33/108/28
|
||||
f 36/109/29 38/101/29 40/104/29 33/110/29
|
||||
f 37/111/30 35/112/30 34/113/30 39/114/30
|
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 142 KiB |
After Width: | Height: | Size: 441 KiB |
After Width: | Height: | Size: 15 MiB |
After Width: | Height: | Size: 450 KiB |