Compare commits

..

No commits in common. "master" and "terrain-test" have entirely different histories.

401 changed files with 3478378 additions and 114659 deletions

9
.gitignore vendored
View File

@ -1,12 +1,5 @@
binaries
build
/Makefile
Makefile
CMakeLists.txt.user
*.cbp
*~
*.zip
*.db
*.blend1
*.swp
*.pyc
*.o

View File

@ -1,9 +1,7 @@
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
add_subdirectory(converter)
# project/binary name:
PROJECT(saxum)
PROJECT(MarbleRaceGroupC)
# ACGL setup
SET(ACGL_OPENGL_SUPPORT CORE_32)
@ -53,28 +51,23 @@ ADD_DEFINITIONS(-DNO_SPACE_NAVIGATOR_SUPPORT)
#
# Lets the binary get written to a shared folder (which can be ignored by git).
# Will also set the run directory for QTCreator:
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -DSAXUM_DEBUG -g")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -DSAXUM_DEBUG -g")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -DNDEBUG")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -DNDEBUG")
set(dir ${CMAKE_CURRENT_SOURCE_DIR}/binaries)
set(EXECUTABLE_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
# source and header files
FILE(GLOB SOURCE_FILES "${CMAKE_SOURCE_DIR}/game/*.cc")
FILE(GLOB_RECURSE SOURCE_FILES_SHARED "../shared/*.cc")
FILE(GLOB_RECURSE SOURCE_FILES "${CMAKE_SOURCE_DIR}/*.cc")
SET(SOURCE_FILES ${SOURCE_FILES} ${SOURCE_FILES_SHARED})
FILE(GLOB HEADER_FILES "${CMAKE_SOURCE_DIR}/game/*.hh")
FILE(GLOB_RECURSE HEADER_FILES_SHARED "../shared/*.hh")
FILE(GLOB_RECURSE HEADER_FILES "${CMAKE_SOURCE_DIR}/*.hh")
SET(HEADER_FILES ${HEADER_FILES} ${HEADER_FILES_SHARED})
# tinyxml
# shader files
FILE(GLOB_RECURSE SHADER_FILES "${CMAKE_SOURCE_DIR}/Shader/*.*")
FILE(GLOB HEADER_FILES_TINYXML "${CMAKE_SOURCE_DIR}/extern/tinyxml/*.hh")
SET(HEADER_FILES ${HEADER_FILES} ${HEADER_FILES_TINYXML})
FILE(GLOB SOURCE_FILES_TINYXML "${CMAKE_SOURCE_DIR}/extern/tinyxml/*.cc")
SET(SOURCE_FILES ${SOURCE_FILES} ${SOURCE_FILES_TINYXML})
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extern/tinyxml)
# Readme
FILE(GLOB_RECURSE README_FILES "${CMAKE_SOURCE_DIR}/../README.TXT")
#
#
###############################################################################
@ -83,6 +76,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extern/tinyxml)
#
# all we need for ACGL:
#
ADD_DEFINITIONS(-DACGL_ERROR_LEVEL_EC3)
INCLUDE(${CMAKE_SOURCE_DIR}/extern/acgl/CMakeListsStaticInclude.txt)
#
#
@ -93,11 +87,6 @@ INCLUDE(${CMAKE_SOURCE_DIR}/extern/acgl/CMakeListsStaticInclude.txt)
# GLFW (and some other linker flags)
#
OPTION(GLFW_BUILD_DOCS OFF)
OPTION(GLFW_BUILD_TESTS OFF)
OPTION(GLFW_BUILD_EXAMPLES OFF)
OPTION(GLFW_INSTALL OFF)
FILE(GLOB_RECURSE HEADER_FILES_GLFW "${CMAKE_SOURCE_DIR}/extern/glfw/include/*.h")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extern/glfw/include)
SET(HEADER_FILES ${HEADER_FILES} ${HEADER_FILES_GLFW})
@ -117,7 +106,7 @@ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
# Linux:
#
IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
SET(LIBRARIES ${LIBRARIES} -lXrandr -lGL -lXi -pthread -lm -lX11 -lXxf86vm -ldl)
SET(LIBRARIES ${LIBRARIES} -lXrandr -lGL -lXi -pthread -lm -lX11 -lXxf86vm)
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
#
#
@ -129,33 +118,12 @@ FILE(GLOB_RECURSE HEADER_FILES_BULLET ${CMAKE_SOURCE_DIR}/extern/bullet/src/*.h)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extern/bullet/src)
SET(HEADER_FILES ${HEADER_FILES} ${HEADER_FILES_BULLET})
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/lib/libBulletDynamics.a)
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/lib/libBulletCollision.a)
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/lib/libLinearMath.a)
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/lib/libBulletSoftBody.a)
SET (LIBRARIES -static ${LIBRARIES} -static-libgcc -static-libstdc++)
else()
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletDynamics/libBulletDynamics.a)
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletCollision/libBulletCollision.a)
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/LinearMath/libLinearMath.a)
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletSoftBody/libBulletSoftBody.a)
endif()
# Include Lua
FILE(GLOB_RECURSE HEADER_FILES_LUA ${CMAKE_SOURCE_DIR}/extern/lua/src/*.h)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extern/lua/src)
SET(HEADER_FILES ${HEADER_FILES} ${HEADER_FILES_LUA})
FILE(GLOB_RECURSE HEADER_FILES_LUA_BRIDGE ${CMAKE_SOURCE_DIR}/extern/luabridge/*.h)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extern/luabridge)
SET(HEADER_FILES ${HEADER_FILES} ${HEADER_FILES_LUA_BRIDGE})
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/lua/src/liblua.a)
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletDynamics/libBulletDynamics.a)
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletCollision/libBulletCollision.a)
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/LinearMath/libLinearMath.a)
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletSoftBody/libBulletSoftBody.a)
ADD_EXECUTABLE(saxum ${SOURCE_FILES} ${HEADER_FILES})
TARGET_LINK_LIBRARIES(saxum ${LIBRARIES} ${CMAKE_DL_LIBS})
ADD_EXECUTABLE(${CMAKE_PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES} ${SHADER_FILES} ${README_FILES})
TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME} ${LIBRARIES})

View File

@ -1,13 +0,0 @@
from ubuntu:trusty
run apt-get update -y
run apt-get upgrade -y
run apt-get install -y build-essential
run apt-get install -y gcc-mingw-w64
run apt-get install -y cmake
run apt-get install -y ninja-build
run apt-get install -y xorg-dev
run apt-get install -y freeglut3-dev
run apt-get install -y zip
run apt-get install -y libreadline6-dev

208354
Geometry/Bunny.ab Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 MiB

After

Width:  |  Height:  |  Size: 9.8 MiB

104285
Geometry/BunnyColors.atb Normal file

File diff suppressed because it is too large Load Diff

8
Geometry/Quad.ab Normal file
View File

@ -0,0 +1,8 @@
6
-1.0 -1.0 0.0 0.0 0.0 1.0 0.0 0.0
1.0 -1.0 0.0 0.0 0.0 1.0 1.0 0.0
1.0 1.0 0.0 0.0 0.0 1.0 1.0 1.0
-1.0 -1.0 0.0 0.0 0.0 1.0 0.0 0.0
1.0 1.0 0.0 0.0 0.0 1.0 1.0 1.0
-1.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0

BIN
Geometry/clownfishBunny.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

3145731
Geometry/clownfishBunny.ppm Normal file

File diff suppressed because it is too large Load Diff

BIN
Geometry/terrainTexture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

View File

@ -1,471 +0,0 @@
All code except the one in extern is subject to the following license:
The MIT License (MIT)
Copyright (c) 2014-2015 Fabian Klemp, Steffen Fündgens, Jasper Manousek, Simon
Froitzheim
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-------------------------------------------------------------------------------------
The code in extern contains the following libraries with their respective
licenses:
-------------------------------------------------------------------------------------
ACGL: ACGL - Aachen Computer Graphics Library
Intended to speed up graphics/OpenGL prototyping. Developed by Lars Krecklau
and Robert Menzel with help from Andreas Neu, Janis Born, Kersten Schuster, Ole
Untzelmann, based on prior work from Lars Krecklau.
Included third-party software:
* Includes lodepng by Lode Vandevenne, unchanged except for the include path in
* lodepng.cpp. lodepng is provided as-is, see license text in the lodepng
* source code. Includes OpenGL loader code created by a modified glLoadGen by
* Jason McKesson. Includes GLM by Christophe Riccio. Includes data type
* definitions from libspnav header originally by John Tsiombikas (see
* mini_spnav.h for details). Includes RGBE/Radiance image import by Bruce
* Walter (code provided 'as-is') minimally adjusted to reduce compiler
* warnings.
Additional documentation:
http://www.graphics.rwth-aachen.de/redmine/projects/acgl/wiki
License:
ACGL is distributed under the terms of the MIT license stated below.
Copyright (C) 2011-2012 Computer Graphics Group RWTH Aachen University
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-------------------------------------------------------------------------------------
GLM License:
The MIT License
Copyright (c) 2005 - 2013 G-Truc Creation
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-------------------------------------------------------------------------------------
Linux Joystick License:
Copyright (C) 2008 Andreas Volz
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the “Software”), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies of the Software and its Copyright notices. In addition publicly
documented acknowledgment must be given that this software has been used if no
source code of this software is made available publicly. This includes
acknowledgments in either Copyright notices, Manuals, Publicity and Marketing
documents or any documentation provided with any product containing this
software. This License does not apply to any software that links to the
libraries provided by this software (statically or dynamically), but only to
the software provided.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-------------------------------------------------------------------------------------
TinyXML2 License:
Original code by Lee Thomason (www.grinninglizard.com)
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any
damages arising from the use of this software.
Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it and
redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product documentation
would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and
must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
-------------------------------------------------------------------------------------
Bullet Physics License:
Bullet Continuous Collision Detection and Physics Library Copyright (c)
2003-2011 Erwin Coumans http://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty. In
no event will the authors be held liable for any damages arising from the use
of this software. Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim
that you wrote the original software. If you use this software in a product, an
acknowledgment in the product documentation would be appreciated but is not
required. 2. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software. 3. This notice may not
be removed or altered from any source distribution.
All files in the extern/bullet/src folder are under this Zlib license. Files in the
Extras and Demos folder may have a different license, see the respective files.
-------------------------------------------------------------------------------------
GLFW License:
Copyright (c) 2002-2006 Marcus Geelnard
Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would
be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not
be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
-------------------------------------------------------------------------------------
Lua License:
Copyright © 19942015 Lua.org, PUC-Rio.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-------------------------------------------------------------------------------------
LuaBridge License:
https://github.com/vinniefalco/LuaBridge
Copyright 2012, Vinnie Falco <vinnie.falco@gmail.com>
Copyright 2007, Nathan Reed
License: The MIT License (http://www.opensource.org/licenses/mit-license.php)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
Licenses for Models and Textures:
-------------------------------------------------------------------------------------
data/textures/sand.png is from
http://opengameart.org/node/18616
Created by Christian Femmer aka Duion.
It is licensed CC-BY 3.0,
see https://creativecommons.org/licenses/by/3.0/ for full license text.
data/textures/hintTexture2.png is based on this.
-------------------------------------------------------------------------------------
data/textures/nightskydome.png was generated with:
http://wwwtyro.github.io/procedural.js/space/ Source code here:
https://github.com/wwwtyro/procedural.js
Seed: NTc3MDMzNjg3ODQ4NQ
-------------------------------------------------------------------------------------
data/textures/skydomeNew.png was modified and originally taken from:
http://www.tutorialsforblender3d.com/Textures/Skys/Sky_Dome_1.html
The author states that the images were created with "Terragen(tm) Classic for
Windows" and according to their license, the textures are free for personal
non-commercial use.
-------------------------------------------------------------------------------------
All textures in data/textures/cgtextures are subject to the following license:
This document is a license agreement ("License") by CGTextures between the user
("You") and CGTextures. Use of the photographs on the CGTextures website is
conditional upon the your agreement to the terms and conditions of purchase set
out below. If you do not agree to these terms, then you must not accept the
terms hereof or purchase, download, access or otherwise use any products from
CGTextures.
CGTextures may revise and update this Agreement at anytime and without notice.
Your continued use of the website after any such changes are posted will
constitute your acceptance of these changes.
LICENSE
CGTextures offers photographs of materials ("Textures") on its website
(www.cgtextures.com) for game developers, special effects artists, graphic
designers and other professions. No payment or royalties are required to use
these Textures. The use of Textures is non-exclusive, royalty free, and you
have the right to modify them for the uses permitted under the clause
Conditions of Use. Most Textures on the CGTextures website are photographed by
CGTextures. A small part is photographed by third party contributors
("Contributors"). CGTextures has separate agreements with these Contributors in
which they grant CGTextures permission to add their Textures to the website.
All terms and conditions in this License apply to both groups of Textures. All
Textures and materials remain in ownership of CGTextures or the Contributor and
the Textures and materials are licensed to you, not sold.
The license granted for the use of the textures gives you no lawful right to
submit, use or otherwise make available the textures in Second Life or
otherwise to Linden Research, Inc. Use of the textures in such manner will be
an infringement of the intellectual property rights if CGTextures and
CGTextures reserves its right to take action to prevent any such infringement.
INTELLECTUAL PROPERTY
All materials including the organization and presentation of these materials on
the CGTextures website are the property of CGTextures or its Contributors and
are protected by intellectual property laws. Some images contain graphic
materials like wallpaper patterns, logos, names or signs. The use of these kind
of images is at your own discretion. The rights for the photo lie with
CGTextures and the photo has been taken in a public space, but using the
patterns, logos or name in your work might not be allowed.
CONDITIONS OF USE
Use of the Textures is only allowed under the following conditions:
- Private or commercial use
- Use in 2D or 3D computer graphics, movies and printed media
- Incorporation in computer games, 3D models
- Selling 3D models bundled with modified versions of the textures, when the
texture is customized for the 3D model
It is NOT permitted to:
- Sell or distribute any of these textures in an unmodified form, or where the
derived product you are selling or distributing is a Texture or a collection
of Textures. IN OTHER WORDS: Do not sell or distribute any of these textures
(modified or not) by itself or in a texture pack, material, clipart, website
theme or scrapbooking pack!
- Bundle the images with software such as paint programs, 3D programs,
photo-kiosk software.
- Reselling or redistributing the images at 'print on demand' services (mugs,
t-shirts, mouse mats, etc)
- Use the textures in graphic design themes or templates sold to multiple
customers on digital market places (this includes templates of websites and
business cards and e-cards).
- Selling or redistributing skins for laptops, phones and other devices,
created with images from CGTextures.
- Stockpile images with the goal of making a local texture library.
- Using a special program (spider, leecher) or script to automatically download
all Textures on the CGTextures website. Users who try to mass download will
be banned from the website automatically.
- Interfere with the security or otherwise abuse, disrupt, place excessive
loads on, or attempt to gain unauthorized access to the CGTextures website or
any system resources or networks connected to this website.
- Release the Textures or derivative products under Open Source Licences
RESALE OR REDISTRIBUTION OF 3D MODELS TEXTURED WITH IMAGES FROM CGTEXTURES
When selling or redistributing a 3D model bundled with textures from CGTextures
please add the following text in the documentation accompanying the model:
"One or more textures on this 3D model have been created with images from
CGTextures.com. These images may not be redistributed by default, please visit
www.cgtextures.com for more information."
STOCKPILING IMAGES
CGTextures is meant as a 'download when you need it' resource. Downloading
complete categories with the goal of making a local copy of the texture
collection is not allowed.
PRIVACY
CGTextures respects the privacy of the personal information of the individuals
with whom we interact. CGTextures does not disclose personal information of our
members or those individuals who visit our website. No newsletters or offers
will be sent to you without your prior consent. Any information submitted by
the buyer will be used solely for the purpose of completing the transaction,
delivering the product and addressing any customer service issues.
We use third-party advertising companies (Google Adsense) to serve ads when you
visit our website. These companies may use information (not including
personally identifying information such as your name, address, email address,
or telephone number) about your visits to this and other websites in order to
provide advertisements about goods and services of interest to you. For more
information about this subject (including on how to "Opt-Out" on advertising
cookies) please visit this link: Google Advertsing and Privacy page
LIMITATION OF LIABILITY
You assume all responsibility and risk for the use of the CGTextures website,
the Textures, materials and information. CGTextures does not represent or
warrant that the site or any content available for downloading through the site
will be free of viruses or similar contaminations of destructive features.
In no event shall CGTextures or any of its affiliates, employees or
Contributors be liable for any incidental, indirect, punitive, exemplary or
consequential damages whatsoever, including damages for loss of profits,
interruption, loss of business information, loss of data, or any other
pecuniary loss in connection with any claim, loss, action, suit, damage or
other proceeding arising under or out of this License, including without
limitation your use of, reliance upon, access to or exploitation of the
CGTextures website, the materials or any part thereof, or any rights granted to
you hereunder, even if we have been advised of the possibility of such damaged,
wheter the action is based on contract, tort (including negligence),
infringement of intellectual property rights or otherwise.
INDEMNIFICATION
You agree to indemnify and hold CGTextures harmless against all claims or
liability asserted against CGTextures arising out of or in connection with any
breach by you or anyone acting on your behalf of any of this License
GENERAL
This License shall be governed by and construed in accordance with the laws of
The Netherlands, without regards to conflict of laws provisions thereto. The
parties consent to the exclusive jurisdiction of the courts of, and venue and
situs in The Netherlands.
TERMINATION
CGTextures reserves the right to terminate the license of the use of the
materials on CGTextures if the user is found in breach of this License and does
not remedy that breach within three (3) days of receiving notice from
CGTextures.
EMAIL
Feel free to email any questions regarding this license or any other questions
about CGTextures to support@cgtextures.com Correspondence can be in English or
Dutch.
ADDRESS
CGTextures.com Krommedijk 231 3312LE Dordrecht The Netherlands
-------------------------------------------------------------------------------------
The logo in logo/ and also contained in the loading
screen(data/textures/loadingscreen.png and
data/textures/loadingscreenContinue.png) is subject to the following license:
Created by Fabian Klemp and Jeremy Theocharis in 2015.
Licensed by CC BY 4.0.
(see https://creativecommons.org/licenses/by/4.0/ for full license text)
-------------------------------------------------------------------------------------
All other models and textures contained in data/textures and data/geometry and
also the corresponding GIMP files in GIMPfiles and the Blender files in
Blenderfiles are subject to the following license:
Created by Simon Froitzheim, Fabian Klemp, Steffen Fündgens and Jasper Manousek in 2014 and 2015.
Licensed by CC BY 4.0.
(see https://creativecommons.org/licenses/by/4.0/ for full license text)

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -1,24 +1,6 @@
![Saxum Logo](https://github.com/Faerbit/Saxum/blob/master/logo/saxum_logo_small.png)
#Marble Race Game
This is a Marble Puzzle/Exploration Game developed in the practical course
at the institute for Computer Graphics and Multimedia at the RWTH Aachen.
##Downloads
See [release page](https://github.com/Faerbit/Saxum/releases) for downloads.
##Controls
You can control the camera by moving the mouse. You can zoom with the mouse wheel.
The marble is controlled via the W,A,S and D keys.
To exit the game press escape.
The controls are also listed listed on the loading screen.
This will be a Marble Race Game developed for the Softwarepraktikum at the RWTH Aachen.
##Building
Currently only tested on Linux. To build execute build.sh. Resulting binary will be in binaries.
You can also use the run.sh script to directly start the binary after building it.
## OS X support
In theory this should also compile on OS X. Since I do not own a Mac it is impossible for me to test this.
If you get it compiling, please get in touch with me afterwards.
##Modding
In theory the game is highly moddable. For modding some knowledge in XML and Lua is required. If you're interested in this, please get in touch with me, so I can explain the workflow to you.

43
Shader/phong.fsh Normal file
View File

@ -0,0 +1,43 @@
#version 150
in vec3 vNormal;
in vec2 vTexCoord;
in vec4 fragPosition;
out vec4 oColor;
uniform sampler2D uTexture;
uniform vec3 ambientColor;
uniform float ambientFactor;
uniform float diffuseFactor;
uniform float specularFactor;
uniform vec3 camera;
uniform float shininess;
uniform int lightCount;
uniform vec3 lightSources[128];
uniform vec3 lightColors[128];
uniform float lightIntensities[128];
void main()
{
vec3 ambientColor = ambientFactor * ambientColor;
vec3 diffuseColor = vec3(0.0, 0.0, 0.0);
vec3 specularColor = vec3(0.0, 0.0, 0.0);
for(int i = 0; i<lightCount; i++) {
float distance = distance(lightSources[i], vec3(fragPosition));
// only take lights into account with meaningful contribution
if (distance > 0.001f) {
vec3 lightVector = normalize(lightSources[i]-vec3(fragPosition));
float intensity = (lightIntensities[i])/(distance);
diffuseColor += dot(normalize(vNormal), lightVector)
*diffuseFactor*intensity*lightColors[i];
vec3 cameraVector = normalize(camera - vec3(fragPosition));
specularColor += clamp(pow((dot((cameraVector+lightVector),normalize(vNormal))/(length(cameraVector+lightVector)*length(normalize(vNormal)))),shininess), 0.0, 1.0)
*specularFactor*intensity*lightColors[i];
}
}
vec3 finalColor = specularColor + diffuseColor + ambientColor;
vec3 texture = texture(uTexture, vTexCoord).rgb;
oColor = vec4(finalColor*texture, 1.0 );
}

21
Shader/phong.vsh Normal file
View File

@ -0,0 +1,21 @@
#version 150
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
in vec3 aNormal;
in vec3 aPosition;
in vec2 aTexCoord;
out vec3 vNormal;
out vec2 vTexCoord;
out vec4 fragPosition;
void main()
{
fragPosition = modelMatrix * vec4(aPosition, 1.0);
vNormal = inverse(transpose(mat3(modelMatrix))) * aNormal;
vTexCoord = aTexCoord;
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(aPosition, 1.0);
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -5,52 +5,19 @@ then
rm -rf build
rm -rf binaries
rm -rf extern/bullet/build
cd extern/lua; make clean; cd ../..
exit
fi
cmake="cmake"
if [[ $1 == "windows" ]]
then
cmake="cmake -DCMAKE_SYSTEM_NAME='Windows' -DCMAKE_FIND_ROOT_PATH='/usr/bin:/usr/x86_64-w64-mingw32' -DCMAKE_CXX_COMPILER='x86_64-w64-mingw32-g++' -DCMAKE_C_COMPILER='x86_64-w64-mingw32-gcc'"
fi
buildType=$2
if [[ $2 == "" ]]
then
buildType="Debug"
fi
currentDir=$(pwd)
threads=$(($(nproc)+1))
#building lua
cd extern/lua/
if [[ $1 == "windows" ]]
then
make CC=x86_64-w64-mingw32-gcc mingw
else
make linux
fi
cd $currentDir
#building bullet
cd extern/bullet/
mkdir -p build
cd build
if hash ninja 2>/dev/null
then
$cmake -DBUILD_DEMOS=0 -DBUILD_EXTRAS=0 -DCMAKE_BUILD_TYPE=$buildType -DBUILD_SHARED_LIBS=0 -GNinja ..
ninja
else
$cmake -DBUILD_DEMOS=0 -DBUILD_EXTRAS=0 -DCMAKE_BUILD_TYPE=$buildType -DBUILD_SHARED_LIBS=0 ..
make -j$threads
fi
cmake ..
make -j$threads
cd $currentDir
@ -58,11 +25,5 @@ cd $currentDir
mkdir -p build
cd build
if hash ninja 2>/dev/null
then
$cmake -DGLFW_BUILD_EXAMPLES=0 -DGLFW_BUILD_TESTS=0 -DCMAKE_BUILD_TYPE=$buildType -DBUILD_SHARED_LIBS=0 -GNinja ..
ninja
else
$cmake -DGLFW_BUILD_EXAMPLES=0 -DGLFW_BUILD_TESTS=0 -DCMAKE_BUILD_TYPE=$buildType -DBUILD_SHARED_LIBS=0 ..
make -j$threads
fi
cmake ..
make -j$threads

44
camera.cc Normal file
View File

@ -0,0 +1,44 @@
#include "camera.hh"
Camera::Camera(glm::vec2 rotation, float distance) {
this->rotation = rotation;
this->distance = distance;
}
Camera::Camera() {
rotation = glm::vec2(0.0f, 0.0f);
distance = 1.0f;
}
Camera::~Camera() {
}
float Camera::getDistance() {
return distance;
}
void Camera::setDistance(float distance) {
this->distance = distance;
}
glm::vec2 Camera::getRotation() {
return rotation;
}
void Camera::setRotation(glm::vec2 rotation) {
this->rotation = rotation;
}
void Camera::updateRotation(glm::vec2 rotation) {
if((this->rotation.x + rotation.x) >= 1.57f) {
this->rotation.x = 1.57;
this->rotation.y += rotation.y;
}
else if ((this->rotation.x + rotation.x) <= -1.57f) {
this->rotation.x = -1.57f;
this->rotation.y += rotation.y;
}
else {
this-> rotation += rotation;
}
}

View File

@ -10,25 +10,12 @@ class Camera {
~Camera();
float getDistance();
void setDistance(float distance);
void updateDistance(float distance); //adds to current distance
glm::vec2 getRotation();
void setRotation(glm::vec2 rotation);
void updateRotation(glm::vec2 rotation); //adds to current rotation
glm::vec3 getVector();
void setPosition(glm::vec3 pos);
glm::vec3 getPosition();
void setDirection(glm::vec3 dir);
glm::vec3 getDirection();
bool getIsPhysicsCamera();
void setIsPhysicsCamera(bool val);
private:
void updatePosition();
float distance;
glm::vec2 rotation;
glm::vec3 vector;
glm::vec3 position;
glm::vec3 direction;
bool usePhysicsCamera;
};
#endif

View File

@ -1,32 +0,0 @@
general:
branches:
only:
- master
machine:
services:
- docker
dependencies:
override:
# Set up dropbox_uploader
- curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
- chmod +x dropbox_uploader.sh
- echo $db_uploader > ~/.dropbox_uploader
database:
override:
test:
override:
- docker run -v ~/Saxum:/saxum/saxum -w=/saxum/saxum -u=$(id -u) faerbit/saxum ./package.sh linux
- docker run -v ~/Saxum:/saxum/saxum -w=/saxum/saxum -u=$(id -u) faerbit/saxum ./package.sh windows
- if [ -f Saxum_Windows.zip ]; then cp Saxum_Windows.zip $CIRCLE_ARTIFACTS; fi
- if [ -f Saxum_Linux.zip ]; then cp Saxum_Linux.zip $CIRCLE_ARTIFACTS; fi
deployment:
master:
branch: master
commands:
- if [ -f Saxum_Windows.zip ]; then ./dropbox_uploader.sh -p upload Saxum_Windows.zip /; fi
- if [ -f Saxum_Linux.zip ]; then ./dropbox_uploader.sh -p upload Saxum_Linux.zip /; fi

View File

@ -1,59 +0,0 @@
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
PROJECT(Converter)
###############################################################################
#
# Compiler settings, can be simpler if only one compiler should be used.
#
#Enable c++11
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
#on clang we need to find out the version to set stdlib if needed
# if clang version is less than 3.3 ( XCode 5.0) you need to set the stdlib
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
MESSAGE("Clangversion ${CLANG_VERSION_STRING}")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# using Visual Studio C++
endif()
# enable warnings
IF(MSVC)
# for msvc also set multiple processors
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /W3")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP /W3")
ELSE(MSVC)
ADD_DEFINITIONS(-Wall)
ENDIF(MSVC)
ADD_DEFINITIONS(-DNO_SPACE_NAVIGATOR_SUPPORT)
# for lodepng
SET(ACGL_BASE_DIR "${CMAKE_SOURCE_DIR}/extern/acgl")
FILE(GLOB_RECURSE HEADER_FILES_LODEPNG "${ACGL_BASE_DIR}/include/lodepng/*.h")
FILE(GLOB_RECURSE SOURCE_FILES_LODEPNG "${ACGL_BASE_DIR}/src/lodepng/*.cpp")
# for tinyxml
FILE(GLOB_RECURSE HEADER_FILES_TINYXML "${CMAKE_SOURCE_DIR}/extern/tinyxml/*.hh")
FILE(GLOB_RECURSE SOURCE_FILES_TINYXML "${CMAKE_SOURCE_DIR}/extern/tinyxml/*.cc")
SET(HEADER_FILES_EXTERN ${HEADER_FILES_LODEPNG} ${HEADER_FILES_TINYXML})
SET(SOURCE_FILES_EXTERN ${SOURCE_FILES_LODEPNG} ${SOURCE_FILES_TINYXML})
INCLUDE_DIRECTORIES("${ACGL_BASE_DIR}/include")
INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/extern/tinyxml")
#
#
###############################################################################
FILE(GLOB_RECURSE SOURCE_FILES_CONV "${CMAKE_SOURCE_DIR}/converter/*.cc")
SET(SOURCE_FILES_CONV ${SOURCE_FILES_CONV} ${SOURCE_FILES_EXTERN})
FILE(GLOB_RECURSE HEADER_FILES_CONV "${CMAKE_SOURCE_DIR}/converter/*.hh")
SET(HEADER_FILES_CONV ${HEADER_FILES_CONV} ${HEADER_FILES_EXTERN})
ADD_EXECUTABLE(converter ${SOURCE_FILES_CONV} ${HEADER_FILES_CONV})

View File

@ -1,481 +0,0 @@
#include "converter.hh"
#include <fstream>
#include <sys/stat.h>
#include <iostream>
using namespace tinyxml2;
Converter::Converter(std::string levelPath, std::string levelName, std::string compositionsPath){
xmlFile = levelPath + levelName + ".xml";
//Load Compositions
std::string stringCompositions = compositionsPath;
const char* charCompositions = stringCompositions.c_str();
compositions->LoadFile(charCompositions);
if (compositions->ErrorID()!=0){
printf("Could not open Compositions!\n");
exit(-1);
}
//Create a backup of the current Level png file, if no backup exists
std::string pngFile = levelPath + levelName + ".png";
std::string backupPNG = levelPath + levelName + "Backup.png";
struct stat buf;
if(stat(backupPNG.c_str(), &buf) != 0){
std::ifstream src(pngFile, std::ios::binary);
std::ofstream dst(backupPNG, std::ios::binary);
dst << src.rdbuf();
}
//Load the Level xml file
nextID.push_back(0);
nextID.push_back(1);
for (int i=0; i<256; i++){
for (int j=0; j<256; j++){
idUsed[i][j] = false;
}
}
idUsed[0][0] = true;
const char* charXmlFile = xmlFile.c_str();
doc->LoadFile(charXmlFile);
//check if the xml file did not already exist
if (doc->ErrorID()!=0){
std::string answer;
printf("Could not open xml, do you want to create a new xml? (y/n)\n");
std::cin >> answer;
while(answer.compare("y") != 0 && answer.compare("n") != 0){
printf("Answer with y or n\n");
std::cin >> answer;
}
if(answer.compare("n") == 0){
exit(-1);
}
printf("Creating new xml.\n");
//Create all global Lightingparameters with Dummy-Values
std::vector<XMLElement*> lightAttributes;
lightAttributes.push_back(doc->NewElement("xOffset"));
lightAttributes.push_back(doc->NewElement("yOffset"));
lightAttributes.push_back(doc->NewElement("zOffset"));
lightAttributes.push_back(doc->NewElement("rColour"));
lightAttributes.push_back(doc->NewElement("gColour"));
lightAttributes.push_back(doc->NewElement("bColour"));
lightAttributes.push_back(doc->NewElement("intensity"));
XMLElement* rColourAmbient = doc->NewElement("rColour");
XMLElement* gColourAmbient = doc->NewElement("gColour");
XMLElement* bColourAmbient = doc->NewElement("bColour");
XMLElement* rColourFogDay = doc->NewElement("rColour");
XMLElement* gColourFogDay = doc->NewElement("gColour");
XMLElement* bColourFogDay = doc->NewElement("bColour");
XMLElement* alphaFogDay = doc->NewElement("alpha");
XMLElement* rColourFogRise = doc->NewElement("rColour");
XMLElement* gColourFogRise = doc->NewElement("gColour");
XMLElement* bColourFogRise = doc->NewElement("bColour");
XMLElement* alphaFogRise = doc->NewElement("alpha");
XMLElement* rColourFogNight = doc->NewElement("rColour");
XMLElement* gColourFogNight = doc->NewElement("gColour");
XMLElement* bColourFogNight = doc->NewElement("bColour");
XMLElement* alphaFogNight = doc->NewElement("alpha");
lightAttributes[0]->SetText("-1.0");
lightAttributes[1]->SetText("1.5");
lightAttributes[2]->SetText("1.0");
lightAttributes[3]->SetText("1.0");
lightAttributes[4]->SetText("1.0");
lightAttributes[5]->SetText("0.9");
lightAttributes[6]->SetText("0.2");
rColourAmbient->SetText("1.0");
gColourAmbient->SetText("1.0");
bColourAmbient->SetText("1.0");
rColourFogDay->SetText("0.57");
gColourFogDay->SetText("0.80");
bColourFogDay->SetText("0.98");
alphaFogDay->SetText("1.0");
rColourFogRise->SetText("0.88");
gColourFogRise->SetText("0.38");
bColourFogRise->SetText("0.38");
alphaFogRise->SetText("1.0");
rColourFogNight->SetText("0.09");
gColourFogNight->SetText("0.1");
bColourFogNight->SetText("0.24");
alphaFogNight->SetText("1.0");
XMLElement* ambientLight = doc->NewElement("ambientLight");
XMLElement* fogColourDay = doc->NewElement("fogColourDay");
XMLElement* fogColourRise = doc->NewElement("fogColourRise");
XMLElement* fogColourNight = doc->NewElement("fogColourNight");
XMLElement* directionalLight = doc->NewElement("directionalLight");
ambientLight->InsertEndChild(rColourAmbient);
ambientLight->InsertEndChild(gColourAmbient);
ambientLight->InsertEndChild(bColourAmbient);
fogColourDay->InsertEndChild(rColourFogDay);
fogColourDay->InsertEndChild(gColourFogDay);
fogColourDay->InsertEndChild(bColourFogDay);
fogColourDay->InsertEndChild(alphaFogDay);
fogColourRise->InsertEndChild(rColourFogRise);
fogColourRise->InsertEndChild(gColourFogRise);
fogColourRise->InsertEndChild(bColourFogRise);
fogColourRise->InsertEndChild(alphaFogRise);
fogColourNight->InsertEndChild(rColourFogNight);
fogColourNight->InsertEndChild(gColourFogNight);
fogColourNight->InsertEndChild(bColourFogNight);
fogColourNight->InsertEndChild(alphaFogNight);
for(int i=0;i<7;i++){
directionalLight->InsertEndChild(lightAttributes[i]);
}
doc->InsertEndChild(ambientLight);
doc->InsertEndChild(fogColourDay);
doc->InsertEndChild(fogColourRise);
doc->InsertEndChild(fogColourNight);
doc->InsertEndChild(directionalLight);
//Create global terrain Element
XMLElement* terrain = doc->NewElement("terrain");
XMLElement* terrainHeightmap = doc->NewElement("heightmap");
XMLElement* terrainTexture = doc->NewElement("texture");
XMLElement* terrainAmbientFactor = doc->NewElement("ambientFactor");
XMLElement* terrainDiffuseFactor = doc->NewElement("diffuseFactor");
XMLElement* terrainSpecularFactor = doc->NewElement("specularFactor");
XMLElement* terrainShininess = doc->NewElement("shininess");
std::string heightmapPath = "heightmap" + levelName + ".png";
terrainHeightmap->SetText(heightmapPath.c_str());
terrainTexture->SetText("terrainTexture.png");
terrainAmbientFactor->SetText("0.1");
terrainDiffuseFactor->SetText("0.8");
terrainSpecularFactor->SetText("0.2");
terrainShininess->SetText("1.0");
terrain->InsertEndChild(terrainHeightmap);
terrain->InsertEndChild(terrainTexture);
terrain->InsertEndChild(terrainAmbientFactor);
terrain->InsertEndChild(terrainDiffuseFactor);
terrain->InsertEndChild(terrainSpecularFactor);
terrain->InsertEndChild(terrainShininess);
doc->InsertEndChild(terrain);
//Create global skydome Element
XMLElement* skydome = doc->NewElement("skydome");
XMLElement* skydomeModel = doc->NewElement("model");
XMLElement* skydomeTexture = doc->NewElement("texture");
XMLElement* skydomeTextureNight = doc->NewElement("nightTexture");
skydomeModel->SetText("skydome.obj");
skydomeTexture->SetText("skydome.png");
skydomeTextureNight->SetText("skydomeNight.png");
skydome->InsertEndChild(skydomeModel);
skydome->InsertEndChild(skydomeTexture);
skydome->InsertEndChild(skydomeTextureNight);
doc->InsertEndChild(skydome);
//Create global physics parameters
XMLElement* physics = doc->NewElement("physics");
XMLElement* playerFriction = doc->NewElement("friction");
XMLElement* playerStrength = doc->NewElement("strength");
playerFriction->SetText("0.9");
playerStrength->SetText("300.0");
physics->InsertEndChild(playerFriction);
physics->InsertEndChild(playerStrength);
doc->InsertEndChild(physics);
//Create positionConstraint Dummy
XMLElement* positionConstraint = doc->NewElement("positionConstraint");
XMLElement* positionConstraintObjectNum = doc->NewElement("objectNum");
XMLElement* positionConstraintXPos = doc->NewElement("xPosition");
XMLElement* positionConstraintYPos = doc->NewElement("yPosition");
XMLElement* positionConstraintZPos = doc->NewElement("zPosition");
XMLElement* positionConstraintStrength = doc->NewElement("strength");
positionConstraintObjectNum->SetText("0");
positionConstraintXPos->SetText("0.0");
positionConstraintYPos->SetText("0.0");
positionConstraintZPos->SetText("0.0");
positionConstraintStrength->SetText("100.0");
positionConstraint->InsertEndChild(positionConstraintObjectNum);
positionConstraint->InsertEndChild(positionConstraintXPos);
positionConstraint->InsertEndChild(positionConstraintYPos);
positionConstraint->InsertEndChild(positionConstraintZPos);
positionConstraint->InsertEndChild(positionConstraintStrength);
doc->InsertEndChild(positionConstraint);
}else{
//Create a backup of the current Level xml file
std::string backupXML = levelPath + levelName + "Backup.xml";
std::ifstream src(xmlFile, std::ios::binary);
std::ofstream dst(backupXML, std::ios::binary);
dst << src.rdbuf();
//Check what IDs are already in use
XMLElement* thisComposition = doc->FirstChildElement("composition");
for(; thisComposition; thisComposition=thisComposition->NextSiblingElement("composition")){
int idGreen = queryInt(thisComposition, "idGreen");
int idBlue = queryInt(thisComposition, "idBlue");
idUsed[idGreen][idBlue] = true;
}
}
}
Converter::Converter(){
}
Converter::~Converter(){
}
std::vector<int> Converter::newComposition(int type, float posX, float posZ){
int oldIDGreen, oldIDBlue;
bool alreadyExists = false;
XMLElement* thisComposition = doc->FirstChildElement("composition");
for(; thisComposition; thisComposition=thisComposition->NextSiblingElement("composition")){
float xPos = queryFloat(thisComposition, "xPos");
float zPos = queryFloat(thisComposition, "zPos");
int typeID = queryInt(thisComposition, "typeID");
if(xPos == posX && zPos == posZ && typeID == type){
if(alreadyExists){
std::cout << "At the position " << xPos << "," << zPos << " multiple compositions with the ID " << typeID << " exist in the xml." << std::endl;
exit(-1);
}
oldIDGreen = queryInt(thisComposition, "idGreen");
oldIDBlue = queryInt(thisComposition, "idBlue");
alreadyExists = true;
}
}
if (alreadyExists){
if (! idUsed[oldIDGreen][oldIDBlue]){
std::cout << "The composition with ID " << oldIDGreen << "," << oldIDBlue << " exists in the xml but the converter thinks it does not." << std::endl;
exit(-1);
}
std::vector<int> oldID;
oldID.push_back(oldIDGreen);
oldID.push_back(oldIDBlue);
return oldID;
}
bool full = false;
while(idUsed[nextID[0]][nextID[1]]){
nextID[1] += 1;
if (nextID[1] == 256){
nextID[1] = 0;
nextID[0] +=1;
if (nextID[0] == 256){
if(full){
printf("Can not have more than 65535 compositions.\n");
exit(-1);
}
nextID[0] = 0;
full = true;
}
}
}
XMLElement* newComposition = doc->NewElement("composition");
XMLElement* typeID = doc->NewElement("typeID");
XMLElement* idBlue = doc->NewElement("idBlue");
XMLElement* idGreen = doc->NewElement("idGreen");
XMLElement* zPos = doc->NewElement("zPos");
XMLElement* yOffset = doc->NewElement("yOffset");
XMLElement* xPos = doc->NewElement("xPos");
XMLElement* manualPos = doc->NewElement("manualPos");
XMLElement* zRot = doc->NewElement("zRot");
XMLElement* yRot = doc->NewElement("yRot");
XMLElement* xRot = doc->NewElement("xRot");
XMLElement* scale = doc->NewElement("scale");
typeID->SetText(std::to_string(type).c_str());
idBlue->SetText(std::to_string(nextID[1]).c_str());
idGreen->SetText(std::to_string(nextID[0]).c_str());
zPos->SetText(std::to_string(posZ).c_str());
yOffset->SetText("0.0");
xPos->SetText(std::to_string(posX).c_str());
manualPos->SetText("false");
zRot->SetText("0.0");
yRot->SetText("0.0");
xRot->SetText("0.0");
scale->SetText("1.0");
newComposition->InsertFirstChild(typeID);
newComposition->InsertFirstChild(idBlue);
newComposition->InsertFirstChild(idGreen);
newComposition->InsertFirstChild(zPos);
newComposition->InsertFirstChild(yOffset);
newComposition->InsertFirstChild(xPos);
newComposition->InsertFirstChild(manualPos);
newComposition->InsertFirstChild(zRot);
newComposition->InsertFirstChild(yRot);
newComposition->InsertFirstChild(xRot);
newComposition->InsertFirstChild(scale);
//Create a Dummy-trigger
XMLElement* trigger = doc->NewElement("trigger");
newComposition->InsertEndChild(trigger);
XMLElement* name = doc->NewElement("name");
XMLElement* undo = doc->NewElement("undo");
XMLElement* xPosition = doc->NewElement("xPosition");
XMLElement* yPosition = doc->NewElement("yPosition");
XMLElement* zPosition = doc->NewElement("zPosition");
XMLElement* targetIdGreen = doc->NewElement("targetIdGreen");
XMLElement* targetIdBlue = doc->NewElement("targetIdBlue");
XMLElement* distance = doc->NewElement("distance");
XMLElement* isBiggerThan = doc->NewElement("isBiggerThan");
XMLElement* objectNum = doc->NewElement("objectNum");
XMLElement* luaScript = doc->NewElement("luaScript");
XMLElement* toChangeIdGreen = doc->NewElement("toChangeIdGreen");
XMLElement* toChangeIdBlue = doc->NewElement("toChangeIdBlue");
XMLElement* toChangeObjNum = doc->NewElement("toChangeObjNum");
name->SetText("-");
undo->SetText("false");
xPosition->SetText("0");
yPosition->SetText("0");
zPosition->SetText("0");
targetIdGreen->SetText("-");
targetIdBlue->SetText("-");
distance->SetText("1.0");
isBiggerThan->SetText("false");
objectNum->SetText("0");
luaScript->SetText("-");
toChangeIdGreen->SetText("0");
toChangeIdBlue->SetText("0");
toChangeObjNum->SetText("0");
trigger->InsertEndChild(name);
trigger->InsertEndChild(undo);
trigger->InsertEndChild(xPosition);
trigger->InsertEndChild(yPosition);
trigger->InsertEndChild(zPosition);
trigger->InsertEndChild(targetIdGreen);
trigger->InsertEndChild(targetIdBlue);
trigger->InsertEndChild(distance);
trigger->InsertEndChild(isBiggerThan);
trigger->InsertEndChild(objectNum);
trigger->InsertEndChild(luaScript);
trigger->InsertEndChild(toChangeIdGreen);
trigger->InsertEndChild(toChangeIdBlue);
trigger->InsertEndChild(toChangeObjNum);
idUsed[nextID[0]][nextID[1]] = true;
doc->InsertFirstChild(newComposition);
return nextID;
}
void Converter::updateComposition(int idG, int idB, float posX, float posZ){
XMLElement* thisComposition = doc->FirstChildElement("composition");
bool compositionExists = false;
for(; thisComposition; thisComposition=thisComposition->NextSiblingElement("composition")){
int idGreen = queryInt(thisComposition, "idGreen");
int idBlue = queryInt(thisComposition, "idBlue");
if(idGreen == idG && idBlue == idB){
if (compositionExists){
std::cout << "The ID " << idGreen << "," << idBlue << " is used for multiple compositions in the xml." << std::endl;
exit(-1);
}
bool manualPos = queryBool(thisComposition, "manualPos");
if(!manualPos){
thisComposition->FirstChildElement("xPos")->SetText(std::to_string(posX).c_str());
thisComposition->FirstChildElement("zPos")->SetText(std::to_string(posZ).c_str());
}
compositionExists = true;
}
}
if(!compositionExists){
std::cout << "A composition has the ID " << idG << "," << idB << " and the position " << posX << "," << posZ << " in the png, but does not exist in the xml." << std::endl;
exit(-1);
}
}
void Converter::deleteComposition(int idG, int idB){
XMLElement* thisComposition = doc->FirstChildElement("composition");
for(; thisComposition; thisComposition=thisComposition->NextSiblingElement("composition")){
int idGreen = queryInt(thisComposition, "idGreen");
int idBlue = queryInt(thisComposition, "idBlue");
if(idGreen == idG && idBlue == idB){
doc->DeleteChild(thisComposition);
}
}
}
void Converter::save(){
const char* charXmlFile = xmlFile.c_str();
doc->SaveFile(charXmlFile);
}
float Converter::queryFloat(XMLElement* element, const char* attribute){
XMLElement* attributeElement = element->FirstChildElement(attribute);
if (attributeElement == NULL){
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
exit(-1);
}
float ret;
errorCheck(attributeElement->QueryFloatText(&ret));
return ret;
}
float Converter::queryFloat(XMLDocument*& element, const char* attribute){
XMLElement* attributeElement = element->FirstChildElement(attribute);
if (attributeElement == NULL){
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
exit(-1);
}
float ret;
errorCheck(attributeElement->QueryFloatText(&ret));
return ret;
}
int Converter::queryInt(XMLElement* element, const char* attribute){
XMLElement* attributeElement = element->FirstChildElement(attribute);
if (attributeElement == NULL){
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
exit(-1);
}
int ret;
errorCheck(attributeElement->QueryIntText(&ret));
return ret;
}
int Converter::queryInt(XMLDocument*& element, const char* attribute){
XMLElement* attributeElement = element->FirstChildElement(attribute);
if (attributeElement == NULL){
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
exit(-1);
}
int ret;
errorCheck(attributeElement->QueryIntText(&ret));
return ret;
}
bool Converter::queryBool(XMLElement* element, const char* attribute){
XMLElement* attributeElement = element->FirstChildElement(attribute);
if (attributeElement == NULL){
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
exit(-1);
}
bool ret;
errorCheck(attributeElement->QueryBoolText(&ret));
return ret;
}
bool Converter::queryBool(XMLDocument*& element, const char* attribute){
XMLElement* attributeElement = element->FirstChildElement(attribute);
if (attributeElement == NULL){
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
exit(-1);
}
bool ret;
errorCheck(attributeElement->QueryBoolText(&ret));
return ret;
}
void Converter::errorCheck(XMLError error){
if (error) {
printf("XMLError: ");
if (error == XML_WRONG_ATTRIBUTE_TYPE) {
printf("Wrong attribute type.\n");
}
else if (error == XML_NO_ATTRIBUTE) {
printf("No attribute.\n");
}
else if (error == XML_CAN_NOT_CONVERT_TEXT) {
printf("Can not convert text.\n");
}
else if (error == XML_NO_TEXT_NODE) {
printf("No text.\n");
}
else {
printf("Unknown error.\n");
}
exit(-1);
}
}

View File

@ -1,33 +0,0 @@
#ifndef CONVERTER_INCLUDED
#define CONVERTER_INCLUDED
#include <vector>
#include <string>
#include "tinyxml2.hh"
using namespace tinyxml2;
class Converter {
public:
Converter(std::string levelPath, std::string levelName, std::string compositionsPath);
Converter();
~Converter();
void updateComposition(int idG, int idB, float posX, float posZ); //updates the position of a composition
std::vector<int> newComposition(int type, float posX, float posZ); //creates a new composition and returns its ID
void deleteComposition(int idG, int idB);
void save(); //writes the xml to file
private:
std::vector<int> nextID;
bool idUsed[256][256];
std::string xmlFile;
XMLDocument* doc = new XMLDocument();
XMLDocument* compositions = new XMLDocument();
float queryFloat(XMLElement* element, const char* attribute);
float queryFloat(XMLDocument*& element, const char* attribute);
int queryInt(XMLElement* element, const char* attribute);
int queryInt(XMLDocument*& element, const char* attribute);
bool queryBool(XMLElement* element, const char* attribute);
bool queryBool(XMLDocument*& element, const char* attribute);
void errorCheck(XMLError error);
};
#endif

View File

@ -1,109 +0,0 @@
#include <lodepng/lodepng.h>
#include <string>
#include "converter.hh"
#include <vector>
#include <iostream>
#include "tinyxml2.hh"
using namespace tinyxml2;
int main( int argc, char *argv[] ){
if (argc <= 1){
std::cout << "Converter needs the levels name (Level1) as input." << std::endl;
exit(-1);
}
printf("Initializing.\n");
std::string levelString = argv[1];
bool idFound[256][256];
for (int i=0; i<256; i++){
for (int j=0; j<256; j++){
idFound[i][j] = false;
}
}
XMLDocument* config = new XMLDocument();
const char* xmlFile = "../data/config.xml";
config->LoadFile(xmlFile);
if (config->ErrorID()!=0){
printf("Could not open config.xml!\n");
exit(-1);
}
XMLElement* xmlLevelPath = config->FirstChildElement("levelXmlPath");
if (xmlLevelPath == NULL){
std::cout << "XMLError: Attribute levelXmlPath does not exist." << std::endl;
exit(-1);
}
const char* charLevelPath = xmlLevelPath->GetText();
if(charLevelPath == NULL){
std::cout << "XMLError: Attribute levelXmlPath could not be loaded." << std::endl;
exit(-1);
}
std::string levelPath = charLevelPath;
XMLElement* xmlCompositionsPath = config->FirstChildElement("compositionsPath");
if (xmlCompositionsPath == NULL){
std::cout << "XMLError: Attribute compositionsPath does not exist." << std::endl;
exit(-1);
}
const char* charCompositionsPath = xmlCompositionsPath->GetText();
if(charCompositionsPath == NULL){
std::cout << "XMLError: Attribute compositionsPath could not be loaded." << std::endl;
exit(-1);
}
std::string compositionsPath = charCompositionsPath;
Converter conv = Converter("../" + levelPath, levelString, "../" + compositionsPath);
//read the setup png
printf("Loading the png.\n");
std::string filePath = "../" + levelPath + levelString + ".png";
std::vector<unsigned char> image; //the raw pixels
unsigned int width, height;
unsigned error = lodepng::decode(image, width, height, filePath);
if (error) {
std::cout << "decoder error " << error << ": " << lodepng_error_text(error) << std::endl;
std::cout << "Converter needs the levels name (Level1) as input." << std::endl;
exit(-1);
}
printf("Iterating over the png.\n");
//iterate over all pixels of the image
for(unsigned int columnNum = 0; columnNum < width; columnNum++){
for(unsigned int rowNum = 0; rowNum < height; rowNum++){
unsigned int pixel = (rowNum*width+columnNum)*4;
//if there is a composition here, adjust the xml and image
if(image[pixel]!=0 && image[pixel]!=255){
if(image[pixel+1]==0 && image[pixel+2]==0){//composition has no ID
std::vector<int> newID;
newID = conv.newComposition(image[pixel], 0.5+columnNum-0.5*width, 0.5+rowNum-0.5*height);
idFound[newID[0]][newID[1]] = true;
image[pixel+1] = newID[0];
image[pixel+2] = newID[1];
}else{//composition has an ID
conv.updateComposition(image[pixel+1], image[pixel+2], 0.5+columnNum-0.5*width, 0.5+rowNum-0.5*height);
idFound[image[pixel+1]][image[pixel+2]] = true;
}
}
}
}
printf("Writing IDs back to the png.\n");
//write ids back to the setup png
error = lodepng::encode(filePath, image, width, height);
if(error) {
std::cout << "encoder error " << error << ": "<< lodepng_error_text(error) << std::endl;
exit(-1);
}
printf("Deleting obsolete Compositions (Can take a minute).\n");
//delete compositions that were not in the png anymore
for (int i=0; i<256; i++){
for (int j=0; j<256; j++){
if (! idFound[i][j]){
conv.deleteComposition(i,j);
}
}
}
//save the xml
conv.save();
}

View File

@ -1,42 +0,0 @@
<resolution>
<width>1024</width>
<height>786</height>
</resolution>
<!-- The resolution settings get ignored if you choose windowed fullscreen. -->
<windowedFullscreen>true</windowedFullscreen>
<!-- Reduce the following parameters if you game runs too slow.
If you feel your game runs smooth enough you can increase them to
increase the visual quality. -->
<shadowCubeSize>512</shadowCubeSize>
<farPlane>150.0</farPlane>
<maxShadowRenderCount>3</maxShadowRenderCount>
<!-- The following stuff is used to configure the application.
Do not change unless you know what you are doing. -->
<compositionsPath>data/levels/Compositions.xml</compositionsPath>
<shaderPath>data/shader/</shaderPath>
<geometryPath>data/geometry/</geometryPath>
<texturePath>data/textures/</texturePath>
<scriptPath>data/levels/scripts/</scriptPath>
<heightmapPath>data/levels/</heightmapPath>
<levelXmlPath>data/levels/</levelXmlPath>
<levelXML>Level1.xml</levelXML>
<!-- must be located in the textures directory -->
<loadingScreen>
<screenPath>loadingscreen.png</screenPath>
<screenContinuePath>loadingscreenContinue.png</screenContinuePath>
</loadingScreen>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,298 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: 'ruins_column.blend'
# www.blender.org
o Cylinder
v 0.000000 -1.000000 -1.000000
v 0.000000 1.000000 -1.000000
v 0.195090 -1.000000 -0.980785
v 0.195090 1.000000 -0.980785
v 0.382683 -1.000000 -0.923880
v 0.382683 1.000000 -0.923880
v 0.555570 -1.000000 -0.831470
v 0.555570 1.000000 -0.831470
v 0.707107 -1.000000 -0.707107
v 0.707107 1.000000 -0.707107
v 0.831470 -1.000000 -0.555570
v 0.831470 1.000000 -0.555570
v 0.923880 -1.000000 -0.382683
v 0.923880 1.000000 -0.382683
v 0.980785 -1.000000 -0.195090
v 0.980785 1.000000 -0.195090
v 1.000000 -1.000000 -0.000000
v 1.000000 1.000000 -0.000000
v 0.980785 -1.000000 0.195090
v 0.980785 1.000000 0.195090
v 0.923880 -1.000000 0.382683
v 0.923880 1.000000 0.382683
v 0.831470 -1.000000 0.555570
v 0.831470 1.000000 0.555570
v 0.707107 -1.000000 0.707107
v 0.707107 1.000000 0.707107
v 0.555570 -1.000000 0.831470
v 0.555570 1.000000 0.831470
v 0.382683 -1.000000 0.923880
v 0.382683 1.000000 0.923880
v 0.195090 -1.000000 0.980785
v 0.195090 1.000000 0.980785
v -0.000000 -1.000000 1.000000
v -0.000000 1.000000 1.000000
v -0.195091 -1.000000 0.980785
v -0.195091 1.000000 0.980785
v -0.382684 -1.000000 0.923879
v -0.382684 1.000000 0.923879
v -0.555571 -1.000000 0.831469
v -0.555571 1.000000 0.831469
v -0.707107 -1.000000 0.707106
v -0.707107 1.000000 0.707106
v -0.831470 -1.000000 0.555570
v -0.831470 1.000000 0.555570
v -0.923880 -1.000000 0.382683
v -0.923880 1.000000 0.382683
v -0.980785 -1.000000 0.195089
v -0.980785 1.000000 0.195089
v -1.000000 -1.000000 -0.000001
v -1.000000 1.000000 -0.000001
v -0.980785 -1.000000 -0.195091
v -0.980785 1.000000 -0.195091
v -0.923879 -1.000000 -0.382684
v -0.923879 1.000000 -0.382684
v -0.831469 -1.000000 -0.555571
v -0.831469 1.000000 -0.555571
v -0.707106 -1.000000 -0.707108
v -0.707106 1.000000 -0.707108
v -0.555569 -1.000000 -0.831470
v -0.555569 1.000000 -0.831470
v -0.382682 -1.000000 -0.923880
v -0.382682 1.000000 -0.923880
v -0.195089 -1.000000 -0.980786
v -0.195089 1.000000 -0.980786
vt 0.445551 0.665886
vt 0.445551 1.000293
vt 0.404755 1.000293
vt 0.404755 0.665886
vt 0.364742 1.000293
vt 0.364742 0.665886
vt 0.327051 1.000293
vt 0.327051 0.665886
vt 0.293130 1.000293
vt 0.293130 0.665886
vt 0.264283 1.000293
vt 0.264283 0.665886
vt 0.264046 0.665593
vt 0.264046 1.000000
vt 0.230125 1.000000
vt 0.230125 0.665593
vt 0.192434 1.000000
vt 0.192434 0.665593
vt 0.152421 1.000000
vt 0.152421 0.665593
vt 0.111625 1.000000
vt 0.111625 0.665593
vt 0.071612 1.000000
vt 0.071612 0.665593
vt 0.033921 1.000000
vt 0.033921 0.665593
vt 0.000000 1.000000
vt 0.000000 0.665593
vt 1.172897 0.665327
vt 1.173156 0.999734
vt 1.139235 0.999801
vt 1.138976 0.665395
vt 1.101544 0.999877
vt 1.101285 0.665470
vt 1.061532 0.999957
vt 1.061273 0.665550
vt 1.020735 1.000038
vt 1.020476 0.665632
vt 0.980723 1.000118
vt 0.980464 0.665712
vt 0.943032 1.000193
vt 0.942772 0.665787
vt 0.909111 1.000261
vt 0.908852 0.665855
vt 0.880263 1.000319
vt 0.880004 0.665913
vt 0.846342 1.000387
vt 0.846083 0.665980
vt 0.808651 1.000462
vt 0.808392 0.666056
vt 0.768638 1.000542
vt 0.768379 0.666136
vt 0.727842 1.000624
vt 0.727583 0.666217
vt 0.687830 1.000704
vt 0.687570 0.666297
vt 0.650139 1.000779
vt 0.649879 0.666372
vt 0.616217 1.000847
vt 0.615958 0.666440
vt 0.587370 1.000904
vt 0.587111 0.666498
vt 0.586023 0.665886
vt 0.586023 1.000293
vt 0.557176 1.000293
vt 0.557176 0.665886
vt 0.523255 1.000293
vt 0.523255 0.665886
vt 0.186708 0.665593
vt 0.146696 0.659199
vt 0.109005 0.646655
vt 0.075084 0.628445
vt 0.046237 0.605268
vt 0.023571 0.578014
vt 0.007959 0.547732
vt 0.000000 0.515584
vt 0.000000 0.482806
vt 0.007959 0.450658
vt 0.023571 0.420376
vt 0.046236 0.393122
vt 0.075084 0.369945
vt 0.109005 0.351735
vt 0.146696 0.339191
vt 0.186708 0.332797
vt 0.227505 0.332797
vt 0.267517 0.339191
vt 0.305209 0.351735
vt 0.339130 0.369945
vt 0.367977 0.393122
vt 0.390642 0.420376
vt 0.406254 0.450658
vt 0.414213 0.482806
vt 0.414213 0.515584
vt 0.406254 0.547731
vt 0.390642 0.578014
vt 0.367977 0.605268
vt 0.339130 0.628445
vt 0.305209 0.646655
vt 0.267518 0.659199
vt 0.227505 0.665593
vt 0.485564 0.665886
vt 0.485564 1.000293
vt 0.000000 0.182787
vt 0.000000 0.150010
vt 0.007959 0.117862
vt 0.023571 0.087579
vt 0.046236 0.060326
vt 0.075084 0.037148
vt 0.109005 0.018938
vt 0.146696 0.006395
vt 0.186708 0.000000
vt 0.227505 0.000000
vt 0.267517 0.006395
vt 0.305208 0.018938
vt 0.339129 0.037148
vt 0.367977 0.060326
vt 0.390642 0.087579
vt 0.406254 0.117862
vt 0.414213 0.150009
vt 0.414213 0.182787
vt 0.406254 0.214935
vt 0.390642 0.245217
vt 0.367977 0.272471
vt 0.339129 0.295648
vt 0.305208 0.313859
vt 0.267517 0.326402
vt 0.146696 0.326402
vt 0.109005 0.313858
vt 0.075084 0.295648
vt 0.046236 0.272471
vt 0.023571 0.245217
vt 0.007959 0.214935
vn 0.000000 -0.685700 -0.727900
vn 0.000000 0.685700 -0.727900
vn 0.142000 0.685700 -0.713900
vn 0.142000 -0.685700 -0.713900
vn 0.278500 0.685700 -0.672500
vn 0.278500 -0.685700 -0.672500
vn 0.404400 0.685700 -0.605200
vn 0.404400 -0.685700 -0.605200
vn 0.514700 0.685700 -0.514700
vn 0.514700 -0.685700 -0.514700
vn 0.605200 0.685700 -0.404400
vn 0.605200 -0.685700 -0.404400
vn 0.672500 0.685700 -0.278500
vn 0.672500 -0.685700 -0.278500
vn 0.713900 0.685700 -0.142000
vn 0.713900 -0.685700 -0.142000
vn 0.727900 0.685700 0.000000
vn 0.727900 -0.685700 0.000000
vn 0.713900 0.685700 0.142000
vn 0.713900 -0.685700 0.142000
vn 0.672500 0.685700 0.278500
vn 0.672500 -0.685700 0.278500
vn 0.605200 0.685700 0.404400
vn 0.605200 -0.685700 0.404400
vn 0.514700 0.685700 0.514700
vn 0.514700 -0.685700 0.514700
vn 0.404400 0.685700 0.605200
vn 0.404400 -0.685700 0.605200
vn 0.278500 0.685700 0.672500
vn 0.278500 -0.685700 0.672500
vn 0.142000 0.685700 0.713900
vn 0.142000 -0.685700 0.713900
vn 0.000000 0.685700 0.727900
vn 0.000000 -0.685700 0.727900
vn -0.142000 0.685700 0.713900
vn -0.142000 -0.685700 0.713900
vn -0.278500 0.685700 0.672500
vn -0.278500 -0.685700 0.672500
vn -0.404400 0.685700 0.605200
vn -0.404400 -0.685700 0.605200
vn -0.514700 0.685700 0.514700
vn -0.514700 -0.685700 0.514700
vn -0.605200 0.685700 0.404400
vn -0.605200 -0.685700 0.404400
vn -0.672500 0.685700 0.278500
vn -0.672500 -0.685700 0.278500
vn -0.713900 0.685700 0.142000
vn -0.713900 -0.685700 0.142000
vn -0.727900 0.685700 0.000000
vn -0.727900 -0.685700 0.000000
vn -0.713900 0.685700 -0.142000
vn -0.713900 -0.685700 -0.142000
vn -0.672500 0.685700 -0.278500
vn -0.672500 -0.685700 -0.278500
vn -0.605200 0.685700 -0.404400
vn -0.605200 -0.685700 -0.404400
vn -0.514700 0.685700 -0.514700
vn -0.514700 -0.685700 -0.514700
vn -0.404400 0.685700 -0.605200
vn -0.404400 -0.685700 -0.605200
vn -0.278500 0.685700 -0.672500
vn -0.278500 -0.685700 -0.672500
vn -0.142000 0.685700 -0.713900
vn -0.142000 -0.685700 -0.713900
s 1
f 1/1/1 2/2/2 4/3/3 3/4/4
f 3/4/4 4/3/3 6/5/5 5/6/6
f 5/6/6 6/5/5 8/7/7 7/8/8
f 7/8/8 8/7/7 10/9/9 9/10/10
f 9/10/10 10/9/9 12/11/11 11/12/12
f 11/13/12 12/14/11 14/15/13 13/16/14
f 13/16/14 14/15/13 16/17/15 15/18/16
f 15/18/16 16/17/15 18/19/17 17/20/18
f 17/20/18 18/19/17 20/21/19 19/22/20
f 19/22/20 20/21/19 22/23/21 21/24/22
f 21/24/22 22/23/21 24/25/23 23/26/24
f 23/26/24 24/25/23 26/27/25 25/28/26
f 25/29/26 26/30/25 28/31/27 27/32/28
f 27/32/28 28/31/27 30/33/29 29/34/30
f 29/34/30 30/33/29 32/35/31 31/36/32
f 31/36/32 32/35/31 34/37/33 33/38/34
f 33/38/34 34/37/33 36/39/35 35/40/36
f 35/40/36 36/39/35 38/41/37 37/42/38
f 37/42/38 38/41/37 40/43/39 39/44/40
f 39/44/40 40/43/39 42/45/41 41/46/42
f 41/46/42 42/45/41 44/47/43 43/48/44
f 43/48/44 44/47/43 46/49/45 45/50/46
f 45/50/46 46/49/45 48/51/47 47/52/48
f 47/52/48 48/51/47 50/53/49 49/54/50
f 49/54/50 50/53/49 52/55/51 51/56/52
f 51/56/52 52/55/51 54/57/53 53/58/54
f 53/58/54 54/57/53 56/59/55 55/60/56
f 55/60/56 56/59/55 58/61/57 57/62/58
f 57/63/58 58/64/57 60/65/59 59/66/60
f 59/66/60 60/65/59 62/67/61 61/68/62
f 4/69/3 2/70/2 64/71/63 62/72/61 60/73/59 58/74/57 56/75/55 54/76/53 52/77/51 50/78/49 48/79/47 46/80/45 44/81/43 42/82/41 40/83/39 38/84/37 36/85/35 34/86/33 32/87/31 30/88/29 28/89/27 26/90/25 24/91/23 22/92/21 20/93/19 18/94/17 16/95/15 14/96/13 12/97/11 10/98/9 8/99/7 6/100/5
f 63/101/64 64/102/63 2/2/2 1/1/1
f 61/68/62 62/67/61 64/102/63 63/101/64
f 1/103/1 3/104/4 5/105/6 7/106/8 9/107/10 11/108/12 13/109/14 15/110/16 17/111/18 19/112/20 21/113/22 23/114/24 25/115/26 27/116/28 29/117/30 31/118/32 33/119/34 35/120/36 37/121/38 39/122/40 41/123/42 43/124/44 45/125/46 47/126/48 49/85/50 51/84/52 53/127/54 55/128/56 57/129/58 59/130/60 61/131/62 63/132/64

View File

@ -1,39 +0,0 @@
# Blender v2.73 (sub 0) OBJ File: 'exit.blend'
# www.blender.org
o Plane
v -3.440849 -0.000000 2.993210
v 3.435127 -0.000000 2.993210
v -3.440849 -0.000000 -2.993210
v 3.435127 -0.000000 -2.993210
v -3.440849 -0.215618 2.993210
v 3.435127 -0.215618 2.993210
v -3.440849 -0.215618 -2.993210
v 3.435127 -0.215618 -2.993210
v 0.196185 -0.238611 0.123684
vt 0.999900 0.000100
vt 0.999900 0.999900
vt 0.000100 0.999900
vt 0.999981 0.000019
vt 0.000019 0.000019
vt 0.000019 0.036035
vt 0.999981 0.036035
vt 0.000100 0.000100
vn 0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn -1.000000 0.000000 0.000000
s off
f 2/1/1 4/2/1 3/3/1
f 7/3/2 8/2/2 6/1/2
f 8/4/3 7/5/3 3/6/3
f 6/6/4 8/7/4 4/4/4
f 5/6/5 6/7/5 2/4/5
f 7/4/6 5/5/6 1/6/6
f 1/8/1 2/1/1 3/3/1
f 5/8/2 7/3/2 6/1/2
f 4/7/3 8/4/3 3/6/3
f 2/5/4 6/6/4 4/4/4
f 1/5/5 5/6/5 2/4/5
f 3/7/6 7/4/6 1/6/6

View File

@ -1,52 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
o Wall_Cube.000
v 0.537791 3.045326 -3.045326
v 0.537791 -3.045326 -3.045326
v 0.537791 -3.045326 3.045326
v -0.537791 3.045326 3.045326
v -0.537791 -3.045326 3.045326
v -0.537791 -3.045326 -3.045326
v 0.537791 3.045326 3.045326
v -0.537791 3.045326 -3.045326
vt 1.000000 0.000000
vt 0.000000 -1.000000
vt 1.000000 -1.000000
vt -1.000000 0.000000
vt -1.000000 -1.000000
vt 0.000000 0.000000
vt 0.039666 1.000166
vt 0.000334 0.000166
vt 0.039666 0.000166
vt 0.960071 -0.007992
vt 0.993184 0.992028
vt 0.959736 0.992008
vt 0.002338 0.996941
vt 0.032522 -0.000041
vt 0.032299 0.996953
vt 0.995477 0.006970
vt 0.952679 0.987810
vt 0.952679 0.006970
vt 0.000334 1.000166
vt 0.993520 -0.007972
vt 0.002561 -0.000052
vt 0.995477 0.987810
vn 1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -0.000000 1.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 1.000000 0.000000
s off
f 1/1/1 3/2/1 2/3/1
f 4/4/2 6/2/2 5/5/2
f 7/6/1 3/2/1 1/1/1
f 8/6/2 6/2/2 4/4/2
f 8/7/3 2/8/3 6/9/3
f 7/10/4 5/11/4 3/12/4
f 2/13/5 5/14/5 6/15/5
f 8/16/6 7/17/6 1/18/6
f 1/19/3 2/8/3 8/7/3
f 4/20/4 5/11/4 7/10/4
f 3/21/5 5/14/5 2/13/5
f 4/22/6 7/17/6 8/16/6

View File

@ -1,41 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: 'hint.blend'
# www.blender.org
o Plane
v -1.000000 0.000000 1.000000
v 1.000000 0.000000 1.000000
v -1.000000 0.000000 -1.000000
v 1.000000 0.000000 -1.000000
v -1.000000 -0.040124 1.000000
v 1.000000 -0.040124 1.000000
v -1.000000 -0.040124 -1.000000
v 1.000000 -0.040124 -1.000000
vt 0.999906 0.000094
vt 0.011632 0.011458
vt 0.031989 0.030429
vt 0.988368 0.993659
vt 0.978931 0.022798
vt 0.002935 0.993659
vt 0.968011 0.974689
vt 0.023910 0.970956
vt 0.000100 0.999900
vt 0.999900 0.999900
vt 0.000100 0.000100
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 -1.000000 0.000000
s off
f 8/1/1 7/2/1 3/3/1
f 6/4/2 8/1/2 4/5/2
f 5/6/3 6/4/3 2/7/3
f 7/2/4 5/6/4 1/8/4
f 4/5/1 8/1/1 3/3/1
f 2/7/2 6/4/2 4/5/2
f 1/8/3 5/6/3 2/7/3
f 3/3/4 7/2/4 1/8/4
f 3/9/5 2/1/5 4/10/5
f 6/1/6 7/9/6 8/10/6
f 1/11/5 2/1/5 3/9/5
f 5/11/6 7/9/6 6/1/6

File diff suppressed because it is too large Load Diff

View File

@ -1,54 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: 'movableBlock.blend'
# www.blender.org
o Cube_Cube.001
v -0.781204 -0.781204 0.781204
v -0.781204 -0.781204 -0.781204
v 0.781204 -0.781204 -0.781204
v 0.781204 -0.781204 0.781204
v -0.781204 0.781204 0.781204
v -0.781204 0.781204 -0.781204
v 0.781204 0.781204 -0.781204
v 0.781204 0.781204 0.781204
vt 0.004724 0.007107
vt 0.995276 0.007107
vt 0.995276 0.997658
vt 0.008245 0.004505
vt 0.994929 0.004505
vt 0.994930 0.991189
vt 0.011069 0.007349
vt 0.992064 0.007349
vt 0.992064 0.988345
vt 0.001602 0.000731
vt 0.999816 0.001904
vt 1.000026 0.998811
vt 0.006324 0.995789
vt 0.006324 0.008395
vt 0.993718 0.008394
vt 0.005204 0.997859
vt 0.005204 0.005051
vt 0.998012 0.005050
vt 0.998012 0.997858
vt 0.004724 0.997658
vt 0.008245 0.991189
vt 0.011069 0.988345
vt 0.001813 0.999704
vt 0.993718 0.995789
vn -1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 1.000000
vn 0.000000 -1.000000 0.000000
vn 0.000000 1.000000 0.000000
s off
f 6/1/1 2/2/1 1/3/1
f 7/4/2 3/5/2 2/6/2
f 8/7/3 4/8/3 3/9/3
f 5/10/4 1/11/4 4/12/4
f 2/13/5 3/14/5 4/15/5
f 7/16/6 6/17/6 5/18/6
f 8/19/6 7/16/6 5/18/6
f 5/20/1 6/1/1 1/3/1
f 6/21/2 7/4/2 2/6/2
f 7/22/3 8/7/3 3/9/3
f 8/23/4 5/10/4 4/12/4
f 1/24/5 2/13/5 4/15/5

File diff suppressed because it is too large Load Diff

View File

@ -1,388 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: 'ruins_column.blend'
# www.blender.org
o Cylinder
v 0.000000 -1.000000 -1.000000
v 0.000000 1.000000 -1.000000
v 0.195090 -1.000000 -0.980785
v 0.195090 1.000000 -0.980785
v 0.382683 -1.000000 -0.923880
v 0.382683 1.000000 -0.923880
v 0.555570 -1.000000 -0.831470
v 0.555570 1.000000 -0.831470
v 0.707107 -1.000000 -0.707107
v 0.707107 1.000000 -0.707107
v 0.831470 -1.000000 -0.555570
v 0.831470 1.000000 -0.555570
v 0.923880 -1.000000 -0.382683
v 0.923880 1.000000 -0.382683
v 0.980785 -1.000000 -0.195090
v 0.980785 1.000000 -0.195090
v 1.000000 -1.000000 -0.000000
v 1.000000 1.000000 -0.000000
v 0.980785 -1.000000 0.195090
v 0.980785 1.000000 0.195090
v 0.923880 -1.000000 0.382683
v 0.923880 1.000000 0.382683
v 0.831470 -1.000000 0.555570
v 0.831470 1.000000 0.555570
v 0.707107 -1.000000 0.707107
v 0.707107 1.000000 0.707107
v 0.555570 -1.000000 0.831470
v 0.555570 1.000000 0.831470
v 0.382683 -1.000000 0.923880
v 0.382683 1.000000 0.923880
v 0.195090 -1.000000 0.980785
v 0.195090 1.000000 0.980785
v -0.000000 -1.000000 1.000000
v -0.000000 1.000000 1.000000
v -0.195091 -1.000000 0.980785
v -0.195091 1.000000 0.980785
v -0.382684 -1.000000 0.923879
v -0.382684 1.000000 0.923879
v -0.555571 -1.000000 0.831469
v -0.555571 1.000000 0.831469
v -0.707107 -1.000000 0.707106
v -0.707107 1.000000 0.707106
v -0.831470 -1.000000 0.555570
v -0.831470 1.000000 0.555570
v -0.923880 -1.000000 0.382683
v -0.923880 1.000000 0.382683
v -0.980785 -1.000000 0.195089
v -0.980785 1.000000 0.195089
v -1.000000 -1.000000 -0.000001
v -1.000000 1.000000 -0.000001
v -0.980785 -1.000000 -0.195091
v -0.980785 1.000000 -0.195091
v -0.923879 -1.000000 -0.382684
v -0.923879 1.000000 -0.382684
v -0.831469 -1.000000 -0.555571
v -0.831469 1.000000 -0.555571
v -0.707106 -1.000000 -0.707108
v -0.707106 1.000000 -0.707108
v -0.555569 -1.000000 -0.831470
v -0.555569 1.000000 -0.831470
v -0.382682 -1.000000 -0.923880
v -0.382682 1.000000 -0.923880
v -0.195089 -1.000000 -0.980786
v -0.195089 1.000000 -0.980786
vt 0.445551 1.000293
vt 0.404755 1.000293
vt 0.404755 0.665886
vt 0.364742 1.000293
vt 0.364742 0.665886
vt 0.327051 1.000293
vt 0.327051 0.665886
vt 0.293130 1.000293
vt 0.264283 1.000293
vt 0.264283 0.665886
vt 0.264046 1.000000
vt 0.230125 1.000000
vt 0.230125 0.665593
vt 0.192434 1.000000
vt 0.192434 0.665593
vt 0.152421 1.000000
vt 0.152421 0.665593
vt 0.111625 1.000000
vt 0.071612 1.000000
vt 0.071612 0.665593
vt 0.033921 1.000000
vt 0.033921 0.665593
vt 0.000000 1.000000
vt 0.000000 0.665593
vt 1.173156 0.999734
vt 1.139235 0.999801
vt 1.138976 0.665395
vt 1.101544 0.999877
vt 1.101285 0.665470
vt 1.061532 0.999957
vt 1.061273 0.665550
vt 1.020735 1.000038
vt 1.020476 0.665632
vt 0.980723 1.000118
vt 0.980464 0.665712
vt 0.943032 1.000193
vt 0.942772 0.665787
vt 0.909111 1.000261
vt 0.908852 0.665855
vt 0.880263 1.000319
vt 0.880004 0.665913
vt 0.846342 1.000387
vt 0.846083 0.665980
vt 0.808651 1.000462
vt 0.808392 0.666056
vt 0.768638 1.000542
vt 0.768379 0.666136
vt 0.727842 1.000624
vt 0.727583 0.666217
vt 0.687830 1.000704
vt 0.687570 0.666297
vt 0.650139 1.000779
vt 0.649879 0.666372
vt 0.616217 1.000847
vt 0.615958 0.666440
vt 0.587370 1.000904
vt 0.587111 0.666498
vt 0.586023 1.000293
vt 0.557176 1.000293
vt 0.557176 0.665886
vt 0.523255 1.000293
vt 0.523255 0.665886
vt 0.227505 0.665593
vt 0.186708 0.665593
vt 0.227505 0.332797
vt 0.485564 1.000293
vt 0.445551 0.665886
vt 0.485564 0.665886
vt 0.267517 0.006395
vt 0.007959 0.214935
vt 0.109005 0.018938
vt 0.293130 0.665886
vt 0.264046 0.665593
vt 0.111625 0.665593
vt 1.172897 0.665327
vt 0.586023 0.665886
vt 0.267518 0.659199
vt 0.305209 0.646655
vt 0.339130 0.628445
vt 0.367977 0.605268
vt 0.414213 0.515584
vt 0.406254 0.547731
vt 0.390642 0.578014
vt 0.367977 0.393122
vt 0.414213 0.482806
vt 0.406254 0.450658
vt 0.390642 0.420376
vt 0.305209 0.351735
vt 0.339130 0.369945
vt 0.267517 0.339191
vt 0.186708 0.332797
vt 0.023571 0.420376
vt 0.075084 0.369945
vt 0.146696 0.339191
vt 0.109005 0.351735
vt 0.046236 0.393122
vt 0.000000 0.482806
vt 0.007959 0.450658
vt 0.000000 0.515584
vt 0.007959 0.547732
vt 0.023571 0.578014
vt 0.109005 0.646655
vt 0.075084 0.628445
vt 0.046237 0.605268
vt 0.146696 0.659199
vt 0.075084 0.295648
vt 0.023571 0.245217
vt 0.046236 0.272471
vt 0.146696 0.326402
vt 0.109005 0.313858
vt 0.000000 0.182787
vt 0.000000 0.150010
vt 0.367977 0.272471
vt 0.339129 0.295648
vt 0.390642 0.245217
vt 0.414213 0.150009
vt 0.414213 0.182787
vt 0.406254 0.214935
vt 0.390642 0.087579
vt 0.406254 0.117862
vt 0.339129 0.037148
vt 0.367977 0.060326
vt 0.305208 0.018938
vt 0.186708 0.000000
vt 0.227505 0.000000
vt 0.146696 0.006395
vt 0.046236 0.060326
vt 0.075084 0.037148
vt 0.007959 0.117862
vt 0.267517 0.326402
vt 0.023571 0.087579
vt 0.305208 0.313859
vn 0.000000 0.685700 -0.727900
vn 0.142000 0.685700 -0.713900
vn 0.142000 -0.685700 -0.713900
vn 0.278500 0.685700 -0.672500
vn 0.278500 -0.685700 -0.672500
vn 0.404400 0.685700 -0.605200
vn 0.404400 -0.685700 -0.605200
vn 0.514700 0.685700 -0.514700
vn 0.605200 0.685700 -0.404400
vn 0.605200 -0.685700 -0.404400
vn 0.672500 0.685700 -0.278500
vn 0.672500 -0.685700 -0.278500
vn 0.713900 0.685700 -0.142000
vn 0.713900 -0.685700 -0.142000
vn 0.727900 0.685700 0.000000
vn 0.727900 -0.685700 0.000000
vn 0.713900 0.685700 0.142000
vn 0.672500 0.685700 0.278500
vn 0.672500 -0.685700 0.278500
vn 0.605200 0.685700 0.404400
vn 0.605200 -0.685700 0.404400
vn 0.514700 0.685700 0.514700
vn 0.514700 -0.685700 0.514700
vn 0.404400 0.685700 0.605200
vn 0.404400 -0.685700 0.605200
vn 0.278500 0.685700 0.672500
vn 0.278500 -0.685700 0.672500
vn 0.142000 0.685700 0.713900
vn 0.142000 -0.685700 0.713900
vn 0.000000 0.685700 0.727900
vn 0.000000 -0.685700 0.727900
vn -0.142000 0.685700 0.713900
vn -0.142000 -0.685700 0.713900
vn -0.278500 0.685700 0.672500
vn -0.278500 -0.685700 0.672500
vn -0.404400 0.685700 0.605200
vn -0.404400 -0.685700 0.605200
vn -0.514700 0.685700 0.514700
vn -0.514700 -0.685700 0.514700
vn -0.605200 0.685700 0.404400
vn -0.605200 -0.685700 0.404400
vn -0.672500 0.685700 0.278500
vn -0.672500 -0.685700 0.278500
vn -0.713900 0.685700 0.142000
vn -0.713900 -0.685700 0.142000
vn -0.727900 0.685700 0.000000
vn -0.727900 -0.685700 0.000000
vn -0.713900 0.685700 -0.142000
vn -0.713900 -0.685700 -0.142000
vn -0.672500 0.685700 -0.278500
vn -0.672500 -0.685700 -0.278500
vn -0.605200 0.685700 -0.404400
vn -0.605200 -0.685700 -0.404400
vn -0.514700 0.685700 -0.514700
vn -0.514700 -0.685700 -0.514700
vn -0.404400 0.685700 -0.605200
vn -0.404400 -0.685700 -0.605200
vn -0.278500 0.685700 -0.672500
vn -0.278500 -0.685700 -0.672500
vn -0.142000 0.685700 -0.713900
vn 0.000000 -0.685700 -0.727900
vn -0.142000 -0.685700 -0.713900
vn 0.514700 -0.685700 -0.514700
vn 0.713900 -0.685700 0.142000
s 1
f 2/1/1 4/2/2 3/3/3
f 4/2/2 6/4/4 5/5/5
f 6/4/4 8/6/6 7/7/7
f 7/7/7 8/6/6 10/8/8
f 10/8/8 12/9/9 11/10/10
f 12/11/9 14/12/11 13/13/12
f 14/12/11 16/14/13 15/15/14
f 16/14/13 18/16/15 17/17/16
f 17/17/16 18/16/15 20/18/17
f 20/18/17 22/19/18 21/20/19
f 22/19/18 24/21/20 23/22/21
f 24/21/20 26/23/22 25/24/23
f 26/25/22 28/26/24 27/27/25
f 28/26/24 30/28/26 29/29/27
f 30/28/26 32/30/28 31/31/29
f 32/30/28 34/32/30 33/33/31
f 34/32/30 36/34/32 35/35/33
f 36/34/32 38/36/34 37/37/35
f 38/36/34 40/38/36 39/39/37
f 40/38/36 42/40/38 41/41/39
f 42/40/38 44/42/40 43/43/41
f 44/42/40 46/44/42 45/45/43
f 46/44/42 48/46/44 47/47/45
f 48/46/44 50/48/46 49/49/47
f 50/48/46 52/50/48 51/51/49
f 52/50/48 54/52/50 53/53/51
f 54/52/50 56/54/52 55/55/53
f 56/54/52 58/56/54 57/57/55
f 58/58/54 60/59/56 59/60/57
f 60/59/56 62/61/58 61/62/59
f 6/63/4 4/64/2 36/65/32
f 64/66/60 2/1/1 1/67/61
f 62/61/58 64/66/60 63/68/62
f 21/69/19 63/70/62 13/71/12
f 1/67/61 2/1/1 3/3/3
f 3/3/3 4/2/2 5/5/5
f 5/5/5 6/4/4 7/7/7
f 9/72/63 7/7/7 10/8/8
f 9/72/63 10/8/8 11/10/10
f 11/73/10 12/11/9 13/13/12
f 13/13/12 14/12/11 15/15/14
f 15/15/14 16/14/13 17/17/16
f 19/74/64 17/17/16 20/18/17
f 19/74/64 20/18/17 21/20/19
f 21/20/19 22/19/18 23/22/21
f 23/22/21 24/21/20 25/24/23
f 25/75/23 26/25/22 27/27/25
f 27/27/25 28/26/24 29/29/27
f 29/29/27 30/28/26 31/31/29
f 31/31/29 32/30/28 33/33/31
f 33/33/31 34/32/30 35/35/33
f 35/35/33 36/34/32 37/37/35
f 37/37/35 38/36/34 39/39/37
f 39/39/37 40/38/36 41/41/39
f 41/41/39 42/40/38 43/43/41
f 43/43/41 44/42/40 45/45/43
f 45/45/43 46/44/42 47/47/45
f 47/47/45 48/46/44 49/49/47
f 49/49/47 50/48/46 51/51/49
f 51/51/49 52/50/48 53/53/51
f 53/53/51 54/52/50 55/55/53
f 55/55/53 56/54/52 57/57/55
f 57/76/55 58/58/54 59/60/57
f 59/60/57 60/59/56 61/62/59
f 63/68/62 64/66/60 1/67/61
f 8/77/6 6/63/4 10/78/8
f 12/79/9 10/78/8 14/80/11
f 20/81/17 18/82/15 16/83/13
f 20/81/17 28/84/24 22/85/18
f 24/86/20 22/85/18 26/87/22
f 32/88/28 30/89/26 28/84/24
f 36/65/32 34/90/30 32/88/28
f 38/91/34 48/92/44 44/93/40
f 40/94/36 38/91/34 42/95/38
f 48/92/44 46/96/42 44/93/40
f 52/97/48 50/98/46 48/92/44
f 52/97/48 36/65/32 54/99/50
f 56/100/52 54/99/50 58/101/54
f 64/102/60 62/103/58 60/104/56
f 4/64/2 2/105/1 64/102/60
f 10/78/8 6/63/4 36/65/32
f 38/91/34 44/93/40 42/95/38
f 58/101/54 54/99/50 60/104/56
f 36/65/32 32/88/28 28/84/24
f 38/91/34 36/65/32 52/97/48
f 22/85/18 28/84/24 26/87/22
f 48/92/44 38/91/34 52/97/48
f 4/64/2 64/102/60 60/104/56
f 10/78/8 16/83/13 14/80/11
f 36/65/32 28/84/24 20/81/17
f 61/62/59 62/61/58 63/68/62
f 10/78/8 20/81/17 16/83/13
f 20/81/17 10/78/8 36/65/32
f 54/99/50 36/65/32 60/104/56
f 36/65/32 4/64/2 60/104/56
f 21/69/19 49/65/47 57/106/55
f 61/107/59 63/70/62 59/108/57
f 53/109/51 55/110/53 57/106/55
f 49/65/47 51/91/49 53/109/51
f 63/70/62 1/111/61 3/112/3
f 63/70/62 57/106/55 59/108/57
f 41/113/39 43/114/41 39/115/37
f 33/116/31 35/117/33 37/118/35
f 29/119/27 31/120/29 33/116/31
f 25/121/23 27/122/25 29/119/27
f 21/69/19 23/123/21 25/121/23
f 17/124/16 19/125/64 21/69/19
f 17/124/16 21/69/19 15/126/14
f 9/127/63 11/128/10 13/71/12
f 13/71/12 5/129/5 9/127/63
f 3/112/3 5/129/5 63/70/62
f 49/65/47 53/109/51 57/106/55
f 47/130/45 49/65/47 21/69/19
f 5/129/5 7/131/7 9/127/63
f 33/116/31 47/130/45 29/119/27
f 5/129/5 13/71/12 63/70/62
f 43/114/41 37/118/35 39/115/37
f 37/118/35 43/114/41 47/130/45
f 21/69/19 13/71/12 15/126/14
f 33/116/31 37/118/35 47/130/45
f 29/119/27 47/130/45 25/121/23
f 43/114/41 45/132/43 47/130/45
f 63/70/62 21/69/19 57/106/55
f 25/121/23 47/130/45 21/69/19

View File

@ -1,15 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: 'ruinsTile.blend'
# www.blender.org
o Plane
v -1.000000 0.000000 1.000000
v 1.000000 0.000000 1.000000
v -1.000000 0.000000 -1.000000
v 1.000000 0.000000 -1.000000
vt 0.999900 0.000100
vt 0.999900 0.999900
vt 0.000100 0.999900
vt 0.000100 0.000100
vn 0.000000 1.000000 0.000000
s off
f 2/1/1 4/2/1 3/3/1
f 1/4/1 2/1/1 3/3/1

View File

@ -1,54 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
o Wall_Cube.001
v 0.537791 3.045326 -3.045326
v 0.537791 -3.045326 -3.045326
v 0.537791 -3.045326 3.045326
v -0.537791 3.045326 -3.045326
v -0.537791 -3.045326 -3.045326
v -0.537791 3.045326 3.045326
v -0.537791 -3.045326 3.045326
v 0.537791 3.045326 3.045326
vt 1.002363 0.998329
vt 0.005637 -0.001671
vt 1.002363 -0.001671
vt 0.394169 0.995358
vt 0.605831 -0.004642
vt 0.394169 -0.004642
vt -0.003002 0.995358
vt 0.996752 -0.004642
vt -0.003002 -0.004642
vt 0.605361 0.992386
vt 0.392389 -0.007614
vt 0.605361 -0.007614
vt 0.001396 0.906027
vt 0.998604 0.093973
vt 0.001923 0.094175
vt 1.000000 0.097080
vt 0.000000 0.902920
vt 1.000000 0.902920
vt 0.005637 0.998329
vt 0.605831 0.995358
vt 0.996752 0.995358
vt 0.392389 0.992386
vt 0.998077 0.905824
vt 0.000000 0.097080
vn 1.000000 0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn -1.000000 0.000000 0.000000
vn 0.000000 -0.000000 1.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 1.000000 0.000000
s off
f 1/1/1 3/2/1 2/3/1
f 4/4/2 2/5/2 5/6/2
f 6/7/3 5/8/3 7/9/3
f 8/10/4 7/11/4 3/12/4
f 2/13/5 7/14/5 5/15/5
f 4/16/6 8/17/6 1/18/6
f 8/19/1 3/2/1 1/1/1
f 1/20/2 2/5/2 4/4/2
f 4/21/3 5/8/3 6/7/3
f 6/22/4 7/11/4 8/10/4
f 3/23/5 7/14/5 2/13/5
f 6/24/6 8/17/6 4/16/6

File diff suppressed because it is too large Load Diff

View File

@ -1,500 +0,0 @@
# Blender v2.73 (sub 0) OBJ File: 'switch_inner.blend'
# www.blender.org
o switch_Cube
v 0.952094 -0.488588 -1.000000
v 1.000000 -0.488588 -0.952094
v 0.952094 -0.513173 -0.952094
v 0.976015 -0.488588 -0.993600
v 0.952094 -0.500864 -0.993600
v 0.975003 -0.500345 -0.987383
v 0.993600 -0.500864 -0.952093
v 0.993600 -0.488588 -0.976015
v 0.987383 -0.500345 -0.975003
v 0.952094 -0.509888 -0.976015
v 0.976015 -0.509888 -0.952093
v 0.975003 -0.506698 -0.975003
v 0.952094 -0.513173 0.952094
v 1.000000 -0.488588 0.952094
v 0.952094 -0.488588 1.000000
v 0.976015 -0.509888 0.952094
v 0.952094 -0.509888 0.976015
v 0.975003 -0.506698 0.975003
v 0.993600 -0.488588 0.976015
v 0.993600 -0.500864 0.952094
v 0.987383 -0.500345 0.975003
v 0.952094 -0.500864 0.993600
v 0.976015 -0.488588 0.993600
v 0.975003 -0.500345 0.987383
v -0.952094 -0.513173 0.952093
v -0.952094 -0.488588 1.000000
v -1.000000 -0.488588 0.952093
v -0.952094 -0.509888 0.976015
v -0.976016 -0.509888 0.952093
v -0.975003 -0.506698 0.975003
v -0.976016 -0.488588 0.993600
v -0.952094 -0.500864 0.993600
v -0.975003 -0.500345 0.987383
v -0.993600 -0.500864 0.952093
v -0.993600 -0.488588 0.976015
v -0.987383 -0.500345 0.975003
v -1.000000 -0.488588 -0.952094
v -0.952093 -0.488588 -1.000000
v -0.952093 -0.513173 -0.952094
v -0.993600 -0.488588 -0.976016
v -0.993600 -0.500864 -0.952094
v -0.987383 -0.500345 -0.975003
v -0.952093 -0.500864 -0.993600
v -0.976015 -0.488588 -0.993600
v -0.975003 -0.500345 -0.987383
v -0.976015 -0.509888 -0.952094
v -0.952093 -0.509888 -0.976016
v -0.975003 -0.506698 -0.975003
v 1.000000 0.488588 -0.952093
v 0.952094 0.488588 -0.999999
v 0.952094 0.513173 -0.952093
v 0.993600 0.488588 -0.976015
v 0.993600 0.500864 -0.952093
v 0.987383 0.500345 -0.975002
v 0.952094 0.500864 -0.993599
v 0.976016 0.488588 -0.993599
v 0.975003 0.500345 -0.987382
v 0.976016 0.509888 -0.952093
v 0.952094 0.509888 -0.976015
v 0.975003 0.506698 -0.975002
v 0.952093 0.513173 0.952094
v 0.952093 0.488588 1.000001
v 0.999999 0.488588 0.952094
v 0.952093 0.509888 0.976016
v 0.976015 0.509888 0.952094
v 0.975002 0.506698 0.975004
v 0.976015 0.488588 0.993601
v 0.952093 0.500864 0.993601
v 0.975002 0.500345 0.987384
v 0.993599 0.500864 0.952094
v 0.993599 0.488588 0.976016
v 0.987382 0.500345 0.975004
v -0.952094 0.513173 0.952093
v -1.000000 0.488588 0.952093
v -0.952094 0.488588 1.000000
v -0.976016 0.509888 0.952093
v -0.952094 0.509888 0.976015
v -0.975003 0.506698 0.975003
v -0.993600 0.488588 0.976015
v -0.993600 0.500864 0.952093
v -0.987383 0.500345 0.975003
v -0.952094 0.500864 0.993600
v -0.976016 0.488588 0.993600
v -0.975003 0.500345 0.987383
v -0.952094 0.488588 -1.000000
v -1.000000 0.488588 -0.952094
v -0.952094 0.513173 -0.952094
v -0.976015 0.488588 -0.993600
v -0.952093 0.500864 -0.993600
v -0.975003 0.500345 -0.987383
v -0.993600 0.500864 -0.952094
v -0.993600 0.488588 -0.976015
v -0.987383 0.500345 -0.975003
v -0.952093 0.509888 -0.976015
v -0.976015 0.509888 -0.952094
v -0.975003 0.506698 -0.975003
vt 0.856328 0.374264
vt 0.426513 0.374264
vt 0.426513 0.657341
vt 0.856328 0.657341
vt 0.654950 0.976215
vt 0.654950 0.693138
vt 0.853302 0.693138
vt 0.861728 0.374264
vt 0.861500 0.370859
vt 0.865697 0.374264
vt 0.864294 0.370859
vt 0.856328 0.370708
vt 0.865697 0.657341
vt 0.861728 0.657341
vt 0.861500 0.660747
vt 0.856328 0.660897
vt 0.856328 0.663512
vt 0.861500 0.662587
vt 0.864294 0.660747
vt 0.421113 0.374264
vt 0.421342 0.370859
vt 0.856328 0.368094
vt 0.861500 0.369018
vt 0.426513 0.370708
vt 0.426513 0.368094
vt 0.421342 0.369018
vt 0.417144 0.374264
vt 0.418547 0.370859
vt 0.426513 0.660897
vt 0.421342 0.660747
vt 0.421342 0.662587
vt 0.421113 0.657341
vt 0.417144 0.657341
vt 0.418547 0.660747
vt 0.426513 0.663512
vt 0.851966 0.695368
vt 0.659461 0.695368
vt 0.659461 0.978445
vt 0.853302 0.976215
vt 0.851966 0.978445
vn 0.000000 0.000000 -1.000000
vn -0.000000 -0.000000 1.000000
vn -1.000000 -0.000000 -0.000000
vn 0.000000 1.000000 -0.000000
vn 1.000000 -0.000000 0.000000
vn 0.238400 -0.455800 -0.857600
vn 0.228100 -0.470400 -0.852500
vn 0.233100 -0.463300 -0.855000
vn 0.648500 -0.398700 -0.648500
vn 0.648500 -0.398800 -0.648500
vn 0.857600 -0.455800 -0.238400
vn 0.860000 -0.448400 -0.243600
vn 0.855000 -0.463300 -0.233100
vn 0.451900 -0.880600 -0.142600
vn 0.138600 -0.980600 -0.138600
vn 0.142500 -0.980600 -0.134600
vn 0.142600 -0.880600 -0.451900
vn 0.415300 -0.809300 -0.415300
vn 0.138600 -0.980600 0.138600
vn 0.134600 -0.980600 0.142500
vn 0.451900 -0.880600 0.142600
vn 0.857600 -0.455800 0.238400
vn 0.852500 -0.470400 0.228100
vn 0.855000 -0.463300 0.233100
vn 0.648500 -0.398800 0.648500
vn 0.648500 -0.398700 0.648500
vn 0.238400 -0.455800 0.857600
vn 0.243600 -0.448400 0.860000
vn 0.233100 -0.463300 0.855000
vn 0.142600 -0.880600 0.451900
vn 0.415300 -0.809300 0.415300
vn -0.138600 -0.980600 0.138600
vn -0.142500 -0.980600 0.134600
vn -0.142600 -0.880600 0.451900
vn -0.238400 -0.455800 0.857600
vn -0.228100 -0.470400 0.852500
vn -0.233100 -0.463300 0.855000
vn -0.648500 -0.398800 0.648500
vn -0.648500 -0.398700 0.648500
vn -0.857600 -0.455800 0.238400
vn -0.860000 -0.448400 0.243600
vn -0.855000 -0.463300 0.233100
vn -0.451900 -0.880600 0.142600
vn -0.415300 -0.809300 0.415300
vn -0.857600 -0.455800 -0.238400
vn -0.852500 -0.470400 -0.228100
vn -0.855000 -0.463300 -0.233100
vn -0.648500 -0.398700 -0.648500
vn -0.648500 -0.398800 -0.648500
vn -0.238400 -0.455800 -0.857600
vn -0.243600 -0.448400 -0.860000
vn -0.233100 -0.463300 -0.855000
vn -0.142600 -0.880600 -0.451900
vn -0.138600 -0.980600 -0.138600
vn -0.134600 -0.980600 -0.142500
vn -0.451900 -0.880600 -0.142600
vn -0.415300 -0.809300 -0.415300
vn 0.857600 0.455800 -0.238400
vn 0.852500 0.470400 -0.228100
vn 0.855000 0.463300 -0.233100
vn 0.648500 0.398800 -0.648500
vn 0.648500 0.398700 -0.648500
vn 0.238400 0.455800 -0.857600
vn 0.243500 0.448400 -0.860000
vn 0.233100 0.463300 -0.855000
vn 0.142600 0.880600 -0.451900
vn 0.138600 0.980600 -0.138600
vn 0.134600 0.980600 -0.142500
vn 0.451900 0.880600 -0.142600
vn 0.415300 0.809300 -0.415300
vn 0.138600 0.980600 0.138600
vn 0.142500 0.980600 0.134600
vn 0.142600 0.880600 0.451900
vn 0.238400 0.455800 0.857600
vn 0.228100 0.470400 0.852500
vn 0.233100 0.463300 0.855000
vn 0.648500 0.398700 0.648500
vn 0.648500 0.398800 0.648500
vn 0.857600 0.455800 0.238400
vn 0.860000 0.448400 0.243600
vn 0.855000 0.463300 0.233100
vn 0.451900 0.880600 0.142600
vn 0.415300 0.809300 0.415300
vn -0.138600 0.980600 0.138600
vn -0.134600 0.980600 0.142500
vn -0.451900 0.880600 0.142600
vn -0.857600 0.455800 0.238400
vn -0.852500 0.470400 0.228100
vn -0.855000 0.463300 0.233100
vn -0.648500 0.398700 0.648500
vn -0.648500 0.398800 0.648500
vn -0.238400 0.455800 0.857600
vn -0.243600 0.448400 0.860000
vn -0.233100 0.463300 0.855000
vn -0.142600 0.880600 0.451900
vn -0.415300 0.809300 0.415300
vn -0.238400 0.455800 -0.857600
vn -0.228100 0.470400 -0.852500
vn -0.233100 0.463300 -0.855000
vn -0.648500 0.398800 -0.648500
vn -0.648500 0.398700 -0.648500
vn -0.857600 0.455800 -0.238400
vn -0.860000 0.448400 -0.243500
vn -0.855000 0.463300 -0.233100
vn -0.451900 0.880600 -0.142600
vn -0.138600 0.980600 -0.138600
vn -0.142500 0.980600 -0.134600
vn -0.142600 0.880600 -0.451900
vn -0.415300 0.809300 -0.415300
vn 0.886700 -0.462300 0.000000
vn 0.456600 -0.889700 0.000000
vn 0.136000 -0.990700 0.000000
vn 0.000000 -0.990700 -0.136000
vn 0.000000 -0.889700 -0.456600
vn 0.000000 -0.462300 -0.886700
vn 0.258500 0.000000 -0.966000
vn 0.258400 0.000000 -0.966000
vn 0.707100 0.000000 -0.707100
vn 0.966000 -0.000000 -0.258500
vn -0.000000 -0.462300 0.886700
vn -0.000000 -0.889700 0.456600
vn -0.000000 -0.990700 0.136000
vn 0.966000 0.000000 0.258500
vn 0.707100 0.000000 0.707100
vn 0.258400 -0.000000 0.966000
vn -0.886700 -0.462300 -0.000000
vn -0.456600 -0.889700 -0.000000
vn -0.136000 -0.990700 -0.000000
vn -0.258500 0.000000 0.966000
vn -0.707100 -0.000000 0.707100
vn -0.966000 -0.000000 0.258500
vn -0.966000 -0.000000 0.258400
vn -0.966000 -0.000000 -0.258500
vn -0.707100 0.000000 -0.707100
vn -0.258500 0.000000 -0.966000
vn 0.136000 0.990700 0.000000
vn 0.456600 0.889700 0.000000
vn 0.886700 0.462300 0.000000
vn 0.000000 0.462300 -0.886700
vn 0.000000 0.889700 -0.456600
vn 0.000000 0.990700 -0.136000
vn -0.000000 0.990700 0.136000
vn -0.000000 0.889700 0.456600
vn -0.000000 0.462300 0.886700
vn -0.136000 0.990700 -0.000000
vn -0.456600 0.889700 -0.000000
vn -0.886700 0.462300 -0.000000
vn 0.000000 -1.000000 -0.000000
vn 0.243500 -0.448400 -0.860000
vn 0.852500 -0.470400 -0.228100
vn 0.134600 -0.980600 -0.142500
vn 0.142500 -0.980600 0.134600
vn 0.860000 -0.448400 0.243600
vn 0.228100 -0.470400 0.852500
vn -0.134600 -0.980600 0.142500
vn -0.243600 -0.448400 0.860000
vn -0.852500 -0.470400 0.228100
vn -0.860000 -0.448400 -0.243500
vn -0.228100 -0.470400 -0.852500
vn -0.142500 -0.980600 -0.134600
vn 0.860000 0.448400 -0.243600
vn 0.228100 0.470400 -0.852500
vn 0.142500 0.980600 -0.134600
vn 0.134600 0.980600 0.142500
vn 0.243600 0.448400 0.860000
vn 0.852500 0.470400 0.228100
vn -0.142500 0.980600 0.134600
vn -0.860000 0.448400 0.243500
vn -0.228100 0.470400 0.852500
vn -0.243600 0.448400 -0.860000
vn -0.852500 0.470400 -0.228100
vn -0.134600 0.980600 -0.142500
s 1
f 1/1/1 38/2/1 85/3/1
f 62/4/2 75/3/2 26/2/2
f 74/3/3 86/4/3 37/1/3
f 87/5/4 73/6/4 61/7/4
f 49/4/5 63/3/5 14/2/5
f 1/1/6 4/8/7 6/9/8
f 8/10/9 9/11/9 6/9/10
f 2/1/11 7/12/12 9/9/13
f 7/13/14 11/14/14 12/15/14
f 3/4/15 10/16/16 12/15/15
f 5/17/17 6/18/17 12/15/17
f 6/18/18 9/19/18 12/15/18
f 13/1/19 16/8/20 18/9/19
f 20/10/21 21/11/21 18/9/21
f 14/2/22 19/20/23 21/21/24
f 23/8/25 24/9/25 21/11/26
f 15/1/27 22/12/28 24/9/29
f 22/22/30 17/12/30 18/9/30
f 18/9/31 21/11/31 24/23/31
f 25/2/32 28/24/33 30/21/32
f 32/25/34 33/26/34 30/21/34
f 26/2/35 31/20/36 33/21/37
f 35/27/38 36/28/39 33/21/38
f 27/2/40 34/24/41 36/21/42
f 34/27/43 29/20/43 30/21/43
f 30/21/44 33/26/44 36/28/44
f 37/1/45 40/8/46 42/9/47
f 44/20/48 45/21/48 42/28/49
f 38/2/50 43/24/51 45/21/52
f 47/29/53 48/30/53 45/31/53
f 39/3/54 46/32/55 48/30/54
f 41/33/56 42/34/56 48/30/56
f 42/34/57 45/31/57 48/30/57
f 49/4/58 52/14/59 54/15/60
f 56/14/61 57/15/61 54/19/62
f 50/4/63 55/16/64 57/15/65
f 59/16/66 60/15/66 57/18/66
f 51/4/67 58/14/68 60/15/67
f 53/13/69 54/19/69 60/15/69
f 54/19/70 57/18/70 60/15/70
f 61/1/71 64/12/72 66/9/71
f 64/12/73 68/22/73 69/23/73
f 62/4/74 67/14/75 69/15/76
f 71/13/77 72/19/78 69/15/77
f 63/3/79 70/29/80 72/30/81
f 65/8/82 66/9/82 72/11/82
f 66/9/83 69/23/83 72/11/83
f 73/2/84 76/20/85 78/21/84
f 76/20/86 80/27/86 81/28/86
f 74/3/87 79/32/88 81/30/89
f 83/32/90 84/30/90 81/34/91
f 75/3/92 82/29/93 84/30/94
f 82/25/95 77/24/95 78/21/95
f 78/21/96 81/28/96 84/26/96
f 85/3/97 88/32/98 90/30/99
f 88/32/100 92/33/101 93/34/101
f 86/4/102 91/16/103 93/15/104
f 91/33/105 95/32/105 96/30/105
f 87/3/106 94/29/107 96/30/106
f 89/35/108 90/31/108 96/30/108
f 90/31/109 93/34/109 96/30/109
f 2/1/110 14/2/110 20/24/110
f 20/10/111 16/8/111 11/14/111
f 16/8/112 13/1/112 3/4/112
f 3/4/113 39/3/113 47/29/113
f 47/29/114 43/35/114 5/17/114
f 43/24/115 38/2/115 1/1/115
f 50/4/116 56/14/117 4/8/116
f 56/14/118 52/13/118 8/10/118
f 8/8/119 52/14/119 49/4/119
f 26/2/120 32/24/120 22/12/120
f 32/25/121 28/24/121 17/12/121
f 28/24/122 25/2/122 13/1/122
f 63/3/123 71/32/123 19/20/123
f 71/13/124 67/14/124 23/8/124
f 67/14/125 62/4/125 15/1/125
f 37/1/126 41/12/126 34/24/126
f 41/33/127 46/32/127 29/20/127
f 46/32/128 39/3/128 25/2/128
f 75/3/129 83/32/129 31/20/129
f 83/32/130 79/33/130 35/27/130
f 79/32/131 74/3/131 27/2/132
f 86/4/133 92/14/133 40/8/133
f 92/33/134 88/32/134 44/20/134
f 88/32/135 85/3/135 38/2/135
f 51/4/136 61/1/136 65/8/136
f 65/8/137 70/10/137 53/13/137
f 70/29/138 63/3/138 49/4/138
f 85/3/139 89/29/139 55/16/139
f 89/35/140 94/29/140 59/16/140
f 59/16/141 94/29/141 87/3/141
f 73/2/142 77/24/142 64/12/142
f 77/24/143 82/25/143 68/22/143
f 68/16/144 82/29/144 75/3/144
f 87/3/145 95/32/145 76/20/145
f 76/20/146 95/32/146 91/33/146
f 80/29/147 91/16/147 86/4/147
f 13/36/148 25/37/148 39/38/148
f 50/4/1 1/1/1 85/3/1
f 15/1/2 62/4/2 26/2/2
f 27/2/3 74/3/3 37/1/3
f 51/39/4 87/5/4 61/7/4
f 2/1/5 49/4/5 14/2/5
f 5/12/149 1/1/6 6/9/8
f 4/8/10 8/10/9 6/9/10
f 8/8/150 2/1/11 9/9/13
f 9/19/14 7/13/14 12/15/14
f 11/14/151 3/4/15 12/15/15
f 10/16/17 5/17/17 12/15/17
f 17/12/152 13/1/19 18/9/19
f 16/8/21 20/10/21 18/9/21
f 20/24/153 14/2/22 21/21/24
f 19/10/26 23/8/25 21/11/26
f 23/8/154 15/1/27 24/9/29
f 24/23/30 22/22/30 18/9/30
f 29/20/155 25/2/32 30/21/32
f 28/24/34 32/25/34 30/21/34
f 32/24/156 26/2/35 33/21/37
f 31/20/38 35/27/38 33/21/38
f 35/20/157 27/2/40 36/21/42
f 36/28/43 34/27/43 30/21/43
f 41/12/158 37/1/45 42/9/47
f 40/27/49 44/20/48 42/28/49
f 44/20/159 38/2/50 45/21/52
f 43/35/53 47/29/53 45/31/53
f 47/29/160 39/3/54 48/30/54
f 46/32/56 41/33/56 48/30/56
f 53/16/161 49/4/58 54/15/60
f 52/13/62 56/14/61 54/19/62
f 56/14/162 50/4/63 57/15/65
f 55/17/66 59/16/66 57/18/66
f 59/16/163 51/4/67 60/15/67
f 58/14/69 53/13/69 60/15/69
f 65/8/164 61/1/71 66/9/71
f 66/9/73 64/12/73 69/23/73
f 68/16/165 62/4/74 69/15/76
f 67/14/77 71/13/77 69/15/77
f 71/32/166 63/3/79 72/30/81
f 70/10/82 65/8/82 72/11/82
f 77/24/167 73/2/84 78/21/84
f 78/21/86 76/20/86 81/28/86
f 80/29/168 74/3/87 81/30/89
f 79/33/91 83/32/90 81/34/91
f 83/32/169 75/3/92 84/30/94
f 84/26/95 82/25/95 78/21/95
f 89/29/170 85/3/97 90/30/99
f 90/30/100 88/32/100 93/34/101
f 92/14/171 86/4/102 93/15/104
f 93/34/105 91/33/105 96/30/105
f 95/32/172 87/3/106 96/30/106
f 94/29/108 89/35/108 96/30/108
f 7/12/110 2/1/110 20/24/110
f 7/13/111 20/10/111 11/14/111
f 11/14/112 16/8/112 3/4/112
f 10/16/113 3/4/113 47/29/113
f 10/16/114 47/29/114 5/17/114
f 5/12/115 43/24/115 1/1/115
f 1/1/116 50/4/116 4/8/116
f 4/8/118 56/14/118 8/10/118
f 2/1/119 8/8/119 49/4/119
f 15/1/120 26/2/120 22/12/120
f 22/22/121 32/25/121 17/12/121
f 17/12/122 28/24/122 13/1/122
f 14/2/123 63/3/123 19/20/123
f 19/10/124 71/13/124 23/8/124
f 23/8/125 67/14/125 15/1/125
f 27/2/126 37/1/126 34/24/126
f 34/27/127 41/33/127 29/20/127
f 29/20/128 46/32/128 25/2/128
f 26/2/129 75/3/129 31/20/129
f 31/20/130 83/32/130 35/27/130
f 35/20/132 79/32/131 27/2/132
f 37/1/133 86/4/133 40/8/133
f 40/27/134 92/33/134 44/20/134
f 44/20/135 88/32/135 38/2/135
f 58/14/136 51/4/136 65/8/136
f 58/14/137 65/8/137 53/13/137
f 53/16/138 70/29/138 49/4/138
f 50/4/139 85/3/139 55/16/139
f 55/17/140 89/35/140 59/16/140
f 51/4/141 59/16/141 87/3/141
f 61/1/142 73/2/142 64/12/142
f 64/12/143 77/24/143 68/22/143
f 62/4/144 68/16/144 75/3/144
f 73/2/145 87/3/145 76/20/145
f 80/27/146 76/20/146 91/33/146
f 74/3/147 80/29/147 86/4/147
f 3/40/148 13/36/148 39/38/148

View File

@ -1,101 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: 'switch_outer.blend'
# www.blender.org
o switch_Cube
v 1.270169 -1.270169 -1.270169
v 1.270169 -1.270169 1.270169
v -1.270169 -1.270169 1.270169
v -1.270169 -1.270169 -1.270170
v 1.270170 1.270169 -1.270169
v 1.270168 1.270169 1.270170
v -1.270170 1.270169 1.270169
v -1.270169 1.270169 -1.270169
v 0.985712 1.270169 -0.998137
v 0.985712 1.270169 0.965003
v -0.940154 1.270169 0.973287
v -0.940154 1.270170 -0.998137
v 0.985712 -1.271890 -0.998137
v 0.985712 -1.271890 0.965003
v -0.940154 -1.271890 0.973287
v -0.940154 -1.271890 -0.998137
vt 0.222140 0.317533
vt 0.462062 0.319398
vt 0.461836 0.797664
vt 0.462418 0.315542
vt 0.462155 0.799279
vt 0.219977 0.799745
vt 0.460057 0.322033
vt 0.461974 0.799281
vt 0.219129 0.799420
vt 0.459506 0.796589
vt 0.220124 0.795724
vt 0.220890 0.315480
vt 0.461760 0.316819
vt 0.221860 0.319521
vt 0.222636 0.798557
vt 0.809558 0.810889
vt 0.781381 0.753963
vt 0.782865 0.344970
vt 0.553708 0.808618
vt 0.553628 0.279374
vt 0.588332 0.341517
vt 0.784396 1.000000
vt 0.784396 0.666591
vt 1.000000 0.666591
vt 0.002859 0.664645
vt 0.223564 0.664868
vt 0.223426 0.998277
vt 1.000026 0.663788
vt 1.000026 0.996547
vt 0.785161 0.996547
vt 0.220172 0.660110
vt 0.220172 0.993518
vt 0.000395 0.993518
vt 0.221915 0.795798
vt 0.220240 0.316007
vt 0.219212 0.322172
vt 0.460271 0.316344
vt 0.462536 0.795855
vt 0.590712 0.341538
vt 0.556008 0.279395
vt 0.809478 0.281644
vt 0.588842 0.752236
vt 0.779002 0.753942
vt 0.807179 0.810867
vt 0.002722 0.998054
vt 1.000000 1.000000
vt 0.785161 0.663789
vt 0.000395 0.660110
vn 0.000000 -1.000000 0.000000
vn 1.000000 -0.000000 0.000000
vn -0.000000 -0.000000 1.000000
vn -1.000000 -0.000000 -0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 1.000000 0.000000
vn -0.004300 0.000000 -1.000000
s off
f 2/1/1 3/2/1 4/3/1
f 1/4/2 5/5/2 6/6/2
f 2/7/3 6/8/3 7/9/3
f 7/10/4 8/11/4 4/12/4
f 1/13/5 4/14/5 8/15/5
f 5/16/6 9/17/6 10/18/6
f 8/19/6 7/20/6 11/21/6
f 12/22/3 16/23/3 13/24/3
f 12/25/2 11/26/2 15/27/2
f 10/28/7 14/29/7 15/30/7
f 9/31/4 13/32/4 14/33/4
f 1/34/1 2/1/1 4/3/1
f 2/35/2 1/4/2 6/6/2
f 3/36/3 2/7/3 7/9/3
f 3/37/4 7/10/4 4/12/4
f 5/38/5 1/13/5 8/15/5
f 11/39/6 7/40/6 6/41/6
f 12/42/6 9/43/6 5/44/6
f 10/18/6 11/39/6 6/41/6
f 6/41/6 5/16/6 10/18/6
f 12/42/6 8/19/6 11/21/6
f 12/42/6 5/44/6 8/19/6
f 16/45/2 12/25/2 15/27/2
f 9/46/3 12/22/3 13/24/3
f 11/47/7 10/28/7 15/30/7
f 10/48/4 9/31/4 14/33/4

View File

@ -1,641 +0,0 @@
# Blender v2.72 (sub 0) OBJ File: 'torch.blend'
# www.blender.org
v 0.000000 0.011815 -0.121572
v 0.023715 0.011815 -0.119227
v 0.046524 0.011815 -0.112303
v 0.067552 0.011815 -0.101069
v 0.085979 0.011815 -0.085979
v 0.101069 0.011815 -0.067552
v 0.112303 0.011815 -0.046523
v 0.119227 0.011815 -0.023714
v 0.121572 0.011815 -0.000000
v 0.119227 0.011815 0.023714
v 0.112303 0.011815 0.046523
v 0.101069 0.011815 0.067552
v 0.085979 0.011815 0.085979
v 0.067552 0.011815 0.101069
v 0.046523 0.011815 0.112303
v 0.023714 0.011815 0.119227
v -0.000000 0.011815 0.121572
v -0.023715 0.011815 0.119227
v -0.046524 0.011815 0.112303
v -0.067553 0.011815 0.101069
v -0.085980 0.011815 0.085979
v -0.101070 0.011815 0.067552
v -0.112303 0.011815 0.046523
v -0.119227 0.011815 0.023714
v -0.121572 0.011815 -0.000001
v -0.119227 0.011815 -0.023715
v -0.112303 0.011815 -0.046524
v -0.101069 0.011815 -0.067553
v -0.085979 0.011815 -0.085949
v -0.067551 0.011815 -0.101070
v -0.046522 0.011815 -0.112303
v -0.023713 0.011815 -0.119227
v -0.000000 1.675680 -0.221477
v 0.043188 1.675682 -0.217223
v 0.084756 1.675683 -0.204614
v 0.123084 1.675682 -0.184124
v 0.156611 1.675677 -0.156611
v 0.184124 1.675682 -0.123084
v 0.204614 1.675683 -0.084756
v 0.217223 1.675682 -0.043188
v 0.221477 1.675681 -0.000000
v 0.217223 1.675682 0.043188
v 0.204615 1.675683 0.084756
v 0.184124 1.675682 0.123084
v 0.156611 1.675677 0.156611
v 0.123084 1.675682 0.184124
v 0.084756 1.675683 0.204614
v 0.043188 1.675682 0.217223
v -0.000000 1.675681 0.221477
v -0.043188 1.675682 0.217223
v -0.084756 1.675683 0.204614
v -0.123084 1.675682 0.184123
v -0.156611 1.675677 0.156611
v -0.184123 1.675682 0.123084
v -0.204614 1.675683 0.084756
v -0.217223 1.675682 0.043188
v -0.221477 1.675681 0.000000
v -0.217223 1.675682 -0.043188
v -0.204614 1.675683 -0.084756
v -0.184140 1.675681 -0.123061
v -0.156605 1.675681 -0.156610
v -0.123056 1.675681 -0.184143
v -0.084756 1.675683 -0.204614
v -0.043188 1.675682 -0.217223
v -0.000000 1.947950 -0.335566
v -0.000000 1.981150 -0.313345
v 0.065442 1.947954 -0.329120
v 0.061108 1.981122 -0.307326
v 0.128419 1.947953 -0.310019
v 0.119914 1.981152 -0.289490
v 0.186472 1.947957 -0.278979
v 0.174126 1.981085 -0.260503
v 0.237285 1.947943 -0.237285
v 0.221572 1.981204 -0.221572
v 0.278979 1.947957 -0.186472
v 0.260503 1.981086 -0.174126
v 0.310019 1.947953 -0.128419
v 0.289490 1.981151 -0.119914
v 0.329120 1.947954 -0.065442
v 0.307326 1.981122 -0.061107
v 0.335566 1.947950 0.000000
v 0.313345 1.981150 0.000000
v 0.329120 1.947954 0.065442
v 0.307326 1.981122 0.061107
v 0.310020 1.947952 0.128419
v 0.289491 1.981152 0.119914
v 0.278979 1.947957 0.186472
v 0.260503 1.981085 0.174126
v 0.237285 1.947943 0.237285
v 0.221572 1.981204 0.221572
v 0.186472 1.947957 0.278979
v 0.174126 1.981086 0.260503
v 0.128419 1.947953 0.310020
v 0.119914 1.981151 0.289490
v 0.065442 1.947954 0.329120
v 0.061108 1.981122 0.307326
v 0.000000 1.947950 0.335566
v 0.000000 1.981150 0.313345
v -0.065442 1.947954 0.329120
v -0.061107 1.981123 0.307326
v -0.128419 1.947953 0.310020
v -0.119914 1.981151 0.289490
v -0.186472 1.947957 0.278979
v -0.174126 1.981086 0.260503
v -0.237285 1.947943 0.237285
v -0.221572 1.981203 0.221572
v -0.278979 1.947957 0.186472
v -0.260503 1.981086 0.174126
v -0.310019 1.947953 0.128420
v -0.289490 1.981151 0.119915
v -0.329120 1.947954 0.065443
v -0.307326 1.981123 0.061108
v -0.335566 1.947951 0.000000
v -0.313345 1.981149 0.000000
v -0.329120 1.947954 -0.065442
v -0.307326 1.981127 -0.061107
v -0.310020 1.947954 -0.128415
v -0.289490 1.981131 -0.119911
v -0.279000 1.947952 -0.186447
v -0.260524 1.981136 -0.174101
v -0.237275 1.947951 -0.237286
v -0.221562 1.981138 -0.221573
v -0.186439 1.947953 -0.279005
v -0.174094 1.981137 -0.260529
v -0.128415 1.947954 -0.310020
v -0.119911 1.981128 -0.289490
v -0.065442 1.947953 -0.329120
v -0.061107 1.981129 -0.307326
v 0.000000 1.926806 -0.174476
v 0.034026 1.926790 -0.171123
v 0.066770 1.926806 -0.161192
v 0.096955 1.926769 -0.145050
v 0.123377 1.926835 -0.123377
v 0.145051 1.926770 -0.096955
v 0.161192 1.926806 -0.066770
v 0.171123 1.926790 -0.034025
v 0.174476 1.926805 0.000000
v 0.171123 1.926790 0.034025
v 0.161193 1.926807 0.066770
v 0.145050 1.926769 0.096955
v 0.123377 1.926835 0.123377
v 0.096955 1.926770 0.145050
v 0.066770 1.926806 0.161192
v 0.034026 1.926790 0.171123
v 0.000000 1.926805 0.174476
v -0.034025 1.926790 0.171123
v -0.066770 1.926806 0.161193
v -0.096955 1.926770 0.145051
v -0.123377 1.926835 0.123377
v -0.145050 1.926770 0.096955
v -0.161192 1.926806 0.066770
v -0.171123 1.926790 0.034026
v -0.174475 1.926805 0.000000
v -0.171123 1.926793 -0.034025
v -0.161192 1.926795 -0.066768
v -0.145064 1.926797 -0.096942
v -0.123369 1.926799 -0.123375
v -0.096938 1.926798 -0.145066
v -0.066768 1.926793 -0.161192
v -0.034025 1.926794 -0.171123
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vn 0.000000 -0.228700 -0.973500
vn -0.189900 -0.228700 -0.954800
vn 0.000000 0.093700 -0.995600
vn 0.540800 -0.228700 -0.809400
vn 0.372500 -0.228700 -0.899300
vn 0.553100 0.094200 -0.827800
vn 0.688300 -0.228700 -0.688300
vn 0.704000 0.093500 -0.704000
vn 0.827800 0.094100 -0.553100
vn 0.809400 -0.228700 -0.540800
vn 0.919800 0.093800 -0.381100
vn 0.899300 -0.228700 -0.372500
vn 0.954800 -0.228700 -0.189900
vn 0.976400 0.093800 -0.194200
vn 0.973500 -0.228700 0.000000
vn 0.995600 0.093700 0.000000
vn 0.976400 0.093800 0.194200
vn 0.954800 -0.228700 0.189900
vn 0.919800 0.093800 0.381100
vn 0.899300 -0.228700 0.372500
vn 0.809400 -0.228700 0.540800
vn 0.827800 0.094100 0.553100
vn 0.688300 -0.228700 0.688300
vn 0.704000 0.093500 0.704000
vn 0.553100 0.094100 0.827800
vn 0.540800 -0.228700 0.809400
vn 0.381100 0.093800 0.919800
vn 0.372500 -0.228700 0.899300
vn 0.189900 -0.228700 0.954800
vn 0.194200 0.093800 0.976400
vn 0.000000 -0.228700 0.973500
vn 0.000000 0.093700 0.995600
vn -0.194200 0.093800 0.976400
vn -0.189900 -0.228700 0.954800
vn -0.381100 0.093800 0.919800
vn -0.372500 -0.228700 0.899300
vn -0.540800 -0.228700 0.809400
vn -0.553100 0.094100 0.827800
vn -0.688300 -0.228700 0.688300
vn -0.704000 0.093500 0.704000
vn -0.827800 0.094100 0.553100
vn -0.809400 -0.228700 0.540800
vn -0.919800 0.093800 0.381100
vn -0.899300 -0.228700 0.372500
vn -0.954800 -0.228700 0.189900
vn -0.976400 0.093800 0.194200
vn -0.973500 -0.228700 0.000000
vn -0.995600 0.093700 0.000000
vn -0.976400 0.093800 -0.194200
vn -0.954800 -0.228700 -0.189900
vn -0.919800 0.093800 -0.381000
vn -0.899400 -0.228700 -0.372500
vn -0.809400 -0.228700 -0.540800
vn -0.827800 0.093800 -0.553100
vn -0.688300 -0.228700 -0.688300
vn -0.704000 0.093700 -0.704000
vn -0.553100 0.093800 -0.827800
vn -0.540800 -0.228700 -0.809400
vn -0.381000 0.093800 -0.919800
vn -0.372500 -0.228700 -0.899400
vn -0.194200 0.093800 -0.976400
vn 0.381100 0.093800 -0.919800
vn 0.194200 0.093800 -0.976400
vn 0.193200 0.980400 -0.038400
vn -0.327600 0.942500 0.065100
vn 0.185000 0.979700 -0.076300
vn 0.270500 -0.707200 -0.653200
vn 0.653200 -0.707200 -0.270500
vn 0.653200 -0.707200 0.270500
vn 0.000000 -0.707100 -0.707100
vn 0.189900 -0.228700 -0.954800
vn 0.392300 -0.707300 -0.588000
vn 0.500100 -0.707000 -0.500100
vn 0.588000 -0.707300 -0.392300
vn 0.693400 -0.707200 -0.138100
vn 0.707100 -0.707100 0.000000
vn 0.693400 -0.707200 0.138100
vn 0.588000 -0.707300 0.392300
vn 0.500100 -0.707000 0.500100
vn 0.392300 -0.707300 0.588000
vn 0.270500 -0.707200 0.653200
vn 0.138100 -0.707200 0.693400
vn 0.000000 -0.707100 0.707100
vn -0.270500 -0.707200 0.653200
vn -0.392300 -0.707300 0.588000
vn -0.500100 -0.707000 0.500100
vn -0.588000 -0.707300 0.392300
vn -0.653200 -0.707200 0.270500
vn -0.693400 -0.707200 0.138100
vn -0.707100 -0.707100 0.000000
vn -0.653200 -0.707200 -0.270500
vn -0.587900 -0.707200 -0.392700
vn -0.392700 -0.707200 -0.587900
vn -0.270500 -0.707200 -0.653200
vn -0.138100 -0.707200 -0.693400
vn 0.000000 0.942500 -0.334100
vn 0.065100 0.942500 -0.327600
vn 0.128100 0.942500 -0.308500
vn 0.185400 0.942500 -0.277900
vn 0.236300 0.942500 -0.236300
vn 0.277900 0.942500 -0.185400
vn 0.308500 0.942500 -0.128100
vn 0.327600 0.942500 -0.065100
vn 0.334000 0.942500 0.000000
vn 0.327600 0.942500 0.065100
vn 0.308500 0.942500 0.128100
vn 0.277900 0.942500 0.185400
vn 0.236300 0.942500 0.236300
vn 0.185400 0.942500 0.277900
vn 0.128100 0.942500 0.308500
vn 0.065100 0.942500 0.327600
vn 0.000000 0.942500 0.334000
vn -0.065100 0.942500 0.327600
vn -0.128100 0.942500 0.308500
vn -0.185400 0.942500 0.277900
vn -0.236300 0.942500 0.236300
vn -0.277900 0.942500 0.185400
vn -0.308500 0.942500 0.128100
vn -0.334000 0.942500 0.000000
vn -0.327600 0.942600 -0.065200
vn -0.308600 0.942600 -0.127800
vn -0.277700 0.942600 -0.185500
vn -0.236200 0.942500 -0.236200
vn -0.185500 0.942600 -0.277700
vn -0.127800 0.942600 -0.308600
vn -0.065200 0.942600 -0.327600
vn -0.109500 0.980400 0.163500
vn 0.109500 0.980400 -0.163500
vn -0.163500 0.980400 -0.109500
vn -0.038300 0.980400 0.193200
vn 0.000000 0.980100 0.198500
vn -0.145500 0.978600 -0.145500
vn 0.192900 0.980400 0.038300
vn 0.181600 0.980500 0.075300
vn -0.145500 0.978600 0.145500
vn -0.038400 0.980400 -0.193200
vn -0.076300 0.979700 -0.185000
vn 0.109400 0.980400 0.163600
vn 0.139000 0.980500 0.139000
vn 0.038400 0.980400 -0.193200
vn 0.076300 0.979700 -0.185000
vn -0.193200 0.980400 0.038400
vn -0.185000 0.979700 0.076300
vn 0.163500 0.980400 -0.109500
vn 0.145400 0.978600 -0.145400
vn -0.193200 0.980400 -0.038400
vn -0.185200 0.979700 -0.076400
vn 0.198400 0.980100 0.000000
vn -0.076400 0.979700 0.185200
vn -0.109500 0.980400 -0.163500
vn 0.163500 0.980400 0.109300
vn -0.163600 0.980400 0.109500
vn 0.000000 0.980000 -0.198700
vn 0.075300 0.980500 0.181600
vn -0.198700 0.980000 0.000000
vn 0.038300 0.980400 0.193000
vn -0.500000 -0.707100 -0.499900
vn -0.693400 -0.707200 -0.138100
vn -0.138100 -0.707200 0.693400
vn 0.138100 -0.707200 -0.693400
f 33/1/1 64/2/2 65/3/3
f 36/1/4 35/2/5 71/3/6
f 37/1/7 36/2/4 73/3/8
f 75/1/9 38/2/10 73/3/8
f 77/1/11 39/2/12 75/3/9
f 40/1/13 39/2/12 79/3/14
f 41/1/15 40/2/13 81/3/16
f 83/1/17 42/2/18 81/3/16
f 85/1/19 43/2/20 83/3/17
f 44/1/21 43/2/20 87/3/22
f 45/1/23 44/2/21 89/3/24
f 91/1/25 46/2/26 89/3/24
f 93/1/27 47/2/28 91/3/25
f 48/1/29 47/2/28 95/3/30
f 49/1/31 48/2/29 97/3/32
f 99/1/33 50/2/34 97/3/32
f 101/1/35 51/2/36 99/3/33
f 52/1/37 51/2/36 103/3/38
f 53/1/39 52/2/37 105/3/40
f 107/1/41 54/2/42 105/3/40
f 109/1/43 55/2/44 107/3/41
f 56/1/45 55/2/44 111/3/46
f 57/1/47 56/2/45 113/3/48
f 115/1/49 58/2/50 113/3/48
f 117/1/51 59/2/52 115/3/49
f 60/1/53 59/2/52 119/3/54
f 61/1/55 60/2/53 121/3/56
f 123/1/57 62/2/58 121/3/56
f 125/1/59 63/2/60 123/3/57
f 64/1/2 63/2/60 127/3/61
f 69/1/62 35/2/5 67/3/63
f 152/1/64 112/2/65 151/3/66
f 3/1/67 7/2/68 11/3/69
f 1/1/70 33/2/1 34/3/71
f 34/1/71 35/2/5 3/3/67
f 36/1/4 4/2/72 35/3/5
f 5/1/73 4/2/72 37/3/7
f 38/1/10 6/2/74 37/3/7
f 7/1/68 6/2/74 39/3/12
f 39/1/12 40/2/13 8/3/75
f 40/1/13 41/2/15 9/3/76
f 41/1/15 42/2/18 10/3/77
f 42/1/18 43/2/20 11/3/69
f 44/1/21 12/2/78 43/3/20
f 13/1/79 12/2/78 45/3/23
f 46/1/26 14/2/80 45/3/23
f 46/1/26 47/2/28 15/3/81
f 47/1/28 48/2/29 16/3/82
f 48/1/29 49/2/31 17/3/83
f 17/1/83 49/2/31 50/3/34
f 50/1/34 51/2/36 19/3/84
f 52/1/37 20/2/85 51/3/36
f 21/1/86 20/2/85 53/3/39
f 54/1/42 22/2/87 53/3/39
f 23/1/88 22/2/87 55/3/44
f 55/1/44 56/2/45 24/3/89
f 56/1/45 57/2/47 25/3/90
f 25/1/90 57/2/47 58/3/50
f 58/1/50 59/2/52 27/3/91
f 28/1/92 27/2/91 60/3/53
f 28/1/92 60/2/53 61/3/55
f 62/1/58 30/2/93 61/3/55
f 63/1/60 31/2/94 62/3/58
f 64/1/2 33/2/1 1/3/70
f 63/1/60 64/2/2 32/3/95
f 66/1/96 68/2/97 65/3/3
f 70/1/98 69/2/62 68/3/97
f 70/1/98 72/2/99 69/3/62
f 74/1/100 73/2/8 72/3/99
f 74/1/100 76/2/101 73/3/8
f 78/1/102 77/2/11 76/3/101
f 78/1/102 80/2/103 77/3/11
f 82/1/104 81/2/16 80/3/103
f 82/1/104 84/2/105 81/3/16
f 86/1/106 85/2/19 84/3/105
f 86/1/106 88/2/107 85/3/19
f 90/1/108 89/2/24 88/3/107
f 90/1/108 92/2/109 89/3/24
f 94/1/110 93/2/27 92/3/109
f 94/1/110 96/2/111 93/3/27
f 98/1/112 97/2/32 96/3/111
f 98/1/112 100/2/113 97/3/32
f 102/1/114 101/2/35 100/3/113
f 102/1/114 104/2/115 101/3/35
f 106/1/116 105/2/40 104/3/115
f 106/1/116 108/2/117 105/3/40
f 110/1/118 109/2/43 108/3/117
f 110/1/118 112/2/65 109/3/43
f 114/1/119 113/2/48 112/3/65
f 114/1/119 116/2/120 113/3/48
f 118/1/121 117/2/51 116/3/120
f 120/1/122 119/2/54 118/3/121
f 122/1/123 121/2/56 120/3/122
f 121/1/56 122/2/123 124/3/124
f 124/1/124 126/2/125 123/3/57
f 128/1/126 127/2/61 126/3/125
f 66/1/96 65/2/3 128/3/126
f 67/1/63 34/2/71 65/3/3
f 132/1/127 148/2/128 140/3/129
f 130/1/130 68/2/97 129/3/131
f 140/1/129 141/2/132 88/3/107
f 154/1/133 155/2/134 116/3/120
f 132/1/127 133/2/135 72/3/99
f 144/1/136 96/2/111 143/3/137
f 158/1/138 124/2/124 157/3/139
f 146/1/140 147/2/141 100/3/113
f 136/1/142 80/2/103 135/3/143
f 150/1/144 108/2/117 149/3/145
f 138/1/146 139/2/147 84/3/105
f 152/1/64 153/2/148 112/3/65
f 130/1/130 131/2/149 68/3/97
f 142/1/150 92/2/109 141/3/132
f 155/1/134 156/2/151 118/3/121
f 134/1/152 76/2/101 133/3/135
f 144/1/136 145/2/153 96/3/111
f 159/1/154 126/2/125 158/3/138
f 148/1/128 104/2/115 147/3/141
f 136/1/142 137/2/155 80/3/103
f 150/1/144 151/2/66 108/3/117
f 140/1/129 88/2/107 139/3/147
f 154/1/133 116/2/120 153/3/148
f 132/1/127 72/2/99 131/3/149
f 142/1/150 143/2/137 92/3/109
f 160/1/156 129/2/131 128/3/126
f 156/1/151 157/2/139 120/3/122
f 146/1/140 100/2/113 145/3/153
f 134/1/152 135/2/143 76/3/101
f 159/1/154 160/2/156 126/3/125
f 148/1/128 149/2/145 104/3/115
f 138/1/146 84/2/105 137/3/155
f 48/1/29 95/2/30 97/3/32
f 12/1/78 44/2/21 45/3/23
f 38/1/10 37/2/7 73/3/8
f 44/1/21 87/2/22 89/3/24
f 47/1/28 46/2/26 91/3/25
f 51/1/36 101/2/35 103/3/38
f 121/1/56 119/2/54 120/3/122
f 64/1/2 127/2/61 65/3/3
f 55/1/44 109/2/43 111/3/46
f 27/1/91 31/2/94 3/3/67
f 54/1/42 53/2/39 105/3/40
f 52/1/37 103/2/38 105/3/40
f 4/1/72 36/2/4 37/3/7
f 39/1/12 77/2/11 79/3/14
f 50/1/34 49/2/31 97/3/32
f 40/1/13 79/2/14 81/3/16
f 35/1/5 34/2/71 67/3/63
f 55/1/44 54/2/42 107/3/41
f 126/1/125 124/2/124 158/3/138
f 46/1/26 45/2/23 89/3/24
f 39/1/12 38/2/10 75/3/9
f 47/1/28 93/2/27 95/3/30
f 58/1/50 57/2/47 113/3/48
f 63/1/60 62/2/58 123/3/57
f 51/1/36 50/2/34 99/3/33
f 124/1/124 122/2/123 157/3/139
f 59/1/52 58/2/50 115/3/49
f 63/1/60 125/2/59 127/3/61
f 59/1/52 117/2/51 119/3/54
f 117/1/51 115/2/49 116/3/120
f 43/1/20 42/2/18 83/3/17
f 80/1/103 79/2/14 77/3/11
f 19/1/84 15/2/81 16/3/82
f 31/1/94 27/2/91 30/3/93
f 29/1/157 30/2/93 28/3/92
f 27/1/91 24/2/89 26/3/158
f 11/1/69 7/2/68 8/3/75
f 23/1/88 19/2/84 22/3/87
f 21/1/86 22/2/87 20/3/85
f 19/1/84 16/2/82 18/3/159
f 27/1/91 23/2/88 24/3/89
f 15/1/81 11/2/69 14/3/80
f 13/1/79 14/2/80 12/3/78
f 11/1/69 8/2/75 10/3/77
f 27/1/91 3/2/67 19/3/84
f 7/1/68 4/2/72 6/3/74
f 27/1/91 19/2/84 23/3/88
f 3/1/67 32/2/95 2/3/160
f 32/1/95 1/2/70 2/3/160
f 15/1/81 19/2/84 11/3/69
f 24/1/89 25/2/90 26/3/158
f 27/1/91 59/2/52 60/3/53
f 16/1/82 17/2/83 18/3/159
f 7/1/68 3/2/67 4/3/72
f 8/1/75 9/2/76 10/3/77
f 4/1/72 5/2/73 6/3/74
f 3/1/67 11/2/69 19/3/84
f 22/1/87 19/2/84 20/3/85
f 14/1/80 11/2/69 12/3/78
f 2/1/160 34/2/71 3/3/67
f 2/1/160 1/2/70 34/3/71
f 30/1/93 27/2/91 28/3/92
f 3/1/67 31/2/94 32/3/95
f 31/1/94 30/2/93 62/3/58
f 6/1/74 5/2/73 37/3/7
f 20/1/85 52/2/37 53/3/39
f 4/1/72 3/2/67 35/3/5
f 7/1/68 39/2/12 8/3/75
f 8/1/75 40/2/13 9/3/76
f 9/1/76 41/2/15 10/3/77
f 10/1/77 42/2/18 11/3/69
f 30/1/93 29/2/157 61/3/55
f 43/1/20 85/2/19 87/3/22
f 35/1/5 69/2/62 71/3/6
f 14/1/80 46/2/26 15/3/81
f 15/1/81 47/2/28 16/3/82
f 16/1/82 48/2/29 17/3/83
f 18/1/159 17/2/83 50/3/34
f 18/1/159 50/2/34 19/3/84
f 22/1/87 21/2/86 53/3/39
f 14/1/80 13/2/79 45/3/23
f 20/1/85 19/2/84 51/3/36
f 23/1/88 55/2/44 24/3/89
f 24/1/89 56/2/45 25/3/90
f 26/1/158 25/2/90 58/3/50
f 26/1/158 58/2/50 27/3/91
f 6/1/74 38/2/10 39/3/12
f 29/1/157 28/2/92 61/3/55
f 22/1/87 54/2/42 55/3/44
f 12/1/78 11/2/69 43/3/20
f 32/1/95 64/2/2 1/3/70
f 31/1/94 63/2/60 32/3/95
f 153/1/148 114/2/119 112/3/65
f 96/1/111 94/2/110 143/3/137
f 93/1/27 91/2/25 92/3/109
f 89/1/24 87/2/22 88/3/107
f 105/1/40 103/2/38 104/3/115
f 104/1/115 103/2/38 101/3/35
f 101/1/35 99/2/33 100/3/113
f 100/1/113 99/2/33 97/3/32
f 81/1/16 79/2/14 80/3/103
f 97/1/32 95/2/30 96/3/111
f 72/1/99 71/2/6 69/3/62
f 92/1/109 91/2/25 89/3/24
f 76/1/101 75/2/9 73/3/8
f 109/1/43 107/2/41 108/3/117
f 112/1/65 111/2/46 109/3/43
f 147/1/141 102/2/114 100/3/113
f 85/1/19 83/2/17 84/3/105
f 96/1/111 95/2/30 93/3/27
f 68/1/97 66/2/96 129/3/131
f 108/1/117 107/2/41 105/3/40
f 88/1/107 86/2/106 139/3/147
f 77/1/11 75/2/9 76/3/101
f 129/1/131 66/2/96 128/3/126
f 80/1/103 78/2/102 135/3/143
f 36/1/4 71/2/6 73/3/8
f 127/1/61 125/2/59 126/3/125
f 34/1/71 33/2/1 65/3/3
f 56/1/45 111/2/46 113/3/48
f 123/1/57 121/2/56 124/3/124
f 156/1/151 120/2/122 118/3/121
f 60/1/53 119/2/54 121/3/56
f 116/1/120 115/2/49 113/3/48
f 157/1/139 122/2/123 120/3/122
f 132/1/127 131/2/149 130/3/130
f 134/1/152 133/2/135 132/3/127
f 136/1/142 135/2/143 134/3/152
f 138/1/146 137/2/155 136/3/142
f 140/1/129 139/2/147 138/3/146
f 142/1/150 141/2/132 140/3/129
f 144/1/136 143/2/137 142/3/150
f 146/1/140 145/2/153 144/3/136
f 148/1/128 147/2/141 146/3/140
f 150/1/144 149/2/145 148/3/128
f 152/1/64 151/2/66 150/3/144
f 154/1/133 153/2/148 152/3/64
f 155/1/134 154/2/133 150/3/144
f 158/1/138 157/2/139 156/3/151
f 159/1/154 155/2/134 150/3/144
f 130/1/130 129/2/131 160/3/156
f 133/1/135 74/2/100 72/3/99
f 138/1/146 136/2/142 134/3/152
f 138/1/146 134/2/152 140/3/129
f 142/1/150 148/2/128 144/3/136
f 132/1/127 130/2/130 160/3/156
f 154/1/133 152/2/64 150/3/144
f 145/1/153 98/2/112 96/3/111
f 148/1/128 146/2/140 144/3/136
f 150/1/144 148/2/128 132/3/127
f 159/1/154 158/2/138 156/3/151
f 134/1/152 132/2/127 140/3/129
f 159/1/154 150/2/144 132/3/127
f 148/1/128 142/2/150 140/3/129
f 159/1/154 132/2/127 160/3/156
f 155/1/134 159/2/154 156/3/151
f 160/1/156 128/2/126 126/3/125
f 76/1/101 74/2/100 133/3/135
f 113/1/48 111/2/46 112/3/65
f 155/1/134 118/2/121 116/3/120
f 131/1/149 70/2/98 68/3/97
f 112/1/65 110/2/118 151/3/66
f 73/1/8 71/2/6 72/3/99
f 68/1/97 67/2/63 65/3/3
f 84/1/105 83/2/17 81/3/16
f 69/1/62 67/2/63 68/3/97
f 149/1/145 106/2/116 104/3/115
f 119/1/54 117/2/51 118/3/121
f 92/1/109 90/2/108 141/3/132
f 84/1/105 82/2/104 137/3/155
f 126/1/125 125/2/59 123/3/57
f 151/1/66 110/2/118 108/3/117
f 100/1/113 98/2/112 145/3/153
f 135/1/143 78/2/102 76/3/101
f 72/1/99 70/2/98 131/3/149
f 65/1/3 127/2/61 128/3/126
f 143/1/137 94/2/110 92/3/109
f 104/1/115 102/2/114 147/3/141
f 116/1/120 114/2/119 153/3/148
f 42/1/18 41/2/15 81/3/16
f 139/1/147 86/2/106 84/3/105
f 88/1/107 87/2/22 85/3/19
f 62/1/58 61/2/55 121/3/56
f 108/1/117 106/2/116 149/3/145
f 137/1/155 82/2/104 80/3/103
f 141/1/132 90/2/108 88/3/107

View File

@ -1 +0,0 @@
*Backup*

View File

@ -1,903 +0,0 @@
<!-- Rotations around the three axes are given in degrees.
The objects are first rotated around the z-, then y- and then x-axis. -->
<!-- Marble: Do not change!(except for mass)-->
<composition>
<typeID>20</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>true</crossesChunks>
<object>
<modelPath>marbleSmooth.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>11.0</mass>
</object>
</composition>
<!-- Block -->
<composition>
<typeID>40</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>true</crossesChunks>
<object>
<modelPath>block.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>1.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>15.0</mass>
</object>
</composition>
<!-- Column -->
<composition>
<typeID>60</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>1.1</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Torch with Lightsource -->
<composition>
<typeID>80</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>torch.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
<light>
<xOffset>0.0</xOffset>
<yOffset>3</yOffset>
<zOffset>0.0</zOffset>
<rColour>1.0</rColour>
<gColour>0.9</gColour>
<bColour>0.3</bColour>
<intensity>8.0</intensity>
<flameOffset>-0.5</flameOffset>
<flameHeight>1.0</flameHeight>
<flameWidth>1.0</flameWidth>
</light>
</composition>
<!-- hinttorch -->
<composition>
<typeID>81</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>torch.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
<light>
<xOffset>0.0</xOffset>
<yOffset>3</yOffset>
<zOffset>0.0</zOffset>
<rColour>0.2</rColour>
<gColour>0.9</gColour>
<bColour>0</bColour>
<intensity>10.0</intensity>
<flameOffset>-0.5</flameOffset>
<flameHeight>1.0</flameHeight>
<flameWidth>1.0</flameWidth>
</light>
</composition>
<!-- Lightsource -->
<composition>
<typeID>85</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<light>
<xOffset>0.0</xOffset>
<yOffset>1.0</yOffset>
<zOffset>0.0</zOffset>
<rColour>1.0</rColour>
<gColour>1.0</gColour>
<bColour>1.0</bColour>
<intensity>4.0</intensity>
</light>
</composition>
<!-- Block on 2 Pillars -->
<composition>
<typeID>100</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>2.1</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>10.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>3.0</xOffset>
<yOffset>2.1</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>10.0</mass>
</object>
<object>
<modelPath>block.obj</modelPath>
<xOffset>1.5</xOffset>
<yOffset>4.2</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>15.0</mass>
</object>
</composition>
<!-- Switch -->
<composition>
<typeID>120</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>switchInner.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.5</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.044</scale>
<mass>0.5</mass>
</object>
<object>
<modelPath>switchOuter.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>-1</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>1.0</mass>
</object>
<object>
<modelPath>switchOuterBox</modelPath>
<xOffset>0.0</xOffset>
<yOffset>-1</yOffset>
<zOffset>1.105</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>switchOuterBox</modelPath>
<xOffset>0.0</xOffset>
<yOffset>-1</yOffset>
<zOffset>-1.105</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>switchOuterBox</modelPath>
<xOffset>1.105</xOffset>
<yOffset>-1</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>90.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>switchOuterBox</modelPath>
<xOffset>-1.105</xOffset>
<yOffset>-1</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>90.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>switchOuterBox</modelPath>
<xOffset>0.0</xOffset>
<yOffset>-2.105</yOffset>
<zOffset>0.0</zOffset>
<xRot>90.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Bridge Block -->
<composition>
<typeID>140</typeID>
<ignoreHeightmap>true</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>block.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>20.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>90.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Rotated Bridge Block -->
<composition>
<typeID>141</typeID>
<ignoreHeightmap>true</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>block.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>20.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Bridge Block on Pillar-->
<composition>
<typeID>160</typeID>
<ignoreHeightmap>true</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>block.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>20.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>90.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>18.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>15.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>12.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Rotated Bridge Block on Pillar-->
<composition>
<typeID>161</typeID>
<ignoreHeightmap>true</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>block.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>20.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>18.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>90.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>15.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>90.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>12.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>90.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Rotated Bridge Block on Pillar with Torch -->
<composition>
<typeID>163</typeID>
<ignoreHeightmap>true</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>torch.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>21.0</yOffset>
<zOffset>-1.5</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
<light>
<xOffset>0.0</xOffset>
<yOffset>24</yOffset>
<zOffset>-1.5</zOffset>
<rColour>1.0</rColour>
<gColour>0.9</gColour>
<bColour>0.3</bColour>
<intensity>8.0</intensity>
<flameOffset>-0.5</flameOffset>
<flameHeight>1.0</flameHeight>
<flameWidth>1.0</flameWidth>
</light>
<object>
<modelPath>block.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>20.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>90.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>18.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>15.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>12.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Bridge Block on Pillar with torch -->
<composition>
<typeID>164</typeID>
<ignoreHeightmap>true</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>torch.obj</modelPath>
<xOffset>-1.5</xOffset>
<yOffset>21.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
<light>
<xOffset>-1.5</xOffset>
<yOffset>24</yOffset>
<zOffset>0</zOffset>
<rColour>1.0</rColour>
<gColour>0.9</gColour>
<bColour>0.3</bColour>
<intensity>8.0</intensity>
<flameOffset>-0.5</flameOffset>
<flameHeight>1.0</flameHeight>
<flameWidth>1.0</flameWidth>
</light>
<object>
<modelPath>block.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>20.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>18.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>15.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>12.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Wall -->
<composition>
<typeID>180</typeID>
<ignoreHeightmap>true</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>simpleWall.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>25.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>90.0</yRot>
<zRot>0.0</zRot>
<scale>1.48</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Rotated Wall (90 degrees)-->
<composition>
<typeID>181</typeID>
<ignoreHeightmap>true</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>simpleWall.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>25.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.48</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Light Block -->
<composition>
<typeID>200</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>true</crossesChunks>
<object>
<modelPath>block.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>5.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>1.0</mass>
</object>
</composition>
<!-- Gate -->
<composition>
<typeID>220</typeID>
<ignoreHeightmap>true</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>gate.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>25.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>90.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>100.0</mass>
</object>
</composition>
<!-- Rotated Gate -->
<composition>
<typeID>221</typeID>
<ignoreHeightmap>true</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>gate.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>25.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>100.0</mass>
</object>
</composition>
<!-- Block for Switch -->
<composition>
<typeID>240</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>true</crossesChunks>
<object>
<modelPath>movableBlock.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>5.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>2.0</mass>
</object>
</composition>
<!-- Brazier -->
<composition>
<typeID>245</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>brazier.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.0</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Hint -->
<composition>
<typeID>250</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>hint.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.1</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Exit -->
<composition>
<typeID>254</typeID>
<ignoreHeightmap>false</ignoreHeightmap>
<crossesChunks>false</crossesChunks>
<object>
<modelPath>exit.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.1</yOffset>
<zOffset>0.0</zOffset>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<scale>1.5</scale>
<mass>0.0</mass>
</object>
</composition>
<!-- Available physicTypes are Player, Box, Button, TriangleMesh and None(no physics).
dampningL should be below 1, objects that can not move are enabled by setting their mass to 0. -->
<!-- Do not change the radius, it has to match the .obj -->
<objectData>
<modelPath>marbleSmooth.obj</modelPath>
<texturePath>cgtextures/marbleTexture.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.5</diffuseFactor>
<specularFactor>0.5</specularFactor>
<shininess>3.0</shininess>
<physicType>Player</physicType>
<radius>1.0</radius>
<dampningL>0.15 </dampningL>
<dampningA>0.7</dampningA>
<renderable>true</renderable>
</objectData>
<!-- Do not change width height or length, they have to match the .obj -->
<objectData>
<modelPath>block.obj</modelPath>
<texturePath>cgtextures/blockTexture_small.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>2.0</shininess>
<physicType>Box</physicType>
<width>4</width>
<height>1.88</height>
<length>1.99</length>
<dampningL>0.8</dampningL>
<dampningA>0.9</dampningA>
<renderable>true</renderable>
</objectData>
<objectData>
<modelPath>column.obj</modelPath>
<texturePath>cgtextures/columnTexture2.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>2.0</shininess>
<physicType>TriangleMesh</physicType>
<dampningL>0.8</dampningL>
<dampningA>0.9</dampningA>
<renderable>true</renderable>
</objectData>
<objectData>
<modelPath>torch.obj</modelPath>
<texturePath>cgtextures/torchTexture2.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.3</diffuseFactor>
<specularFactor>0.7</specularFactor>
<shininess>10.0</shininess>
<physicType>TriangleMesh</physicType>
<dampningL>0.8</dampningL>
<dampningA>0.9</dampningA>
<renderable>true</renderable>
</objectData>
<!-- Do not change width height or length, they have to match the .obj -->
<objectData>
<modelPath>switchInner.obj</modelPath>
<texturePath>cgtextures/switchInnerTexture.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>2.0</shininess>
<physicType>Button</physicType>
<width>1.8</width>
<height>1</height>
<length>1.8</length>
<dampningL>0.5</dampningL>
<dampningA>1.0</dampningA>
<renderable>true</renderable>
</objectData>
<!-- Do not change width height or length, they have to match the .obj -->
<objectData>
<modelPath>switchOuterBox</modelPath>
<physicType>Box</physicType>
<width>2.54</width>
<height>2.54</height>
<length>0.33</length>
<dampningL>0.555</dampningL>
<dampningA>0.5</dampningA>
<renderable>false</renderable>
</objectData>
<objectData>
<modelPath>switchOuter.obj</modelPath>
<texturePath>cgtextures/switchOuterTexture.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>1.0</shininess>
<physicType>None</physicType>
<renderable>true</renderable>
</objectData>
<!-- lengh may not be exact -->
<objectData>
<modelPath>simpleWall.obj</modelPath>
<texturePath>cgtextures/simpleWallTexture.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>1.0</shininess>
<physicType>Box</physicType>
<width>1.2</width>
<height>6</height>
<length>6</length>
<dampningL>0.555</dampningL>
<dampningA>0.5</dampningA>
<renderable>true</renderable>
</objectData>
<objectData>
<modelPath>gate.obj</modelPath>
<texturePath>cgtextures/gateTexture.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>2.0</shininess>
<physicType>Box</physicType>
<width>1.2</width>
<height>6</height>
<length>6</length>
<dampningL>0.555</dampningL>
<dampningA>0.5</dampningA>
<renderable>true</renderable>
</objectData>
<objectData>
<modelPath>movableBlock.obj</modelPath>
<texturePath>cgtextures/movableBlockTexture.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>2.0</shininess>
<physicType>Box</physicType>
<width>1.56</width>
<height>1.56</height>
<length>1.56</length>
<dampningL>0.555</dampningL>
<dampningA>0.5</dampningA>
<renderable>true</renderable>
</objectData>
<objectData>
<modelPath>brazier.obj</modelPath>
<texturePath>cgtextures/brazierTexture.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>1.0</shininess>
<physicType>TriangleMesh</physicType>
<dampningL>0.555</dampningL>
<dampningA>0.5</dampningA>
<renderable>true</renderable>
</objectData>
<objectData>
<modelPath>hint.obj</modelPath>
<texturePath>hintTexture2.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>1.0</shininess>
<physicType>TriangleMesh</physicType>
<dampningL>0.555</dampningL>
<dampningA>0.5</dampningA>
<renderable>true</renderable>
</objectData>
<objectData>
<modelPath>exit.obj</modelPath>
<texturePath>cgtextures/exitTexture.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>1.0</shininess>
<physicType>TriangleMesh</physicType>
<dampningL>0.555</dampningL>
<dampningA>0.5</dampningA>
<renderable>true</renderable>
</objectData>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 B

View File

@ -1,244 +0,0 @@
<composition>
<scale>1.0</scale>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<manualPos>false</manualPos>
<xPos>-4.500000</xPos>
<yOffset>0.0</yOffset>
<zPos>-3.500000</zPos>
<idGreen>0</idGreen>
<idBlue>8</idBlue>
<typeID>60</typeID>
<trigger>
<name>-</name>
<undo>false</undo>
<xPosition>0</xPosition>
<yPosition>0</yPosition>
<zPosition>0</zPosition>
<targetIdGreen>-</targetIdGreen>
<targetIdBlue>-</targetIdBlue>
<distance>1.0</distance>
<isBiggerThan>false</isBiggerThan>
<objectNum>0</objectNum>
<luaScript>-</luaScript>
<toChangeIdGreen>0</toChangeIdGreen>
<toChangeIdBlue>0</toChangeIdBlue>
<toChangeObjNum>0</toChangeObjNum>
</trigger>
</composition>
<composition>
<scale>1.0</scale>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<manualPos>false</manualPos>
<xPos>5.500000</xPos>
<yOffset>0.0</yOffset>
<zPos>5.500000</zPos>
<idGreen>0</idGreen>
<idBlue>7</idBlue>
<typeID>245</typeID>
<trigger>
<name>-</name>
<undo>false</undo>
<xPosition>0</xPosition>
<yPosition>0</yPosition>
<zPosition>0</zPosition>
<targetIdGreen>-</targetIdGreen>
<targetIdBlue>-</targetIdBlue>
<distance>1.0</distance>
<isBiggerThan>false</isBiggerThan>
<objectNum>0</objectNum>
<luaScript>-</luaScript>
<toChangeIdGreen>0</toChangeIdGreen>
<toChangeIdBlue>0</toChangeIdBlue>
<toChangeObjNum>0</toChangeObjNum>
</trigger>
</composition>
<composition>
<scale>1.0</scale>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<manualPos>false</manualPos>
<xPos>4.500000</xPos>
<yOffset>0.0</yOffset>
<zPos>-6.500000</zPos>
<idGreen>0</idGreen>
<idBlue>6</idBlue>
<typeID>200</typeID>
<trigger>
<name>-</name>
<undo>false</undo>
<xPosition>0</xPosition>
<yPosition>0</yPosition>
<zPosition>0</zPosition>
<targetIdGreen>-</targetIdGreen>
<targetIdBlue>-</targetIdBlue>
<distance>1.0</distance>
<isBiggerThan>false</isBiggerThan>
<objectNum>0</objectNum>
<luaScript>-</luaScript>
<toChangeIdGreen>0</toChangeIdGreen>
<toChangeIdBlue>0</toChangeIdBlue>
<toChangeObjNum>0</toChangeObjNum>
</trigger>
</composition>
<composition>
<scale>1.0</scale>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<manualPos>false</manualPos>
<xPos>-1.500000</xPos>
<yOffset>0.0</yOffset>
<zPos>-0.500000</zPos>
<idGreen>0</idGreen>
<idBlue>5</idBlue>
<typeID>80</typeID>
<trigger>
<name>-</name>
<undo>false</undo>
<xPosition>0</xPosition>
<yPosition>0</yPosition>
<zPosition>0</zPosition>
<targetIdGreen>-</targetIdGreen>
<targetIdBlue>-</targetIdBlue>
<distance>1.0</distance>
<isBiggerThan>false</isBiggerThan>
<objectNum>0</objectNum>
<luaScript>-</luaScript>
<toChangeIdGreen>0</toChangeIdGreen>
<toChangeIdBlue>0</toChangeIdBlue>
<toChangeObjNum>0</toChangeObjNum>
</trigger>
</composition>
<composition>
<scale>1.0</scale>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<manualPos>false</manualPos>
<xPos>-7.500000</xPos>
<yOffset>0.0</yOffset>
<zPos>7.500000</zPos>
<idGreen>0</idGreen>
<idBlue>2</idBlue>
<typeID>20</typeID>
<trigger>
<name>-</name>
<undo>false</undo>
<xPosition>0</xPosition>
<yPosition>0</yPosition>
<zPosition>0</zPosition>
<targetIdGreen>-</targetIdGreen>
<targetIdBlue>-</targetIdBlue>
<distance>1.0</distance>
<isBiggerThan>false</isBiggerThan>
<objectNum>0</objectNum>
<luaScript>-</luaScript>
<toChangeIdGreen>0</toChangeIdGreen>
<toChangeIdBlue>0</toChangeIdBlue>
<toChangeObjNum>0</toChangeObjNum>
</trigger>
</composition>
<composition>
<scale>1.0</scale>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<manualPos>false</manualPos>
<xPos>-7.500000</xPos>
<yOffset>0.0</yOffset>
<zPos>-7.500000</zPos>
<idGreen>0</idGreen>
<idBlue>1</idBlue>
<typeID>40</typeID>
<trigger>
<name>-</name>
<undo>false</undo>
<xPosition>0</xPosition>
<yPosition>0</yPosition>
<zPosition>0</zPosition>
<targetIdGreen>-</targetIdGreen>
<targetIdBlue>-</targetIdBlue>
<distance>1.0</distance>
<isBiggerThan>false</isBiggerThan>
<objectNum>0</objectNum>
<luaScript>-</luaScript>
<toChangeIdGreen>0</toChangeIdGreen>
<toChangeIdBlue>0</toChangeIdBlue>
<toChangeObjNum>0</toChangeObjNum>
</trigger>
</composition>
<ambientLight>
<rColour>1.0</rColour>
<gColour>1.0</gColour>
<bColour>1.0</bColour>
</ambientLight>
<fogColourDay>
<rColour>0.57</rColour>
<gColour>0.80</gColour>
<bColour>0.98</bColour>
<alpha>1.0</alpha>
</fogColourDay>
<fogColourRise>
<rColour>0.88</rColour>
<gColour>0.38</gColour>
<bColour>0.38</bColour>
<alpha>1.0</alpha>
</fogColourRise>
<fogColourNight>
<rColour>0.09</rColour>
<gColour>0.1</gColour>
<bColour>0.24</bColour>
<alpha>1.0</alpha>
</fogColourNight>
<directionalLight>
<xOffset>-1.0</xOffset>
<yOffset>1.5</yOffset>
<zOffset>1.0</zOffset>
<rColour>1.0</rColour>
<gColour>1.0</gColour>
<bColour>0.9</bColour>
<intensity>0.2</intensity>
</directionalLight>
<terrain>
<heightmap>heightmapTestLevel.png</heightmap>
<texture>sand.png</texture>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.8</diffuseFactor>
<specularFactor>0.2</specularFactor>
<shininess>1.0</shininess>
</terrain>
<skydome>
<model>skydome.obj</model>
<texture>skydomeNew.png</texture>
<nightTexture>nightskydome.png</nightTexture>
</skydome>
<physics>
<friction>0.9</friction>
<strength>300.0</strength>
</physics>
<positionConstraint>
<objectNum>0</objectNum>
<xPosition>0.0</xPosition>
<yPosition>0.0</yPosition>
<zPosition>0.0</zPosition>
<strength>100.0</strength>
</positionConstraint>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

View File

@ -1,39 +0,0 @@
local global = require( "global" )
if(global.triggeredSCRIPTNAME == nil) then
global.triggeredSCRIPTNAME = false
end
if(global.triggeredSCRIPTNAMEUndo == nil) then
global.triggeredSCRIPTNAMEUndo = false
end
function trigger(objectToChange, printDebug)
if(global.triggeredSCRIPTNAME == false) then
if(not level) then
print("No level found in Lua!")
return
end
--enter the scripts code here and replace all occurences of SCRIPTNAME with the name of the script.
global.triggeredSCRIPTNAME = true
if(printDebug) then
print("SCRIPTNAME")
end
end
end
function triggerUndo(objectToChange, printDebug)
if(global.triggeredSCRIPTNAMEUndo == false) then
if(not level) then
print("No level found in Lua!")
return
end
--enter the scripts undo code here
global.triggeredSCRIPTNAMEUndo = true
if(printDebug) then
print("SCRIPTNAMEUndo")
end
end
end

View File

@ -1,17 +0,0 @@
local global = require("global")
if(global.triggeredFristCheckpoint == nil) then
global.triggeredFristCheckpoint = false
end
function trigger(objectToChange, printDebug)
if(global.triggeredFristCheckpoint == false) then
if(not level) then
print("No level found in Lua!")
return
end
global.triggeredFristCheckpoint = true
if(printDebug) then
print("firstCheckpoint")
end
end
end

View File

@ -1,3 +0,0 @@
--global variable space
local global = {}
return global

View File

@ -1,4 +0,0 @@
-- Inits search path for require.
-- This file needs to stay next to the other scripts.
package.path = debug.getinfo(1,"S").source:match[[^@?(.*[\/])[^\/]-$]] .."?.lua;".. package.path

View File

@ -1,51 +0,0 @@
local global = require( "global" )
if(global.triggeredOpenFirstDoor == nil) then
global.triggeredOpenFirstDoor = false
end
if(global.triggeredOpenFirstDoorUndo == nil) then
global.triggeredOpenFirstDoorUndo = true
end
function trigger(objectToChange, printDebug)
if(global.triggeredOpenFirstDoor == false) then
if(not level) then
print("No level found in Lua!")
return
end
local strength = 100
local xPos = 17.5
local yPos = 33.0
local zPos = 81.5
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
global.triggeredOpenFirstDoorUndo = false
global.triggeredOpenFirstDoor = true
if (printDebug) then
print("openFirstDoor")
end
end
end
function triggerUndo(objectToChange, printDebug)
if(global.triggeredOpenFirstDoorUndo == false) then
if(not level) then
print("No level found in Lua!")
return
end
local strength = 100
local xPos = 17.5
local yPos = 25.0
local zPos = 81.5
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
global.triggeredOpenFirstDoor = false
global.triggeredOpenFirstDoorUndo = true
if(printDebug) then
print("openFirstDoorUndo")
end
end
end

View File

@ -1,58 +0,0 @@
local global = require( "global" )
if(global.triggeredOpenSecondDoor1 == nil) then
global.triggeredOpenSecondDoor1 = false
end
if(global.triggeredOpenSecondDoor1Undo == nil) then
global.triggeredOpenSecondDoor1Undo = true
end
function trigger(objectToChange, printDebug)
if(global.triggeredOpenSecondDoor1 == false) then
if(not level) then
print("No level found in Lua!")
return
end
if(global.openSecondDoorCounter == nil) then
global.openSecondDoorCounter = 0
end
if(global.openSecondDoorCounter == 0) then
global.openSecondDoorCounter = global.openSecondDoorCounter + 1
end
global.triggeredOpenSecondDoor1 = true
if(global.triggeredOpenSecondDoor1 == true and global.triggeredOpenSecondDoor2 == true and global.triggeredOpenSecondDoor3 == true and global.triggeredOpenSecondDoor4 == true) then
global.triggeredOpenSecondDoor1Undo = false
end
local xPos = -6.5
local yPos = 25.0
local zPos = 54.5
level:preloadLightPosition(xPos, yPos, zPos)
level:addLightByParameters(0.2, 0.9, 0.0, 4.0, -2.0, 1.3, 2.0)
if(printDebug) then
print("openSecondDoor1")
end
end
end
function triggerUndo(objectToChange, printDebug)
if(global.triggeredOpenSecondDoor1Undo == false) then
if(not level) then
print("No level found in Lua!")
return
end
global.openSecondDoorCounter = 0
global.triggeredOpenSecondDoor1 = false
global.triggeredOpenSecondDoor2 = false
global.triggeredOpenSecondDoor3 = false
global.triggeredOpenSecondDoor4 = false
level:deleteFourLights()
global.triggeredOpenSecondDoor1Undo = true
if(printDebug) then
print("openSecondDoor1Undo")
end
end
end

View File

@ -1,58 +0,0 @@
local global = require( "global" )
if(global.triggeredOpenSecondDoor2 == nil) then
global.triggeredOpenSecondDoor2 = false
end
if(global.triggeredOpenSecondDoor2Undo == nil) then
global.triggeredOpenSecondDoor2Undo = true
end
function trigger(objectToChange, printDebug)
if(global.triggeredOpenSecondDoor2 == false) then
if(not level) then
print("No level found in Lua!")
return
end
if(global.openSecondDoorCounter == nil) then
global.openSecondDoorCounter = 0
end
if(global.openSecondDoorCounter == 1) then
global.openSecondDoorCounter = global.openSecondDoorCounter + 1
end
global.triggeredOpenSecondDoor2 = true
if(global.triggeredOpenSecondDoor1 == true and global.triggeredOpenSecondDoor2 == true and global.triggeredOpenSecondDoor3 == true and global.triggeredOpenSecondDoor4 == true) then
global.triggeredOpenSecondDoor2Undo = false
end
local xPos = -53.5
local yPos = 25.0
local zPos = 26.5
level:preloadLightPosition(xPos, yPos, zPos)
level:addLightByParameters(0.2, 0.9, 0.0, 4.0, -2.0, 1.3, 2.0)
if(printDebug) then
print("openSecondDoor2")
end
end
end
function triggerUndo(objectToChange, printDebug)
if(global.triggeredOpenSecondDoor2Undo == false) then
if(not level) then
print("No level found in Lua!")
return
end
global.openSecondDoorCounter = 0
global.triggeredOpenSecondDoor1 = false
global.triggeredOpenSecondDoor2 = false
global.triggeredOpenSecondDoor3 = false
global.triggeredOpenSecondDoor4 = false
level:deleteFourLights()
global.triggeredOpenSecondDoor2Undo = true
if(printDebug) then
print("openSecondDoor2Undo")
end
end
end

View File

@ -1,58 +0,0 @@
local global = require( "global" )
if(global.triggeredOpenSecondDoor3 == nil) then
global.triggeredOpenSecondDoor3 = false
end
if(global.triggeredOpenSecondDoor3Undo == nil) then
global.triggeredOpenSecondDoor3Undo = true
end
function trigger(objectToChange, printDebug)
if(global.triggeredOpenSecondDoor3 == false) then
if(not level) then
print("No level found in Lua!")
return
end
if(global.openSecondDoorCounter == nil) then
global.openSecondDoorCounter = 0
end
if(global.openSecondDoorCounter == 2) then
global.openSecondDoorCounter = global.openSecondDoorCounter + 1
end
global.triggeredOpenSecondDoor3 = true
if(global.triggeredOpenSecondDoor1 == true and global.triggeredOpenSecondDoor2 == true and global.triggeredOpenSecondDoor3 == true and global.triggeredOpenSecondDoor4 == true) then
global.triggeredOpenSecondDoor3Undo = false
end
local xPos = -6.5
local yPos = 25.0
local zPos = 26.5
level:preloadLightPosition(xPos, yPos, zPos)
level:addLightByParameters(0.2, 0.9, 0.0, 4.0, -2.0, 1.3, 2.0)
if(printDebug) then
print("openSecondDoor3")
end
end
end
function triggerUndo(objectToChange, printDebug)
if(global.triggeredOpenSecondDoor3Undo == false) then
if(not level) then
print("No level found in Lua!")
return
end
global.openSecondDoorCounter = 0
global.triggeredOpenSecondDoor1 = false
global.triggeredOpenSecondDoor2 = false
global.triggeredOpenSecondDoor3 = false
global.triggeredOpenSecondDoor4 = false
level:deleteFourLights()
global.triggeredOpenSecondDoor3Undo = true
if(printDebug) then
print("openSecondDoor3Undo")
end
end
end

View File

@ -1,67 +0,0 @@
local global = require( "global" )
if(global.triggeredOpenSecondDoor4 == nil) then
global.triggeredOpenSecondDoor4 = false
end
if(global.triggeredOpenSecondDoor4Undo == nil) then
global.triggeredOpenSecondDoor4Undo = true
end
function trigger(objectToChange, printDebug)
if(global.triggeredOpenSecondDoor4 == false) then
if(not level) then
print("No level found in Lua!")
return
end
if(global.openSecondDoorCounter == nil) then
global.openSecondDoorCounter = 0
end
if(global.openSecondDoorCounter == 3) then
global.openSecondDoorCounter = global.openSecondDoorCounter + 1
end
global.triggeredOpenSecondDoor4 = true
if(global.triggeredOpenSecondDoor1 == true and global.triggeredOpenSecondDoor2 == true and global.triggeredOpenSecondDoor3 == true and global.triggeredOpenSecondDoor4 == true) then
if(global.openSecondDoorCounter == 4) then
local strength = 100
local xPos = -81.5
local yPos = 33
local zPos = 4.5
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
global.openedSecondDoor = true
else
global.triggeredOpenSecondDoor4Undo = false
end
end
local xPos = -53.5
local yPos = 25.0
local zPos = 54.5
level:preloadLightPosition(xPos, yPos, zPos)
level:addLightByParameters(0.2, 0.9, 0.0, 4.0, -2.0, 1.3, 2.0)
if(printDebug) then
print("openSecondDoor4")
end
end
end
function triggerUndo(objectToChange, printDebug)
if(global.triggeredOpenSecondDoor4Undo == false) then
if(not level) then
print("No level found in Lua!")
return
end
global.openSecondDoorCounter = 0
global.triggeredOpenSecondDoor1 = false
global.triggeredOpenSecondDoor2 = false
global.triggeredOpenSecondDoor3 = false
global.triggeredOpenSecondDoor4 = false
level:deleteFourLights()
global.triggeredOpenSecondDoor4Undo = true
if(printDebug) then
print("openSecondDoor4Undo")
end
end
end

View File

@ -1,51 +0,0 @@
local global = require( "global" )
if(global.triggeredOpenThirdDoor == nil) then
global.triggeredOpenThirdDoor = false
end
if(global.triggeredOpenThirdDoorUndo == nil) then
global.triggeredOpenThirdDoorUndo = true
end
function trigger(objectToChange, printDebug)
if(global.triggeredOpenThirdDoor == false) then
if(not level) then
print("No level found in Lua!")
return
end
local strength = 100
local xPos = -172.5
local yPos = 33
local zPos = 58.5
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
global.triggeredOpenThirdDoorUndo = false
global.triggeredOpenThirdDoor = true
if(printDebug) then
print("openThirdDoor")
end
end
end
function triggerUndo(objectToChange, printDebug)
if(global.triggeredOpenThirdDoorUndo == false) then
if(not level) then
print("No level found in Lua!")
return
end
local strength = 100
local xPos = -172.5
local yPos = 25
local zPos = 58.5
level:moveObject(objectToChange, strength, xPos, yPos, zPos)
global.triggeredOpenThirdDoor = false
global.triggeredOpenThirdDoorUndo = true
if(printDebug) then
print("openThirdDoorUndo")
end
end
end

View File

@ -1,21 +0,0 @@
local global = require( "global" )
if(global.triggeredResetBox == nil) then
global.triggeredResetBox = false
end
function trigger(objectToChange, printDebug)
if(global.triggeredResetBox == false) then
if(not level) then
print("No level found in Lua!")
return
end
local x = -101.5
local y = 22.5
local z =8.5
level:forceMove(x, y, z, objectToChange)
if(printDebug) then
print("reset box")
end
end
end

View File

@ -1,35 +0,0 @@
local global = require( "global" )
if(global.triggeredResetPlayer == nil) then
global.triggeredResetPlayer = false
end
function trigger(objectToChange, printDebug)
if(global.triggeredResetPlayer == false) then
if(not level) then
print("No level found in Lua!")
return
end
if(global.triggeredFristCheckpoint == true) then
if(global.triggeredOpenFirstDoor == true) then
if(global.openedSecondDoor == true) then
if(global.triggeredOpenThirdDoor == true) then
level:movePlayer(-169.5,21.5,58.5)
else
level:movePlayer(-78.5,21.75,4.5)
end
else
level:movePlayer(17.5,21.0,87.0)
end
else
level:movePlayer(18.0, 23.0, 145.0)
end
else
level:resetPlayer()
end
if(printDebug) then
print("reset player")
end
end
end

View File

@ -1,21 +0,0 @@
local global = require( "global" )
if(global.triggeredSunStart == nil) then
global.triggeredSunStart = false
end
function trigger(objectToChange, printDebug)
if(global.triggeredSunStart == false) then
if(not level) then
print("No level found in Lua!")
return
end
local time = os.clock()
global.sunStartTime = time
global.triggeredSunStart = true
level:activateEndgame()
if(printDebug) then
print("sunStart")
end
end
end

View File

@ -1,28 +0,0 @@
local global = require( "global" )
function trigger(objectToChange)
if(global.triggeredSunStart) then
if(not level) then
print("No level found in Lua!")
return
end
local maxTimeDiff = 30
local timeDiff = os.clock()- global.sunStartTime
if(timeDiff > maxTimeDiff)then
timeDiff = maxTimeDiff
end
timeDiff = timeDiff/maxTimeDiff
local x = 10
local y = -18 + math.sqrt(timeDiff) * 29
local z = -8 + timeDiff * 15
level:setSunDirection(x,y,z)
end
end
--local x = 0.7 + 0.3 * timeDiff
--local y = math.sqrt(timeDiff) * 2.2 - 1.5
--local z = -0.7 - 0.7 * timeDiff
--start 1,-6,-2
--ziel 10,10,10

View File

@ -1,9 +0,0 @@
#version 150
in vec3 vColor;
out vec4 oColor;
void main() {
oColor = vec4(vColor, 1.0);
}

View File

@ -1,13 +0,0 @@
#version 150
uniform mat4 viewProjectionMatrix;
in vec3 aPosition;
in vec3 aColor;
out vec3 vColor;
void main() {
vColor = aColor;
gl_Position = viewProjectionMatrix * vec4(aPosition, 1.0);
}

View File

@ -1,5 +0,0 @@
#version 150
void main() {
gl_FragDepth = gl_FragCoord.z;
}

View File

@ -1,11 +0,0 @@
#version 150
in vec3 aPosition;
in vec3 aNormal;
in vec3 aTexcoord;
uniform mat4 modelViewProjectionMatrix;
void main() {
gl_Position = modelViewProjectionMatrix * vec4(aPosition, 1.0);
}

View File

@ -1,13 +0,0 @@
#version 150
in vec4 fragPosition;
uniform float farPlane;
void main() {
float nearPlane = 0.1;
float A = -(farPlane+nearPlane)/(farPlane-nearPlane);
float B = -2*(farPlane*nearPlane)/(farPlane - nearPlane);
float value = 0.5*(-A*length(fragPosition) + B)/length(fragPosition) + 0.5;
gl_FragDepth = value;
}

View File

@ -1,15 +0,0 @@
#version 150
in vec3 aPosition;
in vec3 aNormal;
in vec3 aTexcoord;
uniform mat4 modelViewProjectionMatrix;
uniform mat4 modelViewMatrix;
out vec4 fragPosition;
void main() {
fragPosition = modelViewMatrix * vec4(aPosition, 1.0);
gl_Position = modelViewProjectionMatrix * vec4(aPosition, 1.0);
}

View File

@ -1,17 +0,0 @@
#version 150
in vec3 fColor;
out vec4 oColor;
uniform bool withColor;
void main() {
if (withColor) {
oColor = vec4(fColor, 0.6);
}
else {
oColor = vec4(0.0, 0.0, 0.0, 0.0);
}
}

View File

@ -1,104 +0,0 @@
#version 150
uniform mat4 modelViewProjectionMatrix;
uniform float time;
uniform bool bottom;
uniform int circle_index;
uniform vec2 skew;
layout(points) in;
layout(triangle_strip, max_vertices = 146) out;
in vec3 Color[];
out vec3 fColor;
const float PI = 3.1415926;
const float transition_point_1 = 0.486946;
const float cos_p1_1 = 0.35;
const float cos_p2_1 = 2.0;
const float ex_p1_1 = -0.193;
const float ex_p2_1 = 2.9426;
const float begin_1 = -0.8;
const float end_1 = 2;
const float transition_point_2 = 0.549778;
const float cos_p1_2 = 0.5;
const float cos_p2_2 = 2.0;
const float ex_p1_2 = 0.677;
const float ex_p2_2 = 3.9314;
const float begin_2 = -0.8;
const float end_2 = 1.3;
float flickerFunction() {
float windPower = length(skew);
if (windPower < 0.8) {
windPower += 0.2;
}
return windPower * pow(sin((20.0/(windPower))*time + gl_in[0].gl_Position.x*gl_in[0].gl_Position.z), 2) + (1-windPower);
}
float radiusFunction(float x) {
float value_1 = 0.0;
float value_2 = 0.0;
if (x < transition_point_1) {
value_1 = cos_p1_1 * cos(cos_p2_1 * x);
}
else {
value_1 = exp(ex_p1_1 - ex_p2_1 * x);
}
if (x < transition_point_2) {
value_2 = cos_p1_2 * cos(cos_p2_2 * x);
}
else {
value_2 = exp(ex_p1_2 - ex_p2_2 * x);
}
return mix(value_1, value_2, flickerFunction());
}
void main() {
fColor = Color[0];
float resolution = 6.0;
float this_begin = mix(begin_1, begin_2, flickerFunction());
float this_end = mix(end_1, end_2, flickerFunction());
float step = abs(this_end-this_begin)/resolution/2.0;
float i = 0.0;
float render_end = 0.0;
if (bottom) {
i = this_begin;
render_end = (this_end-this_begin)/2.0+step;
}
else {
i = (this_end-this_begin)/2.0;
render_end = this_end;
}
for (i; i<render_end; i+=step) {
float downRadius = radiusFunction(i);
float upRadius = radiusFunction(i+step);
int j = int(resolution/2.0) * circle_index;
int circle_end = int(resolution/2.0) * (circle_index + 1);
for (j; j<circle_end; j++) {
float leftAngle = PI * 2.0 / resolution / 4.0 * j;
float rightAngle = PI * 2.0 / resolution / 4.0 * (j+1);
vec4 offset = vec4(cos(rightAngle) * downRadius, i, -sin(rightAngle) * downRadius, 0.0);
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
EmitVertex();
offset = vec4(cos(rightAngle) * upRadius, i + step, -sin(rightAngle) * upRadius, 0.0);
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
EmitVertex();
offset = vec4(cos(leftAngle) * downRadius, i, -sin(leftAngle) * downRadius, 0.0);
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
EmitVertex();
offset = vec4(cos(leftAngle) * upRadius, i + step, -sin(leftAngle) * upRadius, 0.0);
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
EmitVertex();
EndPrimitive();
}
}
}

View File

@ -1,17 +0,0 @@
#version 150
uniform mat4 viewProjectionMatrix;
uniform vec2 skew;
in vec3 aPosition;
in vec3 aColor;
out vec3 Color;
const float end = 0.8;
void main () {
Color = aColor;
vec3 position = aPosition + vec3(-sin(skew.y)*end, 0.0, sin(skew.x)*end);
gl_Position = viewProjectionMatrix * vec4(position, 1.0);
}

View File

@ -1,21 +0,0 @@
#version 150
in vec2 vTexCoord;
uniform sampler2D light_fbo;
uniform int windowSizeX;
uniform int windowSizeY;
out vec4 oColor;
const float lookup_offset = 4.0;
void main() {
vec4 sum = vec4(0.0);
for(float i = -lookup_offset; i<=lookup_offset; i+=1.0) {
for(float j = -lookup_offset; j<=lookup_offset; j+=1.0) {
sum += texture(light_fbo, vec2(vTexCoord.x + i * 1.0/(windowSizeX/2.0), vTexCoord.y + j * 1.0/(windowSizeY/2.0)))/pow(lookup_offset*2+1, 2.0);
}
}
oColor = sum;
}

View File

@ -1,11 +0,0 @@
#version 150
in vec2 aPosition;
in vec2 aTexCoord;
out vec2 vTexCoord;
void main() {
vTexCoord = aTexCoord;
gl_Position = vec4(aPosition, 0.0, 1.0);
}

View File

@ -1,15 +0,0 @@
#version 150
in vec2 vTexCoord;
uniform float time;
uniform sampler2D screen;
uniform sampler2D screenContinue;
out vec4 oColor;
void main() {
vec4 screenColor = texture(screen, vTexCoord);
vec4 screenContinueColor = texture(screenContinue, vTexCoord);
oColor = mix(screenColor, screenContinueColor, pow(sin(time), 2));
}

View File

@ -1,11 +0,0 @@
#version 150
in vec2 aPosition;
in vec2 aTexCoord;
out vec2 vTexCoord;
void main() {
vTexCoord = aTexCoord;
gl_Position = vec4(aPosition, 0.0, 1.0);
}

View File

@ -1,406 +0,0 @@
#version 150
in vec3 vNormal;
in vec2 vTexCoord;
in vec4 fragPosition;
in vec4 shadowCoord0;
in vec4 shadowCoord1;
in vec4 shadowCoord2;
in vec4 shadowCoord3;
in vec4 shadowCoord4;
out vec4 oColor;
uniform sampler2D uTexture;
uniform sampler2DShadow shadowMap_directional0;
uniform sampler2DShadow shadowMap_directional1;
uniform sampler2DShadow shadowMap_directional2;
uniform sampler2DShadow shadowMap_directional3;
uniform sampler2DShadow shadowMap_directional4;
uniform samplerCubeShadow shadowMap_cube0;
uniform samplerCubeShadow shadowMap_cube1;
uniform samplerCubeShadow shadowMap_cube2;
uniform samplerCubeShadow shadowMap_cube3;
uniform samplerCubeShadow shadowMap_cube4;
uniform samplerCubeShadow shadowMap_cube5;
uniform samplerCubeShadow shadowMap_cube6;
uniform samplerCubeShadow shadowMap_cube7;
uniform samplerCubeShadow shadowMap_cube8;
uniform samplerCubeShadow shadowMap_cube9;
uniform samplerCubeShadow shadowMap_cube10;
uniform samplerCubeShadow shadowMap_cube11;
uniform samplerCubeShadow shadowMap_cube12;
uniform samplerCubeShadow shadowMap_cube13;
uniform samplerCubeShadow shadowMap_cube14;
uniform samplerCubeShadow shadowMap_cube15;
uniform samplerCubeShadow shadowMap_cube16;
uniform samplerCubeShadow shadowMap_cube17;
uniform samplerCubeShadow shadowMap_cube18;
uniform samplerCubeShadow shadowMap_cube19;
uniform samplerCubeShadow shadowMap_cube20;
uniform samplerCubeShadow shadowMap_cube21;
uniform samplerCubeShadow shadowMap_cube22;
uniform samplerCubeShadow shadowMap_cube23;
uniform samplerCubeShadow shadowMap_cube24;
uniform samplerCubeShadow shadowMap_cube25;
uniform vec3 ambientColor;
uniform float ambientFactor;
uniform float diffuseFactor;
uniform float specularFactor;
uniform vec3 camera;
uniform float shininess;
uniform int lightCount;
uniform int maxShadowRenderCount;
uniform vec3 directionalLightVector;
uniform vec3 directionalColor;
uniform float targetDirectionalIntensity;
uniform vec3 lightSources[32];
uniform vec3 lightColors[32];
uniform float lightIntensities[32];
uniform bool isFlame[32];
uniform float farPlane;
uniform vec4 fogColorDay;
uniform vec4 fogColorRise;
uniform vec4 fogColorNight;
uniform vec3 cameraCenter;
uniform bool movingTexture;
uniform vec2 movement;
uniform vec2 movingTextureOffset;
uniform float time;
vec2 poissonDisk[16] = vec2[](
vec2( -0.94201624, -0.39906216 ),
vec2( 0.94558609, -0.76890725 ),
vec2( -0.094184101, -0.92938870 ),
vec2( 0.34495938, 0.29387760 ),
vec2( -0.91588581, 0.45771432 ),
vec2( -0.81544232, -0.87912464 ),
vec2( -0.38277543, 0.27676845 ),
vec2( 0.97484398, 0.75648379 ),
vec2( 0.44323325, -0.97511554 ),
vec2( 0.53742981, -0.47373420 ),
vec2( -0.26496911, -0.41893023 ),
vec2( 0.79197514, 0.19090188 ),
vec2( -0.24188840, 0.99706507 ),
vec2( -0.81409955, 0.91437590 ),
vec2( 0.19984126, 0.78641367 ),
vec2( 0.14383161, -0.14100790 )
);
vec3 poissonDisk3D[16] = vec3[] (
vec3( 0.541140674379, -0.67854138769, 0.482325914183 ),
vec3( -0.427608163826, 0.79190057714, -0.403470341832 ),
vec3( -0.226067542852, -0.628594453842, -0.661035377645 ),
vec3( -0.811708612677, -0.0340861134035, 0.580406649804 ),
vec3( 0.731005386334, 0.0695021546098, -0.606146385926 ),
vec3( 0.213076426293, 0.6269493206, 0.744636925499 ),
vec3( -0.124461723355, 0.0768244304602, 0.0386785336463 ),
vec3( -0.945249148757, 0.00944808073483, -0.318861658446 ),
vec3( 0.802723394956, 0.124750583818, 0.273800670393 ),
vec3( -0.0571970562351, -0.156203447559, 0.908410256437 ),
vec3( -0.442066534087, -0.709699743423, 0.232493422739 ),
vec3( -0.317263286361, 0.194934041517, -0.923816906742 ),
vec3( 0.381481981953, 0.798989636516, -0.0466460997255 ),
vec3( -0.42752547127, 0.597430401925, 0.374108050255 ),
vec3( 0.12603138305, -0.980780120028, -0.120190366913 ),
vec3( 0.470540545819, -0.633374601042, -0.585070778068 )
);
float flickerFunction(int index) {
float windPower = length(movement);
if (windPower < 0.8) {
windPower += 0.2;
}
return windPower * pow(sin((20.0/(windPower))*time + lightSources[index].x*lightSources[index].z), 2) + (1-windPower);
}
vec4 fogColor(float dot) {
float riseFactor = 0.0;
float dayFactor = 0.0;
if(dot<-0.52) {
riseFactor = 0.0;
}
else if (dot>0.52) {
riseFactor = 0.0;
}
else {
riseFactor = cos(3*dot);
}
if(dot<0.0) {
dayFactor = 0.0;
}
else if(dot>1.0) {
dayFactor = 1.0;
}
else {
dayFactor = sin(dot);
}
if (dot <0.0) {
return mix(fogColorNight, fogColorRise, riseFactor);
}
else {
return mix(fogColorRise, fogColorDay, dayFactor);
}
}
vec3 sunColor(float dot){
float riseFactor = 0.0;
if(dot<-0.79) {
riseFactor = 0.0;
}
else if (dot>0.79) {
riseFactor = 0.0;
}
else {
riseFactor = cos(2*dot);
}
return mix(directionalColor, vec3(fogColorRise), riseFactor);
}
float sunIntensity(float dot) {
return targetDirectionalIntensity * sin(2*dot);
}
float sampleDirectionalShadow(sampler2DShadow shadowMap, vec4 shadowCoord, float maxBias, float intensity) {
float visibility = 1.0;
const float stretching = 650.0;
float bias = 0.001*tan(acos(clamp(dot(vNormal, -directionalLightVector), 0.0, 1.0)));
bias = clamp(bias, 0.0, maxBias);
for (int i=0; i<4; i++) {
visibility -= intensity/16*(1.0-texture(shadowMap, vec3(shadowCoord.xy + poissonDisk[i]/stretching, shadowCoord.z - bias)));
}
if (visibility == 1.0-(intensity/16)*4)
{
visibility = 1.0-intensity;
}
else if (visibility != 1.0) {
for (int i=0; i<12; i++) {
visibility -= intensity/16*(1.0-texture(shadowMap, vec3(shadowCoord.xy + poissonDisk[i]/stretching, shadowCoord.z - bias)));
}
}
return visibility;
}
float samplePointShadow(samplerCubeShadow shadowMap, vec3 lightDirection, float intensity) {
const float stretching = 10.0;
float visibility = 1.0;
float nearPlane = 0.1;
float A = -(farPlane+nearPlane)/(farPlane-nearPlane);
float B = -2*(farPlane*nearPlane)/(farPlane - nearPlane);
float compValue = 0.5*(-A*length(lightDirection) + B)/length(lightDirection) + 0.5;
float bias = 0.001*tan(acos(clamp(dot(vNormal, normalize(lightDirection)), 0.0, 1.0)));
bias = clamp(bias, 0.0, 0.001);
bias *= 1/length(lightDirection)*8;
for (int i=0; i<4; i++) {
visibility -= intensity/16*(1.0-texture(shadowMap, vec4(lightDirection + poissonDisk3D[i]/stretching, compValue - bias)));
}
if (visibility == 1.0-(intensity/16)*4)
{
visibility = 1.0-intensity;
}
else if (visibility != 1.0) {
for (int i=0; i<12; i++) {
visibility -= intensity/16*(1.0-texture(shadowMap, vec4(lightDirection + poissonDisk3D[i]/stretching, compValue - bias)));
}
}
return visibility;
}
float distanceToBorder(vec2 vector) {
float xDistance = min(vector.x, 1.0-vector.x);
float yDistance = min(vector.y, 1.0-vector.y);
return min(xDistance, yDistance);
}
void main()
{
vec3 ambientColor = ambientFactor * ambientColor;
vec3 diffuseColor = vec3(0.0, 0.0, 0.0);
vec3 specularColor = vec3(0.0, 0.0, 0.0);
// direction lighting
float sunAngle = -1.0;
vec3 directionalVector = normalize(directionalLightVector);
sunAngle = dot(vec3(0.0, 1.0, 0.0), directionalVector);
if(sunAngle > 0.0) {
float directionalVisibility = 1.0f;
float directionalIntensity = sunIntensity(sunAngle);
if (distanceToBorder(shadowCoord3.xy) <= 0.5 && distanceToBorder(shadowCoord3.xy) > 0.2) {
if (distanceToBorder(shadowCoord2.xy) <= 0.5 && distanceToBorder(shadowCoord2.xy) > 0.2) {
if (distanceToBorder(shadowCoord1.xy) <= 0.5 && distanceToBorder(shadowCoord1.xy) > 0.2) {
if (distanceToBorder(shadowCoord0.xy) <= 0.5 && distanceToBorder(shadowCoord0.xy) > 0.2) {
directionalVisibility = sampleDirectionalShadow(shadowMap_directional0, shadowCoord0, 0.001, directionalIntensity);
}
else if (distanceToBorder(shadowCoord0.xy) <= 0.5 && distanceToBorder(shadowCoord0.xy) > 0.0) {
float directionalVisibility0 = sampleDirectionalShadow(shadowMap_directional0, shadowCoord0, 0.001, directionalIntensity);
float directionalVisibility1 = sampleDirectionalShadow(shadowMap_directional1, shadowCoord1, 0.001, directionalIntensity);
directionalVisibility = mix(directionalVisibility0, directionalVisibility1, distanceToBorder(shadowCoord0.xy) * 5);
}
else {
directionalVisibility = sampleDirectionalShadow(shadowMap_directional1, shadowCoord1, 0.001, directionalIntensity);
}
}
else if (distanceToBorder(shadowCoord1.xy) <= 0.5 && distanceToBorder(shadowCoord1.xy) > 0.0) {
float directionalVisibility1 = sampleDirectionalShadow(shadowMap_directional1, shadowCoord1, 0.001, directionalIntensity);
float directionalVisibility2 = sampleDirectionalShadow(shadowMap_directional2, shadowCoord2, 0.002, directionalIntensity);
directionalVisibility = mix(directionalVisibility1, directionalVisibility2, distanceToBorder(shadowCoord1.xy) * 5);
}
else {
directionalVisibility = sampleDirectionalShadow(shadowMap_directional2, shadowCoord2, 0.002, directionalIntensity);
}
}
else if (distanceToBorder(shadowCoord2.xy) <= 0.5 && distanceToBorder(shadowCoord2.xy) > 0.0) {
float directionalVisibility2 = sampleDirectionalShadow(shadowMap_directional2, shadowCoord2, 0.002, directionalIntensity);
float directionalVisibility3 = sampleDirectionalShadow(shadowMap_directional3, shadowCoord3, 0.005, directionalIntensity);
directionalVisibility = mix(directionalVisibility2, directionalVisibility3, distanceToBorder(shadowCoord2.xy) * 5);
}
else {
directionalVisibility = sampleDirectionalShadow(shadowMap_directional3, shadowCoord3, 0.005, directionalIntensity);
}
}
else if (distanceToBorder(shadowCoord3.xy) <= 0.5 && distanceToBorder(shadowCoord3.xy) > 0.0) {
float directionalVisibility3 = sampleDirectionalShadow(shadowMap_directional3, shadowCoord3, 0.005, directionalIntensity);
float directionalVisibility4 = sampleDirectionalShadow(shadowMap_directional4, shadowCoord4, 0.01, directionalIntensity);
directionalVisibility = mix(directionalVisibility3, directionalVisibility4, distanceToBorder(shadowCoord3.xy) * 5);
}
else {
directionalVisibility = sampleDirectionalShadow(shadowMap_directional4, shadowCoord4, 0.01, directionalIntensity);
}
diffuseColor += clamp(dot(normalize(vNormal), directionalVector)
*diffuseFactor*directionalIntensity*sunColor(sunAngle), 0.0, 1.0)*directionalVisibility;
vec3 cameraVector = normalize(camera - vec3(fragPosition));
specularColor += clamp(pow((dot((cameraVector+directionalVector),normalize(vNormal))/
(length(cameraVector+directionalVector)*length(normalize(vNormal)))),shininess), 0.0, 1.0)
*specularFactor*directionalIntensity*sunColor(sunAngle)*directionalVisibility;
}
// point lights
float visibility = 1.0;
for(int i = 0; i<lightCount; i++) {
vec3 lightPos = vec3(0.0, 0.0, 0.0);
if (isFlame[i] == true) {
lightPos = vec3(lightSources[i].x - 0.75*movement.y , lightSources[i].y, lightSources[i].z + 0.75*movement.x);
}
else {
lightPos = lightSources[i];
}
vec3 lightDirection = vec3(fragPosition) - lightPos;
float distance = length(lightDirection);
float pointVisibility = 1.0f;
// only take lights into account with meaningful contribution
float intensity = 0.0f;
if (isFlame[i] == true) {
intensity = clamp(exp(-(1/(lightIntensities[i] + flickerFunction(i)))*distance), 0.0, 1.0);
}
else {
intensity = clamp(exp(-(1/lightIntensities[i])*distance), 0.0, 1.0);
}
if (intensity > 0.005) {
if (i == 0 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube0, lightDirection, intensity);
}
if (i == 1 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube1, lightDirection, intensity);
}
if (i == 2 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube2, lightDirection, intensity);
}
if (i == 3 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube3, lightDirection, intensity);
}
if (i == 4 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube4, lightDirection, intensity);
}
if (i == 5 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube5, lightDirection, intensity);
}
if (i == 6 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube6, lightDirection, intensity);
}
if (i == 7 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube7, lightDirection, intensity);
}
if (i == 8 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube8, lightDirection, intensity);
}
if (i == 9 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube9, lightDirection, intensity);
}
if (i == 10 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube10, lightDirection, intensity);
}
if (i == 11 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube11, lightDirection, intensity);
}
if (i == 12 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube12, lightDirection, intensity);
}
if (i == 13 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube13, lightDirection, intensity);
}
if (i == 14 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube14, lightDirection, intensity);
}
if (i == 15 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube15, lightDirection, intensity);
}
if (i == 16 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube16, lightDirection, intensity);
}
if (i == 17 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube17, lightDirection, intensity);
}
if (i == 18 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube18, lightDirection, intensity);
}
if (i == 19 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube19, lightDirection, intensity);
}
if (i == 20 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube20, lightDirection, intensity);
}
if (i == 21 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube21, lightDirection, intensity);
}
if (i == 22 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube22, lightDirection, intensity);
}
if (i == 23 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube23, lightDirection, intensity);
}
if (i == 24 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube24, lightDirection, intensity);
}
if (i == 25 && i<maxShadowRenderCount) {
pointVisibility = samplePointShadow(shadowMap_cube25, lightDirection, intensity);
}
vec3 lightVector = normalize(lightPos-vec3(fragPosition));
diffuseColor += clamp(dot(normalize(vNormal), lightVector)
*diffuseFactor*intensity*lightColors[i]*pointVisibility, 0.0, 1.0);
vec3 cameraVector = normalize(camera - vec3(fragPosition));
specularColor += clamp(pow((dot((cameraVector+lightVector),normalize(vNormal))/
(length(cameraVector+lightVector)*length(normalize(vNormal)))),shininess)*pointVisibility, 0.0, 1.0)
*specularFactor*intensity*lightColors[i];
}
}
vec3 finalColor = specularColor + diffuseColor + ambientColor;
float distanceCameraCenter = distance(cameraCenter, vec3(fragPosition));
float fogFactor = clamp((1.0 - ((farPlane - 35.0) -distanceCameraCenter)/30.0), 0.0, 1.0);
fogFactor *= clamp((1.0-((fragPosition.y-40.0)/30.0)), 0.0, 1.0);
vec4 textureColor = vec4(0.0, 0.0, 0.0, 1.0);
if (movingTexture == true) {
textureColor = texture(uTexture, vec2(vTexCoord.x + movingTextureOffset.x, vTexCoord.y + movingTextureOffset.y)).rgba;
}
else {
textureColor = texture(uTexture, vTexCoord).rgba;
}
oColor = vec4(finalColor, 1.0f)*textureColor;
oColor = mix(oColor, fogColor(sunAngle), fogFactor);
}

View File

@ -1,31 +0,0 @@
#version 150
uniform mat4 modelMatrix;
uniform mat4 modelViewProjectionMatrix;
uniform mat4 shadowMVPs[5];
in vec3 aPosition;
in vec3 aNormal;
in vec2 aTexCoord;
out vec3 vNormal;
out vec2 vTexCoord;
out vec4 fragPosition;
out vec4 shadowCoord0;
out vec4 shadowCoord1;
out vec4 shadowCoord2;
out vec4 shadowCoord3;
out vec4 shadowCoord4;
void main()
{
fragPosition = modelMatrix * vec4(aPosition, 1.0);
vNormal = inverse(transpose(mat3(modelMatrix))) * aNormal;
vTexCoord = aTexCoord;
shadowCoord0 = shadowMVPs[0] * vec4(aPosition, 1.0);
shadowCoord1 = shadowMVPs[1] * vec4(aPosition, 1.0);
shadowCoord2 = shadowMVPs[2] * vec4(aPosition, 1.0);
shadowCoord3 = shadowMVPs[3] * vec4(aPosition, 1.0);
shadowCoord4 = shadowMVPs[4] * vec4(aPosition, 1.0);
gl_Position = modelViewProjectionMatrix * vec4(aPosition, 1.0);
}

View File

@ -1,89 +0,0 @@
#version 150
in vec2 vTexCoord;
in vec4 fragPosition;
in vec4 sunPosition;
out vec4 oColor;
uniform sampler2D dayTexture;
uniform sampler2D nightTexture;
uniform float farPlane;
uniform vec4 fogColorDay;
uniform vec4 fogColorRise;
uniform vec4 fogColorNight;
uniform vec3 cameraCenter;
uniform vec3 sunColor;
uniform vec3 directionalVector;
const float sunSize = 20.0;
vec4 fogColor(float dot) {
float riseFactor = 0.0;
float dayFactor = 0.0;
if(dot<-0.52) {
riseFactor = 0.0;
}
else if (dot>0.52) {
riseFactor = 0.0;
}
else {
riseFactor = cos(3*dot);
}
if(dot<0.0) {
dayFactor = 0.0;
}
else if(dot>1.0) {
dayFactor = 1.0;
}
else {
dayFactor = sin(dot);
}
if (dot <0.0) {
return mix(fogColorNight, fogColorRise, riseFactor);
}
else {
return mix(fogColorRise, fogColorDay, dayFactor);
}
}
vec3 sunColorFunc(float dot) {
float riseFactor = 0.0;
if(dot<-0.79) {
riseFactor = 0.0;
}
else if (dot>0.876) {
riseFactor = 0.0;
}
else {
riseFactor = cos(2*dot);
}
return mix(sunColor, vec3(fogColorRise)*1.4, riseFactor);
}
void main() {
vec4 textureColor = vec4(0.0, 0.0, 0.0, 1.0);
float sunAngle = -dot(normalize(directionalVector), vec3(0.0, 1.0, 0.0));
vec4 dayColor = texture(dayTexture, vTexCoord);
if (sunAngle >= 0.0) {
textureColor = mix(dayColor, texture(nightTexture, vTexCoord), sunAngle);
}
else {
textureColor = dayColor;
}
float distanceToSun = length(sunPosition - fragPosition);
float distanceCameraCenter = distance(cameraCenter, vec3(fragPosition));
float fogFactor = clamp((1.0 - ((farPlane - 35.0) -distanceCameraCenter)/30.0), 0.0, 1.0);
fogFactor *= clamp((1.0-((fragPosition.y-40.0)/30.0)), 0.0, 1.0);
if (distanceToSun < sunSize) {
float sunIntensity = clamp(0.3*exp(1/(distanceToSun/sunSize))-exp(1.0)*0.3, 0.0, 1.0);
vec4 fogcolor = mix(textureColor, fogColor(-sunAngle), fogFactor);
oColor = mix(fogcolor, vec4(sunColorFunc(sunAngle), sunIntensity), sunIntensity*sin(2*(-sunAngle)));
}
else {
oColor = mix(textureColor, fogColor(-sunAngle), fogFactor);
}
}

View File

@ -1,22 +0,0 @@
#version 150
in vec3 aPosition;
in vec3 aNormal;
in vec2 aTexCoord;
uniform mat4 modelMatrix;
uniform mat4 modelViewProjectionMatrix;
uniform float skydomeSize;
uniform vec3 directionalVector;
uniform vec3 cameraCenter;
out vec2 vTexCoord;
out vec4 fragPosition;
out vec4 sunPosition;
void main() {
fragPosition = modelMatrix * vec4(aPosition, 1.0);
vTexCoord = aTexCoord;
sunPosition = (normalize(vec4(directionalVector, 0.0)) * skydomeSize) + vec4(cameraCenter.x, 0, cameraCenter.z, 1.0);
gl_Position = modelViewProjectionMatrix * vec4(aPosition, 1.0);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 MiB

Some files were not shown because too many files have changed in this diff Show More