Compare commits
	
		
			105 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 7173c2c629 | ||
|  | 124708784f | ||
|  | bcb952c3ca | ||
|  | 594e88bf3b | ||
|  | dd1043c4c0 | ||
|  | 72e303238e | ||
|  | adc96072cd | ||
|  | 7cf801244c | ||
|  | b01a3ea781 | ||
|  | e5b97d440a | ||
|  | f5c6d3e945 | ||
|  | 9814510b1b | ||
|  | 05c8bc8314 | ||
|  | a9c4683b18 | ||
|  | 26c4f4e63d | ||
|  | 9d07f906a7 | ||
|  | d26c0aeaaf | ||
|  | 70b0b46d50 | ||
|  | a7dd075dec | ||
|  | 1e89db1b80 | ||
|  | 44a368ef0e | ||
|  | 7ddf740f9b | ||
|  | 2bbfa178ea | ||
|  | 61682104df | ||
|  | 46542793d6 | ||
|  | 9f2d13a2b6 | ||
|  | 602a4050b5 | ||
|  | 54de743641 | ||
|  | 3e8d8440e3 | ||
|  | 8189b2338a | ||
|  | 0a77ef5dc2 | ||
|  | 19f0f707a6 | ||
|  | 83998f7471 | ||
|  | b7bb4b5958 | ||
|  | f28e442bfa | ||
|  | 4cd5c3489e | ||
|  | 52e4d72ae2 | ||
|  | 7241a49566 | ||
|  | 2db8c8728e | ||
|  | 270b2bec6e | ||
|  | c83f28431b | ||
|  | e60921f0cb | ||
|  | 92252f70d2 | ||
|  | 4e9d0db4be | ||
|  | 2bb2d3fe01 | ||
|  | 45ace61007 | ||
|  | 89d0717779 | ||
|  | 19819bd23a | ||
|  | 2894d9ab03 | ||
|  | e56605d7ce | ||
|  | f91be59811 | ||
|  | 0069837920 | ||
|  | ad96fabe4a | ||
|  | 6ba6118b8c | ||
|  | 7f11d2f950 | ||
|  | fe3e41e7ea | ||
|  | 4478b1f1ec | ||
|  | 3992129735 | ||
|  | 0dab737d60 | ||
|  | 330150854b | ||
|  | 6779ac83f9 | ||
|  | f1504093d1 | ||
|  | 8482cc3db8 | ||
|  | a4f94b7656 | ||
|  | 4299ee21d8 | ||
|  | 5b81694b1d | ||
|  | 66786d0059 | ||
|  | 9df2f0b944 | ||
|  | c3571261ca | ||
|  | bdcd27ab5b | ||
|  | 345285786f | ||
|  | dda9b23c3d | ||
|  | b349266855 | ||
|  | ee2467d622 | ||
|  | 88ca26c418 | ||
|  | 8f44270e4a | ||
|  | edc678f995 | ||
|  | 0faeea33c3 | ||
|  | f86b9b93e8 | ||
|  | a3ec3a88e8 | ||
|  | 7df45b4cf3 | ||
|  | a2b6244f54 | ||
|  | 3983c29645 | ||
|  | 73e62f8676 | ||
|  | fb4ee6ac93 | ||
|  | 91e4129615 | ||
|  | 54b82aad26 | ||
|  | 03dd8b0336 | ||
|  | 6e6b4a6f3c | ||
|  | 0110826ce9 | ||
|  | 4e52d547b2 | ||
|  | 9a439a3646 | ||
|  | 854e97f57c | ||
|  | 22f2c37322 | ||
|  | 94cb0cc19d | ||
|  | 9b52d6fb0d | ||
|  | 16a99c2079 | ||
|  | bb7c06d32a | ||
|  | a2884e4000 | ||
|  | b284ea076b | ||
|  | 85081d6fe0 | ||
|  | eafc282efd | ||
|  | 8c2ad025b1 | ||
|  | a07cfc0f7a | ||
|  | f725b68c57 | 
							
								
								
									
										162
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										162
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -8,47 +8,46 @@ on: | |||||||
| jobs: | jobs: | ||||||
|  |  | ||||||
|   linux-gl: |   linux-gl: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-20.04 | ||||||
|     container: |  | ||||||
|       image: ubuntu:bionic |  | ||||||
|       env: { LANG: "C.UTF-8" } |  | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v3 |       - uses: actions/checkout@v4 | ||||||
|       - name: Install deps |       - name: Install deps | ||||||
|         run: | |         run: | | ||||||
|           apt-get update |           sudo apt-get update | ||||||
|           apt-get install g++ cmake libxi-dev libgl1-mesa-dev libpng-dev libjpeg-dev zlib1g-dev -qyy |           sudo apt-get install g++ cmake libxi-dev libgl1-mesa-dev libpng-dev libjpeg-dev zlib1g-dev -qyy | ||||||
|  |  | ||||||
|       - name: Build |       - name: Build | ||||||
|         run: | |         run: | | ||||||
|           cmake . |           cmake . -DUSE_SDL2=OFF | ||||||
|           make VERBOSE=1 -j2 |           make VERBOSE=1 -j2 | ||||||
|  |  | ||||||
|  |       - name: Test | ||||||
|  |         run: | | ||||||
|  |           ctest --output-on-failure | ||||||
|  |  | ||||||
|       - name: Package |       - name: Package | ||||||
|         run: | |         run: | | ||||||
|           make DESTDIR=$PWD/_install install |           make DESTDIR=$PWD/_install install | ||||||
|           tar -c -I "gzip -9" -f irrlicht-linux.tar.gz -C ./_install/usr/local . |           tar -c -I "gzip -9" -f irrlicht-linux.tar.gz -C ./_install/usr/local . | ||||||
|  |  | ||||||
|       - uses: actions/upload-artifact@v3 |       - uses: actions/upload-artifact@v4 | ||||||
|         with: |         with: | ||||||
|           name: irrlicht-linux |           name: irrlicht-linux | ||||||
|           path: ./irrlicht-linux.tar.gz |           path: ./irrlicht-linux.tar.gz | ||||||
|  |  | ||||||
|   linux-gles: |   linux-gles: | ||||||
|     runs-on: ubuntu-latest |     # Xvfb test is broken on 20.04 for unknown reasons (not our bug) | ||||||
|     container: |     runs-on: ubuntu-22.04 | ||||||
|       image: ubuntu:bionic |  | ||||||
|       env: { LANG: "C.UTF-8" } |  | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v3 |       - uses: actions/checkout@v4 | ||||||
|       - name: Install deps |       - name: Install deps | ||||||
|         run: | |         run: | | ||||||
|           apt-get update |           sudo apt-get update | ||||||
|           apt-get install g++ cmake libxi-dev libgles2-mesa-dev libpng-dev libjpeg-dev zlib1g-dev xvfb -qyy |           sudo apt-get install g++ cmake libxi-dev libgles2-mesa-dev libpng-dev libjpeg-dev zlib1g-dev xvfb -qyy | ||||||
|  |  | ||||||
|       - name: Build |       - name: Build | ||||||
|         run: | |         run: | | ||||||
|           cmake . -DBUILD_EXAMPLES=1 -DENABLE_OPENGL=OFF -DENABLE_GLES2=ON |           cmake . -DBUILD_EXAMPLES=1 -DUSE_SDL2=OFF -DENABLE_OPENGL=OFF -DENABLE_GLES2=ON | ||||||
|           make -j2 |           make -j2 | ||||||
|  |  | ||||||
|       - name: Test (headless) |       - name: Test (headless) | ||||||
| @@ -62,20 +61,17 @@ jobs: | |||||||
|           LIBGL_ALWAYS_SOFTWARE=true xvfb-run ./AutomatedTest ogles2 |           LIBGL_ALWAYS_SOFTWARE=true xvfb-run ./AutomatedTest ogles2 | ||||||
|  |  | ||||||
|   linux-sdl: |   linux-sdl: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-20.04 | ||||||
|     container: |  | ||||||
|       image: ubuntu:jammy |  | ||||||
|       env: { LANG: "C.UTF-8" } |  | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v3 |       - uses: actions/checkout@v4 | ||||||
|       - name: Install deps |       - name: Install deps | ||||||
|         run: | |         run: | | ||||||
|           apt-get update |           sudo apt-get update | ||||||
|           apt-get install g++ cmake libsdl2-dev libpng-dev libjpeg-dev zlib1g-dev -qyy |           sudo apt-get install g++ cmake libsdl2-dev libpng-dev libjpeg-dev zlib1g-dev -qyy | ||||||
|  |  | ||||||
|       - name: Build |       - name: Build | ||||||
|         run: | |         run: | | ||||||
|           cmake . -DBUILD_EXAMPLES=1 -DUSE_SDL2=ON |           cmake . -DBUILD_EXAMPLES=1 -DUSE_SDL2=ON -DCMAKE_BUILD_TYPE=Debug | ||||||
|           make -j2 |           make -j2 | ||||||
|  |  | ||||||
|       - name: Test (headless) |       - name: Test (headless) | ||||||
| @@ -84,16 +80,14 @@ jobs: | |||||||
|           ./AutomatedTest null |           ./AutomatedTest null | ||||||
|  |  | ||||||
|   linux-sdl-gl3: |   linux-sdl-gl3: | ||||||
|     runs-on: ubuntu-latest |     # Xvfb test is broken on 20.04 for unknown reasons (not our bug) | ||||||
|     container: |     runs-on: ubuntu-22.04 | ||||||
|       image: ubuntu:jammy |  | ||||||
|       env: { LANG: "C.UTF-8" } |  | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v3 |       - uses: actions/checkout@v4 | ||||||
|       - name: Install deps |       - name: Install deps | ||||||
|         run: | |         run: | | ||||||
|           apt-get update |           sudo apt-get update | ||||||
|           apt-get install g++ cmake libsdl2-dev libpng-dev libjpeg-dev zlib1g-dev xvfb -qyy |           sudo apt-get install g++ cmake libsdl2-dev libpng-dev libjpeg-dev zlib1g-dev xvfb -qyy | ||||||
|  |  | ||||||
|       - name: Build |       - name: Build | ||||||
|         run: | |         run: | | ||||||
| @@ -111,16 +105,13 @@ jobs: | |||||||
|           LIBGL_ALWAYS_SOFTWARE=true xvfb-run ./AutomatedTest opengl3 |           LIBGL_ALWAYS_SOFTWARE=true xvfb-run ./AutomatedTest opengl3 | ||||||
|  |  | ||||||
|   linux-sdl-gles2: |   linux-sdl-gles2: | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-20.04 | ||||||
|     container: |  | ||||||
|       image: ubuntu:jammy |  | ||||||
|       env: { LANG: "C.UTF-8" } |  | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v3 |       - uses: actions/checkout@v4 | ||||||
|       - name: Install deps |       - name: Install deps | ||||||
|         run: | |         run: | | ||||||
|           apt-get update |           sudo apt-get update | ||||||
|           apt-get install g++ cmake libsdl2-dev libpng-dev libjpeg-dev zlib1g-dev xvfb -qyy |           sudo apt-get install g++ cmake libsdl2-dev libpng-dev libjpeg-dev zlib1g-dev xvfb -qyy | ||||||
|  |  | ||||||
|       - name: Build |       - name: Build | ||||||
|         run: | |         run: | | ||||||
| @@ -139,7 +130,7 @@ jobs: | |||||||
|  |  | ||||||
|   mingw: |   mingw: | ||||||
|     name: "MinGW ${{matrix.config.variant}}${{matrix.config.extras}}" |     name: "MinGW ${{matrix.config.variant}}${{matrix.config.extras}}" | ||||||
|     runs-on: ubuntu-20.04 |     runs-on: ubuntu-22.04 | ||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
| @@ -149,22 +140,21 @@ jobs: | |||||||
|           - {variant: win32, arch: i686, extras: "-sdl"} |           - {variant: win32, arch: i686, extras: "-sdl"} | ||||||
|           - {variant: win64, arch: x86_64, extras: "-sdl"} |           - {variant: win64, arch: x86_64, extras: "-sdl"} | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v3 |       - uses: actions/checkout@v4 | ||||||
|       - name: Install compiler |       - name: Install compiler | ||||||
|         run: | |         run: | | ||||||
|           sudo apt-get update && sudo apt-get install cmake -qyy |           sudo apt-get update && sudo apt-get install cmake -qyy | ||||||
|           wget http://minetest.kitsunemimi.pw/mingw-w64-${{matrix.config.arch}}_11.2.0_ubuntu20.04.tar.xz -O mingw.tar.xz |           ./scripts/ci-get-mingw.sh | ||||||
|           sudo tar -xaf mingw.tar.xz -C /usr |  | ||||||
|  |  | ||||||
|       - name: Build |       - name: Build | ||||||
|         run: | |         run: | | ||||||
|           ./scripts/ci-build-mingw.sh package |           ./scripts/ci-build-mingw.sh package | ||||||
|         env: |         env: | ||||||
|           CC: ${{matrix.config.arch}}-w64-mingw32-gcc |           CC: ${{matrix.config.arch}}-w64-mingw32-clang | ||||||
|           CXX: ${{matrix.config.arch}}-w64-mingw32-g++ |           CXX: ${{matrix.config.arch}}-w64-mingw32-clang++ | ||||||
|           extras: ${{matrix.config.extras}} |           extras: ${{matrix.config.extras}} | ||||||
|  |  | ||||||
|       - uses: actions/upload-artifact@v3 |       - uses: actions/upload-artifact@v4 | ||||||
|         with: |         with: | ||||||
|           name: irrlicht-${{matrix.config.variant}}${{matrix.config.extras}} |           name: irrlicht-${{matrix.config.variant}}${{matrix.config.extras}} | ||||||
|           path: ./irrlicht-${{matrix.config.variant}}${{matrix.config.extras}}.zip |           path: ./irrlicht-${{matrix.config.variant}}${{matrix.config.extras}}.zip | ||||||
| @@ -172,11 +162,14 @@ jobs: | |||||||
|   macos: |   macos: | ||||||
|     runs-on: macos-latest |     runs-on: macos-latest | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v3 |       - uses: actions/checkout@v4 | ||||||
|       - name: Install deps |       - name: Install deps | ||||||
|         run: | |         run: | | ||||||
|           brew update |           brew update --auto-update | ||||||
|           brew install cmake libpng jpeg |           brew install cmake libpng jpeg | ||||||
|  |         env: | ||||||
|  |           HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 | ||||||
|  |           HOMEBREW_NO_INSTALL_CLEANUP: 1 | ||||||
|  |  | ||||||
|       - name: Build |       - name: Build | ||||||
|         run: | |         run: | | ||||||
| @@ -187,13 +180,30 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           ./bin/OSX/AutomatedTest null |           ./bin/OSX/AutomatedTest null | ||||||
|  |  | ||||||
|  |   macos-sdl: | ||||||
|  |     runs-on: macos-latest | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v4 | ||||||
|  |       - name: Install deps | ||||||
|  |         run: | | ||||||
|  |           brew update --auto-update | ||||||
|  |           brew install cmake libpng jpeg sdl2 | ||||||
|  |         env: | ||||||
|  |           HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 | ||||||
|  |           HOMEBREW_NO_INSTALL_CLEANUP: 1 | ||||||
|  |  | ||||||
|  |       - name: Build | ||||||
|  |         run: | | ||||||
|  |           cmake . -DCMAKE_FIND_FRAMEWORK=LAST -DBUILD_EXAMPLES=1 -DUSE_SDL2=1 | ||||||
|  |           make -j3 | ||||||
|  |  | ||||||
|   msvc: |   msvc: | ||||||
|     name: VS 2019 ${{ matrix.config.arch }} ${{ matrix.sdl.label }} |     name: VS 2019 ${{ matrix.config.arch }} ${{ matrix.sdl.label }} | ||||||
|     runs-on: windows-2019 |     runs-on: windows-2019 | ||||||
|     env: |     env: | ||||||
|       VCPKG_VERSION: 14e7bb4ae24616ec54ff6b2f6ef4e8659434ea44 |       VCPKG_VERSION: 8eb57355a4ffb410a2e94c07b4dca2dffbee8e50 | ||||||
|         # 2022.05.10 |       # 2023.10.19 | ||||||
|       vcpkg_packages: zlib libpng libjpeg-turbo opengl-registry |       vcpkg_packages: zlib libpng libjpeg-turbo | ||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
| @@ -210,6 +220,7 @@ jobs: | |||||||
|           - |           - | ||||||
|             use: FALSE |             use: FALSE | ||||||
|             label: '(no SDL)' |             label: '(no SDL)' | ||||||
|  |             vcpkg_packages: opengl-registry | ||||||
|           - |           - | ||||||
|             use: TRUE |             use: TRUE | ||||||
|             label: '(with SDL)' |             label: '(with SDL)' | ||||||
| @@ -217,7 +228,7 @@ jobs: | |||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|       - name: Restore from cache and run vcpkg |       - name: Restore from cache and run vcpkg | ||||||
|         uses: lukka/run-vcpkg@v7 |         uses: lukka/run-vcpkg@v7 | ||||||
| @@ -250,7 +261,50 @@ jobs: | |||||||
|         run: move include artifact/ |         run: move include artifact/ | ||||||
|  |  | ||||||
|       - name: Upload Artifact |       - name: Upload Artifact | ||||||
|         uses: actions/upload-artifact@v3 |         uses: actions/upload-artifact@v4 | ||||||
|         with: |         with: | ||||||
|           name: msvc-${{ matrix.config.arch }} |           name: msvc-${{ matrix.config.arch }}-${{matrix.sdl.use}} | ||||||
|           path: artifact/ |           path: artifact/ | ||||||
|  |  | ||||||
|  |   android: | ||||||
|  |     name: Android ${{ matrix.arch }} | ||||||
|  |     runs-on: ubuntu-20.04 | ||||||
|  |     env: | ||||||
|  |        ndk_version: "r25c" | ||||||
|  |        ANDROID_NDK: ${{ github.workspace }}/android-ndk | ||||||
|  |     strategy: | ||||||
|  |       matrix: | ||||||
|  |         arch: [armeabi-v7a, arm64-v8a, x86, x86_64] | ||||||
|  |     steps: | ||||||
|  |       - name: Checkout | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|  |       - name: Install deps | ||||||
|  |         run: | | ||||||
|  |           sudo rm /var/lib/man-db/auto-update | ||||||
|  |           sudo apt-get update | ||||||
|  |           sudo apt-get install -qyy wget unzip zip gcc-multilib make cmake | ||||||
|  |  | ||||||
|  |       - name: Cache NDK | ||||||
|  |         id: cache-ndk | ||||||
|  |         uses: actions/cache@v4 | ||||||
|  |         with: | ||||||
|  |           key: android-ndk-${{ env.ndk_version }}-linux | ||||||
|  |           path: ${{ env.ANDROID_NDK }} | ||||||
|  |  | ||||||
|  |       - name: Install NDK | ||||||
|  |         run: | | ||||||
|  |           wget --progress=bar:force "http://dl.google.com/android/repository/android-ndk-${ndk_version}-linux.zip" | ||||||
|  |           unzip -q "android-ndk-${ndk_version}-linux.zip" | ||||||
|  |           rm "android-ndk-${ndk_version}-linux.zip" | ||||||
|  |           mv "android-ndk-${ndk_version}" "${ANDROID_NDK}" | ||||||
|  |         if: ${{ steps.cache-ndk.outputs.cache-hit != 'true' }} | ||||||
|  |  | ||||||
|  |       - name: Build | ||||||
|  |         run: ./scripts/ci-build-android.sh ${{ matrix.arch }} | ||||||
|  |  | ||||||
|  |       #- name: Upload Artifact | ||||||
|  |       #  uses: actions/upload-artifact@v4 | ||||||
|  |       #  with: | ||||||
|  |       #    name: irrlicht-android-${{ matrix.arch }} | ||||||
|  |       #    path: ${{ runner.temp }}/pkg/${{ matrix.arch }} | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -5,6 +5,7 @@ install_manifest.txt | |||||||
| IrrlichtMtConfig.cmake | IrrlichtMtConfig.cmake | ||||||
| IrrlichtMtConfigVersion.cmake | IrrlichtMtConfigVersion.cmake | ||||||
| IrrlichtMtTargets.cmake | IrrlichtMtTargets.cmake | ||||||
|  | CTestTestfile.cmake | ||||||
| Makefile | Makefile | ||||||
| libs/* | libs/* | ||||||
| *.so* | *.so* | ||||||
|   | |||||||
| @@ -1,13 +1,6 @@ | |||||||
| cmake_minimum_required(VERSION 3.5) | cmake_minimum_required(VERSION 3.12) | ||||||
|  |  | ||||||
| # >=3.9 enables IPO; >=3.11 prefers GLVND | set(IRRLICHTMT_REVISION 15) | ||||||
| if(${CMAKE_VERSION} VERSION_LESS 3.11) |  | ||||||
| 	cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) |  | ||||||
| else() |  | ||||||
| 	cmake_policy(VERSION 3.11) |  | ||||||
| endif() |  | ||||||
|  |  | ||||||
| set(IRRLICHTMT_REVISION 13) |  | ||||||
|  |  | ||||||
| project(Irrlicht | project(Irrlicht | ||||||
| 	VERSION 1.9.0.${IRRLICHTMT_REVISION} | 	VERSION 1.9.0.${IRRLICHTMT_REVISION} | ||||||
| @@ -16,6 +9,9 @@ project(Irrlicht | |||||||
|  |  | ||||||
| message(STATUS "*** Building IrrlichtMt ${PROJECT_VERSION} ***") | message(STATUS "*** Building IrrlichtMt ${PROJECT_VERSION} ***") | ||||||
|  |  | ||||||
|  | set(CMAKE_CXX_STANDARD 17) | ||||||
|  | set(CMAKE_CXX_STANDARD_REQUIRED ON) | ||||||
|  |  | ||||||
| include(GNUInstallDirs) | include(GNUInstallDirs) | ||||||
|  |  | ||||||
| if(ANDROID) | if(ANDROID) | ||||||
| @@ -38,7 +34,9 @@ if(NOT CMAKE_BUILD_TYPE) | |||||||
| endif() | endif() | ||||||
|  |  | ||||||
| list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") | list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") | ||||||
| add_subdirectory(source/Irrlicht) | enable_testing() | ||||||
|  | add_subdirectory(src) | ||||||
|  | add_subdirectory(test) | ||||||
|  |  | ||||||
| option(BUILD_EXAMPLES "Build example applications" FALSE) | option(BUILD_EXAMPLES "Build example applications" FALSE) | ||||||
| if(BUILD_EXAMPLES) | if(BUILD_EXAMPLES) | ||||||
|   | |||||||
| @@ -1,5 +1,11 @@ | |||||||
| @PACKAGE_INIT@ | @PACKAGE_INIT@ | ||||||
|  |  | ||||||
|  | include(CMakeFindDependencyMacro) | ||||||
|  |  | ||||||
| if(NOT TARGET IrrlichtMt::IrrlichtMt) | if(NOT TARGET IrrlichtMt::IrrlichtMt) | ||||||
|  | 	# private dependency only explicitly needed with static libs | ||||||
|  | 	if(@USE_SDL2@ AND NOT @BUILD_SHARED_LIBS@) | ||||||
|  | 		find_dependency(SDL2) | ||||||
|  | 	endif() | ||||||
| 	include("${CMAKE_CURRENT_LIST_DIR}/IrrlichtMtTargets.cmake") | 	include("${CMAKE_CURRENT_LIST_DIR}/IrrlichtMtTargets.cmake") | ||||||
| endif() | endif() | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,6 +1,14 @@ | |||||||
| IrrlichtMt version 1.9 | IrrlichtMt version 1.9 | ||||||
| ====================== | ====================== | ||||||
|  |  | ||||||
|  | Notice | ||||||
|  | ------ | ||||||
|  |  | ||||||
|  | IrrlichtMt has been moved into the [main Minetest repository](https://github.com/minetest) during Minetest 5.9 development. This repository is an archive useful for building older versions of Minetest. | ||||||
|  |  | ||||||
|  | About | ||||||
|  | ----- | ||||||
|  |  | ||||||
| IrrlichtMt is the 3D engine of [Minetest](https://github.com/minetest). | IrrlichtMt is the 3D engine of [Minetest](https://github.com/minetest). | ||||||
| It is based on the [Irrlicht Engine](https://irrlicht.sourceforge.io/) but is now developed independently. | It is based on the [Irrlicht Engine](https://irrlicht.sourceforge.io/) but is now developed independently. | ||||||
| It is intentionally not compatible to upstream and is planned to be eventually absorbed into Minetest. | It is intentionally not compatible to upstream and is planned to be eventually absorbed into Minetest. | ||||||
| @@ -15,6 +23,7 @@ The following libraries are required to be installed: | |||||||
| * OpenGL | * OpenGL | ||||||
|   * or on mobile: OpenGL ES (can be optionally enabled on desktop too) |   * or on mobile: OpenGL ES (can be optionally enabled on desktop too) | ||||||
| * on Unix: X11 | * on Unix: X11 | ||||||
|  | * SDL2 (see below) | ||||||
|  |  | ||||||
| Aside from standard search options (`ZLIB_INCLUDE_DIR`, `ZLIB_LIBRARY`, ...) the following options are available: | Aside from standard search options (`ZLIB_INCLUDE_DIR`, `ZLIB_LIBRARY`, ...) the following options are available: | ||||||
| * `BUILD_SHARED_LIBS` (default: `ON`) - Build IrrlichtMt as a shared library | * `BUILD_SHARED_LIBS` (default: `ON`) - Build IrrlichtMt as a shared library | ||||||
| @@ -23,7 +32,7 @@ Aside from standard search options (`ZLIB_INCLUDE_DIR`, `ZLIB_LIBRARY`, ...) the | |||||||
| * `ENABLE_OPENGL3` (default: `OFF`) - Enable OpenGL 3+ driver | * `ENABLE_OPENGL3` (default: `OFF`) - Enable OpenGL 3+ driver | ||||||
| * `ENABLE_GLES1` - Enable OpenGL ES driver, legacy | * `ENABLE_GLES1` - Enable OpenGL ES driver, legacy | ||||||
| * `ENABLE_GLES2` - Enable OpenGL ES 2+ driver | * `ENABLE_GLES2` - Enable OpenGL ES 2+ driver | ||||||
| * `USE_SDL2` (default: `OFF`) - Use SDL2 instead of native platform device | * `USE_SDL2` (default: platform-dependent, usually `ON`) - Use SDL2 instead of older native device code | ||||||
|  |  | ||||||
| e.g. on a Linux system you might want to build for local use like this: | e.g. on a Linux system you might want to build for local use like this: | ||||||
|  |  | ||||||
| @@ -40,7 +49,7 @@ It is highly recommended to use vcpkg as package manager. | |||||||
|  |  | ||||||
| After you successfully built vcpkg you can easily install the required libraries: | After you successfully built vcpkg you can easily install the required libraries: | ||||||
|  |  | ||||||
| 	vcpkg install zlib libjpeg-turbo libpng opengl-registry --triplet x64-windows | 	vcpkg install zlib libjpeg-turbo libpng sdl2 --triplet x64-windows | ||||||
| 	 | 	 | ||||||
| Run the following script in PowerShell: | Run the following script in PowerShell: | ||||||
|  |  | ||||||
|   | |||||||
| @@ -28,14 +28,14 @@ static video::E_DRIVER_TYPE chooseDriver(core::stringc arg_) | |||||||
|  |  | ||||||
| static inline void check(bool ok, const char *msg) | static inline void check(bool ok, const char *msg) | ||||||
| { | { | ||||||
| 	if (!ok) | 	if (!ok) { | ||||||
| 	{ |  | ||||||
| 		test_fail++; | 		test_fail++; | ||||||
| 		device->getLogger()->log((core::stringc("FAILED TEST: ") + msg).c_str(), ELL_ERROR); | 		device->getLogger()->log((core::stringc("FAILED TEST: ") + msg).c_str(), ELL_ERROR); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| void run_unit_tests() { | void run_unit_tests() | ||||||
|  | { | ||||||
| 	std::cout << "Running unit tests:" << std::endl; | 	std::cout << "Running unit tests:" << std::endl; | ||||||
| 	try { | 	try { | ||||||
| 		test_irr_array(); | 		test_irr_array(); | ||||||
| @@ -93,13 +93,11 @@ int main(int argc, char *argv[]) | |||||||
| 	check(mesh, "mesh loading"); | 	check(mesh, "mesh loading"); | ||||||
| 	if (mesh_file) | 	if (mesh_file) | ||||||
| 		mesh_file->drop(); | 		mesh_file->drop(); | ||||||
| 	if (mesh) | 	if (mesh) { | ||||||
| 	{ |  | ||||||
| 		video::ITexture *tex = driver->getTexture(mediaPath + "cooltexture.png"); | 		video::ITexture *tex = driver->getTexture(mediaPath + "cooltexture.png"); | ||||||
| 		check(tex, "texture loading"); | 		check(tex, "texture loading"); | ||||||
| 		scene::IAnimatedMeshSceneNode *node = smgr->addAnimatedMeshSceneNode(mesh); | 		scene::IAnimatedMeshSceneNode *node = smgr->addAnimatedMeshSceneNode(mesh); | ||||||
| 		if (node) | 		if (node) { | ||||||
| 		{ |  | ||||||
| 			node->forEachMaterial([tex](video::SMaterial &mat) { | 			node->forEachMaterial([tex](video::SMaterial &mat) { | ||||||
| 				mat.Lighting = false; | 				mat.Lighting = false; | ||||||
| 				mat.setTexture(0, tex); | 				mat.setTexture(0, tex); | ||||||
| @@ -115,25 +113,20 @@ int main(int argc, char *argv[]) | |||||||
| 	SEvent event; | 	SEvent event; | ||||||
| 	device->getTimer()->start(); | 	device->getTimer()->start(); | ||||||
|  |  | ||||||
| 	while (device->run()) | 	while (device->run()) { | ||||||
| 	{ | 		if (device->getTimer()->getTime() >= 1000) { | ||||||
| 		if (device->getTimer()->getTime() >= 1000) |  | ||||||
| 		{ |  | ||||||
| 			device->getTimer()->setTime(0); | 			device->getTimer()->setTime(0); | ||||||
| 			++n; | 			++n; | ||||||
| 			if (n == 1) // Tooltip display | 			if (n == 1) { // Tooltip display | ||||||
| 			{ |  | ||||||
| 				bzero(&event, sizeof(SEvent)); | 				bzero(&event, sizeof(SEvent)); | ||||||
| 				event.EventType = irr::EET_MOUSE_INPUT_EVENT; | 				event.EventType = irr::EET_MOUSE_INPUT_EVENT; | ||||||
| 				event.MouseInput.Event = irr::EMIE_MOUSE_MOVED; | 				event.MouseInput.Event = irr::EMIE_MOUSE_MOVED; | ||||||
| 				event.MouseInput.X = button->getAbsolutePosition().getCenter().X; | 				event.MouseInput.X = button->getAbsolutePosition().getCenter().X; | ||||||
| 				event.MouseInput.Y = button->getAbsolutePosition().getCenter().Y; | 				event.MouseInput.Y = button->getAbsolutePosition().getCenter().Y; | ||||||
| 				device->postEventFromUser(event); | 				device->postEventFromUser(event); | ||||||
| 			} | 			} else if (n == 2) // Text input focus | ||||||
| 			else if (n == 2) // Text input focus |  | ||||||
| 				guienv->setFocus(editbox); | 				guienv->setFocus(editbox); | ||||||
| 			else if (n == 3) // Keypress for Text input | 			else if (n == 3) { // Keypress for Text input | ||||||
| 			{ |  | ||||||
| 				bzero(&event, sizeof(SEvent)); | 				bzero(&event, sizeof(SEvent)); | ||||||
| 				event.EventType = irr::EET_KEY_INPUT_EVENT; | 				event.EventType = irr::EET_KEY_INPUT_EVENT; | ||||||
| 				event.KeyInput.Char = L'a'; | 				event.KeyInput.Char = L'a'; | ||||||
| @@ -142,8 +135,7 @@ int main(int argc, char *argv[]) | |||||||
| 				device->postEventFromUser(event); | 				device->postEventFromUser(event); | ||||||
| 				event.KeyInput.PressedDown = false; | 				event.KeyInput.PressedDown = false; | ||||||
| 				device->postEventFromUser(event); | 				device->postEventFromUser(event); | ||||||
| 			} | 			} else | ||||||
| 			else |  | ||||||
| 				device->closeDevice(); | 				device->closeDevice(); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4,7 +4,8 @@ | |||||||
| using namespace irr; | using namespace irr; | ||||||
| using core::array; | using core::array; | ||||||
|  |  | ||||||
| static void test_basics() { | static void test_basics() | ||||||
|  | { | ||||||
| 	array<int> v; | 	array<int> v; | ||||||
| 	v.push_back(1);  // 1 | 	v.push_back(1);  // 1 | ||||||
| 	v.push_front(2); // 2, 1 | 	v.push_front(2); // 2, 1 | ||||||
| @@ -57,7 +58,8 @@ static void test_basics() { | |||||||
| 	UASSERTEQ(v.size(), 2); | 	UASSERTEQ(v.size(), 2); | ||||||
| } | } | ||||||
|  |  | ||||||
| static void test_linear_searches() { | static void test_linear_searches() | ||||||
|  | { | ||||||
| 	// Populate the array with 0, 1, 2, ..., 100, 100, 99, 98, 97, ..., 0 | 	// Populate the array with 0, 1, 2, ..., 100, 100, 99, 98, 97, ..., 0 | ||||||
| 	array<int> arr; | 	array<int> arr; | ||||||
| 	for (int i = 0; i <= 100; i++) | 	for (int i = 0; i <= 100; i++) | ||||||
| @@ -75,7 +77,8 @@ static void test_linear_searches() { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| static void test_binary_searches() { | static void test_binary_searches() | ||||||
|  | { | ||||||
| 	const auto &values = {3, 5, 1, 2, 5, 10, 19, 9, 7, 1, 2, 5, 8, 15}; | 	const auto &values = {3, 5, 1, 2, 5, 10, 19, 9, 7, 1, 2, 5, 8, 15}; | ||||||
| 	array<int> arr; | 	array<int> arr; | ||||||
| 	for (int value : values) { | 	for (int value : values) { | ||||||
|   | |||||||
| @@ -3,11 +3,13 @@ | |||||||
| #include <exception> | #include <exception> | ||||||
| #include <iostream> | #include <iostream> | ||||||
|  |  | ||||||
| class TestFailedException : public std::exception { | class TestFailedException : public std::exception | ||||||
|  | { | ||||||
| }; | }; | ||||||
|  |  | ||||||
| // Asserts the comparison specified by CMP is true, or fails the current unit test | // Asserts the comparison specified by CMP is true, or fails the current unit test | ||||||
| #define UASSERTCMP(CMP, actual, expected) do {                                        \ | #define UASSERTCMP(CMP, actual, expected)                                         \ | ||||||
|  | 	do {                                                                          \ | ||||||
| 		const auto &a = (actual);                                                 \ | 		const auto &a = (actual);                                                 \ | ||||||
| 		const auto &e = (expected);                                               \ | 		const auto &e = (expected);                                               \ | ||||||
| 		if (!CMP(a, e)) {                                                         \ | 		if (!CMP(a, e)) {                                                         \ | ||||||
| @@ -15,7 +17,8 @@ class TestFailedException : public std::exception { | |||||||
| 					<< "Test assertion failed: " << #actual << " " << #CMP << " " \ | 					<< "Test assertion failed: " << #actual << " " << #CMP << " " \ | ||||||
| 					<< #expected << std::endl                                     \ | 					<< #expected << std::endl                                     \ | ||||||
| 					<< "    at " << __FILE__ << ":" << __LINE__ << std::endl      \ | 					<< "    at " << __FILE__ << ":" << __LINE__ << std::endl      \ | ||||||
| 			<< "    actual:   " << a << std::endl << "    expected: "     \ | 					<< "    actual:   " << a << std::endl                         \ | ||||||
|  | 					<< "    expected: "                                           \ | ||||||
| 					<< e << std::endl;                                            \ | 					<< e << std::endl;                                            \ | ||||||
| 			throw TestFailedException();                                          \ | 			throw TestFailedException();                                          \ | ||||||
| 		}                                                                         \ | 		}                                                                         \ | ||||||
|   | |||||||
| @@ -1,6 +1,3 @@ | |||||||
| set(CMAKE_CXX_STANDARD 17) |  | ||||||
| set(CMAKE_CXX_STANDARD_REQUIRED ON) |  | ||||||
|  |  | ||||||
| set(IRREXAMPLES | set(IRREXAMPLES | ||||||
| 	# removed | 	# removed | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __T_MESH_BUFFER_H_INCLUDED__ | #pragma once | ||||||
| #define __T_MESH_BUFFER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrArray.h" | #include "irrArray.h" | ||||||
| #include "IMeshBuffer.h" | #include "IMeshBuffer.h" | ||||||
| @@ -18,18 +17,14 @@ namespace scene | |||||||
| { | { | ||||||
| public: | public: | ||||||
| 	//! Default constructor for empty meshbuffer | 	//! Default constructor for empty meshbuffer | ||||||
| 		CMeshBuffer() | 	CMeshBuffer() : | ||||||
| 			: ChangedID_Vertex(1), ChangedID_Index(1) | 			ChangedID_Vertex(1), ChangedID_Index(1), MappingHint_Vertex(EHM_NEVER), MappingHint_Index(EHM_NEVER), HWBuffer(NULL), PrimitiveType(EPT_TRIANGLES) | ||||||
| 			, MappingHint_Vertex(EHM_NEVER), MappingHint_Index(EHM_NEVER) |  | ||||||
| 			, HWBuffer(NULL) |  | ||||||
| 			, PrimitiveType(EPT_TRIANGLES) |  | ||||||
| 	{ | 	{ | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
| 		setDebugName("CMeshBuffer"); | 		setDebugName("CMeshBuffer"); | ||||||
| #endif | #endif | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get material of this meshbuffer | 	//! Get material of this meshbuffer | ||||||
| 	/** \return Material of this buffer */ | 	/** \return Material of this buffer */ | ||||||
| 	const video::SMaterial &getMaterial() const override | 	const video::SMaterial &getMaterial() const override | ||||||
| @@ -37,7 +32,6 @@ namespace scene | |||||||
| 		return Material; | 		return Material; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get material of this meshbuffer | 	//! Get material of this meshbuffer | ||||||
| 	/** \return Material of this buffer */ | 	/** \return Material of this buffer */ | ||||||
| 	video::SMaterial &getMaterial() override | 	video::SMaterial &getMaterial() override | ||||||
| @@ -45,7 +39,6 @@ namespace scene | |||||||
| 		return Material; | 		return Material; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get pointer to vertices | 	//! Get pointer to vertices | ||||||
| 	/** \return Pointer to vertices. */ | 	/** \return Pointer to vertices. */ | ||||||
| 	const void *getVertices() const override | 	const void *getVertices() const override | ||||||
| @@ -53,7 +46,6 @@ namespace scene | |||||||
| 		return Vertices.const_pointer(); | 		return Vertices.const_pointer(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get pointer to vertices | 	//! Get pointer to vertices | ||||||
| 	/** \return Pointer to vertices. */ | 	/** \return Pointer to vertices. */ | ||||||
| 	void *getVertices() override | 	void *getVertices() override | ||||||
| @@ -61,7 +53,6 @@ namespace scene | |||||||
| 		return Vertices.pointer(); | 		return Vertices.pointer(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get number of vertices | 	//! Get number of vertices | ||||||
| 	/** \return Number of vertices. */ | 	/** \return Number of vertices. */ | ||||||
| 	u32 getVertexCount() const override | 	u32 getVertexCount() const override | ||||||
| @@ -83,7 +74,6 @@ namespace scene | |||||||
| 		return Indices.const_pointer(); | 		return Indices.const_pointer(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get pointer to indices | 	//! Get pointer to indices | ||||||
| 	/** \return Pointer to indices. */ | 	/** \return Pointer to indices. */ | ||||||
| 	u16 *getIndices() override | 	u16 *getIndices() override | ||||||
| @@ -91,7 +81,6 @@ namespace scene | |||||||
| 		return Indices.pointer(); | 		return Indices.pointer(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get number of indices | 	//! Get number of indices | ||||||
| 	/** \return Number of indices. */ | 	/** \return Number of indices. */ | ||||||
| 	u32 getIndexCount() const override | 	u32 getIndexCount() const override | ||||||
| @@ -99,7 +88,6 @@ namespace scene | |||||||
| 		return Indices.size(); | 		return Indices.size(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get the axis aligned bounding box | 	//! Get the axis aligned bounding box | ||||||
| 	/** \return Axis aligned bounding box of this buffer. */ | 	/** \return Axis aligned bounding box of this buffer. */ | ||||||
| 	const core::aabbox3d<f32> &getBoundingBox() const override | 	const core::aabbox3d<f32> &getBoundingBox() const override | ||||||
| @@ -107,7 +95,6 @@ namespace scene | |||||||
| 		return BoundingBox; | 		return BoundingBox; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Set the axis aligned bounding box | 	//! Set the axis aligned bounding box | ||||||
| 	/** \param box New axis aligned bounding box for this buffer. */ | 	/** \param box New axis aligned bounding box for this buffer. */ | ||||||
| 	//! set user axis aligned bounding box | 	//! set user axis aligned bounding box | ||||||
| @@ -116,24 +103,19 @@ namespace scene | |||||||
| 		BoundingBox = box; | 		BoundingBox = box; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Recalculate the bounding box. | 	//! Recalculate the bounding box. | ||||||
| 	/** should be called if the mesh changed. */ | 	/** should be called if the mesh changed. */ | ||||||
| 	void recalculateBoundingBox() override | 	void recalculateBoundingBox() override | ||||||
| 	{ | 	{ | ||||||
| 			if (!Vertices.empty()) | 		if (!Vertices.empty()) { | ||||||
| 			{ |  | ||||||
| 			BoundingBox.reset(Vertices[0].Pos); | 			BoundingBox.reset(Vertices[0].Pos); | ||||||
| 			const irr::u32 vsize = Vertices.size(); | 			const irr::u32 vsize = Vertices.size(); | ||||||
| 			for (u32 i = 1; i < vsize; ++i) | 			for (u32 i = 1; i < vsize; ++i) | ||||||
| 				BoundingBox.addInternalPoint(Vertices[i].Pos); | 				BoundingBox.addInternalPoint(Vertices[i].Pos); | ||||||
| 			} | 		} else | ||||||
| 			else |  | ||||||
| 			BoundingBox.reset(0, 0, 0); | 			BoundingBox.reset(0, 0, 0); | ||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get type of vertex data stored in this buffer. | 	//! Get type of vertex data stored in this buffer. | ||||||
| 	/** \return Type of vertex data. */ | 	/** \return Type of vertex data. */ | ||||||
| 	video::E_VERTEX_TYPE getVertexType() const override | 	video::E_VERTEX_TYPE getVertexType() const override | ||||||
| @@ -177,7 +159,6 @@ namespace scene | |||||||
| 		return Vertices[i].TCoords; | 		return Vertices[i].TCoords; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Append the vertices and indices to the current buffer | 	//! Append the vertices and indices to the current buffer | ||||||
| 	/** Only works for compatible types, i.e. either the same type | 	/** Only works for compatible types, i.e. either the same type | ||||||
| 	or the main buffer is of standard type. Otherwise, behavior is | 	or the main buffer is of standard type. Otherwise, behavior is | ||||||
| @@ -192,51 +173,17 @@ namespace scene | |||||||
| 		u32 i; | 		u32 i; | ||||||
|  |  | ||||||
| 		Vertices.reallocate(vertexCount + numVertices); | 		Vertices.reallocate(vertexCount + numVertices); | ||||||
| 			for (i=0; i<numVertices; ++i) | 		for (i = 0; i < numVertices; ++i) { | ||||||
| 			{ |  | ||||||
| 			Vertices.push_back(static_cast<const T *>(vertices)[i]); | 			Vertices.push_back(static_cast<const T *>(vertices)[i]); | ||||||
| 			BoundingBox.addInternalPoint(static_cast<const T *>(vertices)[i].Pos); | 			BoundingBox.addInternalPoint(static_cast<const T *>(vertices)[i].Pos); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		Indices.reallocate(getIndexCount() + numIndices); | 		Indices.reallocate(getIndexCount() + numIndices); | ||||||
| 			for (i=0; i<numIndices; ++i) | 		for (i = 0; i < numIndices; ++i) { | ||||||
| 			{ |  | ||||||
| 			Indices.push_back(indices[i] + vertexCount); | 			Indices.push_back(indices[i] + vertexCount); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 		//! Append the meshbuffer to the current buffer |  | ||||||
| 		/** Only works for compatible types, i.e. either the same type |  | ||||||
| 		or the main buffer is of standard type. Otherwise, behavior is |  | ||||||
| 		undefined. |  | ||||||
| 		\param other Meshbuffer to be appended to this one. |  | ||||||
| 		*/ |  | ||||||
| 		void append(const IMeshBuffer* const other) override |  | ||||||
| 		{ |  | ||||||
| 			/* |  | ||||||
| 			if (this==other) |  | ||||||
| 				return; |  | ||||||
|  |  | ||||||
| 			const u32 vertexCount = getVertexCount(); |  | ||||||
| 			u32 i; |  | ||||||
|  |  | ||||||
| 			Vertices.reallocate(vertexCount+other->getVertexCount()); |  | ||||||
| 			for (i=0; i<other->getVertexCount(); ++i) |  | ||||||
| 			{ |  | ||||||
| 				Vertices.push_back(reinterpret_cast<const T*>(other->getVertices())[i]); |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			Indices.reallocate(getIndexCount()+other->getIndexCount()); |  | ||||||
| 			for (i=0; i<other->getIndexCount(); ++i) |  | ||||||
| 			{ |  | ||||||
| 				Indices.push_back(other->getIndices()[i]+vertexCount); |  | ||||||
| 			} |  | ||||||
| 			BoundingBox.addInternalBox(other->getBoundingBox()); |  | ||||||
| 			*/ |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! get the current hardware mapping hint | 	//! get the current hardware mapping hint | ||||||
| 	E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const override | 	E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const override | ||||||
| 	{ | 	{ | ||||||
| @@ -287,15 +234,16 @@ namespace scene | |||||||
| 	/** This shouldn't be used for anything outside the VideoDriver. */ | 	/** This shouldn't be used for anything outside the VideoDriver. */ | ||||||
| 	u32 getChangedID_Index() const override { return ChangedID_Index; } | 	u32 getChangedID_Index() const override { return ChangedID_Index; } | ||||||
|  |  | ||||||
| 		void setHWBuffer(void *ptr) const override { | 	void setHWBuffer(void *ptr) const override | ||||||
|  | 	{ | ||||||
| 		HWBuffer = ptr; | 		HWBuffer = ptr; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 		void *getHWBuffer() const override { | 	void *getHWBuffer() const override | ||||||
|  | 	{ | ||||||
| 		return HWBuffer; | 		return HWBuffer; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	u32 ChangedID_Vertex; | 	u32 ChangedID_Vertex; | ||||||
| 	u32 ChangedID_Index; | 	u32 ChangedID_Index; | ||||||
|  |  | ||||||
| @@ -324,7 +272,3 @@ namespace scene | |||||||
| typedef CMeshBuffer<video::S3DVertexTangents> SMeshBufferTangents; | typedef CMeshBuffer<video::S3DVertexTangents> SMeshBufferTangents; | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_ATTRIBUTES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_ATTRIBUTES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -19,75 +18,9 @@ enum E_ATTRIBUTE_TYPE | |||||||
| 	// float attribute | 	// float attribute | ||||||
| 	EAT_FLOAT, | 	EAT_FLOAT, | ||||||
|  |  | ||||||
| 	// string attribute |  | ||||||
| 	EAT_STRING, |  | ||||||
|  |  | ||||||
| 	// boolean attribute | 	// boolean attribute | ||||||
| 	EAT_BOOL, | 	EAT_BOOL, | ||||||
|  |  | ||||||
| 	// enumeration attribute |  | ||||||
| 	EAT_ENUM, |  | ||||||
|  |  | ||||||
| 	// color attribute |  | ||||||
| 	EAT_COLOR, |  | ||||||
|  |  | ||||||
| 	// floating point color attribute |  | ||||||
| 	EAT_COLORF, |  | ||||||
|  |  | ||||||
| 	// 3d vector attribute |  | ||||||
| 	EAT_VECTOR3D, |  | ||||||
|  |  | ||||||
| 	// 2d position attribute |  | ||||||
| 	EAT_POSITION2D, |  | ||||||
|  |  | ||||||
| 	// vector 2d attribute |  | ||||||
| 	EAT_VECTOR2D, |  | ||||||
|  |  | ||||||
| 	// rectangle attribute |  | ||||||
| 	EAT_RECT, |  | ||||||
|  |  | ||||||
| 	// matrix attribute |  | ||||||
| 	EAT_MATRIX, |  | ||||||
|  |  | ||||||
| 	// quaternion attribute |  | ||||||
| 	EAT_QUATERNION, |  | ||||||
|  |  | ||||||
| 	// 3d bounding box |  | ||||||
| 	EAT_BBOX, |  | ||||||
|  |  | ||||||
| 	// plane |  | ||||||
| 	EAT_PLANE, |  | ||||||
|  |  | ||||||
| 	// 3d triangle |  | ||||||
| 	EAT_TRIANGLE3D, |  | ||||||
|  |  | ||||||
| 	// line 2d |  | ||||||
| 	EAT_LINE2D, |  | ||||||
|  |  | ||||||
| 	// line 3d |  | ||||||
| 	EAT_LINE3D, |  | ||||||
|  |  | ||||||
| 	// array of stringws attribute |  | ||||||
| 	EAT_STRINGWARRAY, |  | ||||||
|  |  | ||||||
| 	// array of float |  | ||||||
| 	EAT_FLOATARRAY, |  | ||||||
|  |  | ||||||
| 	// array of int |  | ||||||
| 	EAT_INTARRAY, |  | ||||||
|  |  | ||||||
| 	// binary data attribute |  | ||||||
| 	EAT_BINARY, |  | ||||||
|  |  | ||||||
| 	// texture reference attribute |  | ||||||
| 	EAT_TEXTURE, |  | ||||||
|  |  | ||||||
| 	// user pointer void* |  | ||||||
| 	EAT_USER_POINTER, |  | ||||||
|  |  | ||||||
| 	// dimension attribute |  | ||||||
| 	EAT_DIMENSION2D, |  | ||||||
|  |  | ||||||
| 	// known attribute type count | 	// known attribute type count | ||||||
| 	EAT_COUNT, | 	EAT_COUNT, | ||||||
|  |  | ||||||
| @@ -97,5 +30,3 @@ enum E_ATTRIBUTE_TYPE | |||||||
|  |  | ||||||
| } // end namespace io | } // end namespace io | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_CULLING_TYPES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_CULLING_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrTypes.h" | #include "irrTypes.h" | ||||||
|  |  | ||||||
| @@ -23,19 +22,14 @@ namespace scene | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for culling type | //! Names for culling type | ||||||
| 	const c8* const AutomaticCullingNames[] = | const c8 *const AutomaticCullingNames[] = { | ||||||
| 	{ |  | ||||||
| 		"false", | 		"false", | ||||||
| 		"box",            // camera box against node box | 		"box",            // camera box against node box | ||||||
| 		"frustum_box",    // camera frustum against node box | 		"frustum_box",    // camera frustum against node box | ||||||
| 		"frustum_sphere", // camera frustum against node sphere | 		"frustum_sphere", // camera frustum against node sphere | ||||||
| 		"occ_query",      // occlusion query | 		"occ_query",      // occlusion query | ||||||
| 		0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif // __E_CULLING_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_DEBUG_SCENE_TYPES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_DEBUG_SCENE_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -38,10 +37,5 @@ namespace scene | |||||||
| 	EDS_FULL = 0xffffffff | 	EDS_FULL = 0xffffffff | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif // __E_DEBUG_SCENE_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_DEVICE_TYPES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_DEVICE_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -45,6 +44,3 @@ namespace irr | |||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif // __E_DEVICE_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_DRIVER_FEATURES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_DRIVER_FEATURES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -121,21 +120,6 @@ namespace video | |||||||
| 	//! Support for texture coord transformation via texture matrix | 	//! Support for texture coord transformation via texture matrix | ||||||
| 	EVDF_TEXTURE_MATRIX, | 	EVDF_TEXTURE_MATRIX, | ||||||
|  |  | ||||||
| 		//! Support for DXTn compressed textures. |  | ||||||
| 		EVDF_TEXTURE_COMPRESSED_DXT, |  | ||||||
|  |  | ||||||
| 		//! Support for PVRTC compressed textures. |  | ||||||
| 		EVDF_TEXTURE_COMPRESSED_PVRTC, |  | ||||||
|  |  | ||||||
| 		//! Support for PVRTC2 compressed textures. |  | ||||||
| 		EVDF_TEXTURE_COMPRESSED_PVRTC2, |  | ||||||
|  |  | ||||||
| 		//! Support for ETC1 compressed textures. |  | ||||||
| 		EVDF_TEXTURE_COMPRESSED_ETC1, |  | ||||||
|  |  | ||||||
| 		//! Support for ETC2 compressed textures. |  | ||||||
| 		EVDF_TEXTURE_COMPRESSED_ETC2, |  | ||||||
|  |  | ||||||
| 	//! Support for cube map textures. | 	//! Support for cube map textures. | ||||||
| 	EVDF_TEXTURE_CUBEMAP, | 	EVDF_TEXTURE_CUBEMAP, | ||||||
|  |  | ||||||
| @@ -151,7 +135,3 @@ namespace video | |||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_DRIVER_TYPES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_DRIVER_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrTypes.h" | #include "irrTypes.h" | ||||||
|  |  | ||||||
| @@ -43,6 +42,3 @@ namespace video | |||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -1,8 +1,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef E_FOCUS_FLAGS_H_INCLUDED__ | #pragma once | ||||||
| #define E_FOCUS_FLAGS_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -33,6 +32,3 @@ enum EFOCUS_FLAG | |||||||
|  |  | ||||||
| } // namespace gui | } // namespace gui | ||||||
| } // namespace irr | } // namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_GUI_ALIGNMENT_H_INCLUDED__ | #pragma once | ||||||
| #define __E_GUI_ALIGNMENT_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrTypes.h" | #include "irrTypes.h" | ||||||
|  |  | ||||||
| @@ -24,16 +23,13 @@ enum EGUI_ALIGNMENT | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for alignments | //! Names for alignments | ||||||
| const c8* const GUIAlignmentNames[] = | const c8 *const GUIAlignmentNames[] = { | ||||||
| { |  | ||||||
| 		"upperLeft", | 		"upperLeft", | ||||||
| 		"lowerRight", | 		"lowerRight", | ||||||
| 		"center", | 		"center", | ||||||
| 		"scale", | 		"scale", | ||||||
| 	0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| } // namespace gui | } // namespace gui | ||||||
| } // namespace irr | } // namespace irr | ||||||
|  |  | ||||||
| #endif // __E_GUI_ALIGNMENT_H_INCLUDED__ |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_GUI_ELEMENT_TYPES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_GUI_ELEMENT_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrTypes.h" | #include "irrTypes.h" | ||||||
|  |  | ||||||
| @@ -100,8 +99,7 @@ enum EGUI_ELEMENT_TYPE | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for built-in element types | //! Names for built-in element types | ||||||
| const c8* const GUIElementTypeNames[] = | const c8 *const GUIElementTypeNames[] = { | ||||||
| { |  | ||||||
| 		"button", | 		"button", | ||||||
| 		"checkBox", | 		"checkBox", | ||||||
| 		"comboBox", | 		"comboBox", | ||||||
| @@ -128,14 +126,8 @@ const c8* const GUIElementTypeNames[] = | |||||||
| 		"element", | 		"element", | ||||||
| 		"root", | 		"root", | ||||||
| 		"profiler", | 		"profiler", | ||||||
| 	0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_HARDWARE_BUFFER_FLAGS_INCLUDED__ | #pragma once | ||||||
| #define __E_HARDWARE_BUFFER_FLAGS_INCLUDED__ |  | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -39,6 +38,3 @@ namespace scene | |||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_MATERIAL_PROPS_H_INCLUDED__ | #pragma once | ||||||
| #define __E_MATERIAL_PROPS_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -81,7 +80,3 @@ namespace video | |||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif // __E_MATERIAL_PROPS_H_INCLUDED__ |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,9 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_MATERIAL_TYPES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_MATERIAL_TYPES_H_INCLUDED__ |  | ||||||
|  | #include "irrTypes.h" | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -57,19 +58,17 @@ namespace video | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Array holding the built in material type names | //! Array holding the built in material type names | ||||||
| 	const char* const sBuiltInMaterialTypeNames[] = | const char *const sBuiltInMaterialTypeNames[] = { | ||||||
| 	{ |  | ||||||
| 		"solid", | 		"solid", | ||||||
| 		"trans_alphach", | 		"trans_alphach", | ||||||
| 		"trans_alphach_ref", | 		"trans_alphach_ref", | ||||||
| 		"trans_vertex_alpha", | 		"trans_vertex_alpha", | ||||||
| 		"onetexture_blend", | 		"onetexture_blend", | ||||||
| 		0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  | constexpr u32 numBuiltInMaterials = | ||||||
|  | 		sizeof(sBuiltInMaterialTypeNames) / sizeof(char *) - 1; | ||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif // __E_MATERIAL_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,65 +0,0 @@ | |||||||
| // Copyright (C) 2002-2012 Nikolaus Gebhardt |  | ||||||
| // This file is part of the "Irrlicht Engine". |  | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h |  | ||||||
|  |  | ||||||
| #ifndef __E_MESH_WRITER_ENUMS_H_INCLUDED__ |  | ||||||
| #define __E_MESH_WRITER_ENUMS_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrTypes.h" |  | ||||||
|  |  | ||||||
| namespace irr |  | ||||||
| { |  | ||||||
| namespace scene |  | ||||||
| { |  | ||||||
|  |  | ||||||
| 	//! An enumeration for all supported types of built-in mesh writers |  | ||||||
| 	/** A scene mesh writers is represented by a four character code |  | ||||||
| 	such as 'irrm' or 'coll' instead of simple numbers, to avoid |  | ||||||
| 	name clashes with external mesh writers.*/ |  | ||||||
| 	enum EMESH_WRITER_TYPE |  | ||||||
| 	{ |  | ||||||
| 		//! Irrlicht native mesh writer, for static .irrmesh files. |  | ||||||
| 		EMWT_IRR_MESH     = MAKE_IRR_ID('i','r','r','m'), |  | ||||||
|  |  | ||||||
| 		//! COLLADA mesh writer for .dae and .xml files |  | ||||||
| 		EMWT_COLLADA      = MAKE_IRR_ID('c','o','l','l'), |  | ||||||
|  |  | ||||||
| 		//! STL mesh writer for .stl files |  | ||||||
| 		EMWT_STL          = MAKE_IRR_ID('s','t','l',0), |  | ||||||
|  |  | ||||||
| 		//! OBJ mesh writer for .obj files |  | ||||||
| 		EMWT_OBJ          = MAKE_IRR_ID('o','b','j',0), |  | ||||||
|  |  | ||||||
| 		//! PLY mesh writer for .ply files |  | ||||||
| 		EMWT_PLY          = MAKE_IRR_ID('p','l','y',0), |  | ||||||
|  |  | ||||||
| 		//! B3D mesh writer, for static .b3d files |  | ||||||
| 		EMWT_B3D          = MAKE_IRR_ID('b', '3', 'd', 0) |  | ||||||
| 	}; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! flags configuring mesh writing |  | ||||||
| 	enum E_MESH_WRITER_FLAGS |  | ||||||
| 	{ |  | ||||||
| 		//! no writer flags |  | ||||||
| 		EMWF_NONE = 0, |  | ||||||
|  |  | ||||||
| 		//! write lightmap textures out if possible |  | ||||||
| 		//! Currently not used by any Irrlicht mesh-writer |  | ||||||
| 		// (Note: User meshwriters can still use it) |  | ||||||
| 		EMWF_WRITE_LIGHTMAPS = 0x1, |  | ||||||
|  |  | ||||||
| 		//! write in a way that consumes less disk space |  | ||||||
| 		// (Note: Mainly there for user meshwriters) |  | ||||||
| 		EMWF_WRITE_COMPRESSED = 0x2, |  | ||||||
|  |  | ||||||
| 		//! write in binary format rather than text |  | ||||||
| 		EMWF_WRITE_BINARY = 0x4 |  | ||||||
| 	}; |  | ||||||
|  |  | ||||||
| } // end namespace scene |  | ||||||
| } // end namespace irr |  | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif // __E_MESH_WRITER_ENUMS_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_PRIMITIVE_TYPES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_PRIMITIVE_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -42,6 +41,3 @@ namespace scene | |||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_READ_FILE_TYPES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_READ_FILE_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrTypes.h" | #include "irrTypes.h" | ||||||
|  |  | ||||||
| @@ -29,6 +28,3 @@ namespace io | |||||||
| }; | }; | ||||||
| } // end namespace io | } // end namespace io | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __E_SCENE_NODE_TYPES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_SCENE_NODE_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrTypes.h" | #include "irrTypes.h" | ||||||
|  |  | ||||||
| @@ -46,11 +45,5 @@ namespace scene | |||||||
| 	ESNT_ANY = MAKE_IRR_ID('a', 'n', 'y', '_') | 	ESNT_ANY = MAKE_IRR_ID('a', 'n', 'y', '_') | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,5 +1,4 @@ | |||||||
| #ifndef __E_SHADER_TYPES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_SHADER_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrTypes.h" | #include "irrTypes.h" | ||||||
|  |  | ||||||
| @@ -82,9 +81,5 @@ const c8* const GEOMETRY_SHADER_TYPE_NAMES[] = { | |||||||
| 		"gs_4_0", | 		"gs_4_0", | ||||||
| 		0}; | 		0}; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif // __E_SHADER_TYPES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,5 +1,4 @@ | |||||||
| #ifndef __E_VERTEX_ATTRIBUTES_H_INCLUDED__ | #pragma once | ||||||
| #define __E_VERTEX_ATTRIBUTES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -20,8 +19,7 @@ enum E_VERTEX_ATTRIBUTES | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Array holding the built in vertex attribute names | //! Array holding the built in vertex attribute names | ||||||
| const char* const sBuiltInVertexAttributeNames[] = | const char *const sBuiltInVertexAttributeNames[] = { | ||||||
| { |  | ||||||
| 		"inVertexPosition", | 		"inVertexPosition", | ||||||
| 		"inVertexNormal", | 		"inVertexNormal", | ||||||
| 		"inVertexColor", | 		"inVertexColor", | ||||||
| @@ -29,10 +27,8 @@ const char* const sBuiltInVertexAttributeNames[] = | |||||||
| 		"inTexCoord1", | 		"inTexCoord1", | ||||||
| 		"inVertexTangent", | 		"inVertexTangent", | ||||||
| 		"inVertexBinormal", | 		"inVertexBinormal", | ||||||
| 	0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif //__E_VERTEX_ATTRIBUTES_H_INCLUDED__ |  | ||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_ANIMATED_MESH_H_INCLUDED__ | #pragma once | ||||||
| #define __I_ANIMATED_MESH_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "aabbox3d.h" | #include "aabbox3d.h" | ||||||
| #include "IMesh.h" | #include "IMesh.h" | ||||||
| @@ -20,7 +19,6 @@ namespace scene | |||||||
| class IAnimatedMesh : public IMesh | class IAnimatedMesh : public IMesh | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Gets the frame count of the animated mesh. | 	//! Gets the frame count of the animated mesh. | ||||||
| 	/** Note that the play-time is usually getFrameCount()-1 as it stops as soon as the last frame-key is reached. | 	/** Note that the play-time is usually getFrameCount()-1 as it stops as soon as the last frame-key is reached. | ||||||
| 	\return The amount of frames. If the amount is 1, | 	\return The amount of frames. If the amount is 1, | ||||||
| @@ -69,6 +67,3 @@ namespace scene | |||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_ANIMATED_MESH_SCENE_NODE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_ANIMATED_MESH_SCENE_NODE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "ISceneNode.h" | #include "ISceneNode.h" | ||||||
| #include "IBoneSceneNode.h" | #include "IBoneSceneNode.h" | ||||||
| @@ -25,7 +24,6 @@ namespace scene | |||||||
| 	EJUOR_CONTROL | 	EJUOR_CONTROL | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| class IAnimatedMeshSceneNode; | class IAnimatedMeshSceneNode; | ||||||
|  |  | ||||||
| //! Callback interface for catching events of ended animations. | //! Callback interface for catching events of ended animations. | ||||||
| @@ -36,7 +34,6 @@ namespace scene | |||||||
| class IAnimationEndCallBack : public virtual IReferenceCounted | class IAnimationEndCallBack : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Will be called when the animation playback has ended. | 	//! Will be called when the animation playback has ended. | ||||||
| 	/** See IAnimatedMeshSceneNode::setAnimationEndCallback for | 	/** See IAnimatedMeshSceneNode::setAnimationEndCallback for | ||||||
| 	more information. | 	more information. | ||||||
| @@ -48,13 +45,12 @@ namespace scene | |||||||
| class IAnimatedMeshSceneNode : public ISceneNode | class IAnimatedMeshSceneNode : public ISceneNode | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Constructor | 	//! Constructor | ||||||
| 	IAnimatedMeshSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id, | 	IAnimatedMeshSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id, | ||||||
| 			const core::vector3df &position = core::vector3df(0, 0, 0), | 			const core::vector3df &position = core::vector3df(0, 0, 0), | ||||||
| 			const core::vector3df &rotation = core::vector3df(0, 0, 0), | 			const core::vector3df &rotation = core::vector3df(0, 0, 0), | ||||||
| 			const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) | 			const core::vector3df &scale = core::vector3df(1.0f, 1.0f, 1.0f)) : | ||||||
| 			: ISceneNode(parent, mgr, id, position, rotation, scale) {} | 			ISceneNode(parent, mgr, id, position, rotation, scale) {} | ||||||
|  |  | ||||||
| 	//! Destructor | 	//! Destructor | ||||||
| 	virtual ~IAnimatedMeshSceneNode() {} | 	virtual ~IAnimatedMeshSceneNode() {} | ||||||
| @@ -167,11 +163,7 @@ namespace scene | |||||||
| 	\param newManager An optional new scene manager. | 	\param newManager An optional new scene manager. | ||||||
| 	\return The newly created clone of this node. */ | 	\return The newly created clone of this node. */ | ||||||
| 	virtual ISceneNode *clone(ISceneNode *newParent = 0, ISceneManager *newManager = 0) = 0; | 	virtual ISceneNode *clone(ISceneNode *newParent = 0, ISceneManager *newManager = 0) = 0; | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,29 +2,13 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_ATTRIBUTES_H_INCLUDED__ | #pragma once | ||||||
| #define __I_ATTRIBUTES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "SColor.h" |  | ||||||
| #include "vector3d.h" |  | ||||||
| #include "vector2d.h" |  | ||||||
| #include "line2d.h" |  | ||||||
| #include "line3d.h" |  | ||||||
| #include "triangle3d.h" |  | ||||||
| #include "position2d.h" |  | ||||||
| #include "rect.h" |  | ||||||
| #include "dimension2d.h" |  | ||||||
| #include "matrix4.h" |  | ||||||
| #include "quaternion.h" |  | ||||||
| #include "plane3d.h" |  | ||||||
| #include "triangle3d.h" |  | ||||||
| #include "line2d.h" |  | ||||||
| #include "line3d.h" |  | ||||||
| #include "irrString.h" |  | ||||||
| #include "irrArray.h" |  | ||||||
| #include "EAttributes.h" | #include "EAttributes.h" | ||||||
| #include "path.h" |  | ||||||
|  | // not needed here but I can't be bothered to clean the transitive includes up. | ||||||
|  | #include "quaternion.h" | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -39,7 +23,6 @@ namespace io | |||||||
| class IAttributes : public virtual IReferenceCounted | class IAttributes : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Returns amount of attributes in this collection of attributes. | 	//! Returns amount of attributes in this collection of attributes. | ||||||
| 	virtual u32 getAttributeCount() const = 0; | 	virtual u32 getAttributeCount() const = 0; | ||||||
|  |  | ||||||
| @@ -55,16 +38,6 @@ public: | |||||||
| 	//! \param index: Index value, must be between 0 and getAttributeCount()-1. | 	//! \param index: Index value, must be between 0 and getAttributeCount()-1. | ||||||
| 	virtual E_ATTRIBUTE_TYPE getAttributeType(s32 index) const = 0; | 	virtual E_ATTRIBUTE_TYPE getAttributeType(s32 index) const = 0; | ||||||
|  |  | ||||||
| 	//! Returns the type string of the attribute |  | ||||||
| 	//! \param attributeName: String for the attribute type |  | ||||||
| 	//! \param defaultNotFound Value returned when attributeName was not found |  | ||||||
| 	virtual const wchar_t* getAttributeTypeString(const c8* attributeName, const wchar_t* defaultNotFound = L"unknown") const = 0; |  | ||||||
|  |  | ||||||
| 	//! Returns the type string of the attribute by index. |  | ||||||
| 	//! \param index: Index value, must be between 0 and getAttributeCount()-1. |  | ||||||
| 	//! \param defaultNotFound Value returned for an invalid index |  | ||||||
| 	virtual const wchar_t* getAttributeTypeString(s32 index, const wchar_t* defaultNotFound = L"unknown") const = 0; |  | ||||||
|  |  | ||||||
| 	//! Returns if an attribute with a name exists | 	//! Returns if an attribute with a name exists | ||||||
| 	virtual bool existsAttribute(const c8 *attributeName) const = 0; | 	virtual bool existsAttribute(const c8 *attributeName) const = 0; | ||||||
|  |  | ||||||
| @@ -74,7 +47,6 @@ public: | |||||||
| 	//! Removes all attributes | 	//! Removes all attributes | ||||||
| 	virtual void clear() = 0; | 	virtual void clear() = 0; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	/* | 	/* | ||||||
|  |  | ||||||
| 		Integer Attribute | 		Integer Attribute | ||||||
| @@ -125,7 +97,6 @@ public: | |||||||
| 	//! Sets an attribute as float value | 	//! Sets an attribute as float value | ||||||
| 	virtual void setAttribute(s32 index, f32 value) = 0; | 	virtual void setAttribute(s32 index, f32 value) = 0; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	/* | 	/* | ||||||
| 		Bool Attribute | 		Bool Attribute | ||||||
| 	*/ | 	*/ | ||||||
| @@ -148,10 +119,7 @@ public: | |||||||
|  |  | ||||||
| 	//! Sets an attribute as boolean value | 	//! Sets an attribute as boolean value | ||||||
| 	virtual void setAttribute(s32 index, bool value) = 0; | 	virtual void setAttribute(s32 index, bool value) = 0; | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace io | } // end namespace io | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_BILLBOARD_SCENE_NODE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_BILLBOARD_SCENE_NODE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "ISceneNode.h" | #include "ISceneNode.h" | ||||||
|  |  | ||||||
| @@ -22,11 +21,10 @@ lensflares, particles and things like that. | |||||||
| class IBillboardSceneNode : public ISceneNode | class IBillboardSceneNode : public ISceneNode | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Constructor | 	//! Constructor | ||||||
| 	IBillboardSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id, | 	IBillboardSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id, | ||||||
| 		const core::vector3df& position = core::vector3df(0,0,0)) | 			const core::vector3df &position = core::vector3df(0, 0, 0)) : | ||||||
| 		: ISceneNode(parent, mgr, id, position) {} | 			ISceneNode(parent, mgr, id, position) {} | ||||||
|  |  | ||||||
| 	//! Sets the size of the billboard, making it rectangular. | 	//! Sets the size of the billboard, making it rectangular. | ||||||
| 	virtual void setSize(const core::dimension2d<f32> &size) = 0; | 	virtual void setSize(const core::dimension2d<f32> &size) = 0; | ||||||
| @@ -90,7 +88,3 @@ public: | |||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_BONE_SCENE_NODE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_BONE_SCENE_NODE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "ISceneNode.h" | #include "ISceneNode.h" | ||||||
|  |  | ||||||
| @@ -41,21 +40,18 @@ namespace scene | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for bone animation modes | //! Names for bone animation modes | ||||||
| 	const c8* const BoneAnimationModeNames[] = | const c8 *const BoneAnimationModeNames[] = { | ||||||
| 	{ |  | ||||||
| 		"automatic", | 		"automatic", | ||||||
| 		"animated", | 		"animated", | ||||||
| 		"unanimated", | 		"unanimated", | ||||||
| 		0, | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Interface for bones used for skeletal animation. | //! Interface for bones used for skeletal animation. | ||||||
| /** Used with ISkinnedMesh and IAnimatedMeshSceneNode. */ | /** Used with ISkinnedMesh and IAnimatedMeshSceneNode. */ | ||||||
| class IBoneSceneNode : public ISceneNode | class IBoneSceneNode : public ISceneNode | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	IBoneSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id = -1) : | 	IBoneSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id = -1) : | ||||||
| 			ISceneNode(parent, mgr, id), positionHint(-1), scaleHint(-1), rotationHint(-1) {} | 			ISceneNode(parent, mgr, id), positionHint(-1), scaleHint(-1), rotationHint(-1) {} | ||||||
|  |  | ||||||
| @@ -96,9 +92,5 @@ namespace scene | |||||||
| 	s32 rotationHint; | 	s32 rotationHint; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_CAMERA_SCENE_NODE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_CAMERA_SCENE_NODE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "ISceneNode.h" | #include "ISceneNode.h" | ||||||
| #include "IEventReceiver.h" | #include "IEventReceiver.h" | ||||||
| @@ -23,13 +22,13 @@ namespace scene | |||||||
| class ICameraSceneNode : public ISceneNode, public IEventReceiver | class ICameraSceneNode : public ISceneNode, public IEventReceiver | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Constructor | 	//! Constructor | ||||||
| 	ICameraSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id, | 	ICameraSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id, | ||||||
| 			const core::vector3df &position = core::vector3df(0, 0, 0), | 			const core::vector3df &position = core::vector3df(0, 0, 0), | ||||||
| 			const core::vector3df &rotation = core::vector3df(0, 0, 0), | 			const core::vector3df &rotation = core::vector3df(0, 0, 0), | ||||||
| 			const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f)) | 			const core::vector3df &scale = core::vector3df(1.0f, 1.0f, 1.0f)) : | ||||||
| 			: ISceneNode(parent, mgr, id, position, rotation, scale), IsOrthogonal(false) {} | 			ISceneNode(parent, mgr, id, position, rotation, scale), | ||||||
|  | 			IsOrthogonal(false) {} | ||||||
|  |  | ||||||
| 	//! Sets the projection matrix of the camera. | 	//! Sets the projection matrix of the camera. | ||||||
| 	/** The core::matrix4 class has some methods to build a | 	/** The core::matrix4 class has some methods to build a | ||||||
| @@ -173,7 +172,6 @@ namespace scene | |||||||
| 	virtual bool getTargetAndRotationBinding(void) const = 0; | 	virtual bool getTargetAndRotationBinding(void) const = 0; | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
|  |  | ||||||
| 	void cloneMembers(const ICameraSceneNode *toCopyFrom) | 	void cloneMembers(const ICameraSceneNode *toCopyFrom) | ||||||
| 	{ | 	{ | ||||||
| 		IsOrthogonal = toCopyFrom->IsOrthogonal; | 		IsOrthogonal = toCopyFrom->IsOrthogonal; | ||||||
| @@ -184,6 +182,3 @@ namespace scene | |||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -57,5 +57,3 @@ namespace video | |||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_CURSOR_CONTROL_H_INCLUDED__ | #pragma once | ||||||
| #define __I_CURSOR_CONTROL_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "position2d.h" | #include "position2d.h" | ||||||
| @@ -42,8 +41,7 @@ namespace gui | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for ECURSOR_ICON | //! Names for ECURSOR_ICON | ||||||
| 	const c8* const GUICursorIconNames[ECI_COUNT+1] = | const c8 *const GUICursorIconNames[ECI_COUNT + 1] = { | ||||||
| 	{ |  | ||||||
| 		"normal", | 		"normal", | ||||||
| 		"cross", | 		"cross", | ||||||
| 		"hand", | 		"hand", | ||||||
| @@ -57,19 +55,19 @@ namespace gui | |||||||
| 		"sizens", | 		"sizens", | ||||||
| 		"sizewe", | 		"sizewe", | ||||||
| 		"sizeup", | 		"sizeup", | ||||||
| 		0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| //! structure used to set sprites as cursors. | //! structure used to set sprites as cursors. | ||||||
| struct SCursorSprite | struct SCursorSprite | ||||||
| { | { | ||||||
| 		SCursorSprite() | 	SCursorSprite() : | ||||||
| 		: SpriteBank(0), SpriteId(-1) | 			SpriteBank(0), SpriteId(-1) | ||||||
| 	{ | 	{ | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 		SCursorSprite( gui::IGUISpriteBank * spriteBank, s32 spriteId, const core::position2d<s32> &hotspot=(core::position2d<s32>(0,0)) ) | 	SCursorSprite(gui::IGUISpriteBank *spriteBank, s32 spriteId, const core::position2d<s32> &hotspot = (core::position2d<s32>(0, 0))) : | ||||||
| 		: SpriteBank(spriteBank), SpriteId(spriteId), HotSpot(hotspot) | 			SpriteBank(spriteBank), SpriteId(spriteId), HotSpot(hotspot) | ||||||
| 	{ | 	{ | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -97,7 +95,6 @@ namespace gui | |||||||
| class ICursorControl : public virtual IReferenceCounted | class ICursorControl : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Changes the visible state of the mouse cursor. | 	//! Changes the visible state of the mouse cursor. | ||||||
| 	/** \param visible: The new visible state. If true, the cursor will be visible, | 	/** \param visible: The new visible state. If true, the cursor will be visible, | ||||||
| 	if false, it will be invisible. */ | 	if false, it will be invisible. */ | ||||||
| @@ -194,9 +191,5 @@ namespace gui | |||||||
| 	virtual ECURSOR_PLATFORM_BEHAVIOR getPlatformBehavior() const { return ECPB_NONE; } | 	virtual ECURSOR_PLATFORM_BEHAVIOR getPlatformBehavior() const { return ECPB_NONE; } | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_DUMMY_TRANSFORMATION_SCENE_NODE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_DUMMY_TRANSFORMATION_SCENE_NODE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "ISceneNode.h" | #include "ISceneNode.h" | ||||||
|  |  | ||||||
| @@ -23,10 +22,9 @@ joint scene nodes when playing skeletal animations. | |||||||
| class IDummyTransformationSceneNode : public ISceneNode | class IDummyTransformationSceneNode : public ISceneNode | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Constructor | 	//! Constructor | ||||||
| 	IDummyTransformationSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id) | 	IDummyTransformationSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id) : | ||||||
| 		: ISceneNode(parent, mgr, id) {} | 			ISceneNode(parent, mgr, id) {} | ||||||
|  |  | ||||||
| 	//! Returns a reference to the current relative transformation matrix. | 	//! Returns a reference to the current relative transformation matrix. | ||||||
| 	/** This is the matrix, this scene node uses instead of scale, translation | 	/** This is the matrix, this scene node uses instead of scale, translation | ||||||
| @@ -36,7 +34,3 @@ public: | |||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_EVENT_RECEIVER_H_INCLUDED__ | #pragma once | ||||||
| #define __I_EVENT_RECEIVER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "ILogger.h" | #include "ILogger.h" | ||||||
| #include "Keycodes.h" | #include "Keycodes.h" | ||||||
| @@ -309,7 +308,6 @@ namespace irr | |||||||
| }; | }; | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
|  |  | ||||||
|  |  | ||||||
| //! SEvents hold information about an event. See irr::IEventReceiver for details on event handling. | //! SEvents hold information about an event. See irr::IEventReceiver for details on event handling. | ||||||
| struct SEvent | struct SEvent | ||||||
| { | { | ||||||
| @@ -324,7 +322,6 @@ struct SEvent | |||||||
|  |  | ||||||
| 		//! Type of GUI Event | 		//! Type of GUI Event | ||||||
| 		gui::EGUI_EVENT_TYPE EventType; | 		gui::EGUI_EVENT_TYPE EventType; | ||||||
|  |  | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	//! Any kind of mouse event. | 	//! Any kind of mouse event. | ||||||
| @@ -573,7 +570,6 @@ struct SEvent | |||||||
| 		struct SSystemEvent SystemEvent; | 		struct SSystemEvent SystemEvent; | ||||||
| 		struct SApplicationEvent ApplicationEvent; | 		struct SApplicationEvent ApplicationEvent; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Interface of an object which can receive events. | //! Interface of an object which can receive events. | ||||||
| @@ -585,7 +581,6 @@ path it takes through the system. */ | |||||||
| class IEventReceiver | class IEventReceiver | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Destructor | 	//! Destructor | ||||||
| 	virtual ~IEventReceiver() {} | 	virtual ~IEventReceiver() {} | ||||||
|  |  | ||||||
| @@ -598,7 +593,6 @@ public: | |||||||
| 	virtual bool OnEvent(const SEvent &event) = 0; | 	virtual bool OnEvent(const SEvent &event) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Information on a joystick, returned from @ref irr::IrrlichtDevice::activateJoysticks() | //! Information on a joystick, returned from @ref irr::IrrlichtDevice::activateJoysticks() | ||||||
| struct SJoystickInfo | struct SJoystickInfo | ||||||
| { | { | ||||||
| @@ -635,8 +629,4 @@ struct SJoystickInfo | |||||||
| 	} PovHat; | 	} PovHat; | ||||||
| }; // struct SJoystickInfo | }; // struct SJoystickInfo | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_FILE_ARCHIVE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_FILE_ARCHIVE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReadFile.h" | #include "IReadFile.h" | ||||||
| #include "IFileList.h" | #include "IFileList.h" | ||||||
| @@ -30,21 +29,6 @@ enum E_FILE_ARCHIVE_TYPE | |||||||
| 	//! A gzip archive | 	//! A gzip archive | ||||||
| 	EFAT_GZIP = MAKE_IRR_ID('g', 'z', 'i', 'p'), | 	EFAT_GZIP = MAKE_IRR_ID('g', 'z', 'i', 'p'), | ||||||
|  |  | ||||||
| 	//! A virtual directory |  | ||||||
| 	EFAT_FOLDER  = MAKE_IRR_ID('f','l','d','r'), |  | ||||||
|  |  | ||||||
| 	//! An ID Software PAK archive |  | ||||||
| 	EFAT_PAK     = MAKE_IRR_ID('P','A','K', 0), |  | ||||||
|  |  | ||||||
| 	//! A Nebula Device archive |  | ||||||
| 	EFAT_NPK     = MAKE_IRR_ID('N','P','K', 0), |  | ||||||
|  |  | ||||||
| 	//! A Tape ARchive |  | ||||||
| 	EFAT_TAR     = MAKE_IRR_ID('T','A','R', 0), |  | ||||||
|  |  | ||||||
| 	//! A wad Archive, Quake2, Halflife |  | ||||||
| 	EFAT_WAD     = MAKE_IRR_ID('W','A','D', 0), |  | ||||||
|  |  | ||||||
| 	//! An Android asset file archive | 	//! An Android asset file archive | ||||||
| 	EFAT_ANDROID_ASSET = MAKE_IRR_ID('A', 'S', 'S', 'E'), | 	EFAT_ANDROID_ASSET = MAKE_IRR_ID('A', 'S', 'S', 'E'), | ||||||
|  |  | ||||||
| @@ -56,7 +40,6 @@ enum E_FILE_ARCHIVE_TYPE | |||||||
| class IFileArchive : public virtual IReferenceCounted | class IFileArchive : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Opens a file based on its name | 	//! Opens a file based on its name | ||||||
| 	/** Creates and returns a new IReadFile for a file in the archive. | 	/** Creates and returns a new IReadFile for a file in the archive. | ||||||
| 	\param filename The file to open | 	\param filename The file to open | ||||||
| @@ -140,9 +123,5 @@ public: | |||||||
| 	virtual IFileArchive *createArchive(io::IReadFile *file, bool ignoreCase, bool ignorePaths) const = 0; | 	virtual IFileArchive *createArchive(io::IReadFile *file, bool ignoreCase, bool ignorePaths) const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace io | } // end namespace io | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_FILE_LIST_H_INCLUDED__ | #pragma once | ||||||
| #define __I_FILE_LIST_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "path.h" | #include "path.h" | ||||||
| @@ -88,7 +87,3 @@ public: | |||||||
|  |  | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
| } // end namespace io | } // end namespace io | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_FILE_SYSTEM_H_INCLUDED__ | #pragma once | ||||||
| #define __I_FILE_SYSTEM_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "IFileArchive.h" | #include "IFileArchive.h" | ||||||
| @@ -22,7 +21,6 @@ class IWriteFile; | |||||||
| class IFileList; | class IFileList; | ||||||
| class IAttributes; | class IAttributes; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! The FileSystem manages files and archives and provides access to them. | //! The FileSystem manages files and archives and provides access to them. | ||||||
| /** It manages where files are, so that modules which use the the IO do not | /** It manages where files are, so that modules which use the the IO do not | ||||||
| need to know where every file is located. A file could be in a .zip-Archive or | need to know where every file is located. A file could be in a .zip-Archive or | ||||||
| @@ -30,7 +28,6 @@ as file on disk, using the IFileSystem makes no difference to this. */ | |||||||
| class IFileSystem : public virtual IReferenceCounted | class IFileSystem : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Opens a file for read access. | 	//! Opens a file for read access. | ||||||
| 	/** \param filename: Name of file to open. | 	/** \param filename: Name of file to open. | ||||||
| 	\return Pointer to the created file interface. | 	\return Pointer to the created file interface. | ||||||
| @@ -78,7 +75,6 @@ public: | |||||||
| 	*/ | 	*/ | ||||||
| 	virtual IWriteFile *createMemoryWriteFile(void *memory, s32 len, const path &fileName, bool deleteMemoryWhenDropped = false) = 0; | 	virtual IWriteFile *createMemoryWriteFile(void *memory, s32 len, const path &fileName, bool deleteMemoryWhenDropped = false) = 0; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Opens a file for write access. | 	//! Opens a file for write access. | ||||||
| 	/** \param filename: Name of file to open. | 	/** \param filename: Name of file to open. | ||||||
| 	\param append: If the file already exist, all write operations are | 	\param append: If the file already exist, all write operations are | ||||||
| @@ -265,9 +261,5 @@ public: | |||||||
| 	virtual bool existFile(const path &filename) const = 0; | 	virtual bool existFile(const path &filename) const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace io | } // end namespace io | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "EShaderTypes.h" | #include "EShaderTypes.h" | ||||||
| #include "EMaterialTypes.h" | #include "EMaterialTypes.h" | ||||||
| @@ -28,7 +27,6 @@ class IShaderConstantSetCallBack; | |||||||
| class IGPUProgrammingServices | class IGPUProgrammingServices | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Destructor | 	//! Destructor | ||||||
| 	virtual ~IGPUProgrammingServices() {} | 	virtual ~IGPUProgrammingServices() {} | ||||||
|  |  | ||||||
| @@ -155,7 +153,7 @@ public: | |||||||
| 				callback, baseMaterial, userData); | 				callback, baseMaterial, userData); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	//! Like IGPUProgrammingServices::addShaderMaterial(), but loads from files. | 	//! Like addHighLevelShaderMaterial(), but loads from files. | ||||||
| 	/** \param vertexShaderProgramFileName Text file containing the source | 	/** \param vertexShaderProgramFileName Text file containing the source | ||||||
| 	of the vertex shader program. Set to empty string if no vertex shader | 	of the vertex shader program. Set to empty string if no vertex shader | ||||||
| 	shall be created. | 	shall be created. | ||||||
| @@ -279,7 +277,7 @@ public: | |||||||
| 				callback, baseMaterial, userData); | 				callback, baseMaterial, userData); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	//! Like IGPUProgrammingServices::addShaderMaterial(), but loads from files. | 	//! Like addHighLevelShaderMaterial(), but loads from files. | ||||||
| 	/** \param vertexShaderProgram Text file handle containing the source | 	/** \param vertexShaderProgram Text file handle containing the source | ||||||
| 	of the vertex shader program. Set to 0 if no vertex shader shall be | 	of the vertex shader program. Set to 0 if no vertex shader shall be | ||||||
| 	created. | 	created. | ||||||
| @@ -357,99 +355,15 @@ public: | |||||||
| 				callback, baseMaterial, userData); | 				callback, baseMaterial, userData); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	//! Adds a new ASM shader material renderer to the VideoDriver | 	//! Delete a shader material and associated data. | ||||||
| 	/** Note that it is a good idea to call IVideoDriver::queryFeature() in | 	/** | ||||||
| 	advance to check if the IVideoDriver supports the vertex and/or pixel | 	After you have deleted a material it is invalid to still use and doing | ||||||
| 	shader version your are using. | 	so might result in a crash. The ID may be reused in the future when new | ||||||
|  | 	materials are added. | ||||||
| 	The material is added to the VideoDriver like with | 	\param material Number of the material type. Must not be a built-in | ||||||
| 	IVideoDriver::addMaterialRenderer() and can be used like it had been | 	material. */ | ||||||
| 	added with that method. | 	virtual void deleteShaderMaterial(s32 material) = 0; | ||||||
| 	\param vertexShaderProgram String containing the source of the vertex |  | ||||||
| 	shader program. This can be 0 if no vertex program shall be used. |  | ||||||
|  |  | ||||||
| 	For DX8 programs, the will always input registers look like this: v0: |  | ||||||
| 	position, v1: normal, v2: color, v3: texture coordinates, v4: texture |  | ||||||
| 	coordinates 2 if available. |  | ||||||
|  |  | ||||||
| 	For DX9 programs, you can manually set the registers using the dcl_ |  | ||||||
| 	statements. |  | ||||||
| 	\param pixelShaderProgram String containing the source of the pixel |  | ||||||
| 	shader program. This can be 0 if you don't want to use a pixel shader. |  | ||||||
| 	\param callback Pointer to an implementation of |  | ||||||
| 	IShaderConstantSetCallBack in which you can set the needed vertex and |  | ||||||
| 	pixel shader program constants. Set this to 0 if you don't need this. |  | ||||||
| 	\param baseMaterial Base material which renderstates will be used to |  | ||||||
| 	shade the material. |  | ||||||
| 	\param userData a user data int. This int can be set to any value and |  | ||||||
| 	will be set as parameter in the callback method when calling |  | ||||||
| 	OnSetConstants(). In this way it is easily possible to use the same |  | ||||||
| 	callback method for multiple materials and distinguish between them |  | ||||||
| 	during the call. |  | ||||||
| 	\return Returns the number of the material type which can be set in |  | ||||||
| 	SMaterial::MaterialType to use the renderer. -1 is returned if an |  | ||||||
| 	error occurred. -1 is returned for example if a vertex or pixel shader |  | ||||||
| 	program could not be compiled, the error strings are then printed out |  | ||||||
| 	into the error log, and can be caught with a custom event receiver. */ |  | ||||||
| 	virtual s32 addShaderMaterial(const c8* vertexShaderProgram = 0, |  | ||||||
| 		const c8* pixelShaderProgram = 0, |  | ||||||
| 		IShaderConstantSetCallBack* callback = 0, |  | ||||||
| 		E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID, |  | ||||||
| 		s32 userData = 0) = 0; |  | ||||||
|  |  | ||||||
| 	//! Like IGPUProgrammingServices::addShaderMaterial(), but loads from files. |  | ||||||
| 	/** \param vertexShaderProgram Text file containing the source of the |  | ||||||
| 	vertex shader program. Set to 0 if no shader shall be created. |  | ||||||
| 	\param pixelShaderProgram Text file containing the source of the pixel |  | ||||||
| 	shader program. Set to 0 if no shader shall be created. |  | ||||||
| 	\param callback Pointer to an IShaderConstantSetCallback object to |  | ||||||
| 	which the OnSetConstants function is called. |  | ||||||
| 	\param baseMaterial baseMaterial |  | ||||||
| 	\param userData a user data int. This int can be set to any value and |  | ||||||
| 	will be set as parameter in the callback method when calling |  | ||||||
| 	OnSetConstants(). In this way it is easily possible to use the same |  | ||||||
| 	callback method for multiple materials and distinguish between them |  | ||||||
| 	during the call. |  | ||||||
| 	\return Returns the number of the material type which can be set in |  | ||||||
| 	SMaterial::MaterialType to use the renderer. -1 is returned if an |  | ||||||
| 	error occurred. -1 is returned for example if a vertex or pixel shader |  | ||||||
| 	program could not be compiled, the error strings are then printed out |  | ||||||
| 	into the error log, and can be caught with a custom event receiver. */ |  | ||||||
| 	virtual s32 addShaderMaterialFromFiles(io::IReadFile* vertexShaderProgram, |  | ||||||
| 		io::IReadFile* pixelShaderProgram, |  | ||||||
| 		IShaderConstantSetCallBack* callback = 0, |  | ||||||
| 		E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID, |  | ||||||
| 		s32 userData = 0) = 0; |  | ||||||
|  |  | ||||||
| 	//! Like IGPUProgrammingServices::addShaderMaterial(), but loads from files. |  | ||||||
| 	/** \param vertexShaderProgramFileName Text file name containing the |  | ||||||
| 	source of the vertex shader program. Set to 0 if no shader shall be |  | ||||||
| 	created. |  | ||||||
| 	\param pixelShaderProgramFileName Text file name containing the source |  | ||||||
| 	of the pixel shader program. Set to 0 if no shader shall be created. |  | ||||||
| 	\param callback Pointer to an IShaderConstantSetCallback object on |  | ||||||
| 	which the OnSetConstants function is called. |  | ||||||
| 	\param baseMaterial baseMaterial |  | ||||||
| 	\param userData a user data int. This int can be set to any value and |  | ||||||
| 	will be set as parameter in the callback method when calling |  | ||||||
| 	OnSetConstants(). In this way it is easily possible to use the same |  | ||||||
| 	callback method for multiple materials and distinguish between them |  | ||||||
| 	during the call. |  | ||||||
| 	\return Returns the number of the material type which can be set in |  | ||||||
| 	SMaterial::MaterialType to use the renderer. -1 is returned if an |  | ||||||
| 	error occurred. -1 is returned for example if a vertex or pixel shader |  | ||||||
| 	program could not be compiled, the error strings are then printed out |  | ||||||
| 	into the error log, and can be caught with a custom event receiver. */ |  | ||||||
| 	virtual s32 addShaderMaterialFromFiles(const io::path& vertexShaderProgramFileName, |  | ||||||
| 		const io::path& pixelShaderProgramFileName, |  | ||||||
| 		IShaderConstantSetCallBack* callback = 0, |  | ||||||
| 		E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID, |  | ||||||
| 		s32 userData = 0) = 0; |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_BUTTON_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_BUTTON_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
|  |  | ||||||
| @@ -46,8 +45,7 @@ namespace gui | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for gui button state icons | //! Names for gui button state icons | ||||||
| 	const c8* const GUIButtonStateNames[EGBS_COUNT+1] = | const c8 *const GUIButtonStateNames[EGBS_COUNT + 1] = { | ||||||
| 	{ |  | ||||||
| 		"buttonUp", | 		"buttonUp", | ||||||
| 		"buttonDown", | 		"buttonDown", | ||||||
| 		"buttonMouseOver", | 		"buttonMouseOver", | ||||||
| @@ -55,7 +53,7 @@ namespace gui | |||||||
| 		"buttonFocused", | 		"buttonFocused", | ||||||
| 		"buttonNotFocused", | 		"buttonNotFocused", | ||||||
| 		"buttonDisabled", | 		"buttonDisabled", | ||||||
| 		0	// count | 		0, // count | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| //! State of buttons used for drawing texture images. | //! State of buttons used for drawing texture images. | ||||||
| @@ -88,8 +86,7 @@ namespace gui | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for gui button image states | //! Names for gui button image states | ||||||
| 	const c8* const GUIButtonImageStateNames[EGBIS_COUNT+1] = | const c8 *const GUIButtonImageStateNames[EGBIS_COUNT + 1] = { | ||||||
| 	{ |  | ||||||
| 		"Image", // not "ImageUp" as it otherwise breaks serialization of old files | 		"Image", // not "ImageUp" as it otherwise breaks serialization of old files | ||||||
| 		"ImageUpOver", | 		"ImageUpOver", | ||||||
| 		"ImageUpFocused", | 		"ImageUpFocused", | ||||||
| @@ -99,7 +96,7 @@ namespace gui | |||||||
| 		"ImageDownFocused", | 		"ImageDownFocused", | ||||||
| 		"ImageDownFocusedOver", | 		"ImageDownFocusedOver", | ||||||
| 		"ImageDisabled", | 		"ImageDisabled", | ||||||
| 		0	// count | 		0, // count | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| //! GUI Button interface. | //! GUI Button interface. | ||||||
| @@ -109,10 +106,9 @@ namespace gui | |||||||
| class IGUIButton : public IGUIElement | class IGUIButton : public IGUIElement | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUIButton(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUIButton(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_BUTTON, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_BUTTON, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! Sets another skin independent font. | 	//! Sets another skin independent font. | ||||||
| 	/** If this is set to zero, the button uses the font of the skin. | 	/** If this is set to zero, the button uses the font of the skin. | ||||||
| @@ -188,7 +184,6 @@ namespace gui | |||||||
| 	\param sourceRect: Position in the texture, where the image is located */ | 	\param sourceRect: Position in the texture, where the image is located */ | ||||||
| 	virtual void setPressedImage(video::ITexture *image, const core::rect<s32> &sourceRect) = 0; | 	virtual void setPressedImage(video::ITexture *image, const core::rect<s32> &sourceRect) = 0; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the sprite bank used by the button | 	//! Sets the sprite bank used by the button | ||||||
| 	/** NOTE: The spritebank itself is _not_ serialized so far. The sprites are serialized. | 	/** NOTE: The spritebank itself is _not_ serialized so far. The sprites are serialized. | ||||||
| 	Which means after loading the gui you still have to set the spritebank manually. */ | 	Which means after loading the gui you still have to set the spritebank manually. */ | ||||||
| @@ -260,9 +255,5 @@ namespace gui | |||||||
| 	virtual bool getClickControlState() const = 0; | 	virtual bool getClickControlState() const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_CHECKBOX_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_CHECKBOX_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
|  |  | ||||||
| @@ -19,10 +18,9 @@ namespace gui | |||||||
| class IGUICheckBox : public IGUIElement | class IGUICheckBox : public IGUIElement | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUICheckBox(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUICheckBox(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_CHECK_BOX, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_CHECK_BOX, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! Set if box is checked. | 	//! Set if box is checked. | ||||||
| 	virtual void setChecked(bool checked) = 0; | 	virtual void setChecked(bool checked) = 0; | ||||||
| @@ -43,11 +41,7 @@ namespace gui | |||||||
| 	//! Checks if border drawing is enabled | 	//! Checks if border drawing is enabled | ||||||
| 	/** \return true if border drawing is enabled, false otherwise */ | 	/** \return true if border drawing is enabled, false otherwise */ | ||||||
| 	virtual bool isDrawBorderEnabled() const = 0; | 	virtual bool isDrawBorderEnabled() const = 0; | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_COMBO_BOX_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_COMBO_BOX_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
|  |  | ||||||
| @@ -19,10 +18,9 @@ namespace gui | |||||||
| class IGUIComboBox : public IGUIElement | class IGUIComboBox : public IGUIElement | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUIComboBox(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUIComboBox(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_COMBO_BOX, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_COMBO_BOX, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! Returns amount of items in box | 	//! Returns amount of items in box | ||||||
| 	virtual u32 getItemCount() const = 0; | 	virtual u32 getItemCount() const = 0; | ||||||
| @@ -70,9 +68,5 @@ namespace gui | |||||||
| 	virtual u32 getMaxSelectionRows() const = 0; | 	virtual u32 getMaxSelectionRows() const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_EDIT_BOX_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_EDIT_BOX_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
| #include "SColor.h" | #include "SColor.h" | ||||||
| @@ -23,10 +22,9 @@ namespace gui | |||||||
| class IGUIEditBox : public IGUIElement | class IGUIEditBox : public IGUIElement | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUIEditBox(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUIEditBox(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_EDIT_BOX, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_EDIT_BOX, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! Sets another skin independent font. | 	//! Sets another skin independent font. | ||||||
| 	/** If this is set to zero, the button uses the font of the skin. | 	/** If this is set to zero, the button uses the font of the skin. | ||||||
| @@ -149,9 +147,5 @@ namespace gui | |||||||
| 	virtual irr::u32 getCursorBlinkTime() const = 0; | 	virtual irr::u32 getCursorBlinkTime() const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_ELEMENT_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_ELEMENT_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "rect.h" | #include "rect.h" | ||||||
| @@ -26,11 +25,11 @@ namespace gui | |||||||
| class IGUIElement : virtual public IReferenceCounted, public IEventReceiver | class IGUIElement : virtual public IReferenceCounted, public IEventReceiver | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Constructor | 	//! Constructor | ||||||
| 	IGUIElement(EGUI_ELEMENT_TYPE type, IGUIEnvironment *environment, IGUIElement *parent, | 	IGUIElement(EGUI_ELEMENT_TYPE type, IGUIEnvironment *environment, IGUIElement *parent, | ||||||
| 		s32 id, const core::rect<s32>& rectangle) | 			s32 id, const core::rect<s32> &rectangle) : | ||||||
| 		: Parent(0), RelativeRect(rectangle), AbsoluteRect(rectangle), | 			Parent(0), | ||||||
|  | 			RelativeRect(rectangle), AbsoluteRect(rectangle), | ||||||
| 			AbsoluteClippingRect(rectangle), DesiredRect(rectangle), | 			AbsoluteClippingRect(rectangle), DesiredRect(rectangle), | ||||||
| 			MaxSize(0, 0), MinSize(1, 1), IsVisible(true), IsEnabled(true), | 			MaxSize(0, 0), MinSize(1, 1), IsVisible(true), IsEnabled(true), | ||||||
| 			IsSubElement(false), NoClip(false), ID(id), IsTabStop(false), TabOrder(-1), IsTabGroup(false), | 			IsSubElement(false), NoClip(false), ID(id), IsTabStop(false), TabOrder(-1), IsTabGroup(false), | ||||||
| @@ -42,14 +41,12 @@ public: | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 		// if we were given a parent to attach to | 		// if we were given a parent to attach to | ||||||
| 		if (parent) | 		if (parent) { | ||||||
| 		{ |  | ||||||
| 			parent->addChildToEnd(this); | 			parent->addChildToEnd(this); | ||||||
| 			recalculateAbsolutePosition(true); | 			recalculateAbsolutePosition(true); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Destructor | 	//! Destructor | ||||||
| 	virtual ~IGUIElement() | 	virtual ~IGUIElement() | ||||||
| 	{ | 	{ | ||||||
| @@ -59,7 +56,6 @@ public: | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns parent of this element. | 	//! Returns parent of this element. | ||||||
| 	IGUIElement *getParent() const | 	IGUIElement *getParent() const | ||||||
| 	{ | 	{ | ||||||
| @@ -72,13 +68,11 @@ public: | |||||||
| 		return RelativeRect; | 		return RelativeRect; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the relative rectangle of this element. | 	//! Sets the relative rectangle of this element. | ||||||
| 	/** \param r The absolute position to set */ | 	/** \param r The absolute position to set */ | ||||||
| 	void setRelativePosition(const core::rect<s32> &r) | 	void setRelativePosition(const core::rect<s32> &r) | ||||||
| 	{ | 	{ | ||||||
| 		if (Parent) | 		if (Parent) { | ||||||
| 		{ |  | ||||||
| 			const core::rect<s32> &r2 = Parent->getAbsolutePosition(); | 			const core::rect<s32> &r2 = Parent->getAbsolutePosition(); | ||||||
|  |  | ||||||
| 			core::dimension2df d((f32)(r2.getSize().Width), (f32)(r2.getSize().Height)); | 			core::dimension2df d((f32)(r2.getSize().Width), (f32)(r2.getSize().Height)); | ||||||
| @@ -107,7 +101,6 @@ public: | |||||||
| 		setRelativePosition(rectangle); | 		setRelativePosition(rectangle); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the relative rectangle of this element as a proportion of its parent's area. | 	//! Sets the relative rectangle of this element as a proportion of its parent's area. | ||||||
| 	/** \note This method used to be 'void setRelativePosition(const core::rect<f32>& r)' | 	/** \note This method used to be 'void setRelativePosition(const core::rect<f32>& r)' | ||||||
| 	\param r  The rectangle to set, interpreted as a proportion of the parent's area. | 	\param r  The rectangle to set, interpreted as a proportion of the parent's area. | ||||||
| @@ -131,21 +124,18 @@ public: | |||||||
| 		updateAbsolutePosition(); | 		updateAbsolutePosition(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Gets the absolute rectangle of this element | 	//! Gets the absolute rectangle of this element | ||||||
| 	core::rect<s32> getAbsolutePosition() const | 	core::rect<s32> getAbsolutePosition() const | ||||||
| 	{ | 	{ | ||||||
| 		return AbsoluteRect; | 		return AbsoluteRect; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns the visible area of the element. | 	//! Returns the visible area of the element. | ||||||
| 	core::rect<s32> getAbsoluteClippingRect() const | 	core::rect<s32> getAbsoluteClippingRect() const | ||||||
| 	{ | 	{ | ||||||
| 		return AbsoluteClippingRect; | 		return AbsoluteClippingRect; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets whether the element will ignore its parent's clipping rectangle | 	//! Sets whether the element will ignore its parent's clipping rectangle | ||||||
| 	/** \param noClip If true, the element will not be clipped by its parent's clipping rectangle. */ | 	/** \param noClip If true, the element will not be clipped by its parent's clipping rectangle. */ | ||||||
| 	void setNotClipped(bool noClip) | 	void setNotClipped(bool noClip) | ||||||
| @@ -154,7 +144,6 @@ public: | |||||||
| 		updateAbsolutePosition(); | 		updateAbsolutePosition(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Gets whether the element will ignore its parent's clipping rectangle | 	//! Gets whether the element will ignore its parent's clipping rectangle | ||||||
| 	/** \return true if the element is not clipped by its parent's clipping rectangle. */ | 	/** \return true if the element is not clipped by its parent's clipping rectangle. */ | ||||||
| 	bool isNotClipped() const | 	bool isNotClipped() const | ||||||
| @@ -162,7 +151,6 @@ public: | |||||||
| 		return NoClip; | 		return NoClip; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the maximum size allowed for this element | 	//! Sets the maximum size allowed for this element | ||||||
| 	/** If set to 0,0, there is no maximum size */ | 	/** If set to 0,0, there is no maximum size */ | ||||||
| 	void setMaxSize(core::dimension2du size) | 	void setMaxSize(core::dimension2du size) | ||||||
| @@ -171,7 +159,6 @@ public: | |||||||
| 		updateAbsolutePosition(); | 		updateAbsolutePosition(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the minimum size allowed for this element | 	//! Sets the minimum size allowed for this element | ||||||
| 	void setMinSize(core::dimension2du size) | 	void setMinSize(core::dimension2du size) | ||||||
| 	{ | 	{ | ||||||
| @@ -183,7 +170,6 @@ public: | |||||||
| 		updateAbsolutePosition(); | 		updateAbsolutePosition(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! The alignment defines how the borders of this element will be positioned when the parent element is resized. | 	//! The alignment defines how the borders of this element will be positioned when the parent element is resized. | ||||||
| 	void setAlignment(EGUI_ALIGNMENT left, EGUI_ALIGNMENT right, EGUI_ALIGNMENT top, EGUI_ALIGNMENT bottom) | 	void setAlignment(EGUI_ALIGNMENT left, EGUI_ALIGNMENT right, EGUI_ALIGNMENT top, EGUI_ALIGNMENT bottom) | ||||||
| 	{ | 	{ | ||||||
| @@ -192,8 +178,7 @@ public: | |||||||
| 		AlignTop = top; | 		AlignTop = top; | ||||||
| 		AlignBottom = bottom; | 		AlignBottom = bottom; | ||||||
|  |  | ||||||
| 		if (Parent) | 		if (Parent) { | ||||||
| 		{ |  | ||||||
| 			core::rect<s32> r(Parent->getAbsolutePosition()); | 			core::rect<s32> r(Parent->getAbsolutePosition()); | ||||||
|  |  | ||||||
| 			core::dimension2df d((f32)r.getSize().Width, (f32)r.getSize().Height); | 			core::dimension2df d((f32)r.getSize().Width, (f32)r.getSize().Height); | ||||||
| @@ -239,13 +224,11 @@ public: | |||||||
| 		recalculateAbsolutePosition(false); | 		recalculateAbsolutePosition(false); | ||||||
|  |  | ||||||
| 		// update all children | 		// update all children | ||||||
| 		for (auto child : Children) | 		for (auto child : Children) { | ||||||
| 		{ |  | ||||||
| 			child->updateAbsolutePosition(); | 			child->updateAbsolutePosition(); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns the topmost GUI element at the specific position. | 	//! Returns the topmost GUI element at the specific position. | ||||||
| 	/** | 	/** | ||||||
| 	This will check this GUI element and all of its descendants, so it | 	This will check this GUI element and all of its descendants, so it | ||||||
| @@ -262,14 +245,12 @@ public: | |||||||
| 	{ | 	{ | ||||||
| 		IGUIElement *target = 0; | 		IGUIElement *target = 0; | ||||||
|  |  | ||||||
| 		if (isVisible()) | 		if (isVisible()) { | ||||||
| 		{ |  | ||||||
| 			// we have to search from back to front, because later children | 			// we have to search from back to front, because later children | ||||||
| 			// might be drawn over the top of earlier ones. | 			// might be drawn over the top of earlier ones. | ||||||
| 			auto it = Children.rbegin(); | 			auto it = Children.rbegin(); | ||||||
| 			auto ie = Children.rend(); | 			auto ie = Children.rend(); | ||||||
| 			while (it != ie) | 			while (it != ie) { | ||||||
| 			{ |  | ||||||
| 				target = (*it)->getElementFromPoint(point); | 				target = (*it)->getElementFromPoint(point); | ||||||
| 				if (target) | 				if (target) | ||||||
| 					return target; | 					return target; | ||||||
| @@ -284,7 +265,6 @@ public: | |||||||
| 		return target; | 		return target; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns true if a point is within this element. | 	//! Returns true if a point is within this element. | ||||||
| 	/** Elements with a shape other than a rectangle should override this method */ | 	/** Elements with a shape other than a rectangle should override this method */ | ||||||
| 	virtual bool isPointInside(const core::position2d<s32> &point) const | 	virtual bool isPointInside(const core::position2d<s32> &point) const | ||||||
| @@ -292,12 +272,10 @@ public: | |||||||
| 		return AbsoluteClippingRect.isPointInside(point); | 		return AbsoluteClippingRect.isPointInside(point); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Adds a GUI element as new child of this element. | 	//! Adds a GUI element as new child of this element. | ||||||
| 	virtual void addChild(IGUIElement *child) | 	virtual void addChild(IGUIElement *child) | ||||||
| 	{ | 	{ | ||||||
| 		if ( child && child != this ) | 		if (child && child != this) { | ||||||
| 		{ |  | ||||||
| 			addChildToEnd(child); | 			addChildToEnd(child); | ||||||
| 			child->updateAbsolutePosition(); | 			child->updateAbsolutePosition(); | ||||||
| 		} | 		} | ||||||
| @@ -313,7 +291,8 @@ public: | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	//! Removes all children. | 	//! Removes all children. | ||||||
| 	virtual void removeAllChildren() { | 	virtual void removeAllChildren() | ||||||
|  | 	{ | ||||||
| 		while (!Children.empty()) { | 		while (!Children.empty()) { | ||||||
| 			auto child = Children.back(); | 			auto child = Children.back(); | ||||||
| 			child->remove(); | 			child->remove(); | ||||||
| @@ -327,36 +306,30 @@ public: | |||||||
| 			Parent->removeChild(this); | 			Parent->removeChild(this); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Draws the element and its children. | 	//! Draws the element and its children. | ||||||
| 	virtual void draw() | 	virtual void draw() | ||||||
| 	{ | 	{ | ||||||
| 		if ( isVisible() ) | 		if (isVisible()) { | ||||||
| 		{ |  | ||||||
| 			for (auto child : Children) | 			for (auto child : Children) | ||||||
| 				child->draw(); | 				child->draw(); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! animate the element and its children. | 	//! animate the element and its children. | ||||||
| 	virtual void OnPostRender(u32 timeMs) | 	virtual void OnPostRender(u32 timeMs) | ||||||
| 	{ | 	{ | ||||||
| 		if ( isVisible() ) | 		if (isVisible()) { | ||||||
| 		{ |  | ||||||
| 			for (auto child : Children) | 			for (auto child : Children) | ||||||
| 				child->OnPostRender(timeMs); | 				child->OnPostRender(timeMs); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Moves this element. | 	//! Moves this element. | ||||||
| 	virtual void move(core::position2d<s32> absoluteMovement) | 	virtual void move(core::position2d<s32> absoluteMovement) | ||||||
| 	{ | 	{ | ||||||
| 		setRelativePosition(DesiredRect + absoluteMovement); | 		setRelativePosition(DesiredRect + absoluteMovement); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns true if element is visible. | 	//! Returns true if element is visible. | ||||||
| 	virtual bool isVisible() const | 	virtual bool isVisible() const | ||||||
| 	{ | 	{ | ||||||
| @@ -383,14 +356,12 @@ public: | |||||||
| 		IsVisible = visible; | 		IsVisible = visible; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns true if this element was created as part of its parent control | 	//! Returns true if this element was created as part of its parent control | ||||||
| 	virtual bool isSubElement() const | 	virtual bool isSubElement() const | ||||||
| 	{ | 	{ | ||||||
| 		return IsSubElement; | 		return IsSubElement; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets whether this control was created as part of its parent. | 	//! Sets whether this control was created as part of its parent. | ||||||
| 	/** For example, it is true when a scrollbar is part of a listbox. | 	/** For example, it is true when a scrollbar is part of a listbox. | ||||||
| 	SubElements are not saved to disk when calling guiEnvironment->saveGUI() */ | 	SubElements are not saved to disk when calling guiEnvironment->saveGUI() */ | ||||||
| @@ -399,7 +370,6 @@ public: | |||||||
| 		IsSubElement = subElement; | 		IsSubElement = subElement; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! If set to true, the focus will visit this element when using the tab key to cycle through elements. | 	//! If set to true, the focus will visit this element when using the tab key to cycle through elements. | ||||||
| 	/** If this element is a tab group (see isTabGroup/setTabGroup) then | 	/** If this element is a tab group (see isTabGroup/setTabGroup) then | ||||||
| 	ctrl+tab will be used instead. */ | 	ctrl+tab will be used instead. */ | ||||||
| @@ -408,51 +378,43 @@ public: | |||||||
| 		IsTabStop = enable; | 		IsTabStop = enable; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns true if this element can be focused by navigating with the tab key | 	//! Returns true if this element can be focused by navigating with the tab key | ||||||
| 	bool isTabStop() const | 	bool isTabStop() const | ||||||
| 	{ | 	{ | ||||||
| 		return IsTabStop; | 		return IsTabStop; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the priority of focus when using the tab key to navigate between a group of elements. | 	//! Sets the priority of focus when using the tab key to navigate between a group of elements. | ||||||
| 	/** See setTabGroup, isTabGroup and getTabGroup for information on tab groups. | 	/** See setTabGroup, isTabGroup and getTabGroup for information on tab groups. | ||||||
| 	Elements with a lower number are focused first */ | 	Elements with a lower number are focused first */ | ||||||
| 	void setTabOrder(s32 index) | 	void setTabOrder(s32 index) | ||||||
| 	{ | 	{ | ||||||
| 		// negative = autonumber | 		// negative = autonumber | ||||||
| 		if (index < 0) | 		if (index < 0) { | ||||||
| 		{ |  | ||||||
| 			TabOrder = 0; | 			TabOrder = 0; | ||||||
| 			IGUIElement *el = getTabGroup(); | 			IGUIElement *el = getTabGroup(); | ||||||
| 			while (IsTabGroup && el && el->Parent) | 			while (IsTabGroup && el && el->Parent) | ||||||
| 				el = el->Parent; | 				el = el->Parent; | ||||||
|  |  | ||||||
| 			IGUIElement *first = 0, *closest = 0; | 			IGUIElement *first = 0, *closest = 0; | ||||||
| 			if (el) | 			if (el) { | ||||||
| 			{ |  | ||||||
| 				// find the highest element number | 				// find the highest element number | ||||||
| 				el->getNextElement(-1, true, IsTabGroup, first, closest, true, true); | 				el->getNextElement(-1, true, IsTabGroup, first, closest, true, true); | ||||||
| 				if (first) | 				if (first) { | ||||||
| 				{ |  | ||||||
| 					TabOrder = first->getTabOrder() + 1; | 					TabOrder = first->getTabOrder() + 1; | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 		} | 		} else | ||||||
| 		else |  | ||||||
| 			TabOrder = index; | 			TabOrder = index; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns the number in the tab order sequence | 	//! Returns the number in the tab order sequence | ||||||
| 	s32 getTabOrder() const | 	s32 getTabOrder() const | ||||||
| 	{ | 	{ | ||||||
| 		return TabOrder; | 		return TabOrder; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets whether this element is a container for a group of elements which can be navigated using the tab key. | 	//! Sets whether this element is a container for a group of elements which can be navigated using the tab key. | ||||||
| 	/** For example, windows are tab groups. | 	/** For example, windows are tab groups. | ||||||
| 	Groups can be navigated using ctrl+tab, providing isTabStop is true. */ | 	Groups can be navigated using ctrl+tab, providing isTabStop is true. */ | ||||||
| @@ -461,14 +423,12 @@ public: | |||||||
| 		IsTabGroup = isGroup; | 		IsTabGroup = isGroup; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns true if this element is a tab group. | 	//! Returns true if this element is a tab group. | ||||||
| 	bool isTabGroup() const | 	bool isTabGroup() const | ||||||
| 	{ | 	{ | ||||||
| 		return IsTabGroup; | 		return IsTabGroup; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns the container element which holds all elements in this element's tab group. | 	//! Returns the container element which holds all elements in this element's tab group. | ||||||
| 	IGUIElement *getTabGroup() | 	IGUIElement *getTabGroup() | ||||||
| 	{ | 	{ | ||||||
| @@ -480,7 +440,6 @@ public: | |||||||
| 		return ret; | 		return ret; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns true if element is enabled | 	//! Returns true if element is enabled | ||||||
| 	/** Currently elements do _not_ care about parent-states. | 	/** Currently elements do _not_ care about parent-states. | ||||||
| 		So if you want to affect children you have to enable/disable them all. | 		So if you want to affect children you have to enable/disable them all. | ||||||
| @@ -494,63 +453,54 @@ public: | |||||||
| 		return IsEnabled; | 		return IsEnabled; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the enabled state of this element. | 	//! Sets the enabled state of this element. | ||||||
| 	virtual void setEnabled(bool enabled) | 	virtual void setEnabled(bool enabled) | ||||||
| 	{ | 	{ | ||||||
| 		IsEnabled = enabled; | 		IsEnabled = enabled; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the new caption of this element. | 	//! Sets the new caption of this element. | ||||||
| 	virtual void setText(const wchar_t *text) | 	virtual void setText(const wchar_t *text) | ||||||
| 	{ | 	{ | ||||||
| 		Text = text; | 		Text = text; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns caption of this element. | 	//! Returns caption of this element. | ||||||
| 	virtual const wchar_t *getText() const | 	virtual const wchar_t *getText() const | ||||||
| 	{ | 	{ | ||||||
| 		return Text.c_str(); | 		return Text.c_str(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the new caption of this element. | 	//! Sets the new caption of this element. | ||||||
| 	virtual void setToolTipText(const wchar_t *text) | 	virtual void setToolTipText(const wchar_t *text) | ||||||
| 	{ | 	{ | ||||||
| 		ToolTipText = text; | 		ToolTipText = text; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns caption of this element. | 	//! Returns caption of this element. | ||||||
| 	virtual const core::stringw &getToolTipText() const | 	virtual const core::stringw &getToolTipText() const | ||||||
| 	{ | 	{ | ||||||
| 		return ToolTipText; | 		return ToolTipText; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns id. Can be used to identify the element. | 	//! Returns id. Can be used to identify the element. | ||||||
| 	virtual s32 getID() const | 	virtual s32 getID() const | ||||||
| 	{ | 	{ | ||||||
| 		return ID; | 		return ID; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the id of this element | 	//! Sets the id of this element | ||||||
| 	virtual void setID(s32 id) | 	virtual void setID(s32 id) | ||||||
| 	{ | 	{ | ||||||
| 		ID = id; | 		ID = id; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Called if an event happened. | 	//! Called if an event happened. | ||||||
| 	bool OnEvent(const SEvent &event) override | 	bool OnEvent(const SEvent &event) override | ||||||
| 	{ | 	{ | ||||||
| 		return Parent ? Parent->OnEvent(event) : false; | 		return Parent ? Parent->OnEvent(event) : false; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Brings a child to front | 	//! Brings a child to front | ||||||
| 	/** \return True if successful, false if not. */ | 	/** \return True if successful, false if not. */ | ||||||
| 	virtual bool bringToFront(IGUIElement *child) | 	virtual bool bringToFront(IGUIElement *child) | ||||||
| @@ -564,7 +514,6 @@ public: | |||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Moves a child to the back, so it's siblings are drawn on top of it | 	//! Moves a child to the back, so it's siblings are drawn on top of it | ||||||
| 	/** \return True if successful, false if not. */ | 	/** \return True if successful, false if not. */ | ||||||
| 	virtual bool sendToBack(IGUIElement *child) | 	virtual bool sendToBack(IGUIElement *child) | ||||||
| @@ -584,7 +533,6 @@ public: | |||||||
| 		return Children; | 		return Children; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Finds the first element with the given id. | 	//! Finds the first element with the given id. | ||||||
| 	/** \param id: Id to search for. | 	/** \param id: Id to search for. | ||||||
| 	\param searchchildren: Set this to true, if also children of this | 	\param searchchildren: Set this to true, if also children of this | ||||||
| @@ -596,8 +544,7 @@ public: | |||||||
| 	{ | 	{ | ||||||
| 		IGUIElement *e = 0; | 		IGUIElement *e = 0; | ||||||
|  |  | ||||||
| 		for (auto child : Children) | 		for (auto child : Children) { | ||||||
| 		{ |  | ||||||
| 			if (child->getID() == id) | 			if (child->getID() == id) | ||||||
| 				return child; | 				return child; | ||||||
|  |  | ||||||
| @@ -611,25 +558,21 @@ public: | |||||||
| 		return e; | 		return e; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! returns true if the given element is a child of this one. | 	//! returns true if the given element is a child of this one. | ||||||
| 	//! \param child: The child element to check | 	//! \param child: The child element to check | ||||||
| 	bool isMyChild(IGUIElement *child) const | 	bool isMyChild(IGUIElement *child) const | ||||||
| 	{ | 	{ | ||||||
| 		if (!child) | 		if (!child) | ||||||
| 			return false; | 			return false; | ||||||
| 		do | 		do { | ||||||
| 		{ |  | ||||||
| 			if (child->Parent) | 			if (child->Parent) | ||||||
| 				child = child->Parent; | 				child = child->Parent; | ||||||
|  |  | ||||||
| 		} while (child->Parent && child != this); | 		} while (child->Parent && child != this); | ||||||
|  |  | ||||||
|  |  | ||||||
| 		return child == this; | 		return child == this; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! searches elements to find the closest next element to tab to | 	//! searches elements to find the closest next element to tab to | ||||||
| 	/** \param startOrder: The TabOrder of the current element, -1 if none | 	/** \param startOrder: The TabOrder of the current element, -1 if none | ||||||
| 	\param reverse: true if searching for a lower number | 	\param reverse: true if searching for a lower number | ||||||
| @@ -652,62 +595,46 @@ public: | |||||||
|  |  | ||||||
| 		s32 closestOrder, currentOrder; | 		s32 closestOrder, currentOrder; | ||||||
|  |  | ||||||
| 		while(it != Children.end()) | 		while (it != Children.end()) { | ||||||
| 		{ |  | ||||||
| 			// ignore invisible elements and their children | 			// ignore invisible elements and their children | ||||||
| 			if (((*it)->isVisible() || includeInvisible) && | 			if (((*it)->isVisible() || includeInvisible) && | ||||||
| 				(group == true || (*it)->isTabGroup() == false) ) | 					(group == true || (*it)->isTabGroup() == false)) { | ||||||
| 			{ |  | ||||||
| 				// ignore disabled, but children are checked (disabled is currently per element ignoring parent states) | 				// ignore disabled, but children are checked (disabled is currently per element ignoring parent states) | ||||||
| 				if ( (*it)->isEnabled() || includeDisabled ) | 				if ((*it)->isEnabled() || includeDisabled) { | ||||||
| 				{ |  | ||||||
| 					// only check tab stops and those with the same group status | 					// only check tab stops and those with the same group status | ||||||
| 					if ((*it)->isTabStop() && ((*it)->isTabGroup() == group)) | 					if ((*it)->isTabStop() && ((*it)->isTabGroup() == group)) { | ||||||
| 					{ |  | ||||||
| 						currentOrder = (*it)->getTabOrder(); | 						currentOrder = (*it)->getTabOrder(); | ||||||
|  |  | ||||||
| 						// is this what we're looking for? | 						// is this what we're looking for? | ||||||
| 						if (currentOrder == wanted) | 						if (currentOrder == wanted) { | ||||||
| 						{ |  | ||||||
| 							closest = *it; | 							closest = *it; | ||||||
| 							return true; | 							return true; | ||||||
| 						} | 						} | ||||||
|  |  | ||||||
| 						// is it closer than the current closest? | 						// is it closer than the current closest? | ||||||
| 						if (closest) | 						if (closest) { | ||||||
| 						{ |  | ||||||
| 							closestOrder = closest->getTabOrder(); | 							closestOrder = closest->getTabOrder(); | ||||||
| 							if ( ( reverse && currentOrder > closestOrder && currentOrder < startOrder) | 							if ((reverse && currentOrder > closestOrder && currentOrder < startOrder) || (!reverse && currentOrder < closestOrder && currentOrder > startOrder)) { | ||||||
| 								||(!reverse && currentOrder < closestOrder && currentOrder > startOrder)) |  | ||||||
| 							{ |  | ||||||
| 								closest = *it; | 								closest = *it; | ||||||
| 							} | 							} | ||||||
| 						} | 						} else if ((reverse && currentOrder < startOrder) || (!reverse && currentOrder > startOrder)) { | ||||||
| 						else |  | ||||||
| 						if ( (reverse && currentOrder < startOrder) || (!reverse && currentOrder > startOrder) ) |  | ||||||
| 						{ |  | ||||||
| 							closest = *it; | 							closest = *it; | ||||||
| 						} | 						} | ||||||
|  |  | ||||||
| 						// is it before the current first? | 						// is it before the current first? | ||||||
| 						if (first) | 						if (first) { | ||||||
| 						{ |  | ||||||
| 							closestOrder = first->getTabOrder(); | 							closestOrder = first->getTabOrder(); | ||||||
|  |  | ||||||
| 							if ( (reverse && closestOrder < currentOrder) || (!reverse && closestOrder > currentOrder) ) | 							if ((reverse && closestOrder < currentOrder) || (!reverse && closestOrder > currentOrder)) { | ||||||
| 							{ |  | ||||||
| 								first = *it; | 								first = *it; | ||||||
| 							} | 							} | ||||||
| 						} | 						} else { | ||||||
| 						else |  | ||||||
| 						{ |  | ||||||
| 							first = *it; | 							first = *it; | ||||||
| 						} | 						} | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 				// search within children | 				// search within children | ||||||
| 				if ((*it)->getNextElement(startOrder, reverse, group, first, closest, includeInvisible, includeDisabled)) | 				if ((*it)->getNextElement(startOrder, reverse, group, first, closest, includeInvisible, includeDisabled)) { | ||||||
| 				{ |  | ||||||
| 					return true; | 					return true; | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| @@ -716,7 +643,6 @@ public: | |||||||
| 		return false; | 		return false; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns the type of the gui element. | 	//! Returns the type of the gui element. | ||||||
| 	/** This is needed for the .NET wrapper but will be used | 	/** This is needed for the .NET wrapper but will be used | ||||||
| 	later for serializing and deserializing. | 	later for serializing and deserializing. | ||||||
| @@ -741,7 +667,6 @@ public: | |||||||
| 		return type == Type; | 		return type == Type; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns the type name of the gui element. | 	//! Returns the type name of the gui element. | ||||||
| 	/** This is needed serializing elements. */ | 	/** This is needed serializing elements. */ | ||||||
| 	virtual const c8 *getTypeName() const | 	virtual const c8 *getTypeName() const | ||||||
| @@ -756,7 +681,6 @@ public: | |||||||
| 		return Name.c_str(); | 		return Name.c_str(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the name of the element. | 	//! Sets the name of the element. | ||||||
| 	/** \param name New name of the gui element. */ | 	/** \param name New name of the gui element. */ | ||||||
| 	virtual void setName(const c8 *name) | 	virtual void setName(const c8 *name) | ||||||
| @@ -764,7 +688,6 @@ public: | |||||||
| 		Name = name; | 		Name = name; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the name of the element. | 	//! Sets the name of the element. | ||||||
| 	/** \param name New name of the gui element. */ | 	/** \param name New name of the gui element. */ | ||||||
| 	virtual void setName(const core::stringc &name) | 	virtual void setName(const core::stringc &name) | ||||||
| @@ -772,20 +695,17 @@ public: | |||||||
| 		Name = name; | 		Name = name; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns whether the element takes input from the IME | 	//! Returns whether the element takes input from the IME | ||||||
| 	virtual bool acceptsIME() | 	virtual bool acceptsIME() | ||||||
| 	{ | 	{ | ||||||
| 		return false; | 		return false; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
| 	// not virtual because needed in constructor | 	// not virtual because needed in constructor | ||||||
| 	void addChildToEnd(IGUIElement *child) | 	void addChildToEnd(IGUIElement *child) | ||||||
| 	{ | 	{ | ||||||
| 		if (child) | 		if (child) { | ||||||
| 		{ |  | ||||||
| 			child->grab();   // prevent destruction when removed | 			child->grab();   // prevent destruction when removed | ||||||
| 			child->remove(); // remove from old parent | 			child->remove(); // remove from old parent | ||||||
| 			child->LastParentRect = getAbsolutePosition(); | 			child->LastParentRect = getAbsolutePosition(); | ||||||
| @@ -796,7 +716,8 @@ protected: | |||||||
|  |  | ||||||
| #ifndef NDEBUG | #ifndef NDEBUG | ||||||
| 	template <typename Iterator> | 	template <typename Iterator> | ||||||
| 	static size_t _fastSetChecksum(Iterator begin, Iterator end) { | 	static size_t _fastSetChecksum(Iterator begin, Iterator end) | ||||||
|  | 	{ | ||||||
| 		std::hash<typename Iterator::value_type> hasher; | 		std::hash<typename Iterator::value_type> hasher; | ||||||
| 		size_t checksum = 0; | 		size_t checksum = 0; | ||||||
| 		for (Iterator it = begin; it != end; ++it) { | 		for (Iterator it = begin; it != end; ++it) { | ||||||
| @@ -814,8 +735,7 @@ protected: | |||||||
| 			const std::vector<IGUIElement *> &neworder) | 			const std::vector<IGUIElement *> &neworder) | ||||||
| 	{ | 	{ | ||||||
| 		assert(_fastSetChecksum(from, to) == _fastSetChecksum(neworder.begin(), neworder.end())); | 		assert(_fastSetChecksum(from, to) == _fastSetChecksum(neworder.begin(), neworder.end())); | ||||||
| 		for (auto e : neworder) | 		for (auto e : neworder) { | ||||||
| 		{ |  | ||||||
| 			*from = e; | 			*from = e; | ||||||
| 			e->ParentPos = from; | 			e->ParentPos = from; | ||||||
| 			++from; | 			++from; | ||||||
| @@ -823,7 +743,6 @@ protected: | |||||||
| 		assert(from == to); | 		assert(from == to); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	// not virtual because needed in constructor | 	// not virtual because needed in constructor | ||||||
| 	void recalculateAbsolutePosition(bool recursive) | 	void recalculateAbsolutePosition(bool recursive) | ||||||
| 	{ | 	{ | ||||||
| @@ -831,18 +750,15 @@ protected: | |||||||
| 		core::rect<s32> parentAbsoluteClip; | 		core::rect<s32> parentAbsoluteClip; | ||||||
| 		f32 fw = 0.f, fh = 0.f; | 		f32 fw = 0.f, fh = 0.f; | ||||||
|  |  | ||||||
| 		if (Parent) | 		if (Parent) { | ||||||
| 		{ |  | ||||||
| 			parentAbsolute = Parent->AbsoluteRect; | 			parentAbsolute = Parent->AbsoluteRect; | ||||||
|  |  | ||||||
| 			if (NoClip) | 			if (NoClip) { | ||||||
| 			{ |  | ||||||
| 				IGUIElement *p = this; | 				IGUIElement *p = this; | ||||||
| 				while (p->Parent) | 				while (p->Parent) | ||||||
| 					p = p->Parent; | 					p = p->Parent; | ||||||
| 				parentAbsoluteClip = p->AbsoluteClippingRect; | 				parentAbsoluteClip = p->AbsoluteClippingRect; | ||||||
| 			} | 			} else | ||||||
| 			else |  | ||||||
| 				parentAbsoluteClip = Parent->AbsoluteClippingRect; | 				parentAbsoluteClip = Parent->AbsoluteClippingRect; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @@ -855,8 +771,7 @@ protected: | |||||||
| 		if (AlignTop == EGUIA_SCALE || AlignBottom == EGUIA_SCALE) | 		if (AlignTop == EGUIA_SCALE || AlignBottom == EGUIA_SCALE) | ||||||
| 			fh = (f32)parentAbsolute.getHeight(); | 			fh = (f32)parentAbsolute.getHeight(); | ||||||
|  |  | ||||||
| 		switch (AlignLeft) | 		switch (AlignLeft) { | ||||||
| 		{ |  | ||||||
| 		case EGUIA_UPPERLEFT: | 		case EGUIA_UPPERLEFT: | ||||||
| 			break; | 			break; | ||||||
| 		case EGUIA_LOWERRIGHT: | 		case EGUIA_LOWERRIGHT: | ||||||
| @@ -870,8 +785,7 @@ protected: | |||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		switch (AlignRight) | 		switch (AlignRight) { | ||||||
| 		{ |  | ||||||
| 		case EGUIA_UPPERLEFT: | 		case EGUIA_UPPERLEFT: | ||||||
| 			break; | 			break; | ||||||
| 		case EGUIA_LOWERRIGHT: | 		case EGUIA_LOWERRIGHT: | ||||||
| @@ -885,8 +799,7 @@ protected: | |||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		switch (AlignTop) | 		switch (AlignTop) { | ||||||
| 		{ |  | ||||||
| 		case EGUIA_UPPERLEFT: | 		case EGUIA_UPPERLEFT: | ||||||
| 			break; | 			break; | ||||||
| 		case EGUIA_LOWERRIGHT: | 		case EGUIA_LOWERRIGHT: | ||||||
| @@ -900,8 +813,7 @@ protected: | |||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		switch (AlignBottom) | 		switch (AlignBottom) { | ||||||
| 		{ |  | ||||||
| 		case EGUIA_UPPERLEFT: | 		case EGUIA_UPPERLEFT: | ||||||
| 			break; | 			break; | ||||||
| 		case EGUIA_LOWERRIGHT: | 		case EGUIA_LOWERRIGHT: | ||||||
| @@ -942,18 +854,15 @@ protected: | |||||||
|  |  | ||||||
| 		LastParentRect = parentAbsolute; | 		LastParentRect = parentAbsolute; | ||||||
|  |  | ||||||
| 		if ( recursive ) | 		if (recursive) { | ||||||
| 		{ |  | ||||||
| 			// update all children | 			// update all children | ||||||
| 			for (auto child : Children) | 			for (auto child : Children) { | ||||||
| 			{ |  | ||||||
| 				child->recalculateAbsolutePosition(recursive); | 				child->recalculateAbsolutePosition(recursive); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
|  |  | ||||||
| 	//! List of all children of this element | 	//! List of all children of this element | ||||||
| 	std::list<IGUIElement *> Children; | 	std::list<IGUIElement *> Children; | ||||||
|  |  | ||||||
| @@ -1028,9 +937,5 @@ protected: | |||||||
| 	EGUI_ELEMENT_TYPE Type; | 	EGUI_ELEMENT_TYPE Type; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_ENVIRONMENT_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_ENVIRONMENT_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "IGUISkin.h" | #include "IGUISkin.h" | ||||||
| @@ -59,7 +58,6 @@ class IGUIWindow; | |||||||
| class IGUIEnvironment : public virtual IReferenceCounted | class IGUIEnvironment : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Draws all gui elements by traversing the GUI environment starting at the root node. | 	//! Draws all gui elements by traversing the GUI environment starting at the root node. | ||||||
| 	/** \param  When true ensure the GuiEnvironment (aka the RootGUIElement) has the same size as the current driver screensize. | 	/** \param  When true ensure the GuiEnvironment (aka the RootGUIElement) has the same size as the current driver screensize. | ||||||
| 				Can be set to false to control that size yourself, p.E when not the full size should be used for UI. */ | 				Can be set to false to control that size yourself, p.E when not the full size should be used for UI. */ | ||||||
| @@ -153,7 +151,6 @@ public: | |||||||
| 	See IReferenceCounted::drop() for more information. */ | 	See IReferenceCounted::drop() for more information. */ | ||||||
| 	virtual IGUISkin *createSkin(EGUI_SKIN_TYPE type) = 0; | 	virtual IGUISkin *createSkin(EGUI_SKIN_TYPE type) = 0; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Creates the image list from the given texture. | 	//! Creates the image list from the given texture. | ||||||
| 	/** \param texture Texture to split into images | 	/** \param texture Texture to split into images | ||||||
| 	\param imageSize Dimension of each image | 	\param imageSize Dimension of each image | ||||||
| @@ -413,9 +410,5 @@ public: | |||||||
| 	virtual void addToDeletionQueue(IGUIElement *element) = 0; | 	virtual void addToDeletionQueue(IGUIElement *element) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_FILE_OPEN_DIALOG_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_FILE_OPEN_DIALOG_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
| #include "path.h" | #include "path.h" | ||||||
| @@ -24,10 +23,9 @@ namespace gui | |||||||
| class IGUIFileOpenDialog : public IGUIElement | class IGUIFileOpenDialog : public IGUIElement | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUIFileOpenDialog(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUIFileOpenDialog(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_FILE_OPEN_DIALOG, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_FILE_OPEN_DIALOG, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! Returns the filename of the selected file converted to wide characters. Returns NULL if no file was selected. | 	//! Returns the filename of the selected file converted to wide characters. Returns NULL if no file was selected. | ||||||
| 	virtual const wchar_t *getFileName() const = 0; | 	virtual const wchar_t *getFileName() const = 0; | ||||||
| @@ -42,9 +40,5 @@ namespace gui | |||||||
| 	virtual const wchar_t *getDirectoryNameW() const = 0; | 	virtual const wchar_t *getDirectoryNameW() const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_FONT_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_FONT_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "SColor.h" | #include "SColor.h" | ||||||
| @@ -39,7 +38,6 @@ enum EGUI_FONT_TYPE | |||||||
| class IGUIFont : public virtual IReferenceCounted | class IGUIFont : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Draws some text and clips it to the specified rectangle if wanted. | 	//! Draws some text and clips it to the specified rectangle if wanted. | ||||||
| 	/** \param text: Text to draw | 	/** \param text: Text to draw | ||||||
| 	\param position: Rectangle specifying position where to draw the text. | 	\param position: Rectangle specifying position where to draw the text. | ||||||
| @@ -99,6 +97,3 @@ public: | |||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_FONT_BITMAP_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_FONT_BITMAP_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIFont.h" | #include "IGUIFont.h" | ||||||
|  |  | ||||||
| @@ -17,7 +16,6 @@ namespace gui | |||||||
| class IGUIFontBitmap : public IGUIFont | class IGUIFontBitmap : public IGUIFont | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Returns the type of this font | 	//! Returns the type of this font | ||||||
| 	EGUI_FONT_TYPE getType() const override { return EGFT_BITMAP; } | 	EGUI_FONT_TYPE getType() const override { return EGFT_BITMAP; } | ||||||
|  |  | ||||||
| @@ -41,6 +39,3 @@ public: | |||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_IMAGE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_IMAGE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
|  |  | ||||||
| @@ -19,10 +18,9 @@ namespace gui | |||||||
| class IGUIImage : public IGUIElement | class IGUIImage : public IGUIElement | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUIImage(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUIImage(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_IMAGE, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_IMAGE, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! Sets an image texture | 	//! Sets an image texture | ||||||
| 	virtual void setImage(video::ITexture *image) = 0; | 	virtual void setImage(video::ITexture *image) = 0; | ||||||
| @@ -80,8 +78,5 @@ namespace gui | |||||||
| 	virtual bool isDrawBackgroundEnabled() const = 0; | 	virtual bool isDrawBackgroundEnabled() const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -1,8 +1,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // written by Reinhard Ostermeier, reinhard@nospam.r-ostermeier.de | // written by Reinhard Ostermeier, reinhard@nospam.r-ostermeier.de | ||||||
|  |  | ||||||
| #ifndef __I_GUI_IMAGE_LIST_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_IMAGE_LIST_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
| #include "rect.h" | #include "rect.h" | ||||||
| @@ -17,7 +16,6 @@ namespace gui | |||||||
| class IGUIImageList : public virtual IReferenceCounted | class IGUIImageList : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Destructor | 	//! Destructor | ||||||
| 	virtual ~IGUIImageList(){}; | 	virtual ~IGUIImageList(){}; | ||||||
|  |  | ||||||
| @@ -40,6 +38,3 @@ public: | |||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_LIST_BOX_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_LIST_BOX_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
| #include "SColor.h" | #include "SColor.h" | ||||||
| @@ -30,7 +29,6 @@ namespace gui | |||||||
| 	EGUI_LBC_COUNT | 	EGUI_LBC_COUNT | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Default list box GUI element. | //! Default list box GUI element. | ||||||
| /** \par This element can create the following events of type EGUI_EVENT_TYPE: | /** \par This element can create the following events of type EGUI_EVENT_TYPE: | ||||||
| \li EGET_LISTBOX_CHANGED | \li EGET_LISTBOX_CHANGED | ||||||
| @@ -40,8 +38,8 @@ namespace gui | |||||||
| { | { | ||||||
| public: | public: | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUIListBox(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUIListBox(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_LIST_BOX, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_LIST_BOX, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! returns amount of list items | 	//! returns amount of list items | ||||||
| 	virtual u32 getItemCount() const = 0; | 	virtual u32 getItemCount() const = 0; | ||||||
| @@ -134,9 +132,5 @@ namespace gui | |||||||
| 	virtual IGUIScrollBar *getVerticalScrollBar() const = 0; | 	virtual IGUIScrollBar *getVerticalScrollBar() const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_SCROLL_BAR_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_SCROLL_BAR_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
|  |  | ||||||
| @@ -19,10 +18,9 @@ namespace gui | |||||||
| class IGUIScrollBar : public IGUIElement | class IGUIScrollBar : public IGUIElement | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUIScrollBar(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUIScrollBar(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_SCROLL_BAR, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_SCROLL_BAR, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! sets the maximum value of the scrollbar. | 	//! sets the maximum value of the scrollbar. | ||||||
| 	virtual void setMax(s32 max) = 0; | 	virtual void setMax(s32 max) = 0; | ||||||
| @@ -57,9 +55,5 @@ namespace gui | |||||||
| 	virtual void setPos(s32 pos) = 0; | 	virtual void setPos(s32 pos) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_SKIN_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_SKIN_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "EGUIAlignment.h" | #include "EGUIAlignment.h" | ||||||
| @@ -46,8 +45,7 @@ namespace gui | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for gui element types | //! Names for gui element types | ||||||
| 	const c8* const GUISkinTypeNames[EGST_COUNT+1] = | const c8 *const GUISkinTypeNames[EGST_COUNT + 1] = { | ||||||
| 	{ |  | ||||||
| 		"windowsClassic", | 		"windowsClassic", | ||||||
| 		"windowsMetallic", | 		"windowsMetallic", | ||||||
| 		"burning", | 		"burning", | ||||||
| @@ -55,7 +53,6 @@ namespace gui | |||||||
| 		0, | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Enumeration for skin colors | //! Enumeration for skin colors | ||||||
| enum EGUI_DEFAULT_COLOR | enum EGUI_DEFAULT_COLOR | ||||||
| { | { | ||||||
| @@ -116,8 +113,7 @@ namespace gui | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for default skin colors | //! Names for default skin colors | ||||||
| 	const c8* const GUISkinColorNames[EGDC_COUNT+1] = | const c8 *const GUISkinColorNames[EGDC_COUNT + 1] = { | ||||||
| 	{ |  | ||||||
| 		"3DDarkShadow", | 		"3DDarkShadow", | ||||||
| 		"3DShadow", | 		"3DShadow", | ||||||
| 		"3DFace", | 		"3DFace", | ||||||
| @@ -201,10 +197,8 @@ namespace gui | |||||||
| 	EGDS_COUNT | 	EGDS_COUNT | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Names for default skin sizes | //! Names for default skin sizes | ||||||
| 	const c8* const GUISkinSizeNames[EGDS_COUNT+1] = | const c8 *const GUISkinSizeNames[EGDS_COUNT + 1] = { | ||||||
| 	{ |  | ||||||
| 		"ScrollBarSize", | 		"ScrollBarSize", | ||||||
| 		"MenuHeight", | 		"MenuHeight", | ||||||
| 		"WindowButtonWidth", | 		"WindowButtonWidth", | ||||||
| @@ -228,10 +222,9 @@ namespace gui | |||||||
| 		"ButtonPressedTextOffsetY", | 		"ButtonPressedTextOffsetY", | ||||||
| 		"ButtonPressedSpriteOffsetX", | 		"ButtonPressedSpriteOffsetX", | ||||||
| 		"ButtonPressedSpriteOffsetY", | 		"ButtonPressedSpriteOffsetY", | ||||||
| 		0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  |  | ||||||
| enum EGUI_DEFAULT_TEXT | enum EGUI_DEFAULT_TEXT | ||||||
| { | { | ||||||
| 	//! Text for the OK button on a message box | 	//! Text for the OK button on a message box | ||||||
| @@ -256,8 +249,7 @@ namespace gui | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for default skin sizes | //! Names for default skin sizes | ||||||
| 	const c8* const GUISkinTextNames[EGDT_COUNT+1] = | const c8 *const GUISkinTextNames[EGDT_COUNT + 1] = { | ||||||
| 	{ |  | ||||||
| 		"MessageBoxOkay", | 		"MessageBoxOkay", | ||||||
| 		"MessageBoxCancel", | 		"MessageBoxCancel", | ||||||
| 		"MessageBoxYes", | 		"MessageBoxYes", | ||||||
| @@ -266,7 +258,7 @@ namespace gui | |||||||
| 		"WindowButtonMaximize", | 		"WindowButtonMaximize", | ||||||
| 		"WindowButtonMinimize", | 		"WindowButtonMinimize", | ||||||
| 		"WindowButtonRestore", | 		"WindowButtonRestore", | ||||||
| 		0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| //! Customizable symbols for GUI | //! Customizable symbols for GUI | ||||||
| @@ -324,8 +316,7 @@ namespace gui | |||||||
| 	EGDI_COUNT | 	EGDI_COUNT | ||||||
| }; | }; | ||||||
|  |  | ||||||
| 	const c8* const GUISkinIconNames[EGDI_COUNT+1] = | const c8 *const GUISkinIconNames[EGDI_COUNT + 1] = { | ||||||
| 	{ |  | ||||||
| 		"windowMaximize", | 		"windowMaximize", | ||||||
| 		"windowRestore", | 		"windowRestore", | ||||||
| 		"windowClose", | 		"windowClose", | ||||||
| @@ -349,7 +340,7 @@ namespace gui | |||||||
| 		"collapse", | 		"collapse", | ||||||
| 		"file", | 		"file", | ||||||
| 		"directory", | 		"directory", | ||||||
| 		0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| // Customizable fonts | // Customizable fonts | ||||||
| @@ -370,21 +361,19 @@ namespace gui | |||||||
| 	EGDF_COUNT | 	EGDF_COUNT | ||||||
| }; | }; | ||||||
|  |  | ||||||
| 	const c8* const GUISkinFontNames[EGDF_COUNT+1] = | const c8 *const GUISkinFontNames[EGDF_COUNT + 1] = { | ||||||
| 	{ |  | ||||||
| 		"defaultFont", | 		"defaultFont", | ||||||
| 		"buttonFont", | 		"buttonFont", | ||||||
| 		"windowFont", | 		"windowFont", | ||||||
| 		"menuFont", | 		"menuFont", | ||||||
| 		"tooltipFont", | 		"tooltipFont", | ||||||
| 		0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| //! A skin modifies the look of the GUI elements. | //! A skin modifies the look of the GUI elements. | ||||||
| class IGUISkin : virtual public IReferenceCounted | class IGUISkin : virtual public IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! returns default color | 	//! returns default color | ||||||
| 	virtual video::SColor getColor(EGUI_DEFAULT_COLOR color) const = 0; | 	virtual video::SColor getColor(EGUI_DEFAULT_COLOR color) const = 0; | ||||||
|  |  | ||||||
| @@ -572,9 +561,5 @@ namespace gui | |||||||
| 	virtual EGUI_SKIN_TYPE getType() const { return EGST_UNKNOWN; } | 	virtual EGUI_SKIN_TYPE getType() const { return EGST_UNKNOWN; } | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_SPRITE_BANK_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_SPRITE_BANK_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "irrArray.h" | #include "irrArray.h" | ||||||
| @@ -25,12 +24,13 @@ namespace gui | |||||||
| // Note for implementer: Can't fix variable names to uppercase as this is a public interface used since a while | // Note for implementer: Can't fix variable names to uppercase as this is a public interface used since a while | ||||||
| struct SGUISpriteFrame | struct SGUISpriteFrame | ||||||
| { | { | ||||||
| 	SGUISpriteFrame() : textureNumber(0), rectNumber(0) | 	SGUISpriteFrame() : | ||||||
|  | 			textureNumber(0), rectNumber(0) | ||||||
| 	{ | 	{ | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	SGUISpriteFrame(u32 textureIndex, u32 positionIndex) | 	SGUISpriteFrame(u32 textureIndex, u32 positionIndex) : | ||||||
| 	: textureNumber(textureIndex), rectNumber(positionIndex) | 			textureNumber(textureIndex), rectNumber(positionIndex) | ||||||
| 	{ | 	{ | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -45,8 +45,10 @@ struct SGUISpriteFrame | |||||||
| // Note for implementer: Can't fix variable names to uppercase as this is a public interface used since a while | // Note for implementer: Can't fix variable names to uppercase as this is a public interface used since a while | ||||||
| struct SGUISprite | struct SGUISprite | ||||||
| { | { | ||||||
| 	SGUISprite() : frameTime(0) {} | 	SGUISprite() : | ||||||
| 	SGUISprite(const SGUISpriteFrame& firstFrame) : frameTime(0) | 			frameTime(0) {} | ||||||
|  | 	SGUISprite(const SGUISpriteFrame &firstFrame) : | ||||||
|  | 			frameTime(0) | ||||||
| 	{ | 	{ | ||||||
| 		Frames.push_back(firstFrame); | 		Frames.push_back(firstFrame); | ||||||
| 	} | 	} | ||||||
| @@ -55,7 +57,6 @@ struct SGUISprite | |||||||
| 	u32 frameTime; | 	u32 frameTime; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Sprite bank interface. | //! Sprite bank interface. | ||||||
| /** See http://http://irrlicht.sourceforge.net/forum//viewtopic.php?f=9&t=25742 | /** See http://http://irrlicht.sourceforge.net/forum//viewtopic.php?f=9&t=25742 | ||||||
|  * for more information how to use the spritebank. |  * for more information how to use the spritebank. | ||||||
| @@ -63,7 +64,6 @@ struct SGUISprite | |||||||
| class IGUISpriteBank : public virtual IReferenceCounted | class IGUISpriteBank : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Returns the list of rectangles held by the sprite bank | 	//! Returns the list of rectangles held by the sprite bank | ||||||
| 	virtual core::array<core::rect<s32>> &getPositions() = 0; | 	virtual core::array<core::rect<s32>> &getPositions() = 0; | ||||||
|  |  | ||||||
| @@ -134,9 +134,5 @@ public: | |||||||
| 			bool loop = true, bool center = false) = 0; | 			bool loop = true, bool center = false) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif // __I_GUI_SPRITE_BANK_H_INCLUDED__ |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_STATIC_TEXT_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_STATIC_TEXT_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
| #include "SColor.h" | #include "SColor.h" | ||||||
| @@ -18,10 +17,9 @@ namespace gui | |||||||
| class IGUIStaticText : public IGUIElement | class IGUIStaticText : public IGUIElement | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUIStaticText(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUIStaticText(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_STATIC_TEXT, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_STATIC_TEXT, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! Sets another skin independent font. | 	//! Sets another skin independent font. | ||||||
| 	/** If this is set to zero, the button uses the font of the skin. | 	/** If this is set to zero, the button uses the font of the skin. | ||||||
| @@ -131,9 +129,5 @@ namespace gui | |||||||
| 	virtual bool isRightToLeft() const = 0; | 	virtual bool isRightToLeft() const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_TAB_CONTROL_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_TAB_CONTROL_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
| #include "SColor.h" | #include "SColor.h" | ||||||
| @@ -22,10 +21,9 @@ namespace gui | |||||||
| class IGUITabControl : public IGUIElement | class IGUITabControl : public IGUIElement | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUITabControl(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUITabControl(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_TAB_CONTROL, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_TAB_CONTROL, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! Adds a tab | 	//! Adds a tab | ||||||
| 	virtual IGUITab *addTab(const wchar_t *caption, s32 id = -1) = 0; | 	virtual IGUITab *addTab(const wchar_t *caption, s32 id = -1) = 0; | ||||||
| @@ -124,10 +122,9 @@ namespace gui | |||||||
| class IGUITab : public IGUIElement | class IGUITab : public IGUIElement | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUITab(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUITab(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_TAB, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_TAB, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! sets if the tab should draw its background | 	//! sets if the tab should draw its background | ||||||
| 	virtual void setDrawBackground(bool draw = true) = 0; | 	virtual void setDrawBackground(bool draw = true) = 0; | ||||||
| @@ -150,6 +147,3 @@ namespace gui | |||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_GUI_TOOL_BAR_H_INCLUDED__ | #pragma once | ||||||
| #define __I_GUI_TOOL_BAR_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IGUIElement.h" | #include "IGUIElement.h" | ||||||
|  |  | ||||||
| @@ -21,10 +20,9 @@ namespace gui | |||||||
| class IGUIToolBar : public IGUIElement | class IGUIToolBar : public IGUIElement | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IGUIToolBar(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) | 	IGUIToolBar(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) : | ||||||
| 			: IGUIElement(EGUIET_TOOL_BAR, environment, parent, id, rectangle) {} | 			IGUIElement(EGUIET_TOOL_BAR, environment, parent, id, rectangle) {} | ||||||
|  |  | ||||||
| 	//! Adds a button to the tool bar | 	//! Adds a button to the tool bar | ||||||
| 	virtual IGUIButton *addButton(s32 id = -1, const wchar_t *text = 0, const wchar_t *tooltiptext = 0, | 	virtual IGUIButton *addButton(s32 id = -1, const wchar_t *text = 0, const wchar_t *tooltiptext = 0, | ||||||
| @@ -32,9 +30,5 @@ namespace gui | |||||||
| 			bool isPushButton = false, bool useAlphaChannel = false) = 0; | 			bool isPushButton = false, bool useAlphaChannel = false) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										183
									
								
								include/IImage.h
									
									
									
									
									
								
							
							
						
						
									
										183
									
								
								include/IImage.h
									
									
									
									
									
								
							| @@ -2,14 +2,13 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_IMAGE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_IMAGE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "position2d.h" | #include "position2d.h" | ||||||
| #include "rect.h" | #include "rect.h" | ||||||
| #include "SColor.h" | #include "SColor.h" | ||||||
| #include <string.h> | #include <cstring> | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -24,13 +23,9 @@ NOTE: Floating point formats are not well supported yet. Basically only getData( | |||||||
| class IImage : public virtual IReferenceCounted | class IImage : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 	IImage(ECOLOR_FORMAT format, const core::dimension2d<u32> &size, bool deleteMemory) : | 	IImage(ECOLOR_FORMAT format, const core::dimension2d<u32> &size, bool deleteMemory) : | ||||||
| 			Format(format), Size(size), Data(0), MipMapsData(0), BytesPerPixel(0), Pitch(0), DeleteMemory(deleteMemory), DeleteMipMapsMemory(false) | 			Format(format), Size(size), Data(0), MipMapsData(0), BytesPerPixel(0), Pitch(0), DeleteMemory(deleteMemory), DeleteMipMapsMemory(false) | ||||||
| #if defined(IRRLICHT_sRGB) |  | ||||||
| 		,Format_sRGB(1) |  | ||||||
| #endif |  | ||||||
| 	{ | 	{ | ||||||
| 		BytesPerPixel = getBitsPerPixelFromFormat(Format) / 8; | 		BytesPerPixel = getBitsPerPixelFromFormat(Format) / 8; | ||||||
| 		Pitch = BytesPerPixel * Size.Width; | 		Pitch = BytesPerPixel * Size.Width; | ||||||
| @@ -52,18 +47,6 @@ public: | |||||||
| 		return Format; | 		return Format; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| #if defined(IRRLICHT_sRGB) |  | ||||||
| 	//! Texture is linear/sRGB (should be part of ColorFormat: default yes) |  | ||||||
| 	int get_sRGB() const |  | ||||||
| 	{ |  | ||||||
| 		return Format_sRGB; |  | ||||||
| 	} |  | ||||||
| 	void set_sRGB(int val) |  | ||||||
| 	{ |  | ||||||
| 		Format_sRGB = val; |  | ||||||
| 	} |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| 	//! Returns width and height of image data. | 	//! Returns width and height of image data. | ||||||
| 	const core::dimension2d<u32> &getDimension() const | 	const core::dimension2d<u32> &getDimension() const | ||||||
| 	{ | 	{ | ||||||
| @@ -104,8 +87,7 @@ public: | |||||||
| 	//! Returns mask for red value of a pixel | 	//! Returns mask for red value of a pixel | ||||||
| 	u32 getRedMask() const | 	u32 getRedMask() const | ||||||
| 	{ | 	{ | ||||||
| 		switch (Format) | 		switch (Format) { | ||||||
| 		{ |  | ||||||
| 		case ECF_A1R5G5B5: | 		case ECF_A1R5G5B5: | ||||||
| 			return 0x1F << 10; | 			return 0x1F << 10; | ||||||
| 		case ECF_R5G6B5: | 		case ECF_R5G6B5: | ||||||
| @@ -122,8 +104,7 @@ public: | |||||||
| 	//! Returns mask for green value of a pixel | 	//! Returns mask for green value of a pixel | ||||||
| 	u32 getGreenMask() const | 	u32 getGreenMask() const | ||||||
| 	{ | 	{ | ||||||
| 		switch (Format) | 		switch (Format) { | ||||||
| 		{ |  | ||||||
| 		case ECF_A1R5G5B5: | 		case ECF_A1R5G5B5: | ||||||
| 			return 0x1F << 5; | 			return 0x1F << 5; | ||||||
| 		case ECF_R5G6B5: | 		case ECF_R5G6B5: | ||||||
| @@ -140,8 +121,7 @@ public: | |||||||
| 	//! Returns mask for blue value of a pixel | 	//! Returns mask for blue value of a pixel | ||||||
| 	u32 getBlueMask() const | 	u32 getBlueMask() const | ||||||
| 	{ | 	{ | ||||||
| 		switch (Format) | 		switch (Format) { | ||||||
| 		{ |  | ||||||
| 		case ECF_A1R5G5B5: | 		case ECF_A1R5G5B5: | ||||||
| 			return 0x1F; | 			return 0x1F; | ||||||
| 		case ECF_R5G6B5: | 		case ECF_R5G6B5: | ||||||
| @@ -158,8 +138,7 @@ public: | |||||||
| 	//! Returns mask for alpha value of a pixel | 	//! Returns mask for alpha value of a pixel | ||||||
| 	u32 getAlphaMask() const | 	u32 getAlphaMask() const | ||||||
| 	{ | 	{ | ||||||
| 		switch (Format) | 		switch (Format) { | ||||||
| 		{ |  | ||||||
| 		case ECF_A1R5G5B5: | 		case ECF_A1R5G5B5: | ||||||
| 			return 0x1 << 15; | 			return 0x1 << 15; | ||||||
| 		case ECF_R5G6B5: | 		case ECF_R5G6B5: | ||||||
| @@ -191,15 +170,13 @@ public: | |||||||
| 		return getMipMapsSize(Size, mipmapLevel); | 		return getMipMapsSize(Size, mipmapLevel); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Calculate mipmap size for a certain level | 	//! Calculate mipmap size for a certain level | ||||||
| 	/** level 0 will be full image size. Every further level is half the size.	*/ | 	/** level 0 will be full image size. Every further level is half the size.	*/ | ||||||
| 	static core::dimension2du getMipMapsSize(const core::dimension2du &sizeLevel0, u32 mipmapLevel) | 	static core::dimension2du getMipMapsSize(const core::dimension2du &sizeLevel0, u32 mipmapLevel) | ||||||
| 	{ | 	{ | ||||||
| 		core::dimension2du result(sizeLevel0); | 		core::dimension2du result(sizeLevel0); | ||||||
| 		u32 i = 0; | 		u32 i = 0; | ||||||
| 		while (i != mipmapLevel) | 		while (i != mipmapLevel) { | ||||||
| 		{ |  | ||||||
| 			if (result.Width > 1) | 			if (result.Width > 1) | ||||||
| 				result.Width >>= 1; | 				result.Width >>= 1; | ||||||
| 			if (result.Height > 1) | 			if (result.Height > 1) | ||||||
| @@ -212,7 +189,6 @@ public: | |||||||
| 		return result; | 		return result; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get mipmaps data. | 	//! Get mipmaps data. | ||||||
| 	/** Note that different mip levels are just behind each other in memory block. | 	/** Note that different mip levels are just behind each other in memory block. | ||||||
| 		So if you just get level 1 you also have the data for all other levels. | 		So if you just get level 1 you also have the data for all other levels. | ||||||
| @@ -220,14 +196,12 @@ public: | |||||||
| 	*/ | 	*/ | ||||||
| 	void *getMipMapsData(irr::u32 mipLevel = 1) const | 	void *getMipMapsData(irr::u32 mipLevel = 1) const | ||||||
| 	{ | 	{ | ||||||
| 		if ( MipMapsData && mipLevel > 0) | 		if (MipMapsData && mipLevel > 0) { | ||||||
| 		{ |  | ||||||
| 			size_t dataSize = 0; | 			size_t dataSize = 0; | ||||||
| 			core::dimension2du mipSize(Size); | 			core::dimension2du mipSize(Size); | ||||||
| 			u32 i = 1; // We want the start of data for this level, not end. | 			u32 i = 1; // We want the start of data for this level, not end. | ||||||
|  |  | ||||||
| 			while (i != mipLevel) | 			while (i != mipLevel) { | ||||||
| 			{ |  | ||||||
| 				if (mipSize.Width > 1) | 				if (mipSize.Width > 1) | ||||||
| 					mipSize.Width >>= 1; | 					mipSize.Width >>= 1; | ||||||
|  |  | ||||||
| @@ -258,31 +232,24 @@ public: | |||||||
| 	destruction. */ | 	destruction. */ | ||||||
| 	void setMipMapsData(void *data, bool ownForeignMemory) | 	void setMipMapsData(void *data, bool ownForeignMemory) | ||||||
| 	{ | 	{ | ||||||
| 		if (data != MipMapsData) | 		if (data != MipMapsData) { | ||||||
| 		{ | 			if (DeleteMipMapsMemory) { | ||||||
| 			if (DeleteMipMapsMemory) |  | ||||||
| 			{ |  | ||||||
| 				delete[] MipMapsData; | 				delete[] MipMapsData; | ||||||
|  |  | ||||||
| 				DeleteMipMapsMemory = false; | 				DeleteMipMapsMemory = false; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			if (data) | 			if (data) { | ||||||
| 			{ | 				if (ownForeignMemory) { | ||||||
| 				if (ownForeignMemory) |  | ||||||
| 				{ |  | ||||||
| 					MipMapsData = static_cast<u8 *>(data); | 					MipMapsData = static_cast<u8 *>(data); | ||||||
|  |  | ||||||
| 					DeleteMipMapsMemory = false; | 					DeleteMipMapsMemory = false; | ||||||
| 				} | 				} else { | ||||||
| 				else |  | ||||||
| 				{ |  | ||||||
| 					u32 dataSize = 0; | 					u32 dataSize = 0; | ||||||
| 					u32 width = Size.Width; | 					u32 width = Size.Width; | ||||||
| 					u32 height = Size.Height; | 					u32 height = Size.Height; | ||||||
|  |  | ||||||
| 					do | 					do { | ||||||
| 					{ |  | ||||||
| 						if (width > 1) | 						if (width > 1) | ||||||
| 							width >>= 1; | 							width >>= 1; | ||||||
|  |  | ||||||
| @@ -297,9 +264,7 @@ public: | |||||||
|  |  | ||||||
| 					DeleteMipMapsMemory = true; | 					DeleteMipMapsMemory = true; | ||||||
| 				} | 				} | ||||||
| 			} | 			} else { | ||||||
| 			else |  | ||||||
| 			{ |  | ||||||
| 				MipMapsData = 0; | 				MipMapsData = 0; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @@ -352,8 +317,7 @@ public: | |||||||
| 	//! get the amount of Bits per Pixel of the given color format | 	//! get the amount of Bits per Pixel of the given color format | ||||||
| 	static u32 getBitsPerPixelFromFormat(const ECOLOR_FORMAT format) | 	static u32 getBitsPerPixelFromFormat(const ECOLOR_FORMAT format) | ||||||
| 	{ | 	{ | ||||||
| 		switch(format) | 		switch (format) { | ||||||
| 		{ |  | ||||||
| 		case ECF_A1R5G5B5: | 		case ECF_A1R5G5B5: | ||||||
| 			return 16; | 			return 16; | ||||||
| 		case ECF_R5G6B5: | 		case ECF_R5G6B5: | ||||||
| @@ -362,28 +326,6 @@ public: | |||||||
| 			return 24; | 			return 24; | ||||||
| 		case ECF_A8R8G8B8: | 		case ECF_A8R8G8B8: | ||||||
| 			return 32; | 			return 32; | ||||||
| 		case ECF_DXT1: |  | ||||||
| 			return 16; |  | ||||||
| 		case ECF_DXT2: |  | ||||||
| 		case ECF_DXT3: |  | ||||||
| 		case ECF_DXT4: |  | ||||||
| 		case ECF_DXT5: |  | ||||||
| 			return 32; |  | ||||||
| 		case ECF_PVRTC_RGB2: |  | ||||||
| 			return 12; |  | ||||||
| 		case ECF_PVRTC_ARGB2: |  | ||||||
| 		case ECF_PVRTC2_ARGB2: |  | ||||||
| 			return 16; |  | ||||||
| 		case ECF_PVRTC_RGB4: |  | ||||||
| 			return 24; |  | ||||||
| 		case ECF_PVRTC_ARGB4: |  | ||||||
| 		case ECF_PVRTC2_ARGB4: |  | ||||||
| 			return 32; |  | ||||||
| 		case ECF_ETC1: |  | ||||||
| 		case ECF_ETC2_RGB: |  | ||||||
| 			return 24; |  | ||||||
| 		case ECF_ETC2_ARGB: |  | ||||||
| 			return 32; |  | ||||||
| 		case ECF_D16: | 		case ECF_D16: | ||||||
| 			return 16; | 			return 16; | ||||||
| 		case ECF_D32: | 		case ECF_D32: | ||||||
| @@ -418,81 +360,23 @@ public: | |||||||
| 	//! calculate image data size in bytes for selected format, width and height. | 	//! calculate image data size in bytes for selected format, width and height. | ||||||
| 	static u32 getDataSizeFromFormat(ECOLOR_FORMAT format, u32 width, u32 height) | 	static u32 getDataSizeFromFormat(ECOLOR_FORMAT format, u32 width, u32 height) | ||||||
| 	{ | 	{ | ||||||
| 		u32 imageSize = 0; | 		// non-compressed formats | ||||||
|  | 		u32 imageSize = getBitsPerPixelFromFormat(format) / 8 * width; | ||||||
| 		switch (format) |  | ||||||
| 		{ |  | ||||||
| 		case ECF_DXT1: |  | ||||||
| 			imageSize = ((width + 3) / 4) * ((height + 3) / 4) * 8; |  | ||||||
| 			break; |  | ||||||
| 		case ECF_DXT2: |  | ||||||
| 		case ECF_DXT3: |  | ||||||
| 		case ECF_DXT4: |  | ||||||
| 		case ECF_DXT5: |  | ||||||
| 			imageSize = ((width + 3) / 4) * ((height + 3) / 4) * 16; |  | ||||||
| 			break; |  | ||||||
| 		case ECF_PVRTC_RGB2: |  | ||||||
| 		case ECF_PVRTC_ARGB2: |  | ||||||
| 			imageSize = (core::max_<u32>(width, 16) * core::max_<u32>(height, 8) * 2 + 7) / 8; |  | ||||||
| 			break; |  | ||||||
| 		case ECF_PVRTC_RGB4: |  | ||||||
| 		case ECF_PVRTC_ARGB4: |  | ||||||
| 			imageSize = (core::max_<u32>(width, 8) * core::max_<u32>(height, 8) * 4 + 7) / 8; |  | ||||||
| 			break; |  | ||||||
| 		case ECF_PVRTC2_ARGB2: |  | ||||||
| 			imageSize = core::ceil32(width / 8.0f) * core::ceil32(height / 4.0f) * 8; |  | ||||||
| 			break; |  | ||||||
| 		case ECF_PVRTC2_ARGB4: |  | ||||||
| 		case ECF_ETC1: |  | ||||||
| 		case ECF_ETC2_RGB: |  | ||||||
| 			imageSize = core::ceil32(width / 4.0f) * core::ceil32(height / 4.0f) * 8; |  | ||||||
| 			break; |  | ||||||
| 		case ECF_ETC2_ARGB: |  | ||||||
| 			imageSize = core::ceil32(width / 4.0f) * core::ceil32(height / 4.0f) * 16; |  | ||||||
| 			break; |  | ||||||
| 		default: // uncompressed formats |  | ||||||
| 			imageSize = getBitsPerPixelFromFormat(format) / 8 * width; |  | ||||||
| 		imageSize *= height; | 		imageSize *= height; | ||||||
| 			break; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		return imageSize; | 		return imageSize; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| // Define to check for all compressed image formats cases in a switch |  | ||||||
| #define IRR_CASE_IIMAGE_COMPRESSED_FORMAT\ |  | ||||||
| 	case ECF_DXT1:\ |  | ||||||
| 	case ECF_DXT2:\ |  | ||||||
| 	case ECF_DXT3:\ |  | ||||||
| 	case ECF_DXT4:\ |  | ||||||
| 	case ECF_DXT5:\ |  | ||||||
| 	case ECF_PVRTC_RGB2:\ |  | ||||||
| 	case ECF_PVRTC_ARGB2:\ |  | ||||||
| 	case ECF_PVRTC2_ARGB2:\ |  | ||||||
| 	case ECF_PVRTC_RGB4:\ |  | ||||||
| 	case ECF_PVRTC_ARGB4:\ |  | ||||||
| 	case ECF_PVRTC2_ARGB4:\ |  | ||||||
| 	case ECF_ETC1:\ |  | ||||||
| 	case ECF_ETC2_RGB:\ |  | ||||||
| 	case ECF_ETC2_ARGB: |  | ||||||
|  |  | ||||||
| 	//! check if this is compressed color format | 	//! check if this is compressed color format | ||||||
| 	static bool isCompressedFormat(const ECOLOR_FORMAT format) | 	static bool isCompressedFormat(const ECOLOR_FORMAT format) | ||||||
| 	{ | 	{ | ||||||
| 		switch(format) |  | ||||||
| 		{ |  | ||||||
| 			IRR_CASE_IIMAGE_COMPRESSED_FORMAT |  | ||||||
| 				return true; |  | ||||||
| 			default: |  | ||||||
| 		return false; | 		return false; | ||||||
| 	} | 	} | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	//! check if the color format is only viable for depth/stencil textures | 	//! check if the color format is only viable for depth/stencil textures | ||||||
| 	static bool isDepthFormat(const ECOLOR_FORMAT format) | 	static bool isDepthFormat(const ECOLOR_FORMAT format) | ||||||
| 	{ | 	{ | ||||||
| 		switch(format) | 		switch (format) { | ||||||
| 		{ |  | ||||||
| 		case ECF_D16: | 		case ECF_D16: | ||||||
| 		case ECF_D32: | 		case ECF_D32: | ||||||
| 		case ECF_D24S8: | 		case ECF_D24S8: | ||||||
| @@ -508,8 +392,7 @@ public: | |||||||
| 		if (isCompressedFormat(format)) | 		if (isCompressedFormat(format)) | ||||||
| 			return false; | 			return false; | ||||||
|  |  | ||||||
| 		switch(format) | 		switch (format) { | ||||||
| 		{ |  | ||||||
| 		case ECF_R16F: | 		case ECF_R16F: | ||||||
| 		case ECF_G16R16F: | 		case ECF_G16R16F: | ||||||
| 		case ECF_A16B16G16R16F: | 		case ECF_A16B16G16R16F: | ||||||
| @@ -523,22 +406,6 @@ public: | |||||||
| 		return false; | 		return false; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| #if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0) |  | ||||||
| 	static bool isRenderTargetOnlyFormat(const ECOLOR_FORMAT format) |  | ||||||
| 	{ |  | ||||||
| 		switch (format) |  | ||||||
| 		{ |  | ||||||
| 		case ECF_A1R5G5B5: |  | ||||||
| 		case ECF_R5G6B5: |  | ||||||
| 		case ECF_R8G8B8: |  | ||||||
| 		case ECF_A8R8G8B8: |  | ||||||
| 			return false; |  | ||||||
| 		default: |  | ||||||
| 			return true; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
| 	ECOLOR_FORMAT Format; | 	ECOLOR_FORMAT Format; | ||||||
| 	core::dimension2d<u32> Size; | 	core::dimension2d<u32> Size; | ||||||
| @@ -551,15 +418,7 @@ protected: | |||||||
|  |  | ||||||
| 	bool DeleteMemory; | 	bool DeleteMemory; | ||||||
| 	bool DeleteMipMapsMemory; | 	bool DeleteMipMapsMemory; | ||||||
|  |  | ||||||
| #if defined(IRRLICHT_sRGB) |  | ||||||
| 	int Format_sRGB; |  | ||||||
| #endif |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_SURFACE_LOADER_H_INCLUDED__ | #pragma once | ||||||
| #define __I_SURFACE_LOADER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "IImage.h" | #include "IImage.h" | ||||||
| @@ -28,7 +27,6 @@ IVideoDriver::addExternalImageLoader() to the engine. */ | |||||||
| class IImageLoader : public virtual IReferenceCounted | class IImageLoader : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Check if the file might be loaded by this class | 	//! Check if the file might be loaded by this class | ||||||
| 	/** Check is based on the file extension (e.g. ".tga") | 	/** Check is based on the file extension (e.g. ".tga") | ||||||
| 	\param filename Name of file to check. | 	\param filename Name of file to check. | ||||||
| @@ -47,9 +45,5 @@ public: | |||||||
| 	virtual IImage *loadImage(io::IReadFile *file) const = 0; | 	virtual IImage *loadImage(io::IReadFile *file) const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef _I_IMAGE_WRITER_H_INCLUDED__ | #pragma once | ||||||
| #define _I_IMAGE_WRITER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "irrString.h" | #include "irrString.h" | ||||||
| @@ -20,7 +19,6 @@ namespace video | |||||||
| { | { | ||||||
| class IImage; | class IImage; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Interface for writing software image data. | //! Interface for writing software image data. | ||||||
| class IImageWriter : public IReferenceCounted | class IImageWriter : public IReferenceCounted | ||||||
| { | { | ||||||
| @@ -40,6 +38,3 @@ public: | |||||||
|  |  | ||||||
| } // namespace video | } // namespace video | ||||||
| } // namespace irr | } // namespace irr | ||||||
|  |  | ||||||
| #endif // _I_IMAGE_WRITER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_INDEX_BUFFER_H_INCLUDED__ | #pragma once | ||||||
| #define __I_INDEX_BUFFER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "irrArray.h" | #include "irrArray.h" | ||||||
| @@ -24,7 +23,6 @@ namespace scene | |||||||
| class IIndexBuffer : public virtual IReferenceCounted | class IIndexBuffer : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	virtual void *getData() = 0; | 	virtual void *getData() = 0; | ||||||
|  |  | ||||||
| 	virtual video::E_INDEX_TYPE getType() const = 0; | 	virtual video::E_INDEX_TYPE getType() const = 0; | ||||||
| @@ -57,9 +55,5 @@ namespace scene | |||||||
| 	virtual u32 getChangedID() const = 0; | 	virtual u32 getChangedID() const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_LOGGER_H_INCLUDED__ | #pragma once | ||||||
| #define __I_LOGGER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
|  |  | ||||||
| @@ -33,12 +32,10 @@ enum ELOG_LEVEL | |||||||
| 	ELL_NONE | 	ELL_NONE | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Interface for logging messages, warnings and errors | //! Interface for logging messages, warnings and errors | ||||||
| class ILogger : public virtual IReferenceCounted | class ILogger : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Destructor | 	//! Destructor | ||||||
| 	virtual ~ILogger() {} | 	virtual ~ILogger() {} | ||||||
|  |  | ||||||
| @@ -73,30 +70,6 @@ public: | |||||||
| 	filtered with these levels. If you want to be a text displayed, | 	filtered with these levels. If you want to be a text displayed, | ||||||
| 	independent on what level filter is set, use ELL_NONE. */ | 	independent on what level filter is set, use ELL_NONE. */ | ||||||
| 	virtual void log(const c8 *text, const c8 *hint, ELOG_LEVEL ll = ELL_INFORMATION) = 0; | 	virtual void log(const c8 *text, const c8 *hint, ELOG_LEVEL ll = ELL_INFORMATION) = 0; | ||||||
| 	virtual void log(const c8* text, const wchar_t* hint, ELOG_LEVEL ll=ELL_INFORMATION) = 0; |  | ||||||
|  |  | ||||||
| 	//! Prints out a text into the log |  | ||||||
| 	/** \param text: Text to print out. |  | ||||||
| 	\param hint: Additional info. This string is added after a " :" to the |  | ||||||
| 	string. |  | ||||||
| 	\param ll: Log level of the text. If the text is an error, set |  | ||||||
| 	it to ELL_ERROR, if it is warning set it to ELL_WARNING, and if it |  | ||||||
| 	is just an informational text, set it to ELL_INFORMATION. Texts are |  | ||||||
| 	filtered with these levels. If you want to be a text displayed, |  | ||||||
| 	independent on what level filter is set, use ELL_NONE. */ |  | ||||||
| 	virtual void log(const wchar_t* text, const wchar_t* hint, ELOG_LEVEL ll=ELL_INFORMATION) = 0; |  | ||||||
|  |  | ||||||
| 	//! Prints out a text into the log |  | ||||||
| 	/** \param text: Text to print out. |  | ||||||
| 	\param ll: Log level of the text. If the text is an error, set |  | ||||||
| 	it to ELL_ERROR, if it is warning set it to ELL_WARNING, and if it |  | ||||||
| 	is just an informational text, set it to ELL_INFORMATION. Texts are |  | ||||||
| 	filtered with these levels. If you want to be a text displayed, |  | ||||||
| 	independent on what level filter is set, use ELL_NONE. */ |  | ||||||
| 	virtual void log(const wchar_t* text, ELOG_LEVEL ll=ELL_INFORMATION) = 0; |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace | } // end namespace | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_MATERIAL_RENDERER_H_INCLUDED__ | #pragma once | ||||||
| #define __I_MATERIAL_RENDERER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "SMaterial.h" | #include "SMaterial.h" | ||||||
| @@ -25,7 +24,6 @@ engine with new materials. */ | |||||||
| class IMaterialRenderer : public virtual IReferenceCounted | class IMaterialRenderer : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Called by the IVideoDriver implementation the let the renderer set its needed render states. | 	//! Called by the IVideoDriver implementation the let the renderer set its needed render states. | ||||||
| 	/** This is called during the IVideoDriver::setMaterial() call. | 	/** This is called during the IVideoDriver::setMaterial() call. | ||||||
| 	When overriding this, you can set some renderstates or for example a | 	When overriding this, you can set some renderstates or for example a | ||||||
| @@ -99,9 +97,5 @@ public: | |||||||
| 	virtual IShaderConstantSetCallBack *getShaderConstantSetCallBack() const { return 0; } | 	virtual IShaderConstantSetCallBack *getShaderConstantSetCallBack() const { return 0; } | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_MATERIAL_RENDERER_SERVICES_H_INCLUDED__ | #pragma once | ||||||
| #define __I_MATERIAL_RENDERER_SERVICES_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "SMaterial.h" | #include "SMaterial.h" | ||||||
| #include "S3DVertex.h" | #include "S3DVertex.h" | ||||||
| @@ -15,12 +14,10 @@ namespace video | |||||||
|  |  | ||||||
| class IVideoDriver; | class IVideoDriver; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Interface providing some methods for changing advanced, internal states of a IVideoDriver. | //! Interface providing some methods for changing advanced, internal states of a IVideoDriver. | ||||||
| class IMaterialRendererServices | class IMaterialRendererServices | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Destructor | 	//! Destructor | ||||||
| 	virtual ~IMaterialRendererServices() {} | 	virtual ~IMaterialRendererServices() {} | ||||||
|  |  | ||||||
| @@ -53,19 +50,8 @@ public: | |||||||
| 	virtual bool setVertexShaderConstant(s32 index, const s32 *ints, int count) = 0; | 	virtual bool setVertexShaderConstant(s32 index, const s32 *ints, int count) = 0; | ||||||
|  |  | ||||||
| 	//! Uint interface for the above. | 	//! Uint interface for the above. | ||||||
| 	/* NOTE: UINT only works with GLSL, not supported for other shaders. |  | ||||||
| 	         Also GLES drivers in Irrlicht do not support it as this needs at least GLES 3.0. |  | ||||||
| 	*/ |  | ||||||
| 	virtual bool setVertexShaderConstant(s32 index, const u32 *ints, int count) = 0; | 	virtual bool setVertexShaderConstant(s32 index, const u32 *ints, int count) = 0; | ||||||
|  |  | ||||||
| 	//! Sets a vertex shader constant. |  | ||||||
| 	/** Can be used if you created a shader using pixel/vertex shader |  | ||||||
| 	assembler or ARB_fragment_program or ARB_vertex_program. |  | ||||||
| 	\param data: Data to be set in the constants |  | ||||||
| 	\param startRegister: First register to be set |  | ||||||
| 	\param constantAmount: Amount of registers to be set. One register consists of 4 floats. */ |  | ||||||
| 	virtual void setVertexShaderConstant(const f32* data, s32 startRegister, s32 constantAmount=1) = 0; |  | ||||||
|  |  | ||||||
| 	//! Return an index constant for the pixel shader for the given uniform variable name | 	//! Return an index constant for the pixel shader for the given uniform variable name | ||||||
| 	virtual s32 getPixelShaderConstantID(const c8 *name) = 0; | 	virtual s32 getPixelShaderConstantID(const c8 *name) = 0; | ||||||
|  |  | ||||||
| @@ -83,19 +69,8 @@ public: | |||||||
| 	virtual bool setPixelShaderConstant(s32 index, const s32 *ints, int count) = 0; | 	virtual bool setPixelShaderConstant(s32 index, const s32 *ints, int count) = 0; | ||||||
|  |  | ||||||
| 	//! Uint interface for the above. | 	//! Uint interface for the above. | ||||||
| 	/* NOTE: UINT only works with GLSL, not supported for other shaders. |  | ||||||
| 	         Also GLES drivers in Irrlicht do not support it as this needs at least GLES 3.0. |  | ||||||
| 	*/ |  | ||||||
| 	virtual bool setPixelShaderConstant(s32 index, const u32 *ints, int count) = 0; | 	virtual bool setPixelShaderConstant(s32 index, const u32 *ints, int count) = 0; | ||||||
|  |  | ||||||
| 	//! Sets a pixel shader constant. |  | ||||||
| 	/** Can be used if you created a shader using pixel/vertex shader |  | ||||||
| 	assembler or ARB_fragment_program or ARB_vertex_program. |  | ||||||
| 	\param data Data to be set in the constants |  | ||||||
| 	\param startRegister First register to be set. |  | ||||||
| 	\param constantAmount Amount of registers to be set. One register consists of 4 floats. */ |  | ||||||
| 	virtual void setPixelShaderConstant(const f32* data, s32 startRegister, s32 constantAmount=1) = 0; |  | ||||||
|  |  | ||||||
| 	//! Get pointer to the IVideoDriver interface | 	//! Get pointer to the IVideoDriver interface | ||||||
| 	/** \return Pointer to the IVideoDriver interface */ | 	/** \return Pointer to the IVideoDriver interface */ | ||||||
| 	virtual IVideoDriver *getVideoDriver() = 0; | 	virtual IVideoDriver *getVideoDriver() = 0; | ||||||
| @@ -103,6 +78,3 @@ public: | |||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_MEMORY_READ_FILE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_MEMORY_READ_FILE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReadFile.h" | #include "IReadFile.h" | ||||||
|  |  | ||||||
| @@ -26,6 +25,3 @@ namespace io | |||||||
| }; | }; | ||||||
| } // end namespace io | } // end namespace io | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_MESH_H_INCLUDED__ | #pragma once | ||||||
| #define __I_MESH_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "SMaterial.h" | #include "SMaterial.h" | ||||||
| @@ -60,7 +59,6 @@ namespace scene | |||||||
| 	EAMT_STATIC | 	EAMT_STATIC | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| class IMeshBuffer; | class IMeshBuffer; | ||||||
|  |  | ||||||
| //! Class which holds the geometry of an object. | //! Class which holds the geometry of an object. | ||||||
| @@ -71,7 +69,6 @@ namespace scene | |||||||
| class IMesh : public virtual IReferenceCounted | class IMesh : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Get the amount of mesh buffers. | 	//! Get the amount of mesh buffers. | ||||||
| 	/** \return Amount of mesh buffers (IMeshBuffer) in this mesh. */ | 	/** \return Amount of mesh buffers (IMeshBuffer) in this mesh. */ | ||||||
| 	virtual u32 getMeshBufferCount() const = 0; | 	virtual u32 getMeshBufferCount() const = 0; | ||||||
| @@ -124,6 +121,3 @@ namespace scene | |||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_MESH_BUFFER_H_INCLUDED__ | #pragma once | ||||||
| #define __I_MESH_BUFFER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "SMaterial.h" | #include "SMaterial.h" | ||||||
| @@ -39,7 +38,6 @@ namespace scene | |||||||
| class IMeshBuffer : public virtual IReferenceCounted | class IMeshBuffer : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Get the material of this meshbuffer | 	//! Get the material of this meshbuffer | ||||||
| 	/** \return Material of this buffer. */ | 	/** \return Material of this buffer. */ | ||||||
| 	virtual video::SMaterial &getMaterial() = 0; | 	virtual video::SMaterial &getMaterial() = 0; | ||||||
| @@ -120,11 +118,6 @@ namespace scene | |||||||
| 	\param numIndices Number of indices in array. */ | 	\param numIndices Number of indices in array. */ | ||||||
| 	virtual void append(const void *const vertices, u32 numVertices, const u16 *const indices, u32 numIndices) = 0; | 	virtual void append(const void *const vertices, u32 numVertices, const u16 *const indices, u32 numIndices) = 0; | ||||||
|  |  | ||||||
| 		//! Append the meshbuffer to the current buffer |  | ||||||
| 		/** Only works for compatible vertex types |  | ||||||
| 		\param other Buffer to append to this one. */ |  | ||||||
| 		virtual void append(const IMeshBuffer* const other) = 0; |  | ||||||
|  |  | ||||||
| 	//! get the current hardware mapping hint | 	//! get the current hardware mapping hint | ||||||
| 	virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const = 0; | 	virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const = 0; | ||||||
|  |  | ||||||
| @@ -163,23 +156,27 @@ namespace scene | |||||||
| 	virtual u32 getPrimitiveCount() const | 	virtual u32 getPrimitiveCount() const | ||||||
| 	{ | 	{ | ||||||
| 		const u32 indexCount = getIndexCount(); | 		const u32 indexCount = getIndexCount(); | ||||||
| 			switch (getPrimitiveType()) | 		switch (getPrimitiveType()) { | ||||||
| 			{ | 		case scene::EPT_POINTS: | ||||||
|                 case scene::EPT_POINTS:	        return indexCount; | 			return indexCount; | ||||||
|                 case scene::EPT_LINE_STRIP:     return indexCount-1; | 		case scene::EPT_LINE_STRIP: | ||||||
|                 case scene::EPT_LINE_LOOP:      return indexCount; | 			return indexCount - 1; | ||||||
|                 case scene::EPT_LINES:          return indexCount/2; | 		case scene::EPT_LINE_LOOP: | ||||||
|                 case scene::EPT_TRIANGLE_STRIP: return (indexCount-2); | 			return indexCount; | ||||||
|                 case scene::EPT_TRIANGLE_FAN:   return (indexCount-2); | 		case scene::EPT_LINES: | ||||||
|                 case scene::EPT_TRIANGLES:      return indexCount/3; | 			return indexCount / 2; | ||||||
|                 case scene::EPT_POINT_SPRITES:  return indexCount; | 		case scene::EPT_TRIANGLE_STRIP: | ||||||
|  | 			return (indexCount - 2); | ||||||
|  | 		case scene::EPT_TRIANGLE_FAN: | ||||||
|  | 			return (indexCount - 2); | ||||||
|  | 		case scene::EPT_TRIANGLES: | ||||||
|  | 			return indexCount / 3; | ||||||
|  | 		case scene::EPT_POINT_SPRITES: | ||||||
|  | 			return indexCount; | ||||||
| 		} | 		} | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_MESH_CACHE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_MESH_CACHE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "path.h" | #include "path.h" | ||||||
| @@ -27,7 +26,6 @@ namespace scene | |||||||
| class IMeshCache : public virtual IReferenceCounted | class IMeshCache : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Destructor | 	//! Destructor | ||||||
| 	virtual ~IMeshCache() {} | 	virtual ~IMeshCache() {} | ||||||
|  |  | ||||||
| @@ -129,9 +127,5 @@ namespace scene | |||||||
| 	virtual void clearUnusedMeshes() = 0; | 	virtual void clearUnusedMeshes() = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_MESH_LOADER_H_INCLUDED__ | #pragma once | ||||||
| #define __I_MESH_LOADER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "path.h" | #include "path.h" | ||||||
| @@ -26,7 +25,6 @@ ISceneManager::addExternalMeshLoader() to the engine. */ | |||||||
| class IMeshLoader : public virtual IReferenceCounted | class IMeshLoader : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Constructor | 	//! Constructor | ||||||
| 	IMeshLoader() {} | 	IMeshLoader() {} | ||||||
|  |  | ||||||
| @@ -48,8 +46,5 @@ public: | |||||||
| 	virtual IAnimatedMesh *createMesh(io::IReadFile *file) = 0; | 	virtual IAnimatedMesh *createMesh(io::IReadFile *file) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_MESH_MANIPULATOR_H_INCLUDED__ | #pragma once | ||||||
| #define __I_MESH_MANIPULATOR_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "vector3d.h" | #include "vector3d.h" | ||||||
| @@ -29,7 +28,6 @@ namespace scene | |||||||
| class IMeshManipulator : public virtual IReferenceCounted | class IMeshManipulator : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Recalculates all normals of the mesh. | 	//! Recalculates all normals of the mesh. | ||||||
| 	/** \param mesh: Mesh on which the operation is performed. | 	/** \param mesh: Mesh on which the operation is performed. | ||||||
| 	\param smooth: If the normals shall be smoothed. | 	\param smooth: If the normals shall be smoothed. | ||||||
| @@ -100,7 +98,6 @@ namespace scene | |||||||
| 		return apply_(func, buffer, boundingBoxUpdate, func); | 		return apply_(func, buffer, boundingBoxUpdate, func); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Apply a manipulator on the Mesh | 	//! Apply a manipulator on the Mesh | ||||||
| 	/** \param func A functor defining the mesh manipulation. | 	/** \param func A functor defining the mesh manipulation. | ||||||
| 	\param mesh The Mesh to apply the manipulator to. | 	\param mesh The Mesh to apply the manipulator to. | ||||||
| @@ -113,11 +110,9 @@ namespace scene | |||||||
| 			return true; | 			return true; | ||||||
| 		bool result = true; | 		bool result = true; | ||||||
| 		core::aabbox3df bufferbox; | 		core::aabbox3df bufferbox; | ||||||
| 			for (u32 i=0; i<mesh->getMeshBufferCount(); ++i) | 		for (u32 i = 0; i < mesh->getMeshBufferCount(); ++i) { | ||||||
| 			{ |  | ||||||
| 			result &= apply(func, mesh->getMeshBuffer(i), boundingBoxUpdate); | 			result &= apply(func, mesh->getMeshBuffer(i), boundingBoxUpdate); | ||||||
| 				if (boundingBoxUpdate) | 			if (boundingBoxUpdate) { | ||||||
| 				{ |  | ||||||
| 				if (0 == i) | 				if (0 == i) | ||||||
| 					bufferbox.reset(mesh->getMeshBuffer(i)->getBoundingBox()); | 					bufferbox.reset(mesh->getMeshBuffer(i)->getBoundingBox()); | ||||||
| 				else | 				else | ||||||
| @@ -143,31 +138,22 @@ protected: | |||||||
| 			return true; | 			return true; | ||||||
|  |  | ||||||
| 		core::aabbox3df bufferbox; | 		core::aabbox3df bufferbox; | ||||||
| 			for (u32 i=0; i<buffer->getVertexCount(); ++i) | 		for (u32 i = 0; i < buffer->getVertexCount(); ++i) { | ||||||
| 			{ | 			switch (buffer->getVertexType()) { | ||||||
| 				switch (buffer->getVertexType()) | 			case video::EVT_STANDARD: { | ||||||
| 				{ |  | ||||||
| 				case video::EVT_STANDARD: |  | ||||||
| 					{ |  | ||||||
| 				video::S3DVertex *verts = (video::S3DVertex *)buffer->getVertices(); | 				video::S3DVertex *verts = (video::S3DVertex *)buffer->getVertices(); | ||||||
| 				func(verts[i]); | 				func(verts[i]); | ||||||
| 					} | 			} break; | ||||||
| 					break; | 			case video::EVT_2TCOORDS: { | ||||||
| 				case video::EVT_2TCOORDS: |  | ||||||
| 					{ |  | ||||||
| 				video::S3DVertex2TCoords *verts = (video::S3DVertex2TCoords *)buffer->getVertices(); | 				video::S3DVertex2TCoords *verts = (video::S3DVertex2TCoords *)buffer->getVertices(); | ||||||
| 				func(verts[i]); | 				func(verts[i]); | ||||||
| 					} | 			} break; | ||||||
| 					break; | 			case video::EVT_TANGENTS: { | ||||||
| 				case video::EVT_TANGENTS: |  | ||||||
| 					{ |  | ||||||
| 				video::S3DVertexTangents *verts = (video::S3DVertexTangents *)buffer->getVertices(); | 				video::S3DVertexTangents *verts = (video::S3DVertexTangents *)buffer->getVertices(); | ||||||
| 				func(verts[i]); | 				func(verts[i]); | ||||||
|  | 			} break; | ||||||
| 			} | 			} | ||||||
| 					break; | 			if (boundingBoxUpdate) { | ||||||
| 				} |  | ||||||
| 				if (boundingBoxUpdate) |  | ||||||
| 				{ |  | ||||||
| 				if (0 == i) | 				if (0 == i) | ||||||
| 					bufferbox.reset(buffer->getPosition(0)); | 					bufferbox.reset(buffer->getPosition(0)); | ||||||
| 				else | 				else | ||||||
| @@ -182,6 +168,3 @@ protected: | |||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_MESH_SCENE_NODE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_MESH_SCENE_NODE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "ISceneNode.h" | #include "ISceneNode.h" | ||||||
|  |  | ||||||
| @@ -14,20 +13,18 @@ namespace scene | |||||||
|  |  | ||||||
| class IMesh; | class IMesh; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! A scene node displaying a static mesh | //! A scene node displaying a static mesh | ||||||
| class IMeshSceneNode : public ISceneNode | class IMeshSceneNode : public ISceneNode | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Constructor | 	//! Constructor | ||||||
| 	/** Use setMesh() to set the mesh to display. | 	/** Use setMesh() to set the mesh to display. | ||||||
| 	 */ | 	 */ | ||||||
| 	IMeshSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id, | 	IMeshSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id, | ||||||
| 			const core::vector3df &position = core::vector3df(0, 0, 0), | 			const core::vector3df &position = core::vector3df(0, 0, 0), | ||||||
| 			const core::vector3df &rotation = core::vector3df(0, 0, 0), | 			const core::vector3df &rotation = core::vector3df(0, 0, 0), | ||||||
| 			const core::vector3df& scale = core::vector3df(1,1,1)) | 			const core::vector3df &scale = core::vector3df(1, 1, 1)) : | ||||||
| 		: ISceneNode(parent, mgr, id, position, rotation, scale) {} | 			ISceneNode(parent, mgr, id, position, rotation, scale) {} | ||||||
|  |  | ||||||
| 	//! Sets a new mesh to display | 	//! Sets a new mesh to display | ||||||
| 	/** \param mesh Mesh to display. */ | 	/** \param mesh Mesh to display. */ | ||||||
| @@ -51,7 +48,3 @@ public: | |||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,55 +0,0 @@ | |||||||
| // Copyright (C) 2002-2012 Nikolaus Gebhardt |  | ||||||
| // This file is part of the "Irrlicht Engine". |  | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h |  | ||||||
|  |  | ||||||
| #pragma once |  | ||||||
| #include "IReferenceCounted.h" |  | ||||||
| #include "EMeshWriterEnums.h" |  | ||||||
|  |  | ||||||
| namespace irr |  | ||||||
| { |  | ||||||
| namespace io |  | ||||||
| { |  | ||||||
| 	class IWriteFile; |  | ||||||
| } // end namespace io |  | ||||||
|  |  | ||||||
| namespace scene |  | ||||||
| { |  | ||||||
| 	class IMesh; |  | ||||||
|  |  | ||||||
| 	//! Interface for writing meshes |  | ||||||
| 	class IMeshWriter : public virtual IReferenceCounted |  | ||||||
| 	{ |  | ||||||
| 	public: |  | ||||||
|  |  | ||||||
| 		//! Destructor |  | ||||||
| 		virtual ~IMeshWriter() {} |  | ||||||
|  |  | ||||||
| 		//! Get the type of the mesh writer |  | ||||||
| 		/** For own implementations, use MAKE_IRR_ID as shown in the |  | ||||||
| 		EMESH_WRITER_TYPE enumeration to return your own unique mesh |  | ||||||
| 		type id. |  | ||||||
| 		\return Type of the mesh writer. */ |  | ||||||
| 		virtual EMESH_WRITER_TYPE getType() const = 0; |  | ||||||
|  |  | ||||||
| 		//! Write a static mesh. |  | ||||||
| 		/** \param file File handle to write the mesh to. |  | ||||||
| 		\param mesh Pointer to mesh to be written. |  | ||||||
| 		\param flags Optional flags to set properties of the writer. |  | ||||||
| 		\return True if successful */ |  | ||||||
| 		virtual bool writeMesh(io::IWriteFile* file, scene::IMesh* mesh, |  | ||||||
| 							s32 flags=EMWF_NONE) = 0; |  | ||||||
|  |  | ||||||
| 		// Writes an animated mesh |  | ||||||
| 		// for future use, only b3d writer is able to write animated meshes currently and that was implemented using the writeMesh above. |  | ||||||
| 		/* \return Returns true if successful */ |  | ||||||
| 		//virtual bool writeAnimatedMesh(io::IWriteFile* file, |  | ||||||
| 		// scene::IAnimatedMesh* mesh, |  | ||||||
| 		// s32 flags=EMWF_NONE) = 0; |  | ||||||
| 	}; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace |  | ||||||
| } // end namespace |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_OS_OPERATOR_H_INCLUDED__ | #pragma once | ||||||
| #define __I_OS_OPERATOR_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "irrString.h" | #include "irrString.h" | ||||||
| @@ -41,9 +40,6 @@ public: | |||||||
| 	\param availableBytes: will contain the available memory in Kilobytes (1024 B) | 	\param availableBytes: will contain the available memory in Kilobytes (1024 B) | ||||||
| 	\return True if successful, false if not */ | 	\return True if successful, false if not */ | ||||||
| 	virtual bool getSystemMemory(u32 *totalBytes, u32 *availableBytes) const = 0; | 	virtual bool getSystemMemory(u32 *totalBytes, u32 *availableBytes) const = 0; | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace | } // end namespace | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_READ_FILE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_READ_FILE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "coreutil.h" | #include "coreutil.h" | ||||||
| @@ -56,6 +55,3 @@ namespace io | |||||||
|  |  | ||||||
| } // end namespace io | } // end namespace io | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_IREFERENCE_COUNTED_H_INCLUDED__ | #pragma once | ||||||
| #define __I_IREFERENCE_COUNTED_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrTypes.h" | #include "irrTypes.h" | ||||||
|  |  | ||||||
| @@ -41,10 +40,9 @@ namespace irr | |||||||
| class IReferenceCounted | class IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Constructor. | 	//! Constructor. | ||||||
| 		IReferenceCounted() | 	IReferenceCounted() : | ||||||
| 			: DebugName(0), ReferenceCounter(1) | 			DebugName(0), ReferenceCounter(1) | ||||||
| 	{ | 	{ | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -119,8 +117,7 @@ namespace irr | |||||||
| 		_IRR_DEBUG_BREAK_IF(ReferenceCounter <= 0) | 		_IRR_DEBUG_BREAK_IF(ReferenceCounter <= 0) | ||||||
|  |  | ||||||
| 		--ReferenceCounter; | 		--ReferenceCounter; | ||||||
| 			if (!ReferenceCounter) | 		if (!ReferenceCounter) { | ||||||
| 			{ |  | ||||||
| 			delete this; | 			delete this; | ||||||
| 			return true; | 			return true; | ||||||
| 		} | 		} | ||||||
| @@ -145,7 +142,6 @@ namespace irr | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
|  |  | ||||||
| 	//! Sets the debug name of the object. | 	//! Sets the debug name of the object. | ||||||
| 	/** The Debugname may only be set and changed by the object | 	/** The Debugname may only be set and changed by the object | ||||||
| 	itself. This method should only be used in Debug mode. | 	itself. This method should only be used in Debug mode. | ||||||
| @@ -156,7 +152,6 @@ namespace irr | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| private: | private: | ||||||
|  |  | ||||||
| 	//! The debug name. | 	//! The debug name. | ||||||
| 	const c8 *DebugName; | 	const c8 *DebugName; | ||||||
|  |  | ||||||
| @@ -165,6 +160,3 @@ namespace irr | |||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_RENDER_TARGET_H_INCLUDED__ | #pragma once | ||||||
| #define __I_RENDER_TARGET_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "EDriverTypes.h" | #include "EDriverTypes.h" | ||||||
| @@ -30,9 +29,9 @@ namespace video | |||||||
| class IRenderTarget : public virtual IReferenceCounted | class IRenderTarget : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		IRenderTarget() : DepthStencil(0), DriverType(EDT_NULL) | 	IRenderTarget() : | ||||||
|  | 			DepthStencil(0), DriverType(EDT_NULL) | ||||||
| 	{ | 	{ | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -70,12 +69,9 @@ namespace video | |||||||
| 	//! You can pass getDepthStencil() for depthStencil if you don't want to change that one | 	//! You can pass getDepthStencil() for depthStencil if you don't want to change that one | ||||||
| 	void setTexture(ITexture *texture, ITexture *depthStencil) | 	void setTexture(ITexture *texture, ITexture *depthStencil) | ||||||
| 	{ | 	{ | ||||||
| 			if ( texture ) | 		if (texture) { | ||||||
| 			{ |  | ||||||
| 			setTextures(&texture, 1, depthStencil); | 			setTextures(&texture, 1, depthStencil); | ||||||
| 			} | 		} else { | ||||||
| 			else |  | ||||||
| 			{ |  | ||||||
| 			setTextures(0, 0, depthStencil); | 			setTextures(0, 0, depthStencil); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| @@ -83,12 +79,9 @@ namespace video | |||||||
| 	//! Set one cube surface texture. | 	//! Set one cube surface texture. | ||||||
| 	void setTexture(ITexture *texture, ITexture *depthStencil, E_CUBE_SURFACE cubeSurface) | 	void setTexture(ITexture *texture, ITexture *depthStencil, E_CUBE_SURFACE cubeSurface) | ||||||
| 	{ | 	{ | ||||||
| 			if ( texture ) | 		if (texture) { | ||||||
| 			{ |  | ||||||
| 			setTextures(&texture, 1, depthStencil, &cubeSurface, 1); | 			setTextures(&texture, 1, depthStencil, &cubeSurface, 1); | ||||||
| 			} | 		} else { | ||||||
| 			else |  | ||||||
| 			{ |  | ||||||
| 			setTextures(0, 0, depthStencil, &cubeSurface, 1); | 			setTextures(0, 0, depthStencil, &cubeSurface, 1); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| @@ -100,7 +93,6 @@ namespace video | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
|  |  | ||||||
| 	//! Set multiple textures. | 	//! Set multiple textures. | ||||||
| 	// NOTE: working with pointers instead of arrays to avoid unnecessary memory allocations for the single textures case | 	// NOTE: working with pointers instead of arrays to avoid unnecessary memory allocations for the single textures case | ||||||
| 	virtual void setTextures(ITexture *const *textures, u32 numTextures, ITexture *depthStencil, const E_CUBE_SURFACE *cubeSurfaces = 0, u32 numCubeSurfaces = 0) = 0; | 	virtual void setTextures(ITexture *const *textures, u32 numTextures, ITexture *depthStencil, const E_CUBE_SURFACE *cubeSurfaces = 0, u32 numCubeSurfaces = 0) = 0; | ||||||
| @@ -125,5 +117,3 @@ namespace video | |||||||
|  |  | ||||||
| } | } | ||||||
| } | } | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_SCENE_COLLISION_MANAGER_H_INCLUDED__ | #pragma once | ||||||
| #define __I_SCENE_COLLISION_MANAGER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "position2d.h" | #include "position2d.h" | ||||||
| @@ -19,7 +18,6 @@ namespace scene | |||||||
| class ISceneCollisionManager : public virtual IReferenceCounted | class ISceneCollisionManager : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Returns a 3d ray which would go through the 2d screen coordinates. | 	//! Returns a 3d ray which would go through the 2d screen coordinates. | ||||||
| 	/** \param pos: Screen coordinates in pixels. | 	/** \param pos: Screen coordinates in pixels. | ||||||
| 	\param camera: Camera from which the ray starts. If null, the | 	\param camera: Camera from which the ray starts. If null, the | ||||||
| @@ -29,10 +27,7 @@ namespace scene | |||||||
| 	would be behind the 2d screen coordinates. */ | 	would be behind the 2d screen coordinates. */ | ||||||
| 	virtual core::line3d<f32> getRayFromScreenCoordinates( | 	virtual core::line3d<f32> getRayFromScreenCoordinates( | ||||||
| 			const core::position2d<s32> &pos, const ICameraSceneNode *camera = 0) = 0; | 			const core::position2d<s32> &pos, const ICameraSceneNode *camera = 0) = 0; | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_SCENE_MANAGER_H_INCLUDED__ | #pragma once | ||||||
| #define __I_SCENE_MANAGER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "irrArray.h" | #include "irrArray.h" | ||||||
| @@ -13,7 +12,6 @@ | |||||||
| #include "dimension2d.h" | #include "dimension2d.h" | ||||||
| #include "SColor.h" | #include "SColor.h" | ||||||
| #include "ESceneNodeTypes.h" | #include "ESceneNodeTypes.h" | ||||||
| #include "EMeshWriterEnums.h" |  | ||||||
| #include "SceneParameters.h" | #include "SceneParameters.h" | ||||||
| #include "ISkinnedMesh.h" | #include "ISkinnedMesh.h" | ||||||
|  |  | ||||||
| @@ -109,7 +107,6 @@ namespace scene | |||||||
| class IMeshLoader; | class IMeshLoader; | ||||||
| class IMeshManipulator; | class IMeshManipulator; | ||||||
| class IMeshSceneNode; | class IMeshSceneNode; | ||||||
| 	class IMeshWriter; |  | ||||||
| class ISceneNode; | class ISceneNode; | ||||||
| class ISceneNodeFactory; | class ISceneNodeFactory; | ||||||
|  |  | ||||||
| @@ -129,7 +126,6 @@ namespace scene | |||||||
| class ISceneManager : public virtual IReferenceCounted | class ISceneManager : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Get pointer to an animatable mesh. Loads the file if not loaded already. | 	//! Get pointer to an animatable mesh. Loads the file if not loaded already. | ||||||
| 	/** | 	/** | ||||||
| 	 * If you want to remove a loaded mesh from the cache again, use removeMesh(). | 	 * If you want to remove a loaded mesh from the cache again, use removeMesh(). | ||||||
| @@ -603,11 +599,6 @@ namespace scene | |||||||
| 	See IReferenceCounted::drop() for more information. */ | 	See IReferenceCounted::drop() for more information. */ | ||||||
| 	virtual ISceneManager *createNewSceneManager(bool cloneContent = false) = 0; | 	virtual ISceneManager *createNewSceneManager(bool cloneContent = false) = 0; | ||||||
|  |  | ||||||
| 		//! Get a mesh writer implementation if available |  | ||||||
| 		/** Note: You need to drop() the pointer after use again, see IReferenceCounted::drop() |  | ||||||
| 		for details. */ |  | ||||||
| 		virtual IMeshWriter* createMeshWriter(EMESH_WRITER_TYPE type) = 0; |  | ||||||
|  |  | ||||||
| 	//! Get a skinned mesh, which is not available as header-only code | 	//! Get a skinned mesh, which is not available as header-only code | ||||||
| 	/** Note: You need to drop() the pointer after use again, see IReferenceCounted::drop() | 	/** Note: You need to drop() the pointer after use again, see IReferenceCounted::drop() | ||||||
| 	for details. */ | 	for details. */ | ||||||
| @@ -637,9 +628,5 @@ namespace scene | |||||||
| 	virtual bool isCulled(const ISceneNode *node) const = 0; | 	virtual bool isCulled(const ISceneNode *node) const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_SCENE_NODE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_SCENE_NODE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "ESceneNodeTypes.h" | #include "ESceneNodeTypes.h" | ||||||
| @@ -14,7 +13,9 @@ | |||||||
| #include "aabbox3d.h" | #include "aabbox3d.h" | ||||||
| #include "matrix4.h" | #include "matrix4.h" | ||||||
| #include "IAttributes.h" | #include "IAttributes.h" | ||||||
|  |  | ||||||
| #include <list> | #include <list> | ||||||
|  | #include <optional> | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -37,13 +38,13 @@ namespace scene | |||||||
| class ISceneNode : virtual public IReferenceCounted | class ISceneNode : virtual public IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Constructor | 	//! Constructor | ||||||
| 	ISceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id = -1, | 	ISceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id = -1, | ||||||
| 			const core::vector3df &position = core::vector3df(0, 0, 0), | 			const core::vector3df &position = core::vector3df(0, 0, 0), | ||||||
| 			const core::vector3df &rotation = core::vector3df(0, 0, 0), | 			const core::vector3df &rotation = core::vector3df(0, 0, 0), | ||||||
| 				const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f)) | 			const core::vector3df &scale = core::vector3df(1.0f, 1.0f, 1.0f)) : | ||||||
| 			: RelativeTranslation(position), RelativeRotation(rotation), RelativeScale(scale), | 			RelativeTranslation(position), | ||||||
|  | 			RelativeRotation(rotation), RelativeScale(scale), | ||||||
| 			Parent(0), SceneManager(mgr), ID(id), | 			Parent(0), SceneManager(mgr), ID(id), | ||||||
| 			AutomaticCullingState(EAC_BOX), DebugDataVisible(EDS_OFF), | 			AutomaticCullingState(EAC_BOX), DebugDataVisible(EDS_OFF), | ||||||
| 			IsVisible(true), IsDebugObject(false) | 			IsVisible(true), IsDebugObject(false) | ||||||
| @@ -54,7 +55,6 @@ namespace scene | |||||||
| 		updateAbsolutePosition(); | 		updateAbsolutePosition(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Destructor | 	//! Destructor | ||||||
| 	virtual ~ISceneNode() | 	virtual ~ISceneNode() | ||||||
| 	{ | 	{ | ||||||
| @@ -62,7 +62,6 @@ namespace scene | |||||||
| 		removeAll(); | 		removeAll(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! This method is called just before the rendering process of the whole scene. | 	//! This method is called just before the rendering process of the whole scene. | ||||||
| 	/** Nodes may register themselves in the render pipeline during this call, | 	/** Nodes may register themselves in the render pipeline during this call, | ||||||
| 	precalculate the geometry which should be rendered, and prevent their | 	precalculate the geometry which should be rendered, and prevent their | ||||||
| @@ -79,15 +78,13 @@ namespace scene | |||||||
| 	*/ | 	*/ | ||||||
| 	virtual void OnRegisterSceneNode() | 	virtual void OnRegisterSceneNode() | ||||||
| 	{ | 	{ | ||||||
| 			if (IsVisible) | 		if (IsVisible) { | ||||||
| 			{ |  | ||||||
| 			ISceneNodeList::iterator it = Children.begin(); | 			ISceneNodeList::iterator it = Children.begin(); | ||||||
| 			for (; it != Children.end(); ++it) | 			for (; it != Children.end(); ++it) | ||||||
| 				(*it)->OnRegisterSceneNode(); | 				(*it)->OnRegisterSceneNode(); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! OnAnimate() is called just before rendering the whole scene. | 	//! OnAnimate() is called just before rendering the whole scene. | ||||||
| 	/** Nodes may calculate or store animations here, and may do other useful things, | 	/** Nodes may calculate or store animations here, and may do other useful things, | ||||||
| 	depending on what they are. Also, OnAnimate() should be called for all | 	depending on what they are. Also, OnAnimate() should be called for all | ||||||
| @@ -96,8 +93,7 @@ namespace scene | |||||||
| 	\param timeMs Current time in milliseconds. */ | 	\param timeMs Current time in milliseconds. */ | ||||||
| 	virtual void OnAnimate(u32 timeMs) | 	virtual void OnAnimate(u32 timeMs) | ||||||
| 	{ | 	{ | ||||||
| 			if (IsVisible) | 		if (IsVisible) { | ||||||
| 			{ |  | ||||||
| 			// update absolute position | 			// update absolute position | ||||||
| 			updateAbsolutePosition(); | 			updateAbsolutePosition(); | ||||||
|  |  | ||||||
| @@ -109,35 +105,23 @@ namespace scene | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Renders the node. | 	//! Renders the node. | ||||||
| 	virtual void render() = 0; | 	virtual void render() = 0; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns the name of the node. | 	//! Returns the name of the node. | ||||||
| 	/** \return Name as character string. */ | 	/** \return Name as character string. */ | ||||||
| 		virtual const c8* getName() const | 	virtual const std::optional<std::string> &getName() const | ||||||
| 	{ | 	{ | ||||||
| 			return Name.c_str(); | 		return Name; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the name of the node. | 	//! Sets the name of the node. | ||||||
| 	/** \param name New name of the scene node. */ | 	/** \param name New name of the scene node. */ | ||||||
| 		virtual void setName(const c8* name) | 	virtual void setName(const std::optional<std::string> &name) | ||||||
| 	{ | 	{ | ||||||
| 		Name = name; | 		Name = name; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 		//! Sets the name of the node. |  | ||||||
| 		/** \param name New name of the scene node. */ |  | ||||||
| 		virtual void setName(const core::stringc& name) |  | ||||||
| 		{ |  | ||||||
| 			Name = name; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get the axis aligned, not transformed bounding box of this node. | 	//! Get the axis aligned, not transformed bounding box of this node. | ||||||
| 	/** This means that if this node is an animated 3d character, | 	/** This means that if this node is an animated 3d character, | ||||||
| 	moving in a room, the bounding box will always be around the | 	moving in a room, the bounding box will always be around the | ||||||
| @@ -148,7 +132,6 @@ namespace scene | |||||||
| 	\return The non-transformed bounding box. */ | 	\return The non-transformed bounding box. */ | ||||||
| 	virtual const core::aabbox3d<f32> &getBoundingBox() const = 0; | 	virtual const core::aabbox3d<f32> &getBoundingBox() const = 0; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get the axis aligned, transformed and animated absolute bounding box of this node. | 	//! Get the axis aligned, transformed and animated absolute bounding box of this node. | ||||||
| 	/** Note: The result is still an axis-aligned bounding box, so it's size | 	/** Note: The result is still an axis-aligned bounding box, so it's size | ||||||
| 	changes with rotation. | 	changes with rotation. | ||||||
| @@ -185,7 +168,6 @@ namespace scene | |||||||
| 		return AbsoluteTransformation; | 		return AbsoluteTransformation; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns the relative transformation of the scene node. | 	//! Returns the relative transformation of the scene node. | ||||||
| 	/** The relative transformation is stored internally as 3 | 	/** The relative transformation is stored internally as 3 | ||||||
| 	vectors: translation, rotation and scale. To get the relative | 	vectors: translation, rotation and scale. To get the relative | ||||||
| @@ -197,8 +179,7 @@ namespace scene | |||||||
| 		mat.setRotationDegrees(RelativeRotation); | 		mat.setRotationDegrees(RelativeRotation); | ||||||
| 		mat.setTranslation(RelativeTranslation); | 		mat.setTranslation(RelativeTranslation); | ||||||
|  |  | ||||||
| 			if (RelativeScale != core::vector3df(1.f,1.f,1.f)) | 		if (RelativeScale != core::vector3df(1.f, 1.f, 1.f)) { | ||||||
| 			{ |  | ||||||
| 			core::matrix4 smat; | 			core::matrix4 smat; | ||||||
| 			smat.setScale(RelativeScale); | 			smat.setScale(RelativeScale); | ||||||
| 			mat *= smat; | 			mat *= smat; | ||||||
| @@ -207,7 +188,6 @@ namespace scene | |||||||
| 		return mat; | 		return mat; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns whether the node should be visible (if all of its parents are visible). | 	//! Returns whether the node should be visible (if all of its parents are visible). | ||||||
| 	/** This is only an option set by the user, but has nothing to | 	/** This is only an option set by the user, but has nothing to | ||||||
| 	do with geometry culling | 	do with geometry culling | ||||||
| @@ -242,7 +222,6 @@ namespace scene | |||||||
| 		IsVisible = isVisible; | 		IsVisible = isVisible; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get the id of the scene node. | 	//! Get the id of the scene node. | ||||||
| 	/** This id can be used to identify the node. | 	/** This id can be used to identify the node. | ||||||
| 	\return The id. */ | 	\return The id. */ | ||||||
| @@ -251,7 +230,6 @@ namespace scene | |||||||
| 		return ID; | 		return ID; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the id of the scene node. | 	//! Sets the id of the scene node. | ||||||
| 	/** This id can be used to identify the node. | 	/** This id can be used to identify the node. | ||||||
| 	\param id The new id. */ | 	\param id The new id. */ | ||||||
| @@ -260,66 +238,59 @@ namespace scene | |||||||
| 		ID = id; | 		ID = id; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Adds a child to this scene node. | 	//! Adds a child to this scene node. | ||||||
| 	/** If the scene node already has a parent it is first removed | 	/** If the scene node already has a parent it is first removed | ||||||
| 	from the other parent. | 	from the other parent. | ||||||
| 	\param child A pointer to the new child. */ | 	\param child A pointer to the new child. */ | ||||||
| 	virtual void addChild(ISceneNode *child) | 	virtual void addChild(ISceneNode *child) | ||||||
| 	{ | 	{ | ||||||
| 			if (child && (child != this)) | 		if (child && (child != this)) { | ||||||
| 			{ |  | ||||||
| 			// Change scene manager? | 			// Change scene manager? | ||||||
| 			if (SceneManager != child->SceneManager) | 			if (SceneManager != child->SceneManager) | ||||||
| 				child->setSceneManager(SceneManager); | 				child->setSceneManager(SceneManager); | ||||||
|  |  | ||||||
| 			child->grab(); | 			child->grab(); | ||||||
| 			child->remove(); // remove from old parent | 			child->remove(); // remove from old parent | ||||||
| 				Children.push_back(child); | 			// Note: This iterator is not invalidated until we erase it. | ||||||
|  | 			child->ThisIterator = Children.insert(Children.end(), child); | ||||||
| 			child->Parent = this; | 			child->Parent = this; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Removes a child from this scene node. | 	//! Removes a child from this scene node. | ||||||
| 		/** If found in the children list, the child pointer is also | 	/** | ||||||
| 		dropped and might be deleted if no other grab exists. |  | ||||||
| 	\param child A pointer to the child which shall be removed. | 	\param child A pointer to the child which shall be removed. | ||||||
| 	\return True if the child was removed, and false if not, | 	\return True if the child was removed, and false if not, | ||||||
| 		e.g. because it couldn't be found in the children list. */ | 	e.g. because it belongs to a different parent or no parent. */ | ||||||
| 	virtual bool removeChild(ISceneNode *child) | 	virtual bool removeChild(ISceneNode *child) | ||||||
| 	{ | 	{ | ||||||
| 			ISceneNodeList::iterator it = Children.begin(); | 		if (child->Parent != this) | ||||||
| 			for (; it != Children.end(); ++it) | 			return false; | ||||||
| 				if ((*it) == child) |  | ||||||
| 				{ | 		// The iterator must be set since the parent is not null. | ||||||
| 					(*it)->Parent = 0; | 		_IRR_DEBUG_BREAK_IF(!child->ThisIterator.has_value()); | ||||||
| 					(*it)->drop(); | 		auto it = *child->ThisIterator; | ||||||
|  | 		child->ThisIterator = std::nullopt; | ||||||
|  | 		child->Parent = nullptr; | ||||||
|  | 		child->drop(); | ||||||
| 		Children.erase(it); | 		Children.erase(it); | ||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 			return false; |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Removes all children of this scene node | 	//! Removes all children of this scene node | ||||||
| 	/** The scene nodes found in the children list are also dropped | 	/** The scene nodes found in the children list are also dropped | ||||||
| 	and might be deleted if no other grab exists on them. | 	and might be deleted if no other grab exists on them. | ||||||
| 	*/ | 	*/ | ||||||
| 	virtual void removeAll() | 	virtual void removeAll() | ||||||
| 	{ | 	{ | ||||||
| 			ISceneNodeList::iterator it = Children.begin(); | 		for (auto &child : Children) { | ||||||
| 			for (; it != Children.end(); ++it) | 			child->Parent = nullptr; | ||||||
| 			{ | 			child->ThisIterator = std::nullopt; | ||||||
| 				(*it)->Parent = 0; | 			child->drop(); | ||||||
| 				(*it)->drop(); |  | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		Children.clear(); | 		Children.clear(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Removes this scene node from the scene | 	//! Removes this scene node from the scene | ||||||
| 	/** If no other grab exists for this node, it will be deleted. | 	/** If no other grab exists for this node, it will be deleted. | ||||||
| 	 */ | 	 */ | ||||||
| @@ -329,7 +300,6 @@ namespace scene | |||||||
| 			Parent->removeChild(this); | 			Parent->removeChild(this); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns the material based on the zero based index i. | 	//! Returns the material based on the zero based index i. | ||||||
| 	/** To get the amount of materials used by this scene node, use | 	/** To get the amount of materials used by this scene node, use | ||||||
| 	getMaterialCount(). This function is needed for inserting the | 	getMaterialCount(). This function is needed for inserting the | ||||||
| @@ -343,7 +313,6 @@ namespace scene | |||||||
| 		return video::IdentityMaterial; | 		return video::IdentityMaterial; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Get amount of materials used by this scene node. | 	//! Get amount of materials used by this scene node. | ||||||
| 	/** \return Current amount of materials of this scene node. */ | 	/** \return Current amount of materials of this scene node. */ | ||||||
| 	virtual u32 getMaterialCount() const | 	virtual u32 getMaterialCount() const | ||||||
| @@ -351,18 +320,17 @@ namespace scene | |||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Execute a function on all materials of this scene node. | 	//! Execute a function on all materials of this scene node. | ||||||
| 	/** Useful for setting material properties, e.g. if you want the whole | 	/** Useful for setting material properties, e.g. if you want the whole | ||||||
| 	mesh to be affected by light. */ | 	mesh to be affected by light. */ | ||||||
| 	template <typename F> | 	template <typename F> | ||||||
| 		void forEachMaterial(F &&fn) { | 	void forEachMaterial(F &&fn) | ||||||
|  | 	{ | ||||||
| 		for (u32 i = 0; i < getMaterialCount(); i++) { | 		for (u32 i = 0; i < getMaterialCount(); i++) { | ||||||
| 			fn(getMaterial(i)); | 			fn(getMaterial(i)); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Gets the scale of the scene node relative to its parent. | 	//! Gets the scale of the scene node relative to its parent. | ||||||
| 	/** This is the scale of this node relative to its parent. | 	/** This is the scale of this node relative to its parent. | ||||||
| 	If you want the absolute scale, use | 	If you want the absolute scale, use | ||||||
| @@ -373,7 +341,6 @@ namespace scene | |||||||
| 		return RelativeScale; | 		return RelativeScale; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the relative scale of the scene node. | 	//! Sets the relative scale of the scene node. | ||||||
| 	/** \param scale New scale of the node, relative to its parent. */ | 	/** \param scale New scale of the node, relative to its parent. */ | ||||||
| 	virtual void setScale(const core::vector3df &scale) | 	virtual void setScale(const core::vector3df &scale) | ||||||
| @@ -381,7 +348,6 @@ namespace scene | |||||||
| 		RelativeScale = scale; | 		RelativeScale = scale; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Gets the rotation of the node relative to its parent. | 	//! Gets the rotation of the node relative to its parent. | ||||||
| 	/** Note that this is the relative rotation of the node. | 	/** Note that this is the relative rotation of the node. | ||||||
| 	If you want the absolute rotation, use | 	If you want the absolute rotation, use | ||||||
| @@ -392,7 +358,6 @@ namespace scene | |||||||
| 		return RelativeRotation; | 		return RelativeRotation; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the rotation of the node relative to its parent. | 	//! Sets the rotation of the node relative to its parent. | ||||||
| 	/** This only modifies the relative rotation of the node. | 	/** This only modifies the relative rotation of the node. | ||||||
| 	\param rotation New rotation of the node in degrees. */ | 	\param rotation New rotation of the node in degrees. */ | ||||||
| @@ -401,7 +366,6 @@ namespace scene | |||||||
| 		RelativeRotation = rotation; | 		RelativeRotation = rotation; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Gets the position of the node relative to its parent. | 	//! Gets the position of the node relative to its parent. | ||||||
| 	/** Note that the position is relative to the parent. If you want | 	/** Note that the position is relative to the parent. If you want | ||||||
| 	the position in world coordinates, use getAbsolutePosition() instead. | 	the position in world coordinates, use getAbsolutePosition() instead. | ||||||
| @@ -411,7 +375,6 @@ namespace scene | |||||||
| 		return RelativeTranslation; | 		return RelativeTranslation; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets the position of the node relative to its parent. | 	//! Sets the position of the node relative to its parent. | ||||||
| 	/** Note that the position is relative to the parent. | 	/** Note that the position is relative to the parent. | ||||||
| 	\param newpos New relative position of the scene node. */ | 	\param newpos New relative position of the scene node. */ | ||||||
| @@ -420,7 +383,6 @@ namespace scene | |||||||
| 		RelativeTranslation = newpos; | 		RelativeTranslation = newpos; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Gets the absolute position of the node in world coordinates. | 	//! Gets the absolute position of the node in world coordinates. | ||||||
| 	/** If you want the position of the node relative to its parent, | 	/** If you want the position of the node relative to its parent, | ||||||
| 	use getPosition() instead. | 	use getPosition() instead. | ||||||
| @@ -435,7 +397,6 @@ namespace scene | |||||||
| 		return AbsoluteTransformation.getTranslation(); | 		return AbsoluteTransformation.getTranslation(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Set a culling style or disable culling completely. | 	//! Set a culling style or disable culling completely. | ||||||
| 	/** Box cullling (EAC_BOX) is set by default. Note that not | 	/** Box cullling (EAC_BOX) is set by default. Note that not | ||||||
| 	all SceneNodes support culling and that some nodes always cull | 	all SceneNodes support culling and that some nodes always cull | ||||||
| @@ -447,7 +408,6 @@ namespace scene | |||||||
| 		AutomaticCullingState = state; | 		AutomaticCullingState = state; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Gets the automatic culling state. | 	//! Gets the automatic culling state. | ||||||
| 	/** \return The automatic culling state. */ | 	/** \return The automatic culling state. */ | ||||||
| 	u32 getAutomaticCulling() const | 	u32 getAutomaticCulling() const | ||||||
| @@ -455,7 +415,6 @@ namespace scene | |||||||
| 		return AutomaticCullingState; | 		return AutomaticCullingState; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets if debug data like bounding boxes should be drawn. | 	//! Sets if debug data like bounding boxes should be drawn. | ||||||
| 	/** A bitwise OR of the types from @ref irr::scene::E_DEBUG_SCENE_TYPE. | 	/** A bitwise OR of the types from @ref irr::scene::E_DEBUG_SCENE_TYPE. | ||||||
| 	Please note that not all scene nodes support all debug data types. | 	Please note that not all scene nodes support all debug data types. | ||||||
| @@ -473,7 +432,6 @@ namespace scene | |||||||
| 		return DebugDataVisible; | 		return DebugDataVisible; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets if this scene node is a debug object. | 	//! Sets if this scene node is a debug object. | ||||||
| 	/** Debug objects have some special properties, for example they can be easily | 	/** Debug objects have some special properties, for example they can be easily | ||||||
| 	excluded from collision detection or from serialization, etc. */ | 	excluded from collision detection or from serialization, etc. */ | ||||||
| @@ -482,7 +440,6 @@ namespace scene | |||||||
| 		IsDebugObject = debugObject; | 		IsDebugObject = debugObject; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns if this scene node is a debug object. | 	//! Returns if this scene node is a debug object. | ||||||
| 	/** Debug objects have some special properties, for example they can be easily | 	/** Debug objects have some special properties, for example they can be easily | ||||||
| 	excluded from collision detection or from serialization, etc. | 	excluded from collision detection or from serialization, etc. | ||||||
| @@ -492,7 +449,6 @@ namespace scene | |||||||
| 		return IsDebugObject; | 		return IsDebugObject; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns a const reference to the list of all children. | 	//! Returns a const reference to the list of all children. | ||||||
| 	/** \return The list of all children of this node. */ | 	/** \return The list of all children of this node. */ | ||||||
| 	const std::list<ISceneNode *> &getChildren() const | 	const std::list<ISceneNode *> &getChildren() const | ||||||
| @@ -500,7 +456,6 @@ namespace scene | |||||||
| 		return Children; | 		return Children; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Changes the parent of the scene node. | 	//! Changes the parent of the scene node. | ||||||
| 	/** \param newParent The new parent to be used. */ | 	/** \param newParent The new parent to be used. */ | ||||||
| 	virtual void setParent(ISceneNode *newParent) | 	virtual void setParent(ISceneNode *newParent) | ||||||
| @@ -508,30 +463,24 @@ namespace scene | |||||||
| 		grab(); | 		grab(); | ||||||
| 		remove(); | 		remove(); | ||||||
|  |  | ||||||
| 			Parent = newParent; | 		if (newParent) | ||||||
|  | 			newParent->addChild(this); | ||||||
| 			if (Parent) |  | ||||||
| 				Parent->addChild(this); |  | ||||||
|  |  | ||||||
| 		drop(); | 		drop(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Updates the absolute position based on the relative and the parents position | 	//! Updates the absolute position based on the relative and the parents position | ||||||
| 	/** Note: This does not recursively update the parents absolute positions, so if you have a deeper | 	/** Note: This does not recursively update the parents absolute positions, so if you have a deeper | ||||||
| 		hierarchy you might want to update the parents first.*/ | 		hierarchy you might want to update the parents first.*/ | ||||||
| 	virtual void updateAbsolutePosition() | 	virtual void updateAbsolutePosition() | ||||||
| 	{ | 	{ | ||||||
| 			if (Parent) | 		if (Parent) { | ||||||
| 			{ |  | ||||||
| 			AbsoluteTransformation = | 			AbsoluteTransformation = | ||||||
| 					Parent->getAbsoluteTransformation() * getRelativeTransformation(); | 					Parent->getAbsoluteTransformation() * getRelativeTransformation(); | ||||||
| 			} | 		} else | ||||||
| 			else |  | ||||||
| 			AbsoluteTransformation = getRelativeTransformation(); | 			AbsoluteTransformation = getRelativeTransformation(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns the parent of this scene node | 	//! Returns the parent of this scene node | ||||||
| 	/** \return A pointer to the parent. */ | 	/** \return A pointer to the parent. */ | ||||||
| 	scene::ISceneNode *getParent() const | 	scene::ISceneNode *getParent() const | ||||||
| @@ -539,7 +488,6 @@ namespace scene | |||||||
| 		return Parent; | 		return Parent; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Returns type of the scene node | 	//! Returns type of the scene node | ||||||
| 	/** \return The type of this node. */ | 	/** \return The type of this node. */ | ||||||
| 	virtual ESCENE_NODE_TYPE getType() const | 	virtual ESCENE_NODE_TYPE getType() const | ||||||
| @@ -561,7 +509,6 @@ namespace scene | |||||||
| 	virtual ISceneManager *getSceneManager(void) const { return SceneManager; } | 	virtual ISceneManager *getSceneManager(void) const { return SceneManager; } | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
|  |  | ||||||
| 	//! A clone function for the ISceneNode members. | 	//! A clone function for the ISceneNode members. | ||||||
| 	/** This method can be used by clone() implementations of | 	/** This method can be used by clone() implementations of | ||||||
| 	derived classes | 	derived classes | ||||||
| @@ -604,7 +551,7 @@ namespace scene | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	//! Name of the scene node. | 	//! Name of the scene node. | ||||||
| 		core::stringc Name; | 	std::optional<std::string> Name; | ||||||
|  |  | ||||||
| 	//! Absolute transformation of the node. | 	//! Absolute transformation of the node. | ||||||
| 	core::matrix4 AbsoluteTransformation; | 	core::matrix4 AbsoluteTransformation; | ||||||
| @@ -618,12 +565,15 @@ namespace scene | |||||||
| 	//! Relative scale of the scene node. | 	//! Relative scale of the scene node. | ||||||
| 	core::vector3df RelativeScale; | 	core::vector3df RelativeScale; | ||||||
|  |  | ||||||
| 		//! Pointer to the parent |  | ||||||
| 		ISceneNode* Parent; |  | ||||||
|  |  | ||||||
| 	//! List of all children of this node | 	//! List of all children of this node | ||||||
| 	std::list<ISceneNode *> Children; | 	std::list<ISceneNode *> Children; | ||||||
|  |  | ||||||
|  | 	//! Iterator pointing to this node in the parent's child list. | ||||||
|  | 	std::optional<ISceneNodeList::iterator> ThisIterator; | ||||||
|  |  | ||||||
|  | 	//! Pointer to the parent | ||||||
|  | 	ISceneNode *Parent; | ||||||
|  |  | ||||||
| 	//! Pointer to the scene manager | 	//! Pointer to the scene manager | ||||||
| 	ISceneManager *SceneManager; | 	ISceneManager *SceneManager; | ||||||
|  |  | ||||||
| @@ -643,9 +593,5 @@ namespace scene | |||||||
| 	bool IsDebugObject; | 	bool IsDebugObject; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_SHADER_CONSTANT_SET_CALLBACT_H_INCLUDED__ | #pragma once | ||||||
| #define __I_SHADER_CONSTANT_SET_CALLBACT_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
|  |  | ||||||
| @@ -21,7 +20,6 @@ OnSetConstants method will be called every frame now. */ | |||||||
| class IShaderConstantSetCallBack : public virtual IReferenceCounted | class IShaderConstantSetCallBack : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Called to let the callBack know the used material (optional method) | 	//! Called to let the callBack know the used material (optional method) | ||||||
| 	/** | 	/** | ||||||
| 	 \code | 	 \code | ||||||
| @@ -77,9 +75,5 @@ public: | |||||||
| 	virtual void OnSetConstants(IMaterialRendererServices *services, s32 userData) = 0; | 	virtual void OnSetConstants(IMaterialRendererServices *services, s32 userData) = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,14 +2,15 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_SKINNED_MESH_H_INCLUDED__ | #pragma once | ||||||
| #define __I_SKINNED_MESH_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrArray.h" | #include "irrArray.h" | ||||||
| #include "IBoneSceneNode.h" | #include "IBoneSceneNode.h" | ||||||
| #include "IAnimatedMesh.h" | #include "IAnimatedMesh.h" | ||||||
| #include "SSkinMeshBuffer.h" | #include "SSkinMeshBuffer.h" | ||||||
|  |  | ||||||
|  | #include <optional> | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| namespace scene | namespace scene | ||||||
| @@ -27,12 +28,10 @@ namespace scene | |||||||
| 	EIM_COUNT | 	EIM_COUNT | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Interface for using some special functions of Skinned meshes | //! Interface for using some special functions of Skinned meshes | ||||||
| class ISkinnedMesh : public IAnimatedMesh | class ISkinnedMesh : public IAnimatedMesh | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Gets joint count. | 	//! Gets joint count. | ||||||
| 	/** \return Amount of joints in the skeletal animated mesh. */ | 	/** \return Amount of joints in the skeletal animated mesh. */ | ||||||
| 	virtual u32 getJointCount() const = 0; | 	virtual u32 getJointCount() const = 0; | ||||||
| @@ -41,12 +40,12 @@ namespace scene | |||||||
| 	/** \param number: Zero based index of joint. The last joint | 	/** \param number: Zero based index of joint. The last joint | ||||||
| 	has the number getJointCount()-1; | 	has the number getJointCount()-1; | ||||||
| 	\return Name of joint and null if an error happened. */ | 	\return Name of joint and null if an error happened. */ | ||||||
| 		virtual const c8* getJointName(u32 number) const = 0; | 	virtual const std::optional<std::string> &getJointName(u32 number) const = 0; | ||||||
|  |  | ||||||
| 	//! Gets a joint number from its name | 	//! Gets a joint number from its name | ||||||
| 	/** \param name: Name of the joint. | 	/** \param name: Name of the joint. | ||||||
| 		\return Number of the joint or -1 if not found. */ | 	\return Number of the joint or std::nullopt if not found. */ | ||||||
| 		virtual s32 getJointNumber(const c8* name) const = 0; | 	virtual std::optional<u32> getJointNumber(const std::string &name) const = 0; | ||||||
|  |  | ||||||
| 	//! Use animation from another mesh | 	//! Use animation from another mesh | ||||||
| 	/** The animation is linked (not copied) based on joint names | 	/** The animation is linked (not copied) based on joint names | ||||||
| @@ -105,7 +104,6 @@ namespace scene | |||||||
| 		core::vector3df StaticNormal; | 		core::vector3df StaticNormal; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Animation keyframe which describes a new position | 	//! Animation keyframe which describes a new position | ||||||
| 	struct SPositionKey | 	struct SPositionKey | ||||||
| 	{ | 	{ | ||||||
| @@ -130,13 +128,14 @@ namespace scene | |||||||
| 	//! Joints | 	//! Joints | ||||||
| 	struct SJoint | 	struct SJoint | ||||||
| 	{ | 	{ | ||||||
| 			SJoint() : UseAnimationFrom(0), GlobalSkinningSpace(false), | 		SJoint() : | ||||||
|  | 				UseAnimationFrom(0), GlobalSkinningSpace(false), | ||||||
| 				positionHint(-1), scaleHint(-1), rotationHint(-1) | 				positionHint(-1), scaleHint(-1), rotationHint(-1) | ||||||
| 		{ | 		{ | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		//! The name of this joint | 		//! The name of this joint | ||||||
| 			core::stringc Name; | 		std::optional<std::string> Name; | ||||||
|  |  | ||||||
| 		//! Local matrix of this joint | 		//! Local matrix of this joint | ||||||
| 		core::matrix4 LocalMatrix; | 		core::matrix4 LocalMatrix; | ||||||
| @@ -181,7 +180,6 @@ namespace scene | |||||||
| 		s32 rotationHint; | 		s32 rotationHint; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	// Interface for the mesh loaders (finalize should lock these functions, and they should have some prefix like loader_ | 	// Interface for the mesh loaders (finalize should lock these functions, and they should have some prefix like loader_ | ||||||
|  |  | ||||||
| 	// these functions will use the needed arrays, set values, etc to help the loaders | 	// these functions will use the needed arrays, set values, etc to help the loaders | ||||||
| @@ -220,6 +218,3 @@ namespace scene | |||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_TEXTURE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_TEXTURE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "IImage.h" | #include "IImage.h" | ||||||
| @@ -17,7 +16,6 @@ namespace irr | |||||||
| namespace video | namespace video | ||||||
| { | { | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Enumeration flags used to tell the video driver with setTextureCreationFlag in which format textures should be created. | //! Enumeration flags used to tell the video driver with setTextureCreationFlag in which format textures should be created. | ||||||
| enum E_TEXTURE_CREATION_FLAG | enum E_TEXTURE_CREATION_FLAG | ||||||
| { | { | ||||||
| @@ -177,9 +175,9 @@ and write a warning or an error message to the output buffer. | |||||||
| class ITexture : public virtual IReferenceCounted | class ITexture : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 	ITexture(const io::path& name, E_TEXTURE_TYPE type) : NamedPath(name), DriverType(EDT_NULL), OriginalColorFormat(ECF_UNKNOWN), | 	ITexture(const io::path &name, E_TEXTURE_TYPE type) : | ||||||
|  | 			NamedPath(name), DriverType(EDT_NULL), OriginalColorFormat(ECF_UNKNOWN), | ||||||
| 			ColorFormat(ECF_UNKNOWN), Pitch(0), HasMipMaps(false), IsRenderTarget(false), Source(ETS_UNKNOWN), Type(type) | 			ColorFormat(ECF_UNKNOWN), Pitch(0), HasMipMaps(false), IsRenderTarget(false), Source(ETS_UNKNOWN), Type(type) | ||||||
| 	{ | 	{ | ||||||
| 	} | 	} | ||||||
| @@ -288,15 +286,9 @@ public: | |||||||
| 	{ | 	{ | ||||||
| 		bool status = false; | 		bool status = false; | ||||||
|  |  | ||||||
| 		switch (ColorFormat) | 		switch (ColorFormat) { | ||||||
| 		{ |  | ||||||
| 		case ECF_A8R8G8B8: | 		case ECF_A8R8G8B8: | ||||||
| 		case ECF_A1R5G5B5: | 		case ECF_A1R5G5B5: | ||||||
| 		case ECF_DXT1: |  | ||||||
| 		case ECF_DXT2: |  | ||||||
| 		case ECF_DXT3: |  | ||||||
| 		case ECF_DXT4: |  | ||||||
| 		case ECF_DXT5: |  | ||||||
| 		case ECF_A16B16G16R16F: | 		case ECF_A16B16G16R16F: | ||||||
| 		case ECF_A32B32G32R32F: | 		case ECF_A32B32G32R32F: | ||||||
| 			status = true; | 			status = true; | ||||||
| @@ -312,7 +304,6 @@ public: | |||||||
| 	E_TEXTURE_TYPE getType() const { return Type; } | 	E_TEXTURE_TYPE getType() const { return Type; } | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
|  |  | ||||||
| 	//! Helper function, helps to get the desired texture creation format from the flags. | 	//! Helper function, helps to get the desired texture creation format from the flags. | ||||||
| 	/** \return Either ETCF_ALWAYS_32_BIT, ETCF_ALWAYS_16_BIT, | 	/** \return Either ETCF_ALWAYS_32_BIT, ETCF_ALWAYS_16_BIT, | ||||||
| 	ETCF_OPTIMIZED_FOR_QUALITY, or ETCF_OPTIMIZED_FOR_SPEED. */ | 	ETCF_OPTIMIZED_FOR_QUALITY, or ETCF_OPTIMIZED_FOR_SPEED. */ | ||||||
| @@ -342,9 +333,5 @@ protected: | |||||||
| 	E_TEXTURE_TYPE Type; | 	E_TEXTURE_TYPE Type; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_TIMER_H_INCLUDED__ | #pragma once | ||||||
| #define __I_TIMER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
|  |  | ||||||
| @@ -64,5 +63,3 @@ public: | |||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_VERTEX_BUFFER_H_INCLUDED__ | #pragma once | ||||||
| #define __I_VERTEX_BUFFER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "irrArray.h" | #include "irrArray.h" | ||||||
| @@ -45,9 +44,5 @@ namespace scene | |||||||
| 	virtual u32 getChangedID() const = 0; | 	virtual u32 getChangedID() const = 0; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -13,7 +13,6 @@ | |||||||
| #include "dimension2d.h" | #include "dimension2d.h" | ||||||
| #include "position2d.h" | #include "position2d.h" | ||||||
| #include "IMeshBuffer.h" | #include "IMeshBuffer.h" | ||||||
| #include "triangle3d.h" |  | ||||||
| #include "EDriverTypes.h" | #include "EDriverTypes.h" | ||||||
| #include "EDriverFeatures.h" | #include "EDriverFeatures.h" | ||||||
| #include "SExposedVideoData.h" | #include "SExposedVideoData.h" | ||||||
| @@ -108,12 +107,11 @@ namespace video | |||||||
| 	EFT_FOG_EXP2 | 	EFT_FOG_EXP2 | ||||||
| }; | }; | ||||||
|  |  | ||||||
| 	const c8* const FogTypeNames[] = | const c8 *const FogTypeNames[] = { | ||||||
| 	{ |  | ||||||
| 		"FogExp", | 		"FogExp", | ||||||
| 		"FogLinear", | 		"FogLinear", | ||||||
| 		"FogExp2", | 		"FogExp2", | ||||||
| 		0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| //! Interface to driver which is able to perform 2d and 3d graphics functions. | //! Interface to driver which is able to perform 2d and 3d graphics functions. | ||||||
| @@ -127,7 +125,6 @@ namespace video | |||||||
| class IVideoDriver : public virtual IReferenceCounted | class IVideoDriver : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Applications must call this method before performing any rendering. | 	//! Applications must call this method before performing any rendering. | ||||||
| 	/** This method can clear the back- and the z-buffer. | 	/** This method can clear the back- and the z-buffer. | ||||||
| 	\param clearFlag A combination of the E_CLEAR_BUFFER_FLAG bit-flags. | 	\param clearFlag A combination of the E_CLEAR_BUFFER_FLAG bit-flags. | ||||||
| @@ -869,7 +866,7 @@ namespace video | |||||||
| 	//! Gets name of this video driver. | 	//! Gets name of this video driver. | ||||||
| 	/** \return Returns the name of the video driver, e.g. in case | 	/** \return Returns the name of the video driver, e.g. in case | ||||||
| 	of the Direct3D8 driver, it would return "Direct3D 8.1". */ | 	of the Direct3D8 driver, it would return "Direct3D 8.1". */ | ||||||
| 		virtual const wchar_t* getName() const =0; | 	virtual const char *getName() const = 0; | ||||||
|  |  | ||||||
| 	//! Adds an external image loader to the engine. | 	//! Adds an external image loader to the engine. | ||||||
| 	/** This is useful if the Irrlicht Engine should be able to load | 	/** This is useful if the Irrlicht Engine should be able to load | ||||||
| @@ -1208,5 +1205,3 @@ namespace video | |||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_WRITE_FILE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_WRITE_FILE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "path.h" | #include "path.h" | ||||||
| @@ -46,6 +45,3 @@ namespace io | |||||||
|  |  | ||||||
| } // end namespace io | } // end namespace io | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,8 +5,8 @@ | |||||||
| #pragma once | #pragma once | ||||||
|  |  | ||||||
| //! Identifies the IrrlichtMt fork customized for the Minetest engine | //! Identifies the IrrlichtMt fork customized for the Minetest engine | ||||||
| #define IRRLICHT_VERSION_MT_REVISION 13 | #define IRRLICHT_VERSION_MT_REVISION 15 | ||||||
| #define IRRLICHT_VERSION_MT "mt13" | #define IRRLICHT_VERSION_MT "mt15" | ||||||
|  |  | ||||||
| //! Irrlicht SDK Version | //! Irrlicht SDK Version | ||||||
| #define IRRLICHT_VERSION_MAJOR 1 | #define IRRLICHT_VERSION_MAJOR 1 | ||||||
| @@ -17,8 +17,6 @@ | |||||||
| #define IRRLICHT_VERSION_SVN alpha | #define IRRLICHT_VERSION_SVN alpha | ||||||
| #define IRRLICHT_SDK_VERSION "1.9.0" IRRLICHT_VERSION_MT | #define IRRLICHT_SDK_VERSION "1.9.0" IRRLICHT_VERSION_MT | ||||||
|  |  | ||||||
| #include <stdio.h> // TODO: Although included elsewhere this is required at least for mingw |  | ||||||
|  |  | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
| #define IRRCALLCONV __stdcall | #define IRRCALLCONV __stdcall | ||||||
| #else | #else | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_IRRLICHT_DEVICE_H_INCLUDED__ | #pragma once | ||||||
| #define __I_IRRLICHT_DEVICE_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IReferenceCounted.h" | #include "IReferenceCounted.h" | ||||||
| #include "dimension2d.h" | #include "dimension2d.h" | ||||||
| @@ -21,19 +20,23 @@ namespace irr | |||||||
| class ILogger; | class ILogger; | ||||||
| class IEventReceiver; | class IEventReceiver; | ||||||
|  |  | ||||||
| 	namespace io { | namespace io | ||||||
|  | { | ||||||
| class IFileSystem; | class IFileSystem; | ||||||
| } // end namespace io | } // end namespace io | ||||||
|  |  | ||||||
| 	namespace gui { | namespace gui | ||||||
|  | { | ||||||
| class IGUIEnvironment; | class IGUIEnvironment; | ||||||
| } // end namespace gui | } // end namespace gui | ||||||
|  |  | ||||||
| 	namespace scene { | namespace scene | ||||||
|  | { | ||||||
| class ISceneManager; | class ISceneManager; | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
|  |  | ||||||
| 	namespace video { | namespace video | ||||||
|  | { | ||||||
| class IContextManager; | class IContextManager; | ||||||
| extern "C" IRRLICHT_API bool IRRCALLCONV isDriverSupported(E_DRIVER_TYPE driver); | extern "C" IRRLICHT_API bool IRRCALLCONV isDriverSupported(E_DRIVER_TYPE driver); | ||||||
| } // end namespace video | } // end namespace video | ||||||
| @@ -47,7 +50,6 @@ namespace irr | |||||||
| class IrrlichtDevice : public virtual IReferenceCounted | class IrrlichtDevice : public virtual IReferenceCounted | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Runs the device. | 	//! Runs the device. | ||||||
| 	/** Also increments the virtual timer by calling | 	/** Also increments the virtual timer by calling | ||||||
| 	ITimer::tick();. You can prevent this | 	ITimer::tick();. You can prevent this | ||||||
| @@ -177,6 +179,13 @@ namespace irr | |||||||
| 	/** \return True if window is fullscreen. */ | 	/** \return True if window is fullscreen. */ | ||||||
| 	virtual bool isFullscreen() const = 0; | 	virtual bool isFullscreen() const = 0; | ||||||
|  |  | ||||||
|  | 	//! Checks if the window could possibly be visible. | ||||||
|  | 	//! Currently, this only returns false when the activity is stopped on | ||||||
|  | 	//! Android. Note that for Android activities, "stopped" means something | ||||||
|  | 	//! different than you might expect (and also something different than | ||||||
|  | 	//! "paused"). Read the Android lifecycle documentation. | ||||||
|  | 	virtual bool isWindowVisible() const { return true; }; | ||||||
|  |  | ||||||
| 	//! Get the current color format of the window | 	//! Get the current color format of the window | ||||||
| 	/** \return Color format of the window. */ | 	/** \return Color format of the window. */ | ||||||
| 	virtual video::ECOLOR_FORMAT getColorFormat() const = 0; | 	virtual video::ECOLOR_FORMAT getColorFormat() const = 0; | ||||||
| @@ -330,6 +339,3 @@ namespace irr | |||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -183,5 +183,3 @@ namespace irr | |||||||
| }; | }; | ||||||
|  |  | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __S_3D_VERTEX_H_INCLUDED__ | #pragma once | ||||||
| #define __S_3D_VERTEX_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "vector3d.h" | #include "vector3d.h" | ||||||
| #include "vector2d.h" | #include "vector2d.h" | ||||||
| @@ -32,28 +31,29 @@ enum E_VERTEX_TYPE | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Array holding the built in vertex type names | //! Array holding the built in vertex type names | ||||||
| const char* const sBuiltInVertexTypeNames[] = | const char *const sBuiltInVertexTypeNames[] = { | ||||||
| { |  | ||||||
| 		"standard", | 		"standard", | ||||||
| 		"2tcoords", | 		"2tcoords", | ||||||
| 		"tangents", | 		"tangents", | ||||||
| 	0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| //! standard vertex used by the Irrlicht engine. | //! standard vertex used by the Irrlicht engine. | ||||||
| struct S3DVertex | struct S3DVertex | ||||||
| { | { | ||||||
| 	//! default constructor | 	//! default constructor | ||||||
| 	S3DVertex() : Color(0xffffffff) {} | 	constexpr S3DVertex() : | ||||||
|  | 			Color(0xffffffff) {} | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 	S3DVertex(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, SColor c, f32 tu, f32 tv) | 	constexpr S3DVertex(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, SColor c, f32 tu, f32 tv) : | ||||||
| 		: Pos(x,y,z), Normal(nx,ny,nz), Color(c), TCoords(tu,tv) {} | 			Pos(x, y, z), Normal(nx, ny, nz), Color(c), TCoords(tu, tv) {} | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 	S3DVertex(const core::vector3df& pos, const core::vector3df& normal, | 	constexpr S3DVertex(const core::vector3df &pos, const core::vector3df &normal, | ||||||
| 		SColor color, const core::vector2d<f32>& tcoords) | 			SColor color, const core::vector2df &tcoords) : | ||||||
| 		: Pos(pos), Normal(normal), Color(color), TCoords(tcoords) {} | 			Pos(pos), | ||||||
|  | 			Normal(normal), Color(color), TCoords(tcoords) {} | ||||||
|  |  | ||||||
| 	//! Position | 	//! Position | ||||||
| 	core::vector3df Pos; | 	core::vector3df Pos; | ||||||
| @@ -65,21 +65,21 @@ struct S3DVertex | |||||||
| 	SColor Color; | 	SColor Color; | ||||||
|  |  | ||||||
| 	//! Texture coordinates | 	//! Texture coordinates | ||||||
| 	core::vector2d<f32> TCoords; | 	core::vector2df TCoords; | ||||||
|  |  | ||||||
| 	bool operator==(const S3DVertex& other) const | 	constexpr bool operator==(const S3DVertex &other) const | ||||||
| 	{ | 	{ | ||||||
| 		return ((Pos == other.Pos) && (Normal == other.Normal) && | 		return ((Pos == other.Pos) && (Normal == other.Normal) && | ||||||
| 				(Color == other.Color) && (TCoords == other.TCoords)); | 				(Color == other.Color) && (TCoords == other.TCoords)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	bool operator!=(const S3DVertex& other) const | 	constexpr bool operator!=(const S3DVertex &other) const | ||||||
| 	{ | 	{ | ||||||
| 		return ((Pos != other.Pos) || (Normal != other.Normal) || | 		return ((Pos != other.Pos) || (Normal != other.Normal) || | ||||||
| 				(Color != other.Color) || (TCoords != other.TCoords)); | 				(Color != other.Color) || (TCoords != other.TCoords)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	bool operator<(const S3DVertex& other) const | 	constexpr bool operator<(const S3DVertex &other) const | ||||||
| 	{ | 	{ | ||||||
| 		return ((Pos < other.Pos) || | 		return ((Pos < other.Pos) || | ||||||
| 				((Pos == other.Pos) && (Normal < other.Normal)) || | 				((Pos == other.Pos) && (Normal < other.Normal)) || | ||||||
| @@ -104,7 +104,6 @@ struct S3DVertex | |||||||
| 	} | 	} | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Vertex with two texture coordinates. | //! Vertex with two texture coordinates. | ||||||
| /** Usually used for geometry with lightmaps | /** Usually used for geometry with lightmaps | ||||||
| or other special materials. | or other special materials. | ||||||
| @@ -112,56 +111,65 @@ or other special materials. | |||||||
| struct S3DVertex2TCoords : public S3DVertex | struct S3DVertex2TCoords : public S3DVertex | ||||||
| { | { | ||||||
| 	//! default constructor | 	//! default constructor | ||||||
| 	S3DVertex2TCoords() : S3DVertex() {} | 	constexpr S3DVertex2TCoords() : | ||||||
|  | 			S3DVertex() {} | ||||||
|  |  | ||||||
| 	//! constructor with two different texture coords, but no normal | 	//! constructor with two different texture coords, but no normal | ||||||
| 	S3DVertex2TCoords(f32 x, f32 y, f32 z, SColor c, f32 tu, f32 tv, f32 tu2, f32 tv2) | 	constexpr S3DVertex2TCoords(f32 x, f32 y, f32 z, SColor c, f32 tu, f32 tv, f32 tu2, f32 tv2) : | ||||||
| 		: S3DVertex(x,y,z, 0.0f, 0.0f, 0.0f, c, tu,tv), TCoords2(tu2,tv2) {} | 			S3DVertex(x, y, z, 0.0f, 0.0f, 0.0f, c, tu, tv), TCoords2(tu2, tv2) {} | ||||||
|  |  | ||||||
| 	//! constructor with two different texture coords, but no normal | 	//! constructor with two different texture coords, but no normal | ||||||
| 	S3DVertex2TCoords(const core::vector3df& pos, SColor color, | 	constexpr S3DVertex2TCoords(const core::vector3df &pos, SColor color, | ||||||
| 		const core::vector2d<f32>& tcoords, const core::vector2d<f32>& tcoords2) | 			const core::vector2df &tcoords, const core::vector2df &tcoords2) : | ||||||
| 		: S3DVertex(pos, core::vector3df(), color, tcoords), TCoords2(tcoords2) {} | 			S3DVertex(pos, core::vector3df(), color, tcoords), | ||||||
|  | 			TCoords2(tcoords2) {} | ||||||
|  |  | ||||||
| 	//! constructor with all values | 	//! constructor with all values | ||||||
| 	S3DVertex2TCoords(const core::vector3df& pos, const core::vector3df& normal, const SColor& color, | 	constexpr S3DVertex2TCoords(const core::vector3df &pos, const core::vector3df &normal, const SColor &color, | ||||||
| 		const core::vector2d<f32>& tcoords, const core::vector2d<f32>& tcoords2) | 			const core::vector2df &tcoords, const core::vector2df &tcoords2) : | ||||||
| 		: S3DVertex(pos, normal, color, tcoords), TCoords2(tcoords2) {} | 			S3DVertex(pos, normal, color, tcoords), | ||||||
|  | 			TCoords2(tcoords2) {} | ||||||
|  |  | ||||||
| 	//! constructor with all values | 	//! constructor with all values | ||||||
| 	S3DVertex2TCoords(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, SColor c, f32 tu, f32 tv, f32 tu2, f32 tv2) | 	constexpr S3DVertex2TCoords(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, | ||||||
| 		: S3DVertex(x,y,z, nx,ny,nz, c, tu,tv), TCoords2(tu2,tv2) {} | 			SColor c, f32 tu, f32 tv, f32 tu2, f32 tv2) : | ||||||
|  | 			S3DVertex(x, y, z, nx, ny, nz, c, tu, tv), | ||||||
|  | 			TCoords2(tu2, tv2) {} | ||||||
|  |  | ||||||
| 	//! constructor with the same texture coords and normal | 	//! constructor with the same texture coords and normal | ||||||
| 	S3DVertex2TCoords(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, SColor c, f32 tu, f32 tv) | 	constexpr S3DVertex2TCoords(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, | ||||||
| 		: S3DVertex(x,y,z, nx,ny,nz, c, tu,tv), TCoords2(tu,tv) {} | 			SColor c, f32 tu, f32 tv) : | ||||||
|  | 			S3DVertex(x, y, z, nx, ny, nz, c, tu, tv), | ||||||
|  | 			TCoords2(tu, tv) {} | ||||||
|  |  | ||||||
| 	//! constructor with the same texture coords and normal | 	//! constructor with the same texture coords and normal | ||||||
| 	S3DVertex2TCoords(const core::vector3df& pos, const core::vector3df& normal, | 	constexpr S3DVertex2TCoords(const core::vector3df &pos, const core::vector3df &normal, | ||||||
| 		SColor color, const core::vector2d<f32>& tcoords) | 			SColor color, const core::vector2df &tcoords) : | ||||||
| 		: S3DVertex(pos, normal, color, tcoords), TCoords2(tcoords) {} | 			S3DVertex(pos, normal, color, tcoords), | ||||||
|  | 			TCoords2(tcoords) {} | ||||||
|  |  | ||||||
| 	//! constructor from S3DVertex | 	//! constructor from S3DVertex | ||||||
| 	S3DVertex2TCoords(const S3DVertex& o) : S3DVertex(o) {} | 	constexpr S3DVertex2TCoords(const S3DVertex &o) : | ||||||
|  | 			S3DVertex(o) {} | ||||||
|  |  | ||||||
| 	//! Second set of texture coordinates | 	//! Second set of texture coordinates | ||||||
| 	core::vector2d<f32> TCoords2; | 	core::vector2df TCoords2; | ||||||
|  |  | ||||||
| 	//! Equality operator | 	//! Equality operator | ||||||
| 	bool operator==(const S3DVertex2TCoords& other) const | 	constexpr bool operator==(const S3DVertex2TCoords &other) const | ||||||
| 	{ | 	{ | ||||||
| 		return ((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) && | 		return ((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) && | ||||||
| 				(TCoords2 == other.TCoords2)); | 				(TCoords2 == other.TCoords2)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	//! Inequality operator | 	//! Inequality operator | ||||||
| 	bool operator!=(const S3DVertex2TCoords& other) const | 	constexpr bool operator!=(const S3DVertex2TCoords &other) const | ||||||
| 	{ | 	{ | ||||||
| 		return ((static_cast<S3DVertex>(*this) != static_cast<const S3DVertex &>(other)) || | 		return ((static_cast<S3DVertex>(*this) != static_cast<const S3DVertex &>(other)) || | ||||||
| 				(TCoords2 != other.TCoords2)); | 				(TCoords2 != other.TCoords2)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	bool operator<(const S3DVertex2TCoords& other) const | 	constexpr bool operator<(const S3DVertex2TCoords &other) const | ||||||
| 	{ | 	{ | ||||||
| 		return ((static_cast<S3DVertex>(*this) < other) || | 		return ((static_cast<S3DVertex>(*this) < other) || | ||||||
| 				((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) && (TCoords2 < other.TCoords2))); | 				((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) && (TCoords2 < other.TCoords2))); | ||||||
| @@ -184,7 +192,6 @@ struct S3DVertex2TCoords : public S3DVertex | |||||||
| 	} | 	} | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Vertex with a tangent and binormal vector. | //! Vertex with a tangent and binormal vector. | ||||||
| /** Usually used for tangent space normal mapping. | /** Usually used for tangent space normal mapping. | ||||||
| 	Usually tangent and binormal get send to shaders as texture coordinate sets 1 and 2. | 	Usually tangent and binormal get send to shaders as texture coordinate sets 1 and 2. | ||||||
| @@ -192,30 +199,34 @@ struct S3DVertex2TCoords : public S3DVertex | |||||||
| struct S3DVertexTangents : public S3DVertex | struct S3DVertexTangents : public S3DVertex | ||||||
| { | { | ||||||
| 	//! default constructor | 	//! default constructor | ||||||
| 	S3DVertexTangents() : S3DVertex() { } | 	S3DVertexTangents() : | ||||||
|  | 			S3DVertex() {} | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 	S3DVertexTangents(f32 x, f32 y, f32 z, f32 nx=0.0f, f32 ny=0.0f, f32 nz=0.0f, | 	constexpr S3DVertexTangents(f32 x, f32 y, f32 z, f32 nx = 0.0f, f32 ny = 0.0f, f32 nz = 0.0f, | ||||||
| 			SColor c = 0xFFFFFFFF, f32 tu = 0.0f, f32 tv = 0.0f, | 			SColor c = 0xFFFFFFFF, f32 tu = 0.0f, f32 tv = 0.0f, | ||||||
| 			f32 tanx = 0.0f, f32 tany = 0.0f, f32 tanz = 0.0f, | 			f32 tanx = 0.0f, f32 tany = 0.0f, f32 tanz = 0.0f, | ||||||
| 			f32 bx=0.0f, f32 by=0.0f, f32 bz=0.0f) | 			f32 bx = 0.0f, f32 by = 0.0f, f32 bz = 0.0f) : | ||||||
| 		: S3DVertex(x,y,z, nx,ny,nz, c, tu,tv), Tangent(tanx,tany,tanz), Binormal(bx,by,bz) { } | 			S3DVertex(x, y, z, nx, ny, nz, c, tu, tv), | ||||||
|  | 			Tangent(tanx, tany, tanz), Binormal(bx, by, bz) {} | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 	S3DVertexTangents(const core::vector3df& pos, SColor c, | 	constexpr S3DVertexTangents(const core::vector3df &pos, SColor c, | ||||||
| 		const core::vector2df& tcoords) | 			const core::vector2df &tcoords) : | ||||||
| 		: S3DVertex(pos, core::vector3df(), c, tcoords) { } | 			S3DVertex(pos, core::vector3df(), c, tcoords) {} | ||||||
|  |  | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 	S3DVertexTangents(const core::vector3df& pos, | 	constexpr S3DVertexTangents(const core::vector3df &pos, | ||||||
| 			const core::vector3df &normal, SColor c, | 			const core::vector3df &normal, SColor c, | ||||||
| 			const core::vector2df &tcoords, | 			const core::vector2df &tcoords, | ||||||
| 			const core::vector3df &tangent = core::vector3df(), | 			const core::vector3df &tangent = core::vector3df(), | ||||||
| 		const core::vector3df& binormal=core::vector3df()) | 			const core::vector3df &binormal = core::vector3df()) : | ||||||
| 		: S3DVertex(pos, normal, c, tcoords), Tangent(tangent), Binormal(binormal) { } | 			S3DVertex(pos, normal, c, tcoords), | ||||||
|  | 			Tangent(tangent), Binormal(binormal) {} | ||||||
|  |  | ||||||
| 	//! constructor from S3DVertex | 	//! constructor from S3DVertex | ||||||
| 	S3DVertexTangents(const S3DVertex& o) : S3DVertex(o) {} | 	constexpr S3DVertexTangents(const S3DVertex &o) : | ||||||
|  | 			S3DVertex(o) {} | ||||||
|  |  | ||||||
| 	//! Tangent vector along the x-axis of the texture | 	//! Tangent vector along the x-axis of the texture | ||||||
| 	core::vector3df Tangent; | 	core::vector3df Tangent; | ||||||
| @@ -223,21 +234,21 @@ struct S3DVertexTangents : public S3DVertex | |||||||
| 	//! Binormal vector (tangent x normal) | 	//! Binormal vector (tangent x normal) | ||||||
| 	core::vector3df Binormal; | 	core::vector3df Binormal; | ||||||
|  |  | ||||||
| 	bool operator==(const S3DVertexTangents& other) const | 	constexpr bool operator==(const S3DVertexTangents &other) const | ||||||
| 	{ | 	{ | ||||||
| 		return ((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) && | 		return ((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) && | ||||||
| 				(Tangent == other.Tangent) && | 				(Tangent == other.Tangent) && | ||||||
| 				(Binormal == other.Binormal)); | 				(Binormal == other.Binormal)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	bool operator!=(const S3DVertexTangents& other) const | 	constexpr bool operator!=(const S3DVertexTangents &other) const | ||||||
| 	{ | 	{ | ||||||
| 		return ((static_cast<S3DVertex>(*this) != static_cast<const S3DVertex &>(other)) || | 		return ((static_cast<S3DVertex>(*this) != static_cast<const S3DVertex &>(other)) || | ||||||
| 				(Tangent != other.Tangent) || | 				(Tangent != other.Tangent) || | ||||||
| 				(Binormal != other.Binormal)); | 				(Binormal != other.Binormal)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	bool operator<(const S3DVertexTangents& other) const | 	constexpr bool operator<(const S3DVertexTangents &other) const | ||||||
| 	{ | 	{ | ||||||
| 		return ((static_cast<S3DVertex>(*this) < other) || | 		return ((static_cast<S3DVertex>(*this) < other) || | ||||||
| 				((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) && (Tangent < other.Tangent)) || | 				((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) && (Tangent < other.Tangent)) || | ||||||
| @@ -261,12 +272,9 @@ struct S3DVertexTangents : public S3DVertex | |||||||
| 	} | 	} | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| inline u32 getVertexPitchFromType(E_VERTEX_TYPE vertexType) | inline u32 getVertexPitchFromType(E_VERTEX_TYPE vertexType) | ||||||
| { | { | ||||||
| 	switch (vertexType) | 	switch (vertexType) { | ||||||
| 	{ |  | ||||||
| 	case video::EVT_2TCOORDS: | 	case video::EVT_2TCOORDS: | ||||||
| 		return sizeof(video::S3DVertex2TCoords); | 		return sizeof(video::S3DVertex2TCoords); | ||||||
| 	case video::EVT_TANGENTS: | 	case video::EVT_TANGENTS: | ||||||
| @@ -276,9 +284,5 @@ inline u32 getVertexPitchFromType(E_VERTEX_TYPE vertexType) | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __S_ANIMATED_MESH_H_INCLUDED__ | #pragma once | ||||||
| #define __S_ANIMATED_MESH_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IAnimatedMesh.h" | #include "IAnimatedMesh.h" | ||||||
| #include "IMesh.h" | #include "IMesh.h" | ||||||
| @@ -19,7 +18,8 @@ namespace scene | |||||||
| struct SAnimatedMesh : public IAnimatedMesh | struct SAnimatedMesh : public IAnimatedMesh | ||||||
| { | { | ||||||
| 	//! constructor | 	//! constructor | ||||||
| 		SAnimatedMesh(scene::IMesh* mesh=0, scene::E_ANIMATED_MESH_TYPE type=scene::EAMT_UNKNOWN) : IAnimatedMesh(), FramesPerSecond(25.f), Type(type) | 	SAnimatedMesh(scene::IMesh *mesh = 0, scene::E_ANIMATED_MESH_TYPE type = scene::EAMT_UNKNOWN) : | ||||||
|  | 			IAnimatedMesh(), FramesPerSecond(25.f), Type(type) | ||||||
| 	{ | 	{ | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
| 		setDebugName("SAnimatedMesh"); | 		setDebugName("SAnimatedMesh"); | ||||||
| @@ -77,8 +77,7 @@ namespace scene | |||||||
| 	//! adds a Mesh | 	//! adds a Mesh | ||||||
| 	void addMesh(IMesh *mesh) | 	void addMesh(IMesh *mesh) | ||||||
| 	{ | 	{ | ||||||
| 			if (mesh) | 		if (mesh) { | ||||||
| 			{ |  | ||||||
| 			mesh->grab(); | 			mesh->grab(); | ||||||
| 			Meshes.push_back(mesh); | 			Meshes.push_back(mesh); | ||||||
| 		} | 		} | ||||||
| @@ -174,9 +173,5 @@ namespace scene | |||||||
| 	E_ANIMATED_MESH_TYPE Type; | 	E_ANIMATED_MESH_TYPE Type; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										218
									
								
								include/SColor.h
									
									
									
									
									
								
							
							
						
						
									
										218
									
								
								include/SColor.h
									
									
									
									
									
								
							| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __COLOR_H_INCLUDED__ | #pragma once | ||||||
| #define __COLOR_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "irrTypes.h" | #include "irrTypes.h" | ||||||
| #include "irrMath.h" | #include "irrMath.h" | ||||||
| @@ -37,50 +36,6 @@ namespace video | |||||||
| 	//! Warning: This tends to be BGRA in memory (it's ARGB on file, but with usual big-endian memory it's flipped) | 	//! Warning: This tends to be BGRA in memory (it's ARGB on file, but with usual big-endian memory it's flipped) | ||||||
| 	ECF_A8R8G8B8, | 	ECF_A8R8G8B8, | ||||||
|  |  | ||||||
| 		/** Compressed image formats. **/ |  | ||||||
|  |  | ||||||
| 		//! DXT1 color format. |  | ||||||
| 		ECF_DXT1, |  | ||||||
|  |  | ||||||
| 		//! DXT2 color format. |  | ||||||
| 		ECF_DXT2, |  | ||||||
|  |  | ||||||
| 		//! DXT3 color format. |  | ||||||
| 		ECF_DXT3, |  | ||||||
|  |  | ||||||
| 		//! DXT4 color format. |  | ||||||
| 		ECF_DXT4, |  | ||||||
|  |  | ||||||
| 		//! DXT5 color format. |  | ||||||
| 		ECF_DXT5, |  | ||||||
|  |  | ||||||
| 		//! PVRTC RGB 2bpp. |  | ||||||
| 		ECF_PVRTC_RGB2, |  | ||||||
|  |  | ||||||
| 		//! PVRTC ARGB 2bpp. |  | ||||||
| 		ECF_PVRTC_ARGB2, |  | ||||||
|  |  | ||||||
| 		//! PVRTC RGB 4bpp. |  | ||||||
| 		ECF_PVRTC_RGB4, |  | ||||||
|  |  | ||||||
| 		//! PVRTC ARGB 4bpp. |  | ||||||
| 		ECF_PVRTC_ARGB4, |  | ||||||
|  |  | ||||||
| 		//! PVRTC2 ARGB 2bpp. |  | ||||||
| 		ECF_PVRTC2_ARGB2, |  | ||||||
|  |  | ||||||
| 		//! PVRTC2 ARGB 4bpp. |  | ||||||
| 		ECF_PVRTC2_ARGB4, |  | ||||||
|  |  | ||||||
| 		//! ETC1 RGB. |  | ||||||
| 		ECF_ETC1, |  | ||||||
|  |  | ||||||
| 		//! ETC2 RGB. |  | ||||||
| 		ECF_ETC2_RGB, |  | ||||||
|  |  | ||||||
| 		//! ETC2 ARGB. |  | ||||||
| 		ECF_ETC2_ARGB, |  | ||||||
|  |  | ||||||
| 	/** The following formats may only be used for render target textures. */ | 	/** The following formats may only be used for render target textures. */ | ||||||
|  |  | ||||||
| 	/** Floating point formats. */ | 	/** Floating point formats. */ | ||||||
| @@ -133,26 +88,11 @@ namespace video | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for ECOLOR_FORMAT types | //! Names for ECOLOR_FORMAT types | ||||||
| 	const c8* const ColorFormatNames[ECF_UNKNOWN+2] = | const c8 *const ColorFormatNames[ECF_UNKNOWN + 2] = { | ||||||
| 	{ |  | ||||||
| 		"A1R5G5B5", | 		"A1R5G5B5", | ||||||
| 		"R5G6B5", | 		"R5G6B5", | ||||||
| 		"R8G8B8", | 		"R8G8B8", | ||||||
| 		"A8R8G8B8", | 		"A8R8G8B8", | ||||||
| 		"DXT1", |  | ||||||
| 		"DXT2", |  | ||||||
| 		"DXT3", |  | ||||||
| 		"DXT4", |  | ||||||
| 		"DXT5", |  | ||||||
| 		"PVRTC_RGB2", |  | ||||||
| 		"PVRTC_ARGB2", |  | ||||||
| 		"PVRTC_RGB4", |  | ||||||
| 		"PVRTC_ARGB4", |  | ||||||
| 		"PVRTC2_ARGB2", |  | ||||||
| 		"PVRTC2_ARGB4", |  | ||||||
| 		"ETC1", |  | ||||||
| 		"ETC2_RGB", |  | ||||||
| 		"ETC2_ARGB", |  | ||||||
| 		"R16F", | 		"R16F", | ||||||
| 		"G16R16F", | 		"G16R16F", | ||||||
| 		"A16B16G16R16F", | 		"A16B16G16R16F", | ||||||
| @@ -167,10 +107,9 @@ namespace video | |||||||
| 		"D32", | 		"D32", | ||||||
| 		"D24S8", | 		"D24S8", | ||||||
| 		"UNKNOWN", | 		"UNKNOWN", | ||||||
| 		0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Creates a 16 bit A1R5G5B5 color | //! Creates a 16 bit A1R5G5B5 color | ||||||
| inline u16 RGBA16(u32 r, u32 g, u32 b, u32 a = 0xFF) | inline u16 RGBA16(u32 r, u32 g, u32 b, u32 a = 0xFF) | ||||||
| { | { | ||||||
| @@ -180,14 +119,12 @@ namespace video | |||||||
| 				 (b & 0xF8) >> 3); | 				 (b & 0xF8) >> 3); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Creates a 16 bit A1R5G5B5 color | //! Creates a 16 bit A1R5G5B5 color | ||||||
| inline u16 RGB16(u32 r, u32 g, u32 b) | inline u16 RGB16(u32 r, u32 g, u32 b) | ||||||
| { | { | ||||||
| 	return RGBA16(r, g, b); | 	return RGBA16(r, g, b); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Creates a 16bit A1R5G5B5 color, based on 16bit input values | //! Creates a 16bit A1R5G5B5 color, based on 16bit input values | ||||||
| inline u16 RGB16from16(u16 r, u16 g, u16 b) | inline u16 RGB16from16(u16 r, u16 g, u16 b) | ||||||
| { | { | ||||||
| @@ -197,7 +134,6 @@ namespace video | |||||||
| 			(b & 0x1F)); | 			(b & 0x1F)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Converts a 32bit (X8R8G8B8) color to a 16bit A1R5G5B5 color | //! Converts a 32bit (X8R8G8B8) color to a 16bit A1R5G5B5 color | ||||||
| inline u16 X8R8G8B8toA1R5G5B5(u32 color) | inline u16 X8R8G8B8toA1R5G5B5(u32 color) | ||||||
| { | { | ||||||
| @@ -207,7 +143,6 @@ namespace video | |||||||
| 				 (color & 0x000000F8) >> 3); | 				 (color & 0x000000F8) >> 3); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Converts a 32bit (A8R8G8B8) color to a 16bit A1R5G5B5 color | //! Converts a 32bit (A8R8G8B8) color to a 16bit A1R5G5B5 color | ||||||
| inline u16 A8R8G8B8toA1R5G5B5(u32 color) | inline u16 A8R8G8B8toA1R5G5B5(u32 color) | ||||||
| { | { | ||||||
| @@ -217,7 +152,6 @@ namespace video | |||||||
| 				 (color & 0x000000F8) >> 3); | 				 (color & 0x000000F8) >> 3); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Converts a 32bit (A8R8G8B8) color to a 16bit R5G6B5 color | //! Converts a 32bit (A8R8G8B8) color to a 16bit R5G6B5 color | ||||||
| inline u16 A8R8G8B8toR5G6B5(u32 color) | inline u16 A8R8G8B8toR5G6B5(u32 color) | ||||||
| { | { | ||||||
| @@ -226,7 +160,6 @@ namespace video | |||||||
| 				 (color & 0x000000F8) >> 3); | 				 (color & 0x000000F8) >> 3); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Convert A8R8G8B8 Color from A1R5G5B5 color | //! Convert A8R8G8B8 Color from A1R5G5B5 color | ||||||
| /** build a nicer 32bit Color by extending dest lower bits with source high bits. */ | /** build a nicer 32bit Color by extending dest lower bits with source high bits. */ | ||||||
| inline u32 A1R5G5B5toA8R8G8B8(u16 color) | inline u32 A1R5G5B5toA8R8G8B8(u16 color) | ||||||
| @@ -234,11 +167,9 @@ namespace video | |||||||
| 	return (((-((s32)color & 0x00008000) >> (s32)31) & 0xFF000000) | | 	return (((-((s32)color & 0x00008000) >> (s32)31) & 0xFF000000) | | ||||||
| 			((color & 0x00007C00) << 9) | ((color & 0x00007000) << 4) | | 			((color & 0x00007C00) << 9) | ((color & 0x00007000) << 4) | | ||||||
| 			((color & 0x000003E0) << 6) | ((color & 0x00000380) << 1) | | 			((color & 0x000003E0) << 6) | ((color & 0x00000380) << 1) | | ||||||
| 				(( color & 0x0000001F ) << 3) | (( color & 0x0000001C ) >> 2) | 			((color & 0x0000001F) << 3) | ((color & 0x0000001C) >> 2)); | ||||||
| 				); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Returns A8R8G8B8 Color from R5G6B5 color | //! Returns A8R8G8B8 Color from R5G6B5 color | ||||||
| inline u32 R5G6B5toA8R8G8B8(u16 color) | inline u32 R5G6B5toA8R8G8B8(u16 color) | ||||||
| { | { | ||||||
| @@ -248,22 +179,18 @@ namespace video | |||||||
| 		   ((color & 0x001F) << 3); | 		   ((color & 0x001F) << 3); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Returns A1R5G5B5 Color from R5G6B5 color | //! Returns A1R5G5B5 Color from R5G6B5 color | ||||||
| inline u16 R5G6B5toA1R5G5B5(u16 color) | inline u16 R5G6B5toA1R5G5B5(u16 color) | ||||||
| { | { | ||||||
| 	return 0x8000 | (((color & 0xFFC0) >> 1) | (color & 0x1F)); | 	return 0x8000 | (((color & 0xFFC0) >> 1) | (color & 0x1F)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Returns R5G6B5 Color from A1R5G5B5 color | //! Returns R5G6B5 Color from A1R5G5B5 color | ||||||
| inline u16 A1R5G5B5toR5G6B5(u16 color) | inline u16 A1R5G5B5toR5G6B5(u16 color) | ||||||
| { | { | ||||||
| 	return (((color & 0x7FE0) << 1) | (color & 0x1F)); | 	return (((color & 0x7FE0) << 1) | (color & 0x1F)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Returns the alpha component from A1R5G5B5 color | //! Returns the alpha component from A1R5G5B5 color | ||||||
| /** In Irrlicht, alpha refers to opacity. | /** In Irrlicht, alpha refers to opacity. | ||||||
| \return The alpha value of the color. 0 is transparent, 1 is opaque. */ | \return The alpha value of the color. 0 is transparent, 1 is opaque. */ | ||||||
| @@ -272,7 +199,6 @@ namespace video | |||||||
| 	return ((color >> 15) & 0x1); | 	return ((color >> 15) & 0x1); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Returns the red component from A1R5G5B5 color. | //! Returns the red component from A1R5G5B5 color. | ||||||
| /** Shift left by 3 to get 8 bit value. */ | /** Shift left by 3 to get 8 bit value. */ | ||||||
| inline u32 getRed(u16 color) | inline u32 getRed(u16 color) | ||||||
| @@ -280,7 +206,6 @@ namespace video | |||||||
| 	return ((color >> 10) & 0x1F); | 	return ((color >> 10) & 0x1F); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Returns the green component from A1R5G5B5 color | //! Returns the green component from A1R5G5B5 color | ||||||
| /** Shift left by 3 to get 8 bit value. */ | /** Shift left by 3 to get 8 bit value. */ | ||||||
| inline u32 getGreen(u16 color) | inline u32 getGreen(u16 color) | ||||||
| @@ -288,7 +213,6 @@ namespace video | |||||||
| 	return ((color >> 5) & 0x1F); | 	return ((color >> 5) & 0x1F); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Returns the blue component from A1R5G5B5 color | //! Returns the blue component from A1R5G5B5 color | ||||||
| /** Shift left by 3 to get 8 bit value. */ | /** Shift left by 3 to get 8 bit value. */ | ||||||
| inline u32 getBlue(u16 color) | inline u32 getBlue(u16 color) | ||||||
| @@ -296,14 +220,12 @@ namespace video | |||||||
| 	return (color & 0x1F); | 	return (color & 0x1F); | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Returns the average from a 16 bit A1R5G5B5 color | //! Returns the average from a 16 bit A1R5G5B5 color | ||||||
| inline s32 getAverage(s16 color) | inline s32 getAverage(s16 color) | ||||||
| { | { | ||||||
| 	return ((getRed(color) << 3) + (getGreen(color) << 3) + (getBlue(color) << 3)) / 3; | 	return ((getRed(color) << 3) + (getGreen(color) << 3) + (getBlue(color) << 3)) / 3; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Class representing a 32 bit ARGB color. | //! Class representing a 32 bit ARGB color. | ||||||
| /** The color values for alpha, red, green, and blue are | /** The color values for alpha, red, green, and blue are | ||||||
| stored in a single u32. So all four values may be between 0 and 255. | stored in a single u32. So all four values may be between 0 and 255. | ||||||
| @@ -316,19 +238,18 @@ namespace video | |||||||
| class SColor | class SColor | ||||||
| { | { | ||||||
| public: | public: | ||||||
|  |  | ||||||
| 	//! Constructor of the Color. Does nothing. | 	//! Constructor of the Color. Does nothing. | ||||||
| 	/** The color value is not initialized to save time. */ | 	/** The color value is not initialized to save time. */ | ||||||
| 	SColor() {} | 	SColor() {} | ||||||
|  |  | ||||||
| 	//! Constructs the color from 4 values representing the alpha, red, green and blue component. | 	//! Constructs the color from 4 values representing the alpha, red, green and blue component. | ||||||
| 	/** Must be values between 0 and 255. */ | 	/** Must be values between 0 and 255. */ | ||||||
| 		SColor (u32 a, u32 r, u32 g, u32 b) | 	constexpr SColor(u32 a, u32 r, u32 g, u32 b) : | ||||||
| 			: color(((a & 0xff)<<24) | ((r & 0xff)<<16) | ((g & 0xff)<<8) | (b & 0xff)) {} | 			color(((a & 0xff) << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff)) {} | ||||||
|  |  | ||||||
| 	//! Constructs the color from a 32 bit value. Could be another color. | 	//! Constructs the color from a 32 bit value. Could be another color. | ||||||
| 		SColor(u32 clr) | 	constexpr SColor(u32 clr) : | ||||||
| 			: color(clr) {} | 			color(clr) {} | ||||||
|  |  | ||||||
| 	//! Returns the alpha component of the color. | 	//! Returns the alpha component of the color. | ||||||
| 	/** The alpha component defines how opaque a color is. | 	/** The alpha component defines how opaque a color is. | ||||||
| @@ -477,13 +398,17 @@ namespace video | |||||||
|  |  | ||||||
| 		return SColor( | 		return SColor( | ||||||
| 				core::clamp(core::floor32( | 				core::clamp(core::floor32( | ||||||
| 							getAlpha() * mul0 + c1.getAlpha() * mul1 + c2.getAlpha() * mul2 ), 0, 255 ), | 									getAlpha() * mul0 + c1.getAlpha() * mul1 + c2.getAlpha() * mul2), | ||||||
|  | 						0, 255), | ||||||
| 				core::clamp(core::floor32( | 				core::clamp(core::floor32( | ||||||
| 							getRed()   * mul0 + c1.getRed()   * mul1 + c2.getRed()   * mul2 ), 0, 255 ), | 									getRed() * mul0 + c1.getRed() * mul1 + c2.getRed() * mul2), | ||||||
|  | 						0, 255), | ||||||
| 				core::clamp(core::floor32( | 				core::clamp(core::floor32( | ||||||
| 							getGreen() * mul0 + c1.getGreen() * mul1 + c2.getGreen() * mul2 ), 0, 255 ), | 									getGreen() * mul0 + c1.getGreen() * mul1 + c2.getGreen() * mul2), | ||||||
|  | 						0, 255), | ||||||
| 				core::clamp(core::floor32( | 				core::clamp(core::floor32( | ||||||
| 							getBlue()  * mul0 + c1.getBlue()  * mul1 + c2.getBlue()  * mul2 ), 0, 255 )); | 									getBlue() * mul0 + c1.getBlue() * mul1 + c2.getBlue() * mul2), | ||||||
|  | 						0, 255)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	//! set the color by expecting data in the given format | 	//! set the color by expecting data in the given format | ||||||
| @@ -492,8 +417,7 @@ namespace video | |||||||
| 	*/ | 	*/ | ||||||
| 	void setData(const void *data, ECOLOR_FORMAT format) | 	void setData(const void *data, ECOLOR_FORMAT format) | ||||||
| 	{ | 	{ | ||||||
| 			switch (format) | 		switch (format) { | ||||||
| 			{ |  | ||||||
| 		case ECF_A1R5G5B5: | 		case ECF_A1R5G5B5: | ||||||
| 			color = A1R5G5B5toA8R8G8B8(*(u16 *)data); | 			color = A1R5G5B5toA8R8G8B8(*(u16 *)data); | ||||||
| 			break; | 			break; | ||||||
| @@ -503,12 +427,10 @@ namespace video | |||||||
| 		case ECF_A8R8G8B8: | 		case ECF_A8R8G8B8: | ||||||
| 			color = *(u32 *)data; | 			color = *(u32 *)data; | ||||||
| 			break; | 			break; | ||||||
| 				case ECF_R8G8B8: | 		case ECF_R8G8B8: { | ||||||
| 					{ |  | ||||||
| 			const u8 *p = (u8 *)data; | 			const u8 *p = (u8 *)data; | ||||||
| 			set(255, p[0], p[1], p[2]); | 			set(255, p[0], p[1], p[2]); | ||||||
| 					} | 		} break; | ||||||
| 					break; |  | ||||||
| 		default: | 		default: | ||||||
| 			color = 0xffffffff; | 			color = 0xffffffff; | ||||||
| 			break; | 			break; | ||||||
| @@ -521,37 +443,28 @@ namespace video | |||||||
| 	*/ | 	*/ | ||||||
| 	void getData(void *data, ECOLOR_FORMAT format) const | 	void getData(void *data, ECOLOR_FORMAT format) const | ||||||
| 	{ | 	{ | ||||||
| 			switch(format) | 		switch (format) { | ||||||
| 			{ | 		case ECF_A1R5G5B5: { | ||||||
| 				case ECF_A1R5G5B5: |  | ||||||
| 				{ |  | ||||||
| 			u16 *dest = (u16 *)data; | 			u16 *dest = (u16 *)data; | ||||||
| 			*dest = video::A8R8G8B8toA1R5G5B5(color); | 			*dest = video::A8R8G8B8toA1R5G5B5(color); | ||||||
| 				} | 		} break; | ||||||
| 				break; |  | ||||||
|  |  | ||||||
| 				case ECF_R5G6B5: | 		case ECF_R5G6B5: { | ||||||
| 				{ |  | ||||||
| 			u16 *dest = (u16 *)data; | 			u16 *dest = (u16 *)data; | ||||||
| 			*dest = video::A8R8G8B8toR5G6B5(color); | 			*dest = video::A8R8G8B8toR5G6B5(color); | ||||||
| 				} | 		} break; | ||||||
| 				break; |  | ||||||
|  |  | ||||||
| 				case ECF_R8G8B8: | 		case ECF_R8G8B8: { | ||||||
| 				{ |  | ||||||
| 			u8 *dest = (u8 *)data; | 			u8 *dest = (u8 *)data; | ||||||
| 			dest[0] = (u8)getRed(); | 			dest[0] = (u8)getRed(); | ||||||
| 			dest[1] = (u8)getGreen(); | 			dest[1] = (u8)getGreen(); | ||||||
| 			dest[2] = (u8)getBlue(); | 			dest[2] = (u8)getBlue(); | ||||||
| 				} | 		} break; | ||||||
| 				break; |  | ||||||
|  |  | ||||||
| 				case ECF_A8R8G8B8: | 		case ECF_A8R8G8B8: { | ||||||
| 				{ |  | ||||||
| 			u32 *dest = (u32 *)data; | 			u32 *dest = (u32 *)data; | ||||||
| 			*dest = color; | 			*dest = color; | ||||||
| 				} | 		} break; | ||||||
| 				break; |  | ||||||
|  |  | ||||||
| 		default: | 		default: | ||||||
| 			break; | 			break; | ||||||
| @@ -562,7 +475,6 @@ namespace video | |||||||
| 	u32 color; | 	u32 color; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Class representing a color with four floats. | //! Class representing a color with four floats. | ||||||
| /** The color values for red, green, blue | /** The color values for red, green, blue | ||||||
| and alpha are each stored in a 32 bit floating point variable. | and alpha are each stored in a 32 bit floating point variable. | ||||||
| @@ -575,7 +487,8 @@ namespace video | |||||||
| public: | public: | ||||||
| 	//! Default constructor for SColorf. | 	//! Default constructor for SColorf. | ||||||
| 	/** Sets red, green and blue to 0.0f and alpha to 1.0f. */ | 	/** Sets red, green and blue to 0.0f and alpha to 1.0f. */ | ||||||
| 		SColorf() : r(0.0f), g(0.0f), b(0.0f), a(1.0f) {} | 	SColorf() : | ||||||
|  | 			r(0.0f), g(0.0f), b(0.0f), a(1.0f) {} | ||||||
|  |  | ||||||
| 	//! Constructs a color from up to four color values: red, green, blue, and alpha. | 	//! Constructs a color from up to four color values: red, green, blue, and alpha. | ||||||
| 	/** \param r: Red color component. Should be a value between | 	/** \param r: Red color component. Should be a value between | ||||||
| @@ -588,7 +501,8 @@ namespace video | |||||||
| 	component defines how transparent a color should be. Has to be | 	component defines how transparent a color should be. Has to be | ||||||
| 	a value between 0.0f and 1.0f, 1.0f means not transparent | 	a value between 0.0f and 1.0f, 1.0f means not transparent | ||||||
| 	(opaque), 0.0f means fully transparent. */ | 	(opaque), 0.0f means fully transparent. */ | ||||||
| 		SColorf(f32 r, f32 g, f32 b, f32 a = 1.0f) : r(r), g(g), b(b), a(a) {} | 	SColorf(f32 r, f32 g, f32 b, f32 a = 1.0f) : | ||||||
|  | 			r(r), g(g), b(b), a(a) {} | ||||||
|  |  | ||||||
| 	//! Constructs a color from 32 bit Color. | 	//! Constructs a color from 32 bit Color. | ||||||
| 	/** \param c: 32 bit color from which this SColorf class is | 	/** \param c: 32 bit color from which this SColorf class is | ||||||
| @@ -615,7 +529,12 @@ namespace video | |||||||
| 	no green (=black) and 1.0f, meaning full green. | 	no green (=black) and 1.0f, meaning full green. | ||||||
| 	\param bb: Blue color component. Should be a value between 0.0f meaning | 	\param bb: Blue color component. Should be a value between 0.0f meaning | ||||||
| 	no blue (=black) and 1.0f, meaning full blue. */ | 	no blue (=black) and 1.0f, meaning full blue. */ | ||||||
| 		void set(f32 rr, f32 gg, f32 bb) {r = rr; g =gg; b = bb; } | 	void set(f32 rr, f32 gg, f32 bb) | ||||||
|  | 	{ | ||||||
|  | 		r = rr; | ||||||
|  | 		g = gg; | ||||||
|  | 		b = bb; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	//! Sets all four color components to new values at once. | 	//! Sets all four color components to new values at once. | ||||||
| 	/** \param aa: Alpha component. Should be a value between 0.0f meaning | 	/** \param aa: Alpha component. Should be a value between 0.0f meaning | ||||||
| @@ -626,7 +545,13 @@ namespace video | |||||||
| 	no green and 1.0f, meaning full green. | 	no green and 1.0f, meaning full green. | ||||||
| 	\param bb: Blue color component. Should be a value between 0.0f meaning | 	\param bb: Blue color component. Should be a value between 0.0f meaning | ||||||
| 	no blue and 1.0f, meaning full blue. */ | 	no blue and 1.0f, meaning full blue. */ | ||||||
| 		void set(f32 aa, f32 rr, f32 gg, f32 bb) {a = aa; r = rr; g =gg; b = bb; } | 	void set(f32 aa, f32 rr, f32 gg, f32 bb) | ||||||
|  | 	{ | ||||||
|  | 		a = aa; | ||||||
|  | 		r = rr; | ||||||
|  | 		g = gg; | ||||||
|  | 		b = bb; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	//! Interpolates the color with a f32 value to another color | 	//! Interpolates the color with a f32 value to another color | ||||||
| 	/** \param other: Other color | 	/** \param other: Other color | ||||||
| @@ -660,16 +585,22 @@ namespace video | |||||||
| 				a * mul0 + c1.a * mul1 + c2.a * mul2); | 				a * mul0 + c1.a * mul1 + c2.a * mul2); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! Sets a color component by index. R=0, G=1, B=2, A=3 | 	//! Sets a color component by index. R=0, G=1, B=2, A=3 | ||||||
| 	void setColorComponentValue(s32 index, f32 value) | 	void setColorComponentValue(s32 index, f32 value) | ||||||
| 	{ | 	{ | ||||||
| 			switch(index) | 		switch (index) { | ||||||
| 			{ | 		case 0: | ||||||
| 			case 0: r = value; break; | 			r = value; | ||||||
| 			case 1: g = value; break; | 			break; | ||||||
| 			case 2: b = value; break; | 		case 1: | ||||||
| 			case 3: a = value; break; | 			g = value; | ||||||
|  | 			break; | ||||||
|  | 		case 2: | ||||||
|  | 			b = value; | ||||||
|  | 			break; | ||||||
|  | 		case 3: | ||||||
|  | 			a = value; | ||||||
|  | 			break; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -698,7 +629,6 @@ namespace video | |||||||
| 	f32 a; | 	f32 a; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Class representing a color in HSL format | //! Class representing a color in HSL format | ||||||
| /** The color values for hue, saturation, luminance | /** The color values for hue, saturation, luminance | ||||||
| are stored in 32bit floating point variables. Hue is in range [0,360], | are stored in 32bit floating point variables. Hue is in range [0,360], | ||||||
| @@ -707,8 +637,8 @@ namespace video | |||||||
| class SColorHSL | class SColorHSL | ||||||
| { | { | ||||||
| public: | public: | ||||||
| 		SColorHSL ( f32 h = 0.f, f32 s = 0.f, f32 l = 0.f ) | 	constexpr SColorHSL(f32 h = 0.f, f32 s = 0.f, f32 l = 0.f) : | ||||||
| 			: Hue ( h ), Saturation ( s ), Luminance ( l ) {} | 			Hue(h), Saturation(s), Luminance(l) {} | ||||||
|  |  | ||||||
| 	void fromRGB(const SColorf &color); | 	void fromRGB(const SColorf &color); | ||||||
| 	void toRGB(SColorf &color) const; | 	void toRGB(SColorf &color) const; | ||||||
| @@ -719,7 +649,6 @@ namespace video | |||||||
|  |  | ||||||
| private: | private: | ||||||
| 	inline f32 toRGB1(f32 rm1, f32 rm2, f32 rh) const; | 	inline f32 toRGB1(f32 rm1, f32 rm2, f32 rh) const; | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| inline void SColorHSL::fromRGB(const SColorf &color) | inline void SColorHSL::fromRGB(const SColorf &color) | ||||||
| @@ -727,20 +656,16 @@ namespace video | |||||||
| 	const f32 maxVal = core::max_(color.getRed(), color.getGreen(), color.getBlue()); | 	const f32 maxVal = core::max_(color.getRed(), color.getGreen(), color.getBlue()); | ||||||
| 	const f32 minVal = (f32)core::min_(color.getRed(), color.getGreen(), color.getBlue()); | 	const f32 minVal = (f32)core::min_(color.getRed(), color.getGreen(), color.getBlue()); | ||||||
| 	Luminance = (maxVal + minVal) * 50; | 	Luminance = (maxVal + minVal) * 50; | ||||||
| 		if (core::equals(maxVal, minVal)) | 	if (core::equals(maxVal, minVal)) { | ||||||
| 		{ |  | ||||||
| 		Hue = 0.f; | 		Hue = 0.f; | ||||||
| 		Saturation = 0.f; | 		Saturation = 0.f; | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	const f32 delta = maxVal - minVal; | 	const f32 delta = maxVal - minVal; | ||||||
| 		if ( Luminance <= 50 ) | 	if (Luminance <= 50) { | ||||||
| 		{ |  | ||||||
| 		Saturation = (delta) / (maxVal + minVal); | 		Saturation = (delta) / (maxVal + minVal); | ||||||
| 		} | 	} else { | ||||||
| 		else |  | ||||||
| 		{ |  | ||||||
| 		Saturation = (delta) / (2 - maxVal - minVal); | 		Saturation = (delta) / (2 - maxVal - minVal); | ||||||
| 	} | 	} | ||||||
| 	Saturation *= 100; | 	Saturation *= 100; | ||||||
| @@ -757,24 +682,19 @@ namespace video | |||||||
| 		Hue += 360; | 		Hue += 360; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| inline void SColorHSL::toRGB(SColorf &color) const | inline void SColorHSL::toRGB(SColorf &color) const | ||||||
| { | { | ||||||
| 	const f32 l = Luminance / 100; | 	const f32 l = Luminance / 100; | ||||||
| 		if (core::iszero(Saturation)) // grey | 	if (core::iszero(Saturation)) { // grey | ||||||
| 		{ |  | ||||||
| 		color.set(l, l, l); | 		color.set(l, l, l); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	f32 rm2; | 	f32 rm2; | ||||||
|  |  | ||||||
| 		if ( Luminance <= 50 ) | 	if (Luminance <= 50) { | ||||||
| 		{ |  | ||||||
| 		rm2 = l + l * (Saturation / 100); | 		rm2 = l + l * (Saturation / 100); | ||||||
| 		} | 	} else { | ||||||
| 		else |  | ||||||
| 		{ |  | ||||||
| 		rm2 = l + (1 - l) * (Saturation / 100); | 		rm2 = l + (1 - l) * (Saturation / 100); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -783,11 +703,9 @@ namespace video | |||||||
| 	const f32 h = Hue / 360.0f; | 	const f32 h = Hue / 360.0f; | ||||||
| 	color.set(toRGB1(rm1, rm2, h + 1.f / 3.f), | 	color.set(toRGB1(rm1, rm2, h + 1.f / 3.f), | ||||||
| 			toRGB1(rm1, rm2, h), | 			toRGB1(rm1, rm2, h), | ||||||
| 			toRGB1(rm1, rm2, h - 1.f/3.f) | 			toRGB1(rm1, rm2, h - 1.f / 3.f)); | ||||||
| 			); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| // algorithm from Foley/Van-Dam | // algorithm from Foley/Van-Dam | ||||||
| inline f32 SColorHSL::toRGB1(f32 rm1, f32 rm2, f32 rh) const | inline f32 SColorHSL::toRGB1(f32 rm1, f32 rm2, f32 rh) const | ||||||
| { | { | ||||||
| @@ -808,5 +726,3 @@ namespace video | |||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __S_EXPOSED_VIDEO_DATA_H_INCLUDED__ | #pragma once | ||||||
| #define __S_EXPOSED_VIDEO_DATA_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| namespace irr | namespace irr | ||||||
| { | { | ||||||
| @@ -18,8 +17,18 @@ you are using the software or the null device. | |||||||
| */ | */ | ||||||
| struct SExposedVideoData | struct SExposedVideoData | ||||||
| { | { | ||||||
| 	SExposedVideoData() {OpenGLWin32.HDc=0; OpenGLWin32.HRc=0; OpenGLWin32.HWnd=0;} | 	SExposedVideoData() | ||||||
| 	explicit SExposedVideoData(void* Window) {OpenGLWin32.HDc=0; OpenGLWin32.HRc=0; OpenGLWin32.HWnd=Window;} | 	{ | ||||||
|  | 		OpenGLWin32.HDc = 0; | ||||||
|  | 		OpenGLWin32.HRc = 0; | ||||||
|  | 		OpenGLWin32.HWnd = 0; | ||||||
|  | 	} | ||||||
|  | 	explicit SExposedVideoData(void *Window) | ||||||
|  | 	{ | ||||||
|  | 		OpenGLWin32.HDc = 0; | ||||||
|  | 		OpenGLWin32.HRc = 0; | ||||||
|  | 		OpenGLWin32.HWnd = Window; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	struct SOpenGLWin32 | 	struct SOpenGLWin32 | ||||||
| 	{ | 	{ | ||||||
| @@ -78,7 +87,3 @@ struct SExposedVideoData | |||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __I_IRRLICHT_CREATION_PARAMETERS_H_INCLUDED__ | #pragma once | ||||||
| #define __I_IRRLICHT_CREATION_PARAMETERS_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "EDriverTypes.h" | #include "EDriverTypes.h" | ||||||
| #include "EDeviceTypes.h" | #include "EDeviceTypes.h" | ||||||
| @@ -35,10 +34,8 @@ namespace irr | |||||||
| 			Stencilbuffer(true), | 			Stencilbuffer(true), | ||||||
| 			Vsync(false), | 			Vsync(false), | ||||||
| 			AntiAlias(0), | 			AntiAlias(0), | ||||||
| 			HandleSRGB(false), |  | ||||||
| 			WithAlphaChannel(false), | 			WithAlphaChannel(false), | ||||||
| 			Doublebuffer(true), | 			Doublebuffer(true), | ||||||
| 			IgnoreInput(false), |  | ||||||
| 			Stereobuffer(false), | 			Stereobuffer(false), | ||||||
| 			EventReceiver(0), | 			EventReceiver(0), | ||||||
| 			WindowId(0), | 			WindowId(0), | ||||||
| @@ -59,7 +56,9 @@ namespace irr | |||||||
|  |  | ||||||
| 	SIrrlichtCreationParameters(const SIrrlichtCreationParameters &other) : | 	SIrrlichtCreationParameters(const SIrrlichtCreationParameters &other) : | ||||||
| 			SDK_version_do_not_use(IRRLICHT_SDK_VERSION) | 			SDK_version_do_not_use(IRRLICHT_SDK_VERSION) | ||||||
| 		{*this = other;} | 	{ | ||||||
|  | 		*this = other; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	SIrrlichtCreationParameters &operator=(const SIrrlichtCreationParameters &other) | 	SIrrlichtCreationParameters &operator=(const SIrrlichtCreationParameters &other) | ||||||
| 	{ | 	{ | ||||||
| @@ -75,10 +74,8 @@ namespace irr | |||||||
| 		Stencilbuffer = other.Stencilbuffer; | 		Stencilbuffer = other.Stencilbuffer; | ||||||
| 		Vsync = other.Vsync; | 		Vsync = other.Vsync; | ||||||
| 		AntiAlias = other.AntiAlias; | 		AntiAlias = other.AntiAlias; | ||||||
| 			HandleSRGB = other.HandleSRGB; |  | ||||||
| 		WithAlphaChannel = other.WithAlphaChannel; | 		WithAlphaChannel = other.WithAlphaChannel; | ||||||
| 		Doublebuffer = other.Doublebuffer; | 		Doublebuffer = other.Doublebuffer; | ||||||
| 			IgnoreInput = other.IgnoreInput; |  | ||||||
| 		Stereobuffer = other.Stereobuffer; | 		Stereobuffer = other.Stereobuffer; | ||||||
| 		EventReceiver = other.EventReceiver; | 		EventReceiver = other.EventReceiver; | ||||||
| 		WindowId = other.WindowId; | 		WindowId = other.WindowId; | ||||||
| @@ -159,21 +156,6 @@ namespace irr | |||||||
| 	Default value: 0 - disabled */ | 	Default value: 0 - disabled */ | ||||||
| 	u8 AntiAlias; | 	u8 AntiAlias; | ||||||
|  |  | ||||||
| 		//! Flag to enable proper sRGB and linear color handling |  | ||||||
| 		/** In most situations, it is desirable to have the color handling in |  | ||||||
| 		non-linear sRGB color space, and only do the intermediate color |  | ||||||
| 		calculations in linear RGB space. If this flag is enabled, the device and |  | ||||||
| 		driver try to assure that all color input and output are color corrected |  | ||||||
| 		and only the internal color representation is linear. This means, that |  | ||||||
| 		the color output is properly gamma-adjusted to provide the brighter |  | ||||||
| 		colors for monitor display. And that blending and lighting give a more |  | ||||||
| 		natural look, due to proper conversion from non-linear colors into linear |  | ||||||
| 		color space for blend operations. If this flag is enabled, all texture colors |  | ||||||
| 		(which are usually in sRGB space) are correctly displayed. However vertex colors |  | ||||||
| 		and other explicitly set values have to be manually encoded in linear color space. |  | ||||||
| 		Default value: false. */ |  | ||||||
| 		bool HandleSRGB; |  | ||||||
|  |  | ||||||
| 	//! Whether the main framebuffer uses an alpha channel. | 	//! Whether the main framebuffer uses an alpha channel. | ||||||
| 	/** In some situations it might be desirable to get a color | 	/** In some situations it might be desirable to get a color | ||||||
| 	buffer with an alpha channel, e.g. when rendering into a | 	buffer with an alpha channel, e.g. when rendering into a | ||||||
| @@ -193,13 +175,6 @@ namespace irr | |||||||
| 	single buffers. Default value: true */ | 	single buffers. Default value: true */ | ||||||
| 	bool Doublebuffer; | 	bool Doublebuffer; | ||||||
|  |  | ||||||
| 		//! Specifies if the device should ignore input events |  | ||||||
| 		/** This is only relevant when using external I/O handlers. |  | ||||||
| 		External windows need to take care of this themselves. |  | ||||||
| 		Currently only supported by X11. |  | ||||||
| 		Default value: false */ |  | ||||||
| 		bool IgnoreInput; |  | ||||||
|  |  | ||||||
| 	//! Specifies if the device should use stereo buffers | 	//! Specifies if the device should use stereo buffers | ||||||
| 	/** Some high-end gfx cards support two framebuffers for direct | 	/** Some high-end gfx cards support two framebuffers for direct | ||||||
| 	support of stereoscopic output devices. If this flag is set the | 	support of stereoscopic output devices. If this flag is set the | ||||||
| @@ -289,8 +264,4 @@ namespace irr | |||||||
| 	irr::io::path OGLES2ShaderPath; | 	irr::io::path OGLES2ShaderPath; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __S_MATERIAL_H_INCLUDED__ | #pragma once | ||||||
| #define __S_MATERIAL_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "SColor.h" | #include "SColor.h" | ||||||
| #include "matrix4.h" | #include "matrix4.h" | ||||||
| @@ -164,8 +163,7 @@ namespace video | |||||||
| //! has blend factor alphablending | //! has blend factor alphablending | ||||||
| inline bool textureBlendFunc_hasAlpha(const E_BLEND_FACTOR factor) | inline bool textureBlendFunc_hasAlpha(const E_BLEND_FACTOR factor) | ||||||
| { | { | ||||||
| 		switch ( factor ) | 	switch (factor) { | ||||||
| 		{ |  | ||||||
| 	case EBF_SRC_ALPHA: | 	case EBF_SRC_ALPHA: | ||||||
| 	case EBF_ONE_MINUS_SRC_ALPHA: | 	case EBF_ONE_MINUS_SRC_ALPHA: | ||||||
| 	case EBF_DST_ALPHA: | 	case EBF_DST_ALPHA: | ||||||
| @@ -177,7 +175,6 @@ namespace video | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| //! These flags are used to specify the anti-aliasing and smoothing modes | //! These flags are used to specify the anti-aliasing and smoothing modes | ||||||
| /** Techniques supported are multisampling, geometry smoothing, and alpha | /** Techniques supported are multisampling, geometry smoothing, and alpha | ||||||
| to coverage. | to coverage. | ||||||
| @@ -193,16 +190,9 @@ namespace video | |||||||
| 	EAAM_SIMPLE = 1, | 	EAAM_SIMPLE = 1, | ||||||
| 	//! High-quality anti-aliasing, not always supported, automatically enables SIMPLE mode | 	//! High-quality anti-aliasing, not always supported, automatically enables SIMPLE mode | ||||||
| 	EAAM_QUALITY = 3, | 	EAAM_QUALITY = 3, | ||||||
| 		//! Line smoothing |  | ||||||
| 		//! Careful, enabling this can lead to software emulation under OpenGL |  | ||||||
| 		EAAM_LINE_SMOOTH=4, |  | ||||||
| 		//! point smoothing, often in software and slow, only with OpenGL |  | ||||||
| 		EAAM_POINT_SMOOTH=8, |  | ||||||
| 		//! All typical anti-alias and smooth modes |  | ||||||
| 		EAAM_FULL_BASIC=15, |  | ||||||
| 	//! Enhanced anti-aliasing for transparent materials | 	//! Enhanced anti-aliasing for transparent materials | ||||||
| 	/** Usually used with EMT_TRANSPARENT_ALPHA_CHANNEL_REF and multisampling. */ | 	/** Usually used with EMT_TRANSPARENT_ALPHA_CHANNEL_REF and multisampling. */ | ||||||
| 		EAAM_ALPHA_TO_COVERAGE=16 | 	EAAM_ALPHA_TO_COVERAGE = 4 | ||||||
| }; | }; | ||||||
|  |  | ||||||
| //! These flags allow to define the interpretation of vertex color when lighting is enabled | //! These flags allow to define the interpretation of vertex color when lighting is enabled | ||||||
| @@ -229,11 +219,10 @@ namespace video | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for polygon offset direction | //! Names for polygon offset direction | ||||||
| 	const c8* const PolygonOffsetDirectionNames[] = | const c8 *const PolygonOffsetDirectionNames[] = { | ||||||
| 	{ |  | ||||||
| 		"Back", | 		"Back", | ||||||
| 		"Front", | 		"Front", | ||||||
| 		0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| //! For SMaterial.ZWriteEnable | //! For SMaterial.ZWriteEnable | ||||||
| @@ -254,16 +243,13 @@ namespace video | |||||||
| }; | }; | ||||||
|  |  | ||||||
| //! Names for E_ZWRITE | //! Names for E_ZWRITE | ||||||
| 	const c8* const ZWriteNames[] = | const c8 *const ZWriteNames[] = { | ||||||
| 	{ |  | ||||||
| 		"Off", | 		"Off", | ||||||
| 		"Auto", | 		"Auto", | ||||||
| 		"On", | 		"On", | ||||||
| 		0 | 		0, | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Maximum number of texture an SMaterial can have. | //! Maximum number of texture an SMaterial can have. | ||||||
| /** SMaterial might ignore some textures in most function, like assignment and comparison, | /** SMaterial might ignore some textures in most function, like assignment and comparison, | ||||||
| 	when SIrrlichtCreationParameters::MaxTextureUnits is set to a lower number. | 	when SIrrlichtCreationParameters::MaxTextureUnits is set to a lower number. | ||||||
| @@ -287,7 +273,8 @@ namespace video | |||||||
| 			GouraudShading(true), Lighting(true), ZWriteEnable(EZW_AUTO), | 			GouraudShading(true), Lighting(true), ZWriteEnable(EZW_AUTO), | ||||||
| 			BackfaceCulling(true), FrontfaceCulling(false), FogEnable(false), | 			BackfaceCulling(true), FrontfaceCulling(false), FogEnable(false), | ||||||
| 			NormalizeNormals(false), UseMipMaps(true) | 			NormalizeNormals(false), UseMipMaps(true) | ||||||
| 		{ } | 	{ | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	//! Texture layer array. | 	//! Texture layer array. | ||||||
| 	SMaterialLayer TextureLayers[MATERIAL_MAX_TEXTURES]; | 	SMaterialLayer TextureLayers[MATERIAL_MAX_TEXTURES]; | ||||||
| @@ -438,7 +425,8 @@ namespace video | |||||||
| 	/** Useful for setting properties which are not per material, but per | 	/** Useful for setting properties which are not per material, but per | ||||||
| 	texture layer, e.g. bilinear filtering. */ | 	texture layer, e.g. bilinear filtering. */ | ||||||
| 	template <typename F> | 	template <typename F> | ||||||
| 		void forEachTexture(F &&fn) { | 	void forEachTexture(F &&fn) | ||||||
|  | 	{ | ||||||
| 		for (u32 i = 0; i < MATERIAL_MAX_TEXTURES; i++) { | 		for (u32 i = 0; i < MATERIAL_MAX_TEXTURES; i++) { | ||||||
| 			fn(TextureLayers[i]); | 			fn(TextureLayers[i]); | ||||||
| 		} | 		} | ||||||
| @@ -523,10 +511,8 @@ namespace video | |||||||
| 				BlendFactor != b.BlendFactor || | 				BlendFactor != b.BlendFactor || | ||||||
| 				PolygonOffsetDepthBias != b.PolygonOffsetDepthBias || | 				PolygonOffsetDepthBias != b.PolygonOffsetDepthBias || | ||||||
| 				PolygonOffsetSlopeScale != b.PolygonOffsetSlopeScale || | 				PolygonOffsetSlopeScale != b.PolygonOffsetSlopeScale || | ||||||
| 				UseMipMaps != b.UseMipMaps | 				UseMipMaps != b.UseMipMaps; | ||||||
| 				; | 		for (u32 i = 0; (i < MATERIAL_MAX_TEXTURES) && !different; ++i) { | ||||||
| 			for (u32 i=0; (i<MATERIAL_MAX_TEXTURES) && !different; ++i) |  | ||||||
| 			{ |  | ||||||
| 			different |= (TextureLayers[i] != b.TextureLayers[i]); | 			different |= (TextureLayers[i] != b.TextureLayers[i]); | ||||||
| 		} | 		} | ||||||
| 		return different; | 		return different; | ||||||
| @@ -536,13 +522,14 @@ namespace video | |||||||
| 	/** \param b Material to compare to. | 	/** \param b Material to compare to. | ||||||
| 	\return True if the materials are equal, else false. */ | 	\return True if the materials are equal, else false. */ | ||||||
| 	inline bool operator==(const SMaterial &b) const | 	inline bool operator==(const SMaterial &b) const | ||||||
| 		{ return !(b!=*this); } | 	{ | ||||||
|  | 		return !(b != *this); | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	//! Check if material needs alpha blending | 	//! Check if material needs alpha blending | ||||||
| 	bool isAlphaBlendOperation() const | 	bool isAlphaBlendOperation() const | ||||||
| 	{ | 	{ | ||||||
| 			if (BlendOperation != EBO_NONE && BlendFactor != 0.f) | 		if (BlendOperation != EBO_NONE && BlendFactor != 0.f) { | ||||||
| 			{ |  | ||||||
| 			E_BLEND_FACTOR srcRGBFact = EBF_ZERO; | 			E_BLEND_FACTOR srcRGBFact = EBF_ZERO; | ||||||
| 			E_BLEND_FACTOR dstRGBFact = EBF_ZERO; | 			E_BLEND_FACTOR dstRGBFact = EBF_ZERO; | ||||||
| 			E_BLEND_FACTOR srcAlphaFact = EBF_ZERO; | 			E_BLEND_FACTOR srcAlphaFact = EBF_ZERO; | ||||||
| @@ -553,8 +540,7 @@ namespace video | |||||||
| 			unpack_textureBlendFuncSeparate(srcRGBFact, dstRGBFact, srcAlphaFact, dstAlphaFact, modulo, alphaSource, BlendFactor); | 			unpack_textureBlendFuncSeparate(srcRGBFact, dstRGBFact, srcAlphaFact, dstAlphaFact, modulo, alphaSource, BlendFactor); | ||||||
|  |  | ||||||
| 			if (textureBlendFunc_hasAlpha(srcRGBFact) || textureBlendFunc_hasAlpha(dstRGBFact) || | 			if (textureBlendFunc_hasAlpha(srcRGBFact) || textureBlendFunc_hasAlpha(dstRGBFact) || | ||||||
| 					textureBlendFunc_hasAlpha(srcAlphaFact) || textureBlendFunc_hasAlpha(dstAlphaFact)) | 					textureBlendFunc_hasAlpha(srcAlphaFact) || textureBlendFunc_hasAlpha(dstAlphaFact)) { | ||||||
| 				{ |  | ||||||
| 				return true; | 				return true; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @@ -578,5 +564,3 @@ namespace video | |||||||
| IRRLICHT_API extern SMaterial IdentityMaterial; | IRRLICHT_API extern SMaterial IdentityMaterial; | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __S_MATERIAL_LAYER_H_INCLUDED__ | #pragma once | ||||||
| #define __S_MATERIAL_LAYER_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "matrix4.h" | #include "matrix4.h" | ||||||
|  |  | ||||||
| @@ -43,11 +42,11 @@ namespace video | |||||||
| 		"texture_clamp_mirror_clamp_to_edge", | 		"texture_clamp_mirror_clamp_to_edge", | ||||||
| 		"texture_clamp_mirror_clamp_to_border", 0}; | 		"texture_clamp_mirror_clamp_to_border", 0}; | ||||||
|  |  | ||||||
|  |  | ||||||
| //! Texture minification filter. | //! Texture minification filter. | ||||||
| /** Used when scaling textures down. See the documentation on OpenGL's | /** Used when scaling textures down. See the documentation on OpenGL's | ||||||
| `GL_TEXTURE_MIN_FILTER` for more information. */ | `GL_TEXTURE_MIN_FILTER` for more information. */ | ||||||
| 	enum E_TEXTURE_MIN_FILTER { | enum E_TEXTURE_MIN_FILTER | ||||||
|  | { | ||||||
| 	//! Aka nearest-neighbor. | 	//! Aka nearest-neighbor. | ||||||
| 	ETMINF_NEAREST_MIPMAP_NEAREST = 0, | 	ETMINF_NEAREST_MIPMAP_NEAREST = 0, | ||||||
| 	//! Aka bilinear. | 	//! Aka bilinear. | ||||||
| @@ -62,7 +61,8 @@ namespace video | |||||||
| /** Used when scaling textures up. See the documentation on OpenGL's | /** Used when scaling textures up. See the documentation on OpenGL's | ||||||
| `GL_TEXTURE_MAG_FILTER` for more information. | `GL_TEXTURE_MAG_FILTER` for more information. | ||||||
| Note that mipmaps are only used for minification, not for magnification. */ | Note that mipmaps are only used for minification, not for magnification. */ | ||||||
| 	enum E_TEXTURE_MAG_FILTER { | enum E_TEXTURE_MAG_FILTER | ||||||
|  | { | ||||||
| 	//! Aka nearest-neighbor. | 	//! Aka nearest-neighbor. | ||||||
| 	ETMAGF_NEAREST = 0, | 	ETMAGF_NEAREST = 0, | ||||||
| 	//! Aka bilinear. | 	//! Aka bilinear. | ||||||
| @@ -75,7 +75,8 @@ namespace video | |||||||
| { | { | ||||||
| public: | public: | ||||||
| 	//! Default constructor | 	//! Default constructor | ||||||
| 		SMaterialLayer() : Texture(0), TextureWrapU(ETC_REPEAT), TextureWrapV(ETC_REPEAT), TextureWrapW(ETC_REPEAT), | 	SMaterialLayer() : | ||||||
|  | 			Texture(0), TextureWrapU(ETC_REPEAT), TextureWrapV(ETC_REPEAT), TextureWrapW(ETC_REPEAT), | ||||||
| 			MinFilter(ETMINF_LINEAR_MIPMAP_NEAREST), MagFilter(ETMAGF_LINEAR), AnisotropicFilter(0), LODBias(0), TextureMatrix(0) | 			MinFilter(ETMINF_LINEAR_MIPMAP_NEAREST), MagFilter(ETMAGF_LINEAR), AnisotropicFilter(0), LODBias(0), TextureMatrix(0) | ||||||
| 	{ | 	{ | ||||||
| 	} | 	} | ||||||
| @@ -92,8 +93,7 @@ namespace video | |||||||
| 	//! Destructor | 	//! Destructor | ||||||
| 	~SMaterialLayer() | 	~SMaterialLayer() | ||||||
| 	{ | 	{ | ||||||
| 			if ( TextureMatrix ) | 		if (TextureMatrix) { | ||||||
| 			{ |  | ||||||
| 			delete TextureMatrix; | 			delete TextureMatrix; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| @@ -108,23 +108,17 @@ namespace video | |||||||
| 			return *this; | 			return *this; | ||||||
|  |  | ||||||
| 		Texture = other.Texture; | 		Texture = other.Texture; | ||||||
| 			if (TextureMatrix) | 		if (TextureMatrix) { | ||||||
| 			{ |  | ||||||
| 			if (other.TextureMatrix) | 			if (other.TextureMatrix) | ||||||
| 				*TextureMatrix = *other.TextureMatrix; | 				*TextureMatrix = *other.TextureMatrix; | ||||||
| 				else | 			else { | ||||||
| 				{ |  | ||||||
| 				delete TextureMatrix; | 				delete TextureMatrix; | ||||||
| 				TextureMatrix = 0; | 				TextureMatrix = 0; | ||||||
| 			} | 			} | ||||||
| 			} | 		} else { | ||||||
| 			else | 			if (other.TextureMatrix) { | ||||||
| 			{ |  | ||||||
| 				if (other.TextureMatrix) |  | ||||||
| 				{ |  | ||||||
| 				TextureMatrix = new core::matrix4(*other.TextureMatrix); | 				TextureMatrix = new core::matrix4(*other.TextureMatrix); | ||||||
| 				} | 			} else | ||||||
| 				else |  | ||||||
| 				TextureMatrix = 0; | 				TextureMatrix = 0; | ||||||
| 		} | 		} | ||||||
| 		TextureWrapU = other.TextureWrapU; | 		TextureWrapU = other.TextureWrapU; | ||||||
| @@ -142,8 +136,7 @@ namespace video | |||||||
| 	/** \return Texture matrix of this layer. */ | 	/** \return Texture matrix of this layer. */ | ||||||
| 	core::matrix4 &getTextureMatrix() | 	core::matrix4 &getTextureMatrix() | ||||||
| 	{ | 	{ | ||||||
| 			if (!TextureMatrix) | 		if (!TextureMatrix) { | ||||||
| 			{ |  | ||||||
| 			TextureMatrix = new core::matrix4(); | 			TextureMatrix = new core::matrix4(); | ||||||
| 		} | 		} | ||||||
| 		return *TextureMatrix; | 		return *TextureMatrix; | ||||||
| @@ -165,11 +158,9 @@ namespace video | |||||||
| 	\param mat New texture matrix for this layer. */ | 	\param mat New texture matrix for this layer. */ | ||||||
| 	void setTextureMatrix(const core::matrix4 &mat) | 	void setTextureMatrix(const core::matrix4 &mat) | ||||||
| 	{ | 	{ | ||||||
| 			if (!TextureMatrix) | 		if (!TextureMatrix) { | ||||||
| 			{ |  | ||||||
| 			TextureMatrix = new core::matrix4(mat); | 			TextureMatrix = new core::matrix4(mat); | ||||||
| 			} | 		} else | ||||||
| 			else |  | ||||||
| 			*TextureMatrix = mat; | 			*TextureMatrix = mat; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -199,7 +190,9 @@ namespace video | |||||||
| 	/** \param b Layer to compare to. | 	/** \param b Layer to compare to. | ||||||
| 	\return True if layers are equal, else false. */ | 	\return True if layers are equal, else false. */ | ||||||
| 	inline bool operator==(const SMaterialLayer &b) const | 	inline bool operator==(const SMaterialLayer &b) const | ||||||
| 		{ return !(b!=*this); } | 	{ | ||||||
|  | 		return !(b != *this); | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	//! Texture | 	//! Texture | ||||||
| 	ITexture *Texture; | 	ITexture *Texture; | ||||||
| @@ -243,5 +236,3 @@ namespace video | |||||||
|  |  | ||||||
| } // end namespace video | } // end namespace video | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif // __S_MATERIAL_LAYER_H_INCLUDED__ |  | ||||||
|   | |||||||
| @@ -2,8 +2,7 @@ | |||||||
| // This file is part of the "Irrlicht Engine". | // This file is part of the "Irrlicht Engine". | ||||||
| // For conditions of distribution and use, see copyright notice in irrlicht.h | // For conditions of distribution and use, see copyright notice in irrlicht.h | ||||||
|  |  | ||||||
| #ifndef __S_MESH_H_INCLUDED__ | #pragma once | ||||||
| #define __S_MESH_H_INCLUDED__ |  | ||||||
|  |  | ||||||
| #include "IMesh.h" | #include "IMesh.h" | ||||||
| #include "IMeshBuffer.h" | #include "IMeshBuffer.h" | ||||||
| @@ -42,7 +41,6 @@ namespace scene | |||||||
| 		BoundingBox.reset(0.f, 0.f, 0.f); | 		BoundingBox.reset(0.f, 0.f, 0.f); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	//! returns amount of mesh buffers. | 	//! returns amount of mesh buffers. | ||||||
| 	u32 getMeshBufferCount() const override | 	u32 getMeshBufferCount() const override | ||||||
| 	{ | 	{ | ||||||
| @@ -59,8 +57,7 @@ namespace scene | |||||||
| 	/** reverse search */ | 	/** reverse search */ | ||||||
| 	IMeshBuffer *getMeshBuffer(const video::SMaterial &material) const override | 	IMeshBuffer *getMeshBuffer(const video::SMaterial &material) const override | ||||||
| 	{ | 	{ | ||||||
| 			for (s32 i = (s32)MeshBuffers.size()-1; i >= 0; --i) | 		for (s32 i = (s32)MeshBuffers.size() - 1; i >= 0; --i) { | ||||||
| 			{ |  | ||||||
| 			if (material == MeshBuffers[i]->getMaterial()) | 			if (material == MeshBuffers[i]->getMaterial()) | ||||||
| 				return MeshBuffers[i]; | 				return MeshBuffers[i]; | ||||||
| 		} | 		} | ||||||
| @@ -84,21 +81,15 @@ namespace scene | |||||||
| 	void recalculateBoundingBox() | 	void recalculateBoundingBox() | ||||||
| 	{ | 	{ | ||||||
| 		bool hasMeshBufferBBox = false; | 		bool hasMeshBufferBBox = false; | ||||||
| 			for (u32 i=0; i<MeshBuffers.size(); ++i) | 		for (u32 i = 0; i < MeshBuffers.size(); ++i) { | ||||||
| 			{ |  | ||||||
| 			const core::aabbox3df &bb = MeshBuffers[i]->getBoundingBox(); | 			const core::aabbox3df &bb = MeshBuffers[i]->getBoundingBox(); | ||||||
| 				if ( !bb.isEmpty() ) | 			if (!bb.isEmpty()) { | ||||||
| 				{ | 				if (!hasMeshBufferBBox) { | ||||||
| 					if ( !hasMeshBufferBBox ) |  | ||||||
| 					{ |  | ||||||
| 					hasMeshBufferBBox = true; | 					hasMeshBufferBBox = true; | ||||||
| 					BoundingBox = bb; | 					BoundingBox = bb; | ||||||
| 					} | 				} else { | ||||||
| 					else |  | ||||||
| 					{ |  | ||||||
| 					BoundingBox.addInternalBox(bb); | 					BoundingBox.addInternalBox(bb); | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @@ -110,8 +101,7 @@ namespace scene | |||||||
| 	/** The bounding box is not updated automatically. */ | 	/** The bounding box is not updated automatically. */ | ||||||
| 	void addMeshBuffer(IMeshBuffer *buf) | 	void addMeshBuffer(IMeshBuffer *buf) | ||||||
| 	{ | 	{ | ||||||
| 			if (buf) | 		if (buf) { | ||||||
| 			{ |  | ||||||
| 			buf->grab(); | 			buf->grab(); | ||||||
| 			MeshBuffers.push_back(buf); | 			MeshBuffers.push_back(buf); | ||||||
| 		} | 		} | ||||||
| @@ -138,9 +128,5 @@ namespace scene | |||||||
| 	core::aabbox3d<f32> BoundingBox; | 	core::aabbox3d<f32> BoundingBox; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  |  | ||||||
| } // end namespace scene | } // end namespace scene | ||||||
| } // end namespace irr | } // end namespace irr | ||||||
|  |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user