Compare commits
917 Commits
debug-shad
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
3b25514233 | ||
|
45d969c16e | ||
|
fe8b0a57cd | ||
|
3437ce6173 | ||
|
8452d18575 | ||
|
4c40ddd12d | ||
|
00a08bf5f0 | ||
|
52ea40100f | ||
|
4ba056c6d9 | ||
|
67b44042bd | ||
|
1ef8047f42 | ||
|
b8114ebd91 | ||
|
a6876f0872 | ||
|
5f779ea3d5 | ||
|
bedc836cb0 | ||
|
56ca9d694b | ||
|
d752b34dfc | ||
|
b55a5e1906 | ||
|
ea8e7b6048 | ||
|
e8c1dee3b5 | ||
|
819584ef15 | ||
|
ea194309ef | ||
|
b280ad8c12 | ||
|
90dbd52aca | ||
|
2a09c7f83c | ||
|
3fffa4c4ca | ||
|
592f84b548 | ||
|
836f75d7fe | ||
|
f389aa2f4a | ||
|
4a35c4feba | ||
|
53e8e6d719 | ||
|
b8db45fc7c | ||
|
34cac6f464 | ||
|
5dbf839f76 | ||
|
806182835f | ||
|
52a36c9b18 | ||
|
1f1741effb | ||
|
96f146d6f0 | ||
|
23618a2fa8 | ||
|
030f8b298a | ||
|
c8ba61ca56 | ||
|
a8ce6916e7 | ||
|
b110551db6 | ||
|
9ea1630057 | ||
|
32b9d6597e | ||
|
b6467a92a3 | ||
|
0bee5f915d | ||
|
536ffc899e | ||
|
a56907a956 | ||
|
5a1ab063b7 | ||
|
a173e1b9eb | ||
|
95ce45c944 | ||
|
faf19aa424 | ||
|
9b89007674 | ||
|
40dfbf33d9 | ||
|
96a8943cb7 | ||
|
b52bef795a | ||
|
9b2ca4d1d3 | ||
|
93f790ec22 | ||
|
9b57eb0df1 | ||
|
2962acfded | ||
|
d642582956 | ||
|
127ee7a6ca | ||
|
fc2ce96771 | ||
|
2b2e05f009 | ||
|
5546abd24a | ||
|
796db123b7 | ||
|
b39e6702cc | ||
|
6d167a2d2a | ||
|
319b57bf7a | ||
|
300f14c752 | ||
|
3de85042d0 | ||
|
2a2e89d445 | ||
|
78972a87bf | ||
|
2a3f976b5e | ||
|
1fd6058eaf | ||
|
a07a4bbb91 | ||
|
2a0cb3ca1d | ||
|
795801faa6 | ||
|
3680abfba4 | ||
|
09282f51fd | ||
|
3a2156492e | ||
|
43b752ee63 | ||
|
f9212c9938 | ||
|
79223b4c02 | ||
|
ac48ab8cc0 | ||
|
d0fed9a321 | ||
|
a7fb739204 | ||
|
7957b8b555 | ||
|
498be94102 | ||
|
7b742e913f | ||
|
73f7ec6a70 | ||
|
761d25e9c7 | ||
|
1dde41d5f4 | ||
|
07e036451d | ||
|
ab7d1c81df | ||
|
10a87be81f | ||
|
ea21910255 | ||
|
15412b9b45 | ||
|
78e7362392 | ||
|
5f0e5cf623 | ||
|
0ae43db53e | ||
|
9fced79888 | ||
|
c74397a567 | ||
|
f338fe8c94 | ||
|
1f6dc97e12 | ||
|
c091c3fd38 | ||
|
22d4ee0769 | ||
|
6bb9624908 | ||
|
d58ba7c1c7 | ||
|
857fc76c40 | ||
|
48d9f173f3 | ||
|
a1de7e5231 | ||
|
e06eea7c5d | ||
|
7b80f34f4f | ||
|
d1df99914a | ||
|
40da86aad6 | ||
|
36173438cc | ||
|
e9179eba71 | ||
|
d6aef2a244 | ||
|
e13ddb14f6 | ||
|
b19118252f | ||
|
608c159aa6 | ||
|
33e7baed94 | ||
|
5d52c9cdaf | ||
|
dd9997dc82 | ||
|
e2ed7cac88 | ||
|
bf9ec726fc | ||
|
f4adcb122b | ||
|
2b0be77ac9 | ||
|
85d08d81d2 | ||
|
398147d79c | ||
|
834496699d | ||
|
92fbc39dc5 | ||
|
33c59fc387 | ||
|
f35d35cc94 | ||
|
e888d7df0e | ||
|
dfaf8c0965 | ||
|
65552409f0 | ||
|
8f6c27ae32 | ||
|
63acfef341 | ||
|
370135fca8 | ||
|
7e0394df00 | ||
|
680f32424f | ||
|
70b7289a43 | ||
|
68a355dbe9 | ||
|
a725cf8b43 | ||
|
ab6d2e4ffd | ||
|
4d6ee7093f | ||
|
436495f0c7 | ||
|
e2e343db1a | ||
|
9a54c033c0 | ||
|
3614ff4892 | ||
|
3d6a681676 | ||
|
08d809ea51 | ||
|
9faa23784d | ||
|
e8fae9fb59 | ||
|
285b049f04 | ||
|
26834c1b0f | ||
|
144d82fd63 | ||
|
b967085e7d | ||
|
89874b8612 | ||
|
1bf34b6751 | ||
|
df2435efdc | ||
|
da26ac016d | ||
|
5e9b550ea1 | ||
|
efa2fb5ef5 | ||
|
86be3f43dd | ||
|
db2d696374 | ||
|
96aaee816e | ||
|
f32e78f06b | ||
|
41eed47edb | ||
|
5569079511 | ||
|
e2de06fe2b | ||
|
09fc128136 | ||
|
79e75b70ec | ||
|
680b8bcd5d | ||
|
3a0ec498ae | ||
|
710644a822 | ||
|
8a66c35b64 | ||
|
534405ffdf | ||
|
8e18b24f94 | ||
|
bc8315db35 | ||
|
6c0d2e72bf | ||
|
5966a54a1c | ||
|
0b6df8ef5a | ||
|
15a0d4aefb | ||
|
5616e9ce7b | ||
|
87942dbb14 | ||
|
d10047176d | ||
|
4d941a52a5 | ||
|
c74d2c8b89 | ||
|
8325611c28 | ||
|
c25d2b86a0 | ||
|
c856227b47 | ||
|
f4d84a2b11 | ||
|
e7a2eac348 | ||
|
8349f8594e | ||
|
3090c5e0f9 | ||
|
428c9df4ea | ||
|
1b3fa3eed3 | ||
|
cbb65848d9 | ||
|
75396ce127 | ||
|
dbd2b665be | ||
|
6e27f018a7 | ||
|
2c3a73d556 | ||
|
2b90ca6d3c | ||
|
71decbd5b3 | ||
|
8d5ce5cf18 | ||
|
be21855e1d | ||
|
28119ea906 | ||
|
b03520f1e7 | ||
|
f1e87f4cb9 | ||
|
b4f20affeb | ||
|
9001de47ee | ||
|
6136c095ae | ||
|
7359e95d4c | ||
|
3ae3c84a39 | ||
|
7ef0fddd1f | ||
|
f71f9e0590 | ||
|
caf5d3cf22 | ||
|
f3887390a9 | ||
|
abb8c981bc | ||
|
0a75dd030a | ||
|
c2d669e5b3 | ||
|
67c1c812a5 | ||
|
95de9295e7 | ||
|
4992292563 | ||
|
8694025e08 | ||
|
3ad7ddf1cd | ||
|
2fce9296a7 | ||
|
936ab87ba0 | ||
|
251048bbd0 | ||
|
bfd8b25a7d | ||
|
4bfcc282a1 | ||
|
b313bd0645 | ||
|
9609c50335 | ||
|
5599a39eff | ||
|
4a7c552508 | ||
|
86fa3b1c66 | ||
|
6e8d3c36df | ||
|
eda952df70 | ||
|
528108e7bc | ||
|
371cccb273 | ||
|
65e2e326ed | ||
|
3ee8cfdbad | ||
|
ea248caa47 | ||
|
abca7c9f1e | ||
|
b8538be749 | ||
|
bac8308ae2 | ||
|
c89ce83fb3 | ||
|
451a0836cf | ||
|
ecb88e9140 | ||
|
185371d78c | ||
|
93f87cc9c5 | ||
|
b68015a6c4 | ||
|
bd584c3ce4 | ||
|
b90f03c397 | ||
|
d64d7ca0dc | ||
|
3eeea52f5e | ||
|
d3c812bba3 | ||
|
48174a4fb5 | ||
|
e02d223574 | ||
|
d24e70dbdd | ||
|
86619fd2dd | ||
|
1ab8bb9a92 | ||
|
0b8c426adb | ||
|
45fce8b464 | ||
|
e2078cb4a2 | ||
|
0f8f261d30 | ||
|
4b5e9416a1 | ||
|
5b5b4a8676 | ||
|
376c92d9b0 | ||
|
736aa50ac6 | ||
|
f38d57bb70 | ||
|
7d480d654f | ||
|
5dfa5f89e8 | ||
|
5778696d29 | ||
|
7288ff6fc9 | ||
|
3d5289da45 | ||
|
49f612fe67 | ||
|
60a127eefc | ||
|
9a4cb335a0 | ||
|
49f041341a | ||
|
c3a9652cf1 | ||
|
e328298474 | ||
|
cb762be52b | ||
|
39a0883466 | ||
|
a835604a5a | ||
|
b7fa9ee5a1 | ||
|
dfe83042b5 | ||
|
e34d9e4e38 | ||
|
1399f6ad7a | ||
|
23f8ea8fa7 | ||
|
0460b463d1 | ||
|
522e2f0db5 | ||
|
62e7c42ec6 | ||
|
f1526fd389 | ||
|
db18560dbf | ||
|
1b8b8125f4 | ||
|
00506c6b3e | ||
|
e4c9418d4a | ||
|
0f7240b047 | ||
|
2dd09aff19 | ||
|
95c88979f4 | ||
|
019c150521 | ||
|
99995d0745 | ||
|
d9f0950463 | ||
|
fa8ba1335e | ||
|
3e86b70778 | ||
|
2c333773b2 | ||
|
6af54ab02f | ||
|
8224250867 | ||
|
79faa2edea | ||
|
bb30aee8d3 | ||
|
bed9f09539 | ||
|
fce73f1285 | ||
|
b7f95ebb40 | ||
|
4b0c875504 | ||
|
d17ed99d96 | ||
|
d273d131e2 | ||
|
6004651adc | ||
|
98e8d10cdd | ||
|
01a61f43ac | ||
|
aa2ed3083a | ||
|
afae5ccd68 | ||
|
12f76ddd5a | ||
|
e14a2305a0 | ||
|
11322c0446 | ||
|
88d5229b35 | ||
|
cdde802756 | ||
|
d827bb8197 | ||
|
c01ca1a1f2 | ||
|
16ba763ddc | ||
|
8e1c776f80 | ||
|
94cdd16394 | ||
|
f48d6d4648 | ||
|
ef9c089d91 | ||
|
20055d7fc5 | ||
|
93fe07678c | ||
|
6fee8a81b1 | ||
|
8b5f6f9b74 | ||
|
b7718d73e8 | ||
|
a811ed57be | ||
|
fa47c93b46 | ||
|
0292ab422a | ||
|
a88112d639 | ||
|
2930a86959 | ||
|
f34dbf891c | ||
|
916c26cda1 | ||
|
b28f4d3bef | ||
|
dd0afd1978 | ||
|
686647fe93 | ||
|
6fe51809a0 | ||
|
0d8256abe5 | ||
|
8f0ec319c4 | ||
|
e043fe482a | ||
|
d5771f8eea | ||
|
6140c38813 | ||
|
4d0f2d7be5 | ||
|
48ed278101 | ||
|
9555786a09 | ||
|
986ed9ea8e | ||
|
c372a2d652 | ||
|
81d5f86db1 | ||
|
2fecf21509 | ||
|
813d50ee94 | ||
|
805a5f19b5 | ||
|
2125243a31 | ||
|
7dd4122d44 | ||
|
7ecb76dffa | ||
|
bb090fcf91 | ||
|
6e33af8e61 | ||
|
395803109d | ||
|
b61e7df089 | ||
|
8c34df49b7 | ||
|
b9bdb594f0 | ||
|
47bcf0bf1c | ||
|
4cc21fd378 | ||
|
41de72e3a1 | ||
|
97b9eeeac6 | ||
|
585e40bb8b | ||
|
0887ff5f46 | ||
|
0489fc81fa | ||
|
899253b53c | ||
|
8c1369ad2e | ||
|
1dad2f589f | ||
|
086713341b | ||
|
b974508683 | ||
|
39882d43c3 | ||
|
7f8150d5ed | ||
|
635f6ae546 | ||
|
eab9270b94 | ||
|
87b9634703 | ||
|
650ad89067 | ||
|
a64b1dac00 | ||
|
d49baa2a8c | ||
|
23a3730c37 | ||
|
134faaa67e | ||
|
272dce8900 | ||
|
eff6cabd09 | ||
|
84a9899516 | ||
|
6c78c93c2b | ||
|
abeab11875 | ||
|
2d65071887 | ||
|
9f19d74c2a | ||
|
501aa3def9 | ||
|
53b6db98e6 | ||
|
a77e06f8c8 | ||
|
174fafe5bc | ||
|
2b93aff35d | ||
|
510001b943 | ||
|
97a315661f | ||
|
b3b215e628 | ||
|
edd4f53f66 | ||
|
fd21dd0f9f | ||
|
320b765951 | ||
|
087d36aa15 | ||
|
236067435d | ||
|
8a76ad4133 | ||
|
563bde0616 | ||
|
c2621752fc | ||
|
153e0116c7 | ||
|
99d8a45380 | ||
|
af9f6d6933 | ||
|
f92c7bf6c3 | ||
|
c8788f3329 | ||
|
88d31bc68a | ||
|
3764bb5c6a | ||
|
1742d83d4b | ||
|
efa151aa73 | ||
|
fb028a899f | ||
|
ae1d04b5ee | ||
|
2c699590e2 | ||
|
0e550e52c6 | ||
|
de2ba0acb9 | ||
|
431a9e58b1 | ||
|
97329141bc | ||
|
f05e3d301c | ||
|
12099cb4a1 | ||
|
e9d6ca1c1e | ||
|
9bae3554a2 | ||
|
1f86981271 | ||
|
1adb8f1d80 | ||
|
dc5a281956 | ||
|
2873d300a8 | ||
|
760a7c9d86 | ||
|
3d59fb43c8 | ||
|
df230ea677 | ||
|
f2bfd12aa5 | ||
|
d4fe5e1ae1 | ||
|
1492a312ed | ||
|
265c0b2ce5 | ||
|
5e07aec885 | ||
|
fd1f32be6a | ||
|
377902a255 | ||
|
3f1616adf1 | ||
|
818178e665 | ||
|
51e9b26379 | ||
|
281466ebd5 | ||
|
98718b517e | ||
|
599c849bb0 | ||
|
55434daa24 | ||
|
9049458ad5 | ||
|
75792a5723 | ||
|
3fc8e9c11a | ||
|
d55bb3465c | ||
|
38d4ef8125 | ||
|
e91d045a37 | ||
|
1585195779 | ||
|
6ee8af58e3 | ||
|
d02a7fa02f | ||
|
1ac9e4e270 | ||
|
84d52fbaf2 | ||
|
aaadcbe413 | ||
|
de960237a4 | ||
|
1d8bbba1ca | ||
|
ba2cada6dc | ||
|
9afb3595d0 | ||
|
282eb32267 | ||
|
c28b35667f | ||
|
8cc467a806 | ||
|
2b4a8885b5 | ||
|
096cf12df0 | ||
|
d132cdd233 | ||
|
7647c5f1c0 | ||
|
21d94a420f | ||
|
d2cf4f0003 | ||
|
44153cd554 | ||
|
c4bed4c506 | ||
|
a669c83943 | ||
|
017c96bd55 | ||
|
a14d3420d5 | ||
|
ea58f2fbce | ||
|
320c1cb152 | ||
|
5c2491557b | ||
|
ed10994ebc | ||
|
7c8d149e3a | ||
|
ac19eac671 | ||
|
8babafadfd | ||
|
10082466cf | ||
|
7e8b0d4c58 | ||
|
2e90ac57d8 | ||
|
bb1cf8dea7 | ||
|
c4b01beaa8 | ||
|
e7ff009482 | ||
|
9ffe3cd886 | ||
|
b3e0d5ca47 | ||
|
5c1a342cdb | ||
|
35a13886c3 | ||
|
08e5492b4f | ||
|
2eaf2f7a58 | ||
|
75464e6819 | ||
|
b8dc153f10 | ||
|
1989cb6b13 | ||
|
5e2d2d4e57 | ||
|
2ddd753575 | ||
|
642caa85f6 | ||
|
60372cf1a1 | ||
|
4883b753c0 | ||
|
198dc0614f | ||
|
9c6cd7c59d | ||
|
ae5d31e04c | ||
|
8620e16681 | ||
|
a3e6da2ada | ||
|
e0d9058aef | ||
|
190df8b936 | ||
|
ec8767c14c | ||
|
d6ed98b992 | ||
|
ba0677adde | ||
|
114632b015 | ||
|
377372d1c6 | ||
|
7f13e89935 | ||
|
65087ece48 | ||
|
4d3db6f285 | ||
|
81f94ba221 | ||
|
b6a2b0d7b3 | ||
|
4c5bbb3c73 | ||
|
9088bb4561 | ||
|
d25e18ccc6 | ||
|
ec7250e937 | ||
|
a9ab76ea51 | ||
|
5a860f68c3 | ||
|
c29ced5210 | ||
|
89741cfcb3 | ||
|
f2353d670f | ||
|
e9e7fe1f7c | ||
|
db3fab3d35 | ||
|
56f179e5af | ||
|
a4ae90082a | ||
|
cfbf1b9208 | ||
|
bdb92b2cf1 | ||
|
f7e097029a | ||
|
00de8c0e82 | ||
|
7c1f0e7960 | ||
|
4c1860429a | ||
|
47b386296a | ||
|
1687a56f87 | ||
|
d1a3c3ac3d | ||
|
d41149e29e | ||
|
9847aa3374 | ||
|
2c9755209a | ||
|
099e0c17c7 | ||
|
650d505e4e | ||
|
99217ed399 | ||
|
cf836b151a | ||
|
1940b72b00 | ||
|
65a826f2af | ||
|
25bd4ba64e | ||
|
4ce7464ae7 | ||
|
8306f7ff19 | ||
|
5070940a94 | ||
|
4c71dbfbea | ||
|
bcdbb2534c | ||
|
c3f7b650fb | ||
|
2edbb196c2 | ||
|
aeb4b638c7 | ||
|
65ba8c0249 | ||
|
5670d35865 | ||
|
7cb3e3d620 | ||
|
19f1f0bb44 | ||
|
c2634543dc | ||
|
42b65fa9c0 | ||
|
a8fee3ad84 | ||
|
5dcabf0290 | ||
|
ba14a492f1 | ||
|
70dc3f1450 | ||
|
1cef3d4d0a | ||
|
7a830a472e | ||
|
75440f919f | ||
|
e66fb546b7 | ||
|
3e78b4f4bb | ||
|
aca199cd1b | ||
|
2327d80810 | ||
|
a128c947b1 | ||
|
53fe90fd14 | ||
|
f03a01461d | ||
|
90d64bbade | ||
|
0d8dc4b10d | ||
|
98091fa305 | ||
|
638323c1c2 | ||
|
073000d097 | ||
|
7934bf7991 | ||
|
913e862a88 | ||
|
3cba239897 | ||
|
a4adf627c3 | ||
|
b04e59c15a | ||
|
7275cdf280 | ||
|
0483fd995b | ||
|
80b03508a5 | ||
|
49b1c3c6c6 | ||
|
16bf2477b0 | ||
|
a137d2544a | ||
|
f4408b76e8 | ||
|
72d1009007 | ||
|
d936d1f269 | ||
|
fe58023458 | ||
|
60d76a58de | ||
|
70e2ebb605 | ||
|
76b6be0beb | ||
|
36c42123b8 | ||
|
5b6ad0c6d1 | ||
|
0649444687 | ||
|
20b0c66a17 | ||
|
7d3d7927fe | ||
|
1c2fbc2e91 | ||
|
62b8b0afb9 | ||
|
8d3e2c2fac | ||
|
f21b837b1c | ||
|
136e4d07f0 | ||
|
1cdca7b686 | ||
|
b16a90bd15 | ||
|
5b2c4a6bbc | ||
|
ba847c80f0 | ||
|
bf46f117b6 | ||
|
be4a61e65b | ||
|
d700564b37 | ||
|
6db55f5622 | ||
|
104b8b4bbc | ||
|
799f191485 | ||
|
6b64ec7360 | ||
|
76053c5b2f | ||
|
76dbdac70c | ||
|
8072fd1cbb | ||
|
9fd8ae5cd8 | ||
|
2a7404e7d1 | ||
|
32f8683367 | ||
|
895d69fc66 | ||
|
adde6fd162 | ||
|
e099c231c7 | ||
|
04e5b3a5ac | ||
|
5454a7ddeb | ||
|
a20da59e4a | ||
|
7013f7cf71 | ||
|
00716b63bd | ||
|
a3cc265927 | ||
|
7e31717124 | ||
|
f19b1ddeb1 | ||
|
b6e6ee2d24 | ||
|
371f56695a | ||
|
60c5275e50 | ||
|
a393fb688d | ||
|
7d4d322fd1 | ||
|
efc0ac8938 | ||
|
ea587dc26b | ||
|
a65bfdde84 | ||
|
f499203f93 | ||
|
1b1d06294b | ||
|
f108b64acc | ||
|
f03274082e | ||
|
5640bf137e | ||
|
0979c51ed0 | ||
|
ad567157c4 | ||
|
acdf1b3285 | ||
|
f681987358 | ||
|
cc93cf7259 | ||
|
36f7217288 | ||
|
21009d0032 | ||
|
50c4b16367 | ||
|
44f2bd953d | ||
|
80cbc58f81 | ||
|
7f21f0e872 | ||
|
b2aabe68db | ||
|
e9a47db962 | ||
|
e531ede144 | ||
|
5b2233e1b3 | ||
|
bf6d4d69a9 | ||
|
07d11e2bd1 | ||
|
330abfcccb | ||
|
b4e9218e95 | ||
|
8a7f7da0a8 | ||
|
89d3b48c47 | ||
|
45d4b944c4 | ||
|
b0c371f610 | ||
|
9764bc9d0b | ||
|
cb488035cb | ||
|
db9b90d089 | ||
|
291a0f1899 | ||
|
d21569e71b | ||
|
8c7648a51e | ||
|
f3255f1053 | ||
|
ae0d44c96a | ||
|
5f16738c39 | ||
|
3f594ed21f | ||
|
7f20ef3ec5 | ||
|
4ad1f0607d | ||
|
db1092be44 | ||
|
6eb52d2dab | ||
|
03e94f0bb0 | ||
|
3bb584631c | ||
|
dbaa4f639f | ||
|
2a501ac047 | ||
|
3339ac208e | ||
|
780897e1ab | ||
|
cfe29d2830 | ||
|
0e2f5ac580 | ||
|
ca3b29251e | ||
|
cb825a6588 | ||
|
f83bb7ec7d | ||
|
097e1acfbc | ||
|
4d1fbc6045 | ||
|
3f9d8a815b | ||
|
de47c1bdd6 | ||
|
086e13ac8e | ||
|
8108003d52 | ||
|
76fd5ade92 | ||
|
7710520c52 | ||
|
72a6e7c3c9 | ||
|
0c5dbee654 | ||
|
a54752a905 | ||
|
f218a141fa | ||
|
8c427003cd | ||
|
41d8e23c60 | ||
|
1ab7783d41 | ||
|
ed960eff53 | ||
|
aa764cfa39 | ||
|
09fc76d26b | ||
|
947e9376fb | ||
|
27c2248117 | ||
|
fca69b547b | ||
|
af8f85c3c4 | ||
|
98e78b915e | ||
|
a8457d9399 | ||
|
2a9bfbf5da | ||
|
37c1006431 | ||
|
eb90142e81 | ||
|
b49f93afd4 | ||
|
ef8fbb7296 | ||
|
2d7165da66 | ||
|
9f4071cef7 | ||
|
85215a1a95 | ||
|
c09b056e84 | ||
|
272532bb1f | ||
|
f0d904a9ff | ||
|
259e6c88f2 | ||
|
cd8bfc77cc | ||
|
756102138d | ||
|
0333e3c074 | ||
|
63d3c468f3 | ||
|
21db09af94 | ||
|
0865c356be | ||
|
e15b9f2f54 | ||
|
220b72f85b | ||
|
1ae3a4c8ae | ||
|
f6bdf5dc32 | ||
|
76307f751f | ||
|
b1d54533e0 | ||
|
cc9f2a3916 | ||
|
17c1d38d7e | ||
|
3fcd677dd5 | ||
|
808a7a0569 | ||
|
263e9e72af | ||
|
348d624564 | ||
|
13e08945df | ||
|
742a1848ea | ||
|
8af201fd2f | ||
|
79fd16ad8d | ||
|
4f4dec9725 | ||
|
232d807aeb | ||
|
56ead969e7 | ||
|
6f4c67503e | ||
|
c0bf4e2d79 | ||
|
5e457c9d4d | ||
|
a608b8ada4 | ||
|
90213dea7e | ||
|
ee3a07077e | ||
|
5570637cf7 | ||
|
6e827b5c1c | ||
|
99b1064d54 | ||
|
f2b960637a | ||
|
0b2a8a12f3 | ||
|
60595084dc | ||
|
9c64346163 | ||
|
f64b81fc85 | ||
|
47f05108d2 | ||
|
79b76bfba1 | ||
|
97d1694b38 | ||
|
e70416a336 | ||
|
e990c7aff0 | ||
|
d37d1d4c68 | ||
|
697b3192df | ||
|
2c5175f123 | ||
|
d7c2173a8e | ||
|
2366ba0ecb | ||
|
269f205967 | ||
|
c2045d1654 | ||
|
702455fbb0 | ||
|
c9e8de0105 | ||
|
dd4d4b47ea | ||
|
41bd37adb0 | ||
|
85ed747c38 | ||
|
0d207b533a | ||
|
d5ebbdbf6a | ||
|
3df40fd385 | ||
|
49f498e0a2 | ||
|
170443b5b8 | ||
|
6d7df9b363 | ||
|
e336f28f81 | ||
|
b7dd35c478 | ||
|
b81f7cfa76 | ||
|
85be96d302 | ||
|
1d3ec46893 | ||
|
54568d4f6b | ||
|
eb2e7cab7f | ||
|
773219d6bf | ||
|
3b9dddfae9 | ||
|
e522df0ff3 | ||
|
b7846a9b06 | ||
|
a635804aa5 | ||
|
249de19217 | ||
|
04dff93bcb | ||
|
aa66aa4b4f | ||
|
d0cf6b2da4 | ||
|
841d5d9122 | ||
|
b7ab0c990a | ||
|
5aaf8f5d9f | ||
|
67bcbf0398 | ||
|
20e7c732e2 | ||
|
669e9e0334 | ||
|
51bb3a9868 | ||
|
dc06154163 | ||
|
3f28b0d2e2 | ||
|
8cccd9fc8c | ||
|
8a96be1275 | ||
|
91099d91a0 | ||
|
088ae1d494 | ||
|
6530d4084c | ||
|
59b3d68b33 | ||
|
32f6944397 | ||
|
565351f7d2 | ||
|
4fb383976b | ||
|
22c9a7a936 | ||
|
6e922ec4ec | ||
|
704df860f8 | ||
|
3cca41740a | ||
|
bbbdd2854e | ||
|
ad874a9204 | ||
|
b7834b08a5 | ||
|
2c512acc13 | ||
|
f063b7ef8b | ||
|
dfd6b3789a | ||
|
4039bad9f9 | ||
|
c7518a7f8e | ||
|
84a3dbba4f | ||
|
56a1bfeb76 | ||
|
45bbc07490 | ||
|
6df854bbf5 | ||
|
f30c5a8850 | ||
|
a33c9c9bd9 | ||
|
efea5db271 | ||
|
d84a4640d5 | ||
|
9367026ef0 | ||
|
1c848f35e6 | ||
|
ba77cd68ac | ||
|
777bce286d | ||
|
e8ad41c75b | ||
|
7f0a493a01 | ||
|
89a3018221 | ||
|
d2d5c18090 | ||
|
0e3dc33b80 | ||
|
d6ee36c071 | ||
|
e0c8820bd0 | ||
|
f2b45b56bf | ||
|
7b53bc3a5e | ||
|
00182a509c | ||
|
b116f1c506 | ||
|
463181d484 | ||
|
4b6d6f1a6d | ||
|
913ec3c05b | ||
|
5966de6701 | ||
|
e34e1ad04d | ||
|
c87d62cae9 | ||
|
e3c8be4d0e | ||
|
41ae3908ab | ||
|
048ab1ceaf | ||
|
64f030765f | ||
|
600b4edc60 | ||
|
6c32a0c35a | ||
|
f1a2aeb7ab | ||
|
f87af894c1 | ||
|
362b4f0230 | ||
|
678c6cf85f | ||
|
1e7c7989de | ||
|
d968277137 | ||
|
682a25a7ee | ||
|
ba5df84895 | ||
|
976567fd97 | ||
|
59c1798ea0 | ||
|
8d082e203b | ||
|
1b876b4c35 | ||
|
5bb35582a2 | ||
|
fb04712bfb | ||
|
9024d29d12 | ||
|
288d509316 | ||
|
5c776e56f0 | ||
|
5d2acc0e53 | ||
|
925eb62831 |
9
.gitignore
vendored
@ -1,5 +1,12 @@
|
||||
binaries
|
||||
build
|
||||
Makefile
|
||||
/Makefile
|
||||
CMakeLists.txt.user
|
||||
*.cbp
|
||||
*~
|
||||
*.zip
|
||||
*.db
|
||||
*.blend1
|
||||
*.swp
|
||||
*.pyc
|
||||
*.o
|
||||
|
@ -1,7 +1,9 @@
|
||||
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
|
||||
|
||||
add_subdirectory(converter)
|
||||
|
||||
# project/binary name:
|
||||
PROJECT(MarbleRaceGroupC)
|
||||
PROJECT(saxum)
|
||||
|
||||
# ACGL setup
|
||||
SET(ACGL_OPENGL_SUPPORT CORE_32)
|
||||
@ -51,23 +53,28 @@ 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_RECURSE SOURCE_FILES_SHARED "../shared/*.cc")
|
||||
FILE(GLOB_RECURSE SOURCE_FILES "${CMAKE_SOURCE_DIR}/*.cc")
|
||||
SET(SOURCE_FILES ${SOURCE_FILES} ${SOURCE_FILES_SHARED})
|
||||
FILE(GLOB SOURCE_FILES "${CMAKE_SOURCE_DIR}/game/*.cc")
|
||||
|
||||
FILE(GLOB_RECURSE HEADER_FILES_SHARED "../shared/*.hh")
|
||||
FILE(GLOB_RECURSE HEADER_FILES "${CMAKE_SOURCE_DIR}/*.hh")
|
||||
SET(HEADER_FILES ${HEADER_FILES} ${HEADER_FILES_SHARED})
|
||||
FILE(GLOB HEADER_FILES "${CMAKE_SOURCE_DIR}/game/*.hh")
|
||||
|
||||
# shader files
|
||||
FILE(GLOB_RECURSE SHADER_FILES "${CMAKE_SOURCE_DIR}/Shader/*.*")
|
||||
# tinyxml
|
||||
|
||||
# Readme
|
||||
FILE(GLOB_RECURSE README_FILES "${CMAKE_SOURCE_DIR}/../README.TXT")
|
||||
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)
|
||||
#
|
||||
#
|
||||
###############################################################################
|
||||
@ -76,7 +83,6 @@ FILE(GLOB_RECURSE README_FILES "${CMAKE_SOURCE_DIR}/../README.TXT")
|
||||
#
|
||||
# all we need for ACGL:
|
||||
#
|
||||
ADD_DEFINITIONS(-DACGL_ERROR_LEVEL_EC3)
|
||||
INCLUDE(${CMAKE_SOURCE_DIR}/extern/acgl/CMakeListsStaticInclude.txt)
|
||||
#
|
||||
#
|
||||
@ -87,6 +93,11 @@ 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})
|
||||
@ -106,7 +117,7 @@ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
# Linux:
|
||||
#
|
||||
IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
SET(LIBRARIES ${LIBRARIES} -lXrandr -lGL -lXi -pthread -lm -lX11 -lXxf86vm)
|
||||
SET(LIBRARIES ${LIBRARIES} -lXrandr -lGL -lXi -pthread -lm -lX11 -lXxf86vm -ldl)
|
||||
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
#
|
||||
#
|
||||
@ -118,12 +129,33 @@ FILE(GLOB_RECURSE HEADER_FILES_BULLET ${CMAKE_SOURCE_DIR}/extern/bullet/src/*.h)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extern/bullet/src)
|
||||
SET(HEADER_FILES ${HEADER_FILES} ${HEADER_FILES_BULLET})
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/lib/libBulletDynamics.a)
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/lib/libBulletCollision.a)
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/lib/libLinearMath.a)
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/lib/libBulletSoftBody.a)
|
||||
SET (LIBRARIES -static ${LIBRARIES} -static-libgcc -static-libstdc++)
|
||||
else()
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletDynamics/libBulletDynamics.a)
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletCollision/libBulletCollision.a)
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/LinearMath/libLinearMath.a)
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletSoftBody/libBulletSoftBody.a)
|
||||
endif()
|
||||
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletDynamics/libBulletDynamics.a)
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletCollision/libBulletCollision.a)
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/LinearMath/libLinearMath.a)
|
||||
SET (LIBRARIES ${LIBRARIES} ${CMAKE_SOURCE_DIR}/extern/bullet/build/src/BulletSoftBody/libBulletSoftBody.a)
|
||||
# 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(${CMAKE_PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES} ${SHADER_FILES} ${README_FILES})
|
||||
TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME} ${LIBRARIES})
|
||||
ADD_EXECUTABLE(saxum ${SOURCE_FILES} ${HEADER_FILES})
|
||||
TARGET_LINK_LIBRARIES(saxum ${LIBRARIES} ${CMAKE_DL_LIBS})
|
||||
|
13
Dockerfile
Normal file
@ -0,0 +1,13 @@
|
||||
from ubuntu:trusty
|
||||
|
||||
run apt-get update -y
|
||||
run apt-get upgrade -y
|
||||
|
||||
run apt-get install -y build-essential
|
||||
run apt-get install -y gcc-mingw-w64
|
||||
run apt-get install -y cmake
|
||||
run apt-get install -y ninja-build
|
||||
run apt-get install -y xorg-dev
|
||||
run apt-get install -y freeglut3-dev
|
||||
run apt-get install -y zip
|
||||
run apt-get install -y libreadline6-dev
|
208354
Geometry/Bunny.ab
104285
Geometry/BunnyColors.atb
@ -1,8 +0,0 @@
|
||||
6
|
||||
-1.0 -1.0 0.0 0.0 0.0 1.0 0.0 0.0
|
||||
1.0 -1.0 0.0 0.0 0.0 1.0 1.0 0.0
|
||||
1.0 1.0 0.0 0.0 0.0 1.0 1.0 1.0
|
||||
-1.0 -1.0 0.0 0.0 0.0 1.0 0.0 0.0
|
||||
1.0 1.0 0.0 0.0 0.0 1.0 1.0 1.0
|
||||
-1.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0
|
||||
|
2069
Geometry/Sphere.obj
Before Width: | Height: | Size: 166 KiB |
3145731
Geometry/clownfishBunny.ppm
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 344 KiB |
471
LICENSE.txt
Normal file
@ -0,0 +1,471 @@
|
||||
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 © 1994–2015 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)
|
Before Width: | Height: | Size: 35 KiB |
22
Readme.md
@ -1,6 +1,24 @@
|
||||
#Marble Race Game
|
||||
![Saxum Logo](https://github.com/Faerbit/Saxum/blob/master/logo/saxum_logo_small.png)
|
||||
|
||||
This will be a Marble Race Game developed for the Softwarepraktikum at the RWTH Aachen.
|
||||
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.
|
||||
|
||||
##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.
|
||||
|
@ -1,43 +0,0 @@
|
||||
#version 150
|
||||
|
||||
in vec3 vNormal;
|
||||
in vec2 vTexCoord;
|
||||
in vec4 fragPosition;
|
||||
|
||||
out vec4 oColor;
|
||||
|
||||
uniform sampler2D uTexture;
|
||||
uniform vec3 ambientColor;
|
||||
uniform float ambientFactor;
|
||||
uniform float diffuseFactor;
|
||||
uniform float specularFactor;
|
||||
uniform vec3 camera;
|
||||
uniform float shininess;
|
||||
uniform int lightCount;
|
||||
uniform vec3 lightSources[128];
|
||||
uniform vec3 lightColors[128];
|
||||
uniform float lightIntensities[128];
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 ambientColor = ambientFactor * ambientColor;
|
||||
vec3 diffuseColor = vec3(0.0, 0.0, 0.0);
|
||||
vec3 specularColor = vec3(0.0, 0.0, 0.0);
|
||||
for(int i = 0; i<lightCount; i++) {
|
||||
float distance = distance(lightSources[i], vec3(fragPosition));
|
||||
// only take lights into account with meaningful contribution
|
||||
if (distance > 0.001f) {
|
||||
vec3 lightVector = normalize(lightSources[i]-vec3(fragPosition));
|
||||
float intensity = (lightIntensities[i])/(distance);
|
||||
diffuseColor += dot(normalize(vNormal), lightVector)
|
||||
*diffuseFactor*intensity*lightColors[i];
|
||||
vec3 cameraVector = normalize(camera - vec3(fragPosition));
|
||||
specularColor += clamp(pow((dot((cameraVector+lightVector),normalize(vNormal))/(length(cameraVector+lightVector)*length(normalize(vNormal)))),shininess), 0.0, 1.0)
|
||||
*specularFactor*intensity*lightColors[i];
|
||||
}
|
||||
}
|
||||
vec3 finalColor = specularColor + diffuseColor + ambientColor;
|
||||
|
||||
vec3 texture = texture(uTexture, vTexCoord).rgb;
|
||||
oColor = vec4(finalColor*texture, 1.0 );
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
#version 150
|
||||
|
||||
uniform mat4 modelMatrix;
|
||||
uniform mat4 viewMatrix;
|
||||
uniform mat4 projectionMatrix;
|
||||
|
||||
in vec3 aPosition;
|
||||
in vec3 aNormal;
|
||||
in vec2 aTexCoord;
|
||||
|
||||
out vec3 vNormal;
|
||||
out vec2 vTexCoord;
|
||||
out vec4 fragPosition;
|
||||
|
||||
void main()
|
||||
{
|
||||
fragPosition = modelMatrix * vec4(aPosition, 1.0);
|
||||
vNormal = inverse(transpose(mat3(modelMatrix))) * aNormal;
|
||||
vTexCoord = aTexCoord;
|
||||
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(aPosition, 1.0);
|
||||
}
|
BIN
blenderfiles/Gate.blend
Normal file
BIN
blenderfiles/SimpleWall.blend
Normal file
BIN
blenderfiles/anotherBrazier.blend
Normal file
BIN
blenderfiles/brazier.blend
Normal file
BIN
blenderfiles/exit.blend
Normal file
BIN
blenderfiles/hint.blend
Normal file
BIN
blenderfiles/marbleSmooth.blend
Normal file
BIN
blenderfiles/movableBlock.blend
Normal file
BIN
blenderfiles/newBrazier.blend
Normal file
BIN
blenderfiles/ruinsTile.blend
Normal file
BIN
blenderfiles/ruins_block.blend
Normal file
BIN
blenderfiles/ruins_column.blend
Normal file
BIN
blenderfiles/skydome.blend
Normal file
BIN
blenderfiles/switch_inner.blend
Normal file
BIN
blenderfiles/switch_outer.blend
Normal file
BIN
blenderfiles/torch.blend
Normal file
47
build.sh
@ -5,19 +5,52 @@ then
|
||||
rm -rf build
|
||||
rm -rf binaries
|
||||
rm -rf extern/bullet/build
|
||||
cd extern/lua; make clean; cd ../..
|
||||
exit
|
||||
fi
|
||||
|
||||
cmake="cmake"
|
||||
|
||||
if [[ $1 == "windows" ]]
|
||||
then
|
||||
cmake="cmake -DCMAKE_SYSTEM_NAME='Windows' -DCMAKE_FIND_ROOT_PATH='/usr/bin:/usr/x86_64-w64-mingw32' -DCMAKE_CXX_COMPILER='x86_64-w64-mingw32-g++' -DCMAKE_C_COMPILER='x86_64-w64-mingw32-gcc'"
|
||||
fi
|
||||
|
||||
buildType=$2
|
||||
|
||||
if [[ $2 == "" ]]
|
||||
then
|
||||
buildType="Debug"
|
||||
fi
|
||||
|
||||
currentDir=$(pwd)
|
||||
threads=$(($(nproc)+1))
|
||||
|
||||
#building lua
|
||||
|
||||
cd extern/lua/
|
||||
if [[ $1 == "windows" ]]
|
||||
then
|
||||
make CC=x86_64-w64-mingw32-gcc mingw
|
||||
else
|
||||
make linux
|
||||
fi
|
||||
cd $currentDir
|
||||
|
||||
|
||||
#building bullet
|
||||
|
||||
cd extern/bullet/
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake ..
|
||||
make -j$threads
|
||||
if hash ninja 2>/dev/null
|
||||
then
|
||||
$cmake -DBUILD_DEMOS=0 -DBUILD_EXTRAS=0 -DCMAKE_BUILD_TYPE=$buildType -DBUILD_SHARED_LIBS=0 -GNinja ..
|
||||
ninja
|
||||
else
|
||||
$cmake -DBUILD_DEMOS=0 -DBUILD_EXTRAS=0 -DCMAKE_BUILD_TYPE=$buildType -DBUILD_SHARED_LIBS=0 ..
|
||||
make -j$threads
|
||||
fi
|
||||
|
||||
cd $currentDir
|
||||
|
||||
@ -25,5 +58,11 @@ cd $currentDir
|
||||
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake ..
|
||||
make -j$threads
|
||||
if hash ninja 2>/dev/null
|
||||
then
|
||||
$cmake -DGLFW_BUILD_EXAMPLES=0 -DGLFW_BUILD_TESTS=0 -DCMAKE_BUILD_TYPE=$buildType -DBUILD_SHARED_LIBS=0 -GNinja ..
|
||||
ninja
|
||||
else
|
||||
$cmake -DGLFW_BUILD_EXAMPLES=0 -DGLFW_BUILD_TESTS=0 -DCMAKE_BUILD_TYPE=$buildType -DBUILD_SHARED_LIBS=0 ..
|
||||
make -j$threads
|
||||
fi
|
||||
|
32
circle.yml
Normal file
@ -0,0 +1,32 @@
|
||||
general:
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
machine:
|
||||
services:
|
||||
- docker
|
||||
|
||||
dependencies:
|
||||
override:
|
||||
# Set up dropbox_uploader
|
||||
- curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
|
||||
- chmod +x dropbox_uploader.sh
|
||||
- echo $db_uploader > ~/.dropbox_uploader
|
||||
|
||||
database:
|
||||
override:
|
||||
|
||||
test:
|
||||
override:
|
||||
- docker run -v ~/Saxum:/saxum/saxum -w=/saxum/saxum -u=$(id -u) faerbit/saxum ./package.sh linux
|
||||
- docker run -v ~/Saxum:/saxum/saxum -w=/saxum/saxum -u=$(id -u) faerbit/saxum ./package.sh windows
|
||||
- if [ -f Saxum_Windows.zip ]; then cp Saxum_Windows.zip $CIRCLE_ARTIFACTS; fi
|
||||
- if [ -f Saxum_Linux.zip ]; then cp Saxum_Linux.zip $CIRCLE_ARTIFACTS; fi
|
||||
|
||||
deployment:
|
||||
master:
|
||||
branch: master
|
||||
commands:
|
||||
- if [ -f Saxum_Windows.zip ]; then ./dropbox_uploader.sh -p upload Saxum_Windows.zip /; fi
|
||||
- if [ -f Saxum_Linux.zip ]; then ./dropbox_uploader.sh -p upload Saxum_Linux.zip /; fi
|
59
converter/CMakeLists.txt
Normal file
@ -0,0 +1,59 @@
|
||||
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
|
||||
|
||||
PROJECT(Converter)
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# Compiler settings, can be simpler if only one compiler should be used.
|
||||
#
|
||||
|
||||
#Enable c++11
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
#on clang we need to find out the version to set stdlib if needed
|
||||
# if clang version is less than 3.3 ( XCode 5.0) you need to set the stdlib
|
||||
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
||||
MESSAGE("Clangversion ${CLANG_VERSION_STRING}")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
||||
# using Visual Studio C++
|
||||
endif()
|
||||
|
||||
# enable warnings
|
||||
IF(MSVC)
|
||||
# for msvc also set multiple processors
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /W3")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP /W3")
|
||||
ELSE(MSVC)
|
||||
ADD_DEFINITIONS(-Wall)
|
||||
ENDIF(MSVC)
|
||||
ADD_DEFINITIONS(-DNO_SPACE_NAVIGATOR_SUPPORT)
|
||||
|
||||
# for lodepng
|
||||
SET(ACGL_BASE_DIR "${CMAKE_SOURCE_DIR}/extern/acgl")
|
||||
FILE(GLOB_RECURSE HEADER_FILES_LODEPNG "${ACGL_BASE_DIR}/include/lodepng/*.h")
|
||||
FILE(GLOB_RECURSE SOURCE_FILES_LODEPNG "${ACGL_BASE_DIR}/src/lodepng/*.cpp")
|
||||
|
||||
# for tinyxml
|
||||
FILE(GLOB_RECURSE HEADER_FILES_TINYXML "${CMAKE_SOURCE_DIR}/extern/tinyxml/*.hh")
|
||||
FILE(GLOB_RECURSE SOURCE_FILES_TINYXML "${CMAKE_SOURCE_DIR}/extern/tinyxml/*.cc")
|
||||
|
||||
SET(HEADER_FILES_EXTERN ${HEADER_FILES_LODEPNG} ${HEADER_FILES_TINYXML})
|
||||
SET(SOURCE_FILES_EXTERN ${SOURCE_FILES_LODEPNG} ${SOURCE_FILES_TINYXML})
|
||||
|
||||
INCLUDE_DIRECTORIES("${ACGL_BASE_DIR}/include")
|
||||
INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/extern/tinyxml")
|
||||
|
||||
#
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
FILE(GLOB_RECURSE SOURCE_FILES_CONV "${CMAKE_SOURCE_DIR}/converter/*.cc")
|
||||
SET(SOURCE_FILES_CONV ${SOURCE_FILES_CONV} ${SOURCE_FILES_EXTERN})
|
||||
|
||||
FILE(GLOB_RECURSE HEADER_FILES_CONV "${CMAKE_SOURCE_DIR}/converter/*.hh")
|
||||
SET(HEADER_FILES_CONV ${HEADER_FILES_CONV} ${HEADER_FILES_EXTERN})
|
||||
ADD_EXECUTABLE(converter ${SOURCE_FILES_CONV} ${HEADER_FILES_CONV})
|
481
converter/converter.cc
Normal file
@ -0,0 +1,481 @@
|
||||
#include "converter.hh"
|
||||
#include <fstream>
|
||||
#include <sys/stat.h>
|
||||
#include <iostream>
|
||||
|
||||
using namespace tinyxml2;
|
||||
|
||||
Converter::Converter(std::string levelPath, std::string levelName, std::string compositionsPath){
|
||||
xmlFile = levelPath + levelName + ".xml";
|
||||
|
||||
//Load Compositions
|
||||
std::string stringCompositions = compositionsPath;
|
||||
const char* charCompositions = stringCompositions.c_str();
|
||||
compositions->LoadFile(charCompositions);
|
||||
if (compositions->ErrorID()!=0){
|
||||
printf("Could not open Compositions!\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
//Create a backup of the current Level png file, if no backup exists
|
||||
std::string pngFile = levelPath + levelName + ".png";
|
||||
std::string backupPNG = levelPath + levelName + "Backup.png";
|
||||
struct stat buf;
|
||||
if(stat(backupPNG.c_str(), &buf) != 0){
|
||||
std::ifstream src(pngFile, std::ios::binary);
|
||||
std::ofstream dst(backupPNG, std::ios::binary);
|
||||
dst << src.rdbuf();
|
||||
}
|
||||
|
||||
//Load the Level xml file
|
||||
nextID.push_back(0);
|
||||
nextID.push_back(1);
|
||||
for (int i=0; i<256; i++){
|
||||
for (int j=0; j<256; j++){
|
||||
idUsed[i][j] = false;
|
||||
}
|
||||
}
|
||||
idUsed[0][0] = true;
|
||||
const char* charXmlFile = xmlFile.c_str();
|
||||
doc->LoadFile(charXmlFile);
|
||||
//check if the xml file did not already exist
|
||||
if (doc->ErrorID()!=0){
|
||||
std::string answer;
|
||||
printf("Could not open xml, do you want to create a new xml? (y/n)\n");
|
||||
std::cin >> answer;
|
||||
while(answer.compare("y") != 0 && answer.compare("n") != 0){
|
||||
printf("Answer with y or n\n");
|
||||
std::cin >> answer;
|
||||
}
|
||||
if(answer.compare("n") == 0){
|
||||
exit(-1);
|
||||
}
|
||||
printf("Creating new xml.\n");
|
||||
//Create all global Lightingparameters with Dummy-Values
|
||||
std::vector<XMLElement*> lightAttributes;
|
||||
lightAttributes.push_back(doc->NewElement("xOffset"));
|
||||
lightAttributes.push_back(doc->NewElement("yOffset"));
|
||||
lightAttributes.push_back(doc->NewElement("zOffset"));
|
||||
lightAttributes.push_back(doc->NewElement("rColour"));
|
||||
lightAttributes.push_back(doc->NewElement("gColour"));
|
||||
lightAttributes.push_back(doc->NewElement("bColour"));
|
||||
lightAttributes.push_back(doc->NewElement("intensity"));
|
||||
XMLElement* rColourAmbient = doc->NewElement("rColour");
|
||||
XMLElement* gColourAmbient = doc->NewElement("gColour");
|
||||
XMLElement* bColourAmbient = doc->NewElement("bColour");
|
||||
XMLElement* rColourFogDay = doc->NewElement("rColour");
|
||||
XMLElement* gColourFogDay = doc->NewElement("gColour");
|
||||
XMLElement* bColourFogDay = doc->NewElement("bColour");
|
||||
XMLElement* alphaFogDay = doc->NewElement("alpha");
|
||||
XMLElement* rColourFogRise = doc->NewElement("rColour");
|
||||
XMLElement* gColourFogRise = doc->NewElement("gColour");
|
||||
XMLElement* bColourFogRise = doc->NewElement("bColour");
|
||||
XMLElement* alphaFogRise = doc->NewElement("alpha");
|
||||
XMLElement* rColourFogNight = doc->NewElement("rColour");
|
||||
XMLElement* gColourFogNight = doc->NewElement("gColour");
|
||||
XMLElement* bColourFogNight = doc->NewElement("bColour");
|
||||
XMLElement* alphaFogNight = doc->NewElement("alpha");
|
||||
|
||||
lightAttributes[0]->SetText("-1.0");
|
||||
lightAttributes[1]->SetText("1.5");
|
||||
lightAttributes[2]->SetText("1.0");
|
||||
lightAttributes[3]->SetText("1.0");
|
||||
lightAttributes[4]->SetText("1.0");
|
||||
lightAttributes[5]->SetText("0.9");
|
||||
lightAttributes[6]->SetText("0.2");
|
||||
rColourAmbient->SetText("1.0");
|
||||
gColourAmbient->SetText("1.0");
|
||||
bColourAmbient->SetText("1.0");
|
||||
rColourFogDay->SetText("0.57");
|
||||
gColourFogDay->SetText("0.80");
|
||||
bColourFogDay->SetText("0.98");
|
||||
alphaFogDay->SetText("1.0");
|
||||
rColourFogRise->SetText("0.88");
|
||||
gColourFogRise->SetText("0.38");
|
||||
bColourFogRise->SetText("0.38");
|
||||
alphaFogRise->SetText("1.0");
|
||||
rColourFogNight->SetText("0.09");
|
||||
gColourFogNight->SetText("0.1");
|
||||
bColourFogNight->SetText("0.24");
|
||||
alphaFogNight->SetText("1.0");
|
||||
|
||||
XMLElement* ambientLight = doc->NewElement("ambientLight");
|
||||
XMLElement* fogColourDay = doc->NewElement("fogColourDay");
|
||||
XMLElement* fogColourRise = doc->NewElement("fogColourRise");
|
||||
XMLElement* fogColourNight = doc->NewElement("fogColourNight");
|
||||
XMLElement* directionalLight = doc->NewElement("directionalLight");
|
||||
|
||||
ambientLight->InsertEndChild(rColourAmbient);
|
||||
ambientLight->InsertEndChild(gColourAmbient);
|
||||
ambientLight->InsertEndChild(bColourAmbient);
|
||||
fogColourDay->InsertEndChild(rColourFogDay);
|
||||
fogColourDay->InsertEndChild(gColourFogDay);
|
||||
fogColourDay->InsertEndChild(bColourFogDay);
|
||||
fogColourDay->InsertEndChild(alphaFogDay);
|
||||
fogColourRise->InsertEndChild(rColourFogRise);
|
||||
fogColourRise->InsertEndChild(gColourFogRise);
|
||||
fogColourRise->InsertEndChild(bColourFogRise);
|
||||
fogColourRise->InsertEndChild(alphaFogRise);
|
||||
fogColourNight->InsertEndChild(rColourFogNight);
|
||||
fogColourNight->InsertEndChild(gColourFogNight);
|
||||
fogColourNight->InsertEndChild(bColourFogNight);
|
||||
fogColourNight->InsertEndChild(alphaFogNight);
|
||||
for(int i=0;i<7;i++){
|
||||
directionalLight->InsertEndChild(lightAttributes[i]);
|
||||
}
|
||||
doc->InsertEndChild(ambientLight);
|
||||
doc->InsertEndChild(fogColourDay);
|
||||
doc->InsertEndChild(fogColourRise);
|
||||
doc->InsertEndChild(fogColourNight);
|
||||
doc->InsertEndChild(directionalLight);
|
||||
|
||||
//Create global terrain Element
|
||||
XMLElement* terrain = doc->NewElement("terrain");
|
||||
XMLElement* terrainHeightmap = doc->NewElement("heightmap");
|
||||
XMLElement* terrainTexture = doc->NewElement("texture");
|
||||
XMLElement* terrainAmbientFactor = doc->NewElement("ambientFactor");
|
||||
XMLElement* terrainDiffuseFactor = doc->NewElement("diffuseFactor");
|
||||
XMLElement* terrainSpecularFactor = doc->NewElement("specularFactor");
|
||||
XMLElement* terrainShininess = doc->NewElement("shininess");
|
||||
std::string heightmapPath = "heightmap" + levelName + ".png";
|
||||
terrainHeightmap->SetText(heightmapPath.c_str());
|
||||
terrainTexture->SetText("terrainTexture.png");
|
||||
terrainAmbientFactor->SetText("0.1");
|
||||
terrainDiffuseFactor->SetText("0.8");
|
||||
terrainSpecularFactor->SetText("0.2");
|
||||
terrainShininess->SetText("1.0");
|
||||
terrain->InsertEndChild(terrainHeightmap);
|
||||
terrain->InsertEndChild(terrainTexture);
|
||||
terrain->InsertEndChild(terrainAmbientFactor);
|
||||
terrain->InsertEndChild(terrainDiffuseFactor);
|
||||
terrain->InsertEndChild(terrainSpecularFactor);
|
||||
terrain->InsertEndChild(terrainShininess);
|
||||
doc->InsertEndChild(terrain);
|
||||
|
||||
//Create global skydome Element
|
||||
XMLElement* skydome = doc->NewElement("skydome");
|
||||
XMLElement* skydomeModel = doc->NewElement("model");
|
||||
XMLElement* skydomeTexture = doc->NewElement("texture");
|
||||
XMLElement* skydomeTextureNight = doc->NewElement("nightTexture");
|
||||
skydomeModel->SetText("skydome.obj");
|
||||
skydomeTexture->SetText("skydome.png");
|
||||
skydomeTextureNight->SetText("skydomeNight.png");
|
||||
skydome->InsertEndChild(skydomeModel);
|
||||
skydome->InsertEndChild(skydomeTexture);
|
||||
skydome->InsertEndChild(skydomeTextureNight);
|
||||
doc->InsertEndChild(skydome);
|
||||
|
||||
//Create global physics parameters
|
||||
XMLElement* physics = doc->NewElement("physics");
|
||||
XMLElement* playerFriction = doc->NewElement("friction");
|
||||
XMLElement* playerStrength = doc->NewElement("strength");
|
||||
playerFriction->SetText("0.9");
|
||||
playerStrength->SetText("300.0");
|
||||
physics->InsertEndChild(playerFriction);
|
||||
physics->InsertEndChild(playerStrength);
|
||||
doc->InsertEndChild(physics);
|
||||
|
||||
//Create positionConstraint Dummy
|
||||
XMLElement* positionConstraint = doc->NewElement("positionConstraint");
|
||||
XMLElement* positionConstraintObjectNum = doc->NewElement("objectNum");
|
||||
XMLElement* positionConstraintXPos = doc->NewElement("xPosition");
|
||||
XMLElement* positionConstraintYPos = doc->NewElement("yPosition");
|
||||
XMLElement* positionConstraintZPos = doc->NewElement("zPosition");
|
||||
XMLElement* positionConstraintStrength = doc->NewElement("strength");
|
||||
positionConstraintObjectNum->SetText("0");
|
||||
positionConstraintXPos->SetText("0.0");
|
||||
positionConstraintYPos->SetText("0.0");
|
||||
positionConstraintZPos->SetText("0.0");
|
||||
positionConstraintStrength->SetText("100.0");
|
||||
positionConstraint->InsertEndChild(positionConstraintObjectNum);
|
||||
positionConstraint->InsertEndChild(positionConstraintXPos);
|
||||
positionConstraint->InsertEndChild(positionConstraintYPos);
|
||||
positionConstraint->InsertEndChild(positionConstraintZPos);
|
||||
positionConstraint->InsertEndChild(positionConstraintStrength);
|
||||
doc->InsertEndChild(positionConstraint);
|
||||
}else{
|
||||
//Create a backup of the current Level xml file
|
||||
std::string backupXML = levelPath + levelName + "Backup.xml";
|
||||
std::ifstream src(xmlFile, std::ios::binary);
|
||||
std::ofstream dst(backupXML, std::ios::binary);
|
||||
dst << src.rdbuf();
|
||||
//Check what IDs are already in use
|
||||
XMLElement* thisComposition = doc->FirstChildElement("composition");
|
||||
for(; thisComposition; thisComposition=thisComposition->NextSiblingElement("composition")){
|
||||
int idGreen = queryInt(thisComposition, "idGreen");
|
||||
int idBlue = queryInt(thisComposition, "idBlue");
|
||||
idUsed[idGreen][idBlue] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Converter::Converter(){
|
||||
}
|
||||
|
||||
Converter::~Converter(){
|
||||
}
|
||||
|
||||
std::vector<int> Converter::newComposition(int type, float posX, float posZ){
|
||||
int oldIDGreen, oldIDBlue;
|
||||
bool alreadyExists = false;
|
||||
XMLElement* thisComposition = doc->FirstChildElement("composition");
|
||||
for(; thisComposition; thisComposition=thisComposition->NextSiblingElement("composition")){
|
||||
float xPos = queryFloat(thisComposition, "xPos");
|
||||
float zPos = queryFloat(thisComposition, "zPos");
|
||||
int typeID = queryInt(thisComposition, "typeID");
|
||||
if(xPos == posX && zPos == posZ && typeID == type){
|
||||
if(alreadyExists){
|
||||
std::cout << "At the position " << xPos << "," << zPos << " multiple compositions with the ID " << typeID << " exist in the xml." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
oldIDGreen = queryInt(thisComposition, "idGreen");
|
||||
oldIDBlue = queryInt(thisComposition, "idBlue");
|
||||
alreadyExists = true;
|
||||
}
|
||||
}
|
||||
if (alreadyExists){
|
||||
if (! idUsed[oldIDGreen][oldIDBlue]){
|
||||
std::cout << "The composition with ID " << oldIDGreen << "," << oldIDBlue << " exists in the xml but the converter thinks it does not." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
std::vector<int> oldID;
|
||||
oldID.push_back(oldIDGreen);
|
||||
oldID.push_back(oldIDBlue);
|
||||
return oldID;
|
||||
}
|
||||
|
||||
bool full = false;
|
||||
while(idUsed[nextID[0]][nextID[1]]){
|
||||
nextID[1] += 1;
|
||||
if (nextID[1] == 256){
|
||||
nextID[1] = 0;
|
||||
nextID[0] +=1;
|
||||
if (nextID[0] == 256){
|
||||
if(full){
|
||||
printf("Can not have more than 65535 compositions.\n");
|
||||
exit(-1);
|
||||
}
|
||||
nextID[0] = 0;
|
||||
full = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
XMLElement* newComposition = doc->NewElement("composition");
|
||||
XMLElement* typeID = doc->NewElement("typeID");
|
||||
XMLElement* idBlue = doc->NewElement("idBlue");
|
||||
XMLElement* idGreen = doc->NewElement("idGreen");
|
||||
XMLElement* zPos = doc->NewElement("zPos");
|
||||
XMLElement* yOffset = doc->NewElement("yOffset");
|
||||
XMLElement* xPos = doc->NewElement("xPos");
|
||||
XMLElement* manualPos = doc->NewElement("manualPos");
|
||||
XMLElement* zRot = doc->NewElement("zRot");
|
||||
XMLElement* yRot = doc->NewElement("yRot");
|
||||
XMLElement* xRot = doc->NewElement("xRot");
|
||||
XMLElement* scale = doc->NewElement("scale");
|
||||
|
||||
typeID->SetText(std::to_string(type).c_str());
|
||||
idBlue->SetText(std::to_string(nextID[1]).c_str());
|
||||
idGreen->SetText(std::to_string(nextID[0]).c_str());
|
||||
zPos->SetText(std::to_string(posZ).c_str());
|
||||
yOffset->SetText("0.0");
|
||||
xPos->SetText(std::to_string(posX).c_str());
|
||||
manualPos->SetText("false");
|
||||
zRot->SetText("0.0");
|
||||
yRot->SetText("0.0");
|
||||
xRot->SetText("0.0");
|
||||
scale->SetText("1.0");
|
||||
|
||||
newComposition->InsertFirstChild(typeID);
|
||||
newComposition->InsertFirstChild(idBlue);
|
||||
newComposition->InsertFirstChild(idGreen);
|
||||
newComposition->InsertFirstChild(zPos);
|
||||
newComposition->InsertFirstChild(yOffset);
|
||||
newComposition->InsertFirstChild(xPos);
|
||||
newComposition->InsertFirstChild(manualPos);
|
||||
newComposition->InsertFirstChild(zRot);
|
||||
newComposition->InsertFirstChild(yRot);
|
||||
newComposition->InsertFirstChild(xRot);
|
||||
newComposition->InsertFirstChild(scale);
|
||||
|
||||
//Create a Dummy-trigger
|
||||
XMLElement* trigger = doc->NewElement("trigger");
|
||||
newComposition->InsertEndChild(trigger);
|
||||
XMLElement* name = doc->NewElement("name");
|
||||
XMLElement* undo = doc->NewElement("undo");
|
||||
XMLElement* xPosition = doc->NewElement("xPosition");
|
||||
XMLElement* yPosition = doc->NewElement("yPosition");
|
||||
XMLElement* zPosition = doc->NewElement("zPosition");
|
||||
XMLElement* targetIdGreen = doc->NewElement("targetIdGreen");
|
||||
XMLElement* targetIdBlue = doc->NewElement("targetIdBlue");
|
||||
XMLElement* distance = doc->NewElement("distance");
|
||||
XMLElement* isBiggerThan = doc->NewElement("isBiggerThan");
|
||||
XMLElement* objectNum = doc->NewElement("objectNum");
|
||||
XMLElement* luaScript = doc->NewElement("luaScript");
|
||||
XMLElement* toChangeIdGreen = doc->NewElement("toChangeIdGreen");
|
||||
XMLElement* toChangeIdBlue = doc->NewElement("toChangeIdBlue");
|
||||
XMLElement* toChangeObjNum = doc->NewElement("toChangeObjNum");
|
||||
|
||||
name->SetText("-");
|
||||
undo->SetText("false");
|
||||
xPosition->SetText("0");
|
||||
yPosition->SetText("0");
|
||||
zPosition->SetText("0");
|
||||
targetIdGreen->SetText("-");
|
||||
targetIdBlue->SetText("-");
|
||||
distance->SetText("1.0");
|
||||
isBiggerThan->SetText("false");
|
||||
objectNum->SetText("0");
|
||||
luaScript->SetText("-");
|
||||
toChangeIdGreen->SetText("0");
|
||||
toChangeIdBlue->SetText("0");
|
||||
toChangeObjNum->SetText("0");
|
||||
|
||||
trigger->InsertEndChild(name);
|
||||
trigger->InsertEndChild(undo);
|
||||
trigger->InsertEndChild(xPosition);
|
||||
trigger->InsertEndChild(yPosition);
|
||||
trigger->InsertEndChild(zPosition);
|
||||
trigger->InsertEndChild(targetIdGreen);
|
||||
trigger->InsertEndChild(targetIdBlue);
|
||||
trigger->InsertEndChild(distance);
|
||||
trigger->InsertEndChild(isBiggerThan);
|
||||
trigger->InsertEndChild(objectNum);
|
||||
trigger->InsertEndChild(luaScript);
|
||||
trigger->InsertEndChild(toChangeIdGreen);
|
||||
trigger->InsertEndChild(toChangeIdBlue);
|
||||
trigger->InsertEndChild(toChangeObjNum);
|
||||
|
||||
idUsed[nextID[0]][nextID[1]] = true;
|
||||
doc->InsertFirstChild(newComposition);
|
||||
return nextID;
|
||||
}
|
||||
|
||||
void Converter::updateComposition(int idG, int idB, float posX, float posZ){
|
||||
XMLElement* thisComposition = doc->FirstChildElement("composition");
|
||||
bool compositionExists = false;
|
||||
for(; thisComposition; thisComposition=thisComposition->NextSiblingElement("composition")){
|
||||
int idGreen = queryInt(thisComposition, "idGreen");
|
||||
int idBlue = queryInt(thisComposition, "idBlue");
|
||||
if(idGreen == idG && idBlue == idB){
|
||||
if (compositionExists){
|
||||
std::cout << "The ID " << idGreen << "," << idBlue << " is used for multiple compositions in the xml." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
bool manualPos = queryBool(thisComposition, "manualPos");
|
||||
if(!manualPos){
|
||||
thisComposition->FirstChildElement("xPos")->SetText(std::to_string(posX).c_str());
|
||||
thisComposition->FirstChildElement("zPos")->SetText(std::to_string(posZ).c_str());
|
||||
}
|
||||
compositionExists = true;
|
||||
}
|
||||
}
|
||||
if(!compositionExists){
|
||||
std::cout << "A composition has the ID " << idG << "," << idB << " and the position " << posX << "," << posZ << " in the png, but does not exist in the xml." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
|
||||
void Converter::deleteComposition(int idG, int idB){
|
||||
XMLElement* thisComposition = doc->FirstChildElement("composition");
|
||||
for(; thisComposition; thisComposition=thisComposition->NextSiblingElement("composition")){
|
||||
int idGreen = queryInt(thisComposition, "idGreen");
|
||||
int idBlue = queryInt(thisComposition, "idBlue");
|
||||
if(idGreen == idG && idBlue == idB){
|
||||
doc->DeleteChild(thisComposition);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Converter::save(){
|
||||
const char* charXmlFile = xmlFile.c_str();
|
||||
doc->SaveFile(charXmlFile);
|
||||
}
|
||||
|
||||
float Converter::queryFloat(XMLElement* element, const char* attribute){
|
||||
XMLElement* attributeElement = element->FirstChildElement(attribute);
|
||||
if (attributeElement == NULL){
|
||||
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
float ret;
|
||||
errorCheck(attributeElement->QueryFloatText(&ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
float Converter::queryFloat(XMLDocument*& element, const char* attribute){
|
||||
XMLElement* attributeElement = element->FirstChildElement(attribute);
|
||||
if (attributeElement == NULL){
|
||||
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
float ret;
|
||||
errorCheck(attributeElement->QueryFloatText(&ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
int Converter::queryInt(XMLElement* element, const char* attribute){
|
||||
XMLElement* attributeElement = element->FirstChildElement(attribute);
|
||||
if (attributeElement == NULL){
|
||||
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
int ret;
|
||||
errorCheck(attributeElement->QueryIntText(&ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
int Converter::queryInt(XMLDocument*& element, const char* attribute){
|
||||
XMLElement* attributeElement = element->FirstChildElement(attribute);
|
||||
if (attributeElement == NULL){
|
||||
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
int ret;
|
||||
errorCheck(attributeElement->QueryIntText(&ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool Converter::queryBool(XMLElement* element, const char* attribute){
|
||||
XMLElement* attributeElement = element->FirstChildElement(attribute);
|
||||
if (attributeElement == NULL){
|
||||
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
bool ret;
|
||||
errorCheck(attributeElement->QueryBoolText(&ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool Converter::queryBool(XMLDocument*& element, const char* attribute){
|
||||
XMLElement* attributeElement = element->FirstChildElement(attribute);
|
||||
if (attributeElement == NULL){
|
||||
std::cout << "XMLError: Attribute " << attribute << " does not exist." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
bool ret;
|
||||
errorCheck(attributeElement->QueryBoolText(&ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
void Converter::errorCheck(XMLError error){
|
||||
if (error) {
|
||||
printf("XMLError: ");
|
||||
if (error == XML_WRONG_ATTRIBUTE_TYPE) {
|
||||
printf("Wrong attribute type.\n");
|
||||
}
|
||||
else if (error == XML_NO_ATTRIBUTE) {
|
||||
printf("No attribute.\n");
|
||||
}
|
||||
else if (error == XML_CAN_NOT_CONVERT_TEXT) {
|
||||
printf("Can not convert text.\n");
|
||||
}
|
||||
else if (error == XML_NO_TEXT_NODE) {
|
||||
printf("No text.\n");
|
||||
}
|
||||
else {
|
||||
printf("Unknown error.\n");
|
||||
}
|
||||
exit(-1);
|
||||
}
|
||||
}
|
33
converter/converter.hh
Normal file
@ -0,0 +1,33 @@
|
||||
#ifndef CONVERTER_INCLUDED
|
||||
#define CONVERTER_INCLUDED
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include "tinyxml2.hh"
|
||||
|
||||
using namespace tinyxml2;
|
||||
class Converter {
|
||||
public:
|
||||
Converter(std::string levelPath, std::string levelName, std::string compositionsPath);
|
||||
Converter();
|
||||
~Converter();
|
||||
void updateComposition(int idG, int idB, float posX, float posZ); //updates the position of a composition
|
||||
std::vector<int> newComposition(int type, float posX, float posZ); //creates a new composition and returns its ID
|
||||
void deleteComposition(int idG, int idB);
|
||||
void save(); //writes the xml to file
|
||||
private:
|
||||
std::vector<int> nextID;
|
||||
bool idUsed[256][256];
|
||||
std::string xmlFile;
|
||||
XMLDocument* doc = new XMLDocument();
|
||||
XMLDocument* compositions = new XMLDocument();
|
||||
float queryFloat(XMLElement* element, const char* attribute);
|
||||
float queryFloat(XMLDocument*& element, const char* attribute);
|
||||
int queryInt(XMLElement* element, const char* attribute);
|
||||
int queryInt(XMLDocument*& element, const char* attribute);
|
||||
bool queryBool(XMLElement* element, const char* attribute);
|
||||
bool queryBool(XMLDocument*& element, const char* attribute);
|
||||
void errorCheck(XMLError error);
|
||||
};
|
||||
|
||||
#endif
|
109
converter/main.cc
Normal file
@ -0,0 +1,109 @@
|
||||
#include <lodepng/lodepng.h>
|
||||
#include <string>
|
||||
#include "converter.hh"
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
#include "tinyxml2.hh"
|
||||
|
||||
using namespace tinyxml2;
|
||||
|
||||
int main( int argc, char *argv[] ){
|
||||
if (argc <= 1){
|
||||
std::cout << "Converter needs the levels name (Level1) as input." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
printf("Initializing.\n");
|
||||
std::string levelString = argv[1];
|
||||
|
||||
|
||||
bool idFound[256][256];
|
||||
for (int i=0; i<256; i++){
|
||||
for (int j=0; j<256; j++){
|
||||
idFound[i][j] = false;
|
||||
}
|
||||
}
|
||||
|
||||
XMLDocument* config = new XMLDocument();
|
||||
const char* xmlFile = "../data/config.xml";
|
||||
config->LoadFile(xmlFile);
|
||||
if (config->ErrorID()!=0){
|
||||
printf("Could not open config.xml!\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
XMLElement* xmlLevelPath = config->FirstChildElement("levelXmlPath");
|
||||
if (xmlLevelPath == NULL){
|
||||
std::cout << "XMLError: Attribute levelXmlPath does not exist." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
const char* charLevelPath = xmlLevelPath->GetText();
|
||||
if(charLevelPath == NULL){
|
||||
std::cout << "XMLError: Attribute levelXmlPath could not be loaded." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
std::string levelPath = charLevelPath;
|
||||
|
||||
XMLElement* xmlCompositionsPath = config->FirstChildElement("compositionsPath");
|
||||
if (xmlCompositionsPath == NULL){
|
||||
std::cout << "XMLError: Attribute compositionsPath does not exist." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
const char* charCompositionsPath = xmlCompositionsPath->GetText();
|
||||
if(charCompositionsPath == NULL){
|
||||
std::cout << "XMLError: Attribute compositionsPath could not be loaded." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
std::string compositionsPath = charCompositionsPath;
|
||||
Converter conv = Converter("../" + levelPath, levelString, "../" + compositionsPath);
|
||||
|
||||
//read the setup png
|
||||
printf("Loading the png.\n");
|
||||
std::string filePath = "../" + levelPath + levelString + ".png";
|
||||
std::vector<unsigned char> image; //the raw pixels
|
||||
unsigned int width, height;
|
||||
unsigned error = lodepng::decode(image, width, height, filePath);
|
||||
if (error) {
|
||||
std::cout << "decoder error " << error << ": " << lodepng_error_text(error) << std::endl;
|
||||
std::cout << "Converter needs the levels name (Level1) as input." << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
printf("Iterating over the png.\n");
|
||||
//iterate over all pixels of the image
|
||||
for(unsigned int columnNum = 0; columnNum < width; columnNum++){
|
||||
for(unsigned int rowNum = 0; rowNum < height; rowNum++){
|
||||
unsigned int pixel = (rowNum*width+columnNum)*4;
|
||||
//if there is a composition here, adjust the xml and image
|
||||
if(image[pixel]!=0 && image[pixel]!=255){
|
||||
if(image[pixel+1]==0 && image[pixel+2]==0){//composition has no ID
|
||||
std::vector<int> newID;
|
||||
newID = conv.newComposition(image[pixel], 0.5+columnNum-0.5*width, 0.5+rowNum-0.5*height);
|
||||
idFound[newID[0]][newID[1]] = true;
|
||||
image[pixel+1] = newID[0];
|
||||
image[pixel+2] = newID[1];
|
||||
}else{//composition has an ID
|
||||
conv.updateComposition(image[pixel+1], image[pixel+2], 0.5+columnNum-0.5*width, 0.5+rowNum-0.5*height);
|
||||
idFound[image[pixel+1]][image[pixel+2]] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("Writing IDs back to the png.\n");
|
||||
//write ids back to the setup png
|
||||
error = lodepng::encode(filePath, image, width, height);
|
||||
if(error) {
|
||||
std::cout << "encoder error " << error << ": "<< lodepng_error_text(error) << std::endl;
|
||||
exit(-1);
|
||||
}
|
||||
printf("Deleting obsolete Compositions (Can take a minute).\n");
|
||||
//delete compositions that were not in the png anymore
|
||||
for (int i=0; i<256; i++){
|
||||
for (int j=0; j<256; j++){
|
||||
if (! idFound[i][j]){
|
||||
conv.deleteComposition(i,j);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//save the xml
|
||||
conv.save();
|
||||
}
|
42
data/config.xml
Normal file
@ -0,0 +1,42 @@
|
||||
<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>
|
1025
data/geometry/block.obj
Normal file
7306
data/geometry/brazier.obj
Normal file
298
data/geometry/column.obj
Normal file
@ -0,0 +1,298 @@
|
||||
# Blender v2.72 (sub 0) OBJ File: 'ruins_column.blend'
|
||||
# www.blender.org
|
||||
o Cylinder
|
||||
v 0.000000 -1.000000 -1.000000
|
||||
v 0.000000 1.000000 -1.000000
|
||||
v 0.195090 -1.000000 -0.980785
|
||||
v 0.195090 1.000000 -0.980785
|
||||
v 0.382683 -1.000000 -0.923880
|
||||
v 0.382683 1.000000 -0.923880
|
||||
v 0.555570 -1.000000 -0.831470
|
||||
v 0.555570 1.000000 -0.831470
|
||||
v 0.707107 -1.000000 -0.707107
|
||||
v 0.707107 1.000000 -0.707107
|
||||
v 0.831470 -1.000000 -0.555570
|
||||
v 0.831470 1.000000 -0.555570
|
||||
v 0.923880 -1.000000 -0.382683
|
||||
v 0.923880 1.000000 -0.382683
|
||||
v 0.980785 -1.000000 -0.195090
|
||||
v 0.980785 1.000000 -0.195090
|
||||
v 1.000000 -1.000000 -0.000000
|
||||
v 1.000000 1.000000 -0.000000
|
||||
v 0.980785 -1.000000 0.195090
|
||||
v 0.980785 1.000000 0.195090
|
||||
v 0.923880 -1.000000 0.382683
|
||||
v 0.923880 1.000000 0.382683
|
||||
v 0.831470 -1.000000 0.555570
|
||||
v 0.831470 1.000000 0.555570
|
||||
v 0.707107 -1.000000 0.707107
|
||||
v 0.707107 1.000000 0.707107
|
||||
v 0.555570 -1.000000 0.831470
|
||||
v 0.555570 1.000000 0.831470
|
||||
v 0.382683 -1.000000 0.923880
|
||||
v 0.382683 1.000000 0.923880
|
||||
v 0.195090 -1.000000 0.980785
|
||||
v 0.195090 1.000000 0.980785
|
||||
v -0.000000 -1.000000 1.000000
|
||||
v -0.000000 1.000000 1.000000
|
||||
v -0.195091 -1.000000 0.980785
|
||||
v -0.195091 1.000000 0.980785
|
||||
v -0.382684 -1.000000 0.923879
|
||||
v -0.382684 1.000000 0.923879
|
||||
v -0.555571 -1.000000 0.831469
|
||||
v -0.555571 1.000000 0.831469
|
||||
v -0.707107 -1.000000 0.707106
|
||||
v -0.707107 1.000000 0.707106
|
||||
v -0.831470 -1.000000 0.555570
|
||||
v -0.831470 1.000000 0.555570
|
||||
v -0.923880 -1.000000 0.382683
|
||||
v -0.923880 1.000000 0.382683
|
||||
v -0.980785 -1.000000 0.195089
|
||||
v -0.980785 1.000000 0.195089
|
||||
v -1.000000 -1.000000 -0.000001
|
||||
v -1.000000 1.000000 -0.000001
|
||||
v -0.980785 -1.000000 -0.195091
|
||||
v -0.980785 1.000000 -0.195091
|
||||
v -0.923879 -1.000000 -0.382684
|
||||
v -0.923879 1.000000 -0.382684
|
||||
v -0.831469 -1.000000 -0.555571
|
||||
v -0.831469 1.000000 -0.555571
|
||||
v -0.707106 -1.000000 -0.707108
|
||||
v -0.707106 1.000000 -0.707108
|
||||
v -0.555569 -1.000000 -0.831470
|
||||
v -0.555569 1.000000 -0.831470
|
||||
v -0.382682 -1.000000 -0.923880
|
||||
v -0.382682 1.000000 -0.923880
|
||||
v -0.195089 -1.000000 -0.980786
|
||||
v -0.195089 1.000000 -0.980786
|
||||
vt 0.445551 0.665886
|
||||
vt 0.445551 1.000293
|
||||
vt 0.404755 1.000293
|
||||
vt 0.404755 0.665886
|
||||
vt 0.364742 1.000293
|
||||
vt 0.364742 0.665886
|
||||
vt 0.327051 1.000293
|
||||
vt 0.327051 0.665886
|
||||
vt 0.293130 1.000293
|
||||
vt 0.293130 0.665886
|
||||
vt 0.264283 1.000293
|
||||
vt 0.264283 0.665886
|
||||
vt 0.264046 0.665593
|
||||
vt 0.264046 1.000000
|
||||
vt 0.230125 1.000000
|
||||
vt 0.230125 0.665593
|
||||
vt 0.192434 1.000000
|
||||
vt 0.192434 0.665593
|
||||
vt 0.152421 1.000000
|
||||
vt 0.152421 0.665593
|
||||
vt 0.111625 1.000000
|
||||
vt 0.111625 0.665593
|
||||
vt 0.071612 1.000000
|
||||
vt 0.071612 0.665593
|
||||
vt 0.033921 1.000000
|
||||
vt 0.033921 0.665593
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.665593
|
||||
vt 1.172897 0.665327
|
||||
vt 1.173156 0.999734
|
||||
vt 1.139235 0.999801
|
||||
vt 1.138976 0.665395
|
||||
vt 1.101544 0.999877
|
||||
vt 1.101285 0.665470
|
||||
vt 1.061532 0.999957
|
||||
vt 1.061273 0.665550
|
||||
vt 1.020735 1.000038
|
||||
vt 1.020476 0.665632
|
||||
vt 0.980723 1.000118
|
||||
vt 0.980464 0.665712
|
||||
vt 0.943032 1.000193
|
||||
vt 0.942772 0.665787
|
||||
vt 0.909111 1.000261
|
||||
vt 0.908852 0.665855
|
||||
vt 0.880263 1.000319
|
||||
vt 0.880004 0.665913
|
||||
vt 0.846342 1.000387
|
||||
vt 0.846083 0.665980
|
||||
vt 0.808651 1.000462
|
||||
vt 0.808392 0.666056
|
||||
vt 0.768638 1.000542
|
||||
vt 0.768379 0.666136
|
||||
vt 0.727842 1.000624
|
||||
vt 0.727583 0.666217
|
||||
vt 0.687830 1.000704
|
||||
vt 0.687570 0.666297
|
||||
vt 0.650139 1.000779
|
||||
vt 0.649879 0.666372
|
||||
vt 0.616217 1.000847
|
||||
vt 0.615958 0.666440
|
||||
vt 0.587370 1.000904
|
||||
vt 0.587111 0.666498
|
||||
vt 0.586023 0.665886
|
||||
vt 0.586023 1.000293
|
||||
vt 0.557176 1.000293
|
||||
vt 0.557176 0.665886
|
||||
vt 0.523255 1.000293
|
||||
vt 0.523255 0.665886
|
||||
vt 0.186708 0.665593
|
||||
vt 0.146696 0.659199
|
||||
vt 0.109005 0.646655
|
||||
vt 0.075084 0.628445
|
||||
vt 0.046237 0.605268
|
||||
vt 0.023571 0.578014
|
||||
vt 0.007959 0.547732
|
||||
vt 0.000000 0.515584
|
||||
vt 0.000000 0.482806
|
||||
vt 0.007959 0.450658
|
||||
vt 0.023571 0.420376
|
||||
vt 0.046236 0.393122
|
||||
vt 0.075084 0.369945
|
||||
vt 0.109005 0.351735
|
||||
vt 0.146696 0.339191
|
||||
vt 0.186708 0.332797
|
||||
vt 0.227505 0.332797
|
||||
vt 0.267517 0.339191
|
||||
vt 0.305209 0.351735
|
||||
vt 0.339130 0.369945
|
||||
vt 0.367977 0.393122
|
||||
vt 0.390642 0.420376
|
||||
vt 0.406254 0.450658
|
||||
vt 0.414213 0.482806
|
||||
vt 0.414213 0.515584
|
||||
vt 0.406254 0.547731
|
||||
vt 0.390642 0.578014
|
||||
vt 0.367977 0.605268
|
||||
vt 0.339130 0.628445
|
||||
vt 0.305209 0.646655
|
||||
vt 0.267518 0.659199
|
||||
vt 0.227505 0.665593
|
||||
vt 0.485564 0.665886
|
||||
vt 0.485564 1.000293
|
||||
vt 0.000000 0.182787
|
||||
vt 0.000000 0.150010
|
||||
vt 0.007959 0.117862
|
||||
vt 0.023571 0.087579
|
||||
vt 0.046236 0.060326
|
||||
vt 0.075084 0.037148
|
||||
vt 0.109005 0.018938
|
||||
vt 0.146696 0.006395
|
||||
vt 0.186708 0.000000
|
||||
vt 0.227505 0.000000
|
||||
vt 0.267517 0.006395
|
||||
vt 0.305208 0.018938
|
||||
vt 0.339129 0.037148
|
||||
vt 0.367977 0.060326
|
||||
vt 0.390642 0.087579
|
||||
vt 0.406254 0.117862
|
||||
vt 0.414213 0.150009
|
||||
vt 0.414213 0.182787
|
||||
vt 0.406254 0.214935
|
||||
vt 0.390642 0.245217
|
||||
vt 0.367977 0.272471
|
||||
vt 0.339129 0.295648
|
||||
vt 0.305208 0.313859
|
||||
vt 0.267517 0.326402
|
||||
vt 0.146696 0.326402
|
||||
vt 0.109005 0.313858
|
||||
vt 0.075084 0.295648
|
||||
vt 0.046236 0.272471
|
||||
vt 0.023571 0.245217
|
||||
vt 0.007959 0.214935
|
||||
vn 0.000000 -0.685700 -0.727900
|
||||
vn 0.000000 0.685700 -0.727900
|
||||
vn 0.142000 0.685700 -0.713900
|
||||
vn 0.142000 -0.685700 -0.713900
|
||||
vn 0.278500 0.685700 -0.672500
|
||||
vn 0.278500 -0.685700 -0.672500
|
||||
vn 0.404400 0.685700 -0.605200
|
||||
vn 0.404400 -0.685700 -0.605200
|
||||
vn 0.514700 0.685700 -0.514700
|
||||
vn 0.514700 -0.685700 -0.514700
|
||||
vn 0.605200 0.685700 -0.404400
|
||||
vn 0.605200 -0.685700 -0.404400
|
||||
vn 0.672500 0.685700 -0.278500
|
||||
vn 0.672500 -0.685700 -0.278500
|
||||
vn 0.713900 0.685700 -0.142000
|
||||
vn 0.713900 -0.685700 -0.142000
|
||||
vn 0.727900 0.685700 0.000000
|
||||
vn 0.727900 -0.685700 0.000000
|
||||
vn 0.713900 0.685700 0.142000
|
||||
vn 0.713900 -0.685700 0.142000
|
||||
vn 0.672500 0.685700 0.278500
|
||||
vn 0.672500 -0.685700 0.278500
|
||||
vn 0.605200 0.685700 0.404400
|
||||
vn 0.605200 -0.685700 0.404400
|
||||
vn 0.514700 0.685700 0.514700
|
||||
vn 0.514700 -0.685700 0.514700
|
||||
vn 0.404400 0.685700 0.605200
|
||||
vn 0.404400 -0.685700 0.605200
|
||||
vn 0.278500 0.685700 0.672500
|
||||
vn 0.278500 -0.685700 0.672500
|
||||
vn 0.142000 0.685700 0.713900
|
||||
vn 0.142000 -0.685700 0.713900
|
||||
vn 0.000000 0.685700 0.727900
|
||||
vn 0.000000 -0.685700 0.727900
|
||||
vn -0.142000 0.685700 0.713900
|
||||
vn -0.142000 -0.685700 0.713900
|
||||
vn -0.278500 0.685700 0.672500
|
||||
vn -0.278500 -0.685700 0.672500
|
||||
vn -0.404400 0.685700 0.605200
|
||||
vn -0.404400 -0.685700 0.605200
|
||||
vn -0.514700 0.685700 0.514700
|
||||
vn -0.514700 -0.685700 0.514700
|
||||
vn -0.605200 0.685700 0.404400
|
||||
vn -0.605200 -0.685700 0.404400
|
||||
vn -0.672500 0.685700 0.278500
|
||||
vn -0.672500 -0.685700 0.278500
|
||||
vn -0.713900 0.685700 0.142000
|
||||
vn -0.713900 -0.685700 0.142000
|
||||
vn -0.727900 0.685700 0.000000
|
||||
vn -0.727900 -0.685700 0.000000
|
||||
vn -0.713900 0.685700 -0.142000
|
||||
vn -0.713900 -0.685700 -0.142000
|
||||
vn -0.672500 0.685700 -0.278500
|
||||
vn -0.672500 -0.685700 -0.278500
|
||||
vn -0.605200 0.685700 -0.404400
|
||||
vn -0.605200 -0.685700 -0.404400
|
||||
vn -0.514700 0.685700 -0.514700
|
||||
vn -0.514700 -0.685700 -0.514700
|
||||
vn -0.404400 0.685700 -0.605200
|
||||
vn -0.404400 -0.685700 -0.605200
|
||||
vn -0.278500 0.685700 -0.672500
|
||||
vn -0.278500 -0.685700 -0.672500
|
||||
vn -0.142000 0.685700 -0.713900
|
||||
vn -0.142000 -0.685700 -0.713900
|
||||
s 1
|
||||
f 1/1/1 2/2/2 4/3/3 3/4/4
|
||||
f 3/4/4 4/3/3 6/5/5 5/6/6
|
||||
f 5/6/6 6/5/5 8/7/7 7/8/8
|
||||
f 7/8/8 8/7/7 10/9/9 9/10/10
|
||||
f 9/10/10 10/9/9 12/11/11 11/12/12
|
||||
f 11/13/12 12/14/11 14/15/13 13/16/14
|
||||
f 13/16/14 14/15/13 16/17/15 15/18/16
|
||||
f 15/18/16 16/17/15 18/19/17 17/20/18
|
||||
f 17/20/18 18/19/17 20/21/19 19/22/20
|
||||
f 19/22/20 20/21/19 22/23/21 21/24/22
|
||||
f 21/24/22 22/23/21 24/25/23 23/26/24
|
||||
f 23/26/24 24/25/23 26/27/25 25/28/26
|
||||
f 25/29/26 26/30/25 28/31/27 27/32/28
|
||||
f 27/32/28 28/31/27 30/33/29 29/34/30
|
||||
f 29/34/30 30/33/29 32/35/31 31/36/32
|
||||
f 31/36/32 32/35/31 34/37/33 33/38/34
|
||||
f 33/38/34 34/37/33 36/39/35 35/40/36
|
||||
f 35/40/36 36/39/35 38/41/37 37/42/38
|
||||
f 37/42/38 38/41/37 40/43/39 39/44/40
|
||||
f 39/44/40 40/43/39 42/45/41 41/46/42
|
||||
f 41/46/42 42/45/41 44/47/43 43/48/44
|
||||
f 43/48/44 44/47/43 46/49/45 45/50/46
|
||||
f 45/50/46 46/49/45 48/51/47 47/52/48
|
||||
f 47/52/48 48/51/47 50/53/49 49/54/50
|
||||
f 49/54/50 50/53/49 52/55/51 51/56/52
|
||||
f 51/56/52 52/55/51 54/57/53 53/58/54
|
||||
f 53/58/54 54/57/53 56/59/55 55/60/56
|
||||
f 55/60/56 56/59/55 58/61/57 57/62/58
|
||||
f 57/63/58 58/64/57 60/65/59 59/66/60
|
||||
f 59/66/60 60/65/59 62/67/61 61/68/62
|
||||
f 4/69/3 2/70/2 64/71/63 62/72/61 60/73/59 58/74/57 56/75/55 54/76/53 52/77/51 50/78/49 48/79/47 46/80/45 44/81/43 42/82/41 40/83/39 38/84/37 36/85/35 34/86/33 32/87/31 30/88/29 28/89/27 26/90/25 24/91/23 22/92/21 20/93/19 18/94/17 16/95/15 14/96/13 12/97/11 10/98/9 8/99/7 6/100/5
|
||||
f 63/101/64 64/102/63 2/2/2 1/1/1
|
||||
f 61/68/62 62/67/61 64/102/63 63/101/64
|
||||
f 1/103/1 3/104/4 5/105/6 7/106/8 9/107/10 11/108/12 13/109/14 15/110/16 17/111/18 19/112/20 21/113/22 23/114/24 25/115/26 27/116/28 29/117/30 31/118/32 33/119/34 35/120/36 37/121/38 39/122/40 41/123/42 43/124/44 45/125/46 47/126/48 49/85/50 51/84/52 53/127/54 55/128/56 57/129/58 59/130/60 61/131/62 63/132/64
|
39
data/geometry/exit.obj
Normal file
@ -0,0 +1,39 @@
|
||||
# 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
|
52
data/geometry/gate.obj
Normal file
@ -0,0 +1,52 @@
|
||||
# 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
|
41
data/geometry/hint.obj
Normal file
@ -0,0 +1,41 @@
|
||||
# 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
|
2487
data/geometry/marbleSmooth.obj
Normal file
54
data/geometry/movableBlock.obj
Normal file
@ -0,0 +1,54 @@
|
||||
# Blender v2.72 (sub 0) OBJ File: 'movableBlock.blend'
|
||||
# www.blender.org
|
||||
o Cube_Cube.001
|
||||
v -0.781204 -0.781204 0.781204
|
||||
v -0.781204 -0.781204 -0.781204
|
||||
v 0.781204 -0.781204 -0.781204
|
||||
v 0.781204 -0.781204 0.781204
|
||||
v -0.781204 0.781204 0.781204
|
||||
v -0.781204 0.781204 -0.781204
|
||||
v 0.781204 0.781204 -0.781204
|
||||
v 0.781204 0.781204 0.781204
|
||||
vt 0.004724 0.007107
|
||||
vt 0.995276 0.007107
|
||||
vt 0.995276 0.997658
|
||||
vt 0.008245 0.004505
|
||||
vt 0.994929 0.004505
|
||||
vt 0.994930 0.991189
|
||||
vt 0.011069 0.007349
|
||||
vt 0.992064 0.007349
|
||||
vt 0.992064 0.988345
|
||||
vt 0.001602 0.000731
|
||||
vt 0.999816 0.001904
|
||||
vt 1.000026 0.998811
|
||||
vt 0.006324 0.995789
|
||||
vt 0.006324 0.008395
|
||||
vt 0.993718 0.008394
|
||||
vt 0.005204 0.997859
|
||||
vt 0.005204 0.005051
|
||||
vt 0.998012 0.005050
|
||||
vt 0.998012 0.997858
|
||||
vt 0.004724 0.997658
|
||||
vt 0.008245 0.991189
|
||||
vt 0.011069 0.988345
|
||||
vt 0.001813 0.999704
|
||||
vt 0.993718 0.995789
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
s off
|
||||
f 6/1/1 2/2/1 1/3/1
|
||||
f 7/4/2 3/5/2 2/6/2
|
||||
f 8/7/3 4/8/3 3/9/3
|
||||
f 5/10/4 1/11/4 4/12/4
|
||||
f 2/13/5 3/14/5 4/15/5
|
||||
f 7/16/6 6/17/6 5/18/6
|
||||
f 8/19/6 7/16/6 5/18/6
|
||||
f 5/20/1 6/1/1 1/3/1
|
||||
f 6/21/2 7/4/2 2/6/2
|
||||
f 7/22/3 8/7/3 3/9/3
|
||||
f 8/23/4 5/10/4 4/12/4
|
||||
f 1/24/5 2/13/5 4/15/5
|
1011
data/geometry/ruinsBlock.obj
Normal file
388
data/geometry/ruinsColumn.obj
Normal file
@ -0,0 +1,388 @@
|
||||
# Blender v2.72 (sub 0) OBJ File: 'ruins_column.blend'
|
||||
# www.blender.org
|
||||
o Cylinder
|
||||
v 0.000000 -1.000000 -1.000000
|
||||
v 0.000000 1.000000 -1.000000
|
||||
v 0.195090 -1.000000 -0.980785
|
||||
v 0.195090 1.000000 -0.980785
|
||||
v 0.382683 -1.000000 -0.923880
|
||||
v 0.382683 1.000000 -0.923880
|
||||
v 0.555570 -1.000000 -0.831470
|
||||
v 0.555570 1.000000 -0.831470
|
||||
v 0.707107 -1.000000 -0.707107
|
||||
v 0.707107 1.000000 -0.707107
|
||||
v 0.831470 -1.000000 -0.555570
|
||||
v 0.831470 1.000000 -0.555570
|
||||
v 0.923880 -1.000000 -0.382683
|
||||
v 0.923880 1.000000 -0.382683
|
||||
v 0.980785 -1.000000 -0.195090
|
||||
v 0.980785 1.000000 -0.195090
|
||||
v 1.000000 -1.000000 -0.000000
|
||||
v 1.000000 1.000000 -0.000000
|
||||
v 0.980785 -1.000000 0.195090
|
||||
v 0.980785 1.000000 0.195090
|
||||
v 0.923880 -1.000000 0.382683
|
||||
v 0.923880 1.000000 0.382683
|
||||
v 0.831470 -1.000000 0.555570
|
||||
v 0.831470 1.000000 0.555570
|
||||
v 0.707107 -1.000000 0.707107
|
||||
v 0.707107 1.000000 0.707107
|
||||
v 0.555570 -1.000000 0.831470
|
||||
v 0.555570 1.000000 0.831470
|
||||
v 0.382683 -1.000000 0.923880
|
||||
v 0.382683 1.000000 0.923880
|
||||
v 0.195090 -1.000000 0.980785
|
||||
v 0.195090 1.000000 0.980785
|
||||
v -0.000000 -1.000000 1.000000
|
||||
v -0.000000 1.000000 1.000000
|
||||
v -0.195091 -1.000000 0.980785
|
||||
v -0.195091 1.000000 0.980785
|
||||
v -0.382684 -1.000000 0.923879
|
||||
v -0.382684 1.000000 0.923879
|
||||
v -0.555571 -1.000000 0.831469
|
||||
v -0.555571 1.000000 0.831469
|
||||
v -0.707107 -1.000000 0.707106
|
||||
v -0.707107 1.000000 0.707106
|
||||
v -0.831470 -1.000000 0.555570
|
||||
v -0.831470 1.000000 0.555570
|
||||
v -0.923880 -1.000000 0.382683
|
||||
v -0.923880 1.000000 0.382683
|
||||
v -0.980785 -1.000000 0.195089
|
||||
v -0.980785 1.000000 0.195089
|
||||
v -1.000000 -1.000000 -0.000001
|
||||
v -1.000000 1.000000 -0.000001
|
||||
v -0.980785 -1.000000 -0.195091
|
||||
v -0.980785 1.000000 -0.195091
|
||||
v -0.923879 -1.000000 -0.382684
|
||||
v -0.923879 1.000000 -0.382684
|
||||
v -0.831469 -1.000000 -0.555571
|
||||
v -0.831469 1.000000 -0.555571
|
||||
v -0.707106 -1.000000 -0.707108
|
||||
v -0.707106 1.000000 -0.707108
|
||||
v -0.555569 -1.000000 -0.831470
|
||||
v -0.555569 1.000000 -0.831470
|
||||
v -0.382682 -1.000000 -0.923880
|
||||
v -0.382682 1.000000 -0.923880
|
||||
v -0.195089 -1.000000 -0.980786
|
||||
v -0.195089 1.000000 -0.980786
|
||||
vt 0.445551 1.000293
|
||||
vt 0.404755 1.000293
|
||||
vt 0.404755 0.665886
|
||||
vt 0.364742 1.000293
|
||||
vt 0.364742 0.665886
|
||||
vt 0.327051 1.000293
|
||||
vt 0.327051 0.665886
|
||||
vt 0.293130 1.000293
|
||||
vt 0.264283 1.000293
|
||||
vt 0.264283 0.665886
|
||||
vt 0.264046 1.000000
|
||||
vt 0.230125 1.000000
|
||||
vt 0.230125 0.665593
|
||||
vt 0.192434 1.000000
|
||||
vt 0.192434 0.665593
|
||||
vt 0.152421 1.000000
|
||||
vt 0.152421 0.665593
|
||||
vt 0.111625 1.000000
|
||||
vt 0.071612 1.000000
|
||||
vt 0.071612 0.665593
|
||||
vt 0.033921 1.000000
|
||||
vt 0.033921 0.665593
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.665593
|
||||
vt 1.173156 0.999734
|
||||
vt 1.139235 0.999801
|
||||
vt 1.138976 0.665395
|
||||
vt 1.101544 0.999877
|
||||
vt 1.101285 0.665470
|
||||
vt 1.061532 0.999957
|
||||
vt 1.061273 0.665550
|
||||
vt 1.020735 1.000038
|
||||
vt 1.020476 0.665632
|
||||
vt 0.980723 1.000118
|
||||
vt 0.980464 0.665712
|
||||
vt 0.943032 1.000193
|
||||
vt 0.942772 0.665787
|
||||
vt 0.909111 1.000261
|
||||
vt 0.908852 0.665855
|
||||
vt 0.880263 1.000319
|
||||
vt 0.880004 0.665913
|
||||
vt 0.846342 1.000387
|
||||
vt 0.846083 0.665980
|
||||
vt 0.808651 1.000462
|
||||
vt 0.808392 0.666056
|
||||
vt 0.768638 1.000542
|
||||
vt 0.768379 0.666136
|
||||
vt 0.727842 1.000624
|
||||
vt 0.727583 0.666217
|
||||
vt 0.687830 1.000704
|
||||
vt 0.687570 0.666297
|
||||
vt 0.650139 1.000779
|
||||
vt 0.649879 0.666372
|
||||
vt 0.616217 1.000847
|
||||
vt 0.615958 0.666440
|
||||
vt 0.587370 1.000904
|
||||
vt 0.587111 0.666498
|
||||
vt 0.586023 1.000293
|
||||
vt 0.557176 1.000293
|
||||
vt 0.557176 0.665886
|
||||
vt 0.523255 1.000293
|
||||
vt 0.523255 0.665886
|
||||
vt 0.227505 0.665593
|
||||
vt 0.186708 0.665593
|
||||
vt 0.227505 0.332797
|
||||
vt 0.485564 1.000293
|
||||
vt 0.445551 0.665886
|
||||
vt 0.485564 0.665886
|
||||
vt 0.267517 0.006395
|
||||
vt 0.007959 0.214935
|
||||
vt 0.109005 0.018938
|
||||
vt 0.293130 0.665886
|
||||
vt 0.264046 0.665593
|
||||
vt 0.111625 0.665593
|
||||
vt 1.172897 0.665327
|
||||
vt 0.586023 0.665886
|
||||
vt 0.267518 0.659199
|
||||
vt 0.305209 0.646655
|
||||
vt 0.339130 0.628445
|
||||
vt 0.367977 0.605268
|
||||
vt 0.414213 0.515584
|
||||
vt 0.406254 0.547731
|
||||
vt 0.390642 0.578014
|
||||
vt 0.367977 0.393122
|
||||
vt 0.414213 0.482806
|
||||
vt 0.406254 0.450658
|
||||
vt 0.390642 0.420376
|
||||
vt 0.305209 0.351735
|
||||
vt 0.339130 0.369945
|
||||
vt 0.267517 0.339191
|
||||
vt 0.186708 0.332797
|
||||
vt 0.023571 0.420376
|
||||
vt 0.075084 0.369945
|
||||
vt 0.146696 0.339191
|
||||
vt 0.109005 0.351735
|
||||
vt 0.046236 0.393122
|
||||
vt 0.000000 0.482806
|
||||
vt 0.007959 0.450658
|
||||
vt 0.000000 0.515584
|
||||
vt 0.007959 0.547732
|
||||
vt 0.023571 0.578014
|
||||
vt 0.109005 0.646655
|
||||
vt 0.075084 0.628445
|
||||
vt 0.046237 0.605268
|
||||
vt 0.146696 0.659199
|
||||
vt 0.075084 0.295648
|
||||
vt 0.023571 0.245217
|
||||
vt 0.046236 0.272471
|
||||
vt 0.146696 0.326402
|
||||
vt 0.109005 0.313858
|
||||
vt 0.000000 0.182787
|
||||
vt 0.000000 0.150010
|
||||
vt 0.367977 0.272471
|
||||
vt 0.339129 0.295648
|
||||
vt 0.390642 0.245217
|
||||
vt 0.414213 0.150009
|
||||
vt 0.414213 0.182787
|
||||
vt 0.406254 0.214935
|
||||
vt 0.390642 0.087579
|
||||
vt 0.406254 0.117862
|
||||
vt 0.339129 0.037148
|
||||
vt 0.367977 0.060326
|
||||
vt 0.305208 0.018938
|
||||
vt 0.186708 0.000000
|
||||
vt 0.227505 0.000000
|
||||
vt 0.146696 0.006395
|
||||
vt 0.046236 0.060326
|
||||
vt 0.075084 0.037148
|
||||
vt 0.007959 0.117862
|
||||
vt 0.267517 0.326402
|
||||
vt 0.023571 0.087579
|
||||
vt 0.305208 0.313859
|
||||
vn 0.000000 0.685700 -0.727900
|
||||
vn 0.142000 0.685700 -0.713900
|
||||
vn 0.142000 -0.685700 -0.713900
|
||||
vn 0.278500 0.685700 -0.672500
|
||||
vn 0.278500 -0.685700 -0.672500
|
||||
vn 0.404400 0.685700 -0.605200
|
||||
vn 0.404400 -0.685700 -0.605200
|
||||
vn 0.514700 0.685700 -0.514700
|
||||
vn 0.605200 0.685700 -0.404400
|
||||
vn 0.605200 -0.685700 -0.404400
|
||||
vn 0.672500 0.685700 -0.278500
|
||||
vn 0.672500 -0.685700 -0.278500
|
||||
vn 0.713900 0.685700 -0.142000
|
||||
vn 0.713900 -0.685700 -0.142000
|
||||
vn 0.727900 0.685700 0.000000
|
||||
vn 0.727900 -0.685700 0.000000
|
||||
vn 0.713900 0.685700 0.142000
|
||||
vn 0.672500 0.685700 0.278500
|
||||
vn 0.672500 -0.685700 0.278500
|
||||
vn 0.605200 0.685700 0.404400
|
||||
vn 0.605200 -0.685700 0.404400
|
||||
vn 0.514700 0.685700 0.514700
|
||||
vn 0.514700 -0.685700 0.514700
|
||||
vn 0.404400 0.685700 0.605200
|
||||
vn 0.404400 -0.685700 0.605200
|
||||
vn 0.278500 0.685700 0.672500
|
||||
vn 0.278500 -0.685700 0.672500
|
||||
vn 0.142000 0.685700 0.713900
|
||||
vn 0.142000 -0.685700 0.713900
|
||||
vn 0.000000 0.685700 0.727900
|
||||
vn 0.000000 -0.685700 0.727900
|
||||
vn -0.142000 0.685700 0.713900
|
||||
vn -0.142000 -0.685700 0.713900
|
||||
vn -0.278500 0.685700 0.672500
|
||||
vn -0.278500 -0.685700 0.672500
|
||||
vn -0.404400 0.685700 0.605200
|
||||
vn -0.404400 -0.685700 0.605200
|
||||
vn -0.514700 0.685700 0.514700
|
||||
vn -0.514700 -0.685700 0.514700
|
||||
vn -0.605200 0.685700 0.404400
|
||||
vn -0.605200 -0.685700 0.404400
|
||||
vn -0.672500 0.685700 0.278500
|
||||
vn -0.672500 -0.685700 0.278500
|
||||
vn -0.713900 0.685700 0.142000
|
||||
vn -0.713900 -0.685700 0.142000
|
||||
vn -0.727900 0.685700 0.000000
|
||||
vn -0.727900 -0.685700 0.000000
|
||||
vn -0.713900 0.685700 -0.142000
|
||||
vn -0.713900 -0.685700 -0.142000
|
||||
vn -0.672500 0.685700 -0.278500
|
||||
vn -0.672500 -0.685700 -0.278500
|
||||
vn -0.605200 0.685700 -0.404400
|
||||
vn -0.605200 -0.685700 -0.404400
|
||||
vn -0.514700 0.685700 -0.514700
|
||||
vn -0.514700 -0.685700 -0.514700
|
||||
vn -0.404400 0.685700 -0.605200
|
||||
vn -0.404400 -0.685700 -0.605200
|
||||
vn -0.278500 0.685700 -0.672500
|
||||
vn -0.278500 -0.685700 -0.672500
|
||||
vn -0.142000 0.685700 -0.713900
|
||||
vn 0.000000 -0.685700 -0.727900
|
||||
vn -0.142000 -0.685700 -0.713900
|
||||
vn 0.514700 -0.685700 -0.514700
|
||||
vn 0.713900 -0.685700 0.142000
|
||||
s 1
|
||||
f 2/1/1 4/2/2 3/3/3
|
||||
f 4/2/2 6/4/4 5/5/5
|
||||
f 6/4/4 8/6/6 7/7/7
|
||||
f 7/7/7 8/6/6 10/8/8
|
||||
f 10/8/8 12/9/9 11/10/10
|
||||
f 12/11/9 14/12/11 13/13/12
|
||||
f 14/12/11 16/14/13 15/15/14
|
||||
f 16/14/13 18/16/15 17/17/16
|
||||
f 17/17/16 18/16/15 20/18/17
|
||||
f 20/18/17 22/19/18 21/20/19
|
||||
f 22/19/18 24/21/20 23/22/21
|
||||
f 24/21/20 26/23/22 25/24/23
|
||||
f 26/25/22 28/26/24 27/27/25
|
||||
f 28/26/24 30/28/26 29/29/27
|
||||
f 30/28/26 32/30/28 31/31/29
|
||||
f 32/30/28 34/32/30 33/33/31
|
||||
f 34/32/30 36/34/32 35/35/33
|
||||
f 36/34/32 38/36/34 37/37/35
|
||||
f 38/36/34 40/38/36 39/39/37
|
||||
f 40/38/36 42/40/38 41/41/39
|
||||
f 42/40/38 44/42/40 43/43/41
|
||||
f 44/42/40 46/44/42 45/45/43
|
||||
f 46/44/42 48/46/44 47/47/45
|
||||
f 48/46/44 50/48/46 49/49/47
|
||||
f 50/48/46 52/50/48 51/51/49
|
||||
f 52/50/48 54/52/50 53/53/51
|
||||
f 54/52/50 56/54/52 55/55/53
|
||||
f 56/54/52 58/56/54 57/57/55
|
||||
f 58/58/54 60/59/56 59/60/57
|
||||
f 60/59/56 62/61/58 61/62/59
|
||||
f 6/63/4 4/64/2 36/65/32
|
||||
f 64/66/60 2/1/1 1/67/61
|
||||
f 62/61/58 64/66/60 63/68/62
|
||||
f 21/69/19 63/70/62 13/71/12
|
||||
f 1/67/61 2/1/1 3/3/3
|
||||
f 3/3/3 4/2/2 5/5/5
|
||||
f 5/5/5 6/4/4 7/7/7
|
||||
f 9/72/63 7/7/7 10/8/8
|
||||
f 9/72/63 10/8/8 11/10/10
|
||||
f 11/73/10 12/11/9 13/13/12
|
||||
f 13/13/12 14/12/11 15/15/14
|
||||
f 15/15/14 16/14/13 17/17/16
|
||||
f 19/74/64 17/17/16 20/18/17
|
||||
f 19/74/64 20/18/17 21/20/19
|
||||
f 21/20/19 22/19/18 23/22/21
|
||||
f 23/22/21 24/21/20 25/24/23
|
||||
f 25/75/23 26/25/22 27/27/25
|
||||
f 27/27/25 28/26/24 29/29/27
|
||||
f 29/29/27 30/28/26 31/31/29
|
||||
f 31/31/29 32/30/28 33/33/31
|
||||
f 33/33/31 34/32/30 35/35/33
|
||||
f 35/35/33 36/34/32 37/37/35
|
||||
f 37/37/35 38/36/34 39/39/37
|
||||
f 39/39/37 40/38/36 41/41/39
|
||||
f 41/41/39 42/40/38 43/43/41
|
||||
f 43/43/41 44/42/40 45/45/43
|
||||
f 45/45/43 46/44/42 47/47/45
|
||||
f 47/47/45 48/46/44 49/49/47
|
||||
f 49/49/47 50/48/46 51/51/49
|
||||
f 51/51/49 52/50/48 53/53/51
|
||||
f 53/53/51 54/52/50 55/55/53
|
||||
f 55/55/53 56/54/52 57/57/55
|
||||
f 57/76/55 58/58/54 59/60/57
|
||||
f 59/60/57 60/59/56 61/62/59
|
||||
f 63/68/62 64/66/60 1/67/61
|
||||
f 8/77/6 6/63/4 10/78/8
|
||||
f 12/79/9 10/78/8 14/80/11
|
||||
f 20/81/17 18/82/15 16/83/13
|
||||
f 20/81/17 28/84/24 22/85/18
|
||||
f 24/86/20 22/85/18 26/87/22
|
||||
f 32/88/28 30/89/26 28/84/24
|
||||
f 36/65/32 34/90/30 32/88/28
|
||||
f 38/91/34 48/92/44 44/93/40
|
||||
f 40/94/36 38/91/34 42/95/38
|
||||
f 48/92/44 46/96/42 44/93/40
|
||||
f 52/97/48 50/98/46 48/92/44
|
||||
f 52/97/48 36/65/32 54/99/50
|
||||
f 56/100/52 54/99/50 58/101/54
|
||||
f 64/102/60 62/103/58 60/104/56
|
||||
f 4/64/2 2/105/1 64/102/60
|
||||
f 10/78/8 6/63/4 36/65/32
|
||||
f 38/91/34 44/93/40 42/95/38
|
||||
f 58/101/54 54/99/50 60/104/56
|
||||
f 36/65/32 32/88/28 28/84/24
|
||||
f 38/91/34 36/65/32 52/97/48
|
||||
f 22/85/18 28/84/24 26/87/22
|
||||
f 48/92/44 38/91/34 52/97/48
|
||||
f 4/64/2 64/102/60 60/104/56
|
||||
f 10/78/8 16/83/13 14/80/11
|
||||
f 36/65/32 28/84/24 20/81/17
|
||||
f 61/62/59 62/61/58 63/68/62
|
||||
f 10/78/8 20/81/17 16/83/13
|
||||
f 20/81/17 10/78/8 36/65/32
|
||||
f 54/99/50 36/65/32 60/104/56
|
||||
f 36/65/32 4/64/2 60/104/56
|
||||
f 21/69/19 49/65/47 57/106/55
|
||||
f 61/107/59 63/70/62 59/108/57
|
||||
f 53/109/51 55/110/53 57/106/55
|
||||
f 49/65/47 51/91/49 53/109/51
|
||||
f 63/70/62 1/111/61 3/112/3
|
||||
f 63/70/62 57/106/55 59/108/57
|
||||
f 41/113/39 43/114/41 39/115/37
|
||||
f 33/116/31 35/117/33 37/118/35
|
||||
f 29/119/27 31/120/29 33/116/31
|
||||
f 25/121/23 27/122/25 29/119/27
|
||||
f 21/69/19 23/123/21 25/121/23
|
||||
f 17/124/16 19/125/64 21/69/19
|
||||
f 17/124/16 21/69/19 15/126/14
|
||||
f 9/127/63 11/128/10 13/71/12
|
||||
f 13/71/12 5/129/5 9/127/63
|
||||
f 3/112/3 5/129/5 63/70/62
|
||||
f 49/65/47 53/109/51 57/106/55
|
||||
f 47/130/45 49/65/47 21/69/19
|
||||
f 5/129/5 7/131/7 9/127/63
|
||||
f 33/116/31 47/130/45 29/119/27
|
||||
f 5/129/5 13/71/12 63/70/62
|
||||
f 43/114/41 37/118/35 39/115/37
|
||||
f 37/118/35 43/114/41 47/130/45
|
||||
f 21/69/19 13/71/12 15/126/14
|
||||
f 33/116/31 37/118/35 47/130/45
|
||||
f 29/119/27 47/130/45 25/121/23
|
||||
f 43/114/41 45/132/43 47/130/45
|
||||
f 63/70/62 21/69/19 57/106/55
|
||||
f 25/121/23 47/130/45 21/69/19
|
15
data/geometry/ruinsTile.obj
Normal file
@ -0,0 +1,15 @@
|
||||
# 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
|
54
data/geometry/simpleWall.obj
Normal file
@ -0,0 +1,54 @@
|
||||
# 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
|
10951
data/geometry/skydome.obj
Normal file
500
data/geometry/switchInner.obj
Normal file
@ -0,0 +1,500 @@
|
||||
# Blender v2.73 (sub 0) OBJ File: 'switch_inner.blend'
|
||||
# www.blender.org
|
||||
o switch_Cube
|
||||
v 0.952094 -0.488588 -1.000000
|
||||
v 1.000000 -0.488588 -0.952094
|
||||
v 0.952094 -0.513173 -0.952094
|
||||
v 0.976015 -0.488588 -0.993600
|
||||
v 0.952094 -0.500864 -0.993600
|
||||
v 0.975003 -0.500345 -0.987383
|
||||
v 0.993600 -0.500864 -0.952093
|
||||
v 0.993600 -0.488588 -0.976015
|
||||
v 0.987383 -0.500345 -0.975003
|
||||
v 0.952094 -0.509888 -0.976015
|
||||
v 0.976015 -0.509888 -0.952093
|
||||
v 0.975003 -0.506698 -0.975003
|
||||
v 0.952094 -0.513173 0.952094
|
||||
v 1.000000 -0.488588 0.952094
|
||||
v 0.952094 -0.488588 1.000000
|
||||
v 0.976015 -0.509888 0.952094
|
||||
v 0.952094 -0.509888 0.976015
|
||||
v 0.975003 -0.506698 0.975003
|
||||
v 0.993600 -0.488588 0.976015
|
||||
v 0.993600 -0.500864 0.952094
|
||||
v 0.987383 -0.500345 0.975003
|
||||
v 0.952094 -0.500864 0.993600
|
||||
v 0.976015 -0.488588 0.993600
|
||||
v 0.975003 -0.500345 0.987383
|
||||
v -0.952094 -0.513173 0.952093
|
||||
v -0.952094 -0.488588 1.000000
|
||||
v -1.000000 -0.488588 0.952093
|
||||
v -0.952094 -0.509888 0.976015
|
||||
v -0.976016 -0.509888 0.952093
|
||||
v -0.975003 -0.506698 0.975003
|
||||
v -0.976016 -0.488588 0.993600
|
||||
v -0.952094 -0.500864 0.993600
|
||||
v -0.975003 -0.500345 0.987383
|
||||
v -0.993600 -0.500864 0.952093
|
||||
v -0.993600 -0.488588 0.976015
|
||||
v -0.987383 -0.500345 0.975003
|
||||
v -1.000000 -0.488588 -0.952094
|
||||
v -0.952093 -0.488588 -1.000000
|
||||
v -0.952093 -0.513173 -0.952094
|
||||
v -0.993600 -0.488588 -0.976016
|
||||
v -0.993600 -0.500864 -0.952094
|
||||
v -0.987383 -0.500345 -0.975003
|
||||
v -0.952093 -0.500864 -0.993600
|
||||
v -0.976015 -0.488588 -0.993600
|
||||
v -0.975003 -0.500345 -0.987383
|
||||
v -0.976015 -0.509888 -0.952094
|
||||
v -0.952093 -0.509888 -0.976016
|
||||
v -0.975003 -0.506698 -0.975003
|
||||
v 1.000000 0.488588 -0.952093
|
||||
v 0.952094 0.488588 -0.999999
|
||||
v 0.952094 0.513173 -0.952093
|
||||
v 0.993600 0.488588 -0.976015
|
||||
v 0.993600 0.500864 -0.952093
|
||||
v 0.987383 0.500345 -0.975002
|
||||
v 0.952094 0.500864 -0.993599
|
||||
v 0.976016 0.488588 -0.993599
|
||||
v 0.975003 0.500345 -0.987382
|
||||
v 0.976016 0.509888 -0.952093
|
||||
v 0.952094 0.509888 -0.976015
|
||||
v 0.975003 0.506698 -0.975002
|
||||
v 0.952093 0.513173 0.952094
|
||||
v 0.952093 0.488588 1.000001
|
||||
v 0.999999 0.488588 0.952094
|
||||
v 0.952093 0.509888 0.976016
|
||||
v 0.976015 0.509888 0.952094
|
||||
v 0.975002 0.506698 0.975004
|
||||
v 0.976015 0.488588 0.993601
|
||||
v 0.952093 0.500864 0.993601
|
||||
v 0.975002 0.500345 0.987384
|
||||
v 0.993599 0.500864 0.952094
|
||||
v 0.993599 0.488588 0.976016
|
||||
v 0.987382 0.500345 0.975004
|
||||
v -0.952094 0.513173 0.952093
|
||||
v -1.000000 0.488588 0.952093
|
||||
v -0.952094 0.488588 1.000000
|
||||
v -0.976016 0.509888 0.952093
|
||||
v -0.952094 0.509888 0.976015
|
||||
v -0.975003 0.506698 0.975003
|
||||
v -0.993600 0.488588 0.976015
|
||||
v -0.993600 0.500864 0.952093
|
||||
v -0.987383 0.500345 0.975003
|
||||
v -0.952094 0.500864 0.993600
|
||||
v -0.976016 0.488588 0.993600
|
||||
v -0.975003 0.500345 0.987383
|
||||
v -0.952094 0.488588 -1.000000
|
||||
v -1.000000 0.488588 -0.952094
|
||||
v -0.952094 0.513173 -0.952094
|
||||
v -0.976015 0.488588 -0.993600
|
||||
v -0.952093 0.500864 -0.993600
|
||||
v -0.975003 0.500345 -0.987383
|
||||
v -0.993600 0.500864 -0.952094
|
||||
v -0.993600 0.488588 -0.976015
|
||||
v -0.987383 0.500345 -0.975003
|
||||
v -0.952093 0.509888 -0.976015
|
||||
v -0.976015 0.509888 -0.952094
|
||||
v -0.975003 0.506698 -0.975003
|
||||
vt 0.856328 0.374264
|
||||
vt 0.426513 0.374264
|
||||
vt 0.426513 0.657341
|
||||
vt 0.856328 0.657341
|
||||
vt 0.654950 0.976215
|
||||
vt 0.654950 0.693138
|
||||
vt 0.853302 0.693138
|
||||
vt 0.861728 0.374264
|
||||
vt 0.861500 0.370859
|
||||
vt 0.865697 0.374264
|
||||
vt 0.864294 0.370859
|
||||
vt 0.856328 0.370708
|
||||
vt 0.865697 0.657341
|
||||
vt 0.861728 0.657341
|
||||
vt 0.861500 0.660747
|
||||
vt 0.856328 0.660897
|
||||
vt 0.856328 0.663512
|
||||
vt 0.861500 0.662587
|
||||
vt 0.864294 0.660747
|
||||
vt 0.421113 0.374264
|
||||
vt 0.421342 0.370859
|
||||
vt 0.856328 0.368094
|
||||
vt 0.861500 0.369018
|
||||
vt 0.426513 0.370708
|
||||
vt 0.426513 0.368094
|
||||
vt 0.421342 0.369018
|
||||
vt 0.417144 0.374264
|
||||
vt 0.418547 0.370859
|
||||
vt 0.426513 0.660897
|
||||
vt 0.421342 0.660747
|
||||
vt 0.421342 0.662587
|
||||
vt 0.421113 0.657341
|
||||
vt 0.417144 0.657341
|
||||
vt 0.418547 0.660747
|
||||
vt 0.426513 0.663512
|
||||
vt 0.851966 0.695368
|
||||
vt 0.659461 0.695368
|
||||
vt 0.659461 0.978445
|
||||
vt 0.853302 0.976215
|
||||
vt 0.851966 0.978445
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn -0.000000 -0.000000 1.000000
|
||||
vn -1.000000 -0.000000 -0.000000
|
||||
vn 0.000000 1.000000 -0.000000
|
||||
vn 1.000000 -0.000000 0.000000
|
||||
vn 0.238400 -0.455800 -0.857600
|
||||
vn 0.228100 -0.470400 -0.852500
|
||||
vn 0.233100 -0.463300 -0.855000
|
||||
vn 0.648500 -0.398700 -0.648500
|
||||
vn 0.648500 -0.398800 -0.648500
|
||||
vn 0.857600 -0.455800 -0.238400
|
||||
vn 0.860000 -0.448400 -0.243600
|
||||
vn 0.855000 -0.463300 -0.233100
|
||||
vn 0.451900 -0.880600 -0.142600
|
||||
vn 0.138600 -0.980600 -0.138600
|
||||
vn 0.142500 -0.980600 -0.134600
|
||||
vn 0.142600 -0.880600 -0.451900
|
||||
vn 0.415300 -0.809300 -0.415300
|
||||
vn 0.138600 -0.980600 0.138600
|
||||
vn 0.134600 -0.980600 0.142500
|
||||
vn 0.451900 -0.880600 0.142600
|
||||
vn 0.857600 -0.455800 0.238400
|
||||
vn 0.852500 -0.470400 0.228100
|
||||
vn 0.855000 -0.463300 0.233100
|
||||
vn 0.648500 -0.398800 0.648500
|
||||
vn 0.648500 -0.398700 0.648500
|
||||
vn 0.238400 -0.455800 0.857600
|
||||
vn 0.243600 -0.448400 0.860000
|
||||
vn 0.233100 -0.463300 0.855000
|
||||
vn 0.142600 -0.880600 0.451900
|
||||
vn 0.415300 -0.809300 0.415300
|
||||
vn -0.138600 -0.980600 0.138600
|
||||
vn -0.142500 -0.980600 0.134600
|
||||
vn -0.142600 -0.880600 0.451900
|
||||
vn -0.238400 -0.455800 0.857600
|
||||
vn -0.228100 -0.470400 0.852500
|
||||
vn -0.233100 -0.463300 0.855000
|
||||
vn -0.648500 -0.398800 0.648500
|
||||
vn -0.648500 -0.398700 0.648500
|
||||
vn -0.857600 -0.455800 0.238400
|
||||
vn -0.860000 -0.448400 0.243600
|
||||
vn -0.855000 -0.463300 0.233100
|
||||
vn -0.451900 -0.880600 0.142600
|
||||
vn -0.415300 -0.809300 0.415300
|
||||
vn -0.857600 -0.455800 -0.238400
|
||||
vn -0.852500 -0.470400 -0.228100
|
||||
vn -0.855000 -0.463300 -0.233100
|
||||
vn -0.648500 -0.398700 -0.648500
|
||||
vn -0.648500 -0.398800 -0.648500
|
||||
vn -0.238400 -0.455800 -0.857600
|
||||
vn -0.243600 -0.448400 -0.860000
|
||||
vn -0.233100 -0.463300 -0.855000
|
||||
vn -0.142600 -0.880600 -0.451900
|
||||
vn -0.138600 -0.980600 -0.138600
|
||||
vn -0.134600 -0.980600 -0.142500
|
||||
vn -0.451900 -0.880600 -0.142600
|
||||
vn -0.415300 -0.809300 -0.415300
|
||||
vn 0.857600 0.455800 -0.238400
|
||||
vn 0.852500 0.470400 -0.228100
|
||||
vn 0.855000 0.463300 -0.233100
|
||||
vn 0.648500 0.398800 -0.648500
|
||||
vn 0.648500 0.398700 -0.648500
|
||||
vn 0.238400 0.455800 -0.857600
|
||||
vn 0.243500 0.448400 -0.860000
|
||||
vn 0.233100 0.463300 -0.855000
|
||||
vn 0.142600 0.880600 -0.451900
|
||||
vn 0.138600 0.980600 -0.138600
|
||||
vn 0.134600 0.980600 -0.142500
|
||||
vn 0.451900 0.880600 -0.142600
|
||||
vn 0.415300 0.809300 -0.415300
|
||||
vn 0.138600 0.980600 0.138600
|
||||
vn 0.142500 0.980600 0.134600
|
||||
vn 0.142600 0.880600 0.451900
|
||||
vn 0.238400 0.455800 0.857600
|
||||
vn 0.228100 0.470400 0.852500
|
||||
vn 0.233100 0.463300 0.855000
|
||||
vn 0.648500 0.398700 0.648500
|
||||
vn 0.648500 0.398800 0.648500
|
||||
vn 0.857600 0.455800 0.238400
|
||||
vn 0.860000 0.448400 0.243600
|
||||
vn 0.855000 0.463300 0.233100
|
||||
vn 0.451900 0.880600 0.142600
|
||||
vn 0.415300 0.809300 0.415300
|
||||
vn -0.138600 0.980600 0.138600
|
||||
vn -0.134600 0.980600 0.142500
|
||||
vn -0.451900 0.880600 0.142600
|
||||
vn -0.857600 0.455800 0.238400
|
||||
vn -0.852500 0.470400 0.228100
|
||||
vn -0.855000 0.463300 0.233100
|
||||
vn -0.648500 0.398700 0.648500
|
||||
vn -0.648500 0.398800 0.648500
|
||||
vn -0.238400 0.455800 0.857600
|
||||
vn -0.243600 0.448400 0.860000
|
||||
vn -0.233100 0.463300 0.855000
|
||||
vn -0.142600 0.880600 0.451900
|
||||
vn -0.415300 0.809300 0.415300
|
||||
vn -0.238400 0.455800 -0.857600
|
||||
vn -0.228100 0.470400 -0.852500
|
||||
vn -0.233100 0.463300 -0.855000
|
||||
vn -0.648500 0.398800 -0.648500
|
||||
vn -0.648500 0.398700 -0.648500
|
||||
vn -0.857600 0.455800 -0.238400
|
||||
vn -0.860000 0.448400 -0.243500
|
||||
vn -0.855000 0.463300 -0.233100
|
||||
vn -0.451900 0.880600 -0.142600
|
||||
vn -0.138600 0.980600 -0.138600
|
||||
vn -0.142500 0.980600 -0.134600
|
||||
vn -0.142600 0.880600 -0.451900
|
||||
vn -0.415300 0.809300 -0.415300
|
||||
vn 0.886700 -0.462300 0.000000
|
||||
vn 0.456600 -0.889700 0.000000
|
||||
vn 0.136000 -0.990700 0.000000
|
||||
vn 0.000000 -0.990700 -0.136000
|
||||
vn 0.000000 -0.889700 -0.456600
|
||||
vn 0.000000 -0.462300 -0.886700
|
||||
vn 0.258500 0.000000 -0.966000
|
||||
vn 0.258400 0.000000 -0.966000
|
||||
vn 0.707100 0.000000 -0.707100
|
||||
vn 0.966000 -0.000000 -0.258500
|
||||
vn -0.000000 -0.462300 0.886700
|
||||
vn -0.000000 -0.889700 0.456600
|
||||
vn -0.000000 -0.990700 0.136000
|
||||
vn 0.966000 0.000000 0.258500
|
||||
vn 0.707100 0.000000 0.707100
|
||||
vn 0.258400 -0.000000 0.966000
|
||||
vn -0.886700 -0.462300 -0.000000
|
||||
vn -0.456600 -0.889700 -0.000000
|
||||
vn -0.136000 -0.990700 -0.000000
|
||||
vn -0.258500 0.000000 0.966000
|
||||
vn -0.707100 -0.000000 0.707100
|
||||
vn -0.966000 -0.000000 0.258500
|
||||
vn -0.966000 -0.000000 0.258400
|
||||
vn -0.966000 -0.000000 -0.258500
|
||||
vn -0.707100 0.000000 -0.707100
|
||||
vn -0.258500 0.000000 -0.966000
|
||||
vn 0.136000 0.990700 0.000000
|
||||
vn 0.456600 0.889700 0.000000
|
||||
vn 0.886700 0.462300 0.000000
|
||||
vn 0.000000 0.462300 -0.886700
|
||||
vn 0.000000 0.889700 -0.456600
|
||||
vn 0.000000 0.990700 -0.136000
|
||||
vn -0.000000 0.990700 0.136000
|
||||
vn -0.000000 0.889700 0.456600
|
||||
vn -0.000000 0.462300 0.886700
|
||||
vn -0.136000 0.990700 -0.000000
|
||||
vn -0.456600 0.889700 -0.000000
|
||||
vn -0.886700 0.462300 -0.000000
|
||||
vn 0.000000 -1.000000 -0.000000
|
||||
vn 0.243500 -0.448400 -0.860000
|
||||
vn 0.852500 -0.470400 -0.228100
|
||||
vn 0.134600 -0.980600 -0.142500
|
||||
vn 0.142500 -0.980600 0.134600
|
||||
vn 0.860000 -0.448400 0.243600
|
||||
vn 0.228100 -0.470400 0.852500
|
||||
vn -0.134600 -0.980600 0.142500
|
||||
vn -0.243600 -0.448400 0.860000
|
||||
vn -0.852500 -0.470400 0.228100
|
||||
vn -0.860000 -0.448400 -0.243500
|
||||
vn -0.228100 -0.470400 -0.852500
|
||||
vn -0.142500 -0.980600 -0.134600
|
||||
vn 0.860000 0.448400 -0.243600
|
||||
vn 0.228100 0.470400 -0.852500
|
||||
vn 0.142500 0.980600 -0.134600
|
||||
vn 0.134600 0.980600 0.142500
|
||||
vn 0.243600 0.448400 0.860000
|
||||
vn 0.852500 0.470400 0.228100
|
||||
vn -0.142500 0.980600 0.134600
|
||||
vn -0.860000 0.448400 0.243500
|
||||
vn -0.228100 0.470400 0.852500
|
||||
vn -0.243600 0.448400 -0.860000
|
||||
vn -0.852500 0.470400 -0.228100
|
||||
vn -0.134600 0.980600 -0.142500
|
||||
s 1
|
||||
f 1/1/1 38/2/1 85/3/1
|
||||
f 62/4/2 75/3/2 26/2/2
|
||||
f 74/3/3 86/4/3 37/1/3
|
||||
f 87/5/4 73/6/4 61/7/4
|
||||
f 49/4/5 63/3/5 14/2/5
|
||||
f 1/1/6 4/8/7 6/9/8
|
||||
f 8/10/9 9/11/9 6/9/10
|
||||
f 2/1/11 7/12/12 9/9/13
|
||||
f 7/13/14 11/14/14 12/15/14
|
||||
f 3/4/15 10/16/16 12/15/15
|
||||
f 5/17/17 6/18/17 12/15/17
|
||||
f 6/18/18 9/19/18 12/15/18
|
||||
f 13/1/19 16/8/20 18/9/19
|
||||
f 20/10/21 21/11/21 18/9/21
|
||||
f 14/2/22 19/20/23 21/21/24
|
||||
f 23/8/25 24/9/25 21/11/26
|
||||
f 15/1/27 22/12/28 24/9/29
|
||||
f 22/22/30 17/12/30 18/9/30
|
||||
f 18/9/31 21/11/31 24/23/31
|
||||
f 25/2/32 28/24/33 30/21/32
|
||||
f 32/25/34 33/26/34 30/21/34
|
||||
f 26/2/35 31/20/36 33/21/37
|
||||
f 35/27/38 36/28/39 33/21/38
|
||||
f 27/2/40 34/24/41 36/21/42
|
||||
f 34/27/43 29/20/43 30/21/43
|
||||
f 30/21/44 33/26/44 36/28/44
|
||||
f 37/1/45 40/8/46 42/9/47
|
||||
f 44/20/48 45/21/48 42/28/49
|
||||
f 38/2/50 43/24/51 45/21/52
|
||||
f 47/29/53 48/30/53 45/31/53
|
||||
f 39/3/54 46/32/55 48/30/54
|
||||
f 41/33/56 42/34/56 48/30/56
|
||||
f 42/34/57 45/31/57 48/30/57
|
||||
f 49/4/58 52/14/59 54/15/60
|
||||
f 56/14/61 57/15/61 54/19/62
|
||||
f 50/4/63 55/16/64 57/15/65
|
||||
f 59/16/66 60/15/66 57/18/66
|
||||
f 51/4/67 58/14/68 60/15/67
|
||||
f 53/13/69 54/19/69 60/15/69
|
||||
f 54/19/70 57/18/70 60/15/70
|
||||
f 61/1/71 64/12/72 66/9/71
|
||||
f 64/12/73 68/22/73 69/23/73
|
||||
f 62/4/74 67/14/75 69/15/76
|
||||
f 71/13/77 72/19/78 69/15/77
|
||||
f 63/3/79 70/29/80 72/30/81
|
||||
f 65/8/82 66/9/82 72/11/82
|
||||
f 66/9/83 69/23/83 72/11/83
|
||||
f 73/2/84 76/20/85 78/21/84
|
||||
f 76/20/86 80/27/86 81/28/86
|
||||
f 74/3/87 79/32/88 81/30/89
|
||||
f 83/32/90 84/30/90 81/34/91
|
||||
f 75/3/92 82/29/93 84/30/94
|
||||
f 82/25/95 77/24/95 78/21/95
|
||||
f 78/21/96 81/28/96 84/26/96
|
||||
f 85/3/97 88/32/98 90/30/99
|
||||
f 88/32/100 92/33/101 93/34/101
|
||||
f 86/4/102 91/16/103 93/15/104
|
||||
f 91/33/105 95/32/105 96/30/105
|
||||
f 87/3/106 94/29/107 96/30/106
|
||||
f 89/35/108 90/31/108 96/30/108
|
||||
f 90/31/109 93/34/109 96/30/109
|
||||
f 2/1/110 14/2/110 20/24/110
|
||||
f 20/10/111 16/8/111 11/14/111
|
||||
f 16/8/112 13/1/112 3/4/112
|
||||
f 3/4/113 39/3/113 47/29/113
|
||||
f 47/29/114 43/35/114 5/17/114
|
||||
f 43/24/115 38/2/115 1/1/115
|
||||
f 50/4/116 56/14/117 4/8/116
|
||||
f 56/14/118 52/13/118 8/10/118
|
||||
f 8/8/119 52/14/119 49/4/119
|
||||
f 26/2/120 32/24/120 22/12/120
|
||||
f 32/25/121 28/24/121 17/12/121
|
||||
f 28/24/122 25/2/122 13/1/122
|
||||
f 63/3/123 71/32/123 19/20/123
|
||||
f 71/13/124 67/14/124 23/8/124
|
||||
f 67/14/125 62/4/125 15/1/125
|
||||
f 37/1/126 41/12/126 34/24/126
|
||||
f 41/33/127 46/32/127 29/20/127
|
||||
f 46/32/128 39/3/128 25/2/128
|
||||
f 75/3/129 83/32/129 31/20/129
|
||||
f 83/32/130 79/33/130 35/27/130
|
||||
f 79/32/131 74/3/131 27/2/132
|
||||
f 86/4/133 92/14/133 40/8/133
|
||||
f 92/33/134 88/32/134 44/20/134
|
||||
f 88/32/135 85/3/135 38/2/135
|
||||
f 51/4/136 61/1/136 65/8/136
|
||||
f 65/8/137 70/10/137 53/13/137
|
||||
f 70/29/138 63/3/138 49/4/138
|
||||
f 85/3/139 89/29/139 55/16/139
|
||||
f 89/35/140 94/29/140 59/16/140
|
||||
f 59/16/141 94/29/141 87/3/141
|
||||
f 73/2/142 77/24/142 64/12/142
|
||||
f 77/24/143 82/25/143 68/22/143
|
||||
f 68/16/144 82/29/144 75/3/144
|
||||
f 87/3/145 95/32/145 76/20/145
|
||||
f 76/20/146 95/32/146 91/33/146
|
||||
f 80/29/147 91/16/147 86/4/147
|
||||
f 13/36/148 25/37/148 39/38/148
|
||||
f 50/4/1 1/1/1 85/3/1
|
||||
f 15/1/2 62/4/2 26/2/2
|
||||
f 27/2/3 74/3/3 37/1/3
|
||||
f 51/39/4 87/5/4 61/7/4
|
||||
f 2/1/5 49/4/5 14/2/5
|
||||
f 5/12/149 1/1/6 6/9/8
|
||||
f 4/8/10 8/10/9 6/9/10
|
||||
f 8/8/150 2/1/11 9/9/13
|
||||
f 9/19/14 7/13/14 12/15/14
|
||||
f 11/14/151 3/4/15 12/15/15
|
||||
f 10/16/17 5/17/17 12/15/17
|
||||
f 17/12/152 13/1/19 18/9/19
|
||||
f 16/8/21 20/10/21 18/9/21
|
||||
f 20/24/153 14/2/22 21/21/24
|
||||
f 19/10/26 23/8/25 21/11/26
|
||||
f 23/8/154 15/1/27 24/9/29
|
||||
f 24/23/30 22/22/30 18/9/30
|
||||
f 29/20/155 25/2/32 30/21/32
|
||||
f 28/24/34 32/25/34 30/21/34
|
||||
f 32/24/156 26/2/35 33/21/37
|
||||
f 31/20/38 35/27/38 33/21/38
|
||||
f 35/20/157 27/2/40 36/21/42
|
||||
f 36/28/43 34/27/43 30/21/43
|
||||
f 41/12/158 37/1/45 42/9/47
|
||||
f 40/27/49 44/20/48 42/28/49
|
||||
f 44/20/159 38/2/50 45/21/52
|
||||
f 43/35/53 47/29/53 45/31/53
|
||||
f 47/29/160 39/3/54 48/30/54
|
||||
f 46/32/56 41/33/56 48/30/56
|
||||
f 53/16/161 49/4/58 54/15/60
|
||||
f 52/13/62 56/14/61 54/19/62
|
||||
f 56/14/162 50/4/63 57/15/65
|
||||
f 55/17/66 59/16/66 57/18/66
|
||||
f 59/16/163 51/4/67 60/15/67
|
||||
f 58/14/69 53/13/69 60/15/69
|
||||
f 65/8/164 61/1/71 66/9/71
|
||||
f 66/9/73 64/12/73 69/23/73
|
||||
f 68/16/165 62/4/74 69/15/76
|
||||
f 67/14/77 71/13/77 69/15/77
|
||||
f 71/32/166 63/3/79 72/30/81
|
||||
f 70/10/82 65/8/82 72/11/82
|
||||
f 77/24/167 73/2/84 78/21/84
|
||||
f 78/21/86 76/20/86 81/28/86
|
||||
f 80/29/168 74/3/87 81/30/89
|
||||
f 79/33/91 83/32/90 81/34/91
|
||||
f 83/32/169 75/3/92 84/30/94
|
||||
f 84/26/95 82/25/95 78/21/95
|
||||
f 89/29/170 85/3/97 90/30/99
|
||||
f 90/30/100 88/32/100 93/34/101
|
||||
f 92/14/171 86/4/102 93/15/104
|
||||
f 93/34/105 91/33/105 96/30/105
|
||||
f 95/32/172 87/3/106 96/30/106
|
||||
f 94/29/108 89/35/108 96/30/108
|
||||
f 7/12/110 2/1/110 20/24/110
|
||||
f 7/13/111 20/10/111 11/14/111
|
||||
f 11/14/112 16/8/112 3/4/112
|
||||
f 10/16/113 3/4/113 47/29/113
|
||||
f 10/16/114 47/29/114 5/17/114
|
||||
f 5/12/115 43/24/115 1/1/115
|
||||
f 1/1/116 50/4/116 4/8/116
|
||||
f 4/8/118 56/14/118 8/10/118
|
||||
f 2/1/119 8/8/119 49/4/119
|
||||
f 15/1/120 26/2/120 22/12/120
|
||||
f 22/22/121 32/25/121 17/12/121
|
||||
f 17/12/122 28/24/122 13/1/122
|
||||
f 14/2/123 63/3/123 19/20/123
|
||||
f 19/10/124 71/13/124 23/8/124
|
||||
f 23/8/125 67/14/125 15/1/125
|
||||
f 27/2/126 37/1/126 34/24/126
|
||||
f 34/27/127 41/33/127 29/20/127
|
||||
f 29/20/128 46/32/128 25/2/128
|
||||
f 26/2/129 75/3/129 31/20/129
|
||||
f 31/20/130 83/32/130 35/27/130
|
||||
f 35/20/132 79/32/131 27/2/132
|
||||
f 37/1/133 86/4/133 40/8/133
|
||||
f 40/27/134 92/33/134 44/20/134
|
||||
f 44/20/135 88/32/135 38/2/135
|
||||
f 58/14/136 51/4/136 65/8/136
|
||||
f 58/14/137 65/8/137 53/13/137
|
||||
f 53/16/138 70/29/138 49/4/138
|
||||
f 50/4/139 85/3/139 55/16/139
|
||||
f 55/17/140 89/35/140 59/16/140
|
||||
f 51/4/141 59/16/141 87/3/141
|
||||
f 61/1/142 73/2/142 64/12/142
|
||||
f 64/12/143 77/24/143 68/22/143
|
||||
f 62/4/144 68/16/144 75/3/144
|
||||
f 73/2/145 87/3/145 76/20/145
|
||||
f 80/27/146 76/20/146 91/33/146
|
||||
f 74/3/147 80/29/147 86/4/147
|
||||
f 3/40/148 13/36/148 39/38/148
|
101
data/geometry/switchOuter.obj
Normal file
@ -0,0 +1,101 @@
|
||||
# Blender v2.72 (sub 0) OBJ File: 'switch_outer.blend'
|
||||
# www.blender.org
|
||||
o switch_Cube
|
||||
v 1.270169 -1.270169 -1.270169
|
||||
v 1.270169 -1.270169 1.270169
|
||||
v -1.270169 -1.270169 1.270169
|
||||
v -1.270169 -1.270169 -1.270170
|
||||
v 1.270170 1.270169 -1.270169
|
||||
v 1.270168 1.270169 1.270170
|
||||
v -1.270170 1.270169 1.270169
|
||||
v -1.270169 1.270169 -1.270169
|
||||
v 0.985712 1.270169 -0.998137
|
||||
v 0.985712 1.270169 0.965003
|
||||
v -0.940154 1.270169 0.973287
|
||||
v -0.940154 1.270170 -0.998137
|
||||
v 0.985712 -1.271890 -0.998137
|
||||
v 0.985712 -1.271890 0.965003
|
||||
v -0.940154 -1.271890 0.973287
|
||||
v -0.940154 -1.271890 -0.998137
|
||||
vt 0.222140 0.317533
|
||||
vt 0.462062 0.319398
|
||||
vt 0.461836 0.797664
|
||||
vt 0.462418 0.315542
|
||||
vt 0.462155 0.799279
|
||||
vt 0.219977 0.799745
|
||||
vt 0.460057 0.322033
|
||||
vt 0.461974 0.799281
|
||||
vt 0.219129 0.799420
|
||||
vt 0.459506 0.796589
|
||||
vt 0.220124 0.795724
|
||||
vt 0.220890 0.315480
|
||||
vt 0.461760 0.316819
|
||||
vt 0.221860 0.319521
|
||||
vt 0.222636 0.798557
|
||||
vt 0.809558 0.810889
|
||||
vt 0.781381 0.753963
|
||||
vt 0.782865 0.344970
|
||||
vt 0.553708 0.808618
|
||||
vt 0.553628 0.279374
|
||||
vt 0.588332 0.341517
|
||||
vt 0.784396 1.000000
|
||||
vt 0.784396 0.666591
|
||||
vt 1.000000 0.666591
|
||||
vt 0.002859 0.664645
|
||||
vt 0.223564 0.664868
|
||||
vt 0.223426 0.998277
|
||||
vt 1.000026 0.663788
|
||||
vt 1.000026 0.996547
|
||||
vt 0.785161 0.996547
|
||||
vt 0.220172 0.660110
|
||||
vt 0.220172 0.993518
|
||||
vt 0.000395 0.993518
|
||||
vt 0.221915 0.795798
|
||||
vt 0.220240 0.316007
|
||||
vt 0.219212 0.322172
|
||||
vt 0.460271 0.316344
|
||||
vt 0.462536 0.795855
|
||||
vt 0.590712 0.341538
|
||||
vt 0.556008 0.279395
|
||||
vt 0.809478 0.281644
|
||||
vt 0.588842 0.752236
|
||||
vt 0.779002 0.753942
|
||||
vt 0.807179 0.810867
|
||||
vt 0.002722 0.998054
|
||||
vt 1.000000 1.000000
|
||||
vt 0.785161 0.663789
|
||||
vt 0.000395 0.660110
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 1.000000 -0.000000 0.000000
|
||||
vn -0.000000 -0.000000 1.000000
|
||||
vn -1.000000 -0.000000 -0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn -0.004300 0.000000 -1.000000
|
||||
s off
|
||||
f 2/1/1 3/2/1 4/3/1
|
||||
f 1/4/2 5/5/2 6/6/2
|
||||
f 2/7/3 6/8/3 7/9/3
|
||||
f 7/10/4 8/11/4 4/12/4
|
||||
f 1/13/5 4/14/5 8/15/5
|
||||
f 5/16/6 9/17/6 10/18/6
|
||||
f 8/19/6 7/20/6 11/21/6
|
||||
f 12/22/3 16/23/3 13/24/3
|
||||
f 12/25/2 11/26/2 15/27/2
|
||||
f 10/28/7 14/29/7 15/30/7
|
||||
f 9/31/4 13/32/4 14/33/4
|
||||
f 1/34/1 2/1/1 4/3/1
|
||||
f 2/35/2 1/4/2 6/6/2
|
||||
f 3/36/3 2/7/3 7/9/3
|
||||
f 3/37/4 7/10/4 4/12/4
|
||||
f 5/38/5 1/13/5 8/15/5
|
||||
f 11/39/6 7/40/6 6/41/6
|
||||
f 12/42/6 9/43/6 5/44/6
|
||||
f 10/18/6 11/39/6 6/41/6
|
||||
f 6/41/6 5/16/6 10/18/6
|
||||
f 12/42/6 8/19/6 11/21/6
|
||||
f 12/42/6 5/44/6 8/19/6
|
||||
f 16/45/2 12/25/2 15/27/2
|
||||
f 9/46/3 12/22/3 13/24/3
|
||||
f 11/47/7 10/28/7 15/30/7
|
||||
f 10/48/4 9/31/4 14/33/4
|
641
data/geometry/torch.obj
Normal file
@ -0,0 +1,641 @@
|
||||
# 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
|
1
data/levels/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
*Backup*
|
903
data/levels/Compositions.xml
Normal file
@ -0,0 +1,903 @@
|
||||
<!-- 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>
|
BIN
data/levels/Level1.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
13446
data/levels/Level1.xml
Normal file
BIN
data/levels/TestLevel.png
Normal file
After Width: | Height: | Size: 135 B |
244
data/levels/TestLevel.xml
Normal file
@ -0,0 +1,244 @@
|
||||
<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>
|
BIN
data/levels/heightmapLvl1.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
data/levels/heightmapTestLevel.png
Normal file
After Width: | Height: | Size: 165 B |
39
data/levels/scripts/Template.lua
Normal file
@ -0,0 +1,39 @@
|
||||
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
|
17
data/levels/scripts/firstCheckpoint.lua
Normal file
@ -0,0 +1,17 @@
|
||||
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
|
3
data/levels/scripts/global.lua
Normal file
@ -0,0 +1,3 @@
|
||||
--global variable space
|
||||
local global = {}
|
||||
return global
|
4
data/levels/scripts/init.lua
Normal file
@ -0,0 +1,4 @@
|
||||
-- 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
|
51
data/levels/scripts/openFirstDoor.lua
Normal file
@ -0,0 +1,51 @@
|
||||
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
|
58
data/levels/scripts/openSecondDoor1.lua
Normal file
@ -0,0 +1,58 @@
|
||||
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
|
58
data/levels/scripts/openSecondDoor2.lua
Normal file
@ -0,0 +1,58 @@
|
||||
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
|
58
data/levels/scripts/openSecondDoor3.lua
Normal file
@ -0,0 +1,58 @@
|
||||
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
|
67
data/levels/scripts/openSecondDoor4.lua
Normal file
@ -0,0 +1,67 @@
|
||||
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
|
51
data/levels/scripts/openThirdDoor.lua
Normal file
@ -0,0 +1,51 @@
|
||||
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
|
21
data/levels/scripts/resetBox.lua
Normal file
@ -0,0 +1,21 @@
|
||||
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
|
35
data/levels/scripts/resetPlayer.lua
Normal file
@ -0,0 +1,35 @@
|
||||
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
|
21
data/levels/scripts/sunStart.lua
Normal file
@ -0,0 +1,21 @@
|
||||
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
|
28
data/levels/scripts/sunUpdate.lua
Normal file
@ -0,0 +1,28 @@
|
||||
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
|
9
data/shader/debug.fsh
Normal file
@ -0,0 +1,9 @@
|
||||
#version 150
|
||||
|
||||
in vec3 vColor;
|
||||
|
||||
out vec4 oColor;
|
||||
|
||||
void main() {
|
||||
oColor = vec4(vColor, 1.0);
|
||||
}
|
13
data/shader/debug.vsh
Normal file
@ -0,0 +1,13 @@
|
||||
#version 150
|
||||
|
||||
uniform mat4 viewProjectionMatrix;
|
||||
|
||||
in vec3 aPosition;
|
||||
in vec3 aColor;
|
||||
|
||||
out vec3 vColor;
|
||||
|
||||
void main() {
|
||||
vColor = aColor;
|
||||
gl_Position = viewProjectionMatrix * vec4(aPosition, 1.0);
|
||||
}
|
5
data/shader/depth.fsh
Normal file
@ -0,0 +1,5 @@
|
||||
#version 150
|
||||
|
||||
void main() {
|
||||
gl_FragDepth = gl_FragCoord.z;
|
||||
}
|
11
data/shader/depth.vsh
Normal file
@ -0,0 +1,11 @@
|
||||
#version 150
|
||||
|
||||
in vec3 aPosition;
|
||||
in vec3 aNormal;
|
||||
in vec3 aTexcoord;
|
||||
|
||||
uniform mat4 modelViewProjectionMatrix;
|
||||
|
||||
void main() {
|
||||
gl_Position = modelViewProjectionMatrix * vec4(aPosition, 1.0);
|
||||
}
|
13
data/shader/depth_cube.fsh
Normal file
@ -0,0 +1,13 @@
|
||||
#version 150
|
||||
|
||||
in vec4 fragPosition;
|
||||
|
||||
uniform float farPlane;
|
||||
|
||||
void main() {
|
||||
float nearPlane = 0.1;
|
||||
float A = -(farPlane+nearPlane)/(farPlane-nearPlane);
|
||||
float B = -2*(farPlane*nearPlane)/(farPlane - nearPlane);
|
||||
float value = 0.5*(-A*length(fragPosition) + B)/length(fragPosition) + 0.5;
|
||||
gl_FragDepth = value;
|
||||
}
|
15
data/shader/depth_cube.vsh
Normal file
@ -0,0 +1,15 @@
|
||||
#version 150
|
||||
|
||||
in vec3 aPosition;
|
||||
in vec3 aNormal;
|
||||
in vec3 aTexcoord;
|
||||
|
||||
uniform mat4 modelViewProjectionMatrix;
|
||||
uniform mat4 modelViewMatrix;
|
||||
|
||||
out vec4 fragPosition;
|
||||
|
||||
void main() {
|
||||
fragPosition = modelViewMatrix * vec4(aPosition, 1.0);
|
||||
gl_Position = modelViewProjectionMatrix * vec4(aPosition, 1.0);
|
||||
}
|
17
data/shader/flame.fsh
Normal file
@ -0,0 +1,17 @@
|
||||
#version 150
|
||||
|
||||
in vec3 fColor;
|
||||
|
||||
out vec4 oColor;
|
||||
|
||||
uniform bool withColor;
|
||||
|
||||
|
||||
void main() {
|
||||
if (withColor) {
|
||||
oColor = vec4(fColor, 0.6);
|
||||
}
|
||||
else {
|
||||
oColor = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
}
|
||||
}
|
104
data/shader/flame.gsh
Normal file
@ -0,0 +1,104 @@
|
||||
#version 150
|
||||
|
||||
uniform mat4 modelViewProjectionMatrix;
|
||||
uniform float time;
|
||||
uniform bool bottom;
|
||||
uniform int circle_index;
|
||||
uniform vec2 skew;
|
||||
|
||||
layout(points) in;
|
||||
layout(triangle_strip, max_vertices = 146) out;
|
||||
|
||||
in vec3 Color[];
|
||||
out vec3 fColor;
|
||||
|
||||
const float PI = 3.1415926;
|
||||
const float transition_point_1 = 0.486946;
|
||||
const float cos_p1_1 = 0.35;
|
||||
const float cos_p2_1 = 2.0;
|
||||
const float ex_p1_1 = -0.193;
|
||||
const float ex_p2_1 = 2.9426;
|
||||
const float begin_1 = -0.8;
|
||||
const float end_1 = 2;
|
||||
|
||||
const float transition_point_2 = 0.549778;
|
||||
const float cos_p1_2 = 0.5;
|
||||
const float cos_p2_2 = 2.0;
|
||||
const float ex_p1_2 = 0.677;
|
||||
const float ex_p2_2 = 3.9314;
|
||||
const float begin_2 = -0.8;
|
||||
const float end_2 = 1.3;
|
||||
|
||||
float flickerFunction() {
|
||||
float windPower = length(skew);
|
||||
if (windPower < 0.8) {
|
||||
windPower += 0.2;
|
||||
}
|
||||
return windPower * pow(sin((20.0/(windPower))*time + gl_in[0].gl_Position.x*gl_in[0].gl_Position.z), 2) + (1-windPower);
|
||||
}
|
||||
|
||||
float radiusFunction(float x) {
|
||||
float value_1 = 0.0;
|
||||
float value_2 = 0.0;
|
||||
if (x < transition_point_1) {
|
||||
value_1 = cos_p1_1 * cos(cos_p2_1 * x);
|
||||
}
|
||||
else {
|
||||
value_1 = exp(ex_p1_1 - ex_p2_1 * x);
|
||||
}
|
||||
if (x < transition_point_2) {
|
||||
value_2 = cos_p1_2 * cos(cos_p2_2 * x);
|
||||
}
|
||||
else {
|
||||
value_2 = exp(ex_p1_2 - ex_p2_2 * x);
|
||||
}
|
||||
return mix(value_1, value_2, flickerFunction());
|
||||
}
|
||||
|
||||
void main() {
|
||||
fColor = Color[0];
|
||||
|
||||
float resolution = 6.0;
|
||||
float this_begin = mix(begin_1, begin_2, flickerFunction());
|
||||
float this_end = mix(end_1, end_2, flickerFunction());
|
||||
float step = abs(this_end-this_begin)/resolution/2.0;
|
||||
float i = 0.0;
|
||||
float render_end = 0.0;
|
||||
if (bottom) {
|
||||
i = this_begin;
|
||||
render_end = (this_end-this_begin)/2.0+step;
|
||||
}
|
||||
else {
|
||||
i = (this_end-this_begin)/2.0;
|
||||
render_end = this_end;
|
||||
}
|
||||
for (i; i<render_end; i+=step) {
|
||||
float downRadius = radiusFunction(i);
|
||||
float upRadius = radiusFunction(i+step);
|
||||
int j = int(resolution/2.0) * circle_index;
|
||||
int circle_end = int(resolution/2.0) * (circle_index + 1);
|
||||
for (j; j<circle_end; j++) {
|
||||
float leftAngle = PI * 2.0 / resolution / 4.0 * j;
|
||||
float rightAngle = PI * 2.0 / resolution / 4.0 * (j+1);
|
||||
|
||||
vec4 offset = vec4(cos(rightAngle) * downRadius, i, -sin(rightAngle) * downRadius, 0.0);
|
||||
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
|
||||
EmitVertex();
|
||||
|
||||
offset = vec4(cos(rightAngle) * upRadius, i + step, -sin(rightAngle) * upRadius, 0.0);
|
||||
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
|
||||
EmitVertex();
|
||||
|
||||
offset = vec4(cos(leftAngle) * downRadius, i, -sin(leftAngle) * downRadius, 0.0);
|
||||
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
|
||||
EmitVertex();
|
||||
|
||||
offset = vec4(cos(leftAngle) * upRadius, i + step, -sin(leftAngle) * upRadius, 0.0);
|
||||
gl_Position = gl_in[0].gl_Position + modelViewProjectionMatrix * offset;
|
||||
EmitVertex();
|
||||
|
||||
EndPrimitive();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
17
data/shader/flame.vsh
Normal file
@ -0,0 +1,17 @@
|
||||
#version 150
|
||||
|
||||
uniform mat4 viewProjectionMatrix;
|
||||
uniform vec2 skew;
|
||||
|
||||
in vec3 aPosition;
|
||||
in vec3 aColor;
|
||||
|
||||
out vec3 Color;
|
||||
|
||||
const float end = 0.8;
|
||||
|
||||
void main () {
|
||||
Color = aColor;
|
||||
vec3 position = aPosition + vec3(-sin(skew.y)*end, 0.0, sin(skew.x)*end);
|
||||
gl_Position = viewProjectionMatrix * vec4(position, 1.0);
|
||||
}
|
21
data/shader/flame_post.fsh
Normal file
@ -0,0 +1,21 @@
|
||||
#version 150
|
||||
|
||||
in vec2 vTexCoord;
|
||||
|
||||
uniform sampler2D light_fbo;
|
||||
uniform int windowSizeX;
|
||||
uniform int windowSizeY;
|
||||
|
||||
out vec4 oColor;
|
||||
|
||||
const float lookup_offset = 4.0;
|
||||
|
||||
void main() {
|
||||
vec4 sum = vec4(0.0);
|
||||
for(float i = -lookup_offset; i<=lookup_offset; i+=1.0) {
|
||||
for(float j = -lookup_offset; j<=lookup_offset; j+=1.0) {
|
||||
sum += texture(light_fbo, vec2(vTexCoord.x + i * 1.0/(windowSizeX/2.0), vTexCoord.y + j * 1.0/(windowSizeY/2.0)))/pow(lookup_offset*2+1, 2.0);
|
||||
}
|
||||
}
|
||||
oColor = sum;
|
||||
}
|
11
data/shader/flame_post.vsh
Normal file
@ -0,0 +1,11 @@
|
||||
#version 150
|
||||
|
||||
in vec2 aPosition;
|
||||
in vec2 aTexCoord;
|
||||
|
||||
out vec2 vTexCoord;
|
||||
|
||||
void main() {
|
||||
vTexCoord = aTexCoord;
|
||||
gl_Position = vec4(aPosition, 0.0, 1.0);
|
||||
}
|
15
data/shader/loading.fsh
Normal file
@ -0,0 +1,15 @@
|
||||
#version 150
|
||||
|
||||
in vec2 vTexCoord;
|
||||
|
||||
uniform float time;
|
||||
uniform sampler2D screen;
|
||||
uniform sampler2D screenContinue;
|
||||
|
||||
out vec4 oColor;
|
||||
|
||||
void main() {
|
||||
vec4 screenColor = texture(screen, vTexCoord);
|
||||
vec4 screenContinueColor = texture(screenContinue, vTexCoord);
|
||||
oColor = mix(screenColor, screenContinueColor, pow(sin(time), 2));
|
||||
}
|
11
data/shader/loading.vsh
Normal file
@ -0,0 +1,11 @@
|
||||
#version 150
|
||||
|
||||
in vec2 aPosition;
|
||||
in vec2 aTexCoord;
|
||||
|
||||
out vec2 vTexCoord;
|
||||
|
||||
void main() {
|
||||
vTexCoord = aTexCoord;
|
||||
gl_Position = vec4(aPosition, 0.0, 1.0);
|
||||
}
|
406
data/shader/phong.fsh
Normal file
@ -0,0 +1,406 @@
|
||||
#version 150
|
||||
|
||||
in vec3 vNormal;
|
||||
in vec2 vTexCoord;
|
||||
in vec4 fragPosition;
|
||||
in vec4 shadowCoord0;
|
||||
in vec4 shadowCoord1;
|
||||
in vec4 shadowCoord2;
|
||||
in vec4 shadowCoord3;
|
||||
in vec4 shadowCoord4;
|
||||
|
||||
out vec4 oColor;
|
||||
|
||||
uniform sampler2D uTexture;
|
||||
uniform sampler2DShadow shadowMap_directional0;
|
||||
uniform sampler2DShadow shadowMap_directional1;
|
||||
uniform sampler2DShadow shadowMap_directional2;
|
||||
uniform sampler2DShadow shadowMap_directional3;
|
||||
uniform sampler2DShadow shadowMap_directional4;
|
||||
uniform samplerCubeShadow shadowMap_cube0;
|
||||
uniform samplerCubeShadow shadowMap_cube1;
|
||||
uniform samplerCubeShadow shadowMap_cube2;
|
||||
uniform samplerCubeShadow shadowMap_cube3;
|
||||
uniform samplerCubeShadow shadowMap_cube4;
|
||||
uniform samplerCubeShadow shadowMap_cube5;
|
||||
uniform samplerCubeShadow shadowMap_cube6;
|
||||
uniform samplerCubeShadow shadowMap_cube7;
|
||||
uniform samplerCubeShadow shadowMap_cube8;
|
||||
uniform samplerCubeShadow shadowMap_cube9;
|
||||
uniform samplerCubeShadow shadowMap_cube10;
|
||||
uniform samplerCubeShadow shadowMap_cube11;
|
||||
uniform samplerCubeShadow shadowMap_cube12;
|
||||
uniform samplerCubeShadow shadowMap_cube13;
|
||||
uniform samplerCubeShadow shadowMap_cube14;
|
||||
uniform samplerCubeShadow shadowMap_cube15;
|
||||
uniform samplerCubeShadow shadowMap_cube16;
|
||||
uniform samplerCubeShadow shadowMap_cube17;
|
||||
uniform samplerCubeShadow shadowMap_cube18;
|
||||
uniform samplerCubeShadow shadowMap_cube19;
|
||||
uniform samplerCubeShadow shadowMap_cube20;
|
||||
uniform samplerCubeShadow shadowMap_cube21;
|
||||
uniform samplerCubeShadow shadowMap_cube22;
|
||||
uniform samplerCubeShadow shadowMap_cube23;
|
||||
uniform samplerCubeShadow shadowMap_cube24;
|
||||
uniform samplerCubeShadow shadowMap_cube25;
|
||||
uniform vec3 ambientColor;
|
||||
uniform float ambientFactor;
|
||||
uniform float diffuseFactor;
|
||||
uniform float specularFactor;
|
||||
uniform vec3 camera;
|
||||
uniform float shininess;
|
||||
uniform int lightCount;
|
||||
uniform int maxShadowRenderCount;
|
||||
uniform vec3 directionalLightVector;
|
||||
uniform vec3 directionalColor;
|
||||
uniform float targetDirectionalIntensity;
|
||||
uniform vec3 lightSources[32];
|
||||
uniform vec3 lightColors[32];
|
||||
uniform float lightIntensities[32];
|
||||
uniform bool isFlame[32];
|
||||
uniform float farPlane;
|
||||
uniform vec4 fogColorDay;
|
||||
uniform vec4 fogColorRise;
|
||||
uniform vec4 fogColorNight;
|
||||
uniform vec3 cameraCenter;
|
||||
uniform bool movingTexture;
|
||||
uniform vec2 movement;
|
||||
uniform vec2 movingTextureOffset;
|
||||
uniform float time;
|
||||
|
||||
vec2 poissonDisk[16] = vec2[](
|
||||
vec2( -0.94201624, -0.39906216 ),
|
||||
vec2( 0.94558609, -0.76890725 ),
|
||||
vec2( -0.094184101, -0.92938870 ),
|
||||
vec2( 0.34495938, 0.29387760 ),
|
||||
vec2( -0.91588581, 0.45771432 ),
|
||||
vec2( -0.81544232, -0.87912464 ),
|
||||
vec2( -0.38277543, 0.27676845 ),
|
||||
vec2( 0.97484398, 0.75648379 ),
|
||||
vec2( 0.44323325, -0.97511554 ),
|
||||
vec2( 0.53742981, -0.47373420 ),
|
||||
vec2( -0.26496911, -0.41893023 ),
|
||||
vec2( 0.79197514, 0.19090188 ),
|
||||
vec2( -0.24188840, 0.99706507 ),
|
||||
vec2( -0.81409955, 0.91437590 ),
|
||||
vec2( 0.19984126, 0.78641367 ),
|
||||
vec2( 0.14383161, -0.14100790 )
|
||||
);
|
||||
|
||||
vec3 poissonDisk3D[16] = vec3[] (
|
||||
vec3( 0.541140674379, -0.67854138769, 0.482325914183 ),
|
||||
vec3( -0.427608163826, 0.79190057714, -0.403470341832 ),
|
||||
vec3( -0.226067542852, -0.628594453842, -0.661035377645 ),
|
||||
vec3( -0.811708612677, -0.0340861134035, 0.580406649804 ),
|
||||
vec3( 0.731005386334, 0.0695021546098, -0.606146385926 ),
|
||||
vec3( 0.213076426293, 0.6269493206, 0.744636925499 ),
|
||||
vec3( -0.124461723355, 0.0768244304602, 0.0386785336463 ),
|
||||
vec3( -0.945249148757, 0.00944808073483, -0.318861658446 ),
|
||||
vec3( 0.802723394956, 0.124750583818, 0.273800670393 ),
|
||||
vec3( -0.0571970562351, -0.156203447559, 0.908410256437 ),
|
||||
vec3( -0.442066534087, -0.709699743423, 0.232493422739 ),
|
||||
vec3( -0.317263286361, 0.194934041517, -0.923816906742 ),
|
||||
vec3( 0.381481981953, 0.798989636516, -0.0466460997255 ),
|
||||
vec3( -0.42752547127, 0.597430401925, 0.374108050255 ),
|
||||
vec3( 0.12603138305, -0.980780120028, -0.120190366913 ),
|
||||
vec3( 0.470540545819, -0.633374601042, -0.585070778068 )
|
||||
);
|
||||
|
||||
float flickerFunction(int index) {
|
||||
float windPower = length(movement);
|
||||
if (windPower < 0.8) {
|
||||
windPower += 0.2;
|
||||
}
|
||||
return windPower * pow(sin((20.0/(windPower))*time + lightSources[index].x*lightSources[index].z), 2) + (1-windPower);
|
||||
}
|
||||
|
||||
vec4 fogColor(float dot) {
|
||||
float riseFactor = 0.0;
|
||||
float dayFactor = 0.0;
|
||||
|
||||
if(dot<-0.52) {
|
||||
riseFactor = 0.0;
|
||||
}
|
||||
else if (dot>0.52) {
|
||||
riseFactor = 0.0;
|
||||
}
|
||||
else {
|
||||
riseFactor = cos(3*dot);
|
||||
}
|
||||
|
||||
if(dot<0.0) {
|
||||
dayFactor = 0.0;
|
||||
}
|
||||
else if(dot>1.0) {
|
||||
dayFactor = 1.0;
|
||||
}
|
||||
else {
|
||||
dayFactor = sin(dot);
|
||||
}
|
||||
if (dot <0.0) {
|
||||
return mix(fogColorNight, fogColorRise, riseFactor);
|
||||
}
|
||||
else {
|
||||
return mix(fogColorRise, fogColorDay, dayFactor);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
vec3 sunColor(float dot){
|
||||
float riseFactor = 0.0;
|
||||
if(dot<-0.79) {
|
||||
riseFactor = 0.0;
|
||||
}
|
||||
else if (dot>0.79) {
|
||||
riseFactor = 0.0;
|
||||
}
|
||||
else {
|
||||
riseFactor = cos(2*dot);
|
||||
}
|
||||
return mix(directionalColor, vec3(fogColorRise), riseFactor);
|
||||
}
|
||||
|
||||
float sunIntensity(float dot) {
|
||||
return targetDirectionalIntensity * sin(2*dot);
|
||||
}
|
||||
|
||||
float sampleDirectionalShadow(sampler2DShadow shadowMap, vec4 shadowCoord, float maxBias, float intensity) {
|
||||
float visibility = 1.0;
|
||||
const float stretching = 650.0;
|
||||
float bias = 0.001*tan(acos(clamp(dot(vNormal, -directionalLightVector), 0.0, 1.0)));
|
||||
bias = clamp(bias, 0.0, maxBias);
|
||||
for (int i=0; i<4; i++) {
|
||||
visibility -= intensity/16*(1.0-texture(shadowMap, vec3(shadowCoord.xy + poissonDisk[i]/stretching, shadowCoord.z - bias)));
|
||||
}
|
||||
if (visibility == 1.0-(intensity/16)*4)
|
||||
{
|
||||
visibility = 1.0-intensity;
|
||||
}
|
||||
else if (visibility != 1.0) {
|
||||
for (int i=0; i<12; i++) {
|
||||
visibility -= intensity/16*(1.0-texture(shadowMap, vec3(shadowCoord.xy + poissonDisk[i]/stretching, shadowCoord.z - bias)));
|
||||
}
|
||||
}
|
||||
return visibility;
|
||||
}
|
||||
|
||||
float samplePointShadow(samplerCubeShadow shadowMap, vec3 lightDirection, float intensity) {
|
||||
const float stretching = 10.0;
|
||||
float visibility = 1.0;
|
||||
float nearPlane = 0.1;
|
||||
float A = -(farPlane+nearPlane)/(farPlane-nearPlane);
|
||||
float B = -2*(farPlane*nearPlane)/(farPlane - nearPlane);
|
||||
float compValue = 0.5*(-A*length(lightDirection) + B)/length(lightDirection) + 0.5;
|
||||
float bias = 0.001*tan(acos(clamp(dot(vNormal, normalize(lightDirection)), 0.0, 1.0)));
|
||||
bias = clamp(bias, 0.0, 0.001);
|
||||
bias *= 1/length(lightDirection)*8;
|
||||
for (int i=0; i<4; i++) {
|
||||
visibility -= intensity/16*(1.0-texture(shadowMap, vec4(lightDirection + poissonDisk3D[i]/stretching, compValue - bias)));
|
||||
}
|
||||
if (visibility == 1.0-(intensity/16)*4)
|
||||
{
|
||||
visibility = 1.0-intensity;
|
||||
}
|
||||
else if (visibility != 1.0) {
|
||||
for (int i=0; i<12; i++) {
|
||||
visibility -= intensity/16*(1.0-texture(shadowMap, vec4(lightDirection + poissonDisk3D[i]/stretching, compValue - bias)));
|
||||
}
|
||||
}
|
||||
return visibility;
|
||||
}
|
||||
|
||||
float distanceToBorder(vec2 vector) {
|
||||
float xDistance = min(vector.x, 1.0-vector.x);
|
||||
float yDistance = min(vector.y, 1.0-vector.y);
|
||||
return min(xDistance, yDistance);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 ambientColor = ambientFactor * ambientColor;
|
||||
vec3 diffuseColor = vec3(0.0, 0.0, 0.0);
|
||||
vec3 specularColor = vec3(0.0, 0.0, 0.0);
|
||||
|
||||
|
||||
// direction lighting
|
||||
float sunAngle = -1.0;
|
||||
vec3 directionalVector = normalize(directionalLightVector);
|
||||
sunAngle = dot(vec3(0.0, 1.0, 0.0), directionalVector);
|
||||
if(sunAngle > 0.0) {
|
||||
float directionalVisibility = 1.0f;
|
||||
float directionalIntensity = sunIntensity(sunAngle);
|
||||
if (distanceToBorder(shadowCoord3.xy) <= 0.5 && distanceToBorder(shadowCoord3.xy) > 0.2) {
|
||||
if (distanceToBorder(shadowCoord2.xy) <= 0.5 && distanceToBorder(shadowCoord2.xy) > 0.2) {
|
||||
if (distanceToBorder(shadowCoord1.xy) <= 0.5 && distanceToBorder(shadowCoord1.xy) > 0.2) {
|
||||
if (distanceToBorder(shadowCoord0.xy) <= 0.5 && distanceToBorder(shadowCoord0.xy) > 0.2) {
|
||||
directionalVisibility = sampleDirectionalShadow(shadowMap_directional0, shadowCoord0, 0.001, directionalIntensity);
|
||||
}
|
||||
else if (distanceToBorder(shadowCoord0.xy) <= 0.5 && distanceToBorder(shadowCoord0.xy) > 0.0) {
|
||||
float directionalVisibility0 = sampleDirectionalShadow(shadowMap_directional0, shadowCoord0, 0.001, directionalIntensity);
|
||||
float directionalVisibility1 = sampleDirectionalShadow(shadowMap_directional1, shadowCoord1, 0.001, directionalIntensity);
|
||||
directionalVisibility = mix(directionalVisibility0, directionalVisibility1, distanceToBorder(shadowCoord0.xy) * 5);
|
||||
}
|
||||
else {
|
||||
directionalVisibility = sampleDirectionalShadow(shadowMap_directional1, shadowCoord1, 0.001, directionalIntensity);
|
||||
}
|
||||
}
|
||||
else if (distanceToBorder(shadowCoord1.xy) <= 0.5 && distanceToBorder(shadowCoord1.xy) > 0.0) {
|
||||
float directionalVisibility1 = sampleDirectionalShadow(shadowMap_directional1, shadowCoord1, 0.001, directionalIntensity);
|
||||
float directionalVisibility2 = sampleDirectionalShadow(shadowMap_directional2, shadowCoord2, 0.002, directionalIntensity);
|
||||
directionalVisibility = mix(directionalVisibility1, directionalVisibility2, distanceToBorder(shadowCoord1.xy) * 5);
|
||||
}
|
||||
else {
|
||||
directionalVisibility = sampleDirectionalShadow(shadowMap_directional2, shadowCoord2, 0.002, directionalIntensity);
|
||||
}
|
||||
}
|
||||
else if (distanceToBorder(shadowCoord2.xy) <= 0.5 && distanceToBorder(shadowCoord2.xy) > 0.0) {
|
||||
float directionalVisibility2 = sampleDirectionalShadow(shadowMap_directional2, shadowCoord2, 0.002, directionalIntensity);
|
||||
float directionalVisibility3 = sampleDirectionalShadow(shadowMap_directional3, shadowCoord3, 0.005, directionalIntensity);
|
||||
directionalVisibility = mix(directionalVisibility2, directionalVisibility3, distanceToBorder(shadowCoord2.xy) * 5);
|
||||
}
|
||||
else {
|
||||
directionalVisibility = sampleDirectionalShadow(shadowMap_directional3, shadowCoord3, 0.005, directionalIntensity);
|
||||
}
|
||||
}
|
||||
else if (distanceToBorder(shadowCoord3.xy) <= 0.5 && distanceToBorder(shadowCoord3.xy) > 0.0) {
|
||||
float directionalVisibility3 = sampleDirectionalShadow(shadowMap_directional3, shadowCoord3, 0.005, directionalIntensity);
|
||||
float directionalVisibility4 = sampleDirectionalShadow(shadowMap_directional4, shadowCoord4, 0.01, directionalIntensity);
|
||||
directionalVisibility = mix(directionalVisibility3, directionalVisibility4, distanceToBorder(shadowCoord3.xy) * 5);
|
||||
}
|
||||
else {
|
||||
directionalVisibility = sampleDirectionalShadow(shadowMap_directional4, shadowCoord4, 0.01, directionalIntensity);
|
||||
}
|
||||
diffuseColor += clamp(dot(normalize(vNormal), directionalVector)
|
||||
*diffuseFactor*directionalIntensity*sunColor(sunAngle), 0.0, 1.0)*directionalVisibility;
|
||||
vec3 cameraVector = normalize(camera - vec3(fragPosition));
|
||||
specularColor += clamp(pow((dot((cameraVector+directionalVector),normalize(vNormal))/
|
||||
(length(cameraVector+directionalVector)*length(normalize(vNormal)))),shininess), 0.0, 1.0)
|
||||
*specularFactor*directionalIntensity*sunColor(sunAngle)*directionalVisibility;
|
||||
}
|
||||
|
||||
// point lights
|
||||
float visibility = 1.0;
|
||||
for(int i = 0; i<lightCount; i++) {
|
||||
vec3 lightPos = vec3(0.0, 0.0, 0.0);
|
||||
if (isFlame[i] == true) {
|
||||
lightPos = vec3(lightSources[i].x - 0.75*movement.y , lightSources[i].y, lightSources[i].z + 0.75*movement.x);
|
||||
}
|
||||
else {
|
||||
lightPos = lightSources[i];
|
||||
}
|
||||
vec3 lightDirection = vec3(fragPosition) - lightPos;
|
||||
float distance = length(lightDirection);
|
||||
float pointVisibility = 1.0f;
|
||||
// only take lights into account with meaningful contribution
|
||||
float intensity = 0.0f;
|
||||
if (isFlame[i] == true) {
|
||||
intensity = clamp(exp(-(1/(lightIntensities[i] + flickerFunction(i)))*distance), 0.0, 1.0);
|
||||
}
|
||||
else {
|
||||
intensity = clamp(exp(-(1/lightIntensities[i])*distance), 0.0, 1.0);
|
||||
}
|
||||
if (intensity > 0.005) {
|
||||
if (i == 0 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube0, lightDirection, intensity);
|
||||
}
|
||||
if (i == 1 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube1, lightDirection, intensity);
|
||||
}
|
||||
if (i == 2 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube2, lightDirection, intensity);
|
||||
}
|
||||
if (i == 3 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube3, lightDirection, intensity);
|
||||
}
|
||||
if (i == 4 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube4, lightDirection, intensity);
|
||||
}
|
||||
if (i == 5 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube5, lightDirection, intensity);
|
||||
}
|
||||
if (i == 6 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube6, lightDirection, intensity);
|
||||
}
|
||||
if (i == 7 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube7, lightDirection, intensity);
|
||||
}
|
||||
if (i == 8 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube8, lightDirection, intensity);
|
||||
}
|
||||
if (i == 9 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube9, lightDirection, intensity);
|
||||
}
|
||||
if (i == 10 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube10, lightDirection, intensity);
|
||||
}
|
||||
if (i == 11 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube11, lightDirection, intensity);
|
||||
}
|
||||
if (i == 12 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube12, lightDirection, intensity);
|
||||
}
|
||||
if (i == 13 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube13, lightDirection, intensity);
|
||||
}
|
||||
if (i == 14 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube14, lightDirection, intensity);
|
||||
}
|
||||
if (i == 15 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube15, lightDirection, intensity);
|
||||
}
|
||||
if (i == 16 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube16, lightDirection, intensity);
|
||||
}
|
||||
if (i == 17 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube17, lightDirection, intensity);
|
||||
}
|
||||
if (i == 18 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube18, lightDirection, intensity);
|
||||
}
|
||||
if (i == 19 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube19, lightDirection, intensity);
|
||||
}
|
||||
if (i == 20 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube20, lightDirection, intensity);
|
||||
}
|
||||
if (i == 21 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube21, lightDirection, intensity);
|
||||
}
|
||||
if (i == 22 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube22, lightDirection, intensity);
|
||||
}
|
||||
if (i == 23 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube23, lightDirection, intensity);
|
||||
}
|
||||
if (i == 24 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube24, lightDirection, intensity);
|
||||
}
|
||||
if (i == 25 && i<maxShadowRenderCount) {
|
||||
pointVisibility = samplePointShadow(shadowMap_cube25, lightDirection, intensity);
|
||||
}
|
||||
vec3 lightVector = normalize(lightPos-vec3(fragPosition));
|
||||
diffuseColor += clamp(dot(normalize(vNormal), lightVector)
|
||||
*diffuseFactor*intensity*lightColors[i]*pointVisibility, 0.0, 1.0);
|
||||
vec3 cameraVector = normalize(camera - vec3(fragPosition));
|
||||
specularColor += clamp(pow((dot((cameraVector+lightVector),normalize(vNormal))/
|
||||
(length(cameraVector+lightVector)*length(normalize(vNormal)))),shininess)*pointVisibility, 0.0, 1.0)
|
||||
*specularFactor*intensity*lightColors[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
vec3 finalColor = specularColor + diffuseColor + ambientColor;
|
||||
float distanceCameraCenter = distance(cameraCenter, vec3(fragPosition));
|
||||
float fogFactor = clamp((1.0 - ((farPlane - 35.0) -distanceCameraCenter)/30.0), 0.0, 1.0);
|
||||
fogFactor *= clamp((1.0-((fragPosition.y-40.0)/30.0)), 0.0, 1.0);
|
||||
|
||||
vec4 textureColor = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
if (movingTexture == true) {
|
||||
textureColor = texture(uTexture, vec2(vTexCoord.x + movingTextureOffset.x, vTexCoord.y + movingTextureOffset.y)).rgba;
|
||||
}
|
||||
else {
|
||||
textureColor = texture(uTexture, vTexCoord).rgba;
|
||||
}
|
||||
oColor = vec4(finalColor, 1.0f)*textureColor;
|
||||
oColor = mix(oColor, fogColor(sunAngle), fogFactor);
|
||||
}
|
31
data/shader/phong.vsh
Normal file
@ -0,0 +1,31 @@
|
||||
#version 150
|
||||
|
||||
uniform mat4 modelMatrix;
|
||||
uniform mat4 modelViewProjectionMatrix;
|
||||
uniform mat4 shadowMVPs[5];
|
||||
|
||||
in vec3 aPosition;
|
||||
in vec3 aNormal;
|
||||
in vec2 aTexCoord;
|
||||
|
||||
out vec3 vNormal;
|
||||
out vec2 vTexCoord;
|
||||
out vec4 fragPosition;
|
||||
out vec4 shadowCoord0;
|
||||
out vec4 shadowCoord1;
|
||||
out vec4 shadowCoord2;
|
||||
out vec4 shadowCoord3;
|
||||
out vec4 shadowCoord4;
|
||||
|
||||
void main()
|
||||
{
|
||||
fragPosition = modelMatrix * vec4(aPosition, 1.0);
|
||||
vNormal = inverse(transpose(mat3(modelMatrix))) * aNormal;
|
||||
vTexCoord = aTexCoord;
|
||||
shadowCoord0 = shadowMVPs[0] * vec4(aPosition, 1.0);
|
||||
shadowCoord1 = shadowMVPs[1] * vec4(aPosition, 1.0);
|
||||
shadowCoord2 = shadowMVPs[2] * vec4(aPosition, 1.0);
|
||||
shadowCoord3 = shadowMVPs[3] * vec4(aPosition, 1.0);
|
||||
shadowCoord4 = shadowMVPs[4] * vec4(aPosition, 1.0);
|
||||
gl_Position = modelViewProjectionMatrix * vec4(aPosition, 1.0);
|
||||
}
|
89
data/shader/skydome.fsh
Normal file
@ -0,0 +1,89 @@
|
||||
#version 150
|
||||
|
||||
in vec2 vTexCoord;
|
||||
in vec4 fragPosition;
|
||||
in vec4 sunPosition;
|
||||
|
||||
out vec4 oColor;
|
||||
|
||||
uniform sampler2D dayTexture;
|
||||
uniform sampler2D nightTexture;
|
||||
uniform float farPlane;
|
||||
uniform vec4 fogColorDay;
|
||||
uniform vec4 fogColorRise;
|
||||
uniform vec4 fogColorNight;
|
||||
uniform vec3 cameraCenter;
|
||||
uniform vec3 sunColor;
|
||||
uniform vec3 directionalVector;
|
||||
|
||||
const float sunSize = 20.0;
|
||||
|
||||
vec4 fogColor(float dot) {
|
||||
float riseFactor = 0.0;
|
||||
float dayFactor = 0.0;
|
||||
|
||||
if(dot<-0.52) {
|
||||
riseFactor = 0.0;
|
||||
}
|
||||
else if (dot>0.52) {
|
||||
riseFactor = 0.0;
|
||||
}
|
||||
else {
|
||||
riseFactor = cos(3*dot);
|
||||
}
|
||||
|
||||
if(dot<0.0) {
|
||||
dayFactor = 0.0;
|
||||
}
|
||||
else if(dot>1.0) {
|
||||
dayFactor = 1.0;
|
||||
}
|
||||
else {
|
||||
dayFactor = sin(dot);
|
||||
}
|
||||
if (dot <0.0) {
|
||||
return mix(fogColorNight, fogColorRise, riseFactor);
|
||||
}
|
||||
else {
|
||||
return mix(fogColorRise, fogColorDay, dayFactor);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
vec3 sunColorFunc(float dot) {
|
||||
float riseFactor = 0.0;
|
||||
if(dot<-0.79) {
|
||||
riseFactor = 0.0;
|
||||
}
|
||||
else if (dot>0.876) {
|
||||
riseFactor = 0.0;
|
||||
}
|
||||
else {
|
||||
riseFactor = cos(2*dot);
|
||||
}
|
||||
return mix(sunColor, vec3(fogColorRise)*1.4, riseFactor);
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec4 textureColor = vec4(0.0, 0.0, 0.0, 1.0);
|
||||
float sunAngle = -dot(normalize(directionalVector), vec3(0.0, 1.0, 0.0));
|
||||
vec4 dayColor = texture(dayTexture, vTexCoord);
|
||||
if (sunAngle >= 0.0) {
|
||||
textureColor = mix(dayColor, texture(nightTexture, vTexCoord), sunAngle);
|
||||
}
|
||||
else {
|
||||
textureColor = dayColor;
|
||||
}
|
||||
float distanceToSun = length(sunPosition - fragPosition);
|
||||
float distanceCameraCenter = distance(cameraCenter, vec3(fragPosition));
|
||||
float fogFactor = clamp((1.0 - ((farPlane - 35.0) -distanceCameraCenter)/30.0), 0.0, 1.0);
|
||||
fogFactor *= clamp((1.0-((fragPosition.y-40.0)/30.0)), 0.0, 1.0);
|
||||
if (distanceToSun < sunSize) {
|
||||
float sunIntensity = clamp(0.3*exp(1/(distanceToSun/sunSize))-exp(1.0)*0.3, 0.0, 1.0);
|
||||
vec4 fogcolor = mix(textureColor, fogColor(-sunAngle), fogFactor);
|
||||
oColor = mix(fogcolor, vec4(sunColorFunc(sunAngle), sunIntensity), sunIntensity*sin(2*(-sunAngle)));
|
||||
}
|
||||
else {
|
||||
oColor = mix(textureColor, fogColor(-sunAngle), fogFactor);
|
||||
}
|
||||
}
|
22
data/shader/skydome.vsh
Normal file
@ -0,0 +1,22 @@
|
||||
#version 150
|
||||
|
||||
in vec3 aPosition;
|
||||
in vec3 aNormal;
|
||||
in vec2 aTexCoord;
|
||||
|
||||
uniform mat4 modelMatrix;
|
||||
uniform mat4 modelViewProjectionMatrix;
|
||||
uniform float skydomeSize;
|
||||
uniform vec3 directionalVector;
|
||||
uniform vec3 cameraCenter;
|
||||
|
||||
out vec2 vTexCoord;
|
||||
out vec4 fragPosition;
|
||||
out vec4 sunPosition;
|
||||
|
||||
void main() {
|
||||
fragPosition = modelMatrix * vec4(aPosition, 1.0);
|
||||
vTexCoord = aTexCoord;
|
||||
sunPosition = (normalize(vec4(directionalVector, 0.0)) * skydomeSize) + vec4(cameraCenter.x, 0, cameraCenter.z, 1.0);
|
||||
gl_Position = modelViewProjectionMatrix * vec4(aPosition, 1.0);
|
||||
}
|
BIN
data/textures/cgtextures/blockTexture_small.png
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
data/textures/cgtextures/brazierTexture.png
Normal file
After Width: | Height: | Size: 4.0 MiB |
BIN
data/textures/cgtextures/columnTexture2.png
Normal file
After Width: | Height: | Size: 721 KiB |
BIN
data/textures/cgtextures/exitTexture.png
Normal file
After Width: | Height: | Size: 3.2 MiB |
BIN
data/textures/cgtextures/gateTexture.png
Normal file
After Width: | Height: | Size: 3.6 MiB |
Before Width: | Height: | Size: 9.8 MiB After Width: | Height: | Size: 9.5 MiB |