diff --git a/data/cubemaps/Areskutan/negx.jpg b/data/cubemaps/Areskutan/negx.jpg deleted file mode 100644 index de6b047..0000000 Binary files a/data/cubemaps/Areskutan/negx.jpg and /dev/null differ diff --git a/data/cubemaps/Areskutan/negy.jpg b/data/cubemaps/Areskutan/negy.jpg deleted file mode 100644 index 2e2c49c..0000000 Binary files a/data/cubemaps/Areskutan/negy.jpg and /dev/null differ diff --git a/data/cubemaps/Areskutan/negz.jpg b/data/cubemaps/Areskutan/negz.jpg deleted file mode 100644 index 1644aab..0000000 Binary files a/data/cubemaps/Areskutan/negz.jpg and /dev/null differ diff --git a/data/cubemaps/Areskutan/posx.jpg b/data/cubemaps/Areskutan/posx.jpg deleted file mode 100644 index 96722d8..0000000 Binary files a/data/cubemaps/Areskutan/posx.jpg and /dev/null differ diff --git a/data/cubemaps/Areskutan/posy.jpg b/data/cubemaps/Areskutan/posy.jpg deleted file mode 100644 index 6c6c325..0000000 Binary files a/data/cubemaps/Areskutan/posy.jpg and /dev/null differ diff --git a/data/cubemaps/Areskutan/posz.jpg b/data/cubemaps/Areskutan/posz.jpg deleted file mode 100644 index 3bced1b..0000000 Binary files a/data/cubemaps/Areskutan/posz.jpg and /dev/null differ diff --git a/data/cubemaps/Areskutan/readme.txt b/data/cubemaps/Areskutan/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/Areskutan/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/data/cubemaps/Citadella/negx.jpg b/data/cubemaps/Citadella/negx.jpg deleted file mode 100644 index 23833d7..0000000 Binary files a/data/cubemaps/Citadella/negx.jpg and /dev/null differ diff --git a/data/cubemaps/Citadella/negy.jpg b/data/cubemaps/Citadella/negy.jpg deleted file mode 100644 index 2fb87f6..0000000 Binary files a/data/cubemaps/Citadella/negy.jpg and /dev/null differ diff --git a/data/cubemaps/Citadella/negz.jpg b/data/cubemaps/Citadella/negz.jpg deleted file mode 100644 index 3f41898..0000000 Binary files a/data/cubemaps/Citadella/negz.jpg and /dev/null differ diff --git a/data/cubemaps/Citadella/posx.jpg b/data/cubemaps/Citadella/posx.jpg deleted file mode 100644 index dd97e09..0000000 Binary files a/data/cubemaps/Citadella/posx.jpg and /dev/null differ diff --git a/data/cubemaps/Citadella/posy.jpg b/data/cubemaps/Citadella/posy.jpg deleted file mode 100644 index 3cb483f..0000000 Binary files a/data/cubemaps/Citadella/posy.jpg and /dev/null differ diff --git a/data/cubemaps/Citadella/posz.jpg b/data/cubemaps/Citadella/posz.jpg deleted file mode 100644 index 4ac5a49..0000000 Binary files a/data/cubemaps/Citadella/posz.jpg and /dev/null differ diff --git a/data/cubemaps/Citadella/readme.txt b/data/cubemaps/Citadella/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/Citadella/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/data/cubemaps/Fjaderholmarna/negx.jpg b/data/cubemaps/Fjaderholmarna/negx.jpg deleted file mode 100644 index c281415..0000000 Binary files a/data/cubemaps/Fjaderholmarna/negx.jpg and /dev/null differ diff --git a/data/cubemaps/Fjaderholmarna/negy.jpg b/data/cubemaps/Fjaderholmarna/negy.jpg deleted file mode 100644 index d7a5767..0000000 Binary files a/data/cubemaps/Fjaderholmarna/negy.jpg and /dev/null differ diff --git a/data/cubemaps/Fjaderholmarna/negz.jpg b/data/cubemaps/Fjaderholmarna/negz.jpg deleted file mode 100644 index 749270f..0000000 Binary files a/data/cubemaps/Fjaderholmarna/negz.jpg and /dev/null differ diff --git a/data/cubemaps/Fjaderholmarna/posx.jpg b/data/cubemaps/Fjaderholmarna/posx.jpg deleted file mode 100644 index d5a9882..0000000 Binary files a/data/cubemaps/Fjaderholmarna/posx.jpg and /dev/null differ diff --git a/data/cubemaps/Fjaderholmarna/posy.jpg b/data/cubemaps/Fjaderholmarna/posy.jpg deleted file mode 100644 index a6a7ae7..0000000 Binary files a/data/cubemaps/Fjaderholmarna/posy.jpg and /dev/null differ diff --git a/data/cubemaps/Fjaderholmarna/posz.jpg b/data/cubemaps/Fjaderholmarna/posz.jpg deleted file mode 100644 index 292ed69..0000000 Binary files a/data/cubemaps/Fjaderholmarna/posz.jpg and /dev/null differ diff --git a/data/cubemaps/Fjaderholmarna/readme.txt b/data/cubemaps/Fjaderholmarna/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/Fjaderholmarna/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/data/cubemaps/FortPoint/negx.jpg b/data/cubemaps/FortPoint/negx.jpg deleted file mode 100644 index 0294b40..0000000 Binary files a/data/cubemaps/FortPoint/negx.jpg and /dev/null differ diff --git a/data/cubemaps/FortPoint/negy.jpg b/data/cubemaps/FortPoint/negy.jpg deleted file mode 100644 index c6ae29b..0000000 Binary files a/data/cubemaps/FortPoint/negy.jpg and /dev/null differ diff --git a/data/cubemaps/FortPoint/negz.jpg b/data/cubemaps/FortPoint/negz.jpg deleted file mode 100644 index 07a1b3e..0000000 Binary files a/data/cubemaps/FortPoint/negz.jpg and /dev/null differ diff --git a/data/cubemaps/FortPoint/posx.jpg b/data/cubemaps/FortPoint/posx.jpg deleted file mode 100644 index b5f683a..0000000 Binary files a/data/cubemaps/FortPoint/posx.jpg and /dev/null differ diff --git a/data/cubemaps/FortPoint/posy.jpg b/data/cubemaps/FortPoint/posy.jpg deleted file mode 100644 index 4764998..0000000 Binary files a/data/cubemaps/FortPoint/posy.jpg and /dev/null differ diff --git a/data/cubemaps/FortPoint/posz.jpg b/data/cubemaps/FortPoint/posz.jpg deleted file mode 100644 index baff4d8..0000000 Binary files a/data/cubemaps/FortPoint/posz.jpg and /dev/null differ diff --git a/data/cubemaps/FortPoint/readme.txt b/data/cubemaps/FortPoint/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/FortPoint/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/data/cubemaps/HeroesSquare/negx.jpg b/data/cubemaps/HeroesSquare/negx.jpg deleted file mode 100644 index d72ef4e..0000000 Binary files a/data/cubemaps/HeroesSquare/negx.jpg and /dev/null differ diff --git a/data/cubemaps/HeroesSquare/negy.jpg b/data/cubemaps/HeroesSquare/negy.jpg deleted file mode 100644 index be1f10e..0000000 Binary files a/data/cubemaps/HeroesSquare/negy.jpg and /dev/null differ diff --git a/data/cubemaps/HeroesSquare/negz.jpg b/data/cubemaps/HeroesSquare/negz.jpg deleted file mode 100644 index 79b60fa..0000000 Binary files a/data/cubemaps/HeroesSquare/negz.jpg and /dev/null differ diff --git a/data/cubemaps/HeroesSquare/posx.jpg b/data/cubemaps/HeroesSquare/posx.jpg deleted file mode 100644 index 331988e..0000000 Binary files a/data/cubemaps/HeroesSquare/posx.jpg and /dev/null differ diff --git a/data/cubemaps/HeroesSquare/posy.jpg b/data/cubemaps/HeroesSquare/posy.jpg deleted file mode 100644 index 1d7f861..0000000 Binary files a/data/cubemaps/HeroesSquare/posy.jpg and /dev/null differ diff --git a/data/cubemaps/HeroesSquare/posz.jpg b/data/cubemaps/HeroesSquare/posz.jpg deleted file mode 100644 index aeb05ff..0000000 Binary files a/data/cubemaps/HeroesSquare/posz.jpg and /dev/null differ diff --git a/data/cubemaps/HeroesSquare/readme.txt b/data/cubemaps/HeroesSquare/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/HeroesSquare/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/data/cubemaps/LancellottiChapel/negx.jpg b/data/cubemaps/LancellottiChapel/negx.jpg deleted file mode 100644 index 827515c..0000000 Binary files a/data/cubemaps/LancellottiChapel/negx.jpg and /dev/null differ diff --git a/data/cubemaps/LancellottiChapel/negy.jpg b/data/cubemaps/LancellottiChapel/negy.jpg deleted file mode 100644 index 1ada940..0000000 Binary files a/data/cubemaps/LancellottiChapel/negy.jpg and /dev/null differ diff --git a/data/cubemaps/LancellottiChapel/negz.jpg b/data/cubemaps/LancellottiChapel/negz.jpg deleted file mode 100644 index 63e39fa..0000000 Binary files a/data/cubemaps/LancellottiChapel/negz.jpg and /dev/null differ diff --git a/data/cubemaps/LancellottiChapel/posx.jpg b/data/cubemaps/LancellottiChapel/posx.jpg deleted file mode 100644 index 797bfcb..0000000 Binary files a/data/cubemaps/LancellottiChapel/posx.jpg and /dev/null differ diff --git a/data/cubemaps/LancellottiChapel/posy.jpg b/data/cubemaps/LancellottiChapel/posy.jpg deleted file mode 100644 index f3154d6..0000000 Binary files a/data/cubemaps/LancellottiChapel/posy.jpg and /dev/null differ diff --git a/data/cubemaps/LancellottiChapel/posz.jpg b/data/cubemaps/LancellottiChapel/posz.jpg deleted file mode 100644 index f9d7717..0000000 Binary files a/data/cubemaps/LancellottiChapel/posz.jpg and /dev/null differ diff --git a/data/cubemaps/LancellottiChapel/readme.txt b/data/cubemaps/LancellottiChapel/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/LancellottiChapel/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/data/cubemaps/Lycksele/negx.jpg b/data/cubemaps/Lycksele/negx.jpg deleted file mode 100644 index aa7df6a..0000000 Binary files a/data/cubemaps/Lycksele/negx.jpg and /dev/null differ diff --git a/data/cubemaps/Lycksele/negy.jpg b/data/cubemaps/Lycksele/negy.jpg deleted file mode 100644 index 1f37096..0000000 Binary files a/data/cubemaps/Lycksele/negy.jpg and /dev/null differ diff --git a/data/cubemaps/Lycksele/negz.jpg b/data/cubemaps/Lycksele/negz.jpg deleted file mode 100644 index f5f2982..0000000 Binary files a/data/cubemaps/Lycksele/negz.jpg and /dev/null differ diff --git a/data/cubemaps/Lycksele/posx.jpg b/data/cubemaps/Lycksele/posx.jpg deleted file mode 100644 index e7949e8..0000000 Binary files a/data/cubemaps/Lycksele/posx.jpg and /dev/null differ diff --git a/data/cubemaps/Lycksele/posy.jpg b/data/cubemaps/Lycksele/posy.jpg deleted file mode 100644 index 92d04c4..0000000 Binary files a/data/cubemaps/Lycksele/posy.jpg and /dev/null differ diff --git a/data/cubemaps/Lycksele/posz.jpg b/data/cubemaps/Lycksele/posz.jpg deleted file mode 100644 index ddc17cf..0000000 Binary files a/data/cubemaps/Lycksele/posz.jpg and /dev/null differ diff --git a/data/cubemaps/Lycksele/readme.txt b/data/cubemaps/Lycksele/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/Lycksele/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/data/cubemaps/PereaBeach2/negx.jpg b/data/cubemaps/PereaBeach2/negx.jpg deleted file mode 100644 index bf7a9c1..0000000 Binary files a/data/cubemaps/PereaBeach2/negx.jpg and /dev/null differ diff --git a/data/cubemaps/PereaBeach2/negy.jpg b/data/cubemaps/PereaBeach2/negy.jpg deleted file mode 100644 index ec91662..0000000 Binary files a/data/cubemaps/PereaBeach2/negy.jpg and /dev/null differ diff --git a/data/cubemaps/PereaBeach2/negz.jpg b/data/cubemaps/PereaBeach2/negz.jpg deleted file mode 100644 index c840bb6..0000000 Binary files a/data/cubemaps/PereaBeach2/negz.jpg and /dev/null differ diff --git a/data/cubemaps/PereaBeach2/posx.jpg b/data/cubemaps/PereaBeach2/posx.jpg deleted file mode 100644 index 0b71e3f..0000000 Binary files a/data/cubemaps/PereaBeach2/posx.jpg and /dev/null differ diff --git a/data/cubemaps/PereaBeach2/posy.jpg b/data/cubemaps/PereaBeach2/posy.jpg deleted file mode 100644 index e0aebb2..0000000 Binary files a/data/cubemaps/PereaBeach2/posy.jpg and /dev/null differ diff --git a/data/cubemaps/PereaBeach2/posz.jpg b/data/cubemaps/PereaBeach2/posz.jpg deleted file mode 100644 index bb79d72..0000000 Binary files a/data/cubemaps/PereaBeach2/posz.jpg and /dev/null differ diff --git a/data/cubemaps/PereaBeach2/readme.txt b/data/cubemaps/PereaBeach2/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/PereaBeach2/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/data/cubemaps/SaintPetersSquare3/negx.jpg b/data/cubemaps/SaintPetersSquare3/negx.jpg deleted file mode 100644 index 27e515f..0000000 Binary files a/data/cubemaps/SaintPetersSquare3/negx.jpg and /dev/null differ diff --git a/data/cubemaps/SaintPetersSquare3/negy.jpg b/data/cubemaps/SaintPetersSquare3/negy.jpg deleted file mode 100644 index 0f44e25..0000000 Binary files a/data/cubemaps/SaintPetersSquare3/negy.jpg and /dev/null differ diff --git a/data/cubemaps/SaintPetersSquare3/negz.jpg b/data/cubemaps/SaintPetersSquare3/negz.jpg deleted file mode 100644 index 50e7bc3..0000000 Binary files a/data/cubemaps/SaintPetersSquare3/negz.jpg and /dev/null differ diff --git a/data/cubemaps/SaintPetersSquare3/posx.jpg b/data/cubemaps/SaintPetersSquare3/posx.jpg deleted file mode 100644 index 4283cbe..0000000 Binary files a/data/cubemaps/SaintPetersSquare3/posx.jpg and /dev/null differ diff --git a/data/cubemaps/SaintPetersSquare3/posy.jpg b/data/cubemaps/SaintPetersSquare3/posy.jpg deleted file mode 100644 index 2e667b2..0000000 Binary files a/data/cubemaps/SaintPetersSquare3/posy.jpg and /dev/null differ diff --git a/data/cubemaps/SaintPetersSquare3/posz.jpg b/data/cubemaps/SaintPetersSquare3/posz.jpg deleted file mode 100644 index 0adbf36..0000000 Binary files a/data/cubemaps/SaintPetersSquare3/posz.jpg and /dev/null differ diff --git a/data/cubemaps/SaintPetersSquare3/readme.txt b/data/cubemaps/SaintPetersSquare3/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/SaintPetersSquare3/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/data/cubemaps/SanFrancisco/negx.jpg b/data/cubemaps/SanFrancisco/negx.jpg deleted file mode 100644 index 17dbb70..0000000 Binary files a/data/cubemaps/SanFrancisco/negx.jpg and /dev/null differ diff --git a/data/cubemaps/SanFrancisco/negy.jpg b/data/cubemaps/SanFrancisco/negy.jpg deleted file mode 100644 index 26ce6a8..0000000 Binary files a/data/cubemaps/SanFrancisco/negy.jpg and /dev/null differ diff --git a/data/cubemaps/SanFrancisco/negz.jpg b/data/cubemaps/SanFrancisco/negz.jpg deleted file mode 100644 index 5d815db..0000000 Binary files a/data/cubemaps/SanFrancisco/negz.jpg and /dev/null differ diff --git a/data/cubemaps/SanFrancisco/posx.jpg b/data/cubemaps/SanFrancisco/posx.jpg deleted file mode 100644 index ce56f20..0000000 Binary files a/data/cubemaps/SanFrancisco/posx.jpg and /dev/null differ diff --git a/data/cubemaps/SanFrancisco/posy.jpg b/data/cubemaps/SanFrancisco/posy.jpg deleted file mode 100644 index 4e67f10..0000000 Binary files a/data/cubemaps/SanFrancisco/posy.jpg and /dev/null differ diff --git a/data/cubemaps/SanFrancisco/posz.jpg b/data/cubemaps/SanFrancisco/posz.jpg deleted file mode 100644 index 7c7dd7a..0000000 Binary files a/data/cubemaps/SanFrancisco/posz.jpg and /dev/null differ diff --git a/data/cubemaps/SanFrancisco/readme.txt b/data/cubemaps/SanFrancisco/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/SanFrancisco/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/data/cubemaps/Storforsen/negx.jpg b/data/cubemaps/Storforsen/negx.jpg deleted file mode 100644 index 9f0882d..0000000 Binary files a/data/cubemaps/Storforsen/negx.jpg and /dev/null differ diff --git a/data/cubemaps/Storforsen/negy.jpg b/data/cubemaps/Storforsen/negy.jpg deleted file mode 100644 index a41d558..0000000 Binary files a/data/cubemaps/Storforsen/negy.jpg and /dev/null differ diff --git a/data/cubemaps/Storforsen/negz.jpg b/data/cubemaps/Storforsen/negz.jpg deleted file mode 100644 index f38894b..0000000 Binary files a/data/cubemaps/Storforsen/negz.jpg and /dev/null differ diff --git a/data/cubemaps/Storforsen/posx.jpg b/data/cubemaps/Storforsen/posx.jpg deleted file mode 100644 index cda7da8..0000000 Binary files a/data/cubemaps/Storforsen/posx.jpg and /dev/null differ diff --git a/data/cubemaps/Storforsen/posy.jpg b/data/cubemaps/Storforsen/posy.jpg deleted file mode 100644 index a1910be..0000000 Binary files a/data/cubemaps/Storforsen/posy.jpg and /dev/null differ diff --git a/data/cubemaps/Storforsen/posz.jpg b/data/cubemaps/Storforsen/posz.jpg deleted file mode 100644 index d3c53b0..0000000 Binary files a/data/cubemaps/Storforsen/posz.jpg and /dev/null differ diff --git a/data/cubemaps/Storforsen/readme.txt b/data/cubemaps/Storforsen/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/Storforsen/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/data/cubemaps/Yokohama2/negx.jpg b/data/cubemaps/Yokohama2/negx.jpg deleted file mode 100644 index d72ed3b..0000000 Binary files a/data/cubemaps/Yokohama2/negx.jpg and /dev/null differ diff --git a/data/cubemaps/Yokohama2/negy.jpg b/data/cubemaps/Yokohama2/negy.jpg deleted file mode 100644 index baa2416..0000000 Binary files a/data/cubemaps/Yokohama2/negy.jpg and /dev/null differ diff --git a/data/cubemaps/Yokohama2/negz.jpg b/data/cubemaps/Yokohama2/negz.jpg deleted file mode 100644 index 088ce34..0000000 Binary files a/data/cubemaps/Yokohama2/negz.jpg and /dev/null differ diff --git a/data/cubemaps/Yokohama2/posx.jpg b/data/cubemaps/Yokohama2/posx.jpg deleted file mode 100644 index 4416e28..0000000 Binary files a/data/cubemaps/Yokohama2/posx.jpg and /dev/null differ diff --git a/data/cubemaps/Yokohama2/posy.jpg b/data/cubemaps/Yokohama2/posy.jpg deleted file mode 100644 index 1eeecfb..0000000 Binary files a/data/cubemaps/Yokohama2/posy.jpg and /dev/null differ diff --git a/data/cubemaps/Yokohama2/posz.jpg b/data/cubemaps/Yokohama2/posz.jpg deleted file mode 100644 index fd27d57..0000000 Binary files a/data/cubemaps/Yokohama2/posz.jpg and /dev/null differ diff --git a/data/cubemaps/Yokohama2/readme.txt b/data/cubemaps/Yokohama2/readme.txt deleted file mode 100644 index d9bd514..0000000 --- a/data/cubemaps/Yokohama2/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -Author -====== - -This is the work of Emil Persson, aka Humus. -http://www.humus.name - - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ diff --git a/package/contents/ui/CubemapHub.qml b/package/contents/ui/CubemapHub.qml new file mode 100644 index 0000000..2c2d59d --- /dev/null +++ b/package/contents/ui/CubemapHub.qml @@ -0,0 +1,390 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Dialogs +import QtQuick.Layouts + +import com.github.digitalartifex.komplex as Komplex + +Item +{ + property alias selectedFile: searchModel.lastSavedFile + + id: mainItem + + Komplex.CubemapSearchModel + { + id: searchModel + } + + ColumnLayout + { + anchors.fill: parent + + RowLayout + { + Layout.fillHeight: false + Layout.fillWidth: true + Layout.margins: 6 + + TextField + { + Layout.preferredHeight: 32 + Layout.fillWidth: true + + id: searchField + placeholderText: "Search" + onEditingFinished: mainItem.updateSearch() + Keys.onPressed: (event) => + { + if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) + { + searchField.focus = false; // Unfocus the TextField + event.accepted = true; // Prevent further propagation of the key event + } + } + } + + Button + { + Layout.preferredHeight: 32 + Layout.preferredWidth: 32 + + icon.name: "search-symbolic" + + onClicked: mainItem.updateSearch() + } + } + + Component + { + id: highlight + Rectangle { + width: view.cellWidth; height: view.cellHeight + color: palette.highlight; radius: 5 + x: view.currentItem.x + y: view.currentItem.y + Behavior on x { SpringAnimation { spring: 3; damping: 0.2 } } + Behavior on y { SpringAnimation { spring: 3; damping: 0.2 } } + } + } + + Rectangle + { + Layout.fillHeight: true + Layout.fillWidth: true + color: palette.base + clip: true + + RowLayout + { + anchors.fill: parent + + GridView + { + // The standard size + property int idealCellHeight: 300 + property int idealCellWidth: 300 + cellWidth: width / Math.floor(width / idealCellWidth) + cellHeight: idealCellHeight + + id: view + + model: searchModel + highlight: highlight + highlightFollowsCurrentItem: false + + Layout.fillHeight: true + Layout.fillWidth: true + Layout.margins: 6 + + delegate: Column + { + id: entry + + leftPadding: Math.floor((width - thumbnailImage.width) / 2) + topPadding: 10 + rightPadding: Math.floor((width - thumbnailImage.width) / 2) + bottomPadding: 10 + width: view.cellWidth + + required property string id + required property string name + required property string description + required property string thumbnail + required property int index + property int itemIndex: index + + Image + { + width: 280 + height: 200 + id: thumbnailImage + source: parent.thumbnail//"https://api.artifex.services/v1/cubemaps/thumbnail/" + parent.id + anchors.horizontalCenter: parent.horizontalCenter + + MouseArea + { + z: 9000 + anchors.fill: parent + onClicked: (mouse) => { + view.currentIndex = entry.itemIndex + } + } + + Rectangle + { + color: palette.base + anchors.fill: parent + visible: thumbnailImage.status === Image.Loading + + RowLayout + { + anchors.fill: parent + + BusyIndicator + { + Layout.alignment: Qt.AlignCenter + Layout.preferredHeight: 64 + Layout.preferredWidth: 64 + visible: running + } + } + } + + Rectangle + { + color: palette.dark + anchors.fill: parent + visible: thumbnailImage.status === Image.Error + + Text + { + color: palette.text + anchors.centerIn: parent + text: qsTr("Error Loading Image") + } + } + } + Text + { + elide: Text.ElideRight + topPadding: 4 + bottomPadding: 2 + text: "

" + name + "

" + anchors.horizontalCenter: parent.horizontalCenter + width: 280 + color: palette.link + font.bold: true + } + Text + { + leftPadding: 8 + rightPadding: 8 + text: qsTr(description) + anchors.horizontalCenter: parent.horizontalCenter + elide: Text.ElideRight + width: 280 + color: palette.text + wrapMode: Text.WrapAtWordBoundaryOrAnywhere + maximumLineCount: 2 + font.italic: true + } + RowLayout + { + visible: parent.itemIndex === view.currentIndex + width: 280 + Button + { + Layout.topMargin: 4 + Layout.alignment: Qt.AlignHCenter + Layout.preferredHeight: 32 + Layout.fillWidth: true + text: "Download" + + icon.source: "./icons/download.svg" + icon.name: "download-symbolic" + + onClicked: { + progressDialog.id = entry.id + progressDialog.description = entry.description + progressDialog.name = entry.name + progressDialog.thumbnail = entry.thumbnail + progressDialog.open() + searchModel.download(entry.id) + } + } + } + + } + populate: Transition + { + NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 1000 } + } + } + } + } + + RowLayout + { + Layout.margins: 6 + Layout.fillWidth: true + + Button + { + text: "Previous" + enabled: searchModel.previousPage !== "" + onClicked: searchModel.back() + } + + RowLayout + { + Layout.margins: 6 + Layout.fillWidth: true + + Text + { + visible: searchModel.totalResults > 0 + color: palette.text + text: (searchModel.currentOffset + 1) + "-" + (searchModel.resultsPerPage + searchModel.currentOffset) + " of " + searchModel.totalResults + } + + Text + { + color: palette.text + Layout.fillWidth: true + text: "Page " + (searchModel.currentOffset / searchModel.resultsPerPage) + " of " + Math.ceil(searchModel.totalResults / searchModel.resultsPerPage) + } + } + Button + { + text: "Next" + enabled: searchModel.nextPage !== "" + onClicked: searchModel.next() + } + } + } + + Rectangle + { + color: palette.base + width: mainItem.width + height: mainItem.height + visible: searchModel.status === Komplex.PexelsImageSearchModel.Searching + + RowLayout + { + anchors.fill: parent + + BusyIndicator + { + Layout.alignment: Qt.AlignCenter + Layout.preferredHeight: 128 + Layout.preferredWidth: 128 + visible: running + } + } + } + + Dialog + { + property string name + property string description + property string id + property string thumbnail + + modal: Qt.WindowModal + width: 600 + height: 420 + + anchors.centerIn: parent + clip: true + + id: progressDialog + + ColumnLayout + { + anchors.fill: parent + + Image + { + Layout.fillHeight: true + Layout.fillWidth: true + + fillMode: Image.PreserveAspectCrop + source: progressDialog.thumbnail + } + + Text + { + text: "Downloading Cubemap..." + color: palette.text + } + + ProgressBar + { + value: searchModel.downloadProgress + Layout.fillWidth: true + Layout.preferredHeight: 6 + } + } + + Connections + { + target: searchModel + function onDownloadFinished() + { + progressDialog.close() + } + } + } + + Dialog + { + width: 420 + height: 105 + + id: warningDialog + ColumnLayout + { + Text + { + id: header + text: "Installation Error" + font.pointSize: 14 + color: palette.text + } + Text + { + id: informative + text: searchModel.statusMessage + font.pointSize: 10 + color: palette.text + } + DialogButtonBox + { + Layout.alignment: Qt.AlignRight + standardButtons: DialogButtonBox.Ok + onAccepted: warningDialog.close() + } + } + + Connections + { + target: searchModel + function onStatusChanged() + { + if(searchModel.status === Komplex.CubemapSearchModel.Error) + { + warningDialog.open(); + progressDialog.close(); + } + } + } + } + + function updateSearch() + { + console.log(searchField.text) + searchModel.query = searchField.text + } +} diff --git a/plugin/CMakeLists.txt b/plugin/CMakeLists.txt index 0947efa..672037d 100644 --- a/plugin/CMakeLists.txt +++ b/plugin/CMakeLists.txt @@ -31,10 +31,11 @@ add_library( ShaderToyMetadata.h ShaderToySearchModel.h ShaderToySearchModel.cpp - ShaderToyAPI.h - PexelsAPI.h KomplexSearchModel.h KomplexSearchModel.cpp + CubemapSearch.h + CubemapSearch.cpp + CubemapMetadata.h ) qt_add_qml_module( @@ -66,10 +67,11 @@ qt_add_qml_module( ShaderToyMetadata.h ShaderToySearchModel.h ShaderToySearchModel.cpp - ShaderToyAPI.h - PexelsAPI.h KomplexSearchModel.h KomplexSearchModel.cpp + CubemapSearch.h + CubemapSearch.cpp + CubemapMetadata.h NO_GENERATE_PLUGIN_SOURCE ) diff --git a/plugin/CubemapMetadata.h b/plugin/CubemapMetadata.h new file mode 100644 index 0000000..9c1edae --- /dev/null +++ b/plugin/CubemapMetadata.h @@ -0,0 +1,17 @@ +#ifndef CUBEMAPMETADATA_H +#define CUBEMAPMETADATA_H + +#include +#include + +#include "Komplex_global.h" + +struct KOMPLEX_EXPORT CubemapMetadata +{ + QString description; + QString id; + QString name; + QUrl thumbnail; +}; + +#endif // CUBEMAPMETADATA_H \ No newline at end of file diff --git a/plugin/CubemapSearch.cpp b/plugin/CubemapSearch.cpp new file mode 100644 index 0000000..fa7bcdd --- /dev/null +++ b/plugin/CubemapSearch.cpp @@ -0,0 +1,440 @@ +#include "CubemapSearch.h" + +CubemapSearchModel::CubemapSearchModel(QObject *parent) : QAbstractItemModel { parent } +{ + m_networkManager.setAutoDeleteReplies(true); +} + +CubemapSearchModel::~CubemapSearchModel() +{ + +} + +int CubemapSearchModel::rowCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent) + return m_data.size(); +} + +QVariant CubemapSearchModel::data(const QModelIndex &index, int role) const +{ + if(index.row() < 0 || index.row() >= m_data.count()) + return QVariant(); + + QVariant data; + + switch (static_cast(role)) { + case Description: + data = QVariant::fromValue(m_data[index.row()].description); + break; + case Name: + data = QVariant::fromValue(m_data[index.row()].name); + break; + case Thumbnail: + data = QVariant::fromValue(m_data[index.row()].thumbnail); + break; + case Id: + data = QVariant::fromValue(m_data[index.row()].id); + break; + } + + return data; +} + +QHash CubemapSearchModel::roleNames() const +{ + return m_dataRoles; +} + +void CubemapSearchModel::getSearchResults(QString url) +{ + setStatus(Searching); + + QNetworkRequest request; + request.setUrl(QUrl(url)); + + QNetworkReply *reply = m_networkManager.get(request); + + QObject::connect + ( + reply, + &QNetworkReply::finished, + this, + [this, reply]() + { + if(reply->error()) + qWarning() << reply->errorString(); + + QByteArray data = reply->readAll(); + QJsonParseError jsonError; + + QJsonDocument document = QJsonDocument::fromJson(data, &jsonError); + + if(jsonError.error != QJsonParseError::NoError) + { + qWarning() << jsonError.errorString(); + return; + } + + QJsonObject rootObject = document.object(); + + if(rootObject.contains(QStringLiteral("total_results"))) + setTotalResults(rootObject[QStringLiteral("total_results")].toInt()); + else + setTotalResults(0); + + if(currentOffset() > 0) + { + setPreviousPage( + QStringLiteral("https://api.artifex.services/v1/cubemaps/search/%1/%2/%3").arg( + query(), + std::clamp( + currentOffset() - resultsPerPage(), + static_cast(0), + totalResults() - resultsPerPage() + ), + resultsPerPage() + ) + ); + } + else + setPreviousPage(QString()); + + if((currentOffset() + resultsPerPage()) < totalResults()) + { + setNextPage( + QStringLiteral("https://api.artifex.services/v1/cubemaps/search/%1/%2/%3").arg( + query(), + std::clamp( + currentOffset() + resultsPerPage(), + static_cast(0), + totalResults() - resultsPerPage() + ), + resultsPerPage() + ) + ); + } + else + setNextPage(QString()); + + beginResetModel(); + m_data.clear(); + endResetModel(); + + if(rootObject.contains(QStringLiteral("results")) && rootObject[QStringLiteral("results")].isArray()) + { + QJsonArray resultsArray = rootObject[QStringLiteral("results")].toArray(); + + beginInsertRows(QModelIndex(), 0, resultsArray.count() - 1); + + for(const QJsonValue &resultRef : std::as_const(resultsArray)) + { + if(!resultRef.isObject()) + continue; + + QJsonObject resultObject = resultRef.toObject(); + CubemapMetadata cubemap; + + cubemap.description = resultObject[QStringLiteral("description")].toString(); + cubemap.id = resultObject[QStringLiteral("id")].toString(); + cubemap.name = resultObject[QStringLiteral("name")].toString(); + cubemap.thumbnail = QUrl(QStringLiteral("https://api.artifex.services/v1/cubemaps/thumbnail/%1").arg(resultObject[QStringLiteral("id")].toString())); + + m_data.append(cubemap); + } + + endInsertRows(); + } + + setStatus(Idle); + } + ); +} + +int CubemapSearchModel::status() const +{ + return static_cast(m_status); +} + +void CubemapSearchModel::setStatus(const int &status, const QString &message) +{ + setStatusMessage(message); + + if (m_status == static_cast(status)) + return; + + m_status = static_cast(status); + Q_EMIT statusChanged(); +} + +QString CubemapSearchModel::statusMessage() const +{ + return m_statusMessage; +} + +void CubemapSearchModel::setStatusMessage(const QString &message) +{ + if (m_statusMessage == message) + return; + + m_statusMessage = message; + Q_EMIT statusMessageChanged(); +} + +QString CubemapSearchModel::lastSavedFile() const +{ + return m_lastSavedFile; +} + +void CubemapSearchModel::setLastSavedFile(const QString &lastSavedFile) +{ + if (m_lastSavedFile == lastSavedFile) + return; + m_lastSavedFile = lastSavedFile; + Q_EMIT lastSavedFileChanged(); +} + +qreal CubemapSearchModel::downloadProgress() const +{ + return m_downloadProgress; +} + +void CubemapSearchModel::setDownloadProgress(qreal downloadProgress) +{ + if (m_downloadProgress == downloadProgress) + return; + m_downloadProgress = downloadProgress; + Q_EMIT downloadProgressChanged(); +} + +quint64 CubemapSearchModel::currentOffset() const +{ + return m_currentOffset; +} + +void CubemapSearchModel::setCurrentOffset(quint64 currentPage) +{ + if (m_currentOffset == currentPage) + return; + m_currentOffset = currentPage; + Q_EMIT currentOffsetChanged(); +} + +QModelIndex CubemapSearchModel::index(int row, int column, const QModelIndex &parent) const +{ + Q_UNUSED(parent) + return createIndex(row, column, &m_data.at(row)); +} + +int CubemapSearchModel::columnCount(const QModelIndex &parent) const +{ + Q_UNUSED(parent) + return 0; +} + +QModelIndex CubemapSearchModel::parent(const QModelIndex &index) const +{ + Q_UNUSED(index) + return QModelIndex(); +} + +void CubemapSearchModel::next() +{ + if(m_nextPage.isEmpty()) + return; + + getSearchResults(m_nextPage); +} + +void CubemapSearchModel::back() +{ + if(m_previousPage.isEmpty()) + return; + + getSearchResults(m_previousPage); +} + +void CubemapSearchModel::download(QString id) +{ + QNetworkRequest request(QUrl(QStringLiteral("https://api.artifex.services/v1/cubemaps/item/%1").arg(id))); + QNetworkReply *reply = m_networkManager.get(request); + setStatus(Downloading); + + QObject::connect + ( + reply, + &QNetworkReply::finished, + this, + [this, reply, id]() + { + if(reply->error()) + { + qWarning() << reply->errorString(); + setStatus(Error, QStringLiteral("Could not download resource %1").arg(id)); + return; + } + + QByteArray data = reply->readAll(); + + QString zipFileLocation = QStringLiteral("%1/.local/share/komplex/cubemaps/%2.zip").arg(QStandardPaths::writableLocation(QStandardPaths::HomeLocation), id); + QString fileLocation = QStringLiteral("%1/.local/share/komplex/cubemaps/%2").arg(QStandardPaths::writableLocation(QStandardPaths::HomeLocation), id); + QFile zipFile(zipFileLocation); + + if(zipFile.exists()) + zipFile.remove(); + + if(!zipFile.open(QFile::ReadWrite)) + { + qWarning() << "Could not open cubemap file:" << zipFileLocation; + setStatus(Error, QStringLiteral("Could not open cubemap file")); + return; + } + + quint64 written = zipFile.write(data); + + if(written != data.length()) + { + zipFile.close(); + + qWarning() << "Could not write cubemap file:" << zipFileLocation; + setStatus(Error, QStringLiteral("Could not open write file")); + return; + } + + zipFile.close(); + + QStringList params { + zipFileLocation, + QStringLiteral("-d"), + fileLocation + }; + + QProcess process; + process.setProcessChannelMode(QProcess::MergedChannels); + + process.start(QStringLiteral("unzip"), params); + + if(!process.waitForStarted() || !process.waitForFinished()) + { + QString message; + + switch(process.error()) + { + case QProcess::Crashed: + message = QStringLiteral("Unzip process crashed"); + break; + case QProcess::FailedToStart: + message = QStringLiteral("Unzip process failed to start"); + break; + case QProcess::Timedout: + message = QStringLiteral("Unzip process timedout"); + break; + case QProcess::WriteError: + message = QStringLiteral("Unzip process crashed due to a write error"); + break; + case QProcess::ReadError: + message = QStringLiteral("Unzip process crashed due to a read error"); + break; + case QProcess::UnknownError: + default: + message = QStringLiteral("Unzip process crashed due to an unknown error"); + break; + } + + setStatus(Error, message); + } + + qWarning() << process.errorString() << process.readAllStandardOutput();// << command; + + if(status() != Error) + { + setLastSavedFile(fileLocation); + + Q_EMIT downloadFinished(); + } + + setStatus(Idle); + } + ); + + QObject::connect + ( + reply, + &QNetworkReply::downloadProgress, + this, + [this](qint64 received, qint64 total) + { + setDownloadProgress(static_cast(received) / static_cast(total)); + } + ); +} + +QString CubemapSearchModel::previousPage() const +{ + return m_previousPage; +} + +void CubemapSearchModel::setPreviousPage(const QString &previousPage) +{ + if (m_previousPage == previousPage) + return; + + m_previousPage = previousPage; + Q_EMIT previousPageChanged(); +} + +QString CubemapSearchModel::nextPage() const +{ + return m_nextPage; +} + +void CubemapSearchModel::setNextPage(const QString &nextPage) +{ + if (m_nextPage == nextPage) + return; + m_nextPage = nextPage; + Q_EMIT nextPageChanged(); +} + +quint64 CubemapSearchModel::totalResults() const +{ + return m_totalResults; +} + +void CubemapSearchModel::setTotalResults(quint64 totalResults) +{ + if (m_totalResults == totalResults) + return; + m_totalResults = totalResults; + Q_EMIT totalResultsChanged(); +} + +quint16 CubemapSearchModel::resultsPerPage() const +{ + return m_resultsPerPage; +} + +void CubemapSearchModel::setResultsPerPage(quint16 resultsPerPage) +{ + if (m_resultsPerPage == resultsPerPage) + return; + + m_resultsPerPage = resultsPerPage; + Q_EMIT resultsPerPageChanged(); +} + +QString CubemapSearchModel::query() const +{ + return m_query; +} + +void CubemapSearchModel::setQuery(const QString &query) +{ + if (m_query == query) + return; + + m_query = query; + Q_EMIT queryChanged(); + + getSearchResults(QStringLiteral("https://api.artifex.services/v1/cubemaps/search/%1/0/%2").arg(m_query).arg(m_resultsPerPage)); +} diff --git a/plugin/CubemapSearch.h b/plugin/CubemapSearch.h new file mode 100644 index 0000000..207b4f6 --- /dev/null +++ b/plugin/CubemapSearch.h @@ -0,0 +1,156 @@ +#ifndef CUBEMAPSEARCH_H +#define CUBEMAPSEARCH_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "CubemapMetadata.h" +#include "Komplex_global.h" + +class KOMPLEX_EXPORT CubemapSearchModel : public QAbstractItemModel +{ + Q_OBJECT +public: + + enum DataRoles + { + Description = Qt::UserRole + 1, + Id, + Name, + Thumbnail + }; + Q_ENUM(DataRoles) + + enum Status + { + Idle, + Searching, + Error, + Downloading + }; + Q_ENUM(Status) + + CubemapSearchModel(QObject *parent = nullptr); + ~CubemapSearchModel(); + + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + + QString query() const; + void setQuery(const QString &query); + + quint16 resultsPerPage() const; + void setResultsPerPage(quint16 resultsPerPage); + + quint64 totalResults() const; + void setTotalResults(quint64 totalResults); + + QString nextPage() const; + void setNextPage(const QString &nextPage); + + QString previousPage() const; + void setPreviousPage(const QString &previousPage); + + quint64 currentOffset() const; + void setCurrentOffset(quint64 currentOffset); + + QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; + int columnCount(const QModelIndex &parent = QModelIndex()) const override; + QModelIndex parent(const QModelIndex &index) const override; + + Q_INVOKABLE void next(); + Q_INVOKABLE void back(); + Q_INVOKABLE void download(QString id); + + qreal downloadProgress() const; + void setDownloadProgress(qreal downloadProgress); + + QString lastSavedFile() const; + void setLastSavedFile(const QString &lastSavedFile); + + int status() const; + void setStatus(const int &status, const QString &message = QString()); + QString statusMessage() const; + void setStatusMessage(const QString &message); + +Q_SIGNALS: + void queryChanged(); + void resultsPerPageChanged(); + void totalResultsChanged(); + void nextPageChanged(); + void previousPageChanged(); + void currentOffsetChanged(); + void downloadProgressChanged(); + void downloadFinished(); + void lastSavedFileChanged(); + void statusChanged(); + void statusMessageChanged(); + +protected: + QHash roleNames() const override; + +private: + void getSearchResults(QString url); + + QNetworkAccessManager m_networkManager; + QString m_query; + + quint16 m_resultsPerPage = 9; + quint64 m_totalResults = 0; + quint64 m_currentOffset = 0; + qreal m_downloadProgress = 0; + QString m_nextPage; + QString m_previousPage; + QString m_lastSavedFile; + QString m_statusMessage; + + QList m_data; + Status m_status = Status::Idle; + + static inline const QHash m_dataRoles = + { + { + static_cast(Description), + QByteArray("description") + }, + { + static_cast(Id), + QByteArray("id") + }, + { + static_cast(Name), + QByteArray("name") + }, + { + static_cast(Thumbnail), + QByteArray("thumbnail") + } + }; + + Q_PROPERTY(QString query READ query WRITE setQuery NOTIFY queryChanged FINAL) + Q_PROPERTY(quint16 resultsPerPage READ resultsPerPage WRITE setResultsPerPage NOTIFY resultsPerPageChanged FINAL) + Q_PROPERTY(quint64 totalResults READ totalResults WRITE setTotalResults NOTIFY totalResultsChanged FINAL) + Q_PROPERTY(QString nextPage READ nextPage WRITE setNextPage NOTIFY nextPageChanged FINAL) + Q_PROPERTY(QString previousPage READ previousPage WRITE setPreviousPage NOTIFY previousPageChanged FINAL) + Q_PROPERTY(quint64 currentOffset READ currentOffset WRITE setCurrentOffset NOTIFY currentOffsetChanged FINAL) + Q_PROPERTY(qreal downloadProgress READ downloadProgress WRITE setDownloadProgress NOTIFY downloadProgressChanged FINAL) + Q_PROPERTY(QString lastSavedFile READ lastSavedFile WRITE setLastSavedFile NOTIFY lastSavedFileChanged FINAL) + Q_PROPERTY(int status READ status WRITE setStatus NOTIFY statusChanged FINAL) + Q_PROPERTY(QString statusMessage READ statusMessage WRITE setStatusMessage NOTIFY statusMessageChanged FINAL) +}; +Q_DECLARE_METATYPE(CubemapSearchModel) +#endif // CUBEMAPSEARCH_H diff --git a/plugin/plugin.cpp b/plugin/plugin.cpp index 6dc1738..c826ed7 100644 --- a/plugin/plugin.cpp +++ b/plugin/plugin.cpp @@ -7,6 +7,7 @@ #include "ShaderPackModel.h" #include "PexelsVideoSearch.h" #include "PexelsImageSearch.h" +#include "CubemapSearch.h" #include "ShaderToySearchModel.h" #include "GeometryProvider.h" #include "KomplexSearchModel.h" @@ -49,6 +50,7 @@ public: qmlRegisterType(uri, 1, 0, "PexelsVideoSearchModel"); qmlRegisterType(uri, 1, 0, "PexelsImageSearchModel"); qmlRegisterType(uri, 1, 0, "KomplexSearchModel"); + qmlRegisterType(uri, 1, 0, "CubemapSearchModel"); } void unregisterTypes() override diff --git a/plugin/qmldir b/plugin/qmldir index c5a6dc0..3168b70 100644 --- a/plugin/qmldir +++ b/plugin/qmldir @@ -5,4 +5,5 @@ classname ShaderPackModel classname PexelsImageSearchModel classname PexelsVideoSearchModel classname ShaderToySearchModel -classname KomplexSearchModel \ No newline at end of file +classname KomplexSearchModel +classname CubemapSearchModel \ No newline at end of file