Compare commits
878 Commits
4.0.93
...
v5.0.0-bet
Author | SHA1 | Date | |
---|---|---|---|
![]() |
5f916903ab | ||
![]() |
60fe29660d | ||
![]() |
596e0087e5 | ||
![]() |
8034247494 | ||
![]() |
73b60e6da8 | ||
![]() |
57e00a7ce0 | ||
![]() |
1a6aa3b7ab | ||
![]() |
e6eb05ce22 | ||
![]() |
ddf63637fe | ||
![]() |
c02aec0f6b | ||
![]() |
280eebbccd | ||
![]() |
48611c2c38 | ||
![]() |
5dbbc25b2b | ||
![]() |
23c85d8a75 | ||
![]() |
cdd0f72266 | ||
![]() |
68189bf720 | ||
![]() |
376c2cc5c5 | ||
![]() |
38b587cdd4 | ||
![]() |
dd65aaf086 | ||
![]() |
db7604ee88 | ||
![]() |
d94749177b | ||
![]() |
d061be627b | ||
![]() |
3dede19f1f | ||
![]() |
916d2eb99e | ||
![]() |
9fadc0faab | ||
![]() |
ba6c7ec78d | ||
![]() |
0b4fc055bf | ||
![]() |
8a841fa68f | ||
![]() |
f71983679c | ||
![]() |
be3cc48e32 | ||
![]() |
956656236b | ||
![]() |
a53de69c4e | ||
![]() |
a7abbda061 | ||
![]() |
c267d14348 | ||
![]() |
7db2709ff0 | ||
![]() |
86a3614f89 | ||
![]() |
b8e0b5d8e3 | ||
![]() |
c7a8df3d5a | ||
![]() |
3be8966132 | ||
![]() |
61cefa6cd7 | ||
![]() |
e1dd41bb32 | ||
![]() |
24466ca653 | ||
![]() |
1c9497dc92 | ||
![]() |
5dd3ed43cf | ||
![]() |
368cdebd78 | ||
![]() |
3d7279144b | ||
![]() |
18682eccfa | ||
![]() |
f70c565e7d | ||
![]() |
b9035efc9e | ||
![]() |
493fc7b6f9 | ||
![]() |
52db6e15ee | ||
![]() |
28de2b179b | ||
![]() |
4a6c37f502 | ||
![]() |
9ce734e204 | ||
![]() |
fb3a0edfac | ||
![]() |
e613c7d546 | ||
![]() |
6db6455bb6 | ||
![]() |
86e928724a | ||
![]() |
f31d8f88c2 | ||
![]() |
940eac6bc4 | ||
![]() |
6908f51b4a | ||
![]() |
a537f678fb | ||
![]() |
1019aaba5f | ||
![]() |
5770ac6396 | ||
![]() |
7171f691a3 | ||
![]() |
0ad7b71cf2 | ||
![]() |
006d7296a2 | ||
![]() |
443c49f83e | ||
![]() |
9884965595 | ||
![]() |
e0379466e0 | ||
![]() |
622cba4642 | ||
![]() |
50c7a582ef | ||
![]() |
e501fd4a09 | ||
![]() |
29808c8800 | ||
![]() |
fcfb71132c | ||
![]() |
2017d34197 | ||
![]() |
662c7bd397 | ||
![]() |
cf5011c149 | ||
![]() |
954520ae3b | ||
![]() |
6ffcd6dfb0 | ||
![]() |
80e7a6010a | ||
![]() |
0dc023ba89 | ||
![]() |
e70021d0dd | ||
![]() |
eb63bda7d2 | ||
![]() |
10833aa45d | ||
![]() |
eed844357e | ||
![]() |
6d91676dab | ||
![]() |
69410d62ea | ||
![]() |
977425e700 | ||
![]() |
50746b3c75 | ||
![]() |
1c5364f917 | ||
![]() |
89d099ff7d | ||
![]() |
49d409260a | ||
![]() |
a50b62a2d8 | ||
![]() |
6b21ebcc9b | ||
![]() |
3c8aa4a249 | ||
![]() |
a8e9fa5895 | ||
![]() |
c9f8b4a8ed | ||
![]() |
6b38479166 | ||
![]() |
4ccbc1b958 | ||
![]() |
54d7d284c8 | ||
![]() |
ca1721ef9a | ||
![]() |
58ed74e020 | ||
![]() |
e8ce83b162 | ||
![]() |
9b91f06011 | ||
![]() |
17247cbbf1 | ||
![]() |
10b81dd232 | ||
![]() |
3f3a5dbd3b | ||
![]() |
6ff8ee749d | ||
![]() |
db5f146818 | ||
![]() |
ddcf51a2b7 | ||
![]() |
b7467afd1b | ||
![]() |
ee993f0cdb | ||
![]() |
bc6d3ce16f | ||
![]() |
1fae899497 | ||
![]() |
8319f60c95 | ||
![]() |
f6fe1a3205 | ||
![]() |
01e2b53a3f | ||
![]() |
da9eb3cea7 | ||
![]() |
c044b32c04 | ||
![]() |
46279e7762 | ||
![]() |
4936b014ae | ||
![]() |
c1cd0d8780 | ||
![]() |
557af32cc9 | ||
![]() |
729a85a9a9 | ||
![]() |
34146c2f18 | ||
![]() |
00146bb8f8 | ||
![]() |
6026d79ebb | ||
![]() |
fc28f272b3 | ||
![]() |
9702db06a5 | ||
![]() |
209f83d697 | ||
![]() |
0ef8eb32a5 | ||
![]() |
8115b8181e | ||
![]() |
e79a328748 | ||
![]() |
2083ee1029 | ||
![]() |
3e982cdd87 | ||
![]() |
883527b289 | ||
![]() |
a4d84efdd5 | ||
![]() |
e46c8493bc | ||
![]() |
4c443b09cf | ||
![]() |
98bc2236f4 | ||
![]() |
5199299639 | ||
![]() |
3268d1db25 | ||
![]() |
741770924b | ||
![]() |
49aa9469bb | ||
![]() |
7cbe34436c | ||
![]() |
122f7ecf3e | ||
![]() |
d79bdd9554 | ||
![]() |
3e331cb2e8 | ||
![]() |
361fb6aeab | ||
![]() |
b4a76895ee | ||
![]() |
b2251e1a12 | ||
![]() |
1c1860370a | ||
![]() |
1a190b2a44 | ||
![]() |
b1e0f72416 | ||
![]() |
2c4ae7573e | ||
![]() |
04ff1f2726 | ||
![]() |
eaa5200f95 | ||
![]() |
53c749b79e | ||
![]() |
eb96ee8497 | ||
![]() |
458444ee7b | ||
![]() |
c8eb13f18f | ||
![]() |
a224b93edc | ||
![]() |
f077ca6723 | ||
![]() |
6bbfa1d4a1 | ||
![]() |
3c3dc6ef6e | ||
![]() |
5c101dbcda | ||
![]() |
701b78361a | ||
![]() |
07f26027f6 | ||
![]() |
09cf13d6e2 | ||
![]() |
42f91565fa | ||
![]() |
ac6c146808 | ||
![]() |
59ad23f8ac | ||
![]() |
769c6fe3d5 | ||
![]() |
07b92911ab | ||
![]() |
eb57bcfc87 | ||
![]() |
7addeba73a | ||
![]() |
263902b45a | ||
![]() |
d283f759fe | ||
![]() |
fabd028a63 | ||
![]() |
2b18272c41 | ||
![]() |
a1fb39da3d | ||
![]() |
09602fdf9e | ||
![]() |
d574ef17ba | ||
![]() |
0e3f70627b | ||
![]() |
a814a07105 | ||
![]() |
c49af90a9c | ||
![]() |
24afa155c8 | ||
![]() |
9e5a431516 | ||
![]() |
182a94285c | ||
![]() |
442c2c8dd9 | ||
![]() |
f8fd0dd353 | ||
![]() |
faad9e23ac | ||
![]() |
d2af0da1b1 | ||
![]() |
c65e5c3e49 | ||
![]() |
24a8dfc5f0 | ||
![]() |
9c6790ac37 | ||
![]() |
18ef7460ba | ||
![]() |
63cd0e76c3 | ||
![]() |
bdbf7fd9fc | ||
![]() |
6bbedbd8f9 | ||
![]() |
648bd1ff2e | ||
![]() |
d4288caedb | ||
![]() |
0a35bc3272 | ||
![]() |
d8b737a31f | ||
![]() |
cfd2655f6c | ||
![]() |
1896241b9d | ||
![]() |
0ed22a6ee1 | ||
![]() |
2bfcb99c3e | ||
![]() |
815f8a520a | ||
![]() |
f115b6607f | ||
![]() |
c876f67502 | ||
![]() |
27674f272c | ||
![]() |
02879507e3 | ||
![]() |
0a7629878f | ||
![]() |
b0368232d0 | ||
![]() |
a32bf3db98 | ||
![]() |
64cbbb20d3 | ||
![]() |
dd4fbecc98 | ||
![]() |
807a75a265 | ||
![]() |
6e1b44ea56 | ||
![]() |
d870a54f58 | ||
![]() |
9f464a3f23 | ||
![]() |
ed4e84d665 | ||
![]() |
1e4ab96233 | ||
![]() |
380c034ff5 | ||
![]() |
7c9abe432d | ||
![]() |
2ca853c22c | ||
![]() |
b23d55612a | ||
![]() |
b261faacfc | ||
![]() |
9984b32876 | ||
![]() |
d63ba75430 | ||
![]() |
2db903ed94 | ||
![]() |
3f9bc4d335 | ||
![]() |
3df95d0e21 | ||
![]() |
f445695f6a | ||
![]() |
6f3163d7bd | ||
![]() |
5421eae23d | ||
![]() |
a0e82ee22f | ||
![]() |
1fbf822769 | ||
![]() |
6b0f037722 | ||
![]() |
ae231d2fe6 | ||
![]() |
2e95899da7 | ||
![]() |
3f45b38dfc | ||
![]() |
daf4d36348 | ||
![]() |
477cd16f23 | ||
![]() |
83eded0056 | ||
![]() |
338de9c149 | ||
![]() |
6d99d4e661 | ||
![]() |
4e5a8060c8 | ||
![]() |
eb938e39ff | ||
![]() |
cff8604a5f | ||
![]() |
2afa54bcd2 | ||
![]() |
4da6025b6f | ||
![]() |
c4f64444e7 | ||
![]() |
b0205b296f | ||
![]() |
e0c8b3cc81 | ||
![]() |
80ca92336e | ||
![]() |
6c0681e4ca | ||
![]() |
26e8503dc8 | ||
![]() |
c1ce78efde | ||
![]() |
2f52c2f062 | ||
![]() |
24d11a2446 | ||
![]() |
e1d4ae5bbd | ||
![]() |
dcfe346f54 | ||
![]() |
3906db9efe | ||
![]() |
ba5244d95d | ||
![]() |
52db730870 | ||
![]() |
82d2278ebd | ||
![]() |
30d08ac72d | ||
![]() |
6f1e71c8e5 | ||
![]() |
385be9b5f5 | ||
![]() |
25cb041d78 | ||
![]() |
18fa9cd659 | ||
![]() |
ce760541c5 | ||
![]() |
db51b652f0 | ||
![]() |
4222d98aa9 | ||
![]() |
484f1e5dcb | ||
![]() |
7304b94a77 | ||
![]() |
ee5ec7df72 | ||
![]() |
9a1e4bdf7c | ||
![]() |
a43cca7629 | ||
![]() |
0cdabab2ec | ||
![]() |
28b968ea99 | ||
![]() |
5160033092 | ||
![]() |
ce086c07b9 | ||
![]() |
bf9348488d | ||
![]() |
70b3e0701b | ||
![]() |
dc3d890937 | ||
![]() |
f68be32e2d | ||
![]() |
3758e7af03 | ||
![]() |
5ab1858349 | ||
![]() |
54353bcb24 | ||
![]() |
de7640558d | ||
![]() |
2e17b16516 | ||
![]() |
345f9f1786 | ||
![]() |
8c9214ce5e | ||
![]() |
fc9cc8046d | ||
![]() |
e592bb855d | ||
![]() |
f8407264da | ||
![]() |
202fe2b69a | ||
![]() |
d14a93f9d0 | ||
![]() |
1d1ccdbf06 | ||
![]() |
92fd647316 | ||
![]() |
d8ca506200 | ||
![]() |
928d6eda98 | ||
![]() |
d5e6755694 | ||
![]() |
a1431126ec | ||
![]() |
13c8caeb8c | ||
![]() |
b2b5ee0e19 | ||
![]() |
ff74ecd7c9 | ||
![]() |
0ac3e79156 | ||
![]() |
3a69936e2e | ||
![]() |
e738d5dd5f | ||
![]() |
ed8ee21c04 | ||
![]() |
87220a941a | ||
![]() |
4425d13c7a | ||
![]() |
b818e5f493 | ||
![]() |
403563ba32 | ||
![]() |
156ca68116 | ||
![]() |
de3677a6c3 | ||
![]() |
3b76dfe9f4 | ||
![]() |
6e38ee6d16 | ||
![]() |
454657b00f | ||
![]() |
aad0c4e909 | ||
![]() |
d106ee9ac1 | ||
![]() |
5b1e6e4381 | ||
![]() |
e1106c6145 | ||
![]() |
0c5caf9986 | ||
![]() |
2fdcd6c639 | ||
![]() |
8332adf07b | ||
![]() |
fb40e908c0 | ||
![]() |
b6ef67568a | ||
![]() |
9c591ec3b1 | ||
![]() |
495900c083 | ||
![]() |
7874e2af27 | ||
![]() |
19b37b7111 | ||
![]() |
8593249bc6 | ||
![]() |
6d483ec887 | ||
![]() |
e1a28f0f90 | ||
![]() |
c2ba76a821 | ||
![]() |
c4f8134d89 | ||
![]() |
59416fd0cd | ||
![]() |
ef7ed24114 | ||
![]() |
07dd2bcb5c | ||
![]() |
81dfeb3ab1 | ||
![]() |
09d558744f | ||
![]() |
abe7dd7ccd | ||
![]() |
0da624dc18 | ||
![]() |
a082585b4e | ||
![]() |
d1582723ba | ||
![]() |
829a88f290 | ||
![]() |
79f2e57fa9 | ||
![]() |
322787ba0e | ||
![]() |
7bd2dab47c | ||
![]() |
dd1446cfb0 | ||
![]() |
cf96db75ea | ||
![]() |
da4f350cdb | ||
![]() |
862c012bb6 | ||
![]() |
72a65cb1d2 | ||
![]() |
22379ae31b | ||
![]() |
73e0ba8264 | ||
![]() |
2b0e28f456 | ||
![]() |
151a9b1a74 | ||
![]() |
172d7f049e | ||
![]() |
5ef703eff4 | ||
![]() |
98d970de30 | ||
![]() |
8896fb280a | ||
![]() |
8df5ab9e62 | ||
![]() |
eb32d51999 | ||
![]() |
8901809f88 | ||
![]() |
1de22ef53b | ||
![]() |
d328ae0c7e | ||
![]() |
dabb0f9dad | ||
![]() |
5adcfc5bad | ||
![]() |
b03bf86a35 | ||
![]() |
db1b1eadf1 | ||
![]() |
939266b18b | ||
![]() |
b68a9d8b47 | ||
![]() |
af1a028203 | ||
![]() |
c697d5fb99 | ||
![]() |
b5d2c6f4bc | ||
![]() |
a42c488ac8 | ||
![]() |
1ccc58c015 | ||
![]() |
68a736ea13 | ||
![]() |
a9980f8e89 | ||
![]() |
7156950cb8 | ||
![]() |
833cabfe3b | ||
![]() |
ed23b760a9 | ||
![]() |
98580efafa | ||
![]() |
8794861a11 | ||
![]() |
8fccc7bda4 | ||
![]() |
a09ea0ea13 | ||
![]() |
74c6ca50cb | ||
![]() |
67249c1029 | ||
![]() |
dba79bcca1 | ||
![]() |
006f93dccf | ||
![]() |
94335b9ee2 | ||
![]() |
187e27f232 | ||
![]() |
f7631bd8a5 | ||
![]() |
ad154c34e7 | ||
![]() |
357ecaca1e | ||
![]() |
e67e8d2264 | ||
![]() |
c39fc5f478 | ||
![]() |
b4c84d2058 | ||
![]() |
b7cca91e54 | ||
![]() |
86118abfb3 | ||
![]() |
119d588619 | ||
![]() |
8c1028a28b | ||
![]() |
65e47a11ec | ||
![]() |
c20a705773 | ||
![]() |
bea778cb06 | ||
![]() |
7315fe2403 | ||
![]() |
ef4e0aba6b | ||
![]() |
7d84dda389 | ||
![]() |
de1dab64fd | ||
![]() |
4333d8a3ba | ||
![]() |
4579e619a3 | ||
![]() |
7bcee7e400 | ||
![]() |
bf6ed92b1f | ||
![]() |
87bffb4361 | ||
![]() |
151182c5aa | ||
![]() |
faa678e4f7 | ||
![]() |
6113505367 | ||
![]() |
8eb124c685 | ||
![]() |
4fb2028801 | ||
![]() |
a5cc7de08f | ||
![]() |
8b0845fe9f | ||
![]() |
e127d1bb7b | ||
![]() |
75ff956418 | ||
![]() |
90236f9c43 | ||
![]() |
c480ac2d8e | ||
![]() |
793a242e00 | ||
![]() |
16713e4668 | ||
![]() |
33d731e958 | ||
![]() |
4095b4b65b | ||
![]() |
0a7778f951 | ||
![]() |
7c8c3e8a6a | ||
![]() |
26792429f7 | ||
![]() |
50810aab1d | ||
![]() |
8eeb137764 | ||
![]() |
ff2db6356e | ||
![]() |
c2eba4a0b0 | ||
![]() |
a289c0a521 | ||
![]() |
2f5dd01878 | ||
![]() |
0a95120fbb | ||
![]() |
60bf3115dd | ||
![]() |
d5f4a47eab | ||
![]() |
e5bc6b3a13 | ||
![]() |
4efe9e3d88 | ||
![]() |
869db14995 | ||
![]() |
9531d60479 | ||
![]() |
7d83fe8c07 | ||
![]() |
d285e24ff8 | ||
![]() |
09db74fc65 | ||
![]() |
41be98b306 | ||
![]() |
46cb1318a5 | ||
![]() |
1f98e4a268 | ||
![]() |
15f61e5867 | ||
![]() |
698d3095ec | ||
![]() |
608ebcb0cf | ||
![]() |
78c67a18e6 | ||
![]() |
c12de11ce0 | ||
![]() |
e15b442c1f | ||
![]() |
f84cf59f9e | ||
![]() |
b8aff5e77a | ||
![]() |
9eb5951e66 | ||
![]() |
cb92d56ff6 | ||
![]() |
6223fbb792 | ||
![]() |
16bce2f765 | ||
![]() |
e2f5665700 | ||
![]() |
c9b48ffafa | ||
![]() |
a291d846d8 | ||
![]() |
0287d80cbf | ||
![]() |
97ea23066a | ||
![]() |
e9b8b79d76 | ||
![]() |
44133370bd | ||
![]() |
e1e1fe27ae | ||
![]() |
b426212496 | ||
![]() |
940721c676 | ||
![]() |
c3118e8da3 | ||
![]() |
a9e4d8a606 | ||
![]() |
e5e46d0a5a | ||
![]() |
eed3c7ef36 | ||
![]() |
a6e0853cd6 | ||
![]() |
1dff23f201 | ||
![]() |
0586150eaf | ||
![]() |
c43d6231d7 | ||
![]() |
56230096b3 | ||
![]() |
29e707704e | ||
![]() |
33b417ac94 | ||
![]() |
0069627801 | ||
![]() |
0d3c6ee590 | ||
![]() |
7c2e3d43be | ||
![]() |
3dcd6e2803 | ||
![]() |
689b2ba5c3 | ||
![]() |
f67ba78843 | ||
![]() |
6aa515d085 | ||
![]() |
557aff7534 | ||
![]() |
59e11d8597 | ||
![]() |
26de1ae213 | ||
![]() |
dc32f948da | ||
![]() |
50768df001 | ||
![]() |
4b375b01ac | ||
![]() |
c1b02677f3 | ||
![]() |
eb8cf8028f | ||
![]() |
b80f2b566d | ||
![]() |
748c798172 | ||
![]() |
83472388f4 | ||
![]() |
34f1c5ae49 | ||
![]() |
37732928cb | ||
![]() |
2a6b7f194f | ||
![]() |
0f4d73fae3 | ||
![]() |
906fceeb9a | ||
![]() |
e616d668f3 | ||
![]() |
05baedfd5d | ||
![]() |
5bf3c26b35 | ||
![]() |
59d53c63b9 | ||
![]() |
e1a3409702 | ||
![]() |
f320f34b19 | ||
![]() |
f723182b80 | ||
![]() |
c0c71faac6 | ||
![]() |
5f73fa30fb | ||
![]() |
edbcb32bec | ||
![]() |
f57d3edf0f | ||
![]() |
71ab16a76e | ||
![]() |
7b81ddd877 | ||
![]() |
de50a90235 | ||
![]() |
536b353a24 | ||
![]() |
72740fb62c | ||
![]() |
de3f485191 | ||
![]() |
68738d343c | ||
![]() |
c0529ff5ab | ||
![]() |
4904627a6c | ||
![]() |
d00dae1d9e | ||
![]() |
5270b2bd73 | ||
![]() |
916acf16f7 | ||
![]() |
ceb8b4dde1 | ||
![]() |
577fa8bdf7 | ||
![]() |
ff131165f4 | ||
![]() |
4b45b8d7e4 | ||
![]() |
8431b10a81 | ||
![]() |
1b14519223 | ||
![]() |
5b3526b7e8 | ||
![]() |
b59a2b656f | ||
![]() |
70516b1d88 | ||
![]() |
d73ed4f6f9 | ||
![]() |
d58190e5c5 | ||
![]() |
1b996623f8 | ||
![]() |
09294dbc07 | ||
![]() |
1b27ca9647 | ||
![]() |
891a81f53e | ||
![]() |
ceb7d80ed3 | ||
![]() |
2591efee1c | ||
![]() |
adc473a6c3 | ||
![]() |
8f6e587a0d | ||
![]() |
597f1d0ebb | ||
![]() |
c3746ab388 | ||
![]() |
7f5711cb62 | ||
![]() |
eb066b88e2 | ||
![]() |
22fe36c8b5 | ||
![]() |
cdf9652934 | ||
![]() |
aa5408b1fb | ||
![]() |
facb08e502 | ||
![]() |
111dc42ec9 | ||
![]() |
b08759bf57 | ||
![]() |
a89b196a0c | ||
![]() |
1efa8674fc | ||
![]() |
9ed2aa2a70 | ||
![]() |
26aa52157a | ||
![]() |
825c3e0d26 | ||
![]() |
1f2de9f156 | ||
![]() |
bb52fab95a | ||
![]() |
e1c9db4955 | ||
![]() |
cf9d9bdd5c | ||
![]() |
41f6d8164c | ||
![]() |
31c741b8c6 | ||
![]() |
8619f18b93 | ||
![]() |
fd466d1f57 | ||
![]() |
0c688e714a | ||
![]() |
dd7a4429be | ||
![]() |
8ed7e8251a | ||
![]() |
6bcca6d024 | ||
![]() |
3c6b100188 | ||
![]() |
24cd4b52f6 | ||
![]() |
f63a8fc36e | ||
![]() |
70f6aab913 | ||
![]() |
4c12ad5f1d | ||
![]() |
6d5e4e388f | ||
![]() |
415b05b1dc | ||
![]() |
78e2f8d705 | ||
![]() |
7b0fb791cb | ||
![]() |
bd993b2c43 | ||
![]() |
6a8e15a07f | ||
![]() |
fa6033250c | ||
![]() |
b176699827 | ||
![]() |
3bf0a14951 | ||
![]() |
0c380629d5 | ||
![]() |
79f756a6f1 | ||
![]() |
d35edb72b2 | ||
![]() |
cc9851b49c | ||
![]() |
369bcfdda5 | ||
![]() |
c0e8f9e2a1 | ||
![]() |
7223da00b7 | ||
![]() |
0987ca8b3e | ||
![]() |
a886049f72 | ||
![]() |
168f06b535 | ||
![]() |
def81b6a62 | ||
![]() |
311e451a2f | ||
![]() |
8c7b4cc7bd | ||
![]() |
2494f984a9 | ||
![]() |
cec0ca0b71 | ||
![]() |
a262cebdfb | ||
![]() |
49145136d8 | ||
![]() |
9e01231334 | ||
![]() |
0d869b9f7b | ||
![]() |
ad333dff69 | ||
![]() |
16ae5dd0aa | ||
![]() |
f778f4302b | ||
![]() |
f948fd14a4 | ||
![]() |
9d05dbdd42 | ||
![]() |
9fbc4613ac | ||
![]() |
13bb7b1209 | ||
![]() |
70cbe5156e | ||
![]() |
6933030bcf | ||
![]() |
39f5aad915 | ||
![]() |
64dcfeec09 | ||
![]() |
aeea9c9f57 | ||
![]() |
0d0ce7d44d | ||
![]() |
525ea4b042 | ||
![]() |
7dbd836073 | ||
![]() |
a6f6729b88 | ||
![]() |
d4e290cfed | ||
![]() |
17ea67c2a9 | ||
![]() |
cf436333b9 | ||
![]() |
a77aa15c5e | ||
![]() |
cef7acc1c4 | ||
![]() |
91a84eb000 | ||
![]() |
a09221e4a3 | ||
![]() |
99452c2de0 | ||
![]() |
14244a4561 | ||
![]() |
1c47bbfb36 | ||
![]() |
7e16ea1aa3 | ||
![]() |
16e4df182d | ||
![]() |
1d81690bd5 | ||
![]() |
4980db392b | ||
![]() |
2a99dc6e8a | ||
![]() |
d4898c56f8 | ||
![]() |
dee9442eb6 | ||
![]() |
1bb74af465 | ||
![]() |
f990dacf65 | ||
![]() |
4630ff9d07 | ||
![]() |
06c4377141 | ||
![]() |
4e6fb68e39 | ||
![]() |
e307505d03 | ||
![]() |
f7cfd21c48 | ||
![]() |
e68e9d27bb | ||
![]() |
30a8c5be34 | ||
![]() |
3265ac5b6d | ||
![]() |
6a7d1eaf2e | ||
![]() |
cd587ba8da | ||
![]() |
35f640c1ba | ||
![]() |
2f88ab5178 | ||
![]() |
18f9b66615 | ||
![]() |
ae49eb02c4 | ||
![]() |
e215654bb3 | ||
![]() |
3feae8c257 | ||
![]() |
6f4abd3eb9 | ||
![]() |
6ea781533b | ||
![]() |
456fdc0872 | ||
![]() |
f76a531143 | ||
![]() |
151271c250 | ||
![]() |
22dea528e0 | ||
![]() |
045f7194b5 | ||
![]() |
51007bc5cd | ||
![]() |
612439a88d | ||
![]() |
f145ecd7b3 | ||
![]() |
cf7a39537d | ||
![]() |
23736e8981 | ||
![]() |
d633b032f9 | ||
![]() |
13050967c7 | ||
![]() |
eeaab6d12f | ||
![]() |
c728044260 | ||
![]() |
89a80c685f | ||
![]() |
ec7673d861 | ||
![]() |
f50940ae66 | ||
![]() |
664db415c7 | ||
![]() |
5810972a2d | ||
![]() |
4d5fd7d3d4 | ||
![]() |
f12c9c9ad8 | ||
![]() |
a144258f8d | ||
![]() |
6907cc3847 | ||
![]() |
5f367f7278 | ||
![]() |
73b7523dc6 | ||
![]() |
8eac4b616f | ||
![]() |
ea2a05cfff | ||
![]() |
d307be6d0e | ||
![]() |
a7aa1f3940 | ||
![]() |
ef879413d9 | ||
![]() |
e3eacb53ee | ||
![]() |
3db6edb1f8 | ||
![]() |
3636d99b47 | ||
![]() |
56caeaaf08 | ||
![]() |
a507f7a3ee | ||
![]() |
316e01e7f8 | ||
![]() |
134efa8ec3 | ||
![]() |
85b75b646f | ||
![]() |
09b41fa719 | ||
![]() |
f970352faa | ||
![]() |
76305ae77c | ||
![]() |
6c995d6d20 | ||
![]() |
3d14c9e555 | ||
![]() |
f8fa933a02 | ||
![]() |
fff2edc1c1 | ||
![]() |
190ad686f5 | ||
![]() |
f4b5d57c61 | ||
![]() |
fdec778d04 | ||
![]() |
c227afd8d7 | ||
![]() |
2f91fecd60 | ||
![]() |
406f98245c | ||
![]() |
eaf76105a1 | ||
![]() |
b7e0e7d54d | ||
![]() |
8f109d5a27 | ||
![]() |
907f319ce7 | ||
![]() |
146b69f91e | ||
![]() |
51d23e30e5 | ||
![]() |
a87ba9db6f | ||
![]() |
1f593d576d | ||
![]() |
346003f377 | ||
![]() |
1bd45ec96b | ||
![]() |
c078ed1e55 | ||
![]() |
4f1f04242b | ||
![]() |
976826b9ab | ||
![]() |
b4f2082454 | ||
![]() |
b4318f63d3 | ||
![]() |
6e1140fa0c | ||
![]() |
2322b3dac1 | ||
![]() |
91914c80f7 | ||
![]() |
cc127ff5ba | ||
![]() |
0b3d2be1a2 | ||
![]() |
a44bf9d6d2 | ||
![]() |
a6207f27a3 | ||
![]() |
92664eadc5 | ||
![]() |
edcbd5c9a1 | ||
![]() |
96d8066983 | ||
![]() |
0cf6583bcc | ||
![]() |
063f76750f | ||
![]() |
fef0e68dd3 | ||
![]() |
e40ffbba74 | ||
![]() |
38f58ded69 | ||
![]() |
51c60de26a | ||
![]() |
e977cd2d23 | ||
![]() |
6efdabdb36 | ||
![]() |
8709de1e3e | ||
![]() |
a29332e4dc | ||
![]() |
c82c125bb4 | ||
![]() |
6528a12671 | ||
![]() |
bb3149817d | ||
![]() |
fb805cebf1 | ||
![]() |
0702d0188a | ||
![]() |
185cbbc594 | ||
![]() |
04c4c9ed50 | ||
![]() |
dc445736ef | ||
![]() |
06ea17e7e8 | ||
![]() |
1d2ed3fe9d | ||
![]() |
6e953004f8 | ||
![]() |
1b4d1582d4 | ||
![]() |
90bd58b14a | ||
![]() |
d78cecd34f | ||
![]() |
91771682f0 | ||
![]() |
da5669ab70 | ||
![]() |
afd7ac7c92 | ||
![]() |
e8b1509fc2 | ||
![]() |
db1923c38c | ||
![]() |
86789ac491 | ||
![]() |
8f028f778d | ||
![]() |
2a3d998e7c | ||
![]() |
3969561e8d | ||
![]() |
0118b740fa | ||
![]() |
92a6e4819e | ||
![]() |
2afdcfdfa0 | ||
![]() |
a488f13aa6 | ||
![]() |
5ef46253b1 | ||
![]() |
4a4dbe850c | ||
![]() |
37c643f7bc | ||
![]() |
2e67ec83fd | ||
![]() |
de1a7c67b9 | ||
![]() |
eaba616f71 | ||
![]() |
21cf59ff5a | ||
![]() |
182c25f721 | ||
![]() |
6002dc26dc | ||
![]() |
e30e3cd705 | ||
![]() |
88f0bbca8b | ||
![]() |
6026bb8ff4 | ||
![]() |
d57d186218 | ||
![]() |
834fed0b64 | ||
![]() |
ad7544c7a3 | ||
![]() |
0bf05afead | ||
![]() |
f1bb8b5149 | ||
![]() |
5d34d7a0b0 | ||
![]() |
7b8e1c70ba | ||
![]() |
ba3fd0ebff | ||
![]() |
01ee88cdc7 | ||
![]() |
cd34cbe934 | ||
![]() |
276850b306 | ||
![]() |
883129f379 | ||
![]() |
dea86d7c33 | ||
![]() |
3d89bd50fc | ||
![]() |
54c94f62a4 | ||
![]() |
b9d71b0d9c | ||
![]() |
e5631383dd | ||
![]() |
8dc3bd3831 | ||
![]() |
cdc3e3ed90 | ||
![]() |
5281cd54cc | ||
![]() |
be66e670e9 | ||
![]() |
ee9a3d181d | ||
![]() |
a81170d934 | ||
![]() |
4825313b15 | ||
![]() |
90e1a33829 | ||
![]() |
7ad075cb59 | ||
![]() |
fd67843d0d | ||
![]() |
0b9771815b | ||
![]() |
d01a80c7b9 | ||
![]() |
3f005449ad | ||
![]() |
10e7a11a34 | ||
![]() |
65b02a7460 | ||
![]() |
0b28b0d15a | ||
![]() |
4e32b64bc6 | ||
![]() |
d7509cf7c7 | ||
![]() |
78ec0fd201 | ||
![]() |
e982f6218b | ||
![]() |
4dae5dd567 | ||
![]() |
9f81038f1d | ||
![]() |
40fcb668c4 | ||
![]() |
96afbeb931 | ||
![]() |
1ed005a472 | ||
![]() |
b9abd568d0 | ||
![]() |
6ca3a08dd8 | ||
![]() |
ccf75c63ad | ||
![]() |
f616075508 | ||
![]() |
880ccad7f5 | ||
![]() |
7d9774c01d | ||
![]() |
50b493ab2c | ||
![]() |
66ef1e0abf | ||
![]() |
ae93430539 | ||
![]() |
42022290b8 | ||
![]() |
5c9279c6df | ||
![]() |
69b2a41caa | ||
![]() |
b6d92d69bc | ||
![]() |
940ea8ba19 | ||
![]() |
ea5d92a289 | ||
![]() |
9631bc0c32 | ||
![]() |
7c14f9dd39 | ||
![]() |
59b9373974 | ||
![]() |
ab9403bece | ||
![]() |
7e23652eef | ||
![]() |
6badf722c0 | ||
![]() |
d20b5a0fbb | ||
![]() |
ba791eddcb | ||
![]() |
9a532a19db | ||
![]() |
3b75fd6df4 | ||
![]() |
d6f3b2776e | ||
![]() |
dba2d55193 | ||
![]() |
7cae68c5b8 | ||
![]() |
11c96dbef1 | ||
![]() |
46fff2dec4 | ||
![]() |
72df404d7f | ||
![]() |
cdbd3c515d | ||
![]() |
b0e29bab5b | ||
![]() |
70fada11e7 | ||
![]() |
626651ec51 | ||
![]() |
a47963e77f | ||
![]() |
179183f414 | ||
![]() |
67b7a3a060 | ||
![]() |
63dfc887cc | ||
![]() |
b537c36643 | ||
![]() |
146ed26eed | ||
![]() |
d971a4eb6a |
26
.clang_complete
Normal file
@@ -0,0 +1,26 @@
|
||||
-DGDJS_EXPORTS
|
||||
-DGD_API=
|
||||
-DGD_CORE_API=
|
||||
-DGD_EXTENSION_API=
|
||||
-DGD_IDE_ONLY
|
||||
-DMACOS
|
||||
-DRELEASE
|
||||
-DWXUSINGDLL
|
||||
-D_FILE_OFFSET_BITS=64
|
||||
-D__WXMAC__
|
||||
-D__WXOSX_COCOA__
|
||||
-D__WXOSX__
|
||||
-DwxDEBUG_LEVEL=0
|
||||
-D_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_
|
||||
-Wno-potentially-evaluated-expression
|
||||
-std=gnu++11
|
||||
-I/usr/local/Cellar/wxmac/3.0.2/include/wx-3.0
|
||||
-DNDEBUG
|
||||
-fPIC
|
||||
-I/Users/florian/Projects/F/GD/ExtLibs/SFML/include
|
||||
-I/Users/florian/Projects/F/GD/Core
|
||||
-I/usr/local/Cellar/wxmac/3.0.2/lib/wx/include/osx_cocoa-unicode-3.0
|
||||
-I/usr/local/Cellar/wxmac/3.0.2/include/wx-3.0
|
||||
-I/Users/florian/Projects/F/GD/GDCpp/.
|
||||
-I/Users/florian/Projects/F/GD/GDJS/.
|
||||
-F/Users/florian/Projects/F/GD/ExtLibs/SFML/extlibs/libs-osx/Frameworks
|
11
.gitignore
vendored
@@ -1,11 +1,11 @@
|
||||
/Core/GDCore/Tools/VersionPriv.h
|
||||
/docs/GDJS Runtime Documentation
|
||||
/docs/GDJS Documentation
|
||||
/docs/GDCpp Documentation
|
||||
/docs/GDCore Documentation
|
||||
/ExtLibs/boost
|
||||
/ExtLibs/SFML
|
||||
/ExtLibs/wxwidgets
|
||||
/ExtLibs/wxWidgets
|
||||
/ExtLibs/SFML
|
||||
/ExtLibs/*.7z
|
||||
/scripts/Repository keys
|
||||
/scripts/logs/*.txt
|
||||
@@ -56,6 +56,7 @@ Binaries/Packaging/logs
|
||||
/Binaries/**/JsPlatform/Runtime
|
||||
/Binaries/**/JsPlatform/*.dll
|
||||
/Binaries/**/JsPlatform/*.dll.a
|
||||
/Binaries/Output/Release_Windows/newIDE
|
||||
*.autosave
|
||||
/Binaries/Output/libGD.js/Release
|
||||
/Binaries/Output/libGD.js/Debug
|
||||
@@ -64,12 +65,14 @@ Binaries/Packaging/logs
|
||||
!/scripts/libgettextlib-0-17.dll
|
||||
!/scripts/libgettextsrc-0-17.dll
|
||||
!/xgettext.exe
|
||||
!/Binaries/Output/Release_Windows/locale/libgettextlib-0-17.dll
|
||||
!/Binaries/Output/Release_Windows/locale/libgettextsrc-0-17.dll
|
||||
!/Binaries/Output/Release_Windows/locale/*.dll
|
||||
!/Binaries/Output/Release_Windows/locale/msgcat.exe
|
||||
!/Binaries/Output/Release_Windows/locale/msgfmt.exe
|
||||
!/ExtLibs/curl.exe
|
||||
!/ExtLibs/7za.exe
|
||||
!/ExtLibs/SFML/extlibs/**/*.dll
|
||||
!/ExtLibs/SFML/extlibs/**/*.so
|
||||
!/ExtLibs/SFML/extlibs/**/*.a
|
||||
**/.DS_Store
|
||||
**/node_modules/
|
||||
.idea
|
||||
|
22
.travis.yml
@@ -4,6 +4,9 @@ compiler:
|
||||
- gcc
|
||||
- clang
|
||||
|
||||
git:
|
||||
depth: 999999
|
||||
|
||||
env:
|
||||
global:
|
||||
- GCC_VERSION="4.8"
|
||||
@@ -34,6 +37,12 @@ before_install:
|
||||
- "sh -e /etc/init.d/xvfb start"
|
||||
|
||||
install:
|
||||
#Install newIDE tests dependencies
|
||||
- cd newIDE/app && npm install
|
||||
- cd ../..
|
||||
#Install GDJS tests dependencies
|
||||
- cd GDJS/tests && npm install
|
||||
- cd ../..
|
||||
#Get the correct version of gcc/g++
|
||||
- if [ "$CXX" = "g++" ]; then export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}"; fi
|
||||
#Compile the tests only
|
||||
@@ -42,19 +51,18 @@ install:
|
||||
- cmake -DBUILD_GDJS=FALSE -DBUILD_IDE=FALSE -DBUILD_TESTS=TRUE -DNO_GUI=TRUE -DCMAKE_CXX_COMPILER=$(which $CXX) -DCMAKE_C_COMPILER=$(which $CC) ..
|
||||
- make -j 4
|
||||
- cd ..
|
||||
#Install GDJS tests dependencies
|
||||
- cd GDJS/tests
|
||||
- npm install
|
||||
- cd ../..
|
||||
|
||||
script:
|
||||
#GDJS game engine tests:
|
||||
- cd GDJS/tests
|
||||
#newIDE tests:
|
||||
- cd newIDE/app
|
||||
- npm test
|
||||
- npm run flow
|
||||
- cd ../..
|
||||
#GDJS game engine tests:
|
||||
- cd GDJS/tests && npm test
|
||||
- cd ../..
|
||||
#GDCore and GDCpp game engine tests:
|
||||
- cd .build-tests
|
||||
# - export LD_LIBRARY_PATH=$PWD/Binaries/Output/Release_Linux:$PWD/.build-tests/ExtLibs/SFML/lib:$LD_LIBRARY_PATH
|
||||
- Core/GDCore_tests
|
||||
- GDCpp/GDCpp_tests
|
||||
- Extensions/PathfindingBehavior/PathfindingBehavior_Runtime_tests
|
||||
|
125
.vscode/c_cpp_properties.json
vendored
Normal file
@@ -0,0 +1,125 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Mac",
|
||||
"includePath": [
|
||||
"${workspaceRoot}",
|
||||
"${workspaceRoot}/IDE",
|
||||
"${workspaceRoot}/GDCpp",
|
||||
"${workspaceRoot}/GDJS",
|
||||
"${workspaceRoot}/Extensions",
|
||||
"${workspaceRoot}/Core",
|
||||
"${workspaceRoot}/ExtLibs/SFML/include",
|
||||
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1",
|
||||
"/usr/local/include",
|
||||
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.0.0/include",
|
||||
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||
"/usr/include",
|
||||
"/usr/local/lib/wx/include/osx_cocoa-unicode-3.0",
|
||||
"/usr/local/include/wx-3.0",
|
||||
"${workspaceRoot}"
|
||||
],
|
||||
"defines": [
|
||||
"GD_IDE_ONLY",
|
||||
"__WXMAC__",
|
||||
"__WXOSX__",
|
||||
"__WXOSX_COCOA__",
|
||||
"GD_CORE_API=/* Macro used to export classes on Windows, please ignore */",
|
||||
"GD_API=/* Macro used to export classes on Windows, please ignore */",
|
||||
"GD_EXTENSION_API=/* Macro used to export classes on Windows, please ignore */",
|
||||
"WXUSINGDLL"
|
||||
],
|
||||
"intelliSenseMode": "clang-x64",
|
||||
"browse": {
|
||||
"path": [
|
||||
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1",
|
||||
"/usr/local/include",
|
||||
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.0.0/include",
|
||||
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||
"/usr/include",
|
||||
"${workspaceRoot}"
|
||||
],
|
||||
"limitSymbolsToIncludedHeaders": true,
|
||||
"databaseFilename": ""
|
||||
},
|
||||
"macFrameworkPath": [
|
||||
"/System/Library/Frameworks",
|
||||
"/Library/Frameworks"
|
||||
],
|
||||
"compilerPath": "/usr/bin/clang",
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++17"
|
||||
},
|
||||
{
|
||||
"name": "Linux",
|
||||
"includePath": [
|
||||
"${workspaceRoot}",
|
||||
"${workspaceRoot}/IDE",
|
||||
"${workspaceRoot}/GDCpp",
|
||||
"${workspaceRoot}/GDJS",
|
||||
"${workspaceRoot}/Extensions",
|
||||
"${workspaceRoot}/Core",
|
||||
"${workspaceRoot}/ExtLibs/SFML/include",
|
||||
"/usr/include",
|
||||
"/usr/local/include",
|
||||
"${workspaceRoot}"
|
||||
],
|
||||
"defines": [
|
||||
"GD_IDE_ONLY",
|
||||
"__WXMAC__",
|
||||
"__WXOSX__",
|
||||
"__WXOSX_COCOA__",
|
||||
"GD_CORE_API=/* Macro used to export classes on Windows, please ignore */",
|
||||
"GD_API=/* Macro used to export classes on Windows, please ignore */",
|
||||
"GD_EXTENSION_API=/* Macro used to export classes on Windows, please ignore */",
|
||||
"WXUSINGDLL"
|
||||
],
|
||||
"intelliSenseMode": "clang-x64",
|
||||
"browse": {
|
||||
"path": [
|
||||
"/usr/include",
|
||||
"/usr/local/include",
|
||||
"${workspaceRoot}"
|
||||
],
|
||||
"limitSymbolsToIncludedHeaders": true,
|
||||
"databaseFilename": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Win32",
|
||||
"includePath": [
|
||||
"${workspaceRoot}",
|
||||
"${workspaceRoot}/IDE",
|
||||
"${workspaceRoot}/GDCpp",
|
||||
"${workspaceRoot}/GDJS",
|
||||
"${workspaceRoot}/Extensions",
|
||||
"${workspaceRoot}/Core",
|
||||
"${workspaceRoot}/ExtLibs/SFML/include",
|
||||
"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include",
|
||||
"${workspaceRoot}"
|
||||
],
|
||||
"defines": [
|
||||
"_DEBUG",
|
||||
"UNICODE",
|
||||
"GD_IDE_ONLY",
|
||||
"__WXMAC__",
|
||||
"__WXOSX__",
|
||||
"__WXOSX_COCOA__",
|
||||
"GD_CORE_API=/* Macro used to export classes on Windows, please ignore */",
|
||||
"GD_API=/* Macro used to export classes on Windows, please ignore */",
|
||||
"GD_EXTENSION_API=/* Macro used to export classes on Windows, please ignore */",
|
||||
"WXUSINGDLL"
|
||||
],
|
||||
"intelliSenseMode": "msvc-x64",
|
||||
"browse": {
|
||||
"path": [
|
||||
"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include/*",
|
||||
"${workspaceRoot}"
|
||||
],
|
||||
"limitSymbolsToIncludedHeaders": true,
|
||||
"databaseFilename": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"version": 3
|
||||
}
|
94
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
// Place your settings in this file to overwrite default and user settings.
|
||||
{
|
||||
"files.associations": {
|
||||
"*.idl": "java",
|
||||
"iosfwd": "cpp",
|
||||
"functional": "cpp",
|
||||
"type_traits": "cpp",
|
||||
"utility": "cpp",
|
||||
"algorithm": "cpp",
|
||||
"random": "cpp",
|
||||
"__config": "cpp",
|
||||
"cstddef": "cpp",
|
||||
"exception": "cpp",
|
||||
"initializer_list": "cpp",
|
||||
"new": "cpp",
|
||||
"stdexcept": "cpp",
|
||||
"typeinfo": "cpp",
|
||||
"*.tcc": "cpp",
|
||||
"cctype": "cpp",
|
||||
"clocale": "cpp",
|
||||
"cmath": "cpp",
|
||||
"complex": "cpp",
|
||||
"cstdarg": "cpp",
|
||||
"cstdio": "cpp",
|
||||
"cstdlib": "cpp",
|
||||
"ctime": "cpp",
|
||||
"cwchar": "cpp",
|
||||
"cwctype": "cpp",
|
||||
"istream": "cpp",
|
||||
"limits": "cpp",
|
||||
"memory": "cpp",
|
||||
"ostream": "cpp",
|
||||
"sstream": "cpp",
|
||||
"streambuf": "cpp",
|
||||
"hashtable": "cpp",
|
||||
"tuple": "cpp",
|
||||
"unordered_map": "cpp",
|
||||
"unordered_set": "cpp",
|
||||
"__split_buffer": "cpp",
|
||||
"deque": "cpp",
|
||||
"iterator": "cpp",
|
||||
"list": "cpp",
|
||||
"map": "cpp",
|
||||
"queue": "cpp",
|
||||
"regex": "cpp",
|
||||
"set": "cpp",
|
||||
"stack": "cpp",
|
||||
"string": "cpp",
|
||||
"vector": "cpp",
|
||||
"iostream": "cpp",
|
||||
"__functional_03": "cpp",
|
||||
"__hash_table": "cpp",
|
||||
"__tree": "cpp",
|
||||
"bitset": "cpp",
|
||||
"__bit_reference": "cpp",
|
||||
"__mutex_base": "cpp",
|
||||
"fstream": "cpp",
|
||||
"ios": "cpp",
|
||||
"__locale": "cpp",
|
||||
"valarray": "cpp",
|
||||
"freeglut_spaceball.c": "cpp",
|
||||
"__tuple": "cpp",
|
||||
"hash_map": "cpp",
|
||||
"hash_set": "cpp",
|
||||
"system_error": "cpp",
|
||||
"__nullptr": "cpp",
|
||||
"__functional_base": "cpp",
|
||||
"__functional_base_03": "cpp",
|
||||
"chrono": "cpp",
|
||||
"ratio": "cpp",
|
||||
"atomic": "cpp",
|
||||
"locale": "cpp",
|
||||
"string_view": "cpp",
|
||||
"__string": "cpp"
|
||||
},
|
||||
"files.exclude": {
|
||||
"Binaries/*build*": true,
|
||||
"Binaries/Output": true,
|
||||
"Binaries/Packaging/GDevelop.app": true,
|
||||
"ExtLibs/SFML": true,
|
||||
"docs": true,
|
||||
"GDJS/docs": true,
|
||||
"GDCpp/docs": true,
|
||||
"Core/docs": true,
|
||||
"Extensions/CommonDialogs/dlib-18.16": true,
|
||||
"newIDE/electron-app/dist": true,
|
||||
"newIDE/app/build": true,
|
||||
"newIDE/app/resources/GDJS": true,
|
||||
"newIDE/electron-app/app/www": true
|
||||
},
|
||||
// Support for Flowtype:
|
||||
"javascript.validate.enable": false,
|
||||
"flow.useNPMPackagedFlow": true
|
||||
}
|
748
Binaries/Output/Release_Windows/Examples/Copy_Variables.gdg
Normal file
@@ -0,0 +1,748 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<project firstLayout="">
|
||||
<gdVersion build="95" major="4" minor="0" revision="8" />
|
||||
<properties folderProject="false" linuxExecutableFilename="" macExecutableFilename="" packageName="com.example.gamename" projectFile="C:\Users\Maciel\Programacion\gits\GD\Binaries\Output\Release_Windows\Examples\Copy_Variables.gdg" useExternalSourceFiles="false" winExecutableFilename="" winExecutableIconFile="">
|
||||
<name>Project</name>
|
||||
<author></author>
|
||||
<windowWidth>800</windowWidth>
|
||||
<windowHeight>600</windowHeight>
|
||||
<latestCompilationDirectory></latestCompilationDirectory>
|
||||
<maxFPS>60</maxFPS>
|
||||
<minFPS>10</minFPS>
|
||||
<verticalSync>false</verticalSync>
|
||||
<extensions>
|
||||
<extension name="BuiltinObject" />
|
||||
<extension name="BuiltinAudio" />
|
||||
<extension name="BuiltinVariables" />
|
||||
<extension name="BuiltinTime" />
|
||||
<extension name="BuiltinMouse" />
|
||||
<extension name="BuiltinKeyboard" />
|
||||
<extension name="BuiltinJoystick" />
|
||||
<extension name="BuiltinCamera" />
|
||||
<extension name="BuiltinWindow" />
|
||||
<extension name="BuiltinFile" />
|
||||
<extension name="BuiltinNetwork" />
|
||||
<extension name="BuiltinScene" />
|
||||
<extension name="BuiltinAdvanced" />
|
||||
<extension name="Sprite" />
|
||||
<extension name="BuiltinCommonInstructions" />
|
||||
<extension name="BuiltinCommonConversions" />
|
||||
<extension name="BuiltinStringInstructions" />
|
||||
<extension name="BuiltinMathematicalTools" />
|
||||
<extension name="BuiltinExternalLayouts" />
|
||||
<extension name="TextObject" />
|
||||
</extensions>
|
||||
<platforms>
|
||||
<platform name="GDevelop C++ platform" />
|
||||
<platform name="GDevelop JS platform" />
|
||||
</platforms>
|
||||
<currentPlatform>GDevelop C++ platform</currentPlatform>
|
||||
</properties>
|
||||
<resources>
|
||||
<resources />
|
||||
<resourceFolders />
|
||||
</resources>
|
||||
<objects />
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<layouts>
|
||||
<layout b="30" disableInputWhenNotFocused="true" mangledName="Scene" name="Scene" oglFOV="90.000000" oglZFar="500.000000" oglZNear="1.000000" r="30" standardSortMethod="false" stopSoundsOnStartup="true" title="" v="30">
|
||||
<uiSettings grid="false" gridB="80" gridG="80" gridHeight="32" gridOffsetX="0" gridOffsetY="0" gridR="80" gridWidth="32" snap="true" windowMask="false" zoomFactor="0.701632" />
|
||||
<objectsGroups />
|
||||
<variables>
|
||||
<variable name="Scene">
|
||||
<children>
|
||||
<variable name="A" value="5" />
|
||||
<variable name="B">
|
||||
<children>
|
||||
<variable name="alpha">
|
||||
<children>
|
||||
<variable name="x" value="5.5" />
|
||||
<variable name="y" value="-8" />
|
||||
</children>
|
||||
</variable>
|
||||
<variable name="beta" value="150;255;150" />
|
||||
<variable name="gamma" value="Apples" />
|
||||
</children>
|
||||
</variable>
|
||||
</children>
|
||||
</variable>
|
||||
</variables>
|
||||
<instances>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="DebugText" width="0.000000" x="400.000000" y="300.000000" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables>
|
||||
<variable name="ID" value="3" />
|
||||
</initialVariables>
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="DebugText" width="0.000000" x="20.000000" y="20.000000" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables>
|
||||
<variable name="ID" value="0" />
|
||||
</initialVariables>
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="DebugText" width="0.000000" x="400.000000" y="20.000000" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables>
|
||||
<variable name="ID" value="1" />
|
||||
</initialVariables>
|
||||
</instance>
|
||||
<instance angle="0.000000" customSize="false" height="0.000000" layer="" locked="false" name="DebugText" width="0.000000" x="20.000000" y="300.000000" zOrder="1">
|
||||
<numberProperties />
|
||||
<stringProperties />
|
||||
<initialVariables>
|
||||
<variable name="ID" value="2" />
|
||||
</initialVariables>
|
||||
</instance>
|
||||
</instances>
|
||||
<objects>
|
||||
<object bold="false" italic="false" name="DebugText" smoothed="true" type="TextObject::Text" underlined="false">
|
||||
<variables />
|
||||
<behaviors />
|
||||
<string>DebugText</string>
|
||||
<font></font>
|
||||
<characterSize>24</characterSize>
|
||||
<color b="220" g="220" r="220" />
|
||||
</object>
|
||||
</objects>
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="128" g="255" r="128" textB="0" textG="0" textR="0" />
|
||||
<comment>Update debug text at the beginning (only Scene variable will be drawn because others haven't childrend)</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="DepartScene" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>Update</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>1</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="128" g="255" r="128" textB="0" textG="0" textR="0" />
|
||||
<comment>If "A" key is pressed, convert the Scene variable into JSON and parse it into a Global variable, then randomize a child from the Global structure, to identify it</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="KeyPressed" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>a</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="BuiltinCommonInstructions::Once" />
|
||||
<parameters />
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="JSONToGlobalVariableStructure" />
|
||||
<parameters>
|
||||
<parameter>ToJSON(Scene)</parameter>
|
||||
<parameter>Global</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarGlobal" />
|
||||
<parameters>
|
||||
<parameter>Global.B.alpha.x</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>Random(1000)</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>Update</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>1</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="128" g="255" r="128" textB="0" textG="0" textR="0" />
|
||||
<comment>If "S" key is pressed, convert the Global variable into JSON and parse it into an Object variable, then randomize another child from the Object structure, to identify it</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="KeyPressed" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>s</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="VarObjet" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>ID</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>2</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="BuiltinCommonInstructions::Once" />
|
||||
<parameters />
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="JSONToObjectVariableStructure" />
|
||||
<parameters>
|
||||
<parameter>GlobalVarToJSON(Global)</parameter>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>Object</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarObjet" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>Object.B.alpha.y</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>Random(1000)</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>Update</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>1</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="128" g="255" r="128" textB="0" textG="0" textR="0" />
|
||||
<comment>If "D" key is pressed, convert the Object variable into JSON (note there are no whitespaces after the "," before the variable name in the ObjectVarToJSON) and parse it into another scene variable Scene_2</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="KeyPressed" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>d</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="VarObjet" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>ID</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>2</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<condition>
|
||||
<type inverted="false" value="BuiltinCommonInstructions::Once" />
|
||||
<parameters />
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="JSONToVariableStructure" />
|
||||
<parameters>
|
||||
<parameter>ObjectVarToJSON(DebugText,Object)</parameter>
|
||||
<parameter>Scene_2</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>Update</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>1</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="128" g="255" r="128" textB="0" textG="0" textR="0" />
|
||||
<comment>Time to update the debug text objects, set Update = 0 to update it only once, and start a counter "i" = 0</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VarScene" />
|
||||
<parameters>
|
||||
<parameter>Update</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>1</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>Update</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>0</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>i</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>0</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="128" g="255" r="128" textB="0" textG="0" textR="0" />
|
||||
<comment>Repeat 4 times because there are 4 debug objects, in each repeat select the object with ID = i (counter variable)
Update the counter variable (i + 1)
Clear the temporal variable Temp, otherwise children are kept from one update to another, messing up the test</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Repeat</type>
|
||||
<repeatExpression>4</repeatExpression>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VarObjet" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>ID</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>Variable(i)</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="ModVarScene" />
|
||||
<parameters>
|
||||
<parameter>i</parameter>
|
||||
<parameter>+</parameter>
|
||||
<parameter>1</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<type inverted="false" value="VariableClearChildren" />
|
||||
<parameters>
|
||||
<parameter>Temp</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="128" g="255" r="128" textB="0" textG="0" textR="0" />
|
||||
<comment>Set starting title in function of the debug object ID, and copy the testing variables into the variable Temp (this way Temp will be equal to one of the variables under test)</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VarObjet" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>ID</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>0</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TextObject::String" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>"Scene" + NewLine()</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<type inverted="false" value="JSONToVariableStructure" />
|
||||
<parameters>
|
||||
<parameter>ToJSON(Scene)</parameter>
|
||||
<parameter>Temp</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VarObjet" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>ID</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>1</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TextObject::String" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>"Global" + NewLine()</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<type inverted="false" value="JSONToVariableStructure" />
|
||||
<parameters>
|
||||
<parameter>GlobalVarToJSON(Global)</parameter>
|
||||
<parameter>Temp</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VarObjet" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>ID</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>2</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TextObject::String" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>"Object" + NewLine()</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<type inverted="false" value="JSONToVariableStructure" />
|
||||
<parameters>
|
||||
<parameter>ObjectVarToJSON(DebugText,Object)</parameter>
|
||||
<parameter>Temp</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VarObjet" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>ID</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>3</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TextObject::String" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>=</parameter>
|
||||
<parameter>"Scene_2" + NewLine()</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<type inverted="false" value="JSONToVariableStructure" />
|
||||
<parameters>
|
||||
<parameter>ToJSON(Scene_2)</parameter>
|
||||
<parameter>Temp</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Comment</type>
|
||||
<color b="128" g="255" r="128" textB="0" textG="0" textR="0" />
|
||||
<comment>Copy values from variable Test in the debug object, to draw it, one debug object is selected at each iteration and one variable is copy into Temp variable</comment>
|
||||
<comment2></comment2>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VariableChildExists" />
|
||||
<parameters>
|
||||
<parameter>Temp</parameter>
|
||||
<parameter>"A"</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TextObject::String" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>+</parameter>
|
||||
<parameter>"____A = " + VariableString(Temp.A) + NewLine()</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VariableChildExists" />
|
||||
<parameters>
|
||||
<parameter>Temp</parameter>
|
||||
<parameter>"B"</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TextObject::String" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>+</parameter>
|
||||
<parameter>"____B" + NewLine()</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VariableChildExists" />
|
||||
<parameters>
|
||||
<parameter>Temp.B</parameter>
|
||||
<parameter>"alpha"</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TextObject::String" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>+</parameter>
|
||||
<parameter>"________alpha" + NewLine()</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VariableChildExists" />
|
||||
<parameters>
|
||||
<parameter>Temp.B.alpha</parameter>
|
||||
<parameter>"x"</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TextObject::String" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>+</parameter>
|
||||
<parameter>"____________x = " + VariableString(Temp.B.alpha.x) + NewLine()</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VariableChildExists" />
|
||||
<parameters>
|
||||
<parameter>Temp.B.alpha</parameter>
|
||||
<parameter>"y"</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TextObject::String" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>+</parameter>
|
||||
<parameter>"____________y = " + VariableString(Temp.B.alpha.y) + NewLine()</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
</events>
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VariableChildExists" />
|
||||
<parameters>
|
||||
<parameter>Temp.B</parameter>
|
||||
<parameter>"beta"</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TextObject::String" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>+</parameter>
|
||||
<parameter>"________beta = " + VariableString(Temp.B.beta) + NewLine()</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<type inverted="false" value="VariableChildExists" />
|
||||
<parameters>
|
||||
<parameter>Temp.B</parameter>
|
||||
<parameter>"gamma"</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<type inverted="false" value="TextObject::String" />
|
||||
<parameters>
|
||||
<parameter>DebugText</parameter>
|
||||
<parameter>+</parameter>
|
||||
<parameter>"________gamma = " + VariableString(Temp.B.gamma)</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
</events>
|
||||
</event>
|
||||
</events>
|
||||
</event>
|
||||
</events>
|
||||
</event>
|
||||
</events>
|
||||
<layers>
|
||||
<layer name="New layer" visibility="true">
|
||||
<cameras>
|
||||
<camera defaultSize="true" defaultViewport="true" height="0.000000" viewportBottom="1.000000" viewportLeft="0.000000" viewportRight="1.000000" viewportTop="0.000000" width="0.000000" />
|
||||
</cameras>
|
||||
<effects />
|
||||
</layer>
|
||||
<layer name="" visibility="true">
|
||||
<cameras>
|
||||
<camera defaultSize="true" defaultViewport="true" height="0.000000" viewportBottom="1.000000" viewportLeft="0.000000" viewportRight="1.000000" viewportTop="0.000000" width="0.000000" />
|
||||
</cameras>
|
||||
<effects />
|
||||
</layer>
|
||||
</layers>
|
||||
<behaviorsSharedData />
|
||||
</layout>
|
||||
</layouts>
|
||||
<externalEvents />
|
||||
<externalLayouts />
|
||||
<externalSourceFiles />
|
||||
</project>
|
@@ -1,15 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<project firstLayout="">
|
||||
<gdVersion build="84" major="3" minor="6" revision="0" />
|
||||
<properties linuxExecutableFilename="" macExecutableFilename="" useExternalSourceFiles="false" winExecutableFilename="" winExecutableIconFile="">
|
||||
<gdVersion build="97" major="4" minor="0" revision="0" />
|
||||
<properties folderProject="false" linuxExecutableFilename="" macExecutableFilename="" orientation="default" packageName="" projectFile="C:\Users\Maciel\Programacion\gits\GD\Binaries\Output\Release_Windows\Examples\Particles - Explosions.gdg" useExternalSourceFiles="false" winExecutableFilename="" winExecutableIconFile="">
|
||||
<name>Explosions</name>
|
||||
<author></author>
|
||||
<windowWidth>800</windowWidth>
|
||||
<windowHeight>600</windowHeight>
|
||||
<latestCompilationDirectory></latestCompilationDirectory>
|
||||
<latestCompilationDirectory>C:\Users\Maciel\AppData\Local\Temp\GDTemporaries\JSCocosExportParticles</latestCompilationDirectory>
|
||||
<maxFPS>60</maxFPS>
|
||||
<minFPS>10</minFPS>
|
||||
<verticalSync>false</verticalSync>
|
||||
<platformSpecificAssets />
|
||||
<loadingScreen showGDevelopSplash="true" />
|
||||
<extensions>
|
||||
<extension name="BuiltinObject" />
|
||||
<extension name="BuiltinAudio" />
|
||||
@@ -34,6 +36,7 @@
|
||||
</extensions>
|
||||
<platforms>
|
||||
<platform name="GDevelop C++ platform" />
|
||||
<platform name="GDevelop JS platform" />
|
||||
</platforms>
|
||||
<currentPlatform>GDevelop C++ platform</currentPlatform>
|
||||
</properties>
|
||||
@@ -48,40 +51,40 @@
|
||||
<variables />
|
||||
<layouts>
|
||||
<layout b="0" disableInputWhenNotFocused="true" mangledName="New_32scene" name="New scene" oglFOV="90.000000" oglZFar="500.000000" oglZNear="1.000000" r="0" standardSortMethod="true" stopSoundsOnStartup="true" title="" v="0">
|
||||
<uiSettings associatedLayout="" grid="false" gridB="255" gridG="180" gridHeight="32" gridOffsetX="0" gridOffsetY="0" gridR="158" gridWidth="32" snap="true" windowMask="false" zoomFactor="1.000000" />
|
||||
<uiSettings grid="false" gridB="255" gridG="180" gridHeight="32" gridOffsetX="0" gridOffsetY="0" gridR="158" gridWidth="32" snap="true" windowMask="false" zoomFactor="1.000000" />
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<instances />
|
||||
<objects>
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Mutable" destroyWhenNoParticles="true" emissionEditionSimpleMode="false" emitterAngleA="180.000000" emitterAngleB="160.000000" emitterForceMax="40.000000" emitterForceMin="5.000000" emitterXDirection="0.000000" emitterYDirection="0.000000" emitterZDirection="1.000000" flow="-1.000000" friction="2.000000" gravityEditionSimpleMode="false" greenParam="Mutable" maxParticleNb="5000" name="Explosion" particleAlpha1="204.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="25.000000" particleBlue2="50.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="0.000000" particleGravityZ="20.000000" particleGreen1="128.000000" particleGreen2="50.000000" particleLifeTimeMax="1.500000" particleLifeTimeMin="0.700000" particleRed1="255.000000" particleRed2="50.000000" particleSize1="100.000000" particleSize2="100.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Mutable" rendererParam1="20.000000" rendererParam2="20.000000" rendererType="Quad" sizeParam="Random" tank="1000.000000" textureParticleName="ExplosionTexture.png" type="ParticleSystem::ParticleEmitter" zoneRadius="2.000000">
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Mutable" destroyWhenNoParticles="true" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="360.000000" emitterForceMax="70.000000" emitterForceMin="30.000000" emitterXDirection="0.000000" emitterYDirection="0.000000" emitterZDirection="1.000000" flow="-1.000000" friction="2.000000" gravityEditionSimpleMode="false" greenParam="Mutable" maxParticleNb="100" name="Explosion" particleAlpha1="225.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="25.000000" particleBlue2="50.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="0.000000" particleGravityZ="20.000000" particleGreen1="128.000000" particleGreen2="50.000000" particleLifeTimeMax="1.500000" particleLifeTimeMin="0.700000" particleRed1="255.000000" particleRed2="50.000000" particleSize1="100.000000" particleSize2="100.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Mutable" rendererParam1="20.000000" rendererParam2="20.000000" rendererType="Quad" sizeParam="Random" tank="100.000000" textureParticleName="ExplosionTexture.png" type="ParticleSystem::ParticleEmitter" zoneRadius="2.000000">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<behaviors />
|
||||
</object>
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Mutable" destroyWhenNoParticles="true" emissionEditionSimpleMode="false" emitterAngleA="0.000000" emitterAngleB="180.000000" emitterForceMax="130.000000" emitterForceMin="50.000000" emitterXDirection="1.000000" emitterYDirection="0.000000" emitterZDirection="1.000000" flow="-1.000000" friction="2.000000" gravityEditionSimpleMode="false" greenParam="Mutable" maxParticleNb="5000" name="Explosion2" particleAlpha1="204.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="25.000000" particleBlue2="75.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="0.000000" particleGravityZ="30.000000" particleGreen1="76.000000" particleGreen2="180.000000" particleLifeTimeMax="1.500000" particleLifeTimeMin="0.700000" particleRed1="153.000000" particleRed2="1.000000" particleSize1="100.000000" particleSize2="100.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Enabled" rendererParam1="0.050000" rendererParam2="1.000000" rendererType="Line" sizeParam="Random" tank="350.000000" textureParticleName="" type="ParticleSystem::ParticleEmitter" zoneRadius="2.000000">
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Mutable" destroyWhenNoParticles="true" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="360.000000" emitterForceMax="130.000000" emitterForceMin="130.000000" emitterXDirection="1.000000" emitterYDirection="0.000000" emitterZDirection="1.000000" flow="-1.000000" friction="2.000000" gravityEditionSimpleMode="false" greenParam="Mutable" maxParticleNb="151" name="Explosion2" particleAlpha1="204.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="25.000000" particleBlue2="75.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="0.000000" particleGravityZ="30.000000" particleGreen1="76.000000" particleGreen2="180.000000" particleLifeTimeMax="1.000000" particleLifeTimeMin="0.700000" particleRed1="153.000000" particleRed2="1.000000" particleSize1="100.000000" particleSize2="100.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Enabled" rendererParam1="3.000000" rendererParam2="6.000000" rendererType="Line" sizeParam="Random" tank="40.000000" textureParticleName="" type="ParticleSystem::ParticleEmitter" zoneRadius="2.000000">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<behaviors />
|
||||
</object>
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Enabled" destroyWhenNoParticles="true" emissionEditionSimpleMode="false" emitterAngleA="45.000000" emitterAngleB="180.000000" emitterForceMax="10.000000" emitterForceMin="0.000000" emitterXDirection="0.000000" emitterYDirection="0.000000" emitterZDirection="1.000000" flow="400.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Enabled" maxParticleNb="5000" name="ExplosionSmoke" particleAlpha1="153.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="25.000000" particleBlue2="0.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="0.000000" particleGravityZ="30.000000" particleGreen1="25.000000" particleGreen2="0.800000" particleLifeTimeMax="1.200000" particleLifeTimeMin="0.700000" particleRed1="25.000000" particleRed2="0.100000" particleSize1="100.000000" particleSize2="100.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Enabled" rendererParam1="20.000000" rendererParam2="20.000000" rendererType="Quad" sizeParam="Random" tank="500.000000" textureParticleName="ExplosionTexture.png" type="ParticleSystem::ParticleEmitter" zoneRadius="20.000000">
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Enabled" destroyWhenNoParticles="true" emissionEditionSimpleMode="false" emitterAngleA="45.000000" emitterAngleB="180.000000" emitterForceMax="10.000000" emitterForceMin="0.000000" emitterXDirection="0.000000" emitterYDirection="0.000000" emitterZDirection="1.000000" flow="400.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Enabled" maxParticleNb="50" name="ExplosionSmoke" particleAlpha1="153.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="25.000000" particleBlue2="0.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="0.000000" particleGravityZ="30.000000" particleGreen1="25.000000" particleGreen2="0.800000" particleLifeTimeMax="2.000000" particleLifeTimeMin="0.700000" particleRed1="25.000000" particleRed2="0.100000" particleSize1="100.000000" particleSize2="100.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Enabled" rendererParam1="20.000000" rendererParam2="20.000000" rendererType="Quad" sizeParam="Random" tank="50.000000" textureParticleName="ExplosionTexture.png" type="ParticleSystem::ParticleEmitter" zoneRadius="20.000000">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<behaviors />
|
||||
</object>
|
||||
</objects>
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<instruction>
|
||||
<type inverted="false" value="Timer" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Random(0.3)+0.2</parameter>
|
||||
<parameter>"Creating"</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<subInstructions />
|
||||
</instruction>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<instruction>
|
||||
<type inverted="false" value="Create" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
@@ -90,9 +93,9 @@
|
||||
<parameter>Random(600)</parameter>
|
||||
<parameter></parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<subInstructions />
|
||||
</instruction>
|
||||
<instruction>
|
||||
<type inverted="false" value="Create" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
@@ -101,9 +104,9 @@
|
||||
<parameter>Explosion.Y()</parameter>
|
||||
<parameter></parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<subInstructions />
|
||||
</instruction>
|
||||
<instruction>
|
||||
<type inverted="false" value="Create" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
@@ -112,16 +115,16 @@
|
||||
<parameter>Explosion.Y()</parameter>
|
||||
<parameter></parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<subInstructions />
|
||||
</instruction>
|
||||
<instruction>
|
||||
<type inverted="false" value="ResetTimer" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>"Creating"</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<subInstructions />
|
||||
</instruction>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
@@ -131,9 +134,10 @@
|
||||
<cameras>
|
||||
<camera defaultSize="true" defaultViewport="true" height="0.000000" viewportBottom="1.000000" viewportLeft="0.000000" viewportRight="1.000000" viewportTop="0.000000" width="0.000000" />
|
||||
</cameras>
|
||||
<effects />
|
||||
</layer>
|
||||
</layers>
|
||||
<automatismsSharedData />
|
||||
<behaviorsSharedData />
|
||||
</layout>
|
||||
</layouts>
|
||||
<externalEvents />
|
||||
|
@@ -1,15 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<project firstLayout="">
|
||||
<gdVersion build="84" major="3" minor="6" revision="0" />
|
||||
<properties linuxExecutableFilename="" macExecutableFilename="" useExternalSourceFiles="false" winExecutableFilename="" winExecutableIconFile="">
|
||||
<gdVersion build="97" major="4" minor="0" revision="0" />
|
||||
<properties folderProject="false" linuxExecutableFilename="" macExecutableFilename="" orientation="default" packageName="" projectFile="C:\Users\Maciel\Programacion\gits\GD\Binaries\Output\Release_Windows\Examples\Particles - Various effects.gdg" useExternalSourceFiles="false" winExecutableFilename="" winExecutableIconFile="">
|
||||
<name>Project</name>
|
||||
<author></author>
|
||||
<windowWidth>800</windowWidth>
|
||||
<windowHeight>600</windowHeight>
|
||||
<latestCompilationDirectory></latestCompilationDirectory>
|
||||
<latestCompilationDirectory>C:\Users\Maciel\AppData\Local\Temp\GDTemporaries\JSCocosExportParticles</latestCompilationDirectory>
|
||||
<maxFPS>60</maxFPS>
|
||||
<minFPS>10</minFPS>
|
||||
<verticalSync>false</verticalSync>
|
||||
<platformSpecificAssets />
|
||||
<loadingScreen showGDevelopSplash="true" />
|
||||
<extensions>
|
||||
<extension name="BuiltinObject" />
|
||||
<extension name="BuiltinAudio" />
|
||||
@@ -34,6 +36,7 @@
|
||||
</extensions>
|
||||
<platforms>
|
||||
<platform name="GDevelop C++ platform" />
|
||||
<platform name="GDevelop JS platform" />
|
||||
</platforms>
|
||||
<currentPlatform>GDevelop C++ platform</currentPlatform>
|
||||
</properties>
|
||||
@@ -47,8 +50,8 @@
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<layouts>
|
||||
<layout b="0" disableInputWhenNotFocused="true" mangledName="Nouvelle_32sc_232ne" name="Nouvelle scène" oglFOV="90.000000" oglZFar="500.000000" oglZNear="1.000000" r="0" standardSortMethod="true" stopSoundsOnStartup="true" title="" v="0">
|
||||
<uiSettings associatedLayout="" grid="false" gridB="255" gridG="180" gridHeight="32" gridOffsetX="0" gridOffsetY="0" gridR="158" gridWidth="32" snap="true" windowMask="false" zoomFactor="1.000000" />
|
||||
<layout b="0" disableInputWhenNotFocused="true" mangledName="Scene" name="Scene" oglFOV="90.000000" oglZFar="500.000000" oglZNear="1.000000" r="0" standardSortMethod="true" stopSoundsOnStartup="true" title="" v="0">
|
||||
<uiSettings grid="false" gridB="255" gridG="180" gridHeight="32" gridOffsetX="0" gridOffsetY="0" gridR="158" gridWidth="32" snap="true" windowMask="false" zoomFactor="1.000000" />
|
||||
<objectsGroups />
|
||||
<variables />
|
||||
<instances>
|
||||
@@ -99,47 +102,47 @@
|
||||
</instance>
|
||||
</instances>
|
||||
<objects>
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Mutable" blueParam="Random" destroyWhenNoParticles="false" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="180.000000" emitterForceMax="10.000000" emitterForceMin="0.000000" emitterXDirection="0.000000" emitterYDirection="1.000000" emitterZDirection="0.000000" flow="300.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Random" maxParticleNb="5000" name="Fire" particleAlpha1="204.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="30.000000" particleBlue1="50.000000" particleBlue2="0.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="-100.000000" particleGravityZ="0.000000" particleGreen1="50.000000" particleGreen2="204.000000" particleLifeTimeMax="2.500000" particleLifeTimeMin="0.500000" particleRed1="240.000000" particleRed2="1.000000" particleSize1="100.000000" particleSize2="0.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Enabled" rendererParam1="10.000000" rendererParam2="20.000000" rendererType="Quad" sizeParam="Mutable" tank="-1.000000" textureParticleName="Fire" type="ParticleSystem::ParticleEmitter" zoneRadius="5.000000">
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Mutable" blueParam="Mutable" destroyWhenNoParticles="false" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="180.000000" emitterForceMax="10.000000" emitterForceMin="0.000000" emitterXDirection="0.000000" emitterYDirection="1.000000" emitterZDirection="0.000000" flow="30.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Mutable" maxParticleNb="200" name="Fire" particleAlpha1="204.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="30.000000" particleBlue1="50.000000" particleBlue2="0.000000" particleEditionSimpleMode="true" particleGravityX="0.000000" particleGravityY="-100.000000" particleGravityZ="0.000000" particleGreen1="50.000000" particleGreen2="191.000000" particleLifeTimeMax="2.500000" particleLifeTimeMin="0.500000" particleRed1="240.000000" particleRed2="255.000000" particleSize1="100.000000" particleSize2="0.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Mutable" rendererParam1="10.000000" rendererParam2="20.000000" rendererType="Quad" sizeParam="Mutable" tank="-1.000000" textureParticleName="Fire" type="ParticleSystem::ParticleEmitter" zoneRadius="5.000000">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<behaviors />
|
||||
</object>
|
||||
<object additive="false" alphaParam="Mutable" angleParam="Random" blueParam="Enabled" destroyWhenNoParticles="false" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="180.000000" emitterForceMax="0.000000" emitterForceMin="0.000000" emitterXDirection="0.000000" emitterYDirection="1.000000" emitterZDirection="0.000000" flow="200.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Enabled" maxParticleNb="5000" name="Smoke" particleAlpha1="160.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="360.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="50.000000" particleBlue2="0.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="-100.000000" particleGravityZ="0.000000" particleGreen1="50.000000" particleGreen2="0.800000" particleLifeTimeMax="2.500000" particleLifeTimeMin="0.500000" particleRed1="50.000000" particleRed2="1.000000" particleSize1="20.000000" particleSize2="100.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Enabled" rendererParam1="30.000000" rendererParam2="30.000000" rendererType="Quad" sizeParam="Mutable" tank="-1.000000" textureParticleName="Fire" type="ParticleSystem::ParticleEmitter" zoneRadius="7.000000">
|
||||
<object additive="false" alphaParam="Mutable" angleParam="Random" blueParam="Mutable" destroyWhenNoParticles="false" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="360.000000" emitterForceMax="0.000000" emitterForceMin="0.000000" emitterXDirection="0.000000" emitterYDirection="1.000000" emitterZDirection="0.000000" flow="150.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Mutable" maxParticleNb="150" name="Smoke" particleAlpha1="160.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="360.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="255.000000" particleBlue2="149.000000" particleEditionSimpleMode="true" particleGravityX="0.000000" particleGravityY="-100.000000" particleGravityZ="0.000000" particleGreen1="250.000000" particleGreen2="144.000000" particleLifeTimeMax="2.500000" particleLifeTimeMin="0.500000" particleRed1="253.000000" particleRed2="135.000000" particleSize1="20.000000" particleSize2="100.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Mutable" rendererParam1="30.000000" rendererParam2="30.000000" rendererType="Quad" sizeParam="Mutable" tank="-1.000000" textureParticleName="Fire" type="ParticleSystem::ParticleEmitter" zoneRadius="15.000000">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<behaviors />
|
||||
</object>
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Random" destroyWhenNoParticles="false" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="180.000000" emitterForceMax="65.000000" emitterForceMin="25.000000" emitterXDirection="0.000000" emitterYDirection="1.000000" emitterZDirection="0.000000" flow="200.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Random" maxParticleNb="5000" name="Particles" particleAlpha1="204.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="125.000000" particleBlue2="204.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="0.000000" particleGravityZ="250.000000" particleGreen1="125.000000" particleGreen2="204.000000" particleLifeTimeMax="2.500000" particleLifeTimeMin="0.500000" particleRed1="204.000000" particleRed2="255.000000" particleSize1="0.000000" particleSize2="0.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Random" rendererParam1="8.000000" rendererParam2="1.000000" rendererType="Point" sizeParam="Random" tank="-1.000000" textureParticleName="" type="ParticleSystem::ParticleEmitter" zoneRadius="2.000000">
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Random" destroyWhenNoParticles="false" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="180.000000" emitterForceMax="65.000000" emitterForceMin="25.000000" emitterXDirection="0.000000" emitterYDirection="1.000000" emitterZDirection="0.000000" flow="200.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Random" maxParticleNb="5000" name="Particles" particleAlpha1="204.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="125.000000" particleBlue2="204.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="0.000000" particleGravityZ="250.000000" particleGreen1="125.000000" particleGreen2="204.000000" particleLifeTimeMax="2.500000" particleLifeTimeMin="0.500000" particleRed1="204.000000" particleRed2="255.000000" particleSize1="100.000000" particleSize2="100.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Random" rendererParam1="8.000000" rendererParam2="1.000000" rendererType="Point" sizeParam="Random" tank="-1.000000" textureParticleName="" type="ParticleSystem::ParticleEmitter" zoneRadius="2.000000">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<behaviors />
|
||||
</object>
|
||||
<object additive="false" alphaParam="Mutable" angleParam="Random" blueParam="Random" destroyWhenNoParticles="false" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="180.000000" emitterForceMax="0.000000" emitterForceMin="0.000000" emitterXDirection="0.000000" emitterYDirection="1.000000" emitterZDirection="0.000000" flow="100.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Random" maxParticleNb="5000" name="Beam" particleAlpha1="250.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="204.000000" particleBlue2="255.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="0.000000" particleGravityZ="500.000000" particleGreen1="127.000000" particleGreen2="230.000000" particleLifeTimeMax="2.000000" particleLifeTimeMin="0.500000" particleRed1="153.000000" particleRed2="180.000000" particleSize1="0.000000" particleSize2="0.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Random" rendererParam1="3.000000" rendererParam2="1.000000" rendererType="Line" sizeParam="Random" tank="-1.000000" textureParticleName="" type="ParticleSystem::ParticleEmitter" zoneRadius="3.000000">
|
||||
<object additive="false" alphaParam="Mutable" angleParam="Random" blueParam="Random" destroyWhenNoParticles="false" emissionEditionSimpleMode="false" emitterAngleA="-55.000000" emitterAngleB="-35.000000" emitterForceMax="5.000000" emitterForceMin="0.000000" emitterXDirection="0.000000" emitterYDirection="1.000000" emitterZDirection="0.000000" flow="100.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Random" maxParticleNb="151" name="Beam" particleAlpha1="250.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="204.000000" particleBlue2="255.000000" particleEditionSimpleMode="false" particleGravityX="100.000000" particleGravityY="0.000000" particleGravityZ="500.000000" particleGreen1="127.000000" particleGreen2="230.000000" particleLifeTimeMax="2.000000" particleLifeTimeMin="0.500000" particleRed1="153.000000" particleRed2="180.000000" particleSize1="100.000000" particleSize2="100.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Random" rendererParam1="100.000000" rendererParam2="3.000000" rendererType="Line" sizeParam="Random" tank="-1.000000" textureParticleName="" type="ParticleSystem::ParticleEmitter" zoneRadius="20.000000">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<behaviors />
|
||||
</object>
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Random" destroyWhenNoParticles="false" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="0.000000" emitterForceMax="65.000000" emitterForceMin="25.000000" emitterXDirection="0.000000" emitterYDirection="0.000000" emitterZDirection="0.000000" flow="300.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Random" maxParticleNb="5000" name="Beam2" particleAlpha1="125.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="255.000000" particleBlue2="204.000000" particleEditionSimpleMode="false" particleGravityX="-500.000000" particleGravityY="0.000000" particleGravityZ="0.000000" particleGreen1="204.000000" particleGreen2="125.000000" particleLifeTimeMax="5.000000" particleLifeTimeMin="0.500000" particleRed1="127.000000" particleRed2="0.500000" particleSize1="0.000000" particleSize2="0.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Enabled" rendererParam1="0.500000" rendererParam2="2.000000" rendererType="Line" sizeParam="Random" tank="-1.000000" textureParticleName="" type="ParticleSystem::ParticleEmitter" zoneRadius="3.000000">
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Random" destroyWhenNoParticles="false" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="0.000000" emitterForceMax="65.000000" emitterForceMin="25.000000" emitterXDirection="0.000000" emitterYDirection="0.000000" emitterZDirection="0.000000" flow="50.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Random" maxParticleNb="5000" name="Beam2" particleAlpha1="125.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="255.000000" particleBlue2="204.000000" particleEditionSimpleMode="false" particleGravityX="-500.000000" particleGravityY="0.000000" particleGravityZ="0.000000" particleGreen1="204.000000" particleGreen2="125.000000" particleLifeTimeMax="5.000000" particleLifeTimeMin="0.500000" particleRed1="127.000000" particleRed2="0.500000" particleSize1="100.000000" particleSize2="100.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Enabled" rendererParam1="10.000000" rendererParam2="3.000000" rendererType="Line" sizeParam="Random" tank="-1.000000" textureParticleName="" type="ParticleSystem::ParticleEmitter" zoneRadius="10.000000">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<behaviors />
|
||||
</object>
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Random" destroyWhenNoParticles="true" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="180.000000" emitterForceMax="100.000000" emitterForceMin="25.000000" emitterXDirection="0.000000" emitterYDirection="0.000000" emitterZDirection="1.000000" flow="400.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Enabled" maxParticleNb="5000" name="Pyro" particleAlpha1="204.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="204.000000" particleBlue2="255.000000" particleEditionSimpleMode="false" particleGravityX="0.000000" particleGravityY="-100.000000" particleGravityZ="0.000000" particleGreen1="127.000000" particleGreen2="1.000000" particleLifeTimeMax="1.000000" particleLifeTimeMin="0.500000" particleRed1="127.000000" particleRed2="230.000000" particleSize1="100.000000" particleSize2="1.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Random" rendererParam1="0.060000" rendererParam2="3.000000" rendererType="Line" sizeParam="Mutable" tank="600.000000" textureParticleName="" type="ParticleSystem::ParticleEmitter" zoneRadius="7.000000">
|
||||
<object additive="true" alphaParam="Mutable" angleParam="Random" blueParam="Random" destroyWhenNoParticles="true" emissionEditionSimpleMode="true" emitterAngleA="0.000000" emitterAngleB="360.000000" emitterForceMax="100.000000" emitterForceMin="25.000000" emitterXDirection="0.000000" emitterYDirection="0.000000" emitterZDirection="1.000000" flow="70.000000" friction="2.000000" gravityEditionSimpleMode="true" greenParam="Enabled" maxParticleNb="151" name="Pyro" particleAlpha1="204.000000" particleAlpha2="0.000000" particleAlphaRandomness1="0.000000" particleAlphaRandomness2="0.000000" particleAngle1="0.000000" particleAngle2="0.000000" particleAngleRandomness1="0.000000" particleAngleRandomness2="0.000000" particleBlue1="204.000000" particleBlue2="255.000000" particleEditionSimpleMode="false" particleGravityX="-0.000080" particleGravityY="-200.000000" particleGravityZ="0.000000" particleGreen1="127.000000" particleGreen2="1.000000" particleLifeTimeMax="1.000000" particleLifeTimeMin="0.500000" particleRed1="127.000000" particleRed2="230.000000" particleSize1="100.000000" particleSize2="1.000000" particleSizeRandomness1="0.000000" particleSizeRandomness2="0.000000" redParam="Random" rendererParam1="8.000000" rendererParam2="8.000000" rendererType="Line" sizeParam="Mutable" tank="80.000000" textureParticleName="" type="ParticleSystem::ParticleEmitter" zoneRadius="25.000000">
|
||||
<variables />
|
||||
<automatisms />
|
||||
<behaviors />
|
||||
</object>
|
||||
</objects>
|
||||
<events>
|
||||
<event disabled="false" folded="false">
|
||||
<type>BuiltinCommonInstructions::Standard</type>
|
||||
<conditions>
|
||||
<condition>
|
||||
<instruction>
|
||||
<type inverted="false" value="Timer" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>Random(0.3)+1</parameter>
|
||||
<parameter>1</parameter>
|
||||
<parameter>"Creating"</parameter>
|
||||
</parameters>
|
||||
<subConditions />
|
||||
</condition>
|
||||
<subInstructions />
|
||||
</instruction>
|
||||
</conditions>
|
||||
<actions>
|
||||
<action>
|
||||
<instruction>
|
||||
<type inverted="false" value="Create" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
@@ -148,16 +151,16 @@
|
||||
<parameter>100+Random(300)</parameter>
|
||||
<parameter></parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<action>
|
||||
<subInstructions />
|
||||
</instruction>
|
||||
<instruction>
|
||||
<type inverted="false" value="ResetTimer" />
|
||||
<parameters>
|
||||
<parameter></parameter>
|
||||
<parameter>"Creating"</parameter>
|
||||
</parameters>
|
||||
<subActions />
|
||||
</action>
|
||||
<subInstructions />
|
||||
</instruction>
|
||||
</actions>
|
||||
<events />
|
||||
</event>
|
||||
@@ -167,9 +170,10 @@
|
||||
<cameras>
|
||||
<camera defaultSize="true" defaultViewport="true" height="0.000000" viewportBottom="1.000000" viewportLeft="0.000000" viewportRight="1.000000" viewportTop="0.000000" width="0.000000" />
|
||||
</cameras>
|
||||
<effects />
|
||||
</layer>
|
||||
</layers>
|
||||
<automatismsSharedData />
|
||||
<behaviorsSharedData />
|
||||
</layout>
|
||||
</layouts>
|
||||
<externalEvents />
|
||||
|
1864
Binaries/Output/Release_Windows/Examples/SkeletonTest.gdg
Normal file
1
Binaries/Output/Release_Windows/Examples/skeleton.json
Normal file
@@ -0,0 +1 @@
|
||||
{"SubTexture":[{"frameY":0,"y":234,"frameWidth":112,"frameX":0,"frameHeight":210,"width":111,"height":209,"name":"parts/tailTip","x":456},{"width":112,"y":234,"height":86,"name":"parts/armUpperL","x":340},{"width":48,"y":859,"height":80,"name":"parts/armL","x":373},{"width":96,"y":922,"height":78,"name":"parts/handL","x":1},{"frameY":0,"y":677,"frameWidth":204,"frameX":0,"frameHeight":180,"width":203,"height":180,"name":"parts/legL","x":238},{"frameY":0,"y":397,"frameWidth":236,"frameX":0,"frameHeight":348,"width":235,"height":347,"name":"parts/body","x":1},{"width":216,"y":397,"height":278,"name":"parts/tail","x":238},{"width":208,"y":746,"height":174,"name":"parts/clothes1","x":1},{"width":124,"y":677,"height":282,"name":"parts/hair","x":443},{"frameY":0,"y":1,"frameWidth":338,"frameX":0,"frameHeight":394,"width":337,"height":394,"name":"parts/head","x":1},{"width":28,"y":961,"height":46,"name":"parts/eyeL","x":459},{"frameY":0,"y":961,"frameWidth":38,"frameX":0,"frameHeight":58,"width":37,"height":58,"name":"parts/eyeR","x":420},{"frameY":0,"y":1,"frameWidth":180,"frameX":0,"frameHeight":232,"width":180,"height":231,"name":"parts/legR","x":340},{"width":160,"y":859,"height":94,"name":"parts/armUpperR","x":211},{"frameY":0,"y":941,"frameWidth":46,"frameX":0,"frameHeight":78,"width":45,"height":77,"name":"parts/armR","x":373},{"width":98,"y":322,"height":58,"name":"parts/handR","x":340},{"frameY":0,"y":955,"frameWidth":120,"frameX":0,"frameHeight":36,"width":119,"height":36,"name":"parts/beardL","x":237},{"width":136,"y":955,"height":36,"name":"parts/beardR","x":99}],"width":1024,"height":1024,"name":"dragon","imagePath":"dragon_tex.png"}
|
BIN
Binaries/Output/Release_Windows/Examples/skeleton_texture.png
Normal file
After Width: | Height: | Size: 156 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 354 B |
After Width: | Height: | Size: 486 B |
After Width: | Height: | Size: 464 B |
After Width: | Height: | Size: 638 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 550 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 469 B |
After Width: | Height: | Size: 600 B |
BIN
Binaries/Output/Release_Windows/locale/libexpat.dll
Normal file
BIN
Binaries/Output/Release_Windows/locale/libgettextlib.dll
Normal file
BIN
Binaries/Output/Release_Windows/locale/libgettextpo.dll
Normal file
BIN
Binaries/Output/Release_Windows/locale/libgettextsrc.dll
Normal file
BIN
Binaries/Output/Release_Windows/locale/libiconv2.dll
Normal file
BIN
Binaries/Output/Release_Windows/locale/libintl-8.dll
Normal file
BIN
Binaries/Output/Release_Windows/locale/libintl3.dll
Normal file
BIN
Binaries/Output/Release_Windows/res/GD-logo-big.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
Binaries/Output/Release_Windows/res/centerPoint.png
Normal file
After Width: | Height: | Size: 1005 B |
After Width: | Height: | Size: 324 B |
After Width: | Height: | Size: 382 B |
BIN
Binaries/Output/Release_Windows/res/conditions/raycast.png
Normal file
After Width: | Height: | Size: 328 B |
BIN
Binaries/Output/Release_Windows/res/conditions/raycast24.png
Normal file
After Width: | Height: | Size: 378 B |
BIN
Binaries/Output/Release_Windows/res/originPoint.png
Normal file
After Width: | Height: | Size: 1006 B |
BIN
Binaries/Output/Release_Windows/res/ribbon_default/export32.png
Normal file
After Width: | Height: | Size: 293 B |
After Width: | Height: | Size: 413 B |
After Width: | Height: | Size: 568 B |
After Width: | Height: | Size: 1.6 KiB |
BIN
Binaries/Output/Release_Windows/res/ribbon_default/networkpreview64.png
Executable file
After Width: | Height: | Size: 3.6 KiB |
BIN
Binaries/Output/Release_Windows/res/ribbon_default/objects64.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.1 KiB |
@@ -51,9 +51,9 @@ cd $CUR_DIR/opensuse-build-service/gdevelop
|
||||
tar zxf gdevelop_$GD_VERSION.orig.tar.gz
|
||||
echo "[OK]"
|
||||
|
||||
#We need to include ExtLibs/SFML.7z and ExtLibs/boost.7z because buildbot do not have access to internet
|
||||
#We need to include ExtLibs/SFML.7z because the buildbot do not have access to internet
|
||||
printf " Copying SFML archive... "
|
||||
cp $GD_BASE_DIR/ExtLibs/SFML.7z gdevelop-$GD_VERSION/ExtLibs/
|
||||
cp -rf $GD_BASE_DIR/ExtLibs/SFML gdevelop-$GD_VERSION/ExtLibs/
|
||||
echo "[OK]"
|
||||
|
||||
#Recreate the tar.gz with the added sources
|
||||
|
@@ -11,7 +11,7 @@ IF NOT EXIST "%INNOSETUP_EXE%" set INNOSETUP_EXE=C:\Program Files\Inno Setup 5\I
|
||||
IF EXIST "%INNOSETUP_EXE%" (
|
||||
echo "Note: InnoSetup found at %INNOSETUP_EXE%"
|
||||
) ELSE (
|
||||
echo Warning: InnoSetup not found! Skipping installer creation.
|
||||
echo Warning: InnoSetup Unicode not found! Skipping installer creation.
|
||||
SET SKIPINSTALLER=1
|
||||
)
|
||||
|
||||
@@ -35,14 +35,14 @@ del Output\Release_Windows\log.txt > NUL 2> NUL
|
||||
|
||||
echo.
|
||||
echo --Creating installer...
|
||||
IF NOT "%SKIPINSTALLER%"=="1" "C:\Program Files (x86)\Inno Setup 5\ISCC.exe" Releases\InnoSetupInstallerScript.iss /Q
|
||||
IF NOT "%SKIPINSTALLER%"=="1" "C:\Program Files (x86)\Inno Setup 5\ISCC.exe" Releases\InnoSetupInstallerScript.iss /Qp
|
||||
IF "%SKIPINSTALLER%"=="1" echo (Skipped)
|
||||
|
||||
echo.
|
||||
echo --Creating archive...
|
||||
if exist Releases\gd4xxxx.7z (del Releases\gd4xxxx.7z)
|
||||
cd Output\Release_Windows\
|
||||
IF NOT "%SKIPINSTALLERANDARCHIVE%"=="1" "..\..\..\ExtLibs\7za.exe" a ..\..\Releases\gd4xxxx.7z * > ..\..\Packaging\logs\7zArchiveLog.txt
|
||||
IF NOT "%SKIPINSTALLERANDARCHIVE%"=="1" "..\..\..\ExtLibs\7za.exe" a ..\..\Releases\gd4xxxx.7z * -bb
|
||||
IF "%SKIPINSTALLERANDARCHIVE%"=="1" echo (Skipped)
|
||||
cd ..\..\..
|
||||
|
||||
|
@@ -2,7 +2,9 @@
|
||||
Version=1.0
|
||||
Name=GDevelop
|
||||
GenericName=Game creator IDE
|
||||
GenericName[de]=Entwicklungsumgebung für Spiele
|
||||
Comment=HTML5 and native game development software
|
||||
Comment[de]=Entwicklungsumgebung für native und HTML5-Spiele
|
||||
Exec=sh -c "gdevelop %F"
|
||||
MimeType=application/x-gdevelop-project;
|
||||
Icon=GDevelop
|
||||
|
@@ -12,11 +12,11 @@ Source100: gdevelop-rpmlintrc
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
BuildRequires: git rsync curl gcc-c++ cmake p7zip glew-devel xorg-x11-devel libsndfile-devel openal-soft-devel desktop-file-utils
|
||||
BuildRequires: git rsync curl gcc-c++ cmake p7zip glew-devel libsndfile-devel openal-soft-devel desktop-file-utils
|
||||
%if 0%{?fedora}
|
||||
BuildRequires: systemd-devel libjpeg-turbo-devel gtk2-devel wxGTK3-devel
|
||||
BuildRequires: systemd-devel libjpeg-turbo-devel gtk2-devel wxGTK3-devel libX11-devel
|
||||
%else
|
||||
BuildRequires: update-desktop-files libudev-devel libjpeg8-devel wxWidgets-3_0-devel
|
||||
BuildRequires: update-desktop-files libudev-devel libjpeg8-devel wxWidgets-3_0-devel xorg-x11-devel
|
||||
%endif
|
||||
Requires: gcc-c++ p7zip
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
; Inno Setup installation script for GDevelop.
|
||||
; Inno Setup installation script for GDevelop 4.
|
||||
|
||||
[Setup]
|
||||
AppName=GDevelop
|
||||
@@ -13,17 +13,17 @@ AllowNoIcons=yes
|
||||
LicenseFile=..\Output\Release_Windows\License-en.rtf
|
||||
InfoBeforeFile=..\Output\Release_Windows\Informations-en.rtf
|
||||
OutputDir=.\
|
||||
OutputBaseFilename=gd4090
|
||||
OutputBaseFilename=gd4097
|
||||
Compression=lzma
|
||||
SolidCompression=yes
|
||||
SetupIconFile=..\Output\Release_Windows\res\icon.ico
|
||||
VersionInfoVersion=4.0
|
||||
WizardImageFile=Setup bitmap\wizbmp.bmp
|
||||
WizardSmallImageFile=Setup bitmap/smallicon.bmp
|
||||
AppCopyright=2008-2016 Florian Rival
|
||||
AppCopyright=2008-2018 Florian Rival
|
||||
VersionInfoCompany=Florian Rival
|
||||
VersionInfoDescription=GDevelop setup
|
||||
VersionInfoCopyright=2008-2016 Florian Rival
|
||||
VersionInfoCopyright=2008-2018 Florian Rival
|
||||
VersionInfoProductName=GDevelop
|
||||
VersionInfoProductVersion=4.0
|
||||
|
||||
|
@@ -18,6 +18,7 @@ gd_set_option(BUILD_IDE TRUE BOOL "TRUE to build the IDE")
|
||||
gd_set_option(BUILD_EXTENSIONS TRUE BOOL "TRUE to build the extensions")
|
||||
gd_set_option(BUILD_TESTS FALSE BOOL "TRUE to build the tests")
|
||||
gd_set_option(NO_GUI FALSE BOOL "TRUE to build without wxWidgets GUI")
|
||||
gd_set_option(FULL_VERSION_NUMBER TRUE BOOL "TRUE to build GDevelop with its full version number (lastest tag + commit hash), FALSE to only use the lastest tag (avoid rebulding many source file when developping)")
|
||||
|
||||
#Setting up installation directory, for Linux (has to be done before "project" command).
|
||||
IF(NOT WIN32)
|
||||
@@ -76,6 +77,8 @@ endif()
|
||||
set(GD_base_dir ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
#Add all the CMakeLists:
|
||||
ADD_SUBDIRECTORY(Version)
|
||||
|
||||
ADD_SUBDIRECTORY(ExtLibs)
|
||||
IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Core/CMakeLists.txt" AND BUILD_CORE)
|
||||
ADD_SUBDIRECTORY(Core)
|
||||
|
@@ -73,6 +73,7 @@ IF(NO_GUI)
|
||||
ENDIF()
|
||||
|
||||
add_library(GDCore SHARED ${source_files})
|
||||
add_dependencies(GDCore GDVersion)
|
||||
IF(EMSCRIPTEN)
|
||||
set_target_properties(GDCore PROPERTIES SUFFIX ".bc")
|
||||
ELSEIF(WIN32)
|
||||
|
@@ -78,6 +78,7 @@
|
||||
* The installation is fairly simple :<br>
|
||||
* <br>
|
||||
* - Launch the installer.<br>
|
||||
* - Uncheck "Check for updated files on the TDM-GCC server" (otherwise you won't get TDM-GCC 4.9.2 but a more recent version that won't be compatible with wxWidgets pre-compiled binaries)
|
||||
* - Choose Create.<br>
|
||||
|
||||
\image html compilerInstall1.png
|
||||
@@ -531,7 +532,7 @@ AddEvent("Name",
|
||||
"Description",
|
||||
"Group",
|
||||
"path-to-a-16-by-16-icon.png",
|
||||
std::shared_ptr<gd::BaseEvent>(new EventClassName))
|
||||
std::make_shared<EventClassName>())
|
||||
* \endcode
|
||||
*
|
||||
* The event must be able to generate its code when events are being translated to C++ or Javascript:<br>
|
||||
@@ -543,7 +544,7 @@ AddEvent("Standard",
|
||||
_("Standard event: Actions are run if conditions are fulfilled."),
|
||||
"",
|
||||
"res/eventaddicon.png",
|
||||
std::shared_ptr<gd::BaseEvent>(new gd::StandardEvent))
|
||||
std::make_shared<gd::StandardEvent>())
|
||||
.SetCodeGenerator(std::shared_ptr<gd::EventMetadata::CodeGenerator>(codeGen));
|
||||
* \endcode
|
||||
|
||||
@@ -560,8 +561,8 @@ gd::BehaviorMetadata & aut = AddBehavior("Name",
|
||||
"Group",
|
||||
"path-to-a-32-by-32-icon.png",
|
||||
"BehaviorClassName",
|
||||
std::shared_ptr<gd::Behavior>(new BehaviorClassName),
|
||||
std::shared_ptr<gd::BehaviorsSharedData>(new BehaviorSharedDataClassName));
|
||||
std::make_shared<BehaviorClassName>(),
|
||||
std::make_shared<BehaviorSharedDataClassName>());
|
||||
* \endcode
|
||||
* The last line can be replaced by <code>std::shared_ptr<gd::BehaviorsSharedData>()</code> if no shared data are being used.
|
||||
*
|
||||
@@ -619,8 +620,8 @@ public:
|
||||
"",
|
||||
"CppPlatform/Extensions/myicon.png",
|
||||
"PhysicsBehavior",
|
||||
std::shared_ptr<gd::Behavior>(new BehaviorClassName),
|
||||
std::shared_ptr<gd::BehaviorsSharedData>(new BehaviorSharedDataClassName));
|
||||
std::make_shared<BehaviorClassName>(),
|
||||
std::make_shared<BehaviorSharedDataClassName>());
|
||||
|
||||
#if defined(GD_IDE_ONLY)
|
||||
behaviorInfo.SetIncludeFile("MyExtension/MyIncludeFile.h");
|
||||
|
@@ -29,6 +29,19 @@ public:
|
||||
virtual ~CommentEvent() {};
|
||||
virtual gd::CommentEvent * Clone() const { return new CommentEvent(*this);}
|
||||
|
||||
int GetBackgroundColorRed() const { return r; }
|
||||
int GetBackgroundColorGreen() const { return v; }
|
||||
int GetBackgroundColorBlue() const { return b; }
|
||||
void SetBackgroundColor(int r_, int g_, int b_) { r = r_; v = g_; b = b_; }
|
||||
|
||||
int GetTextColorRed() const { return textR; }
|
||||
int GetTextColorGreen() const { return textG; }
|
||||
int GetTextColorBlue() const { return textB; }
|
||||
void SetTextColor(int r_, int g_, int b_) { textR = r_; textG = g_; textB = b_; }
|
||||
|
||||
const gd::String & GetComment() const { return com1; }
|
||||
void SetComment(const gd::String & comment) { com1 = comment; }
|
||||
|
||||
virtual void SerializeTo(SerializerElement & element) const;
|
||||
virtual void UnserializeFrom(gd::Project & project, const SerializerElement & element);
|
||||
|
||||
@@ -40,8 +53,8 @@ public:
|
||||
int textG; ///< Text color Green component
|
||||
int textB; ///< Text color Blue component
|
||||
|
||||
gd::String com1; ///< Comment gd::String
|
||||
gd::String com2; ///< Optional second comment gd::String
|
||||
gd::String com1; ///< Comment
|
||||
gd::String com2; ///< Optional second column comment, deprecated
|
||||
|
||||
/**
|
||||
* Called by event editor to draw the event.
|
||||
|
@@ -80,16 +80,16 @@ vector < const gd::Expression* > ForEachEvent::GetAllExpressions() const
|
||||
void ForEachEvent::SerializeTo(SerializerElement & element) const
|
||||
{
|
||||
element.AddChild("object").SetValue(objectsToPick.GetPlainString());
|
||||
gd::EventsListSerialization::SaveConditions(conditions, element.AddChild("conditions"));
|
||||
gd::EventsListSerialization::SaveActions(actions, element.AddChild("actions"));
|
||||
gd::EventsListSerialization::SerializeInstructionsTo(conditions, element.AddChild("conditions"));
|
||||
gd::EventsListSerialization::SerializeInstructionsTo(actions, element.AddChild("actions"));
|
||||
gd::EventsListSerialization::SerializeEventsTo(events, element.AddChild("events"));
|
||||
}
|
||||
|
||||
void ForEachEvent::UnserializeFrom(gd::Project & project, const SerializerElement & element)
|
||||
{
|
||||
objectsToPick = gd::Expression(element.GetChild("object", 0, "Object").GetValue().GetString());
|
||||
gd::EventsListSerialization::OpenConditions(project, conditions, element.GetChild("conditions", 0, "Conditions"));
|
||||
gd::EventsListSerialization::OpenActions(project, actions, element.GetChild("actions", 0, "Actions"));
|
||||
gd::EventsListSerialization::UnserializeInstructionsFrom(project, conditions, element.GetChild("conditions", 0, "Conditions"));
|
||||
gd::EventsListSerialization::UnserializeInstructionsFrom(project, actions, element.GetChild("actions", 0, "Actions"));
|
||||
gd::EventsListSerialization::UnserializeEventsFrom(project, events, element.GetChild("events", 0, "Events"));
|
||||
}
|
||||
|
||||
@@ -109,7 +109,10 @@ void ForEachEvent::Render(wxDC & dc, int x, int y, unsigned int width, gd::Event
|
||||
|
||||
//For Each text
|
||||
dc.SetFont( renderingHelper->GetNiceFont().Bold() );
|
||||
dc.SetTextForeground(wxColour(0,0,0));
|
||||
if ( !IsDisabled() )
|
||||
dc.SetTextForeground( wxColour( 0, 0, 0 ) );
|
||||
else
|
||||
dc.SetTextForeground( wxColour( 160, 160, 160 ) );
|
||||
dc.DrawText( _("For each object") + " " + objectsToPick.GetPlainString() + _(", repeat :"), x + 4, y + 3 );
|
||||
|
||||
//Draw conditions rectangle
|
||||
|
@@ -79,16 +79,16 @@ vector < const gd::Expression* > RepeatEvent::GetAllExpressions() const
|
||||
void RepeatEvent::SerializeTo(SerializerElement & element) const
|
||||
{
|
||||
element.AddChild("repeatExpression").SetValue(repeatNumberExpression.GetPlainString());
|
||||
gd::EventsListSerialization::SaveConditions(conditions, element.AddChild("conditions"));
|
||||
gd::EventsListSerialization::SaveActions(actions, element.AddChild("actions"));
|
||||
gd::EventsListSerialization::SerializeInstructionsTo(conditions, element.AddChild("conditions"));
|
||||
gd::EventsListSerialization::SerializeInstructionsTo(actions, element.AddChild("actions"));
|
||||
gd::EventsListSerialization::SerializeEventsTo(events, element.AddChild("events"));
|
||||
}
|
||||
|
||||
void RepeatEvent::UnserializeFrom(gd::Project & project, const SerializerElement & element)
|
||||
{
|
||||
repeatNumberExpression = gd::Expression(element.GetChild("repeatExpression", 0, "RepeatExpression").GetValue().GetString());
|
||||
gd::EventsListSerialization::OpenConditions(project, conditions, element.GetChild("conditions", 0, "Conditions"));
|
||||
gd::EventsListSerialization::OpenActions(project, actions, element.GetChild("actions", 0, "Actions"));
|
||||
gd::EventsListSerialization::UnserializeInstructionsFrom(project, conditions, element.GetChild("conditions", 0, "Conditions"));
|
||||
gd::EventsListSerialization::UnserializeInstructionsFrom(project, actions, element.GetChild("actions", 0, "Actions"));
|
||||
gd::EventsListSerialization::UnserializeEventsFrom(project, events, element.GetChild("events", 0, "Events"));
|
||||
}
|
||||
|
||||
@@ -108,7 +108,10 @@ void RepeatEvent::Render(wxDC & dc, int x, int y, unsigned int width, gd::Events
|
||||
|
||||
//Repeat text
|
||||
dc.SetFont( renderingHelper->GetNiceFont().Bold() );
|
||||
dc.SetTextForeground(wxColour(0,0,0));
|
||||
if ( !IsDisabled() )
|
||||
dc.SetTextForeground( wxColour( 0, 0, 0 ) );
|
||||
else
|
||||
dc.SetTextForeground( wxColour( 160, 160, 160 ) );
|
||||
dc.DrawText( _("Repeat") + " " + repeatNumberExpression.GetPlainString() + " " + _("times :"), x + 4, y + 3 );
|
||||
|
||||
//Draw conditions rectangle
|
||||
|
@@ -62,15 +62,15 @@ vector < gd::InstructionsList* > StandardEvent::GetAllActionsVectors()
|
||||
|
||||
void StandardEvent::SerializeTo(SerializerElement & element) const
|
||||
{
|
||||
gd::EventsListSerialization::SaveConditions(conditions, element.AddChild("conditions"));
|
||||
gd::EventsListSerialization::SaveActions(actions, element.AddChild("actions"));
|
||||
gd::EventsListSerialization::SerializeInstructionsTo(conditions, element.AddChild("conditions"));
|
||||
gd::EventsListSerialization::SerializeInstructionsTo(actions, element.AddChild("actions"));
|
||||
gd::EventsListSerialization::SerializeEventsTo(events, element.AddChild("events"));
|
||||
}
|
||||
|
||||
void StandardEvent::UnserializeFrom(gd::Project & project, const SerializerElement & element)
|
||||
{
|
||||
gd::EventsListSerialization::OpenConditions(project, conditions, element.GetChild("conditions", 0, "Conditions"));
|
||||
gd::EventsListSerialization::OpenActions(project, actions, element.GetChild("actions", 0, "Actions"));
|
||||
gd::EventsListSerialization::UnserializeInstructionsFrom(project, conditions, element.GetChild("conditions", 0, "Conditions"));
|
||||
gd::EventsListSerialization::UnserializeInstructionsFrom(project, actions, element.GetChild("actions", 0, "Actions"));
|
||||
gd::EventsListSerialization::UnserializeEventsFrom(project, events, element.GetChild("events", 0, "Events"));
|
||||
}
|
||||
|
||||
|
@@ -62,9 +62,9 @@ vector < const gd::InstructionsList* > WhileEvent::GetAllActionsVectors() const
|
||||
void WhileEvent::SerializeTo(SerializerElement & element) const
|
||||
{
|
||||
element.SetAttribute("infiniteLoopWarning", infiniteLoopWarning);
|
||||
gd::EventsListSerialization::SaveConditions(whileConditions, element.AddChild("whileConditions"));
|
||||
gd::EventsListSerialization::SaveConditions(conditions, element.AddChild("conditions"));
|
||||
gd::EventsListSerialization::SaveActions(actions, element.AddChild("actions"));
|
||||
gd::EventsListSerialization::SerializeInstructionsTo(whileConditions, element.AddChild("whileConditions"));
|
||||
gd::EventsListSerialization::SerializeInstructionsTo(conditions, element.AddChild("conditions"));
|
||||
gd::EventsListSerialization::SerializeInstructionsTo(actions, element.AddChild("actions"));
|
||||
gd::EventsListSerialization::SerializeEventsTo(events, element.AddChild("events"));
|
||||
}
|
||||
|
||||
@@ -72,9 +72,9 @@ void WhileEvent::UnserializeFrom(gd::Project & project, const SerializerElement
|
||||
{
|
||||
justCreatedByTheUser = false;
|
||||
infiniteLoopWarning = element.GetBoolAttribute("infiniteLoopWarning");
|
||||
gd::EventsListSerialization::OpenConditions(project, whileConditions, element.GetChild("whileConditions", 0, "WhileConditions"));
|
||||
gd::EventsListSerialization::OpenConditions(project, conditions, element.GetChild("conditions", 0, "Conditions"));
|
||||
gd::EventsListSerialization::OpenActions(project, actions, element.GetChild("actions", 0, "Actions"));
|
||||
gd::EventsListSerialization::UnserializeInstructionsFrom(project, whileConditions, element.GetChild("whileConditions", 0, "WhileConditions"));
|
||||
gd::EventsListSerialization::UnserializeInstructionsFrom(project, conditions, element.GetChild("conditions", 0, "Conditions"));
|
||||
gd::EventsListSerialization::UnserializeInstructionsFrom(project, actions, element.GetChild("actions", 0, "Actions"));
|
||||
gd::EventsListSerialization::UnserializeEventsFrom(project, events, element.GetChild("events", 0, "Events"));
|
||||
}
|
||||
|
||||
@@ -96,7 +96,10 @@ void WhileEvent::Render(wxDC & dc, int x, int y, unsigned int width, gd::EventsE
|
||||
|
||||
//While text
|
||||
dc.SetFont( renderingHelper->GetNiceFont().Bold() );
|
||||
dc.SetTextForeground(wxColour(0,0,0));
|
||||
if ( !IsDisabled() )
|
||||
dc.SetTextForeground( wxColour( 0, 0, 0 ) );
|
||||
else
|
||||
dc.SetTextForeground( wxColour( 160, 160, 160 ) );
|
||||
dc.DrawText( _("While :"), x+5, y+5 );
|
||||
|
||||
//Draw icon if infinite loop warning is deactivated.
|
||||
@@ -110,7 +113,10 @@ void WhileEvent::Render(wxDC & dc, int x, int y, unsigned int width, gd::EventsE
|
||||
renderingHelper->DrawConditionsList(whileConditions, dc, x+80+border, y+border, width-80-border*2, this, areas, selection, platform);
|
||||
|
||||
dc.SetFont( renderingHelper->GetNiceFont().Bold() );
|
||||
dc.SetTextForeground(wxColour(0,0,0));
|
||||
if ( !IsDisabled() )
|
||||
dc.SetTextForeground( wxColour( 0, 0, 0 ) );
|
||||
else
|
||||
dc.SetTextForeground( wxColour( 160, 160, 160 ) );
|
||||
dc.DrawText( _("Repeat :"), x+4, y+whileConditionsHeight+3);
|
||||
whileConditionsHeight += repeatHeight;
|
||||
|
||||
|
@@ -33,6 +33,13 @@ void EventsCodeGenerationContext::InheritsFrom(const EventsCodeGenerationContext
|
||||
}
|
||||
}
|
||||
|
||||
void EventsCodeGenerationContext::Reuse(const EventsCodeGenerationContext & parent_)
|
||||
{
|
||||
InheritsFrom(parent_);
|
||||
if (parent_.CanReuse())
|
||||
contextDepth = parent_.GetContextDepth(); // Keep same context depth
|
||||
}
|
||||
|
||||
void EventsCodeGenerationContext::ObjectsListNeeded(const gd::String & objectName)
|
||||
{
|
||||
if ( emptyObjectsListsToBeDeclared.find(objectName) == emptyObjectsListsToBeDeclared.end() )
|
||||
@@ -65,4 +72,9 @@ unsigned int EventsCodeGenerationContext::GetLastDepthObjectListWasNeeded(const
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool EventsCodeGenerationContext::IsSameObjectsList(const gd::String & objectName, const EventsCodeGenerationContext & otherContext) const
|
||||
{
|
||||
return GetLastDepthObjectListWasNeeded(objectName) == otherContext.GetLastDepthObjectListWasNeeded(objectName);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -32,7 +32,13 @@ public:
|
||||
* Default constructor. You may want to call InheritsFrom just after.
|
||||
* \param maxDepthLevel Optional pointer to an unsigned integer that will be updated to contain the maximal scope depth reached.
|
||||
*/
|
||||
EventsCodeGenerationContext(unsigned int * maxDepthLevel_ = nullptr) : contextDepth(0), customConditionDepth(0), maxDepthLevel(maxDepthLevel_), parent(NULL) {};
|
||||
EventsCodeGenerationContext(unsigned int * maxDepthLevel_ = nullptr) :
|
||||
contextDepth(0),
|
||||
customConditionDepth(0),
|
||||
maxDepthLevel(maxDepthLevel_),
|
||||
parent(NULL),
|
||||
reuseExplicitlyForbidden(false)
|
||||
{};
|
||||
virtual ~EventsCodeGenerationContext() {};
|
||||
|
||||
/**
|
||||
@@ -41,6 +47,28 @@ public:
|
||||
*/
|
||||
void InheritsFrom(const EventsCodeGenerationContext & parent);
|
||||
|
||||
/**
|
||||
* \brief As InheritsFrom, mark the context as being the child of another one, but enabling
|
||||
* the child context to use the same object lists.
|
||||
*
|
||||
* Used for example for optimizing the last event of a list.
|
||||
*/
|
||||
void Reuse(const EventsCodeGenerationContext & parent);
|
||||
|
||||
/**
|
||||
* \brief Forbid any optimization that would reuse and modify the object list from this context
|
||||
* in children context.
|
||||
*
|
||||
* Used in while/for each/repeat or any event that have a loop and must ensure that
|
||||
* the list of objects stay clean.
|
||||
*/
|
||||
void ForbidReuse() { reuseExplicitlyForbidden = true; }
|
||||
|
||||
/**
|
||||
* \brief Return false if the object lists of the context can not be reused in a child context.
|
||||
*/
|
||||
bool CanReuse() const { return !reuseExplicitlyForbidden && parent != nullptr; }
|
||||
|
||||
/**
|
||||
* \brief Returns the depth of the inheritance of the context.
|
||||
*
|
||||
@@ -92,7 +120,7 @@ public:
|
||||
/**
|
||||
* \brief Consider that \a objectName is now declared in the context.
|
||||
*/
|
||||
void SetObjectDeclared(const gd::String & objectName ) { alreadyDeclaredObjectsLists.insert(objectName); }
|
||||
void SetObjectDeclared(const gd::String & objectName) { alreadyDeclaredObjectsLists.insert(objectName); }
|
||||
|
||||
/**
|
||||
* Return all the objects lists which will be declared by the current context
|
||||
@@ -122,6 +150,13 @@ public:
|
||||
*/
|
||||
unsigned int GetLastDepthObjectListWasNeeded(const gd::String & objectName) const;
|
||||
|
||||
/**
|
||||
* \brief Check if twos context have the same list for an object.
|
||||
*
|
||||
* This can be the case when a context is reusing the lists of another (see gd::EventsCodeGenerationContext::Reuse).
|
||||
*/
|
||||
bool IsSameObjectsList(const gd::String & objectName, const EventsCodeGenerationContext & otherContext) const;
|
||||
|
||||
/**
|
||||
* \brief Called when a custom condition code is generated.
|
||||
*/
|
||||
@@ -150,6 +185,7 @@ private:
|
||||
unsigned int customConditionDepth; ///< The depth of the conditions being generated.
|
||||
unsigned int * maxDepthLevel; ///< A pointer to a unsigned int updated with the maximum depth reached.
|
||||
const EventsCodeGenerationContext * parent; ///< The parent of the current context. Can be NULL.
|
||||
bool reuseExplicitlyForbidden; ///< If set to true, forbid children context to reuse this one without inheriting.
|
||||
};
|
||||
|
||||
}
|
||||
|
@@ -179,6 +179,49 @@ gd::String EventsCodeGenerator::GenerateCompoundOperatorCall(const gd::Instructi
|
||||
return callStartString+"("+argumentsStr+") "+operatorStr+" ("+rhs+")";
|
||||
}
|
||||
|
||||
gd::String EventsCodeGenerator::GenerateMutatorCall(const gd::InstructionMetadata & instrInfos, const vector<gd::String> & arguments, const gd::String & callStartString, std::size_t startFromArgument)
|
||||
{
|
||||
std::size_t operatorIndex = instrInfos.parameters.size();
|
||||
for (std::size_t i = startFromArgument;i<instrInfos.parameters.size();++i)
|
||||
{
|
||||
if ( instrInfos.parameters[i].type == "operator" )
|
||||
operatorIndex = i;
|
||||
}
|
||||
|
||||
//Ensure that there is at least one parameter after the operator
|
||||
if ( operatorIndex+1 >= instrInfos.parameters.size() )
|
||||
{
|
||||
ReportError();
|
||||
return "";
|
||||
}
|
||||
|
||||
gd::String operatorStr = arguments[operatorIndex];
|
||||
if ( operatorStr.size() > 2 ) operatorStr = operatorStr.substr(1, operatorStr.length()-1-1); //Operator contains quote which must be removed.
|
||||
|
||||
auto mutators = instrInfos.codeExtraInformation.optionalMutators;
|
||||
auto mutator = mutators.find(operatorStr);
|
||||
if ( mutator == mutators.end() )
|
||||
{
|
||||
ReportError();
|
||||
return "";
|
||||
}
|
||||
|
||||
gd::String rhs = arguments[operatorIndex+1];
|
||||
|
||||
//Generate arguments for calling the mutator
|
||||
gd::String argumentsStr;
|
||||
for (std::size_t i = startFromArgument;i<arguments.size();++i)
|
||||
{
|
||||
if ( i != operatorIndex && i != operatorIndex+1) //Generate classic arguments
|
||||
{
|
||||
if ( !argumentsStr.empty() ) argumentsStr += ", ";
|
||||
argumentsStr += arguments[i];
|
||||
}
|
||||
}
|
||||
|
||||
return callStartString + "(" + argumentsStr + ")." + mutator->second + "(" + rhs + ")";
|
||||
}
|
||||
|
||||
gd::String EventsCodeGenerator::GenerateConditionCode(gd::Instruction & condition, gd::String returnBoolean, EventsCodeGenerationContext & context)
|
||||
{
|
||||
gd::String conditionCode;
|
||||
@@ -215,21 +258,15 @@ gd::String EventsCodeGenerator::GenerateConditionCode(gd::Instruction & conditio
|
||||
gd::String objectInParameter = condition.GetParameter(pNb).GetPlainString();
|
||||
|
||||
if ( !scene.HasObjectNamed(objectInParameter) && !project.HasObjectNamed(objectInParameter)
|
||||
&& find_if(scene.GetObjectGroups().begin(), scene.GetObjectGroups().end(), bind2nd(gd::GroupHasTheSameName(), objectInParameter) ) == scene.GetObjectGroups().end()
|
||||
&& find_if(project.GetObjectGroups().begin(), project.GetObjectGroups().end(), bind2nd(gd::GroupHasTheSameName(), objectInParameter) ) == project.GetObjectGroups().end() )
|
||||
&& !scene.GetObjectGroups().Has(objectInParameter)
|
||||
&& !project.GetObjectGroups().Has(objectInParameter))
|
||||
{
|
||||
cout << "Bad object (" << objectInParameter << ") in a parameter of a condition " << condition.GetType() << endl;
|
||||
condition.SetParameter(pNb, gd::Expression(""));
|
||||
condition.SetType("");
|
||||
}
|
||||
else if ( !instrInfos.parameters[pNb].supplementaryInformation.empty()
|
||||
&& gd::GetTypeOfObject(project, scene, objectInParameter) != instrInfos.parameters[pNb].supplementaryInformation )
|
||||
{
|
||||
cout << "Bad object type in a parameter of a condition " << condition.GetType() << endl;
|
||||
cout << "Condition wanted " << instrInfos.parameters[pNb].supplementaryInformation << endl;
|
||||
cout << "Condition wanted " << instrInfos.parameters[pNb].supplementaryInformation << " of type " << instrInfos.parameters[pNb].supplementaryInformation << endl;
|
||||
cout << "Condition has received " << objectInParameter << " of type " << gd::GetTypeOfObject(project, scene, objectInParameter) << endl;
|
||||
|
||||
condition.SetParameter(pNb, gd::Expression(""));
|
||||
condition.SetType("");
|
||||
}
|
||||
@@ -361,20 +398,15 @@ gd::String EventsCodeGenerator::GenerateActionCode(gd::Instruction & action, Eve
|
||||
{
|
||||
gd::String objectInParameter = action.GetParameter(pNb).GetPlainString();
|
||||
if ( !scene.HasObjectNamed(objectInParameter) && !project.HasObjectNamed(objectInParameter)
|
||||
&& find_if(scene.GetObjectGroups().begin(), scene.GetObjectGroups().end(), bind2nd(gd::GroupHasTheSameName(), objectInParameter) ) == scene.GetObjectGroups().end()
|
||||
&& find_if(project.GetObjectGroups().begin(), project.GetObjectGroups().end(), bind2nd(gd::GroupHasTheSameName(), objectInParameter) ) == project.GetObjectGroups().end() )
|
||||
&& !scene.GetObjectGroups().Has(objectInParameter)
|
||||
&& !project.GetObjectGroups().Has(objectInParameter))
|
||||
{
|
||||
cout << "Bad object (" << objectInParameter << ") in a parameter of an action " << action.GetType() << endl;
|
||||
action.SetParameter(pNb, gd::Expression(""));
|
||||
action.SetType("");
|
||||
}
|
||||
else if ( !instrInfos.parameters[pNb].supplementaryInformation.empty()
|
||||
&& gd::GetTypeOfObject(project, scene, objectInParameter) != instrInfos.parameters[pNb].supplementaryInformation )
|
||||
{
|
||||
cout << "Bad object type in parameter "+gd::String::From(pNb)+" of an action " << action.GetType() << endl;
|
||||
cout << "Action wanted " << instrInfos.parameters[pNb].supplementaryInformation << " of type " << instrInfos.parameters[pNb].supplementaryInformation << endl;
|
||||
cout << "Action has received " << objectInParameter << " of type " << gd::GetTypeOfObject(project, scene, objectInParameter) << endl;
|
||||
|
||||
action.SetParameter(pNb, gd::Expression(""));
|
||||
action.SetType("");
|
||||
}
|
||||
@@ -468,7 +500,7 @@ gd::String EventsCodeGenerator::GenerateParameterCodes(const gd::String & parame
|
||||
gd::ExpressionParser parser(parameter);
|
||||
if ( !parser.ParseMathExpression(platform, project, scene, callbacks) )
|
||||
{
|
||||
cout << "Error :" << parser.firstErrorStr << " in: "<< parameter << endl;
|
||||
cout << "Error :" << parser.GetFirstError() << " in: "<< parameter << endl;
|
||||
|
||||
argOutput = "0";
|
||||
}
|
||||
@@ -482,7 +514,7 @@ gd::String EventsCodeGenerator::GenerateParameterCodes(const gd::String & parame
|
||||
gd::ExpressionParser parser(parameter);
|
||||
if ( !parser.ParseStringExpression(platform, project, scene, callbacks) )
|
||||
{
|
||||
cout << "Error in text expression" << parser.firstErrorStr << endl;
|
||||
cout << "Error in text expression" << parser.GetFirstError() << endl;
|
||||
|
||||
argOutput = "\"\"";
|
||||
}
|
||||
@@ -588,38 +620,58 @@ vector<gd::String> EventsCodeGenerator::GenerateParametersCodes(vector < gd::Ex
|
||||
|
||||
gd::String EventsCodeGenerator::GenerateObjectsDeclarationCode(EventsCodeGenerationContext & context)
|
||||
{
|
||||
auto declareObjectList = [this](gd::String object, gd::EventsCodeGenerationContext & context) {
|
||||
gd::String objectListName = GetObjectListName(object, context);
|
||||
if (!context.GetParentContext())
|
||||
{
|
||||
std::cout << "ERROR: During code generation, a context tried to use an already declared object list without having a parent" << std::endl;
|
||||
return "/* Could not declare " + objectListName + " */";
|
||||
}
|
||||
|
||||
//*Optimization*: Avoid a copy of the object list if we're using
|
||||
//the same list as the one from the parent context.
|
||||
if (context.IsSameObjectsList(object, *context.GetParentContext()))
|
||||
return "/* Reuse " + objectListName + " */";
|
||||
|
||||
gd::String declarationCode;
|
||||
|
||||
//Use a temporary variable as the names of lists are the same between contexts.
|
||||
gd::String copiedListName = GetObjectListName(object, *context.GetParentContext());
|
||||
declarationCode += "std::vector<RuntimeObject*> & " + objectListName + "T = " + copiedListName + ";\n";
|
||||
declarationCode += "std::vector<RuntimeObject*> " + objectListName + " = " + objectListName + "T;\n";
|
||||
return declarationCode;
|
||||
};
|
||||
|
||||
gd::String declarationsCode;
|
||||
for ( set<gd::String>::iterator it = context.objectsListsToBeDeclared.begin() ; it != context.objectsListsToBeDeclared.end(); ++it )
|
||||
for (auto object : context.GetObjectsListsToBeDeclared())
|
||||
{
|
||||
if ( context.alreadyDeclaredObjectsLists.find(*it) == context.alreadyDeclaredObjectsLists.end() )
|
||||
gd::String objectListDeclaration = "";
|
||||
if ( !context.ObjectAlreadyDeclared(object) )
|
||||
{
|
||||
declarationsCode += "std::vector<RuntimeObject*> "+GetObjectListName(*it, context)
|
||||
+" = runtimeContext->GetObjectsRawPointers(\""+ConvertToString(*it)+"\");\n";
|
||||
context.alreadyDeclaredObjectsLists.insert(*it);
|
||||
objectListDeclaration = "std::vector<RuntimeObject*> "+GetObjectListName(object, context)
|
||||
+" = runtimeContext->GetObjectsRawPointers(\""+ConvertToString(object)+"\");\n";
|
||||
context.SetObjectDeclared(object);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Could normally be done in one line, but clang sometimes miscompile it.
|
||||
declarationsCode += "std::vector<RuntimeObject*> & "+GetObjectListName(*it, context)+"T = "+GetObjectListName(*it, context)+";\n";
|
||||
declarationsCode += "std::vector<RuntimeObject*> "+GetObjectListName(*it, context)+" = "+GetObjectListName(*it, context)+"T;\n";
|
||||
}
|
||||
objectListDeclaration = declareObjectList(object, context);
|
||||
|
||||
declarationsCode += objectListDeclaration + "\n";
|
||||
}
|
||||
for ( set<gd::String>::iterator it = context.emptyObjectsListsToBeDeclared.begin() ; it != context.emptyObjectsListsToBeDeclared.end(); ++it )
|
||||
for (auto object : context.GetObjectsListsToBeDeclaredEmpty())
|
||||
{
|
||||
if ( context.alreadyDeclaredObjectsLists.find(*it) == context.alreadyDeclaredObjectsLists.end() )
|
||||
gd::String objectListDeclaration = "";
|
||||
if ( !context.ObjectAlreadyDeclared(object) )
|
||||
{
|
||||
declarationsCode += "std::vector<RuntimeObject*> "+GetObjectListName(*it, context)+";\n";
|
||||
context.alreadyDeclaredObjectsLists.insert(*it);
|
||||
objectListDeclaration = "std::vector<RuntimeObject*> "+GetObjectListName(object, context)+";\n";
|
||||
context.SetObjectDeclared(object);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Could normally be done in one line, but clang sometimes miscompile it.
|
||||
declarationsCode += "std::vector<RuntimeObject*> & "+GetObjectListName(*it, context)+"T = "+GetObjectListName(*it, context)+";\n";
|
||||
declarationsCode += "std::vector<RuntimeObject*> "+GetObjectListName(*it, context)+" = "+GetObjectListName(*it, context)+"T;\n";
|
||||
}
|
||||
objectListDeclaration = declareObjectList(object, context);
|
||||
|
||||
declarationsCode += objectListDeclaration + "\n";
|
||||
}
|
||||
|
||||
return declarationsCode ;
|
||||
return declarationsCode;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -628,12 +680,20 @@ gd::String EventsCodeGenerator::GenerateObjectsDeclarationCode(EventsCodeGenerat
|
||||
gd::String EventsCodeGenerator::GenerateEventsListCode(gd::EventsList & events, const EventsCodeGenerationContext & parentContext)
|
||||
{
|
||||
gd::String output;
|
||||
|
||||
for ( std::size_t eId = 0; eId < events.size();++eId )
|
||||
{
|
||||
//Each event has its own context : Objects picked in an event are totally different than the one picked in another.
|
||||
gd::EventsCodeGenerationContext context;
|
||||
context.InheritsFrom(parentContext); //Events in the same "level" share the same context as their parent.
|
||||
gd::EventsCodeGenerationContext newContext;
|
||||
newContext.InheritsFrom(parentContext); //Events in the same "level" share the same context as their parent.
|
||||
|
||||
//*Optimization*: when the event is the last of a list, we can use the
|
||||
//same lists of objects as the parent (as they will be discarded just after).
|
||||
//This avoids a copy of the lists of objects which is an expensive operation.
|
||||
bool reuseParentContext = parentContext.CanReuse() && eId == events.size()-1;
|
||||
gd::EventsCodeGenerationContext reusedContext;
|
||||
reusedContext.Reuse(parentContext);
|
||||
|
||||
auto & context = reuseParentContext ? reusedContext : newContext;
|
||||
|
||||
gd::String eventCoreCode = events[eId].GenerateEventCode(*this, context);
|
||||
gd::String scopeBegin = GenerateScopeBegin(context);
|
||||
@@ -682,17 +742,10 @@ gd::String EventsCodeGenerator::ConvertToStringExplicit(gd::String plainString)
|
||||
std::vector<gd::String> EventsCodeGenerator::ExpandObjectsName(const gd::String & objectName, const EventsCodeGenerationContext & context) const
|
||||
{
|
||||
std::vector<gd::String> realObjects;
|
||||
vector< gd::ObjectGroup >::const_iterator globalGroup = find_if(project.GetObjectGroups().begin(),
|
||||
project.GetObjectGroups().end(),
|
||||
bind2nd(gd::GroupHasTheSameName(), objectName));
|
||||
vector< gd::ObjectGroup >::const_iterator sceneGroup = find_if(scene.GetObjectGroups().begin(),
|
||||
scene.GetObjectGroups().end(),
|
||||
bind2nd(gd::GroupHasTheSameName(), objectName));
|
||||
|
||||
if ( globalGroup != project.GetObjectGroups().end() )
|
||||
realObjects = (*globalGroup).GetAllObjectsNames();
|
||||
else if ( sceneGroup != scene.GetObjectGroups().end() )
|
||||
realObjects = (*sceneGroup).GetAllObjectsNames();
|
||||
if (project.GetObjectGroups().Has(objectName))
|
||||
realObjects = project.GetObjectGroups().Get(objectName).GetAllObjectsNames();
|
||||
else if (scene.GetObjectGroups().Has(objectName))
|
||||
realObjects = scene.GetObjectGroups().Get(objectName).GetAllObjectsNames();
|
||||
else
|
||||
realObjects.push_back(objectName);
|
||||
|
||||
@@ -783,14 +836,7 @@ gd::String EventsCodeGenerator::GenerateFreeCondition(const std::vector<gd::Stri
|
||||
}
|
||||
else
|
||||
{
|
||||
gd::String argumentsStr;
|
||||
for (std::size_t i = 0;i<arguments.size();++i)
|
||||
{
|
||||
if ( i != 0 ) argumentsStr += ", ";
|
||||
argumentsStr += arguments[i];
|
||||
}
|
||||
|
||||
predicat = instrInfos.codeExtraInformation.functionCallName+"("+argumentsStr+")";
|
||||
predicat = instrInfos.codeExtraInformation.functionCallName+"("+GenerateArgumentsList(arguments, 0)+")";
|
||||
}
|
||||
|
||||
//Add logical not if needed
|
||||
@@ -829,14 +875,7 @@ gd::String EventsCodeGenerator::GenerateObjectCondition(const gd::String & objec
|
||||
}
|
||||
else
|
||||
{
|
||||
gd::String argumentsStr;
|
||||
for (std::size_t i = 1;i<arguments.size();++i)
|
||||
{
|
||||
if ( i != 1 ) argumentsStr += ", ";
|
||||
argumentsStr += arguments[i];
|
||||
}
|
||||
|
||||
predicat = objectFunctionCallNamePart+"("+argumentsStr+")";
|
||||
predicat = objectFunctionCallNamePart+"("+GenerateArgumentsList(arguments, 1)+")";
|
||||
}
|
||||
if ( conditionInverted ) predicat = GenerateNegatedPredicat(predicat);
|
||||
|
||||
@@ -860,14 +899,7 @@ gd::String EventsCodeGenerator::GenerateBehaviorCondition(const gd::String & obj
|
||||
}
|
||||
else
|
||||
{
|
||||
gd::String argumentsStr;
|
||||
for (std::size_t i = 2;i<arguments.size();++i)
|
||||
{
|
||||
if ( i != 2 ) argumentsStr += ", ";
|
||||
argumentsStr += arguments[i];
|
||||
}
|
||||
|
||||
predicat = "("+argumentsStr+")";
|
||||
predicat = "("+GenerateArgumentsList(arguments, 2)+")";
|
||||
}
|
||||
if ( conditionInverted ) predicat = GenerateNegatedPredicat(predicat);
|
||||
|
||||
@@ -883,19 +915,14 @@ gd::String EventsCodeGenerator::GenerateFreeAction(const std::vector<gd::String>
|
||||
{
|
||||
if ( instrInfos.codeExtraInformation.accessType == gd::InstructionMetadata::ExtraInformation::MutatorAndOrAccessor )
|
||||
call = GenerateOperatorCall(instrInfos, arguments, instrInfos.codeExtraInformation.functionCallName, instrInfos.codeExtraInformation.optionalAssociatedInstruction);
|
||||
else if ( instrInfos.codeExtraInformation.accessType == gd::InstructionMetadata::ExtraInformation::Mutators )
|
||||
call = GenerateMutatorCall(instrInfos, arguments, instrInfos.codeExtraInformation.functionCallName);
|
||||
else
|
||||
call = GenerateCompoundOperatorCall(instrInfos, arguments, instrInfos.codeExtraInformation.functionCallName);
|
||||
}
|
||||
else
|
||||
{
|
||||
gd::String argumentsStr;
|
||||
for (std::size_t i = 0;i<arguments.size();++i)
|
||||
{
|
||||
if ( i != 0 ) argumentsStr += ", ";
|
||||
argumentsStr += arguments[i];
|
||||
}
|
||||
|
||||
call = instrInfos.codeExtraInformation.functionCallName+"("+argumentsStr+")";
|
||||
call = instrInfos.codeExtraInformation.functionCallName+"("+GenerateArgumentsList(arguments)+")";
|
||||
}
|
||||
return call+";\n";
|
||||
}
|
||||
@@ -911,20 +938,15 @@ gd::String EventsCodeGenerator::GenerateObjectAction(const gd::String & objectNa
|
||||
if ( (instrInfos.codeExtraInformation.type == "number" || instrInfos.codeExtraInformation.type == "string") )
|
||||
{
|
||||
if ( instrInfos.codeExtraInformation.accessType == gd::InstructionMetadata::ExtraInformation::MutatorAndOrAccessor )
|
||||
call = GenerateOperatorCall(instrInfos, arguments, instrInfos.codeExtraInformation.functionCallName, instrInfos.codeExtraInformation.optionalAssociatedInstruction,2);
|
||||
call = GenerateOperatorCall(instrInfos, arguments, instrInfos.codeExtraInformation.functionCallName, instrInfos.codeExtraInformation.optionalAssociatedInstruction, 2);
|
||||
else
|
||||
call = GenerateCompoundOperatorCall(instrInfos, arguments, instrInfos.codeExtraInformation.functionCallName,2);
|
||||
call = GenerateCompoundOperatorCall(instrInfos, arguments, instrInfos.codeExtraInformation.functionCallName, 2);
|
||||
|
||||
return "For each picked object \""+objectName+"\", call "+call+".\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
gd::String argumentsStr;
|
||||
for (std::size_t i = 2;i<arguments.size();++i)
|
||||
{
|
||||
if ( i != 2 ) argumentsStr += ", ";
|
||||
argumentsStr += arguments[i];
|
||||
}
|
||||
gd::String argumentsStr = GenerateArgumentsList(arguments, 1);
|
||||
|
||||
call = instrInfos.codeExtraInformation.functionCallName+"("+argumentsStr+")";
|
||||
return "For each picked object \""+objectName+"\", call "+call+"("+argumentsStr+").\n";
|
||||
@@ -944,20 +966,15 @@ gd::String EventsCodeGenerator::GenerateBehaviorAction(const gd::String & object
|
||||
if ( (instrInfos.codeExtraInformation.type == "number" || instrInfos.codeExtraInformation.type == "string") )
|
||||
{
|
||||
if ( instrInfos.codeExtraInformation.accessType == gd::InstructionMetadata::ExtraInformation::MutatorAndOrAccessor )
|
||||
call = GenerateOperatorCall(instrInfos, arguments, instrInfos.codeExtraInformation.functionCallName, instrInfos.codeExtraInformation.optionalAssociatedInstruction,2);
|
||||
call = GenerateOperatorCall(instrInfos, arguments, instrInfos.codeExtraInformation.functionCallName, instrInfos.codeExtraInformation.optionalAssociatedInstruction, 2);
|
||||
else
|
||||
call = GenerateCompoundOperatorCall(instrInfos, arguments, instrInfos.codeExtraInformation.functionCallName,2);
|
||||
call = GenerateCompoundOperatorCall(instrInfos, arguments, instrInfos.codeExtraInformation.functionCallName, 2);
|
||||
return "For each picked object \""+objectName+"\", call "+call
|
||||
+" for behavior \""+behaviorName+"\".\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
gd::String argumentsStr;
|
||||
for (std::size_t i = 2;i<arguments.size();++i)
|
||||
{
|
||||
if ( i != 2 ) argumentsStr += ", ";
|
||||
argumentsStr += arguments[i];
|
||||
}
|
||||
gd::String argumentsStr = GenerateArgumentsList(arguments, 2);
|
||||
|
||||
call = instrInfos.codeExtraInformation.functionCallName+"("+argumentsStr+")";
|
||||
return "For each picked object \""+objectName+"\", call "+call+"("+argumentsStr+")"
|
||||
@@ -971,6 +988,18 @@ gd::String EventsCodeGenerator::GetObjectListName(const gd::String & name, const
|
||||
return ManObjListName(name);
|
||||
}
|
||||
|
||||
gd::String EventsCodeGenerator::GenerateArgumentsList(const std::vector<gd::String> & arguments, size_t startFrom)
|
||||
{
|
||||
gd::String argumentsStr;
|
||||
for (std::size_t i = startFrom;i<arguments.size();++i)
|
||||
{
|
||||
if (!argumentsStr.empty()) argumentsStr += ", ";
|
||||
argumentsStr += arguments[i];
|
||||
}
|
||||
|
||||
return argumentsStr;
|
||||
}
|
||||
|
||||
EventsCodeGenerator::EventsCodeGenerator(gd::Project & project_, const gd::Layout & layout, const gd::Platform & platform_) :
|
||||
project(project_),
|
||||
scene(layout),
|
||||
|
@@ -46,7 +46,7 @@ public:
|
||||
virtual ~EventsCodeGenerator() {};
|
||||
|
||||
/**
|
||||
* \brief Preprocess an events list ( Replacing for example links with the linked event ).
|
||||
* \brief Preprocess an events list (replacing for example links with the linked events).
|
||||
*
|
||||
* This should be called before any code generation.
|
||||
*/
|
||||
@@ -57,9 +57,9 @@ public:
|
||||
*
|
||||
* \param events std::vector of events
|
||||
* \param context Context used for generation
|
||||
* \return C++ code
|
||||
* \return Code
|
||||
*/
|
||||
gd::String GenerateEventsListCode(gd::EventsList & events, const EventsCodeGenerationContext & context);
|
||||
virtual gd::String GenerateEventsListCode(gd::EventsList & events, const EventsCodeGenerationContext & context);
|
||||
|
||||
/**
|
||||
* \brief Generate code for executing a condition list
|
||||
@@ -443,6 +443,7 @@ protected:
|
||||
gd::String GenerateRelationalOperatorCall(const gd::InstructionMetadata & instrInfos, const std::vector<gd::String> & arguments, const gd::String & callStartString, std::size_t startFromArgument = 0);
|
||||
gd::String GenerateOperatorCall(const gd::InstructionMetadata & instrInfos, const std::vector<gd::String> & arguments, const gd::String & callStartString, const gd::String & getterStartString, std::size_t startFromArgument = 0);
|
||||
gd::String GenerateCompoundOperatorCall(const gd::InstructionMetadata & instrInfos, const std::vector<gd::String> & arguments, const gd::String & callStartString, std::size_t startFromArgument = 0);
|
||||
gd::String GenerateMutatorCall(const gd::InstructionMetadata & instrInfos, const std::vector<gd::String> & arguments, const gd::String & callStartString, std::size_t startFromArgument = 0);
|
||||
|
||||
/**
|
||||
* \brief Must return an expression whose value is true.
|
||||
@@ -454,6 +455,13 @@ protected:
|
||||
*/
|
||||
gd::String GenerateFalse() const { return "false"; };
|
||||
|
||||
/**
|
||||
* \brief Generate the list of comma-separated arguments to be used to call a function.
|
||||
* \param arguments The code already generated for the arguments
|
||||
* \param startFrom Index of the first argument, the previous will be ignored.
|
||||
*/
|
||||
virtual gd::String GenerateArgumentsList(const std::vector<gd::String> & arguments, size_t startFrom = 0);
|
||||
|
||||
gd::Project & project; ///< The project being used.
|
||||
const gd::Layout & scene; ///< The scene being generated.
|
||||
const gd::Platform & platform; ///< The platform being used.
|
||||
|
@@ -169,8 +169,8 @@ bool CallbacksForGeneratingExpressionCode::OnSubMathExpression(const gd::Platfor
|
||||
if ( !parser.ParseMathExpression(platform, project, layout, callbacks) )
|
||||
{
|
||||
#if defined(GD_IDE_ONLY)
|
||||
firstErrorStr = callbacks.firstErrorStr;
|
||||
firstErrorPos = callbacks.firstErrorPos;
|
||||
firstErrorStr = callbacks.GetFirstError();
|
||||
firstErrorPos = callbacks.GetFirstErrorPosition();
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
@@ -188,8 +188,8 @@ bool CallbacksForGeneratingExpressionCode::OnSubTextExpression(const gd::Platfor
|
||||
if ( !parser.ParseStringExpression(platform, project, layout, callbacks) )
|
||||
{
|
||||
#if defined(GD_IDE_ONLY)
|
||||
firstErrorStr = callbacks.firstErrorStr;
|
||||
firstErrorPos = callbacks.firstErrorPos;
|
||||
firstErrorStr = callbacks.GetFirstError();
|
||||
firstErrorPos = callbacks.GetFirstErrorPosition();
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
@@ -14,6 +14,8 @@ namespace gd
|
||||
{
|
||||
|
||||
EventsList BaseEvent::badSubEvents;
|
||||
std::vector< gd::String > BaseEvent::emptyDependencies;
|
||||
gd::String BaseEvent::emptySourceFile;
|
||||
|
||||
BaseEvent::BaseEvent() :
|
||||
eventHeightNeedUpdate(true),
|
||||
|
@@ -111,6 +111,19 @@ public:
|
||||
virtual std::vector < gd::Expression* > GetAllExpressions() { std::vector < gd::Expression* > noExpr; return noExpr;};
|
||||
virtual std::vector < const gd::Expression* > GetAllExpressions() const { std::vector < const gd::Expression* > noExpr; return noExpr;};
|
||||
|
||||
/**
|
||||
* \brief Returns the dependencies on source files of the project.
|
||||
* \note Default implementation returns an empty list of dependencies. This is fine for most events that
|
||||
* are not related to adding custom user source code.
|
||||
*/
|
||||
virtual const std::vector<gd::String> & GetSourceFileDependencies() const { return emptyDependencies; };
|
||||
|
||||
/**
|
||||
* \brief Returns the name of the source file associated with the event
|
||||
* \note Default implementation returns an empty string. This is fine for most events that
|
||||
* are not related to adding custom user source code.
|
||||
*/
|
||||
virtual const gd::String & GetAssociatedGDManagedSourceFile(gd::Project & project) const { return emptySourceFile; };
|
||||
///@}
|
||||
|
||||
/** \name Code generation
|
||||
@@ -263,11 +276,13 @@ protected:
|
||||
mutable unsigned int renderedHeight;
|
||||
|
||||
private:
|
||||
bool folded; ///< True if the subevents should be hidden in the events editor
|
||||
bool folded; ///< True if the subevents should be hidden in the events editor
|
||||
bool disabled; ///<True if the event is disabled and must not be executed
|
||||
gd::String type; ///<Type of the event. Must be assigned at the creation. Used for saving the event for instance.
|
||||
|
||||
static gd::EventsList badSubEvents;
|
||||
static std::vector< gd::String > emptyDependencies;
|
||||
static gd::String emptySourceFile;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -58,7 +58,7 @@ gd::BaseEvent & EventsList::InsertNewEvent(gd::Project & project, const gd::Stri
|
||||
if ( event == std::shared_ptr<gd::BaseEvent>())
|
||||
{
|
||||
std::cout << "Unknown event of type " << eventType;
|
||||
event = std::shared_ptr<gd::BaseEvent>(new EmptyEvent);
|
||||
event = std::make_shared<EmptyEvent>();
|
||||
}
|
||||
|
||||
InsertEvent(event, position);
|
||||
|
@@ -150,13 +150,13 @@ public:
|
||||
*/
|
||||
///@{
|
||||
/**
|
||||
* \brief Save the objects to xml
|
||||
* \brief Serialize the events to the specified element
|
||||
* \see EventsListSerialization
|
||||
*/
|
||||
void SerializeTo(SerializerElement & element) const;
|
||||
|
||||
/**
|
||||
* \brief Load the objects from xml
|
||||
* \brief Load the events from the specified element
|
||||
* \see EventsListSerialization
|
||||
*/
|
||||
void UnserializeFrom(gd::Project & project, const SerializerElement & element);
|
||||
@@ -167,7 +167,7 @@ private:
|
||||
|
||||
/**
|
||||
* Initialize from another list of events, copying events. Used by copy-ctor and assign-op.
|
||||
* Don't forget to update me if members were changed !
|
||||
* Don't forget to update me if members were changed!
|
||||
*/
|
||||
void Init(const gd::EventsList & other);
|
||||
};
|
||||
|
@@ -8,17 +8,12 @@
|
||||
#include "GDCore/String.h"
|
||||
#include <vector>
|
||||
#include "GDCore/Events/Expression.h"
|
||||
#include "GDCore/Tools/SPtrList.h"
|
||||
#include "GDCore/Events/InstructionsList.h"
|
||||
#include "GDCore/String.h"
|
||||
|
||||
namespace gd
|
||||
{
|
||||
|
||||
class Instruction;
|
||||
|
||||
template<typename T> class SPtrList;
|
||||
typedef SPtrList<Instruction> InstructionsList;
|
||||
|
||||
/**
|
||||
* \brief An instruction is a member of an event: It can be a condition or an action.
|
||||
*
|
||||
|
42
Core/GDCore/Events/InstructionsList.cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* GDevelop Core
|
||||
* Copyright 2008-2016 Florian Rival (Florian.Rival@gmail.com). All rights reserved.
|
||||
* This project is released under the MIT License.
|
||||
*/
|
||||
|
||||
#include "InstructionsList.h"
|
||||
#include "GDCore/Project/Project.h"
|
||||
#include "GDCore/Events/Instruction.h"
|
||||
#include "Serialization.h"
|
||||
|
||||
namespace gd
|
||||
{
|
||||
|
||||
void InstructionsList::InsertInstructions(const InstructionsList & list, size_t begin, size_t end, size_t position)
|
||||
{
|
||||
if (begin >= list.size()) return;
|
||||
if (end < begin) return;
|
||||
if (end >= list.size()) end = list.size()-1;
|
||||
|
||||
for (std::size_t insertPos = 0;insertPos <= (end-begin);insertPos++)
|
||||
{
|
||||
const Instruction & instruction = *list.elements[begin+insertPos];
|
||||
std::shared_ptr<Instruction> copiedInstruction = std::make_shared<Instruction>(instruction);
|
||||
if (position != (size_t)-1 && position+insertPos < elements.size())
|
||||
elements.insert(elements.begin()+position+insertPos, copiedInstruction);
|
||||
else
|
||||
elements.push_back(copiedInstruction);
|
||||
}
|
||||
}
|
||||
|
||||
void InstructionsList::SerializeTo(SerializerElement & element) const
|
||||
{
|
||||
EventsListSerialization::SerializeInstructionsTo(*this, element);
|
||||
}
|
||||
|
||||
void InstructionsList::UnserializeFrom(gd::Project & project, const SerializerElement & element)
|
||||
{
|
||||
EventsListSerialization::UnserializeInstructionsFrom(project, *this, element);
|
||||
}
|
||||
|
||||
}
|
@@ -6,17 +6,37 @@
|
||||
|
||||
#ifndef GDCORE_INSTRUCTIONSLIST_H
|
||||
#define GDCORE_INSTRUCTIONSLIST_H
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include "GDCore/Events/Instruction.h"
|
||||
#include "GDCore/Tools/SPtrList.h"
|
||||
namespace gd { class Instruction; }
|
||||
namespace gd { class Project; }
|
||||
namespace gd { class SerializerElement; }
|
||||
|
||||
namespace gd
|
||||
{
|
||||
|
||||
typedef SPtrList<gd::Instruction> InstructionsList;
|
||||
class InstructionsList : public SPtrList<gd::Instruction> {
|
||||
public:
|
||||
|
||||
void InsertInstructions(const InstructionsList & list, size_t begin, size_t end, size_t position = (size_t)-1);
|
||||
|
||||
/** \name Serialization
|
||||
*/
|
||||
///@{
|
||||
/**
|
||||
* \brief Serialize the instructions to the specified element
|
||||
* \see EventsListSerialization
|
||||
*/
|
||||
void SerializeTo(gd::SerializerElement & element) const;
|
||||
|
||||
/**
|
||||
* \brief Load the instructions from the specified element
|
||||
* \see EventsListSerialization
|
||||
*/
|
||||
void UnserializeFrom(gd::Project & project, const gd::SerializerElement & element);
|
||||
///@}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
@@ -46,7 +46,7 @@ size_t ExpressionParser::GetMaximalParametersNumber(const std::vector < gd::Para
|
||||
}
|
||||
|
||||
/**
|
||||
* Add blank parameters when code-only parameters are excepted.
|
||||
* Add blank parameters when code-only parameters are expected.
|
||||
* \param Parameters information
|
||||
* \param vector of parameters without code only parameters.
|
||||
*/
|
||||
@@ -100,7 +100,7 @@ bool ExpressionParser::ValidSyntax(const gd::String & str)
|
||||
{
|
||||
if ( requestNumber )
|
||||
{
|
||||
firstErrorStr = _("Number excepted");
|
||||
firstErrorStr = _("Number expected");
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -165,7 +165,7 @@ bool ExpressionParser::ValidSyntax(const gd::String & str)
|
||||
{
|
||||
if ( requestNumber )
|
||||
{
|
||||
firstErrorStr = _("Number excepted");
|
||||
firstErrorStr = _("Number expected");
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -206,7 +206,7 @@ bool ExpressionParser::ValidSyntax(const gd::String & str)
|
||||
{
|
||||
if ( requestNumber )
|
||||
{
|
||||
firstErrorStr = _("Number excepted");
|
||||
firstErrorStr = _("Number expected");
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -241,7 +241,7 @@ bool ExpressionParser::ValidSyntax(const gd::String & str)
|
||||
{
|
||||
if ( requestNumber )
|
||||
{
|
||||
firstErrorStr = _("Number excepted");
|
||||
firstErrorStr = _("Number expected");
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -283,7 +283,7 @@ bool ExpressionParser::ValidSyntax(const gd::String & str)
|
||||
}
|
||||
else if ( requestNumber )
|
||||
{
|
||||
firstErrorStr = _("Number excepted");
|
||||
firstErrorStr = _("Number expected");
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -452,7 +452,7 @@ bool ExpressionParser::ParseMathExpression(const gd::Platform & platform, const
|
||||
firstErrorPos = functionNameEnd;
|
||||
firstErrorStr = _("Incorrect number of parameters");
|
||||
firstErrorStr += " ";
|
||||
firstErrorStr += _("Excepted ( maximum ) :");
|
||||
firstErrorStr += _("Expected (maximum) :");
|
||||
firstErrorStr += gd::String::From(GetMaximalParametersNumber(instructionInfos.parameters));
|
||||
|
||||
return false;
|
||||
|
@@ -31,21 +31,31 @@ public:
|
||||
virtual ~ExpressionParser() {};
|
||||
|
||||
/**
|
||||
* Parse the expression, calling each functor when necessary
|
||||
* \brief Parse the expression, calling each functor when necessary
|
||||
* \return True if expression was correctly parsed.
|
||||
*/
|
||||
bool ParseMathExpression(const gd::Platform & platform, const gd::Project & project, const gd::Layout & layout, gd::ParserCallbacks & callbacks);
|
||||
|
||||
/**
|
||||
* Parse the expression, calling each functor when necessary
|
||||
* \brief Parse the expression, calling each functor when necessary
|
||||
* \return True if expression was correctly parsed.
|
||||
*/
|
||||
bool ParseStringExpression(const gd::Platform & platform, const gd::Project & project, const gd::Layout & layout, gd::ParserCallbacks & callbacks);
|
||||
|
||||
gd::String firstErrorStr;
|
||||
size_t firstErrorPos;
|
||||
/**
|
||||
* \brief Return the description of the error that was found
|
||||
*/
|
||||
const gd::String & GetFirstError() { return firstErrorStr; }
|
||||
|
||||
/**
|
||||
* \brief Return the position of the error that was found
|
||||
* \return The position, or gd::String::npos if no error is found
|
||||
*/
|
||||
size_t GetFirstErrorPosition() { return firstErrorPos; }
|
||||
|
||||
private:
|
||||
gd::String firstErrorStr;
|
||||
size_t firstErrorPos;
|
||||
|
||||
/**
|
||||
* Tool function to add a parameter
|
||||
@@ -103,8 +113,21 @@ public:
|
||||
virtual bool OnSubMathExpression(const gd::Platform & platform, const gd::Project & project, const gd::Layout & layout, gd::Expression & expression) = 0;
|
||||
virtual bool OnSubTextExpression(const gd::Platform & platform, const gd::Project & project, const gd::Layout & layout, gd::Expression & expression) = 0;
|
||||
|
||||
/**
|
||||
* \brief Return the description of the error that was found
|
||||
*/
|
||||
const gd::String & GetFirstError() { return firstErrorStr; }
|
||||
|
||||
/**
|
||||
* \brief Return the position of the error that was found
|
||||
* \return The position, or gd::String::npos if no error is found
|
||||
*/
|
||||
size_t GetFirstErrorPosition() { return firstErrorPos; }
|
||||
|
||||
protected:
|
||||
gd::String firstErrorStr;
|
||||
size_t firstErrorPos;
|
||||
|
||||
private:
|
||||
/**
|
||||
* \brief Set the return type of the expression: Done by ExpressionParser according to
|
||||
|
@@ -30,7 +30,7 @@ namespace gd
|
||||
|
||||
gd::VariableParser parser(parameter);
|
||||
if ( !parser.Parse(callbacks) )
|
||||
cout << "Error :" << parser.firstErrorStr << " in: "<< parameter << endl;
|
||||
cout << "Error :" << parser.GetFirstError() << " in: "<< parameter << endl;
|
||||
\endcode
|
||||
*
|
||||
* Here is the parsed grammar: <br>
|
||||
@@ -61,6 +61,17 @@ public:
|
||||
*/
|
||||
bool Parse(VariableParserCallbacks & callbacks);
|
||||
|
||||
/**
|
||||
* \brief Return the description of the error that was found
|
||||
*/
|
||||
const gd::String & GetFirstError() { return firstErrorStr; }
|
||||
|
||||
/**
|
||||
* \brief Return the position of the error that was found
|
||||
* \return The position, or gd::String::npos if no error is found
|
||||
*/
|
||||
size_t GetFirstErrorPosition() { return firstErrorPos; }
|
||||
|
||||
gd::String firstErrorStr;
|
||||
size_t firstErrorPos;
|
||||
|
||||
|
@@ -6,6 +6,7 @@
|
||||
#include "GDCore/Project/Project.h"
|
||||
#include "GDCore/Extensions/Platform.h"
|
||||
#include "GDCore/Extensions/Metadata/InstructionMetadata.h"
|
||||
#include "GDCore/Events/InstructionsList.h"
|
||||
#include "GDCore/Events/EventsList.h"
|
||||
#include "GDCore/Events/Event.h"
|
||||
#include "GDCore/Events/Serialization.h"
|
||||
@@ -21,7 +22,7 @@ using namespace std;
|
||||
namespace gd
|
||||
{
|
||||
|
||||
void EventsListSerialization::UpdateInstructionsFromGD31x(gd::Project & project, gd::InstructionsList & list, bool instructionsAreActions)
|
||||
void EventsListSerialization::UpdateInstructionsFromGD31x(gd::Project & project, gd::InstructionsList & list)
|
||||
{
|
||||
for (std::size_t i = 0;i<list.size();++i)
|
||||
{
|
||||
@@ -47,8 +48,6 @@ void EventsListSerialization::UpdateInstructionsFromGD31x(gd::Project & project,
|
||||
{
|
||||
instr.SetParameter(1, gd::Expression("\""+instr.GetParameter(1).GetPlainString()+"\""));
|
||||
}
|
||||
|
||||
//UpdateInstructionsFromGD31x(project, instr.GetSubInstructions(), instructionsAreActions);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,6 +160,7 @@ void EventsListSerialization::UpdateInstructionsFromGD2x(gd::Project & project,
|
||||
|
||||
void EventsListSerialization::UnserializeEventsFrom(gd::Project & project, EventsList & list, const SerializerElement & events)
|
||||
{
|
||||
list.Clear();
|
||||
events.ConsiderAsArrayOf("event", "Event");
|
||||
for(std::size_t i = 0; i<events.GetChildrenCount(); ++i)
|
||||
{
|
||||
@@ -172,7 +172,7 @@ void EventsListSerialization::UnserializeEventsFrom(gd::Project & project, Event
|
||||
else
|
||||
{
|
||||
std::cout << "WARNING: Unknown event of type " << type << std::endl;
|
||||
event = std::shared_ptr<gd::BaseEvent>(new EmptyEvent);
|
||||
event = std::make_shared<EmptyEvent>();
|
||||
}
|
||||
|
||||
event->SetDisabled(eventElem.GetBoolAttribute("disabled"));
|
||||
@@ -200,79 +200,39 @@ void EventsListSerialization::SerializeEventsTo(const EventsList & list, Seriali
|
||||
|
||||
using namespace std;
|
||||
|
||||
void gd::EventsListSerialization::OpenConditions(gd::Project & project, gd::InstructionsList & conditions, const SerializerElement & elem)
|
||||
void gd::EventsListSerialization::UnserializeInstructionsFrom(gd::Project & project, gd::InstructionsList & instructions, const SerializerElement & elem)
|
||||
{
|
||||
elem.ConsiderAsArrayOf("condition", "Condition");
|
||||
elem.ConsiderAsArrayOf("instruction");
|
||||
//Compatibility with GD <= 4.0.95
|
||||
if (elem.HasChild("condition", "Condition"))
|
||||
elem.ConsiderAsArrayOf("condition", "Condition");
|
||||
else if (elem.HasChild("action", "Action"))
|
||||
elem.ConsiderAsArrayOf("action", "Action");
|
||||
//end of compatibility code
|
||||
|
||||
for(std::size_t i = 0; i<elem.GetChildrenCount(); ++i)
|
||||
{
|
||||
gd::Instruction instruction;
|
||||
const SerializerElement & conditionElem = elem.GetChild(i);
|
||||
const SerializerElement & instrElement = elem.GetChild(i);
|
||||
|
||||
instruction.SetType(conditionElem.GetChild("type", 0, "Type").GetStringAttribute("value")
|
||||
.FindAndReplace("Automatism", "Behavior")); //Compatibility with GD <= 4
|
||||
instruction.SetInverted(conditionElem.GetChild("type", 0, "Type").GetBoolAttribute("inverted", false, "Contraire"));
|
||||
|
||||
//Read parameters
|
||||
vector < gd::Expression > parameters;
|
||||
|
||||
//Compatibility with GD <= 3.3
|
||||
if (conditionElem.HasChild("Parametre")) {
|
||||
|
||||
for (std::size_t j = 0;j<conditionElem.GetChildrenCount("Parametre");++j)
|
||||
parameters.push_back(gd::Expression(conditionElem.GetChild("Parametre", j).GetValue().GetString()));
|
||||
|
||||
}
|
||||
//end of compatibility code
|
||||
else
|
||||
{
|
||||
const SerializerElement & parametersElem = conditionElem.GetChild("parameters");
|
||||
parametersElem.ConsiderAsArrayOf("parameter");
|
||||
for (std::size_t j = 0;j<parametersElem.GetChildrenCount();++j)
|
||||
parameters.push_back(gd::Expression(parametersElem.GetChild(j).GetValue().GetString()));
|
||||
}
|
||||
|
||||
instruction.SetParameters( parameters );
|
||||
|
||||
//Read sub conditions
|
||||
if ( conditionElem.HasChild("subConditions", "SubConditions") )
|
||||
OpenConditions(project, instruction.GetSubInstructions(), conditionElem.GetChild("subConditions", 0, "SubConditions" ));
|
||||
|
||||
conditions.Insert( instruction );
|
||||
}
|
||||
|
||||
if ( project.GetLastSaveGDMajorVersion() < 3 ||
|
||||
(project.GetLastSaveGDMajorVersion() == 3 && project.GetLastSaveGDMinorVersion() <= 1 ) )
|
||||
UpdateInstructionsFromGD31x(project, conditions, false);
|
||||
|
||||
if ( project.GetLastSaveGDMajorVersion() < 3 )
|
||||
UpdateInstructionsFromGD2x(project, conditions, false);
|
||||
}
|
||||
|
||||
void gd::EventsListSerialization::OpenActions(gd::Project & project, gd::InstructionsList & actions, const SerializerElement & elem)
|
||||
{
|
||||
elem.ConsiderAsArrayOf("action", "Action");
|
||||
for(std::size_t i = 0; i<elem.GetChildrenCount(); ++i)
|
||||
{
|
||||
gd::Instruction instruction;
|
||||
const SerializerElement & actionElem = elem.GetChild(i);
|
||||
|
||||
instruction.SetType(actionElem.GetChild("type", 0, "Type").GetStringAttribute("value")
|
||||
instruction.SetType(instrElement.GetChild("type", 0, "Type").GetStringAttribute("value")
|
||||
.FindAndReplace("Automatism", "Behavior")); //Compatibility with GD <= 4
|
||||
instruction.SetInverted(instrElement.GetChild("type", 0, "Type").GetBoolAttribute("inverted", false, "Contraire"));
|
||||
|
||||
//Read parameters
|
||||
vector < gd::Expression > parameters;
|
||||
|
||||
//Compatibility with GD <= 3.3
|
||||
if (actionElem.HasChild("Parametre")) {
|
||||
if (instrElement.HasChild("Parametre")) {
|
||||
|
||||
for (std::size_t j = 0;j<actionElem.GetChildrenCount("Parametre");++j)
|
||||
parameters.push_back(gd::Expression(actionElem.GetChild("Parametre", j).GetValue().GetString()));
|
||||
for (std::size_t j = 0;j<instrElement.GetChildrenCount("Parametre");++j)
|
||||
parameters.push_back(gd::Expression(instrElement.GetChild("Parametre", j).GetValue().GetString()));
|
||||
|
||||
}
|
||||
//end of compatibility code
|
||||
else
|
||||
{
|
||||
const SerializerElement & parametersElem = actionElem.GetChild("parameters");
|
||||
const SerializerElement & parametersElem = instrElement.GetChild("parameters");
|
||||
parametersElem.ConsiderAsArrayOf("parameter");
|
||||
for (std::size_t j = 0;j<parametersElem.GetChildrenCount();++j)
|
||||
parameters.push_back(gd::Expression(parametersElem.GetChild(j).GetValue().GetString()));
|
||||
@@ -280,62 +240,48 @@ void gd::EventsListSerialization::OpenActions(gd::Project & project, gd::Instruc
|
||||
|
||||
instruction.SetParameters( parameters );
|
||||
|
||||
//Read sub actions
|
||||
if ( actionElem.HasChild("subActions", "SubActions") )
|
||||
OpenActions(project, instruction.GetSubInstructions(), actionElem.GetChild("subActions", 0, "SubActions" ));
|
||||
//Read sub instructions
|
||||
if ( instrElement.HasChild("subInstructions") )
|
||||
UnserializeInstructionsFrom(project, instruction.GetSubInstructions(), instrElement.GetChild("subInstructions"));
|
||||
//Compatibility with GD <= 4.0.95
|
||||
if ( instrElement.HasChild("subConditions", "SubConditions") )
|
||||
UnserializeInstructionsFrom(project, instruction.GetSubInstructions(), instrElement.GetChild("subConditions", 0, "SubConditions" ));
|
||||
if ( instrElement.HasChild("subActions", "SubActions") )
|
||||
UnserializeInstructionsFrom(project, instruction.GetSubInstructions(), instrElement.GetChild("subActions", 0, "SubActions" ));
|
||||
//end of compatibility code
|
||||
|
||||
actions.Insert( instruction );
|
||||
instructions.Insert( instruction );
|
||||
}
|
||||
|
||||
//Compatibility with GD <= 3.1
|
||||
if ( project.GetLastSaveGDMajorVersion() < 3 ||
|
||||
(project.GetLastSaveGDMajorVersion() == 3 && project.GetLastSaveGDMinorVersion() <= 1 ) )
|
||||
UpdateInstructionsFromGD31x(project, actions, true);
|
||||
UpdateInstructionsFromGD31x(project, instructions);
|
||||
|
||||
if ( project.GetLastSaveGDMajorVersion() < 3 )
|
||||
UpdateInstructionsFromGD2x(project, actions, true);
|
||||
UpdateInstructionsFromGD2x(project, instructions, elem.HasChild("action", "Action"));
|
||||
//end of compatibility code
|
||||
}
|
||||
|
||||
void gd::EventsListSerialization::SaveActions(const gd::InstructionsList & list, SerializerElement & actions)
|
||||
void gd::EventsListSerialization::SerializeInstructionsTo(const gd::InstructionsList & list, SerializerElement & instructions)
|
||||
{
|
||||
actions.ConsiderAsArrayOf("action");
|
||||
instructions.ConsiderAsArrayOf("instruction");
|
||||
for ( std::size_t k = 0;k < list.size();k++ )
|
||||
{
|
||||
SerializerElement & action = actions.AddChild("action");
|
||||
action.AddChild("type")
|
||||
SerializerElement & instruction = instructions.AddChild("instruction");
|
||||
instruction.AddChild("type")
|
||||
.SetAttribute("value", list[k].GetType())
|
||||
.SetAttribute("inverted", list[k].IsInverted());
|
||||
|
||||
//Parameters
|
||||
SerializerElement & parameters = action.AddChild("parameters");
|
||||
SerializerElement & parameters = instruction.AddChild("parameters");
|
||||
parameters.ConsiderAsArrayOf("parameter");
|
||||
for ( std::size_t l = 0;l < list[k].GetParameters().size();l++ )
|
||||
parameters.AddChild("parameter").SetValue(list[k].GetParameter(l).GetPlainString());
|
||||
|
||||
//Sub instructions
|
||||
SerializerElement & subActions = action.AddChild("subActions");
|
||||
SaveActions(list[k].GetSubInstructions(), subActions);
|
||||
}
|
||||
}
|
||||
|
||||
void gd::EventsListSerialization::SaveConditions(const gd::InstructionsList & list, SerializerElement & conditions)
|
||||
{
|
||||
conditions.ConsiderAsArrayOf("condition");
|
||||
for ( std::size_t k = 0;k < list.size();k++ )
|
||||
{
|
||||
SerializerElement & condition = conditions.AddChild("condition");
|
||||
condition.AddChild("type")
|
||||
.SetAttribute("value", list[k].GetType())
|
||||
.SetAttribute("inverted", list[k].IsInverted());
|
||||
|
||||
//Parameters
|
||||
SerializerElement & parameters = condition.AddChild("parameters");
|
||||
parameters.ConsiderAsArrayOf("parameter");
|
||||
for ( std::size_t l = 0;l < list[k].GetParameters().size();l++ )
|
||||
parameters.AddChild("parameter").SetValue(list[k].GetParameter(l).GetPlainString());
|
||||
|
||||
//Sub instructions
|
||||
SerializerElement & subConditions = condition.AddChild("subConditions");
|
||||
SaveConditions(list[k].GetSubInstructions(), subConditions);
|
||||
SerializerElement & subInstructions = instruction.AddChild("subInstructions");
|
||||
SerializeInstructionsTo(list[k].GetSubInstructions(), subInstructions);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -5,9 +5,9 @@
|
||||
*/
|
||||
#ifndef GDCORE_EVENTS_SERIALIZATION_H
|
||||
#define GDCORE_EVENTS_SERIALIZATION_H
|
||||
#include "GDCore/Events/Instruction.h"
|
||||
#include "GDCore/Serialization/Serializer.h"
|
||||
#include <vector>
|
||||
namespace gd { class InstructionsList; }
|
||||
namespace gd { class Project; }
|
||||
namespace gd { class EventsList; }
|
||||
|
||||
@@ -15,46 +15,37 @@ namespace gd
|
||||
{
|
||||
|
||||
/**
|
||||
* \brief Contains tools for loading and saving events to XML.
|
||||
* \brief Contains tools for loading and saving events to SerializerElement.
|
||||
*/
|
||||
class GD_CORE_API EventsListSerialization
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* \brief Load an events list from a TiXmlElement
|
||||
* \brief Load an events list from a SerializerElement
|
||||
* \param project The project the events belongs to.
|
||||
* \param list The event list in which the events must be loaded.
|
||||
* \param events The TiXmlElement containing the events
|
||||
* \param events The SerializerElement containing the events
|
||||
*/
|
||||
static void UnserializeEventsFrom(gd::Project & project, gd::EventsList & list, const SerializerElement & events);
|
||||
|
||||
/**
|
||||
* \brief Save an events list from a TiXmlElement
|
||||
* \brief Save an events list to a SerializerElement
|
||||
* \param list The event list to be saved.
|
||||
* \param events The TiXmlElement in which the events must be saved.
|
||||
* \param events The SerializerElement in which the events must be serialized.
|
||||
*/
|
||||
static void SerializeEventsTo(const gd::EventsList & list, SerializerElement & events);
|
||||
|
||||
/**
|
||||
* \brief Load a list of conditions from a TiXmlElement
|
||||
* \brief Unserialize a list of instructions
|
||||
*/
|
||||
static void OpenConditions(gd::Project & project, gd::InstructionsList & list, const SerializerElement & elem);
|
||||
static void UnserializeInstructionsFrom(gd::Project & project, gd::InstructionsList & list, const SerializerElement & elem);
|
||||
|
||||
/**
|
||||
* \brief Load a list of actions from a TiXmlElement
|
||||
* \brief Serialize a list of instructions
|
||||
*/
|
||||
static void OpenActions(gd::Project & project, gd::InstructionsList & list, const SerializerElement & elem);
|
||||
|
||||
/**
|
||||
* \brief Save a list of conditions to a TiXmlElement
|
||||
*/
|
||||
static void SaveConditions(const gd::InstructionsList & list, SerializerElement & elem);
|
||||
|
||||
/**
|
||||
* \brief Save a list of actions to a TiXmlElement
|
||||
*/
|
||||
static void SaveActions(const gd::InstructionsList & list, SerializerElement & elem);
|
||||
static void SerializeInstructionsTo(const gd::InstructionsList & list, SerializerElement & elem);
|
||||
|
||||
private:
|
||||
/**
|
||||
* \brief Internal method called when opening events created with GD2.x
|
||||
*
|
||||
@@ -67,7 +58,7 @@ public:
|
||||
*
|
||||
* Variables related and some storage instructions have been changed.
|
||||
*/
|
||||
static void UpdateInstructionsFromGD31x(gd::Project & project, gd::InstructionsList & list, bool instructionsAreActions);
|
||||
static void UpdateInstructionsFromGD31x(gd::Project & project, gd::InstructionsList & list);
|
||||
};
|
||||
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(gd::P
|
||||
#if defined(GD_IDE_ONLY)
|
||||
extension.AddCondition("Toujours",
|
||||
_("Always"),
|
||||
_("This condition returns always true (or always false if condition is inverted)."),
|
||||
_("This condition always returns true (or always false, if the condition is inverted)."),
|
||||
_("Always"),
|
||||
_("Other"),
|
||||
"res/conditions/toujours24.png",
|
||||
|
@@ -21,8 +21,8 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
#if defined(GD_IDE_ONLY)
|
||||
extension.AddAction("PlaySoundCanal",
|
||||
_("Play a sound on a channel"),
|
||||
_("Play a sound (small audio file) on a specific channel,\nso as to be able to manipulate it."),
|
||||
_("Play the sound _PARAM1_ on the channel _PARAM2_"),
|
||||
_("Play a sound (small audio file) on a specific channel,\nso you'll be able to manipulate it."),
|
||||
_("Play the sound _PARAM1_ on the channel _PARAM2_, vol.: _PARAM4_, loop: _PARAM3_"),
|
||||
_("Audio/Sounds on channels"),
|
||||
"res/actions/son24.png",
|
||||
"res/actions/son.png")
|
||||
@@ -68,10 +68,10 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
.MarkAsAdvanced();
|
||||
|
||||
extension.AddAction("PlayMusicCanal",
|
||||
_("Play a music on a channel"),
|
||||
_("Play a music an on specific channel,\nso as to be able to interact with later."),
|
||||
_("Play the music _PARAM1_ on channel _PARAM2_"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Play a music file on a channel"),
|
||||
_("Play a music file on a specific channel,\nso you'll be able to interact with it later."),
|
||||
_("Play the music _PARAM1_ on channel _PARAM2_, vol.: _PARAM4_, loop: _PARAM3_"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/actions/music24.png",
|
||||
"res/actions/music.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -86,7 +86,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
_("Stop the music on a channel"),
|
||||
_("Stop the music on the specified channel"),
|
||||
_("Stop the music of channel _PARAM1_"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/actions/music24.png",
|
||||
"res/actions/music.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -97,7 +97,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
_("Pause the music of a channel"),
|
||||
_("Pause the music on the specified channel."),
|
||||
_("Pause the music of channel _PARAM1_"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/actions/music24.png",
|
||||
"res/actions/music.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -108,7 +108,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
_("Play the music of a channel"),
|
||||
_("Play the music of the channel."),
|
||||
_("Play the music of channel _PARAM1_"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/actions/music24.png",
|
||||
"res/actions/music.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -117,7 +117,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
|
||||
extension.AddAction("ModVolumeSoundCanal",
|
||||
_("Volume of the sound on a channel"),
|
||||
_("This action modify the volume of the sound on the specified channel. The volume is between 0 and 100."),
|
||||
_("This action modifies the volume of the sound on the specified channel. The volume is between 0 and 100."),
|
||||
_("Do _PARAM2__PARAM3_ to the volume of the sound on channel _PARAM1_"),
|
||||
_("Audio/Sounds on channels"),
|
||||
"res/actions/sonVolume24.png",
|
||||
@@ -131,9 +131,9 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
|
||||
extension.AddAction("ModVolumeMusicCanal",
|
||||
_("Volume of the music on a channel"),
|
||||
_("This action modify the volume of the music on the specified channel. The volume is between 0 and 100."),
|
||||
_("This action modifies the volume of the music on the specified channel. The volume is between 0 and 100."),
|
||||
_("Do _PARAM2__PARAM3_ to the volume of the music on channel _PARAM1_"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/actions/musicVolume24.png",
|
||||
"res/actions/musicVolume.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -145,7 +145,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
|
||||
extension.AddAction("ModGlobalVolume",
|
||||
_("Game global volume"),
|
||||
_("This action modify the global volume of the game. The volume is between 0 and 100."),
|
||||
_("This action modifies the global volume of the game. The volume is between 0 and 100."),
|
||||
_("Do _PARAM1__PARAM2_ to global sound level"),
|
||||
_("Audio"),
|
||||
"res/actions/volume24.png",
|
||||
@@ -158,7 +158,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
|
||||
extension.AddAction("ModPitchSoundChannel",
|
||||
_("Pitch of the sound of a channel"),
|
||||
_("This action modify pitch (speed) of the sound on a channel.\n1 is the default pitch."),
|
||||
_("This action modifies the pitch (speed) of the sound on a channel.\n1 is the default pitch."),
|
||||
_("Do _PARAM2__PARAM3_ to the pitch of the sound on channel _PARAM1_"),
|
||||
_("Audio/Sounds on channels"),
|
||||
"res/actions/son24.png",
|
||||
@@ -172,9 +172,9 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
|
||||
extension.AddAction("ModPitchMusicChannel",
|
||||
_("Pitch of the music on a channel"),
|
||||
_("This action modify the pitch of the music on the specified channel. 1 is the default pitch"),
|
||||
_("This action modifies the pitch of the music on the specified channel. 1 is the default pitch"),
|
||||
_("Do _PARAM2__PARAM3_ to the pitch of the music on channel _PARAM1_"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/actions/music24.png",
|
||||
"res/actions/music.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -186,7 +186,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
|
||||
extension.AddAction("ModPlayingOffsetSoundChannel",
|
||||
_("Playing offset of the sound on a channel"),
|
||||
_("This action modify the playing offset of the sound on a channel"),
|
||||
_("This action modifies the playing offset of the sound on a channel"),
|
||||
_("Do _PARAM2__PARAM3_ to the playing offset of the sound on channel _PARAM1_"),
|
||||
_("Audio/Sounds on channels"),
|
||||
"res/actions/son24.png",
|
||||
@@ -200,9 +200,9 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
|
||||
extension.AddAction("ModPlayingOffsetMusicChannel",
|
||||
_("Playing offset of the music on a channel"),
|
||||
_("This action modify the playing offset of the music on the specified channel"),
|
||||
_("This action modifies the playing offset of the music on the specified channel"),
|
||||
_("Do _PARAM2__PARAM3_ to the playing offset of the music on channel _PARAM1_"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/actions/music24.png",
|
||||
"res/actions/music.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -215,7 +215,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
extension.AddAction("PlaySound",
|
||||
_("Play a sound"),
|
||||
_("Play a sound."),
|
||||
_("Play the sound _PARAM1_"),
|
||||
_("Play the sound _PARAM1_, vol.: _PARAM3_, loop: _PARAM2_)"),
|
||||
_("Audio"),
|
||||
"res/actions/son24.png",
|
||||
"res/actions/son.png")
|
||||
@@ -227,9 +227,9 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
.MarkAsSimple();
|
||||
|
||||
extension.AddAction("PlayMusic",
|
||||
_("Play a music"),
|
||||
_("Play a music."),
|
||||
_("Play the music _PARAM1_"),
|
||||
_("Play a music file"),
|
||||
_("Play a music file."),
|
||||
_("Play the music _PARAM1_, vol.: _PARAM3_, loop: _PARAM2_)"),
|
||||
_("Audio"),
|
||||
"res/actions/music24.png",
|
||||
"res/actions/music.png")
|
||||
@@ -241,10 +241,10 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
.MarkAsSimple();
|
||||
|
||||
extension.AddCondition("MusicPlaying",
|
||||
_("A music is being played"),
|
||||
_("A music file is being played"),
|
||||
_("Test if the music on a channel is being played"),
|
||||
_("Music on channel _PARAM1_ is being played"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/conditions/musicplaying24.png",
|
||||
"res/conditions/musicplaying.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -252,10 +252,10 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
.MarkAsAdvanced();
|
||||
|
||||
extension.AddCondition("MusicPaused",
|
||||
_("A music is paused"),
|
||||
_("A music file is paused"),
|
||||
_("Test if the music on the specified channel is paused."),
|
||||
_("Music on channel _PARAM1_ is paused"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/conditions/musicpaused24.png",
|
||||
"res/conditions/musicpaused.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -263,10 +263,10 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
.MarkAsAdvanced();
|
||||
|
||||
extension.AddCondition("MusicStopped",
|
||||
_("A music is stopped"),
|
||||
_("A music file is stopped"),
|
||||
_("Test if the music on the specified channel is stopped."),
|
||||
_("Music on channel _PARAM1_ is stopped"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/conditions/musicstopped24.png",
|
||||
"res/conditions/musicstopped.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -322,9 +322,9 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
|
||||
extension.AddCondition("MusicCanalVolume",
|
||||
_("Volume of the music on a channel"),
|
||||
_("Test the volume of the music on specified channel. The volume is between 0 and 100."),
|
||||
_("Test the volume of the music on a specified channel. The volume is between 0 and 100."),
|
||||
_("The volume of the music on channel _PARAM1_ is _PARAM2__PARAM3_"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/conditions/musicVolume24.png",
|
||||
"res/conditions/musicVolume.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -337,7 +337,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
extension.AddCondition("GlobalVolume",
|
||||
_("Global volume"),
|
||||
_("Test the global sound level. The volume is between 0 and 100."),
|
||||
_("The global game volume is _PARAM2_ to _PARAM1_"),
|
||||
_("The global game volume is _PARAM1__PARAM2_"),
|
||||
_("Audio"),
|
||||
"res/conditions/volume24.png",
|
||||
"res/conditions/volume.png")
|
||||
@@ -362,9 +362,9 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
|
||||
extension.AddCondition("MusicChannelPitch",
|
||||
_("Pitch of the music on a channel"),
|
||||
_("Test the pitch (speed) of the music on specified channel. 1 is the default pitch."),
|
||||
_("The volume of the music on channel _PARAM1_ is _PARAM2__PARAM3_"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Test the pitch (speed) of the music on a specified channel. 1 is the default pitch."),
|
||||
_("The pitch of the music on channel _PARAM1_ is _PARAM2__PARAM3_"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/conditions/musicVolume24.png",
|
||||
"res/conditions/musicVolume.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -392,7 +392,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
_("Playing offset of the music on a channel"),
|
||||
_("Test the playing offset of the music on the specified channel."),
|
||||
_("The playing offset of the music on channel _PARAM1_ is _PARAM2__PARAM3_"),
|
||||
_("Audio/Musics on channels"),
|
||||
_("Audio/Music on channels"),
|
||||
"res/conditions/musicVolume24.png",
|
||||
"res/conditions/musicVolume.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
@@ -406,7 +406,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
.AddParameter("expression", _("Channel"));
|
||||
|
||||
extension.AddExpression("MusicChannelPlayingOffset", _("Music playing offset"), _("Music playing offset"), _("Musics"), "res/actions/music.png")
|
||||
extension.AddExpression("MusicChannelPlayingOffset", _("Music playing offset"), _("Music playing offset"), _("Music"), "res/actions/music.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
.AddParameter("expression", _("Channel"));
|
||||
|
||||
@@ -414,7 +414,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
.AddParameter("expression", _("Channel"));
|
||||
|
||||
extension.AddExpression("MusicChannelVolume", _("Music volume"), _("Music volume"), _("Musics"), "res/actions/music.png")
|
||||
extension.AddExpression("MusicChannelVolume", _("Music volume"), _("Music volume"), _("Music"), "res/actions/music.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
.AddParameter("expression", _("Channel"));
|
||||
|
||||
@@ -422,7 +422,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAudioExtension(gd::Plat
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
.AddParameter("expression", _("Channel"));
|
||||
|
||||
extension.AddExpression("MusicChannelPitch", _("Music's pitch"), _("Music's pitch"), _("Musics"), "res/actions/music.png")
|
||||
extension.AddExpression("MusicChannelPitch", _("Music's pitch"), _("Music's pitch"), _("Music"), "res/actions/music.png")
|
||||
.AddCodeOnlyParameter("currentScene", "")
|
||||
.AddParameter("expression", _("Channel"));
|
||||
|
||||
|