Compare commits

..

245 Commits

Author SHA1 Message Date
Faerbit
ffcfaf9a2c Commiting broken shit, because stuff. 2014-12-15 14:57:18 +01:00
Faerbit
ca5618bce2 Now using OpenGL 4.0. 2014-12-15 13:31:31 +01:00
Faerbit
acf7325553 MVPs are only needed for directional shadows and not for point light shadows (forgot one thing. 2014-12-15 13:23:35 +01:00
Faerbit
7dae5a5e8c Merge branch 'master' of github.com:Faerbit/swp 2014-12-15 13:16:36 +01:00
Faerbit
f306730920 MVPs are only needed for directional shadows and not for point light shadows. 2014-12-15 13:16:27 +01:00
Steffen Fündgens
ad24191000 Merge branch 'master' of github.com:Faerbit/swp 2014-12-15 13:08:47 +01:00
Steffen Fündgens
56be22a460 Moved mass from objectType to singular objects. Now loading physics from xml, but with a dummy-box instead of meshes. 2014-12-15 13:08:35 +01:00
Faerbit
7a95ddf6bb Removing commented code. 2014-12-15 12:55:48 +01:00
Faerbit
4d36c9fb97 Moved calculation of shadowMVP to the CPU side. 2014-12-15 12:41:30 +01:00
Faerbit
6ff8f33017 Fixed a parenthesis. 2014-12-15 11:53:31 +01:00
Faerbit
55cc68a333 Moving MVP calculation to the CPU side. 2014-12-15 11:45:31 +01:00
Faerbit
c2cf71e0e6 Replacing buildFrustum with standard glm call. 2014-12-15 11:22:32 +01:00
Faerbit
cec0043caf Implemented cube map depth rendering from lighting positions. 2014-12-15 02:09:33 +01:00
Faerbit
ed347725e6 Limited light sources to 32 instead of 128. 2014-12-15 01:16:43 +01:00
Faerbit
b2241a671e Made tinyxml source files not executable. 2014-12-15 01:15:08 +01:00
Faerbit
d45ed9060f Made getLights return a pointer to avoid copying around large amounts of light data every frame. 2014-12-15 01:12:51 +01:00
Faerbit
01212ba007 Init graphics with the level instead of passing it to the render function everytime. 2014-12-15 01:05:46 +01:00
Faerbit
b5f7e73c4c Removing torches for better testing. 2014-12-15 01:03:48 +01:00
Steffen Fündgens
4ddc21d3c9 Debugging. Had to comment out the loading of physics because it crashed the programm. 2014-12-12 18:38:12 +01:00
Steffen Fündgens
3504a2d209 Added skeleton for trigger loading. Added comments to identify closing brackets. 2014-12-12 18:02:31 +01:00
Steffen Fündgens
85c6132c3e Added indexing of the created objects for use in triggers. Added some comments to the loading. 2014-12-12 17:47:33 +01:00
Steffen Fündgens
c406bd4b62 Converter now adds a Dummy-Trigger to the xml. Copy and customize it in the Levelx.xml to create actual triggers. 2014-12-12 17:18:31 +01:00
Steffen Fündgens
caea9b7181 Implemented loading of physical objects. Compositions.xml holds mostly Dummy-Values for those. 2014-12-12 16:52:05 +01:00
Steffen Fündgens
f8d9ff0919 Adjusted the name of the marbles texture in Compositions.xml... 2014-12-12 16:28:34 +01:00
Steffen Fündgens
71a05e5b1e Merge branch 'master' of github.com:Faerbit/swp 2014-12-12 16:25:18 +01:00
Steffen Fündgens
d67b7b5b23 Implemented loading of gloabal lighting. Added physics parameters to Compositions.xml. 2014-12-12 16:24:47 +01:00
Steffen Fündgens
a1981ecbca Changed fogColor to fogColour. Moved some global Parameters to the xml. 2014-12-12 15:41:17 +01:00
sfroitzheim
a05095c9dd Triangulated Faces 2014-12-12 15:16:56 +01:00
sfroitzheim
20f66d996f Fixed wrong texture name 2014-12-12 15:09:51 +01:00
sfroitzheim
cc64a524fc Additional Marbletexture optimizing 2014-12-12 15:05:53 +01:00
sfroitzheim
b5e5289511 Improved marbletexture and added Blenderfile 2014-12-12 14:58:12 +01:00
Steffen Fündgens
7cb146dbbb Changed errorChecking in the converter. 2014-12-12 12:31:24 +01:00
Faerbit
bd1cedcc23 Removing stencil buffer from depthTextures. 2014-12-12 02:19:41 +01:00
Steffen Fündgens
28839b4d3a changed error checking syntax to make code more compact 2014-12-08 15:48:46 +01:00
Steffen Fündgens
2790bddd11 Added loading of lights, adjusted Compositions.xml and Level0.png to test it. 2014-12-08 15:19:50 +01:00
Steffen Fündgens
030f2f3bdd Finished loading of graphical objects, please check if my interpretation of the rotation is corect(copied from entity.cc). No physics loaded yet. 2014-12-08 14:54:27 +01:00
Steffen Fündgens
cf4cbd92fa Converting unsigned ints to regular ints again, undid that while merging. 2014-12-08 14:24:26 +01:00
Steffen Fündgens
68202bdef2 merging 2014-12-08 14:19:23 +01:00
Steffen Fündgens
b0b43cc2ee Added error checking for all XML Queries, fixed bugs and continued to implement loading from xml. 2014-12-08 14:10:08 +01:00
Faerbit
b51cc256bd Reexporting column, because it had no normals. 2014-12-08 13:43:47 +01:00
Faerbit
3f90032bf0 Converting unsinged ints to regular ints, because tinyxml cannot query for unsigned ones and thus negates the purpose of using unsigned ones. This also causes compiler errors. 2014-12-08 13:33:38 +01:00
Faerbit
1d82412576 One exclamation mark is enough. 2014-12-08 13:28:50 +01:00
Steffen Fündgens
4ab04faf68 Implemented more of the loading from xml 2014-12-05 17:14:43 +01:00
Steffen Fündgens
f4529d1430 Added objectData to Compositions.xml. It contains texture data as of now. 2014-12-05 16:55:17 +01:00
Steffen Fündgens
a6c65efcee Changed model and texture names to not start with capital letters. 2014-12-05 16:36:31 +01:00
Steffen Fündgens
b5deb6b9e7 Merge branch 'master' of github.com:Faerbit/swp 2014-12-05 16:19:06 +01:00
Steffen Fündgens
da197f063f Fixed the filesytem for the converter. 2014-12-05 16:18:48 +01:00
sfroitzheim
4805a4a3ce Merge branch 'master' of https://github.com/Faerbit/swp 2014-12-05 15:01:16 +01:00
Steffen Fündgens
e79128a1a5 Added Level0.png. 2014-12-05 15:00:46 +01:00
sfroitzheim
3268881a13 Merge branch 'master' of https://github.com/Faerbit/swp 2014-12-05 14:51:23 +01:00
sfroitzheim
c899c4e67e Fixed some display bugs with the column. 2014-12-05 14:49:23 +01:00
Steffen Fündgens
41584ef993 Merge branch 'master' of github.com:Faerbit/swp 2014-12-05 14:45:57 +01:00
Steffen Fündgens
24edf1aca9 Implemented error checking for XML. Fixed loading of OBJ-Files. 2014-12-05 14:45:44 +01:00
sfroitzheim
73d5e5fd52 Added a movable Block that will be used to be pushed on switches. 2014-12-05 14:39:51 +01:00
sfroitzheim
d4168fb002 Changed Columntexture to something better. 2014-12-05 14:39:08 +01:00
Steffen Fündgens
5e44f9680e integrating tinyxml into level, adding lights to compositions 2014-12-05 12:47:02 +01:00
Steffen Fündgens
7e7754ca64 Merge branch 'master' of github.com:Faerbit/swp 2014-12-05 12:13:45 +01:00
Faerbit
b9b7a6e7b4 Put some code in a function. 2014-12-05 00:57:17 +01:00
Faerbit
8eb0f6719a Now generating Mipmaps for textures. 2014-12-04 18:58:16 +01:00
Faerbit
9e4cc5e4f7 Setting wrap mode of depthTextures to CLAMP_TO_EDGE to remove seams. 2014-12-04 17:39:35 +01:00
Faerbit
1c687f5759 Implemented cascaded shadow mapping. 2014-12-04 17:19:58 +01:00
Faerbit
0cb741dbc3 Implemented early bailing. 2014-12-04 15:08:08 +01:00
Steffen Fündgens
0e06ae9fd3 changed filePath to levelNum 2014-12-04 15:07:31 +01:00
Faerbit
e005c97439 Implemented poisson sampling. 2014-12-04 14:53:07 +01:00
Faerbit
b38e24c3db Disable culling because it seems to give slightly worse FPS. 2014-12-04 14:46:39 +01:00
Faerbit
a8ac3c064a Improving bias on slopes. 2014-12-04 13:26:06 +01:00
Faerbit
3b0881f9c1 Adding culling. 2014-12-04 13:23:25 +01:00
Faerbit
049819c47a Changing shadow map sampler from sampler2D to sampler2Dshadow and removing now useless colour texture. 2014-12-04 13:21:20 +01:00
Faerbit
fe0535036f Changing directional light vector to match origin of the sun on the skysphere texture. 2014-12-04 12:19:39 +01:00
Faerbit
588b499f93 Making framebuffer private again. (Was public for debugging. 2014-12-04 01:22:23 +01:00
Faerbit
f559eced68 Implemented basic shadows for sun light. Also fixed bug with far plane always staying the same. 2014-12-04 01:13:59 +01:00
Faerbit
08716abfe8 Always automatically update docker container. 2014-12-03 11:17:24 +01:00
Faerbit
7a76519edb Exiting converter if no input file is given. 2014-12-03 11:09:37 +01:00
Steffen Fündgens
581e1cd111 adjusting converter to work with black and white image backgrounds 2014-12-02 13:37:31 +01:00
Steffen Fündgens
965c3f96f9 still merging... 2014-12-02 13:19:19 +01:00
Steffen Fündgens
4adc1198b8 Merged master and converter 2014-12-02 13:17:33 +01:00
Steffen Fündgens
b6c694b350 Compositions.xml makes sense now 2014-12-02 13:13:20 +01:00
Faerbit
f38ced6603 Moving shader management completely into graphics. 2014-12-01 17:49:59 +01:00
Faerbit
64aeae8143 Removing spammy comments. 2014-12-01 17:44:58 +01:00
Faerbit
8b21495faa Adding namespacing. 2014-12-01 17:40:39 +01:00
Faerbit
be1abf584f Removing useless includes. 2014-12-01 17:40:06 +01:00
Steffen Fündgens
315d5aec04 implemented all methods of the converter class, needs testing 2014-12-01 14:09:55 +01:00
Faerbit
ed889ebd76 Reexporting Block.obj, because normals were missing. 2014-12-01 13:55:47 +01:00
Faerbit
777d33699e Removing backup blender files. 2014-12-01 13:54:10 +01:00
Faerbit
02641d7f1c Adding OBJ-file load messages for easier debugging. 2014-12-01 13:53:01 +01:00
Faerbit
c96d081e3d Do not build GLFW examples and tests. 2014-12-01 13:16:04 +01:00
Faerbit
e1d14c1884 Removing useless includes. 2014-12-01 12:58:04 +01:00
Faerbit
117e3715b4 Updating glfw to version 3.0.4. 2014-12-01 12:53:19 +01:00
Faerbit
27080179e4 Revert "Updating glfw." Code was not ready for release.
This reverts commit 81234ca22a.
2014-12-01 12:44:08 +01:00
Faerbit
043205455f Moving application class to it's own file. 2014-12-01 12:41:19 +01:00
Faerbit
4daf4c8ccf Let member function use it own class and not the global variable. 2014-12-01 12:33:00 +01:00
Faerbit
81234ca22a Updating glfw. 2014-12-01 12:32:04 +01:00
Faerbit
8317188314 Removing big textures as they are not needed. 2014-11-29 02:06:46 +01:00
Faerbit
139945614b Merge branch 'master' of github.com:Faerbit/swp 2014-11-29 01:37:38 +01:00
Faerbit
f3f870c2d1 Removing useless files. 2014-11-29 01:36:59 +01:00
Jasper
edb17a9e67 Merge branch 'master' of github.com:Faerbit/swp 2014-11-28 17:07:54 +01:00
Steffen Fündgens
9f1a931b0b added example Compositions.xml, implemented most of newComposition() method 2014-11-28 17:05:49 +01:00
Jasper
91de258030 Reduced memory usage of trianglemesh 2014-11-28 17:01:56 +01:00
Faerbit
c5abdba83e Added skydome blender file. 2014-11-28 16:49:28 +01:00
Faerbit
869e1ed415 Moved Blenderfiles out of Levels because of packaging. 2014-11-28 16:47:35 +01:00
Jasper
59bb4a91a7 Merge branch 'master' of github.com:Faerbit/swp 2014-11-28 16:46:44 +01:00
Jasper
ad61969176 Added basic Triangle Mesh, pending reading out of .obj and then testing. 2014-11-28 16:46:35 +01:00
sfroitzheim
414da9ba7e Added switch models and textures in 2 seperate parts (switchInner is the movable object - size may needs to be changed in the future) 2014-11-28 16:38:55 +01:00
sfroitzheim
150a556c22 Added all blender files (except marble, as I don't have the newest and smoothed version) 2014-11-28 16:31:50 +01:00
sfroitzheim
00cdbe4c5e Fixed origin of block. 2014-11-28 15:28:03 +01:00
Jasper
594f336204 Added a constraint for distances, as such a constraint did not exist in bullet.Why, IDK. 2014-11-28 13:52:03 +01:00
Jasper
9d39bec46f Multiple objects now working, for exact implimentation check level.cc and comment in physics.hh. Additionally multiple comments have been added to physics.hh to support the use of these functions 2014-11-28 12:06:17 +01:00
Faerbit
d58147a935 You can render objects with multiple shaders now. 2014-11-28 00:17:56 +01:00
Faerbit
4881367004 Adding run.sh script 2014-11-27 23:58:33 +01:00
Faerbit
6a05ec47dd Changing paramter order. 2014-11-27 22:02:25 +01:00
Faerbit
6bb0974c67 Specifying upload path. 2014-11-27 21:53:22 +01:00
Faerbit
6a82bf122c Fixing script not in PATH. 2014-11-27 21:45:19 +01:00
Faerbit
c63382ba29 Fixing stupid mistake. 2014-11-27 21:38:10 +01:00
Faerbit
215b37f15e Changing file hoster once again to dropbox. 2014-11-27 21:37:09 +01:00
Faerbit
fab8665424 Adding module to plowshare. 2014-11-27 13:32:51 +01:00
Faerbit
b9b2f5769e Fixing yaml formatting. 2014-11-27 13:25:18 +01:00
Faerbit
50c08d79ec Changing how plowshare is installed. 2014-11-27 13:24:39 +01:00
Faerbit
60ff3452ca Adding -y to apt-get. 2014-11-27 13:20:18 +01:00
Faerbit
65eba6a97a Changing upload target to mediafire and upload tool to plowshare because megacmd sucks. 2014-11-27 13:19:02 +01:00
Faerbit
b57b559748 Reverting to upload instead of sync, because sync looks really broken. 2014-11-27 12:55:41 +01:00
Faerbit
ca4ccaef10 Syncing files instead of forcing them to mega. 2014-11-27 12:36:30 +01:00
Faerbit
6f44ea1416 Always uploading Windows build. 2014-11-27 12:09:45 +01:00
Faerbit
cc6818cd65 Adding zip. 2014-11-27 05:40:53 +01:00
Faerbit
2a99eb16d5 Should fix weird bug with CMake. 2014-11-27 05:35:45 +01:00
Faerbit
6af0dcc427 Adding missing paramter. 2014-11-27 05:31:54 +01:00
Faerbit
1dc99cdf39 Upgrading docker image to newest version. 2014-11-27 05:31:17 +01:00
Faerbit
79e8f777b3 Trying compilation on circle with docker. 2014-11-27 05:27:19 +01:00
Faerbit
76745a1da8 Adding dockerfile. 2014-11-27 05:18:40 +01:00
Faerbit
90630c7ab6 Fixing another syntax error. 2014-11-27 00:41:21 +01:00
Faerbit
afdaa05d27 Fixing syntax. 2014-11-27 00:40:46 +01:00
Faerbit
3621592e4c Added spaces. 2014-11-27 00:32:44 +01:00
Faerbit
a49c023305 Check if windows build exists before trying to do anything with it. 2014-11-27 00:23:51 +01:00
Faerbit
c6a330f35a Do not suppress output of apt-get anymore. 2014-11-27 00:16:17 +01:00
Faerbit
bdee3a0740 Only copy linux builds to artifacts. 2014-11-27 00:14:56 +01:00
Faerbit
6ef713107e Changing root path. 2014-11-26 23:57:33 +01:00
Faerbit
98d0e955e8 Try building linux first. 2014-11-26 23:49:40 +01:00
Faerbit
6b80e179f4 Another try at cross compilation on circle. 2014-11-26 23:46:21 +01:00
Faerbit
b3c285b4c2 Another try at cross compilation on circle. 2014-11-26 23:44:09 +01:00
Faerbit
e2dd7724ac Trying without C++ 11. 2014-11-26 23:29:41 +01:00
Faerbit
4335eeb00e Adding binutils. 2014-11-26 23:09:04 +01:00
Faerbit
8d6483877b Changing dependencies. 2014-11-26 23:06:51 +01:00
Faerbit
99280607e1 Adding 64 bit compiler. 2014-11-26 23:05:01 +01:00
Faerbit
d31e50cfa8 Enabling error message. 2014-11-26 23:02:55 +01:00
Faerbit
24c149b656 Another try at cross compilation on circle. 2014-11-26 23:02:01 +01:00
Faerbit
fe4563e1d0 Forgot one windows thing. 2014-11-26 01:58:58 +01:00
Faerbit
ae18362112 Removing travis.yml because it is useless. 2014-11-26 01:54:00 +01:00
Faerbit
45ccc55786 Deactivating Windows build for now. 2014-11-26 01:53:37 +01:00
Faerbit
35012faeec Another try at cross compilation on circle. 2014-11-26 01:45:24 +01:00
Faerbit
f17a9d4374 Another try at cross compilation on circle. 2014-11-26 01:39:45 +01:00
Faerbit
cdfc6fa94a Another try at cross compilation on circle. 2014-11-26 00:56:16 +01:00
Faerbit
c6c9c83eb7 Testing out cross compilation on circle. 2014-11-26 00:43:52 +01:00
Faerbit
1af78cb6e5 Replaced cmake wrapper with own options. 2014-11-26 00:39:54 +01:00
Faerbit
3504e10102 Made Mega upload optional. 2014-11-26 00:39:26 +01:00
Faerbit
28c2347594 Do not recreate zip file everytime. 2014-11-26 00:39:03 +01:00
Faerbit
e4734ae34a Another try at Mega deployment. 2014-11-25 22:08:51 +01:00
Faerbit
ef80d0124a Another try at Mega deployment. 2014-11-25 22:07:28 +01:00
Faerbit
79440e2edd Limiting circle builds to master branch. 2014-11-25 22:06:55 +01:00
Faerbit
96c3ea4aac Another try at Mega deployment. 2014-11-25 22:03:32 +01:00
Faerbit
3c2ce439e5 Another try at Circle Artifacts. 2014-11-25 21:54:53 +01:00
Faerbit
bed712f669 Trying Circle Artifacts. 2014-11-25 21:53:00 +01:00
Faerbit
b6c8c7ed57 Configuring mega upload. 2014-11-25 21:46:37 +01:00
Faerbit
dd1705b023 Another try at mega deployment. 2014-11-25 21:33:28 +01:00
Faerbit
d524787cb7 Trying out deployment to Mega. 2014-11-25 21:30:57 +01:00
Faerbit
e5c30e464f Speeding up build on circle. 2014-11-25 21:21:13 +01:00
Faerbit
6b00de67f5 Fixing typo. 2014-11-25 21:11:05 +01:00
Faerbit
6a593eb319 Adding a few dependencies to circle.yml. 2014-11-25 21:10:18 +01:00
Faerbit
a5694e0e8c Adding circle.yml to test Circle CI. 2014-11-25 21:01:11 +01:00
Faerbit
2de9c38ce7 Changed how windows focus is handled. 2014-11-25 16:01:13 +01:00
Faerbit
7431d0d63e Changed fog functions a little bit more. Looks nice enough. 2014-11-25 13:54:00 +01:00
Steffen Fündgens
6b904894c6 skeleton runs now, only xml read/write missing 2014-11-25 13:51:25 +01:00
Faerbit
7736e7850f Removing global variables from physics, because they are not needed. 2014-11-25 13:38:28 +01:00
Faerbit
4161ae0ec4 Changed fog function from exp to linear. 2014-11-25 13:24:02 +01:00
Faerbit
b0ed3c467f Ignoring another error in bullet. 2014-11-24 20:51:17 +01:00
Faerbit
78de14907a More convenience. 2014-11-24 19:54:13 +01:00
Faerbit
2bf6eb667c Added support for ninja build system and fixed uploading to Mega. 2014-11-24 15:59:59 +01:00
Faerbit
8245e0782e Added package script. 2014-11-24 15:12:18 +01:00
Steffen Fündgens
7bf1d8eed4 converter now takes the Level to convert as input 2014-11-24 13:21:52 +01:00
Steffen Fündgens
9b5426a6af added tinyxml2 for xml conversion 2014-11-24 13:03:55 +01:00
Faerbit
823da599f3 Starting another travis try. 2014-11-24 02:29:40 +01:00
Faerbit
71cb8300bd Enabling cross compiling if supported by the current system. 2014-11-24 02:10:25 +01:00
Faerbit
1cc47fa4ab Changed build script a bit. 2014-11-24 01:53:29 +01:00
Faerbit
97aeb6c965 Changing vector of objects to vector of pointer of objects for clearer construnction. 2014-11-23 00:59:54 +01:00
Faerbit
ed44f71b8c Replacing skybox attribute with skydome. 2014-11-23 00:57:16 +01:00
Faerbit
3a9a04d4d6 Changed skybox to skydome. 2014-11-22 00:39:58 +01:00
Jasper
59796882e4 Merge branch 'master' of https://github.com/Faerbit/swp 2014-11-21 16:22:50 +01:00
Jasper
3d936df227 Put Box In Level 2014-11-21 16:22:36 +01:00
Steffen Fündgens
3be8d78e1a now ignoring files with ~ 2014-11-21 16:09:45 +01:00
Steffen Fündgens
0105a74b5a Now ignoreing files with ~. 2014-11-21 16:08:03 +01:00
Steffen Fündgens
c65a745603 Modifying CMakes files to get convert to compile. 2014-11-21 16:07:13 +01:00
Steffen Fündgens
86c11e339e created skeletal implementation of png to xml converter 2014-11-21 15:43:27 +01:00
Jasper
fa60d52676 Modified adders in physics to no longer accept float x,y,z but entity/object instead. 2014-11-21 12:56:30 +01:00
Jasper
3c0deb232f added box in physics 2014-11-21 12:50:11 +01:00
Jasper
263f59f000 Normalized body movement (still has float strength to change magnitude) 2014-11-21 12:31:29 +01:00
Faerbit
1006f1cbc9 Improved fog a little bit. 2014-11-21 02:46:02 +01:00
Faerbit
c47ed4646d Added skybox and refined fog a bit. Fog still needs a lot of work. 2014-11-21 02:38:03 +01:00
Faerbit
b74e56fe7d Fixing typo to allow cross compilation. 2014-11-20 23:25:52 +01:00
Faerbit
3a677c31da Removing travis.yml again because it doesn't work. 2014-11-20 21:19:07 +01:00
Faerbit
788110aaf1 Fixing sed command. 2014-11-20 21:16:51 +01:00
Faerbit
6f59b1fb59 Now using standard Makefiles instead of Ninja. 2014-11-20 21:15:02 +01:00
Faerbit
7bda59920b Fixing installation of ninja again. 2014-11-20 21:08:29 +01:00
Faerbit
4af197d74b Fixing installation of ninja. 2014-11-20 21:05:15 +01:00
Faerbit
15a540e3c9 Adding .travis.yml for CI. 2014-11-20 21:02:58 +01:00
Faerbit
eadc819f80 Removing useless files. 2014-11-20 20:42:40 +01:00
Faerbit
b12b917a44 Implemented simple fog. 2014-11-19 01:58:48 +01:00
Faerbit
faf548d3ee Now using built-in exp function. 2014-11-19 01:58:25 +01:00
Faerbit
7d0cf9fca2 Added getCameraPosition to Level because it is used very often. 2014-11-19 01:57:38 +01:00
Faerbit
49dfdff413 Changing a few lighting paramters for testing. 2014-11-19 00:59:48 +01:00
Faerbit
a8b6463674 Changing how the intensity is calculated. 2014-11-19 00:59:33 +01:00
Faerbit
9576a40af6 Moving far plane a bit further. 2014-11-19 00:59:02 +01:00
Faerbit
8968750015 Clamping diffuse color for more realistic lighting. 2014-11-19 00:46:51 +01:00
Faerbit
715301552a Removing angular(Velocity) from object class as it is not needed there. 2014-11-18 19:57:58 +01:00
Faerbit
2638b43b44 Resized large textures to one third of their size. 2014-11-18 19:39:44 +01:00
Steffen Fündgens
5a92765518 changed terrain normals to consider 8 vertices, looks the same 2014-11-18 13:09:55 +01:00
Faerbit
6a8182ab8d Reexported objects and enabled smooth shading. 2014-11-17 22:03:28 +01:00
Jasper
c54d6cf874 Merge branch 'master' of renault.informatik.rwth-aachen.de:/data/git-repository/students/swpp-ws-14-15/swpp-ws-14-15-c
Conflicts:
	terrain.cc
	terrain.hh
2014-11-17 18:59:00 +01:00
Jasper
95627d31ae Merge branch 'master' of https://github.com/Faerbit/swp 2014-11-17 18:54:44 +01:00
Jasper
10f51db60f fixed terrain offset 2014-11-17 18:54:19 +01:00
Fabian Klemp
8a9d026aa5 Removing useless stuff. 2014-11-17 18:40:54 +01:00
sfroitzheim
c403814cd6 Merge branch 'master' of https://github.com/Faerbit/swp 2014-11-17 18:31:48 +01:00
sfroitzheim
c58e4d01b1 Changing marble model. 2014-11-17 18:31:22 +01:00
Fabian Klemp
9611c9ef08 Changing sand texture to a seamless sand texture. 2014-11-17 18:18:57 +01:00
Fabian Klemp
5533d4e4ba Removing update of the light at the center of the marble. 2014-11-17 18:18:15 +01:00
Fabian Klemp
9fc515ec24 Removing light at the center of the marble. 2014-11-17 18:16:27 +01:00
Fabian Klemp
ca3928e232 Added directional lighting. 2014-11-17 17:51:15 +01:00
Fabian Klemp
39b1ee85b0 Added emtpy constructor. 2014-11-17 17:50:06 +01:00
Fabian Klemp
94b12ae614 Removed rotation paramter from Light constructor as it is not used. 2014-11-17 16:54:17 +01:00
Fabian Klemp
6f89c406f1 Merge branch 'master' of github.com:Faerbit/swp 2014-11-17 16:31:04 +01:00
Fabian Klemp
d11a2820d6 Changing a few spawning values. 2014-11-17 16:31:01 +01:00
Jasper
d4e38b7a41 Merge branch 'master' of https://github.com/Faerbit/swp 2014-11-17 16:29:10 +01:00
Jasper
dbce8c229f getting the sizes juuuuuuuust right 2014-11-17 16:28:31 +01:00
Fabian Klemp
c22ae2c244 Merge branch 'master' of github.com:Faerbit/swp 2014-11-17 16:16:13 +01:00
Fabian Klemp
3086f98ecd Added alpha shading. 2014-11-17 16:15:56 +01:00
Jasper
bcb594c4cf ich bin dumb 2014-11-17 16:14:01 +01:00
Jasper
429223a08e merged level.cc 2014-11-17 16:11:39 +01:00
Jasper
abe9513aa3 further improving physics and interaction 2014-11-17 16:07:40 +01:00
sfroitzheim
8f64f75b67 Merge branch 'master' of https://github.com/Faerbit/swp 2014-11-17 15:44:31 +01:00
Fabian Klemp
29f24d6f05 Adding column and block ruins. 2014-11-17 15:29:38 +01:00
Fabian Klemp
f6b2bd776a Added light in the middle of the marble. 2014-11-17 15:19:36 +01:00
Fabian Klemp
6f7486b3f8 Fixed normals. 2014-11-17 15:19:19 +01:00
Fabian Klemp
4dc7897f8c Removed middle Ring. 2014-11-17 15:04:59 +01:00
Fabian Klemp
48691338ba Basic Marble Model with Textures added. 2014-11-17 14:38:35 +01:00
Fabian Klemp
0b7f8e95d3 Adding torch. 2014-11-17 14:23:23 +01:00
Jasper
a77ed38625 Merge branch 'master' of https://github.com/Faerbit/swp 2014-11-17 13:36:35 +01:00
Steffen Fündgens
0c4184477b Merge branch 'master' of github.com:Faerbit/swp 2014-11-17 13:36:09 +01:00
Steffen Fündgens
29f4cf6279 Reorganizing file structure. 2014-11-17 13:36:05 +01:00
408 changed files with 36490 additions and 98802 deletions

8
.gitignore vendored
View File

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

View File

@ -3,11 +3,11 @@ CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
add_subdirectory(converter)
# project/binary name:
PROJECT(saxum)
PROJECT(MarbleRaceGroupC)
# ACGL setup
SET(ACGL_OPENGL_SUPPORT CORE_32)
ADD_DEFINITIONS(-DACGL_OPENGL_VERSION_32)
SET(ACGL_OPENGL_SUPPORT CORE_40)
ADD_DEFINITIONS(-DACGL_OPENGL_VERSION_40)
ADD_DEFINITIONS(-DACGL_OPENGL_PROFILE_CORE)
# create the newest availabe OpenGL context, independent of the ACGL version:
#ADD_DEFINITIONS(-DGLFW_OPENGL_LATEST_VERSION)
@ -53,28 +53,21 @@ 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 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 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.md")
#
#
###############################################################################
@ -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")
#
#
@ -142,20 +131,6 @@ else()
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)
ADD_EXECUTABLE(saxum ${SOURCE_FILES} ${HEADER_FILES})
TARGET_LINK_LIBRARIES(saxum ${LIBRARIES} ${CMAKE_DL_LIBS})
ADD_EXECUTABLE(MarbleRaceGroupC ${SOURCE_FILES} ${HEADER_FILES} ${SHADER_FILES} ${README_FILES})
TARGET_LINK_LIBRARIES(MarbleRaceGroupC ${LIBRARIES})

View File

@ -10,4 +10,3 @@ 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

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)

721
Levels/Geometry/block.obj Normal file
View File

@ -0,0 +1,721 @@
# Blender v2.72 (sub 0) OBJ File: 'ruins_block.blend'
# www.blender.org
o Block_Cube
v 0.003582 -1.000000 1.000000
v 0.003582 -1.000000 -1.000000
v 0.003581 1.000000 1.000000
v 0.003582 1.000000 -1.000000
v 0.003582 -1.000000 1.000000
v 0.003582 -1.000000 -1.000000
v 0.003581 1.000000 1.000000
v 0.003582 1.000000 -1.000000
v 2.003582 -0.973911 -0.973911
v 1.977493 -1.000000 -1.000000
v 1.977493 -1.000000 -1.000000
v 2.003316 -0.977624 -0.975900
v 2.002525 -0.981261 -0.978115
v 2.001224 -0.984749 -0.980509
v 1.999440 -0.988016 -0.983034
v 1.997210 -0.990996 -0.985640
v 1.994578 -0.993628 -0.988272
v 1.991598 -0.995859 -0.990877
v 1.988331 -0.997642 -0.993402
v 1.984843 -0.998943 -0.995797
v 1.981206 -0.999735 -0.998011
v 1.981206 -0.998011 -0.999734
v 1.984843 -0.995797 -0.998943
v 1.988331 -0.993402 -0.997642
v 1.991598 -0.990877 -0.995858
v 1.994578 -0.988272 -0.993628
v 1.997210 -0.985640 -0.990996
v 1.999440 -0.983034 -0.988016
v 2.001224 -0.980509 -0.984749
v 2.002525 -0.978115 -0.981261
v 2.003316 -0.975900 -0.977624
v 1.977493 -1.000000 1.000000
v 2.003582 -0.973911 0.973911
v 1.977493 -1.000000 1.000000
v 1.981206 -0.999735 0.998011
v 1.984843 -0.998943 0.995797
v 1.988331 -0.997642 0.993402
v 1.991598 -0.995859 0.990877
v 1.994578 -0.993628 0.988272
v 1.997210 -0.990996 0.985640
v 1.999440 -0.988016 0.983034
v 2.001224 -0.984749 0.980509
v 2.002525 -0.981261 0.978115
v 2.003316 -0.977624 0.975900
v 2.003316 -0.975900 0.977624
v 2.002525 -0.978115 0.981261
v 2.001224 -0.980509 0.984749
v 1.999440 -0.983034 0.988016
v 1.997210 -0.985640 0.990996
v 1.994578 -0.988272 0.993628
v 1.991598 -0.990877 0.995859
v 1.988331 -0.993402 0.997642
v 1.984843 -0.995797 0.998943
v 1.981206 -0.998011 0.999735
v 2.003582 0.973911 -0.973911
v 1.977494 1.000000 -0.999999
v 1.977494 1.000000 -0.999999
v 2.003317 0.975900 -0.977623
v 2.002526 0.978115 -0.981261
v 2.001225 0.980509 -0.984748
v 1.999441 0.983034 -0.988015
v 1.997210 0.985640 -0.990995
v 1.994578 0.988272 -0.993627
v 1.991598 0.990877 -0.995858
v 1.988331 0.993402 -0.997642
v 1.984843 0.995797 -0.998943
v 1.981206 0.998011 -0.999734
v 1.981206 0.999735 -0.998010
v 1.984844 0.998943 -0.995796
v 1.988331 0.997642 -0.993402
v 1.991598 0.995859 -0.990876
v 1.994578 0.993628 -0.988271
v 1.997210 0.990996 -0.985639
v 1.999441 0.988016 -0.983034
v 2.001225 0.984749 -0.980508
v 2.002526 0.981261 -0.978114
v 2.003317 0.977624 -0.975900
v 1.977492 1.000000 1.000001
v 2.003581 0.973911 0.973912
v 1.977492 1.000000 1.000001
v 1.981205 0.998011 0.999735
v 1.984842 0.995797 0.998944
v 1.988330 0.993402 0.997643
v 1.991597 0.990877 0.995859
v 1.994577 0.988272 0.993628
v 1.997209 0.985640 0.990996
v 1.999439 0.983034 0.988017
v 2.001224 0.980509 0.984750
v 2.002524 0.978115 0.981262
v 2.003315 0.975900 0.977625
v 2.003315 0.977624 0.975901
v 2.002524 0.981261 0.978115
v 2.001224 0.984749 0.980510
v 1.999439 0.988016 0.983035
v 1.997209 0.990996 0.985640
v 1.994577 0.993628 0.988272
v 1.991597 0.995859 0.990878
v 1.988330 0.997642 0.993403
v 1.984842 0.998943 0.995797
v 1.981205 0.999735 0.998011
v -1.996123 -0.973911 0.973911
v -1.970034 -1.000000 0.999999
v -1.970034 -1.000000 0.999999
v -1.995857 -0.977624 0.975900
v -1.995066 -0.981262 0.978114
v -1.993765 -0.984749 0.980508
v -1.991981 -0.988016 0.983034
v -1.989750 -0.990996 0.985639
v -1.987118 -0.993628 0.988271
v -1.984138 -0.995859 0.990876
v -1.980871 -0.997643 0.993402
v -1.977384 -0.998944 0.995796
v -1.973747 -0.999735 0.998010
v -1.973747 -0.998011 0.999734
v -1.977384 -0.995797 0.998943
v -1.980871 -0.993403 0.997642
v -1.984138 -0.990877 0.995858
v -1.987118 -0.988272 0.993627
v -1.989750 -0.985640 0.990995
v -1.991981 -0.983035 0.988015
v -1.993765 -0.980509 0.984748
v -1.995066 -0.978115 0.981261
v -1.995857 -0.975901 0.977624
v -1.970033 -1.000000 -1.000001
v -1.996122 -0.973911 -0.973912
v -1.970033 -1.000000 -1.000001
v -1.973746 -0.999735 -0.998012
v -1.977383 -0.998944 -0.995798
v -1.980871 -0.997643 -0.993403
v -1.984138 -0.995859 -0.990878
v -1.987118 -0.993628 -0.988273
v -1.989750 -0.990996 -0.985640
v -1.991981 -0.988016 -0.983035
v -1.993765 -0.984749 -0.980510
v -1.995065 -0.981262 -0.978115
v -1.995857 -0.977624 -0.975901
v -1.995857 -0.975901 -0.977625
v -1.995065 -0.978115 -0.981262
v -1.993765 -0.980509 -0.984750
v -1.991981 -0.983035 -0.988017
v -1.989750 -0.985640 -0.990997
v -1.987118 -0.988272 -0.993629
v -1.984138 -0.990877 -0.995859
v -1.980871 -0.993403 -0.997643
v -1.977383 -0.995797 -0.998944
v -1.973746 -0.998011 -0.999735
v -1.996123 0.973911 0.973910
v -1.970034 1.000000 0.999999
v -1.970034 1.000000 0.999999
v -1.995857 0.975900 0.977623
v -1.995066 0.978114 0.981260
v -1.993766 0.980509 0.984748
v -1.991982 0.983034 0.988015
v -1.989751 0.985639 0.990995
v -1.987119 0.988271 0.993627
v -1.984139 0.990877 0.995858
v -1.980872 0.993402 0.997642
v -1.977384 0.995796 0.998942
v -1.973747 0.998011 0.999734
v -1.973747 0.999734 0.998010
v -1.977384 0.998943 0.995796
v -1.980872 0.997642 0.993402
v -1.984139 0.995858 0.990876
v -1.987119 0.993628 0.988271
v -1.989751 0.990996 0.985639
v -1.991982 0.988016 0.983034
v -1.993766 0.984749 0.980508
v -1.995066 0.981261 0.978114
v -1.995857 0.977624 0.975900
v -1.970034 1.000000 -1.000000
v -1.996123 0.973911 -0.973912
v -1.970034 1.000000 -1.000000
v -1.973747 0.998011 -0.999735
v -1.977384 0.995796 -0.998944
v -1.980871 0.993402 -0.997643
v -1.984138 0.990877 -0.995859
v -1.987118 0.988271 -0.993628
v -1.989750 0.985639 -0.990996
v -1.991981 0.983034 -0.988016
v -1.993765 0.980509 -0.984749
v -1.995066 0.978114 -0.981262
v -1.995857 0.975900 -0.977625
v -1.995857 0.977624 -0.975901
v -1.995066 0.981261 -0.978115
v -1.993765 0.984749 -0.980509
v -1.991981 0.988016 -0.983035
v -1.989750 0.990996 -0.985640
v -1.987118 0.993628 -0.988272
v -1.984138 0.995858 -0.990877
v -1.980871 0.997642 -0.993403
v -1.977384 0.998943 -0.995797
v -1.973747 0.999734 -0.998011
vt 0.839733 0.000000
vt 0.848833 0.013044
vt -0.537296 -0.000000
vt -0.546397 0.013044
vt 0.151167 0.000000
vt 0.839733 0.013044
vt 0.839733 0.986956
vt 0.160267 0.986956
vt 0.160267 0.013044
vt 0.848833 0.000000
vt 0.160370 0.000000
vt 0.151270 0.013045
vt 1.537399 0.000000
vt 1.546500 0.013044
vt 0.974265 0.996942
vt -0.001961 0.996942
vt -0.001961 -0.003057
vt 0.974264 -0.003058
vt 0.848834 -0.013044
vt -0.546397 -0.013044
vt -0.537296 -1.000000
vt 0.839733 -1.000000
vt 0.947629 -0.000000
vt 0.003341 -0.000000
vt 0.003341 1.000000
vt 0.947629 1.000000
vt 0.839732 1.000000
vt -0.537296 1.000000
vt 0.151167 1.000000
vt 0.841028 0.000995
vt 0.841028 0.000133
vt 0.842297 0.002102
vt 0.842297 0.000528
vt 0.848011 0.003299
vt 0.846532 0.001179
vt 0.847367 0.000528
vt 0.848465 0.002102
vt 0.847389 0.004562
vt 0.845651 0.002071
vt 0.846610 0.005864
vt 0.844742 0.003186
vt 0.845692 0.007180
vt 0.843824 0.004502
vt 0.844653 0.008483
vt 0.842915 0.005992
vt 0.843513 0.009746
vt 0.842034 0.007626
vt 0.842297 0.010943
vt 0.841199 0.009369
vt 0.840427 0.011188
vt 0.841028 0.012050
vt 0.158972 0.012050
vt 0.159573 0.011188
vt 0.157703 0.010943
vt 0.158801 0.009369
vt 0.156487 0.009746
vt 0.157966 0.007626
vt 0.155347 0.008483
vt 0.157085 0.005992
vt 0.154308 0.007180
vt 0.156176 0.004502
vt 0.153389 0.005864
vt 0.155258 0.003186
vt 0.152611 0.004562
vt 0.154349 0.002071
vt 0.151989 0.003299
vt 0.153468 0.001179
vt 0.151535 0.002102
vt 0.152633 0.000528
vt 0.841028 0.999867
vt 0.841028 0.999005
vt 0.842297 0.999472
vt 0.842297 0.997898
vt 0.846532 0.998821
vt 0.848011 0.996701
vt 0.848464 0.997898
vt 0.847367 0.999472
vt 0.845651 0.997929
vt 0.847388 0.995438
vt 0.844742 0.996814
vt 0.846610 0.994136
vt 0.843824 0.995498
vt 0.845692 0.992820
vt 0.842915 0.994008
vt 0.844653 0.991517
vt 0.842034 0.992374
vt 0.843513 0.990254
vt 0.841199 0.990631
vt 0.842296 0.989057
vt 0.841028 0.987950
vt 0.840426 0.988812
vt 0.159573 0.988812
vt 0.158972 0.987950
vt 0.158801 0.990631
vt 0.157703 0.989057
vt 0.157966 0.992374
vt 0.156487 0.990254
vt 0.157085 0.994008
vt 0.155347 0.991517
vt 0.156176 0.995498
vt 0.154307 0.992820
vt 0.155258 0.996814
vt 0.153389 0.994136
vt 0.154349 0.997929
vt 0.152611 0.995438
vt 0.153468 0.998821
vt 0.151989 0.996701
vt 0.152633 0.999472
vt 0.151535 0.997898
vt 0.841028 1.000132
vt 0.841028 1.000994
vt 0.159075 0.000133
vt 0.159075 0.000995
vt 0.157807 0.000529
vt 0.157807 0.002102
vt 0.159075 0.999006
vt 0.157807 0.997899
vt 0.157807 0.999472
vt 0.159075 0.999868
vt 0.159075 -0.000994
vt 0.159075 -0.000132
vt 0.160370 1.000000
vt 0.846610 0.992820
vt 0.846610 0.007180
vt 0.845692 0.005864
vt 0.845692 0.994136
vt 0.844653 0.004562
vt 0.844653 0.995438
vt 0.843513 0.003299
vt 0.843513 0.996701
vt 0.153493 0.007180
vt 0.153493 0.992820
vt 0.154411 0.994136
vt 0.154411 0.005864
vt 0.155450 0.995439
vt 0.155450 0.004562
vt 0.156590 0.996702
vt 0.156590 0.003299
vt 0.160370 2.000000
vt 0.159075 1.999005
vt 0.159075 1.000994
vt 0.927508 0.000000
vt 0.003734 0.000000
vt 0.003734 1.000000
vt 0.927508 1.000000
vn 0.000000 0.240400 -0.970700
vn 1.000000 0.000000 0.000000
vn 0.000000 -0.707100 0.707100
vn -0.000000 1.000000 0.000000
vn -1.000000 -0.000000 -0.000000
vn 0.000000 0.911700 0.410900
vn 0.000000 -0.244600 -0.969600
vn -0.000000 -0.000000 1.000000
vn -0.000000 -0.239800 0.970800
vn 0.000000 0.000000 -1.000000
vn -0.000000 0.239200 0.971000
vn 0.000000 0.702500 -0.711700
vn 0.000000 -0.911800 -0.410700
vn 0.394600 -0.649700 -0.649700
vn 0.504500 -0.610500 -0.610500
vn 0.599600 -0.565900 -0.565900
vn 0.682100 -0.517100 -0.517100
vn 0.753900 -0.464500 -0.464600
vn 0.816500 -0.408300 -0.408200
vn 0.870700 -0.347700 -0.347800
vn 0.916800 -0.282400 -0.282400
vn 0.954400 -0.211000 -0.211100
vn 0.982200 -0.132800 -0.132800
vn 0.997800 -0.046400 -0.046400
vn 0.997800 -0.046400 0.046400
vn 0.982200 -0.132800 0.132800
vn 0.954400 -0.211100 0.211100
vn 0.916800 -0.282400 0.282400
vn 0.870700 -0.347700 0.347800
vn 0.816500 -0.408200 0.408200
vn 0.753900 -0.464600 0.464600
vn 0.682100 -0.517100 0.517100
vn 0.599600 -0.565900 0.565900
vn 0.504500 -0.610500 0.610500
vn 0.394600 -0.649800 0.649700
vn 0.394600 0.649800 -0.649700
vn 0.504500 0.610500 -0.610500
vn 0.599600 0.565900 -0.565900
vn 0.682100 0.517100 -0.517100
vn 0.753900 0.464500 -0.464600
vn 0.816500 0.408300 -0.408200
vn 0.870700 0.347800 -0.347800
vn 0.916800 0.282400 -0.282400
vn 0.954400 0.211000 -0.211100
vn 0.982200 0.132800 -0.132800
vn 0.997800 0.046400 -0.046400
vn 0.997800 0.046500 0.046500
vn 0.982200 0.132800 0.132800
vn 0.954400 0.211100 0.211100
vn 0.916800 0.282400 0.282400
vn 0.870700 0.347800 0.347800
vn 0.816500 0.408200 0.408300
vn 0.753900 0.464600 0.464500
vn 0.682100 0.517100 0.517100
vn 0.599600 0.565900 0.565900
vn 0.504500 0.610600 0.610500
vn 0.394500 0.649800 0.649700
vn -0.394600 -0.649700 0.649800
vn -0.504500 -0.610500 0.610500
vn -0.599600 -0.565900 0.565900
vn -0.682100 -0.517100 0.517100
vn -0.753900 -0.464500 0.464500
vn -0.816500 -0.408300 0.408300
vn -0.870700 -0.347700 0.347800
vn -0.916800 -0.282400 0.282400
vn -0.954400 -0.211000 0.211100
vn -0.982200 -0.132800 0.132800
vn -0.997800 -0.046500 0.046500
vn -0.997800 -0.046400 -0.046500
vn -0.982200 -0.132800 -0.132800
vn -0.954400 -0.211100 -0.211100
vn -0.916800 -0.282400 -0.282400
vn -0.870700 -0.347800 -0.347800
vn -0.816500 -0.408300 -0.408300
vn -0.753900 -0.464500 -0.464500
vn -0.682100 -0.517100 -0.517100
vn -0.599600 -0.565900 -0.565900
vn -0.504500 -0.610500 -0.610500
vn -0.394600 -0.649700 -0.649700
vn -0.394600 0.649700 0.649800
vn -0.504500 0.610500 0.610600
vn -0.599600 0.565900 0.565900
vn -0.682100 0.517100 0.517100
vn -0.753900 0.464500 0.464500
vn -0.816500 0.408300 0.408300
vn -0.870700 0.347800 0.347800
vn -0.916800 0.282400 0.282400
vn -0.954400 0.211100 0.211100
vn -0.982200 0.132800 0.132800
vn -0.997800 0.046500 0.046500
vn -0.997800 0.046400 -0.046500
vn -0.982200 0.132700 -0.132800
vn -0.954400 0.211100 -0.211100
vn -0.916800 0.282400 -0.282400
vn -0.870700 0.347800 -0.347800
vn -0.816500 0.408200 -0.408300
vn -0.753900 0.464500 -0.464500
vn -0.682100 0.517100 -0.517100
vn -0.599600 0.565900 -0.565900
vn -0.504500 0.610500 -0.610500
vn -0.394600 0.649700 -0.649800
vn 0.997500 -0.071200 0.000000
vn 0.977100 -0.212700 0.000000
vn 0.937000 -0.349500 0.000000
vn 0.877700 -0.479300 0.000000
vn 0.800500 -0.599300 0.000000
vn 0.707100 -0.707100 0.000000
vn 0.599300 -0.800500 0.000000
vn 0.479300 -0.877700 0.000000
vn 0.349500 -0.937000 -0.000000
vn 0.212600 -0.977100 -0.000000
vn 0.071300 -0.997500 0.000000
vn 0.071400 0.000000 -0.997500
vn 0.212600 0.000000 -0.977100
vn 0.349500 0.000000 -0.937000
vn 0.479300 0.000000 -0.877700
vn 0.599300 0.000000 -0.800600
vn 0.707100 0.000000 -0.707100
vn 0.800500 -0.000000 -0.599300
vn 0.877700 -0.000000 -0.479300
vn 0.936900 -0.000000 -0.349500
vn 0.977100 -0.000000 -0.212600
vn 0.997500 -0.000000 -0.071300
vn 0.997500 0.000000 0.071300
vn 0.977100 0.000000 0.212600
vn 0.936900 0.000000 0.349500
vn 0.877700 0.000000 0.479300
vn 0.800500 0.000000 0.599300
vn 0.707100 0.000000 0.707100
vn 0.599300 0.000000 0.800600
vn 0.479300 -0.000000 0.877700
vn 0.349500 -0.000000 0.936900
vn 0.212600 -0.000000 0.977100
vn 0.071300 -0.000000 0.997500
vn 0.071300 0.997500 0.000000
vn 0.212600 0.977100 0.000000
vn 0.349500 0.936900 0.000000
vn 0.479200 0.877700 0.000000
vn 0.599300 0.800500 0.000000
vn 0.707100 0.707100 0.000000
vn 0.800500 0.599300 0.000000
vn 0.877700 0.479300 0.000000
vn 0.937000 0.349500 0.000000
vn 0.977100 0.212600 0.000000
vn 0.997500 0.071300 0.000000
vn -0.997400 -0.071400 -0.000000
vn -0.977200 -0.212500 -0.000000
vn -0.937000 -0.349500 -0.000000
vn -0.877700 -0.479300 -0.000000
vn -0.800500 -0.599300 -0.000000
vn -0.707100 -0.707100 -0.000000
vn -0.599300 -0.800500 -0.000000
vn -0.479200 -0.877700 -0.000000
vn -0.349500 -0.936900 -0.000000
vn -0.212600 -0.977100 -0.000000
vn -0.071300 -0.997500 -0.000000
vn -0.071300 0.000000 0.997500
vn -0.212600 0.000000 0.977100
vn -0.349500 0.000000 0.936900
vn -0.479200 -0.000000 0.877700
vn -0.599300 -0.000000 0.800500
vn -0.707100 -0.000000 0.707100
vn -0.800500 -0.000000 0.599300
vn -0.877700 -0.000000 0.479300
vn -0.936900 -0.000000 0.349500
vn -0.977200 -0.000000 0.212500
vn -0.997500 -0.000000 0.071400
vn -0.997500 -0.000000 -0.071400
vn -0.977200 -0.000000 -0.212500
vn -0.937000 -0.000000 -0.349500
vn -0.877700 -0.000000 -0.479300
vn -0.800500 -0.000000 -0.599300
vn -0.707100 -0.000000 -0.707100
vn -0.599300 0.000000 -0.800500
vn -0.479200 0.000000 -0.877700
vn -0.349500 0.000000 -0.936900
vn -0.212600 0.000000 -0.977100
vn -0.071300 0.000000 -0.997500
vn -0.071300 0.997500 -0.000000
vn -0.212600 0.977100 -0.000000
vn -0.349500 0.936900 -0.000000
vn -0.479200 0.877700 -0.000000
vn -0.599300 0.800500 -0.000000
vn -0.707100 0.707100 -0.000000
vn -0.800500 0.599300 -0.000000
vn -0.877700 0.479300 -0.000000
vn -0.936900 0.349500 -0.000000
vn -0.977200 0.212500 -0.000000
vn -0.997400 0.071400 -0.000000
vn 0.000000 -1.000000 0.000000
s off
f 10/1/1 9/2/1 11/1/1 126/3/1 125/4/1 124/3/1 6/5/1 2/5/1
f 9/6/2 55/7/2 79/8/2 33/9/2
f 1/10/3 5/10/3 102/11/3 101/12/3 103/11/3 34/13/3 33/14/3 32/13/3
f 57/15/4 172/16/4 149/17/4 80/18/4
f 101/9/5 147/8/5 171/7/5 125/6/5
f 3/10/6 7/10/6 148/11/6 147/12/6 149/11/6 80/13/6 79/14/6 78/13/6
f 56/1/7 55/19/7 57/1/7 172/3/7 171/20/7 170/3/7 8/5/7 4/5/7
f 78/1/8 80/1/8 149/3/8 148/3/8 103/21/8 34/22/8
f 2/5/9 6/5/9 124/3/9 126/3/9 11/1/9 10/1/9
f 11/23/10 126/24/10 170/25/10 172/25/10 57/26/10 56/26/10
f 4/5/11 8/5/11 170/3/11 172/3/11 57/1/11 56/1/11
f 32/1/12 34/1/12 103/3/12 102/3/12 5/5/12 1/5/12
f 78/27/13 80/27/13 149/28/13 148/28/13 7/29/13 3/29/13
f 22/30/14 21/31/14 10/1/14 11/1/14
f 23/32/15 20/33/15 21/31/15 22/30/15
f 24/34/16 19/35/16 20/36/16 23/37/16
f 25/38/17 18/39/17 19/35/17 24/34/17
f 26/40/18 17/41/18 18/39/18 25/38/18
f 27/42/19 16/43/19 17/41/19 26/40/19
f 28/44/20 15/45/20 16/43/20 27/42/20
f 29/46/21 14/47/21 15/45/21 28/44/21
f 30/48/22 13/49/22 14/47/22 29/46/22
f 12/50/23 13/49/23 30/48/23 31/51/23
f 9/6/24 12/50/24 31/51/24
f 45/52/25 44/53/25 33/9/25
f 46/54/26 43/55/26 44/53/26 45/52/26
f 47/56/27 42/57/27 43/55/27 46/54/27
f 48/58/28 41/59/28 42/57/28 47/56/28
f 49/60/29 40/61/29 41/59/29 48/58/29
f 50/62/30 39/63/30 40/61/30 49/60/30
f 51/64/31 38/65/31 39/63/31 50/62/31
f 52/66/32 37/67/32 38/65/32 51/64/32
f 53/68/33 36/69/33 37/67/33 52/66/33
f 35/30/34 36/32/34 53/33/34 54/31/34
f 32/1/35 35/30/35 54/31/35 34/1/35
f 68/70/36 67/71/36 56/27/36 57/27/36
f 69/72/37 66/73/37 67/71/37 68/70/37
f 70/74/38 65/75/38 66/76/38 69/77/38
f 71/78/39 64/79/39 65/75/39 70/74/39
f 72/80/40 63/81/40 64/79/40 71/78/40
f 73/82/41 62/83/41 63/81/41 72/80/41
f 74/84/42 61/85/42 62/83/42 73/82/42
f 75/86/43 60/87/43 61/85/43 74/84/43
f 76/88/44 59/89/44 60/87/44 75/86/44
f 58/90/45 59/89/45 76/88/45 77/91/45
f 55/7/46 58/90/46 77/91/46
f 91/92/47 90/93/47 79/8/47
f 92/94/48 89/95/48 90/93/48 91/92/48
f 93/96/49 88/97/49 89/95/49 92/94/49
f 94/98/50 87/99/50 88/97/50 93/96/50
f 95/100/51 86/101/51 87/99/51 94/98/51
f 96/102/52 85/103/52 86/101/52 95/100/52
f 97/104/53 84/105/53 85/103/53 96/102/53
f 98/106/54 83/107/54 84/105/54 97/104/54
f 99/108/55 82/109/55 83/107/55 98/106/55
f 81/71/56 82/73/56 99/72/56 100/70/56
f 78/27/57 81/110/57 100/111/57 80/27/57
f 114/112/58 113/113/58 102/11/58 103/11/58
f 115/114/59 112/115/59 113/113/59 114/112/59
f 116/66/60 111/67/60 112/69/60 115/68/60
f 117/64/61 110/65/61 111/67/61 116/66/61
f 118/62/62 109/63/62 110/65/62 117/64/62
f 119/60/63 108/61/63 109/63/63 118/62/63
f 120/58/64 107/59/64 108/61/64 119/60/64
f 121/56/65 106/57/65 107/59/65 120/58/65
f 122/54/66 105/55/66 106/57/66 121/56/66
f 104/53/67 105/55/67 122/54/67 123/52/67
f 101/9/68 104/53/68 123/52/68
f 137/51/69 136/50/69 125/6/69
f 138/48/70 135/49/70 136/50/70 137/51/70
f 139/46/71 134/47/71 135/49/71 138/48/71
f 140/44/72 133/45/72 134/47/72 139/46/72
f 141/42/73 132/43/73 133/45/73 140/44/73
f 142/40/74 131/41/74 132/43/74 141/42/74
f 143/38/75 130/39/75 131/41/75 142/40/75
f 144/34/76 129/35/76 130/39/76 143/38/76
f 145/37/77 128/36/77 129/35/77 144/34/77
f 127/116/78 128/117/78 145/118/78 146/119/78
f 124/11/79 127/120/79 146/121/79 126/11/79
f 160/119/80 159/116/80 148/122/80 149/122/80
f 161/118/81 158/117/81 159/116/81 160/119/81
f 162/106/82 157/107/82 158/109/82 161/108/82
f 163/104/83 156/105/83 157/107/83 162/106/83
f 164/102/84 155/103/84 156/105/84 163/104/84
f 165/100/85 154/101/85 155/103/85 164/102/85
f 166/98/86 153/99/86 154/101/86 165/100/86
f 167/96/87 152/97/87 153/99/87 166/98/87
f 168/94/88 151/95/88 152/97/88 167/96/88
f 150/93/89 151/95/89 168/94/89 169/92/89
f 147/8/90 150/93/90 169/92/90
f 183/91/91 182/90/91 171/7/91
f 184/88/92 181/89/92 182/90/92 183/91/92
f 185/86/93 180/87/93 181/89/93 184/88/93
f 186/84/94 179/85/94 180/87/94 185/86/94
f 187/82/95 178/83/95 179/85/95 186/84/95
f 188/80/96 177/81/96 178/83/96 187/82/96
f 189/78/97 176/79/97 177/81/97 188/80/97
f 190/74/98 175/75/98 176/79/98 189/78/98
f 191/77/99 174/76/99 175/75/99 190/74/99
f 173/116/100 174/117/100 191/118/100 192/119/100
f 170/11/101 173/121/101 192/120/101 172/11/101
f 9/6/102 33/9/102 44/53/102 12/50/102
f 12/50/103 44/53/103 43/55/103 13/49/103
f 13/49/104 43/55/104 42/57/104 14/47/104
f 14/47/105 42/57/105 41/59/105 15/45/105
f 15/45/106 41/59/106 40/61/106 16/43/106
f 16/123/107 40/124/107 39/125/107 17/126/107
f 17/126/108 39/125/108 38/127/108 18/128/108
f 18/128/109 38/127/109 37/129/109 19/130/109
f 19/130/110 37/129/110 36/32/110 20/73/110
f 20/73/111 36/32/111 35/30/111 21/71/111
f 21/71/112 35/30/112 32/1/112 10/27/112
f 11/1/113 56/27/113 67/71/113 22/30/113
f 22/30/114 67/71/114 66/73/114 23/32/114
f 23/32/115 66/73/115 65/130/115 24/129/115
f 24/129/116 65/130/116 64/128/116 25/127/116
f 25/127/117 64/128/117 63/126/117 26/125/117
f 26/125/118 63/126/118 62/123/118 27/124/118
f 27/42/119 62/83/119 61/85/119 28/44/119
f 28/44/120 61/85/120 60/87/120 29/46/120
f 29/46/121 60/87/121 59/89/121 30/48/121
f 30/48/122 59/89/122 58/90/122 31/51/122
f 31/51/123 58/90/123 55/7/123 9/6/123
f 33/9/124 79/8/124 90/93/124 45/52/124
f 45/52/125 90/93/125 89/95/125 46/54/125
f 46/54/126 89/95/126 88/97/126 47/56/126
f 47/56/127 88/97/127 87/99/127 48/58/127
f 48/58/128 87/99/128 86/101/128 49/60/128
f 49/124/129 86/123/129 85/126/129 50/125/129
f 50/125/130 85/126/130 84/128/130 51/127/130
f 51/127/131 84/128/131 83/130/131 52/129/131
f 52/129/132 83/130/132 82/73/132 53/32/132
f 53/32/133 82/73/133 81/71/133 54/30/133
f 54/30/134 81/71/134 78/27/134 34/1/134
f 57/27/135 80/1/135 100/30/135 68/71/135
f 68/71/136 100/30/136 99/32/136 69/73/136
f 69/73/137 99/32/137 98/129/137 70/130/137
f 70/130/138 98/129/138 97/127/138 71/128/138
f 71/128/139 97/127/139 96/125/139 72/126/139
f 72/126/140 96/125/140 95/124/140 73/123/140
f 73/82/141 95/100/141 94/98/141 74/84/141
f 74/84/142 94/98/142 93/96/142 75/86/142
f 75/86/143 93/96/143 92/94/143 76/88/143
f 76/88/144 92/94/144 91/92/144 77/91/144
f 77/91/145 91/92/145 79/8/145 55/7/145
f 101/9/146 125/6/146 136/50/146 104/53/146
f 104/53/147 136/50/147 135/49/147 105/55/147
f 105/55/148 135/49/148 134/47/148 106/57/148
f 106/57/149 134/47/149 133/45/149 107/59/149
f 107/59/150 133/45/150 132/43/150 108/61/150
f 108/131/151 132/132/151 131/133/151 109/134/151
f 109/134/152 131/133/152 130/135/152 110/136/152
f 110/136/153 130/135/153 129/137/153 111/138/153
f 111/138/154 129/137/154 128/117/154 112/115/154
f 112/115/155 128/117/155 127/116/155 113/113/155
f 113/113/156 127/116/156 124/122/156 102/11/156
f 103/122/157 148/139/157 159/140/157 114/141/157
f 114/113/158 159/116/158 158/117/158 115/115/158
f 115/115/159 158/117/159 157/137/159 116/138/159
f 116/138/160 157/137/160 156/135/160 117/136/160
f 117/136/161 156/135/161 155/133/161 118/134/161
f 118/134/162 155/133/162 154/132/162 119/131/162
f 119/60/163 154/101/163 153/99/163 120/58/163
f 120/58/164 153/99/164 152/97/164 121/56/164
f 121/56/165 152/97/165 151/95/165 122/54/165
f 122/54/166 151/95/166 150/93/166 123/52/166
f 123/52/167 150/93/167 147/8/167 101/9/167
f 125/6/168 171/7/168 182/90/168 137/51/168
f 137/51/169 182/90/169 181/89/169 138/48/169
f 138/48/170 181/89/170 180/87/170 139/46/170
f 139/46/171 180/87/171 179/85/171 140/44/171
f 140/44/172 179/85/172 178/83/172 141/42/172
f 141/131/173 178/132/173 177/133/173 142/134/173
f 142/134/174 177/133/174 176/135/174 143/136/174
f 143/136/175 176/135/175 175/137/175 144/138/175
f 144/138/176 175/137/176 174/117/176 145/115/176
f 145/115/177 174/117/177 173/116/177 146/113/177
f 146/113/178 173/116/178 170/122/178 126/11/178
f 149/11/179 172/122/179 192/116/179 160/113/179
f 160/113/180 192/116/180 191/117/180 161/115/180
f 161/115/181 191/117/181 190/137/181 162/138/181
f 162/138/182 190/137/182 189/135/182 163/136/182
f 163/136/183 189/135/183 188/133/183 164/134/183
f 164/134/184 188/133/184 187/132/184 165/131/184
f 165/100/185 187/82/185 186/84/185 166/98/185
f 166/98/186 186/84/186 185/86/186 167/96/186
f 167/96/187 185/86/187 184/88/187 168/94/187
f 168/94/188 184/88/188 183/91/188 169/92/188
f 169/92/189 183/91/189 171/7/189 147/8/189
f 32/142/190 34/142/190 103/143/190 102/143/190 124/144/190 126/144/190 11/145/190 10/145/190

View File

@ -0,0 +1,12 @@
# Blender MTL File: 'marbleSmooth.blend'
# Material Count: 1
newmtl Material.001
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 1
map_Kd /home/sfroitzheim/swp/Blenderfiles/Marbletexture1.jpg

1255
Levels/Geometry/skydome.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
# Blender v2.73 (sub 0) OBJ File: 'switch_inner.blend'
# Blender v2.72 (sub 0) OBJ File: 'switch_inner.blend'
# www.blender.org
o switch_Cube
v 0.952094 -0.488588 -1.000000

266
Levels/Geometry/torch.obj Normal file
View File

@ -0,0 +1,266 @@
# Blender v2.71 (sub 0) OBJ File: 'torch.blend'
# www.blender.org
o Cylinder
v 0.000000 -1.000000 -0.087051
v -0.000000 1.000000 -0.191513
v 0.016983 -1.000000 -0.085379
v 0.037362 1.000000 -0.187833
v 0.033313 -1.000000 -0.080425
v 0.073289 1.000000 -0.176935
v 0.048363 -1.000000 -0.072380
v 0.106399 1.000000 -0.159237
v 0.061555 -1.000000 -0.061555
v 0.135420 1.000000 -0.135420
v 0.072380 -1.000000 -0.048363
v 0.159237 1.000000 -0.106399
v 0.080425 -1.000000 -0.033313
v 0.176935 1.000000 -0.073289
v 0.085379 -1.000000 -0.016983
v 0.187833 1.000000 -0.037362
v 0.087051 -1.000000 -0.000000
v 0.191513 1.000000 0.000000
v 0.085379 -1.000000 0.016983
v 0.187833 1.000000 0.037362
v 0.080425 -1.000000 0.033313
v 0.176935 1.000000 0.073289
v 0.072380 -1.000000 0.048363
v 0.159237 1.000000 0.106399
v 0.061555 -1.000000 0.061555
v 0.135420 1.000000 0.135420
v 0.048363 -1.000000 0.072380
v 0.106399 1.000000 0.159237
v 0.033313 -1.000000 0.080425
v 0.073289 1.000000 0.176935
v 0.016983 -1.000000 0.085379
v 0.037362 1.000000 0.187833
v -0.000000 -1.000000 0.087051
v -0.000000 1.000000 0.191513
v -0.016983 -1.000000 0.085379
v -0.037362 1.000000 0.187833
v -0.033313 -1.000000 0.080425
v -0.073289 1.000000 0.176935
v -0.048363 -1.000000 0.072380
v -0.106399 1.000000 0.159237
v -0.061555 -1.000000 0.061555
v -0.135420 1.000000 0.135420
v -0.072381 -1.000000 0.048363
v -0.159237 1.000000 0.106399
v -0.080425 -1.000000 0.033313
v -0.176935 1.000000 0.073289
v -0.085379 -1.000000 0.016983
v -0.187833 1.000000 0.037362
v -0.087051 -1.000000 -0.000000
v -0.191513 1.000000 -0.000000
v -0.085379 -1.000000 -0.016983
v -0.187833 1.000000 -0.037362
v -0.080425 -1.000000 -0.033313
v -0.176935 1.000000 -0.073289
v -0.072380 -1.000000 -0.048363
v -0.159237 1.000000 -0.106399
v -0.061554 -1.000000 -0.061555
v -0.135420 1.000000 -0.135420
v -0.048363 -1.000000 -0.072381
v -0.106399 1.000000 -0.159237
v -0.033313 -1.000000 -0.080425
v -0.073289 1.000000 -0.176935
v -0.016983 -1.000000 -0.085379
v -0.037362 1.000000 -0.187833
vt 0.173159 0.324353
vt 0.355490 0.133897
vt 0.388961 0.169345
vt 0.188374 0.340465
vt 0.418692 0.207984
vt 0.201889 0.358028
vt 0.444379 0.249421
vt 0.213565 0.376862
vt 0.465761 0.293235
vt 0.223285 0.396777
vt 0.482621 0.338980
vt 0.230950 0.417570
vt 0.494787 0.386190
vt 0.236481 0.439028
vt 0.502136 0.434385
vt 0.239822 0.460935
vt 0.504593 0.483075
vt 0.240940 0.483066
vt 0.502132 0.531764
vt 0.239822 0.505197
vt 0.494779 0.579957
vt 0.236481 0.527103
vt 0.482609 0.627165
vt 0.230950 0.548561
vt 0.465746 0.672906
vt 0.223286 0.569353
vt 0.444361 0.716715
vt 0.213567 0.589266
vt 0.418672 0.758148
vt 0.201891 0.608099
vt 0.388940 0.796782
vt 0.188377 0.625660
vt 0.355468 0.832224
vt 0.173163 0.641770
vt 0.318596 0.864115
vt 0.156403 0.656266
vt 0.278700 0.892129
vt 0.138269 0.669000
vt 0.236185 0.915982
vt 0.118944 0.679843
vt 0.191483 0.935431
vt 0.098625 0.688683
vt 0.145050 0.950278
vt 0.077519 0.695432
vt 0.097357 0.960373
vt 0.055840 0.700021
vt 0.048890 0.965612
vt 0.033810 0.702402
vt 0.000142 0.965943
vt 0.011651 0.702553
vt 0.011637 0.263556
vt 0.000142 0.000142
vt 0.048895 0.000476
vt 0.033797 0.263708
vt 0.097366 0.005719
vt 0.055829 0.266091
vt 0.145063 0.015817
vt 0.077509 0.270681
vt 0.191499 0.030670
vt 0.098617 0.277432
vt 0.236203 0.050124
vt 0.118937 0.286274
vt 0.278720 0.073982
vt 0.138263 0.297119
vt 0.635136 0.466957
vt 0.594601 0.439872
vt 0.560128 0.405399
vt 0.533043 0.364864
vt 0.514387 0.319824
vt 0.504876 0.272009
vt 0.504876 0.223258
vt 0.514387 0.175443
vt 0.533044 0.130402
vt 0.560129 0.089866
vt 0.594602 0.055394
vt 0.635137 0.028309
vt 0.680177 0.009653
vt 0.727992 0.000142
vt 0.776744 0.000142
vt 0.824559 0.009653
vt 0.869599 0.028309
vt 0.910135 0.055395
vt 0.944607 0.089867
vt 0.971691 0.130402
vt 0.990347 0.175442
vt 0.999858 0.223257
vt 0.999858 0.272009
vt 0.990347 0.319823
vt 0.971691 0.364863
vt 0.944606 0.405398
vt 0.910133 0.439871
vt 0.869598 0.466956
vt 0.824557 0.485613
vt 0.776743 0.495124
vt 0.727992 0.495124
vt 0.680177 0.485613
vt 0.156399 0.309855
vt 0.318618 0.102002
vt 0.545660 0.520522
vt 0.564085 0.508211
vt 0.584558 0.499731
vt 0.606292 0.495408
vt 0.628452 0.495407
vt 0.650186 0.499730
vt 0.670659 0.508211
vt 0.689084 0.520522
vt 0.704753 0.536191
vt 0.717065 0.554616
vt 0.725545 0.575089
vt 0.729868 0.596823
vt 0.729868 0.618983
vt 0.725545 0.640717
vt 0.717065 0.661190
vt 0.704754 0.679615
vt 0.689084 0.695284
vt 0.670659 0.707596
vt 0.650185 0.716076
vt 0.628452 0.720399
vt 0.606292 0.720399
vt 0.584558 0.716076
vt 0.564085 0.707595
vt 0.545660 0.695284
vt 0.529990 0.679615
vt 0.517679 0.661190
vt 0.509199 0.640717
vt 0.504876 0.618983
vt 0.504876 0.596824
vt 0.509199 0.575090
vt 0.517679 0.554617
vt 0.529991 0.536192
vn 0.097900 -0.051900 -0.993800
vn 0.289900 -0.051900 -0.955700
vn 0.470800 -0.051900 -0.880700
vn 0.633500 -0.051900 -0.772000
vn 0.772000 -0.051900 -0.633500
vn 0.880700 -0.051900 -0.470800
vn 0.955700 -0.051900 -0.289900
vn 0.993800 -0.051900 -0.097900
vn 0.993800 -0.051900 0.097900
vn 0.955700 -0.051900 0.289900
vn 0.880700 -0.051900 0.470800
vn 0.772000 -0.051900 0.633500
vn 0.633500 -0.051900 0.772000
vn 0.470800 -0.051900 0.880700
vn 0.289900 -0.051900 0.955700
vn 0.097900 -0.051900 0.993800
vn -0.097900 -0.051900 0.993800
vn -0.289900 -0.051900 0.955600
vn -0.470800 -0.051900 0.880700
vn -0.633500 -0.051900 0.772000
vn -0.772000 -0.051900 0.633500
vn -0.880700 -0.051900 0.470800
vn -0.955700 -0.051900 0.289900
vn -0.993800 -0.051900 0.097900
vn -0.993800 -0.051900 -0.097900
vn -0.955600 -0.051900 -0.289900
vn -0.880700 -0.051900 -0.470800
vn -0.772000 -0.051900 -0.633500
vn -0.633500 -0.051900 -0.772000
vn -0.470800 -0.051900 -0.880700
vn 0.000000 1.000000 0.000000
vn -0.097900 -0.051900 -0.993800
vn -0.289900 -0.051900 -0.955700
vn 0.000000 -1.000000 0.000000
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 3/4/2 4/3/2 6/5/2 5/6/2
f 5/6/3 6/5/3 8/7/3 7/8/3
f 7/8/4 8/7/4 10/9/4 9/10/4
f 9/10/5 10/9/5 12/11/5 11/12/5
f 11/12/6 12/11/6 14/13/6 13/14/6
f 13/14/7 14/13/7 16/15/7 15/16/7
f 15/16/8 16/15/8 18/17/8 17/18/8
f 17/18/9 18/17/9 20/19/9 19/20/9
f 19/20/10 20/19/10 22/21/10 21/22/10
f 21/22/11 22/21/11 24/23/11 23/24/11
f 23/24/12 24/23/12 26/25/12 25/26/12
f 25/26/13 26/25/13 28/27/13 27/28/13
f 27/28/14 28/27/14 30/29/14 29/30/14
f 29/30/15 30/29/15 32/31/15 31/32/15
f 31/32/16 32/31/16 34/33/16 33/34/16
f 33/34/17 34/33/17 36/35/17 35/36/17
f 35/36/18 36/35/18 38/37/18 37/38/18
f 37/38/19 38/37/19 40/39/19 39/40/19
f 39/40/20 40/39/20 42/41/20 41/42/20
f 41/42/21 42/41/21 44/43/21 43/44/21
f 43/44/22 44/43/22 46/45/22 45/46/22
f 45/46/23 46/45/23 48/47/23 47/48/23
f 47/48/24 48/47/24 50/49/24 49/50/24
f 49/51/25 50/52/25 52/53/25 51/54/25
f 51/54/26 52/53/26 54/55/26 53/56/26
f 53/56/27 54/55/27 56/57/27 55/58/27
f 55/58/28 56/57/28 58/59/28 57/60/28
f 57/60/29 58/59/29 60/61/29 59/62/29
f 59/62/30 60/61/30 62/63/30 61/64/30
f 4/65/31 2/66/31 64/67/31 62/68/31 60/69/31 58/70/31 56/71/31 54/72/31 52/73/31 50/74/31 48/75/31 46/76/31 44/77/31 42/78/31 40/79/31 38/80/31 36/81/31 34/82/31 32/83/31 30/84/31 28/85/31 26/86/31 24/87/31 22/88/31 20/89/31 18/90/31 16/91/31 14/92/31 12/93/31 10/94/31 8/95/31 6/96/31
f 63/97/32 64/98/32 2/2/32 1/1/32
f 61/64/33 62/63/33 64/98/33 63/97/33
f 1/99/34 3/100/34 5/101/34 7/102/34 9/103/34 11/104/34 13/105/34 15/106/34 17/107/34 19/108/34 21/109/34 23/110/34 25/111/34 27/112/34 29/113/34 31/114/34 33/115/34 35/116/34 37/117/34 39/118/34 41/119/34 43/120/34 45/121/34 47/122/34 49/123/34 51/124/34 53/125/34 55/126/34 57/127/34 59/128/34 61/129/34 63/130/34

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

View File

@ -0,0 +1,180 @@
<composition>
<typeID>20</typeID>
<object>
<modelPath>marbleSmooth.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.0</yOffset>
<zOffset>0.0</zOffset>
<scale>0.75</scale>
<mass>8.0</mass>
</object>
</composition>
<composition>
<typeID>40</typeID>
<object>
<modelPath>block.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>1.0</yOffset>
<zOffset>2.0</zOffset>
<scale>1.0</scale>
<mass>2.0</mass>
</object>
</composition>
<composition>
<typeID>60</typeID>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.0</yOffset>
<zOffset>0.0</zOffset>
<scale>1.0</scale>
<mass>2.0</mass>
</object>
</composition>
<composition>
<typeID>99</typeID>
<object>
<modelPath>torch.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.0</yOffset>
<zOffset>0.0</zOffset>
<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>1.0</gColour>
<bColour>1.0</bColour>
<intensity>4.0</intensity>
</light>
</composition>
<composition>
<typeID>100</typeID>
<object>
<modelPath>column.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.0</yOffset>
<zOffset>0.0</zOffset>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>column.obj</modelPath>
<xOffset>2.0</xOffset>
<yOffset>0.0</yOffset>
<zOffset>0.0</zOffset>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
<object>
<modelPath>block.obj</modelPath>
<xOffset>1.0</xOffset>
<yOffset>3.0</yOffset>
<zOffset>0.0</zOffset>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
</composition>
<composition>
<typeID>120</typeID>
<object>
<modelPath>switch_inner.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.0</yOffset>
<zOffset>0.0</zOffset>
<scale>1.0</scale>
<mass>1.0</mass>
</object>
<object>
<modelPath>switch_outer.obj</modelPath>
<xOffset>0.0</xOffset>
<yOffset>0.0</yOffset>
<zOffset>0.0</zOffset>
<scale>1.0</scale>
<mass>0.0</mass>
</object>
</composition>
<objectData>
<modelPath>marbleSmooth.obj</modelPath>
<texturePath>MarbleTexture.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.5</diffuseFactor>
<specularFactor>0.5</specularFactor>
<shininess>3.0</shininess>
<physicType>Player</physicType>
<radius>1.25</radius>
</objectData>
<objectData>
<modelPath>block.obj</modelPath>
<texturePath>blockTexture_small.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>2.0</shininess>
<physicType>Box</physicType>
<width>1.0</width>
<height>1.0</height>
<length>3.0</length>
</objectData>
<objectData>
<modelPath>column.obj</modelPath>
<texturePath>columnTexture2.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>2.0</shininess>
<physicType>TriangleMesh</physicType>
<dampningL>1.0</dampningL>
<dampningA>1.0</dampningA>
</objectData>
<objectData>
<modelPath>torch.obj</modelPath>
<texturePath>torchTexture.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.3</diffuseFactor>
<specularFactor>0.7</specularFactor>
<shininess>10.0</shininess>
<physicType>TriangleMesh</physicType>
<dampningL>1.0</dampningL>
<dampningA>1.0</dampningA>
</objectData>
<objectData>
<modelPath>switch_inner.obj</modelPath>
<texturePath>switchTextureInner.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>2.0</shininess>
<physicType>TriangleMesh</physicType>
<dampningL>0.5</dampningL>
<dampningA>0.5</dampningA>
</objectData>
<objectData>
<modelPath>switch_outer.obj</modelPath>
<texturePath>switchTextureOuter.png</texturePath>
<ambientFactor>0.1</ambientFactor>
<diffuseFactor>0.6</diffuseFactor>
<specularFactor>0.4</specularFactor>
<shininess>2.0</shininess>
<physicType>TriangleMesh</physicType>
<dampningL>1.0</dampningL>
<dampningA>1.0</dampningA>
</objectData>

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

View File

@ -0,0 +1,67 @@
<composition>
<scale>1.0</scale>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<manualPos>false</manualPos>
<xPos>-0.500000</xPos>
<yOffset>0.0</yOffset>
<zPos>1.500000</zPos>
<idGreen>1</idGreen>
<idBlue>5</idBlue>
<typeID>99</typeID>
</composition>
<composition>
<scale>1.0</scale>
<xRot>0.0</xRot>
<yRot>0.0</yRot>
<zRot>0.0</zRot>
<manualPos>false</manualPos>
<xPos>-2.500000</xPos>
<yOffset>0.0</yOffset>
<zPos>-1.500000</zPos>
<idGreen>1</idGreen>
<idBlue>3</idBlue>
<typeID>99</typeID>
</composition>
<ambientLight>
<rColour>1.0</rColour>
<gColour>1.0</gColour>
<bColour>1.0</bColour>
</ambientLight>
<fogColour>
<rColour>0.10</rColour>
<gColour>0.14</gColour>
<bColour>0.14</bColour>
<alpha>1.0</alpha>
</fogColour>
<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>
<skydome>
<texture>skydome.png</texture>
</skydome>
<trigger>
<name>-</name>
<xPosition>0.0</xPosition>
<yPosition>0.0</yPosition>
<zPosition>0.0</zPosition>
<distance>1.0</distance>
<isBiggerThan>false</isBiggerThan>
<idGreen>0</idGreen>
<idBlue>0</idBlue>
<objectNum>1</objectNum>
<functionPointer>-</functionPointer>
</trigger>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 MiB

After

Width:  |  Height:  |  Size: 11 MiB

View File

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

Before

Width:  |  Height:  |  Size: 721 KiB

After

Width:  |  Height:  |  Size: 721 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

BIN
Levels/Textures/skydome.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 MiB

After

Width:  |  Height:  |  Size: 2.5 MiB

View File

Before

Width:  |  Height:  |  Size: 2.8 MiB

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

BIN
Levels/heightmapLvl0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
Levels/heightmapLvl02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 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.

7
Shader/depth.fsh Normal file
View File

@ -0,0 +1,7 @@
#version 150
out float fragmentDepth;
void main() {
fragmentDepth = gl_FragCoord.z;
}

134
Shader/phong.fsh Normal file
View File

@ -0,0 +1,134 @@
#version 400
in vec3 vNormal;
in vec2 vTexCoord;
in vec4 fragPosition;
in vec4 shadowCoord_near;
in vec4 shadowCoord_middle;
in vec4 shadowCoord_far;
out vec4 oColor;
uniform sampler2D uTexture;
uniform sampler2DShadow shadowMap_near;
uniform sampler2DShadow shadowMap_middle;
uniform sampler2DShadow shadowMap_far;
uniform vec3 ambientColor;
uniform float ambientFactor;
uniform float diffuseFactor;
uniform float specularFactor;
uniform vec3 camera;
uniform float shininess;
uniform int lightCount;
uniform vec3 directionalLightVector;
uniform vec3 directionalColor;
uniform float directionalIntensity;
uniform vec3 lightSources[32];
uniform vec3 lightColors[32];
uniform float lightIntensities[32];
uniform float fogEnd;
uniform vec4 fogColor;
uniform vec3 cameraCenter;
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 )
);
float sampleShadow(sampler2DShadow shadowMap, vec4 shadowCoord) {
float visibility = 1.0;
float bias = 0.001*tan(acos(clamp(dot(vNormal, -directionalLightVector), 0.0, 1.0)));
bias = clamp(bias, 0.0, 0.01);
for (int i=0; i<4; i++) {
visibility -= directionalIntensity/16*(1.0-texture(shadowMap, vec3(shadowCoord.xy + poissonDisk[i]/700.0, (shadowCoord.z - bias)/shadowCoord.w)));
}
if (visibility == 1.0-(directionalIntensity/16)*4)
{
visibility = 1.0-directionalIntensity;
}
else if (visibility != 1.0) {
for (int i=0; i<12; i++) {
visibility -= directionalIntensity/16*(1.0-texture(shadowMap, vec3(shadowCoord.xy + poissonDisk[i]/700.0, (shadowCoord.z - bias)/shadowCoord.w)));
}
}
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
if(length(directionalLightVector)>0.0f) {
vec3 directionalVector = normalize(directionalLightVector);
diffuseColor += clamp(dot(normalize(vNormal), directionalVector)
*diffuseFactor*directionalIntensity*directionalColor, 0.0, 1.0);
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*directionalColor;
}
// point lights
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 = clamp(exp(-(1/lightIntensities[i])*distance), 0.0, 1.0);
diffuseColor += clamp(dot(normalize(vNormal), lightVector)
*diffuseFactor*intensity*lightColors[i], 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), 0.0, 1.0)
*specularFactor*intensity*lightColors[i];
}
}
// shadows
float visibility = 1.0;
if (distanceToBorder(shadowCoord_middle.xy) <= 0.5 && distanceToBorder(shadowCoord_middle.xy) > 0.0) {
if (distanceToBorder(shadowCoord_near.xy) <= 0.5 && distanceToBorder(shadowCoord_near.xy) > 0.0) {
visibility = sampleShadow(shadowMap_near, shadowCoord_near);
}
else {
visibility = sampleShadow(shadowMap_middle, shadowCoord_middle);
}
}
else {
visibility = sampleShadow(shadowMap_far, shadowCoord_far);
}
specularColor *= visibility;
diffuseColor *= visibility;
vec3 finalColor = specularColor + diffuseColor + ambientColor;
float distanceCameraCenter = distance(cameraCenter, vec3(fragPosition));
float fogFactor = clamp((1.0 - (fogEnd-distanceCameraCenter)/30.0), 0.0, 1.0);
fogFactor *= clamp((1.0-((fragPosition.y-8.0)/30.0)), 0.0, 1.0);
vec4 texture = texture(uTexture, vTexCoord).rgba;
oColor = vec4(finalColor, 1.0f)*texture;
oColor = mix(oColor, fogColor, fogFactor);
}

View File

@ -11,21 +11,17 @@ 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;
out vec4 shadowCoord_near;
out vec4 shadowCoord_middle;
out vec4 shadowCoord_far;
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);
shadowCoord_near = shadowMVPs[0] * vec4(aPosition, 1.0);
shadowCoord_middle = shadowMVPs[1] * vec4(aPosition, 1.0);
shadowCoord_far = shadowMVPs[2] * vec4(aPosition, 1.0);
gl_Position = modelViewProjectionMatrix * vec4(aPosition, 1.0);
}

71
application.cc Normal file
View File

@ -0,0 +1,71 @@
#include "application.hh"
Application::Application() {
graphics = Graphics(glm::uvec2(1024, 786), 0.1f, 150.0f);
}
void Application::init()
{
// choose Level TODO: Choose this in a menu
this->level = Level("0");
// Don't change this!
ignoredMouseUpdates = 0;
cameraLock = true;
// set Skybox size
level.setSkydomeSize((graphics.getFarPlane())-31.0f);
// define where shaders and textures can be found:
ACGL::Base::Settings::the()->setResourcePath("../");
ACGL::Base::Settings::the()->setShaderPath("Shader/");
ACGL::Base::Settings::the()->setTexturePath("Levels/Textures/");
ACGL::Base::Settings::the()->setGeometryPath("Levels/Geometry/");
// load Level
level.load();
graphics.init(&level);
// just in case: check for errors
openGLCriticalError();
}
Graphics* Application::getGraphics() {
return &graphics;
}
Level* Application::getLevel() {
return &level;
}
void Application::setFocused(bool focused) {
this->focused = focused;
}
bool Application::isFocused() {
return focused;
}
void Application::setCameraLock(bool locked) {
// Prevent camera jumping huge distances
if (!locked) {
ignoreNextMouseUpdate();
}
cameraLock = locked;
}
void Application::ignoreNextMouseUpdate() {
ignoredMouseUpdates++;
}
void Application::ignoredOneMouseUpdate() {
ignoredMouseUpdates--;
}
int Application::getIgnoredMouseUpdates() {
return ignoredMouseUpdates;
}
bool Application::isLocked() {
return cameraLock;
}

29
application.hh Normal file
View File

@ -0,0 +1,29 @@
#ifndef APPLICATION_HH_INCLUDED
#define APPLICATION_HH_INCLUDED
#include "physics.hh"
#include "graphics.hh"
#include "level.hh"
class Application {
public:
Application();
Graphics* getGraphics();
Level* getLevel();
void init();
void setFocused(bool focused);
bool isFocused();
void setCameraLock(bool locked);
bool isLocked();
void ignoreNextMouseUpdate();
int getIgnoredMouseUpdates();
void ignoredOneMouseUpdate();
private:
int ignoredMouseUpdates;
bool focused;
bool cameraLock;
Graphics graphics;
Level level;
};
#endif

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,7 +5,6 @@ then
rm -rf build
rm -rf binaries
rm -rf extern/bullet/build
cd extern/lua; make clean; cd ../..
exit
fi
@ -16,28 +15,9 @@ 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/
@ -45,10 +25,10 @@ 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 ..
$cmake -DBUILD_DEMOS=0 -DBUILD_EXTRAS=0 -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -GNinja ..
ninja
else
$cmake -DBUILD_DEMOS=0 -DBUILD_EXTRAS=0 -DCMAKE_BUILD_TYPE=$buildType -DBUILD_SHARED_LIBS=0 ..
$cmake -DBUILD_DEMOS=0 -DBUILD_EXTRAS=0 -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 ..
make -j$threads
fi
@ -60,9 +40,9 @@ 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 ..
$cmake -DGLFW_BUILD_EXAMPLES=0 -DGLFW_BUILD_TESTS=0 -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 -GNinja ..
ninja
else
$cmake -DGLFW_BUILD_EXAMPLES=0 -DGLFW_BUILD_TESTS=0 -DCMAKE_BUILD_TYPE=$buildType -DBUILD_SHARED_LIBS=0 ..
$cmake -DGLFW_BUILD_EXAMPLES=0 -DGLFW_BUILD_TESTS=0 -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=0 ..
make -j$threads
fi

View File

@ -3,11 +3,11 @@
Camera::Camera(glm::vec2 rotation, float distance) {
this->rotation = rotation;
this->distance = distance;
this->setIsPhysicsCamera(true);
}
Camera::Camera() {
Camera(glm::vec2(0.0f, 0.0f), 5.0f);
rotation = glm::vec2(0.0f, 0.0f);
distance = 1.0f;
}
Camera::~Camera() {
@ -31,16 +31,8 @@ void Camera::setRotation(glm::vec2 rotation) {
updatePosition();
}
bool Camera::getIsPhysicsCamera()
{
return usePhysicsCamera;
}
void Camera::setIsPhysicsCamera(bool val)
{
usePhysicsCamera = val;
}
void Camera::updateRotation(glm::vec2 rotation) {
this->rotation += rotation;
if((this->rotation.x + rotation.x) >= 1.57f) {
this->rotation.x = 1.57;
this->rotation.y += rotation.y;
@ -56,11 +48,11 @@ void Camera::updateRotation(glm::vec2 rotation) {
}
void Camera:: updateDistance(float distance) {
if (this->distance + distance <= 2.5f) {
this->distance = 2.5f;
if (this->distance + distance <= 1.0f) {
this->distance = 1.0f;
}
else if (this->distance + distance >= 15.0f) {
this->distance = 15.f;
else if (this->distance + distance >= 30.0f) {
this->distance = 30.f;
}
else {
this->distance += distance;
@ -68,27 +60,6 @@ void Camera:: updateDistance(float distance) {
updatePosition();
}
void Camera::setPosition(glm::vec3 pos)
{
position = pos;
}
glm::vec3 Camera::getPosition()
{
return position;
}
void Camera::setDirection(glm::vec3 dir)
{
direction = dir;
}
glm::vec3 Camera::getDirection()
{
return direction;
}
void Camera::updatePosition() {
glm::vec4 cameraVector = glm::vec4(0.0f, 0.0f, distance, 0.0f);
// rotate vector

View File

@ -15,20 +15,11 @@ class Camera {
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

@ -19,14 +19,13 @@ database:
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
- docker run -v ~/swp:/swp/swp -w=/swp/swp -u=$(id -u) faerbit/swp ./package.sh linux
- docker run -v ~/swp:/swp/swp -w=/swp/swp -u=$(id -u) faerbit/swp ./package.sh windows
- cp MarbleGame_Windows.zip MarbleGame_Linux.zip $CIRCLE_ARTIFACTS
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
- ./dropbox_uploader.sh -p upload MarbleGame_Windows.zip /
- ./dropbox_uploader.sh -p upload MarbleGame_Linux.zip /

View File

@ -32,28 +32,13 @@ 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})
SET(SOURCE_FILES_CONV ${SOURCE_FILES_CONV})
FILE(GLOB_RECURSE HEADER_FILES_CONV "${CMAKE_SOURCE_DIR}/converter/*.hh")
SET(HEADER_FILES_CONV ${HEADER_FILES_CONV} ${HEADER_FILES_EXTERN})
SET(HEADER_FILES_CONV ${HEADER_FILES})
ADD_EXECUTABLE(converter ${SOURCE_FILES_CONV} ${HEADER_FILES_CONV})

View File

@ -1,25 +1,24 @@
#include "converter.hh"
#include <fstream>
#include <string>
#include <sys/stat.h>
#include <iostream>
using namespace tinyxml2;
Converter::Converter(std::string levelPath, std::string levelName, std::string compositionsPath){
xmlFile = levelPath + levelName + ".xml";
Converter::Converter(std::string level){
xmlFile = "../Levels/ObjectSetups/Level" + level + ".xml";
//Load Compositions
std::string stringCompositions = compositionsPath;
const char* charCompositions = stringCompositions.c_str();
const char* charCompositions = "../Levels/ObjectSetups/Compositions.xml";
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";
std::string pngFile = "../Levels/ObjectSetups/Level" + level + ".png";
std::string backupPNG = "../Levels/ObjectSetups/BackupLevel" + level + ".png";
struct stat buf;
if(stat(backupPNG.c_str(), &buf) != 0){
std::ifstream src(pngFile, std::ios::binary);
@ -27,31 +26,20 @@ Converter::Converter(std::string levelPath, std::string levelName, std::string c
dst << src.rdbuf();
}
//Create a backup of the current Level xml file
std::string backupXML = "../Levels/ObjectSetups/BackupLevel" + level + ".xml";
std::ifstream src(xmlFile, std::ios::binary);
std::ofstream dst(backupXML, 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;
nextID.push_back(1);
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
printf("Could not open xml, creating new xml.\n");
//Create all global Elements with Dummy-Values
std::vector<XMLElement*> lightAttributes;
lightAttributes.push_back(doc->NewElement("xOffset"));
lightAttributes.push_back(doc->NewElement("yOffset"));
@ -63,18 +51,10 @@ Converter::Converter(std::string levelPath, std::string levelName, std::string c
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");
XMLElement* rColourFog = doc->NewElement("rColour");
XMLElement* gColourFog = doc->NewElement("gColour");
XMLElement* bColourFog = doc->NewElement("bColour");
XMLElement* alphaFog = doc->NewElement("alpha");
lightAttributes[0]->SetText("-1.0");
lightAttributes[1]->SetText("1.5");
@ -86,125 +66,79 @@ Converter::Converter(std::string levelPath, std::string levelName, std::string c
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");
rColourFog->SetText("0.10");
gColourFog->SetText("0.14");
bColourFog->SetText("0.14");
alphaFog->SetText("1.0");
XMLElement* ambientLight = doc->NewElement("ambientLight");
XMLElement* fogColourDay = doc->NewElement("fogColourDay");
XMLElement* fogColourRise = doc->NewElement("fogColourRise");
XMLElement* fogColourNight = doc->NewElement("fogColourNight");
XMLElement* fogColour = doc->NewElement("fogColour");
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);
fogColour->InsertEndChild(rColourFog);
fogColour->InsertEndChild(gColourFog);
fogColour->InsertEndChild(bColourFog);
fogColour->InsertEndChild(alphaFog);
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(ambientLight);
doc->InsertEndChild(fogColour);
doc->InsertEndChild(directionalLight);
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);
//Create a Dummy-trigger
XMLElement* trigger = doc->NewElement("trigger");
doc->InsertEndChild(trigger);
XMLElement* name = doc->NewElement("name");
XMLElement* xPosition = doc->NewElement("xPosition");
XMLElement* yPosition = doc->NewElement("yPosition");
XMLElement* zPosition = doc->NewElement("zPosition");
XMLElement* distance = doc->NewElement("distance");
XMLElement* isBiggerThan = doc->NewElement("isBiggerThan");
XMLElement* idGreen = doc->NewElement("idGreen");
XMLElement* idBlue = doc->NewElement("idBlue");
XMLElement* objectNum = doc->NewElement("objectNum");
XMLElement* functionPointer = doc->NewElement("functionPointer");
name->SetText("-");
xPosition->SetText("0.0");
yPosition->SetText("0.0");
zPosition->SetText("0.0");
distance->SetText("1.0");
isBiggerThan->SetText("false");
idGreen->SetText("0");
idBlue->SetText("0");
objectNum->SetText("1");
functionPointer->SetText("-");
trigger->InsertEndChild(name);
trigger->InsertEndChild(xPosition);
trigger->InsertEndChild(yPosition);
trigger->InsertEndChild(zPosition);
trigger->InsertEndChild(distance);
trigger->InsertEndChild(isBiggerThan);
trigger->InsertEndChild(idGreen);
trigger->InsertEndChild(idBlue);
trigger->InsertEndChild(objectNum);
trigger->InsertEndChild(functionPointer);
}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");
int idGreen, idBlue;
for(; thisComposition; thisComposition=thisComposition->NextSiblingElement("composition")){
int idGreen = queryInt(thisComposition, "idGreen");
int idBlue = queryInt(thisComposition, "idBlue");
idUsed[idGreen][idBlue] = true;
errorCheck(thisComposition->FirstChildElement("idGreen")->QueryIntText(&idGreen));
errorCheck(thisComposition->FirstChildElement("idBlue")->QueryIntText(&idBlue));
if(idGreen > nextID[0] || (idGreen == nextID[0] && idBlue > nextID[1])){
nextID[0] = idGreen;
nextID[1] = idBlue;
}
}
}
}
@ -216,52 +150,9 @@ 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");
doc->InsertFirstChild(newComposition);
XMLElement* typeID = doc->NewElement("typeID");
XMLElement* idBlue = doc->NewElement("idBlue");
XMLElement* idGreen = doc->NewElement("idGreen");
@ -298,71 +189,25 @@ std::vector<int> Converter::newComposition(int type, float posX, float posZ){
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;
std::vector<int> ret = nextID;
nextID[1] += 1;
if (nextID[1] == 255){
nextID[1] = 0;
nextID[0] +=1;
}
return ret;
}
void Converter::updateComposition(int idG, int idB, float posX, float posZ){
XMLElement* thisComposition = doc->FirstChildElement("composition");
int idGreen = 0, idBlue = 0;
bool compositionExists = false;
for(; thisComposition; thisComposition=thisComposition->NextSiblingElement("composition")){
int idGreen = queryInt(thisComposition, "idGreen");
int idBlue = queryInt(thisComposition, "idBlue");
errorCheck(thisComposition->FirstChildElement("idGreen")->QueryIntText(&idGreen));
errorCheck(thisComposition->FirstChildElement("idBlue")->QueryIntText(&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");
bool manualPos;
errorCheck(thisComposition->FirstChildElement("manualPos")->QueryBoolText(&manualPos));
if(!manualPos){
thisComposition->FirstChildElement("xPos")->SetText(std::to_string(posX).c_str());
thisComposition->FirstChildElement("zPos")->SetText(std::to_string(posZ).c_str());
@ -371,16 +216,17 @@ void Converter::updateComposition(int idG, int idB, float posX, float posZ){
}
}
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;
std::cout << "A composition has an ID in the png, but does'nt exist in the xml." << std::endl;
exit(-1);
}
}
void Converter::deleteComposition(int idG, int idB){
XMLElement* thisComposition = doc->FirstChildElement("composition");
int idGreen, idBlue;
for(; thisComposition; thisComposition=thisComposition->NextSiblingElement("composition")){
int idGreen = queryInt(thisComposition, "idGreen");
int idBlue = queryInt(thisComposition, "idBlue");
errorCheck(thisComposition->FirstChildElement("idGreen")->QueryIntText(&idGreen));
errorCheck(thisComposition->FirstChildElement("idBlue")->QueryIntText(&idBlue));
if(idGreen == idG && idBlue == idB){
doc->DeleteChild(thisComposition);
}
@ -392,70 +238,8 @@ void Converter::save(){
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;
std::vector<int> Converter::getNextID(){
return nextID;
}
void Converter::errorCheck(XMLError error){
@ -476,6 +260,5 @@ void Converter::errorCheck(XMLError error){
else {
printf("Unknown error.\n");
}
exit(-1);
}
}

View File

@ -8,26 +8,21 @@
using namespace tinyxml2;
class Converter {
public:
Converter(std::string levelPath, std::string levelName, std::string compositionsPath);
Converter(std::string level);
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
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
std::vector<int> getNextID(); //returns the next unused ID
private:
void errorCheck(XMLError error);
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

6096
converter/lodepng.cc Normal file

File diff suppressed because it is too large Load Diff

1702
converter/lodepng.hh Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +1,16 @@
#include <lodepng/lodepng.h>
#include "lodepng.hh"
#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;
std::cout << "Converter needs the level (1,2,...) as input." << std::endl;
exit(-1);
}
printf("Initializing.\n");
std::string levelString = argv[1];
Converter conv = Converter(levelString);
bool idFound[256][256];
for (int i=0; i<256; i++){
for (int j=0; j<256; j++){
@ -23,81 +18,44 @@ int main( int argc, char *argv[] ){
}
}
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";
//read the setup png
std::string filePath = "../Levels/ObjectSetups/Level" + 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++){
for(unsigned int rowNum = 0; rowNum < height; rowNum++){
for(unsigned int columnNum = 0; columnNum < width; columnNum++){
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);
if((image[pixel+1]==0 && image[pixel+2]==0) || (image[pixel+1]==255 && image[pixel+2]==255)){
std::vector<int> temp;
temp = conv.newComposition(image[pixel], 0.5+rowNum-0.5*height, 0.5+columnNum-0.5*width);
idFound[temp[0]][temp[1]] = true;
image[pixel+1] = temp[0];
image[pixel+2] = temp[1];
}else{
conv.updateComposition(image[pixel+1], image[pixel+2], 0.5+rowNum-0.5*height, 0.5+columnNum-0.5*width);
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++){
for (int i=1; i<=conv.getNextID()[1]; i++){
for (int j=1; j<256; j++){
if (! idFound[i][j]){
conv.deleteComposition(i,j);
}
@ -107,3 +65,4 @@ int main( int argc, char *argv[] ){
//save the xml
conv.save();
}

0
extern/tinyxml/tinyxml2.cc → converter/tinyxml2.cc Normal file → Executable file
View File

0
extern/tinyxml/tinyxml2.hh → converter/tinyxml2.hh Normal file → Executable file
View File

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,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

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,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);
}

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