mirror of
https://github.com/minetest/irrlicht.git
synced 2025-07-03 00:30:26 +02:00
Compare commits
48 Commits
Author | SHA1 | Date | |
---|---|---|---|
ce0d29df93 | |||
2ae816b5a6 | |||
61af99adfa | |||
afbe41019c | |||
05a00a8d91 | |||
07fd32da50 | |||
735af8eec6 | |||
29a448de4d | |||
1579ce2740 | |||
b9e0641203 | |||
6f98515f34 | |||
a549d0bfed | |||
a0af653c3d | |||
cac4e62852 | |||
d6766fb8f4 | |||
e46ab74859 | |||
57705d57cf | |||
e9908ca545 | |||
2709c937d9 | |||
59fc4401f1 | |||
f3a1f9f656 | |||
1128d9deab | |||
9b541f2948 | |||
1cf0f3bef0 | |||
3225007e8d | |||
e9f205f952 | |||
d733e03430 | |||
f0766c845f | |||
ff645cc876 | |||
f6ec00e1c4 | |||
51f0acb7c1 | |||
91edd214aa | |||
538c9e5cde | |||
abebac8bd4 | |||
67c0cb5740 | |||
748e005794 | |||
a7b306f702 | |||
074e81f78f | |||
25ae156944 | |||
c4ca31313f | |||
b787ec3e3e | |||
6db035e0aa | |||
6064e12133 | |||
53e1b52ff4 | |||
a04a0d2a4b | |||
392df9bae3 | |||
426730bf91 | |||
aa095d9525 |
118
.github/workflows/build.yml
vendored
118
.github/workflows/build.yml
vendored
@ -8,13 +8,16 @@ on:
|
||||
jobs:
|
||||
|
||||
linux-gl:
|
||||
runs-on: ubuntu-18.04
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ubuntu:bionic
|
||||
env: { LANG: "C.UTF-8" }
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install deps
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install g++ cmake libxxf86vm-dev libgl1-mesa-dev libpng-dev libjpeg-dev zlib1g-dev -qyy
|
||||
apt-get update
|
||||
apt-get install g++ cmake libxi-dev libgl1-mesa-dev libpng-dev libjpeg-dev zlib1g-dev -qyy
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
@ -26,19 +29,22 @@ jobs:
|
||||
make DESTDIR=$PWD/_install install
|
||||
tar -c -I "gzip -9" -f irrlicht-linux.tar.gz -C ./_install/usr/local .
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: irrlicht-linux
|
||||
path: ./irrlicht-linux.tar.gz
|
||||
|
||||
linux-gles:
|
||||
runs-on: ubuntu-18.04
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ubuntu:bionic
|
||||
env: { LANG: "C.UTF-8" }
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install deps
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install g++ cmake libxxf86vm-dev libgles2-mesa-dev libpng-dev libjpeg-dev zlib1g-dev xvfb -qyy
|
||||
apt-get update
|
||||
apt-get install g++ cmake libxi-dev libgles2-mesa-dev libpng-dev libjpeg-dev zlib1g-dev xvfb -qyy
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
@ -57,10 +63,33 @@ jobs:
|
||||
cd bin/Linux
|
||||
LIBGL_ALWAYS_SOFTWARE=true xvfb-run ./AutomatedTest
|
||||
|
||||
linux-sdl:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ubuntu:jammy
|
||||
env: { LANG: "C.UTF-8" }
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install deps
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install g++ cmake libsdl2-dev libpng-dev libjpeg-dev zlib1g-dev -qyy
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
sed '/#define _IRR_COMPILE_WITH_SDL_DEVICE_/ s|^//||g' -i include/IrrCompileConfig.h
|
||||
cmake . -DBUILD_EXAMPLES=1
|
||||
make -j2
|
||||
|
||||
- name: Test (headless)
|
||||
run: |
|
||||
cd bin/Linux
|
||||
./AutomatedTest null
|
||||
|
||||
win32:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install compiler
|
||||
run: |
|
||||
sudo apt-get update && sudo apt-get install cmake -qyy
|
||||
@ -74,7 +103,7 @@ jobs:
|
||||
CC: i686-w64-mingw32-gcc
|
||||
CXX: i686-w64-mingw32-g++
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: irrlicht-win32
|
||||
path: ./irrlicht-win32.zip
|
||||
@ -82,7 +111,7 @@ jobs:
|
||||
win64:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install compiler
|
||||
run: |
|
||||
sudo apt-get update && sudo apt-get install cmake -qyy
|
||||
@ -96,15 +125,15 @@ jobs:
|
||||
CC: x86_64-w64-mingw32-gcc
|
||||
CXX: x86_64-w64-mingw32-g++
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: irrlicht-win64
|
||||
path: ./irrlicht-win64.zip
|
||||
|
||||
macos:
|
||||
runs-on: macos-10.15
|
||||
runs-on: macos-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install deps
|
||||
run: |
|
||||
brew update
|
||||
@ -118,3 +147,62 @@ jobs:
|
||||
- name: Test (headless)
|
||||
run: |
|
||||
./bin/OSX/AutomatedTest null
|
||||
|
||||
msvc:
|
||||
name: VS 2019 ${{ matrix.config.arch }}
|
||||
runs-on: windows-2019
|
||||
env:
|
||||
VCPKG_VERSION: 14e7bb4ae24616ec54ff6b2f6ef4e8659434ea44
|
||||
# 2022.05.10
|
||||
vcpkg_packages: zlib libpng libjpeg-turbo opengl-registry
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
config:
|
||||
-
|
||||
arch: x86
|
||||
generator: "-G'Visual Studio 16 2019' -A Win32"
|
||||
vcpkg_triplet: x86-windows
|
||||
-
|
||||
arch: x64
|
||||
generator: "-G'Visual Studio 16 2019' -A x64"
|
||||
vcpkg_triplet: x64-windows
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Restore from cache and run vcpkg
|
||||
uses: lukka/run-vcpkg@v7
|
||||
with:
|
||||
vcpkgArguments: ${{env.vcpkg_packages}}
|
||||
vcpkgDirectory: '${{ github.workspace }}\vcpkg'
|
||||
appendedCacheKey: ${{ matrix.config.vcpkg_triplet }}
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_VERSION }}
|
||||
vcpkgTriplet: ${{ matrix.config.vcpkg_triplet }}
|
||||
|
||||
- name: CMake
|
||||
run: |
|
||||
cmake ${{matrix.config.generator}} `
|
||||
-DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}\vcpkg\scripts\buildsystems\vcpkg.cmake" `
|
||||
-DCMAKE_BUILD_TYPE=Release .
|
||||
|
||||
- name: Build
|
||||
run: cmake --build . --config Release
|
||||
|
||||
- name: Create artifact folder
|
||||
run: |
|
||||
mkdir artifact/
|
||||
mkdir artifact/lib/
|
||||
|
||||
- name: Move dlls into artifact folder
|
||||
run: move bin\Win32-VisualStudio\Release\* artifact\lib\
|
||||
|
||||
- name: Move includes into artifact folder
|
||||
run: move include artifact/
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: msvc-${{ matrix.config.arch }}
|
||||
path: artifact/
|
||||
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -15,3 +15,7 @@ bin/Linux
|
||||
scripts/gl2ext.h
|
||||
scripts/glcorearb.h
|
||||
scripts/glext.h
|
||||
*.vcxproj*
|
||||
*.dir/
|
||||
*.sln
|
||||
*visualstudio/
|
||||
|
@ -7,8 +7,10 @@ else()
|
||||
cmake_policy(VERSION 3.9)
|
||||
endif()
|
||||
|
||||
set(IRRLICHTMT_REVISION 9)
|
||||
|
||||
project(Irrlicht
|
||||
VERSION 1.9.0
|
||||
VERSION 1.9.0.${IRRLICHTMT_REVISION}
|
||||
LANGUAGES CXX
|
||||
)
|
||||
|
||||
|
18
README.md
18
README.md
@ -3,7 +3,8 @@ IrrlichtMt version 1.9
|
||||
|
||||
The Irrlicht Engine is an open source realtime 3D engine written in C++.
|
||||
|
||||
This is a fork by the [Minetest](https://github.com/minetest) developers that contains features, customizations and fixes specifically for use in Minetest.
|
||||
This is a fork by the [Minetest](https://github.com/minetest) developers that was stripped-down and customized specifically for use in Minetest.
|
||||
It is intentionally not compatible to upstream and is planned to be eventually absorbed into Minetest.
|
||||
|
||||
Build
|
||||
-----
|
||||
@ -29,6 +30,21 @@ e.g. on a Linux system you might want to build for local use like this:
|
||||
|
||||
This will put an IrrlichtMtTargets.cmake file into the cmake directory in the current build directory, and it can then be imported from another project by pointing `find_package()` to the build directory, or by setting the `CMAKE_PREFIX_PATH` variable to that same path.
|
||||
|
||||
on Windows system:
|
||||
|
||||
It is highly recommended to use vcpkg as package manager.
|
||||
|
||||
After you successfully built vcpkg you can easily install the required libraries:
|
||||
|
||||
vcpkg install zlib libjpeg-turbo libpng opengl-registry --triplet x64-windows
|
||||
|
||||
Run the following script in PowerShell:
|
||||
|
||||
git clone https://github.com/minetest/irrlicht
|
||||
cd irrlicht
|
||||
cmake -B build -G "Visual Studio 17 2022" -A "Win64" -DCMAKE_TOOLCHAIN_FILE=[vcpkg-root]/scripts/buildsystems/vcpkg.cmake -DBUILD_SHARED_LIBS=OFF
|
||||
cmake --build build --config Release
|
||||
|
||||
Platforms
|
||||
---------
|
||||
|
||||
|
@ -7,7 +7,8 @@ using namespace irr;
|
||||
static IrrlichtDevice *device = nullptr;
|
||||
static int test_fail = 0;
|
||||
|
||||
extern void test_irr_array();
|
||||
void test_irr_array();
|
||||
void test_irr_string();
|
||||
|
||||
static video::E_DRIVER_TYPE chooseDriver(const char *arg_)
|
||||
{
|
||||
@ -32,7 +33,14 @@ static inline void check(bool ok, const char *msg)
|
||||
|
||||
void run_unit_tests() {
|
||||
std::cout << "Running unit tests:" << std::endl;
|
||||
test_irr_array();
|
||||
try {
|
||||
test_irr_array();
|
||||
test_irr_string();
|
||||
} catch (const std::exception &e) {
|
||||
std::cerr << e.what() << std::endl;
|
||||
test_fail++;
|
||||
}
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
@ -99,7 +107,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
while (device->run())
|
||||
{
|
||||
if (device->getTimer()->getTime() >= 1300)
|
||||
if (device->getTimer()->getTime() >= 1000)
|
||||
{
|
||||
device->getTimer()->setTime(0);
|
||||
++n;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "irrArray.h"
|
||||
#include <irrArray.h>
|
||||
#include "test_helper.h"
|
||||
|
||||
using namespace irr;
|
||||
|
195
examples/AutomatedTest/test_string.cpp
Normal file
195
examples/AutomatedTest/test_string.cpp
Normal file
@ -0,0 +1,195 @@
|
||||
#include <irrString.h>
|
||||
#include <cstring>
|
||||
#include <clocale>
|
||||
#include <vector>
|
||||
#include "test_helper.h"
|
||||
|
||||
using namespace irr;
|
||||
using namespace irr::core;
|
||||
|
||||
#define CMPSTR(a, b) (!strcmp(a, b))
|
||||
#define UASSERTSTR(actual, expected) UASSERTCMP(CMPSTR, actual.c_str(), expected)
|
||||
|
||||
static void test_basics()
|
||||
{
|
||||
// ctor
|
||||
stringc s;
|
||||
UASSERTEQ(s.c_str()[0], '\0');
|
||||
s = stringc(0.1234567);
|
||||
UASSERTSTR(s, "0.123457");
|
||||
s = stringc(0x1p+53);
|
||||
UASSERTSTR(s, "9007199254740992.000000");
|
||||
s = stringc(static_cast<int>(-102400));
|
||||
UASSERTSTR(s, "-102400");
|
||||
s = stringc(static_cast<unsigned int>(102400));
|
||||
UASSERTSTR(s, "102400");
|
||||
s = stringc(static_cast<long>(-1024000));
|
||||
UASSERTSTR(s, "-1024000");
|
||||
s = stringc(static_cast<unsigned long>(1024000));
|
||||
UASSERTSTR(s, "1024000");
|
||||
s = stringc("YESno", 3);
|
||||
UASSERTSTR(s, "YES");
|
||||
s = stringc(L"test", 4);
|
||||
UASSERTSTR(s, "test");
|
||||
s = stringc("Hello World!");
|
||||
UASSERTSTR(s, "Hello World!");
|
||||
// operator=
|
||||
s = stringw(L"abcdef");
|
||||
UASSERTSTR(s, "abcdef");
|
||||
s = L"abcdef";
|
||||
UASSERTSTR(s, "abcdef");
|
||||
s = static_cast<const char*>(nullptr);
|
||||
UASSERTSTR(s, "");
|
||||
// operator+
|
||||
s = s + stringc("foo");
|
||||
UASSERTSTR(s, "foo");
|
||||
s = s + L"bar";
|
||||
UASSERTSTR(s, "foobar");
|
||||
// the rest
|
||||
s = "f";
|
||||
UASSERTEQ(s[0], 'f');
|
||||
const auto &sref = s;
|
||||
UASSERTEQ(sref[0], 'f');
|
||||
UASSERT(sref == "f");
|
||||
UASSERT(sref == stringc("f"));
|
||||
s = "a";
|
||||
UASSERT(sref < stringc("aa"));
|
||||
UASSERT(sref < stringc("b"));
|
||||
UASSERT(stringc("Z") < sref);
|
||||
UASSERT(!(sref < stringc("a")));
|
||||
UASSERT(sref.lower_ignore_case("AA"));
|
||||
UASSERT(sref.lower_ignore_case("B"));
|
||||
UASSERT(!sref.lower_ignore_case("A"));
|
||||
s = "dog";
|
||||
UASSERT(sref != "cat");
|
||||
UASSERT(sref != stringc("cat"));
|
||||
}
|
||||
|
||||
static void test_methods()
|
||||
{
|
||||
stringc s;
|
||||
const auto &sref = s;
|
||||
s = "irrlicht";
|
||||
UASSERTEQ(sref.size(), 8);
|
||||
UASSERT(!sref.empty());
|
||||
s.clear();
|
||||
UASSERTEQ(sref.size(), 0);
|
||||
UASSERT(sref.empty());
|
||||
UASSERT(sref[0] == 0);
|
||||
s = "\tAz#`";
|
||||
s.make_lower();
|
||||
UASSERTSTR(s, "\taz#`");
|
||||
s.make_upper();
|
||||
UASSERTSTR(s, "\tAZ#`");
|
||||
UASSERT(sref.equals_ignore_case("\taz#`"));
|
||||
UASSERT(sref.equals_substring_ignore_case("Z#`", 2));
|
||||
s = "irrlicht";
|
||||
UASSERT(sref.equalsn(stringc("irr"), 3));
|
||||
UASSERT(sref.equalsn("irr", 3));
|
||||
s = "fo";
|
||||
s.append('o');
|
||||
UASSERTSTR(s, "foo");
|
||||
s.append("bar", 1);
|
||||
UASSERTSTR(s, "foob");
|
||||
s.append("ar", 999999);
|
||||
UASSERTSTR(s, "foobar");
|
||||
s = "nyan";
|
||||
s.append(stringc("cat"));
|
||||
UASSERTSTR(s, "nyancat");
|
||||
s.append(stringc("sam"), 1);
|
||||
UASSERTSTR(s, "nyancats");
|
||||
s = "fbar";
|
||||
s.insert(1, "ooXX", 2);
|
||||
UASSERTSTR(s, "foobar");
|
||||
UASSERTEQ(sref.findFirst('o'), 1);
|
||||
UASSERTEQ(sref.findFirst('X'), -1);
|
||||
UASSERTEQ(sref.findFirstChar("abff", 2), 3);
|
||||
UASSERTEQ(sref.findFirstCharNotInList("fobb", 2), 3);
|
||||
UASSERTEQ(sref.findLast('o'), 2);
|
||||
UASSERTEQ(sref.findLast('X'), -1);
|
||||
UASSERTEQ(sref.findLastChar("abrr", 2), 4);
|
||||
UASSERTEQ(sref.findLastCharNotInList("rabb", 2), 3);
|
||||
UASSERTEQ(sref.findNext('o', 2), 2);
|
||||
UASSERTEQ(sref.findLast('o', 1), 1);
|
||||
s = "ob-oob";
|
||||
UASSERTEQ(sref.find("ob", 1), 4);
|
||||
UASSERTEQ(sref.find("ob"), 0);
|
||||
UASSERTEQ(sref.find("?"), -1);
|
||||
s = "HOMEOWNER";
|
||||
stringc s2 = sref.subString(2, 4);
|
||||
UASSERTSTR(s2, "MEOW");
|
||||
s2 = sref.subString(2, 4, true);
|
||||
UASSERTSTR(s2, "meow");
|
||||
s = "land";
|
||||
s.replace('l', 's');
|
||||
UASSERTSTR(s, "sand");
|
||||
s = ">dog<";
|
||||
s.replace("dog", "cat");
|
||||
UASSERTSTR(s, ">cat<");
|
||||
s.replace("cat", "horse");
|
||||
UASSERTSTR(s, ">horse<");
|
||||
s.replace("horse", "gnu");
|
||||
UASSERTSTR(s, ">gnu<");
|
||||
s = " h e l p ";
|
||||
s.remove(' ');
|
||||
UASSERTSTR(s, "help");
|
||||
s.remove("el");
|
||||
UASSERTSTR(s, "hp");
|
||||
s = "irrlicht";
|
||||
s.removeChars("it");
|
||||
UASSERTSTR(s, "rrlch");
|
||||
s = "\r\nfoo bar ";
|
||||
s.trim();
|
||||
UASSERTSTR(s, "foo bar");
|
||||
s = "foxo";
|
||||
s.erase(2);
|
||||
UASSERTSTR(s, "foo");
|
||||
s = "a";
|
||||
s.append('\0');
|
||||
s.append('b');
|
||||
UASSERTEQ(s.size(), 3);
|
||||
s.validate();
|
||||
UASSERTEQ(s.size(), 1);
|
||||
UASSERTEQ(s.lastChar(), 'a');
|
||||
std::vector<stringc> res;
|
||||
s = "a,,b,c";
|
||||
s.split(res, ",aa", 1, true, false);
|
||||
UASSERTEQ(res.size(), 3);
|
||||
UASSERTSTR(res[0], "a");
|
||||
UASSERTSTR(res[2], "c");
|
||||
res.clear();
|
||||
s.split(res, ",", 1, false, true);
|
||||
UASSERTEQ(res.size(), 7);
|
||||
UASSERTSTR(res[0], "a");
|
||||
UASSERTSTR(res[2], "");
|
||||
for (int i = 0; i < 3; i++)
|
||||
UASSERTSTR(res[2*i+1], ",");
|
||||
}
|
||||
|
||||
static void test_conv()
|
||||
{
|
||||
// assumes Unicode and UTF-8 locale
|
||||
setlocale(LC_CTYPE, "");
|
||||
|
||||
stringw out;
|
||||
multibyteToWString(out, "†††");
|
||||
UASSERTEQ(out.size(), 3);
|
||||
for (int i = 0; i < 3; i++)
|
||||
UASSERTEQ(static_cast<u16>(out[i]), 0x2020);
|
||||
stringc out2;
|
||||
wStringToMultibyte(out2, L"†††");
|
||||
UASSERTEQ(out2.size(), 9);
|
||||
for (int i = 0; i < 3; i++) {
|
||||
UASSERTEQ(static_cast<u8>(out2[3*i]), 0xe2);
|
||||
UASSERTEQ(static_cast<u8>(out2[3*i+1]), 0x80);
|
||||
UASSERTEQ(static_cast<u8>(out2[3*i+2]), 0xa0);
|
||||
}
|
||||
}
|
||||
|
||||
void test_irr_string()
|
||||
{
|
||||
test_basics();
|
||||
test_methods();
|
||||
test_conv();
|
||||
std::cout << " test_irr_string PASSED" << std::endl;
|
||||
}
|
@ -39,46 +39,46 @@ namespace scene
|
||||
public:
|
||||
core::array<T> Indices;
|
||||
|
||||
virtual u32 stride() const _IRR_OVERRIDE_ {return sizeof(T);}
|
||||
u32 stride() const override {return sizeof(T);}
|
||||
|
||||
virtual u32 size() const _IRR_OVERRIDE_ {return Indices.size();}
|
||||
u32 size() const override {return Indices.size();}
|
||||
|
||||
virtual void push_back(const u32 &element) _IRR_OVERRIDE_
|
||||
void push_back(const u32 &element) override
|
||||
{
|
||||
// push const ref due to compiler problem with gcc 4.6, big endian
|
||||
Indices.push_back((const T&)element);
|
||||
}
|
||||
|
||||
virtual u32 operator [](u32 index) const _IRR_OVERRIDE_
|
||||
u32 operator [](u32 index) const override
|
||||
{
|
||||
return (u32)(Indices[index]);
|
||||
}
|
||||
|
||||
virtual u32 getLast() _IRR_OVERRIDE_ {return (u32)Indices.getLast();}
|
||||
u32 getLast() override {return (u32)Indices.getLast();}
|
||||
|
||||
virtual void setValue(u32 index, u32 value) _IRR_OVERRIDE_
|
||||
void setValue(u32 index, u32 value) override
|
||||
{
|
||||
Indices[index]=(T)value;
|
||||
}
|
||||
|
||||
virtual void set_used(u32 usedNow) _IRR_OVERRIDE_
|
||||
void set_used(u32 usedNow) override
|
||||
{
|
||||
Indices.set_used(usedNow);
|
||||
}
|
||||
|
||||
virtual void reallocate(u32 new_size) _IRR_OVERRIDE_
|
||||
void reallocate(u32 new_size) override
|
||||
{
|
||||
Indices.reallocate(new_size);
|
||||
}
|
||||
|
||||
virtual u32 allocated_size() const _IRR_OVERRIDE_
|
||||
u32 allocated_size() const override
|
||||
{
|
||||
return Indices.allocated_size();
|
||||
}
|
||||
|
||||
virtual void* pointer() _IRR_OVERRIDE_ {return Indices.pointer();}
|
||||
void* pointer() override {return Indices.pointer();}
|
||||
|
||||
virtual video::E_INDEX_TYPE getType() const _IRR_OVERRIDE_
|
||||
video::E_INDEX_TYPE getType() const override
|
||||
{
|
||||
if (sizeof(T)==sizeof(u16))
|
||||
return video::EIT_16BIT;
|
||||
@ -110,7 +110,7 @@ namespace scene
|
||||
}
|
||||
|
||||
//virtual void setType(video::E_INDEX_TYPE IndexType);
|
||||
virtual void setType(video::E_INDEX_TYPE IndexType) _IRR_OVERRIDE_
|
||||
void setType(video::E_INDEX_TYPE IndexType) override
|
||||
{
|
||||
IIndexList *NewIndices=0;
|
||||
|
||||
@ -141,78 +141,78 @@ namespace scene
|
||||
Indices=NewIndices;
|
||||
}
|
||||
|
||||
virtual void* getData() _IRR_OVERRIDE_ {return Indices->pointer();}
|
||||
void* getData() override {return Indices->pointer();}
|
||||
|
||||
virtual video::E_INDEX_TYPE getType() const _IRR_OVERRIDE_ {return Indices->getType();}
|
||||
video::E_INDEX_TYPE getType() const override {return Indices->getType();}
|
||||
|
||||
virtual u32 stride() const _IRR_OVERRIDE_ {return Indices->stride();}
|
||||
u32 stride() const override {return Indices->stride();}
|
||||
|
||||
virtual u32 size() const _IRR_OVERRIDE_
|
||||
u32 size() const override
|
||||
{
|
||||
return Indices->size();
|
||||
}
|
||||
|
||||
virtual void push_back(const u32 &element) _IRR_OVERRIDE_
|
||||
void push_back(const u32 &element) override
|
||||
{
|
||||
Indices->push_back(element);
|
||||
}
|
||||
|
||||
virtual u32 operator [](u32 index) const _IRR_OVERRIDE_
|
||||
u32 operator [](u32 index) const override
|
||||
{
|
||||
return (*Indices)[index];
|
||||
}
|
||||
|
||||
virtual u32 getLast() _IRR_OVERRIDE_
|
||||
u32 getLast() override
|
||||
{
|
||||
return Indices->getLast();
|
||||
}
|
||||
|
||||
virtual void setValue(u32 index, u32 value) _IRR_OVERRIDE_
|
||||
void setValue(u32 index, u32 value) override
|
||||
{
|
||||
Indices->setValue(index, value);
|
||||
}
|
||||
|
||||
virtual void set_used(u32 usedNow) _IRR_OVERRIDE_
|
||||
void set_used(u32 usedNow) override
|
||||
{
|
||||
Indices->set_used(usedNow);
|
||||
}
|
||||
|
||||
virtual void reallocate(u32 new_size) _IRR_OVERRIDE_
|
||||
void reallocate(u32 new_size) override
|
||||
{
|
||||
Indices->reallocate(new_size);
|
||||
}
|
||||
|
||||
virtual u32 allocated_size() const _IRR_OVERRIDE_
|
||||
u32 allocated_size() const override
|
||||
{
|
||||
return Indices->allocated_size();
|
||||
}
|
||||
|
||||
virtual void* pointer() _IRR_OVERRIDE_
|
||||
void* pointer() override
|
||||
{
|
||||
return Indices->pointer();
|
||||
}
|
||||
|
||||
//! get the current hardware mapping hint
|
||||
virtual E_HARDWARE_MAPPING getHardwareMappingHint() const _IRR_OVERRIDE_
|
||||
E_HARDWARE_MAPPING getHardwareMappingHint() const override
|
||||
{
|
||||
return MappingHint;
|
||||
}
|
||||
|
||||
//! set the hardware mapping hint, for driver
|
||||
virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint ) _IRR_OVERRIDE_
|
||||
void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint ) override
|
||||
{
|
||||
MappingHint=NewMappingHint;
|
||||
}
|
||||
|
||||
//! flags the mesh as changed, reloads hardware buffers
|
||||
virtual void setDirty() _IRR_OVERRIDE_
|
||||
void setDirty() override
|
||||
{
|
||||
++ChangedID;
|
||||
}
|
||||
|
||||
//! Get the currently used ID for identification of changes.
|
||||
/** This shouldn't be used for anything outside the VideoDriver. */
|
||||
virtual u32 getChangedID() const _IRR_OVERRIDE_ {return ChangedID;}
|
||||
u32 getChangedID() const override {return ChangedID;}
|
||||
|
||||
E_HARDWARE_MAPPING MappingHint;
|
||||
u32 ChangedID;
|
||||
|
@ -32,7 +32,7 @@ namespace scene
|
||||
|
||||
//! Get material of this meshbuffer
|
||||
/** \return Material of this buffer */
|
||||
virtual const video::SMaterial& getMaterial() const _IRR_OVERRIDE_
|
||||
const video::SMaterial& getMaterial() const override
|
||||
{
|
||||
return Material;
|
||||
}
|
||||
@ -40,7 +40,7 @@ namespace scene
|
||||
|
||||
//! Get material of this meshbuffer
|
||||
/** \return Material of this buffer */
|
||||
virtual video::SMaterial& getMaterial() _IRR_OVERRIDE_
|
||||
video::SMaterial& getMaterial() override
|
||||
{
|
||||
return Material;
|
||||
}
|
||||
@ -48,7 +48,7 @@ namespace scene
|
||||
|
||||
//! Get pointer to vertices
|
||||
/** \return Pointer to vertices. */
|
||||
virtual const void* getVertices() const _IRR_OVERRIDE_
|
||||
const void* getVertices() const override
|
||||
{
|
||||
return Vertices.const_pointer();
|
||||
}
|
||||
@ -56,7 +56,7 @@ namespace scene
|
||||
|
||||
//! Get pointer to vertices
|
||||
/** \return Pointer to vertices. */
|
||||
virtual void* getVertices() _IRR_OVERRIDE_
|
||||
void* getVertices() override
|
||||
{
|
||||
return Vertices.pointer();
|
||||
}
|
||||
@ -64,21 +64,21 @@ namespace scene
|
||||
|
||||
//! Get number of vertices
|
||||
/** \return Number of vertices. */
|
||||
virtual u32 getVertexCount() const _IRR_OVERRIDE_
|
||||
u32 getVertexCount() const override
|
||||
{
|
||||
return Vertices.size();
|
||||
}
|
||||
|
||||
//! Get type of index data which is stored in this meshbuffer.
|
||||
/** \return Index type of this buffer. */
|
||||
virtual video::E_INDEX_TYPE getIndexType() const _IRR_OVERRIDE_
|
||||
video::E_INDEX_TYPE getIndexType() const override
|
||||
{
|
||||
return video::EIT_16BIT;
|
||||
}
|
||||
|
||||
//! Get pointer to indices
|
||||
/** \return Pointer to indices. */
|
||||
virtual const u16* getIndices() const _IRR_OVERRIDE_
|
||||
const u16* getIndices() const override
|
||||
{
|
||||
return Indices.const_pointer();
|
||||
}
|
||||
@ -86,7 +86,7 @@ namespace scene
|
||||
|
||||
//! Get pointer to indices
|
||||
/** \return Pointer to indices. */
|
||||
virtual u16* getIndices() _IRR_OVERRIDE_
|
||||
u16* getIndices() override
|
||||
{
|
||||
return Indices.pointer();
|
||||
}
|
||||
@ -94,7 +94,7 @@ namespace scene
|
||||
|
||||
//! Get number of indices
|
||||
/** \return Number of indices. */
|
||||
virtual u32 getIndexCount() const _IRR_OVERRIDE_
|
||||
u32 getIndexCount() const override
|
||||
{
|
||||
return Indices.size();
|
||||
}
|
||||
@ -102,7 +102,7 @@ namespace scene
|
||||
|
||||
//! Get the axis aligned bounding box
|
||||
/** \return Axis aligned bounding box of this buffer. */
|
||||
virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_
|
||||
const core::aabbox3d<f32>& getBoundingBox() const override
|
||||
{
|
||||
return BoundingBox;
|
||||
}
|
||||
@ -111,7 +111,7 @@ namespace scene
|
||||
//! Set the axis aligned bounding box
|
||||
/** \param box New axis aligned bounding box for this buffer. */
|
||||
//! set user axis aligned bounding box
|
||||
virtual void setBoundingBox(const core::aabbox3df& box) _IRR_OVERRIDE_
|
||||
void setBoundingBox(const core::aabbox3df& box) override
|
||||
{
|
||||
BoundingBox = box;
|
||||
}
|
||||
@ -119,7 +119,7 @@ namespace scene
|
||||
|
||||
//! Recalculate the bounding box.
|
||||
/** should be called if the mesh changed. */
|
||||
virtual void recalculateBoundingBox() _IRR_OVERRIDE_
|
||||
void recalculateBoundingBox() override
|
||||
{
|
||||
if (!Vertices.empty())
|
||||
{
|
||||
@ -136,43 +136,43 @@ namespace scene
|
||||
|
||||
//! Get type of vertex data stored in this buffer.
|
||||
/** \return Type of vertex data. */
|
||||
virtual video::E_VERTEX_TYPE getVertexType() const _IRR_OVERRIDE_
|
||||
video::E_VERTEX_TYPE getVertexType() const override
|
||||
{
|
||||
return T::getType();
|
||||
}
|
||||
|
||||
//! returns position of vertex i
|
||||
virtual const core::vector3df& getPosition(u32 i) const _IRR_OVERRIDE_
|
||||
const core::vector3df& getPosition(u32 i) const override
|
||||
{
|
||||
return Vertices[i].Pos;
|
||||
}
|
||||
|
||||
//! returns position of vertex i
|
||||
virtual core::vector3df& getPosition(u32 i) _IRR_OVERRIDE_
|
||||
core::vector3df& getPosition(u32 i) override
|
||||
{
|
||||
return Vertices[i].Pos;
|
||||
}
|
||||
|
||||
//! returns normal of vertex i
|
||||
virtual const core::vector3df& getNormal(u32 i) const _IRR_OVERRIDE_
|
||||
const core::vector3df& getNormal(u32 i) const override
|
||||
{
|
||||
return Vertices[i].Normal;
|
||||
}
|
||||
|
||||
//! returns normal of vertex i
|
||||
virtual core::vector3df& getNormal(u32 i) _IRR_OVERRIDE_
|
||||
core::vector3df& getNormal(u32 i) override
|
||||
{
|
||||
return Vertices[i].Normal;
|
||||
}
|
||||
|
||||
//! returns texture coord of vertex i
|
||||
virtual const core::vector2df& getTCoords(u32 i) const _IRR_OVERRIDE_
|
||||
const core::vector2df& getTCoords(u32 i) const override
|
||||
{
|
||||
return Vertices[i].TCoords;
|
||||
}
|
||||
|
||||
//! returns texture coord of vertex i
|
||||
virtual core::vector2df& getTCoords(u32 i) _IRR_OVERRIDE_
|
||||
core::vector2df& getTCoords(u32 i) override
|
||||
{
|
||||
return Vertices[i].TCoords;
|
||||
}
|
||||
@ -183,7 +183,7 @@ namespace scene
|
||||
or the main buffer is of standard type. Otherwise, behavior is
|
||||
undefined.
|
||||
*/
|
||||
virtual void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices) _IRR_OVERRIDE_
|
||||
void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices) override
|
||||
{
|
||||
if (vertices == getVertices())
|
||||
return;
|
||||
@ -212,7 +212,7 @@ namespace scene
|
||||
undefined.
|
||||
\param other Meshbuffer to be appended to this one.
|
||||
*/
|
||||
virtual void append(const IMeshBuffer* const other) _IRR_OVERRIDE_
|
||||
void append(const IMeshBuffer* const other) override
|
||||
{
|
||||
/*
|
||||
if (this==other)
|
||||
@ -238,19 +238,19 @@ namespace scene
|
||||
|
||||
|
||||
//! get the current hardware mapping hint
|
||||
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const _IRR_OVERRIDE_
|
||||
E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const override
|
||||
{
|
||||
return MappingHint_Vertex;
|
||||
}
|
||||
|
||||
//! get the current hardware mapping hint
|
||||
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Index() const _IRR_OVERRIDE_
|
||||
E_HARDWARE_MAPPING getHardwareMappingHint_Index() const override
|
||||
{
|
||||
return MappingHint_Index;
|
||||
}
|
||||
|
||||
//! set the hardware mapping hint, for driver
|
||||
virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX ) _IRR_OVERRIDE_
|
||||
void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX ) override
|
||||
{
|
||||
if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_VERTEX)
|
||||
MappingHint_Vertex=NewMappingHint;
|
||||
@ -259,19 +259,19 @@ namespace scene
|
||||
}
|
||||
|
||||
//! Describe what kind of primitive geometry is used by the meshbuffer
|
||||
virtual void setPrimitiveType(E_PRIMITIVE_TYPE type) _IRR_OVERRIDE_
|
||||
void setPrimitiveType(E_PRIMITIVE_TYPE type) override
|
||||
{
|
||||
PrimitiveType = type;
|
||||
}
|
||||
|
||||
//! Get the kind of primitive geometry which is used by the meshbuffer
|
||||
virtual E_PRIMITIVE_TYPE getPrimitiveType() const _IRR_OVERRIDE_
|
||||
E_PRIMITIVE_TYPE getPrimitiveType() const override
|
||||
{
|
||||
return PrimitiveType;
|
||||
}
|
||||
|
||||
//! flags the mesh as changed, reloads hardware buffers
|
||||
virtual void setDirty(E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX) _IRR_OVERRIDE_
|
||||
void setDirty(E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX) override
|
||||
{
|
||||
if (Buffer==EBT_VERTEX_AND_INDEX ||Buffer==EBT_VERTEX)
|
||||
++ChangedID_Vertex;
|
||||
@ -281,17 +281,17 @@ namespace scene
|
||||
|
||||
//! Get the currently used ID for identification of changes.
|
||||
/** This shouldn't be used for anything outside the VideoDriver. */
|
||||
virtual u32 getChangedID_Vertex() const _IRR_OVERRIDE_ {return ChangedID_Vertex;}
|
||||
u32 getChangedID_Vertex() const override {return ChangedID_Vertex;}
|
||||
|
||||
//! Get the currently used ID for identification of changes.
|
||||
/** This shouldn't be used for anything outside the VideoDriver. */
|
||||
virtual u32 getChangedID_Index() const _IRR_OVERRIDE_ {return ChangedID_Index;}
|
||||
u32 getChangedID_Index() const override {return ChangedID_Index;}
|
||||
|
||||
virtual void setHWBuffer(void *ptr) const _IRR_OVERRIDE_ {
|
||||
void setHWBuffer(void *ptr) const override {
|
||||
HWBuffer = ptr;
|
||||
}
|
||||
|
||||
virtual void *getHWBuffer() const _IRR_OVERRIDE_ {
|
||||
void *getHWBuffer() const override {
|
||||
return HWBuffer;
|
||||
}
|
||||
|
||||
|
@ -40,33 +40,33 @@ namespace scene
|
||||
public:
|
||||
core::array<T> Vertices;
|
||||
|
||||
virtual u32 stride() const _IRR_OVERRIDE_ {return sizeof(T);}
|
||||
u32 stride() const override {return sizeof(T);}
|
||||
|
||||
virtual u32 size() const _IRR_OVERRIDE_ {return Vertices.size();}
|
||||
u32 size() const override {return Vertices.size();}
|
||||
|
||||
virtual void push_back (const video::S3DVertex &element) _IRR_OVERRIDE_
|
||||
void push_back (const video::S3DVertex &element) override
|
||||
{Vertices.push_back((T&)element);}
|
||||
|
||||
virtual video::S3DVertex& operator [](const u32 index) const _IRR_OVERRIDE_
|
||||
video::S3DVertex& operator [](const u32 index) const override
|
||||
{return (video::S3DVertex&)Vertices[index];}
|
||||
|
||||
virtual video::S3DVertex& getLast() _IRR_OVERRIDE_
|
||||
video::S3DVertex& getLast() override
|
||||
{return (video::S3DVertex&)Vertices.getLast();}
|
||||
|
||||
virtual void set_used(u32 usedNow) _IRR_OVERRIDE_
|
||||
void set_used(u32 usedNow) override
|
||||
{Vertices.set_used(usedNow);}
|
||||
|
||||
virtual void reallocate(u32 new_size) _IRR_OVERRIDE_
|
||||
void reallocate(u32 new_size) override
|
||||
{Vertices.reallocate(new_size);}
|
||||
|
||||
virtual u32 allocated_size() const _IRR_OVERRIDE_
|
||||
u32 allocated_size() const override
|
||||
{
|
||||
return Vertices.allocated_size();
|
||||
}
|
||||
|
||||
virtual video::S3DVertex* pointer() _IRR_OVERRIDE_ {return Vertices.pointer();}
|
||||
video::S3DVertex* pointer() override {return Vertices.pointer();}
|
||||
|
||||
virtual video::E_VERTEX_TYPE getType() const _IRR_OVERRIDE_ {return T::getType();}
|
||||
video::E_VERTEX_TYPE getType() const override {return T::getType();}
|
||||
};
|
||||
|
||||
public:
|
||||
@ -95,7 +95,7 @@ namespace scene
|
||||
}
|
||||
|
||||
|
||||
virtual void setType(video::E_VERTEX_TYPE vertexType) _IRR_OVERRIDE_
|
||||
void setType(video::E_VERTEX_TYPE vertexType) override
|
||||
{
|
||||
IVertexList *NewVertices=0;
|
||||
|
||||
@ -130,73 +130,73 @@ namespace scene
|
||||
Vertices=NewVertices;
|
||||
}
|
||||
|
||||
virtual void* getData() _IRR_OVERRIDE_ {return Vertices->pointer();}
|
||||
void* getData() override {return Vertices->pointer();}
|
||||
|
||||
virtual video::E_VERTEX_TYPE getType() const _IRR_OVERRIDE_ {return Vertices->getType();}
|
||||
video::E_VERTEX_TYPE getType() const override {return Vertices->getType();}
|
||||
|
||||
virtual u32 stride() const _IRR_OVERRIDE_ {return Vertices->stride();}
|
||||
u32 stride() const override {return Vertices->stride();}
|
||||
|
||||
virtual u32 size() const _IRR_OVERRIDE_
|
||||
u32 size() const override
|
||||
{
|
||||
return Vertices->size();
|
||||
}
|
||||
|
||||
virtual void push_back (const video::S3DVertex &element) _IRR_OVERRIDE_
|
||||
void push_back (const video::S3DVertex &element) override
|
||||
{
|
||||
Vertices->push_back(element);
|
||||
}
|
||||
|
||||
virtual video::S3DVertex& operator [](const u32 index) const _IRR_OVERRIDE_
|
||||
video::S3DVertex& operator [](const u32 index) const override
|
||||
{
|
||||
return (*Vertices)[index];
|
||||
}
|
||||
|
||||
virtual video::S3DVertex& getLast() _IRR_OVERRIDE_
|
||||
video::S3DVertex& getLast() override
|
||||
{
|
||||
return Vertices->getLast();
|
||||
}
|
||||
|
||||
virtual void set_used(u32 usedNow) _IRR_OVERRIDE_
|
||||
void set_used(u32 usedNow) override
|
||||
{
|
||||
Vertices->set_used(usedNow);
|
||||
}
|
||||
|
||||
virtual void reallocate(u32 new_size) _IRR_OVERRIDE_
|
||||
void reallocate(u32 new_size) override
|
||||
{
|
||||
Vertices->reallocate(new_size);
|
||||
}
|
||||
|
||||
virtual u32 allocated_size() const _IRR_OVERRIDE_
|
||||
u32 allocated_size() const override
|
||||
{
|
||||
return Vertices->allocated_size();
|
||||
}
|
||||
|
||||
virtual video::S3DVertex* pointer() _IRR_OVERRIDE_
|
||||
video::S3DVertex* pointer() override
|
||||
{
|
||||
return Vertices->pointer();
|
||||
}
|
||||
|
||||
//! get the current hardware mapping hint
|
||||
virtual E_HARDWARE_MAPPING getHardwareMappingHint() const _IRR_OVERRIDE_
|
||||
E_HARDWARE_MAPPING getHardwareMappingHint() const override
|
||||
{
|
||||
return MappingHint;
|
||||
}
|
||||
|
||||
//! set the hardware mapping hint, for driver
|
||||
virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint ) _IRR_OVERRIDE_
|
||||
void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint ) override
|
||||
{
|
||||
MappingHint=NewMappingHint;
|
||||
}
|
||||
|
||||
//! flags the mesh as changed, reloads hardware buffers
|
||||
virtual void setDirty() _IRR_OVERRIDE_
|
||||
void setDirty() override
|
||||
{
|
||||
++ChangedID;
|
||||
}
|
||||
|
||||
//! Get the currently used ID for identification of changes.
|
||||
/** This shouldn't be used for anything outside the VideoDriver. */
|
||||
virtual u32 getChangedID() const _IRR_OVERRIDE_ {return ChangedID;}
|
||||
u32 getChangedID() const override {return ChangedID;}
|
||||
|
||||
E_HARDWARE_MAPPING MappingHint;
|
||||
u32 ChangedID;
|
||||
|
@ -16,10 +16,6 @@ namespace irr
|
||||
/** This device uses the Win32 API and works in all versions of Windows. */
|
||||
EIDT_WIN32,
|
||||
|
||||
//! A device native to Windows CE devices
|
||||
/** This device works on Windows Mobile, Pocket PC and Microsoft SmartPhone devices */
|
||||
EIDT_WINCE,
|
||||
|
||||
//! A device native to Unix style operating systems.
|
||||
/** This device uses the X11 windowing system and works in Linux, Solaris, FreeBSD, OSX and
|
||||
other operating systems which support X11. */
|
||||
@ -38,18 +34,6 @@ namespace irr
|
||||
in by defining the _IRR_COMPILE_WITH_SDL_DEVICE_ macro in IrrCompileConfig.h */
|
||||
EIDT_SDL,
|
||||
|
||||
//! A device for raw framebuffer access
|
||||
/** Best used with embedded devices and mobile systems.
|
||||
Does not need X11 or other graphical subsystems.
|
||||
May support hw-acceleration via OpenGL-ES for FBDirect */
|
||||
EIDT_FRAMEBUFFER,
|
||||
|
||||
//! A simple text only device supported by all platforms.
|
||||
/** This device allows applications to run from the command line without opening a window.
|
||||
It can render the output of the software drivers to the console as ASCII. It only supports
|
||||
mouse and keyboard in Windows operating systems. */
|
||||
EIDT_CONSOLE,
|
||||
|
||||
//! This selection allows Irrlicht to choose the best device from the ones available.
|
||||
/** If this selection is chosen then Irrlicht will try to use the IrrlichtDevice native
|
||||
to your operating system. If this is unavailable then the X11, SDL and then console device
|
||||
|
@ -1,36 +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_MESSAGE_BOX_FLAGS_H_INCLUDED__
|
||||
#define __E_MESSAGE_BOX_FLAGS_H_INCLUDED__
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
|
||||
//! enumeration for message box layout flags
|
||||
enum EMESSAGE_BOX_FLAG
|
||||
{
|
||||
//! Flag for the OK button
|
||||
EMBF_OK = 0x1,
|
||||
|
||||
//! Flag for the cancel button
|
||||
EMBF_CANCEL = 0x2,
|
||||
|
||||
//! Flag for the yes button
|
||||
EMBF_YES = 0x4,
|
||||
|
||||
//! Flag for the no button
|
||||
EMBF_NO = 0x8,
|
||||
|
||||
//! This value is not used. It only forces this enumeration to compile in 32 bit.
|
||||
EMBF_FORCE_32BIT = 0x7fffffff
|
||||
};
|
||||
|
||||
} // namespace gui
|
||||
} // namespace irr
|
||||
|
||||
#endif
|
||||
|
@ -61,7 +61,7 @@ namespace scene
|
||||
if getMeshType() returns EAMT_MD2 it's safe to cast the
|
||||
IAnimatedMesh to IAnimatedMeshMD2.
|
||||
\returns Type of the mesh. */
|
||||
virtual E_ANIMATED_MESH_TYPE getMeshType() const _IRR_OVERRIDE_
|
||||
E_ANIMATED_MESH_TYPE getMeshType() const override
|
||||
{
|
||||
return EAMT_UNKNOWN;
|
||||
}
|
||||
|
@ -74,17 +74,17 @@ namespace scene
|
||||
virtual E_BONE_ANIMATION_MODE getAnimationMode() const = 0;
|
||||
|
||||
//! Get the axis aligned bounding box of this node
|
||||
virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_ = 0;
|
||||
const core::aabbox3d<f32>& getBoundingBox() const override = 0;
|
||||
|
||||
//! Returns the relative transformation of the scene node.
|
||||
//virtual core::matrix4 getRelativeTransformation() const = 0;
|
||||
|
||||
//! The animation method.
|
||||
virtual void OnAnimate(u32 timeMs) _IRR_OVERRIDE_ =0;
|
||||
void OnAnimate(u32 timeMs) override =0;
|
||||
|
||||
//! The render method.
|
||||
/** Does nothing as bones are not visible. */
|
||||
virtual void render() _IRR_OVERRIDE_ { }
|
||||
void render() override { }
|
||||
|
||||
//! How the relative transformation of the bone is used
|
||||
virtual void setSkinningSpace( E_BONE_SKINNING_SPACE space ) =0;
|
||||
|
@ -72,7 +72,7 @@ namespace scene
|
||||
ISceneManager::addCameraSceneNodeFPS, may want to get
|
||||
this input for changing their position, look at target or
|
||||
whatever. */
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_ =0;
|
||||
bool OnEvent(const SEvent& event) override =0;
|
||||
|
||||
//! Sets the look at target of the camera
|
||||
/** If the camera's target and rotation are bound ( @see
|
||||
@ -90,7 +90,7 @@ namespace scene
|
||||
bindTargetAndRotation() ) then calling this will also change
|
||||
the camera's target to match the rotation.
|
||||
\param rotation New rotation of the node in degrees. */
|
||||
virtual void setRotation(const core::vector3df& rotation) _IRR_OVERRIDE_ =0;
|
||||
void setRotation(const core::vector3df& rotation) override =0;
|
||||
|
||||
//! Gets the current look at target of the camera
|
||||
/** \return The current look at target of the camera, in world co-ordinates */
|
||||
|
@ -160,6 +160,9 @@ namespace gui
|
||||
\param rect: A pointer to an reference rectangle or 0 to disable the reference rectangle.*/
|
||||
virtual void setReferenceRect(core::rect<s32>* rect=0) = 0;
|
||||
|
||||
//! Internally fixes the mouse position, and reports relative mouse movement compared to the old position
|
||||
/** Specific to SDL */
|
||||
virtual void setRelativeMode(bool relative) {};
|
||||
|
||||
//! Sets the active cursor icon
|
||||
/** Setting cursor icons is so far only supported on Win32 and Linux */
|
||||
|
@ -280,18 +280,6 @@ namespace irr
|
||||
//! A file open dialog has been closed without choosing a file
|
||||
EGET_FILE_CHOOSE_DIALOG_CANCELLED,
|
||||
|
||||
//! 'Yes' was clicked on a messagebox
|
||||
EGET_MESSAGEBOX_YES,
|
||||
|
||||
//! 'No' was clicked on a messagebox
|
||||
EGET_MESSAGEBOX_NO,
|
||||
|
||||
//! 'OK' was clicked on a messagebox
|
||||
EGET_MESSAGEBOX_OK,
|
||||
|
||||
//! 'Cancel' was clicked on a messagebox
|
||||
EGET_MESSAGEBOX_CANCEL,
|
||||
|
||||
//! In an editbox 'ENTER' was pressed
|
||||
EGET_EDITBOX_ENTER,
|
||||
|
||||
@ -304,36 +292,14 @@ namespace irr
|
||||
//! The tab was changed in an tab control
|
||||
EGET_TAB_CHANGED,
|
||||
|
||||
//! A menu item was selected in a (context) menu
|
||||
EGET_MENU_ITEM_SELECTED,
|
||||
|
||||
//! The selection in a combo box has been changed
|
||||
EGET_COMBO_BOX_CHANGED,
|
||||
|
||||
//! The value of a spin box has changed
|
||||
EGET_SPINBOX_CHANGED,
|
||||
|
||||
//! A table has changed
|
||||
EGET_TABLE_CHANGED,
|
||||
EGET_TABLE_HEADER_CHANGED,
|
||||
EGET_TABLE_SELECTED_AGAIN,
|
||||
|
||||
//! A tree view node lost selection. See IGUITreeView::getLastEventNode().
|
||||
EGET_TREEVIEW_NODE_DESELECT,
|
||||
|
||||
//! A tree view node was selected. See IGUITreeView::getLastEventNode().
|
||||
EGET_TREEVIEW_NODE_SELECT,
|
||||
|
||||
//! A tree view node was expanded. See IGUITreeView::getLastEventNode().
|
||||
EGET_TREEVIEW_NODE_EXPAND,
|
||||
|
||||
//! A tree view node was collapsed. See IGUITreeView::getLastEventNode().
|
||||
EGET_TREEVIEW_NODE_COLLAPSE,
|
||||
|
||||
//! deprecated - use EGET_TREEVIEW_NODE_COLLAPSE instead. This
|
||||
//! may be removed by Irrlicht 1.9
|
||||
EGET_TREEVIEW_NODE_COLLAPS = EGET_TREEVIEW_NODE_COLLAPSE,
|
||||
|
||||
//! No real event. Just for convenience to get number of events
|
||||
EGET_COUNT
|
||||
};
|
||||
|
@ -1,37 +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 __I_GUI_COLOR_SELECT_DIALOG_H_INCLUDED__
|
||||
#define __I_GUI_COLOR_SELECT_DIALOG_H_INCLUDED__
|
||||
|
||||
#include "IGUIElement.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
|
||||
//! Standard color chooser dialog.
|
||||
class IGUIColorSelectDialog : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIColorSelectDialog(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_COLOR_SELECT_DIALOG, environment, parent, id, rectangle) {}
|
||||
|
||||
//! get chosen color as usual SColor struct
|
||||
virtual video::SColor getColor() =0;
|
||||
|
||||
//! get chosen color as HSL values
|
||||
virtual video::SColorHSL getColorHSL() =0;
|
||||
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
@ -1,162 +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 __I_GUI_CONTEXT_MENU_H_INCLUDED__
|
||||
#define __I_GUI_CONTEXT_MENU_H_INCLUDED__
|
||||
|
||||
#include "IGUIElement.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
//! Close behavior.
|
||||
//! Default is ECMC_REMOVE
|
||||
enum ECONTEXT_MENU_CLOSE
|
||||
{
|
||||
//! do nothing - menu stays open
|
||||
ECMC_IGNORE = 0,
|
||||
|
||||
//! remove the gui element
|
||||
ECMC_REMOVE = 1,
|
||||
|
||||
//! call setVisible(false)
|
||||
ECMC_HIDE = 2
|
||||
|
||||
// note to implementers - this is planned as bitset, so continue with 4 if you need to add further flags.
|
||||
};
|
||||
|
||||
//! GUI Context menu interface.
|
||||
/** \par This element can create the following events of type EGUI_EVENT_TYPE:
|
||||
\li EGET_ELEMENT_CLOSED
|
||||
\li EGET_MENU_ITEM_SELECTED
|
||||
*/
|
||||
class IGUIContextMenu : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIContextMenu(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_CONTEXT_MENU, environment, parent, id, rectangle) {}
|
||||
|
||||
//! set behavior when menus are closed
|
||||
virtual void setCloseHandling(ECONTEXT_MENU_CLOSE onClose) = 0;
|
||||
|
||||
//! get current behavior when the menu will be closed
|
||||
virtual ECONTEXT_MENU_CLOSE getCloseHandling() const = 0;
|
||||
|
||||
//! Get amount of menu items
|
||||
virtual u32 getItemCount() const = 0;
|
||||
|
||||
//! Adds a menu item.
|
||||
/** \param text: Text of menu item. Set this to 0 to create
|
||||
an separator instead of a real item, which is the same like
|
||||
calling addSeparator();
|
||||
\param commandId: Command id of menu item, a simple id you may
|
||||
set to whatever you want.
|
||||
\param enabled: Specifies if the menu item should be enabled.
|
||||
\param hasSubMenu: Set this to true if there should be a submenu
|
||||
at this item. You can access this submenu via getSubMenu().
|
||||
\param checked: Specifies if the menu item should be initially checked.
|
||||
\param autoChecking: Specifies if the item should be checked by clicking
|
||||
\return Returns the index of the new item */
|
||||
virtual u32 addItem(const wchar_t* text, s32 commandId=-1, bool enabled=true,
|
||||
bool hasSubMenu=false, bool checked=false, bool autoChecking=false) = 0;
|
||||
|
||||
//! Insert a menu item at specified position.
|
||||
/** \param idx: Position to insert the new element,
|
||||
should be smaller than itemcount otherwise the item is added to the end.
|
||||
\param text: Text of menu item. Set this to 0 to create
|
||||
an separator instead of a real item, which is the same like
|
||||
calling addSeparator();
|
||||
\param commandId: Command id of menu item, a simple id you may
|
||||
set to whatever you want.
|
||||
\param enabled: Specifies if the menu item should be enabled.
|
||||
\param hasSubMenu: Set this to true if there should be a submenu
|
||||
at this item. You can access this submenu via getSubMenu().
|
||||
\param checked: Specifies if the menu item should be initially checked.
|
||||
\param autoChecking: Specifies if the item should be checked by clicking
|
||||
\return Returns the index of the new item */
|
||||
virtual u32 insertItem(u32 idx, const wchar_t* text, s32 commandId=-1, bool enabled=true,
|
||||
bool hasSubMenu=false, bool checked=false, bool autoChecking=false) = 0;
|
||||
|
||||
//! Find an item by its CommandID
|
||||
/**
|
||||
\param commandId: We are looking for the first item which has this commandID
|
||||
\param idxStartSearch: Start searching from this index.
|
||||
\return Returns the index of the item when found or otherwise -1. */
|
||||
virtual s32 findItemWithCommandId(s32 commandId, u32 idxStartSearch=0) const = 0;
|
||||
|
||||
//! Adds a separator item to the menu
|
||||
virtual void addSeparator() = 0;
|
||||
|
||||
//! Get text of the menu item.
|
||||
/** \param idx: Zero based index of the menu item */
|
||||
virtual const wchar_t* getItemText(u32 idx) const = 0;
|
||||
|
||||
//! Sets text of the menu item.
|
||||
/** \param idx: Zero based index of the menu item
|
||||
\param text: New text of the item. */
|
||||
virtual void setItemText(u32 idx, const wchar_t* text) = 0;
|
||||
|
||||
//! Check if a menu item is enabled
|
||||
/** \param idx: Zero based index of the menu item */
|
||||
virtual bool isItemEnabled(u32 idx) const = 0;
|
||||
|
||||
//! Sets if the menu item should be enabled.
|
||||
/** \param idx: Zero based index of the menu item
|
||||
\param enabled: True if it is enabled, otherwise false. */
|
||||
virtual void setItemEnabled(u32 idx, bool enabled) = 0;
|
||||
|
||||
//! Sets if the menu item should be checked.
|
||||
/** \param idx: Zero based index of the menu item
|
||||
\param enabled: True if it is enabled, otherwise false. */
|
||||
virtual void setItemChecked(u32 idx, bool enabled) = 0;
|
||||
|
||||
//! Check if a menu item is checked
|
||||
/** \param idx: Zero based index of the menu item */
|
||||
virtual bool isItemChecked(u32 idx) const = 0;
|
||||
|
||||
//! Removes a menu item
|
||||
/** \param idx: Zero based index of the menu item */
|
||||
virtual void removeItem(u32 idx) = 0;
|
||||
|
||||
//! Removes all menu items
|
||||
virtual void removeAllItems() = 0;
|
||||
|
||||
//! Get the selected item in the menu
|
||||
/** \return Index of the selected item, -1 if none selected. */
|
||||
virtual s32 getSelectedItem() const = 0;
|
||||
|
||||
//! Get the command id of a menu item
|
||||
/** \param idx: Zero based index of the menu item */
|
||||
virtual s32 getItemCommandId(u32 idx) const = 0;
|
||||
|
||||
//! Sets the command id of a menu item
|
||||
/** \param idx: Zero based index of the menu item
|
||||
\param id: Command id of menu item, a simple id you may
|
||||
set to whatever you want. */
|
||||
virtual void setItemCommandId(u32 idx, s32 id) = 0;
|
||||
|
||||
//! Get a pointer to the submenu of an item.
|
||||
/** 0 is returned if there is no submenu
|
||||
\param idx: Zero based index of the menu item
|
||||
\return Returns a pointer to the submenu of an item. */
|
||||
virtual IGUIContextMenu* getSubMenu(u32 idx) const = 0;
|
||||
|
||||
//! should the element change the checked status on clicking
|
||||
virtual void setItemAutoChecking(u32 idx, bool autoChecking) = 0;
|
||||
|
||||
//! does the element change the checked status on clicking
|
||||
virtual bool getItemAutoChecking(u32 idx) const = 0;
|
||||
|
||||
//! When an eventparent is set it receives events instead of the usual parent element
|
||||
virtual void setEventParent(IGUIElement *parent) = 0;
|
||||
};
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
@ -545,7 +545,7 @@ public:
|
||||
|
||||
|
||||
//! Called if an event happened.
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_
|
||||
bool OnEvent(const SEvent& event) override
|
||||
{
|
||||
return Parent ? Parent->OnEvent(event) : false;
|
||||
}
|
||||
@ -743,8 +743,7 @@ public:
|
||||
|
||||
|
||||
//! Returns the type name of the gui element.
|
||||
/** This is needed serializing elements. For serializing your own elements, override this function
|
||||
and return your own type name which is created by your IGUIElementFactory */
|
||||
/** This is needed serializing elements. */
|
||||
virtual const c8* getTypeName() const
|
||||
{
|
||||
return GUIElementTypeNames[Type];
|
||||
|
@ -1,66 +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 __I_GUI_ELEMENT_FACTORY_H_INCLUDED__
|
||||
#define __I_GUI_ELEMENT_FACTORY_H_INCLUDED__
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "EGUIElementTypes.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
||||
namespace gui
|
||||
{
|
||||
class IGUIElement;
|
||||
|
||||
//! Interface making it possible to dynamically create GUI elements
|
||||
/** To be able to add custom elements to Irrlicht and to make it possible for the
|
||||
scene manager to save and load them, simply implement this interface and register it
|
||||
in your gui environment via IGUIEnvironment::registerGUIElementFactory.
|
||||
Note: When implementing your own element factory, don't call IGUIEnvironment::grab() to
|
||||
increase the reference counter of the environment. This is not necessary because the
|
||||
it will grab() the factory anyway, and otherwise cyclic references will be created.
|
||||
*/
|
||||
class IGUIElementFactory : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! adds an element to the gui environment based on its type id
|
||||
/** \param type: Type of the element to add.
|
||||
\param parent: Parent scene node of the new element, can be null to add to the root.
|
||||
\return Pointer to the new element or null if not successful. */
|
||||
virtual IGUIElement* addGUIElement(EGUI_ELEMENT_TYPE type, IGUIElement* parent=0) = 0;
|
||||
|
||||
//! adds a GUI element to the GUI Environment based on its type name
|
||||
/** \param typeName: Type name of the element to add.
|
||||
\param parent: Parent scene node of the new element, can be null to add it to the root.
|
||||
\return Pointer to the new element or null if not successful. */
|
||||
virtual IGUIElement* addGUIElement(const c8* typeName, IGUIElement* parent=0) = 0;
|
||||
|
||||
//! Get amount of GUI element types this factory is able to create
|
||||
virtual s32 getCreatableGUIElementTypeCount() const = 0;
|
||||
|
||||
//! Get type of a creatable element type
|
||||
/** \param idx: Index of the element type in this factory. Must be a value between 0 and
|
||||
getCreatableGUIElementTypeCount() */
|
||||
virtual EGUI_ELEMENT_TYPE getCreateableGUIElementType(s32 idx) const = 0;
|
||||
|
||||
//! Get type name of a creatable GUI element type by index
|
||||
/** \param idx: Index of the type in this factory. Must be a value between 0 and
|
||||
getCreatableGUIElementTypeCount() */
|
||||
virtual const c8* getCreateableGUIElementTypeName(s32 idx) const = 0;
|
||||
|
||||
//! returns type name of a creatable GUI element
|
||||
/** \param type: Type of GUI element.
|
||||
\return Name of the type if this factory can create the type, otherwise 0. */
|
||||
virtual const c8* getCreateableGUIElementTypeName(EGUI_ELEMENT_TYPE type) const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif // __I_GUI_ELEMENT_FACTORY_H_INCLUDED__
|
||||
|
@ -8,7 +8,6 @@
|
||||
#include "IReferenceCounted.h"
|
||||
#include "IGUISkin.h"
|
||||
#include "rect.h"
|
||||
#include "EMessageBoxFlags.h"
|
||||
#include "EFocusFlags.h"
|
||||
#include "IEventReceiver.h"
|
||||
#include "path.h"
|
||||
@ -38,27 +37,17 @@ class IGUIFont;
|
||||
class IGUISpriteBank;
|
||||
class IGUIScrollBar;
|
||||
class IGUIImage;
|
||||
class IGUIMeshViewer;
|
||||
class IGUICheckBox;
|
||||
class IGUIListBox;
|
||||
class IGUITreeView;
|
||||
class IGUIImageList;
|
||||
class IGUIFileOpenDialog;
|
||||
class IGUIColorSelectDialog;
|
||||
class IGUIInOutFader;
|
||||
class IGUIStaticText;
|
||||
class IGUIEditBox;
|
||||
class IGUISpinBox;
|
||||
class IGUITabControl;
|
||||
class IGUITab;
|
||||
class IGUITable;
|
||||
class IGUIContextMenu;
|
||||
class IGUIComboBox;
|
||||
class IGUIToolBar;
|
||||
class IGUIButton;
|
||||
class IGUIWindow;
|
||||
class IGUIProfiler;
|
||||
class IGUIElementFactory;
|
||||
|
||||
//! GUI Environment. Used as factory and manager of all other GUI elements.
|
||||
/** \par This element can create the following events of type EGUI_EVENT_TYPE (which are passed on to focused sub-elements):
|
||||
@ -235,55 +224,6 @@ public:
|
||||
virtual IGUIButton* addButton(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0, const wchar_t* tooltiptext = 0) = 0;
|
||||
|
||||
//! Adds an empty window element.
|
||||
/** \param rectangle Rectangle specifying the borders of the window.
|
||||
\param modal Defines if the dialog is modal. This means, that all other
|
||||
gui elements which were created before the window cannot be used until
|
||||
it is removed.
|
||||
\param text Text displayed as the window title.
|
||||
\param parent Parent gui element of the window.
|
||||
\param id Id with which the gui element can be identified.
|
||||
\return Pointer to the created window. Returns 0 if an error occurred.
|
||||
This pointer should not be dropped. See IReferenceCounted::drop() for
|
||||
more information. */
|
||||
virtual IGUIWindow* addWindow(const core::rect<s32>& rectangle, bool modal = false,
|
||||
const wchar_t* text=0, IGUIElement* parent=0, s32 id=-1) = 0;
|
||||
|
||||
//! Adds a modal screen.
|
||||
/** Input focus stays with children of the modal screen.
|
||||
If you have some window x which should keep the input focus you
|
||||
do something like: addModalScreen()->addChild(x). And x will then get the focus
|
||||
and not lose it anymore.
|
||||
The modal screen removes itself when it no longer has any children.
|
||||
Note that it usually works badly to pass the modal screen already as parent when creating
|
||||
a new element. It's better to add that new element later to the modal screen with addChild.
|
||||
\param parent Parent gui element of the modal.
|
||||
\param blinkMode Bitset of when to blink (can be combined)
|
||||
0 = never
|
||||
1 = focus changes
|
||||
2 = Left mouse button pressed down
|
||||
\return Pointer to the created modal. Returns 0 if an error occurred.
|
||||
This pointer should not be dropped. See IReferenceCounted::drop() for
|
||||
more information. */
|
||||
virtual IGUIElement* addModalScreen(IGUIElement* parent, int blinkMode = 3) = 0;
|
||||
|
||||
//! Adds a message box.
|
||||
/** \param caption Text to be displayed the title of the message box.
|
||||
\param text Text to be displayed in the body of the message box.
|
||||
\param modal Defines if the dialog is modal. This means, that all other
|
||||
gui elements which were created before the message box cannot be used
|
||||
until this messagebox is removed.
|
||||
\param flags Flags specifying the layout of the message box using ::EMESSAGE_BOX_FLAG.
|
||||
Create a message box with an OK and CANCEL button for example with (EMBF_OK | EMBF_CANCEL).
|
||||
\param parent Parent gui element of the message box.
|
||||
\param id Id with which the gui element can be identified.
|
||||
\param image Optional texture which will be displayed beside the text as an image
|
||||
\return Pointer to the created message box. Returns 0 if an error
|
||||
occurred. This pointer should not be dropped. See
|
||||
IReferenceCounted::drop() for more information. */
|
||||
virtual IGUIWindow* addMessageBox(const wchar_t* caption, const wchar_t* text=0,
|
||||
bool modal = true, s32 flags = EMBF_OK, IGUIElement* parent=0, s32 id=-1, video::ITexture* image=0) = 0;
|
||||
|
||||
//! Adds a scrollbar.
|
||||
/** \param horizontal Specifies if the scroll bar is drawn horizontal
|
||||
or vertical.
|
||||
@ -348,31 +288,6 @@ public:
|
||||
virtual IGUIListBox* addListBox(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) = 0;
|
||||
|
||||
//! Adds a tree view element.
|
||||
/** \param rectangle Position and dimension of list box.
|
||||
\param parent Parent gui element of the list box.
|
||||
\param id Id to identify the gui element.
|
||||
\param drawBackground Flag whether the background should be drawn.
|
||||
\param scrollBarVertical Flag whether a vertical scrollbar should be used
|
||||
\param scrollBarHorizontal Flag whether a horizontal scrollbar should be used
|
||||
\return Pointer to the created list box. Returns 0 if an error occurred.
|
||||
This pointer should not be dropped. See IReferenceCounted::drop() for
|
||||
more information. */
|
||||
virtual IGUITreeView* addTreeView(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1, bool drawBackground=false,
|
||||
bool scrollBarVertical = true, bool scrollBarHorizontal = false) = 0;
|
||||
|
||||
//! Adds a mesh viewer. Not 100% implemented yet.
|
||||
/** \param rectangle Rectangle specifying the borders of the mesh viewer.
|
||||
\param parent Parent gui element of the mesh viewer.
|
||||
\param id Id to identify the gui element.
|
||||
\param text Title text of the mesh viewer.
|
||||
\return Pointer to the created mesh viewer. Returns 0 if an error
|
||||
occurred. This pointer should not be dropped. See
|
||||
IReferenceCounted::drop() for more information. */
|
||||
virtual IGUIMeshViewer* addMeshViewer(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) = 0;
|
||||
|
||||
//! Adds a file open dialog.
|
||||
/** \param title Text to be displayed as the title of the dialog.
|
||||
\param modal Defines if the dialog is modal. This means, that all other
|
||||
@ -391,19 +306,6 @@ public:
|
||||
bool modal=true, IGUIElement* parent=0, s32 id=-1,
|
||||
bool restoreCWD=false, io::path::char_type* startDir=0) = 0;
|
||||
|
||||
//! Adds a color select dialog.
|
||||
/** \param title The title of the dialog.
|
||||
\param modal Defines if the dialog is modal. This means, that all other
|
||||
gui elements which were created before the dialog cannot be used
|
||||
until it is removed.
|
||||
\param parent The parent of the dialog.
|
||||
\param id The ID of the dialog.
|
||||
\return Pointer to the created file open dialog. Returns 0 if an error
|
||||
occurred. This pointer should not be dropped. See
|
||||
IReferenceCounted::drop() for more information. */
|
||||
virtual IGUIColorSelectDialog* addColorSelectDialog(const wchar_t* title = 0,
|
||||
bool modal=true, IGUIElement* parent=0, s32 id=-1) = 0;
|
||||
|
||||
//! Adds a static text.
|
||||
/** \param text Text to be displayed. Can be altered after creation by SetText().
|
||||
\param rectangle Rectangle specifying the borders of the static text
|
||||
@ -438,30 +340,6 @@ public:
|
||||
virtual IGUIEditBox* addEditBox(const wchar_t* text, const core::rect<s32>& rectangle,
|
||||
bool border=true, IGUIElement* parent=0, s32 id=-1) = 0;
|
||||
|
||||
//! Adds a spin box.
|
||||
/** An edit box with up and down buttons
|
||||
\param text Text to be displayed. Can be altered after creation by setText().
|
||||
\param rectangle Rectangle specifying the borders of the spin box.
|
||||
\param border Set to true if the spin box should have a 3d border.
|
||||
\param parent Parent item of the element, e.g. a window.
|
||||
Set it to 0 to place the spin box directly in the environment.
|
||||
\param id The ID of the element.
|
||||
\return Pointer to the created spin box. Returns 0 if an error occurred.
|
||||
This pointer should not be dropped. See IReferenceCounted::drop() for
|
||||
more information. */
|
||||
virtual IGUISpinBox* addSpinBox(const wchar_t* text, const core::rect<s32>& rectangle,
|
||||
bool border=true,IGUIElement* parent=0, s32 id=-1) = 0;
|
||||
|
||||
//! Adds an element for fading in or out.
|
||||
/** \param rectangle Rectangle specifying the borders of the fader.
|
||||
If the pointer is NULL, the whole screen is used.
|
||||
\param parent Parent item of the element, e.g. a window.
|
||||
\param id An identifier for the fader.
|
||||
\return Pointer to the created in-out-fader. Returns 0 if an error
|
||||
occurred. This pointer should not be dropped. See
|
||||
IReferenceCounted::drop() for more information. */
|
||||
virtual IGUIInOutFader* addInOutFader(const core::rect<s32>* rectangle=0, IGUIElement* parent=0, s32 id=-1) = 0;
|
||||
|
||||
//! Adds a tab control to the environment.
|
||||
/** \param rectangle Rectangle specifying the borders of the tab control.
|
||||
\param parent Parent item of the element, e.g. a window.
|
||||
@ -493,40 +371,6 @@ public:
|
||||
virtual IGUITab* addTab(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1) = 0;
|
||||
|
||||
//! Adds a context menu to the environment.
|
||||
/** \param rectangle Rectangle specifying the borders of the menu.
|
||||
Note that the menu is resizing itself based on what items you add.
|
||||
\param parent Parent item of the element, e.g. a window.
|
||||
Set it to 0 to place the menu directly in the environment.
|
||||
\param id An identifier for the menu.
|
||||
\return Pointer to the created context menu. Returns 0 if an
|
||||
error occurred. This pointer should not be dropped. See
|
||||
IReferenceCounted::drop() for more information. */
|
||||
virtual IGUIContextMenu* addContextMenu(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1) = 0;
|
||||
|
||||
//! Adds a menu to the environment.
|
||||
/** This is like the menu you can find on top of most windows in modern
|
||||
graphical user interfaces.
|
||||
\param parent Parent item of the element, e.g. a window.
|
||||
Set it to 0 to place the menu directly in the environment.
|
||||
\param id An identifier for the menu.
|
||||
\return Pointer to the created menu. Returns 0 if an
|
||||
error occurred. This pointer should not be dropped. See
|
||||
IReferenceCounted::drop() for more information. */
|
||||
virtual IGUIContextMenu* addMenu(IGUIElement* parent=0, s32 id=-1) = 0;
|
||||
|
||||
//! Adds a toolbar to the environment.
|
||||
/** It is like a menu that is always placed on top of its parent, and
|
||||
contains buttons.
|
||||
\param parent Parent item of the element, e.g. a window.
|
||||
Set it to 0 to place the tool bar directly in the environment.
|
||||
\param id An identifier for the tool bar.
|
||||
\return Pointer to the created tool bar. Returns 0 if an
|
||||
error occurred. This pointer should not be dropped. See
|
||||
IReferenceCounted::drop() for more information. */
|
||||
virtual IGUIToolBar* addToolBar(IGUIElement* parent=0, s32 id=-1) = 0;
|
||||
|
||||
//! Adds a combo box to the environment.
|
||||
/** \param rectangle Rectangle specifying the borders of the combo box.
|
||||
\param parent Parent item of the element, e.g. a window.
|
||||
@ -538,86 +382,6 @@ public:
|
||||
virtual IGUIComboBox* addComboBox(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1) = 0;
|
||||
|
||||
//! Adds a table to the environment
|
||||
/** \param rectangle Rectangle specifying the borders of the table.
|
||||
\param parent Parent item of the element, e.g. a window. Set it to 0
|
||||
to place the element directly in the environment.
|
||||
\param id An identifier for the table.
|
||||
\param drawBackground Flag whether the background should be drawn.
|
||||
\return Pointer to the created table. Returns 0 if an error occurred.
|
||||
This pointer should not be dropped. See IReferenceCounted::drop() for
|
||||
more information. */
|
||||
virtual IGUITable* addTable(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) =0;
|
||||
|
||||
//! Adds an element to display the information from the Irrlicht profiler
|
||||
/** \param rectangle Rectangle specifying the borders of the element.
|
||||
\param parent Parent of the element. When 0 the environment itself will
|
||||
be the parent.
|
||||
\param id An identifier for the element. */
|
||||
virtual IGUIProfiler* addProfilerDisplay(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1) = 0;
|
||||
|
||||
//! Get the default element factory which can create all built-in elements
|
||||
/** \return Pointer to the factory.
|
||||
This pointer should not be dropped. See IReferenceCounted::drop() for
|
||||
more information. */
|
||||
virtual IGUIElementFactory* getDefaultGUIElementFactory() const = 0;
|
||||
|
||||
//! Adds an element factory to the gui environment.
|
||||
/** Use this to extend the gui environment with new element types which
|
||||
it should be able to create automatically, for example when loading
|
||||
data from xml files.
|
||||
\param factoryToAdd Pointer to new factory. */
|
||||
virtual void registerGUIElementFactory(IGUIElementFactory* factoryToAdd) = 0;
|
||||
|
||||
//! Get amount of registered gui element factories.
|
||||
/** \return Amount of registered gui element factories. */
|
||||
virtual u32 getRegisteredGUIElementFactoryCount() const = 0;
|
||||
|
||||
//! Get a gui element factory by index
|
||||
/** \param index Index of the factory.
|
||||
\return Factory at given index, or 0 if no such factory exists. */
|
||||
virtual IGUIElementFactory* getGUIElementFactory(u32 index) const = 0;
|
||||
|
||||
//! Adds a GUI element by its name
|
||||
/** Each factory is checked if it can create an element of the given
|
||||
name. The first match will be created.
|
||||
\param elementName Name of the element to be created.
|
||||
\param parent Parent of the new element, if not 0.
|
||||
\return New GUI element, or 0 if no such element exists. */
|
||||
virtual IGUIElement* addGUIElement(const c8* elementName, IGUIElement* parent=0) = 0;
|
||||
|
||||
//! Saves the current gui into a file.
|
||||
/** \param filename Name of the file.
|
||||
\param start The GUIElement to start with. Root if 0.
|
||||
\return True if saving succeeded, else false. */
|
||||
virtual bool saveGUI(const io::path& filename, IGUIElement* start=0) = 0;
|
||||
|
||||
//! Saves the current gui into a file.
|
||||
/** \param file The file to write to.
|
||||
\param start The GUIElement to start with. Root if 0.
|
||||
\return True if saving succeeded, else false. */
|
||||
virtual bool saveGUI(io::IWriteFile* file, IGUIElement* start=0) = 0;
|
||||
|
||||
//! Loads the gui. Note that the current gui is not cleared before.
|
||||
/** When a parent is set the elements will be added below the parent, the parent itself does not deserialize.
|
||||
When the file contains skin-settings from the gui-environment those are always serialized into the
|
||||
guienvironment independent of the parent setting.
|
||||
\param filename Name of the file.
|
||||
\param parent Parent for the loaded GUI, root if 0.
|
||||
\return True if loading succeeded, else false. */
|
||||
virtual bool loadGUI(const io::path& filename, IGUIElement* parent=0) = 0;
|
||||
|
||||
//! Loads the gui. Note that the current gui is not cleared before.
|
||||
/** When a parent is set the elements will be added below the parent, the parent itself does not deserialize.
|
||||
When the file contains skin-settings from the gui-environment those are always serialized into the
|
||||
guienvironment independent of the parent setting.
|
||||
\param file The file to load from.
|
||||
\param parent Parent for the loaded GUI, root if 0.
|
||||
\return True if loading succeeded, else false. */
|
||||
virtual bool loadGUI(io::IReadFile* file, IGUIElement* parent=0) = 0;
|
||||
|
||||
//! Find the next element which would be selected when pressing the tab-key
|
||||
/** If you set the focus for the result you can manually force focus-changes like they
|
||||
would happen otherwise by the tab-keys.
|
||||
|
@ -19,7 +19,7 @@ class IGUIFontBitmap : public IGUIFont
|
||||
public:
|
||||
|
||||
//! Returns the type of this font
|
||||
virtual EGUI_FONT_TYPE getType() const _IRR_OVERRIDE_ { return EGFT_BITMAP; }
|
||||
EGUI_FONT_TYPE getType() const override { return EGFT_BITMAP; }
|
||||
|
||||
//! returns the parsed Symbol Information
|
||||
virtual IGUISpriteBank* getSpriteBank() const = 0;
|
||||
@ -36,7 +36,7 @@ public:
|
||||
kerning value. For example, EGFT_BITMAP will add the right kerning value of previousLetter to the
|
||||
left side kerning value of thisLetter, then add the global value.
|
||||
*/
|
||||
virtual s32 getKerningWidth(const wchar_t* thisLetter=0, const wchar_t* previousLetter=0) const _IRR_OVERRIDE_ = 0;
|
||||
s32 getKerningWidth(const wchar_t* thisLetter=0, const wchar_t* previousLetter=0) const override = 0;
|
||||
};
|
||||
|
||||
} // end namespace gui
|
||||
|
@ -1,67 +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 __I_GUI_IN_OUT_FADER_H_INCLUDED__
|
||||
#define __I_GUI_IN_OUT_FADER_H_INCLUDED__
|
||||
|
||||
#include "IGUIElement.h"
|
||||
#include "SColor.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
|
||||
//! Element for fading out or in
|
||||
/** Here is a small example on how the class is used. In this example we fade
|
||||
in from a total red screen in the beginning. As you can see, the fader is not
|
||||
only useful for dramatic in and out fading, but also to show that the player
|
||||
is hit in a first person shooter game for example.
|
||||
\code
|
||||
gui::IGUIInOutFader* fader = device->getGUIEnvironment()->addInOutFader();
|
||||
fader->setColor(video::SColor(0,255,0,0));
|
||||
fader->fadeIn(4000);
|
||||
\endcode
|
||||
*/
|
||||
class IGUIInOutFader : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIInOutFader(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_IN_OUT_FADER, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Gets the color to fade out to or to fade in from.
|
||||
virtual video::SColor getColor() const = 0;
|
||||
|
||||
//! Sets the color to fade out to or to fade in from.
|
||||
/** \param color: Color to where it is faded out od from it is faded in. */
|
||||
virtual void setColor(video::SColor color) = 0;
|
||||
virtual void setColor(video::SColor source, video::SColor dest) = 0;
|
||||
|
||||
//! Starts the fade in process.
|
||||
/** In the beginning the whole rect is drawn by the set color
|
||||
(black by default) and at the end of the overgiven time the
|
||||
color has faded out.
|
||||
\param time: Time specifying how long it should need to fade in,
|
||||
in milliseconds. */
|
||||
virtual void fadeIn(u32 time) = 0;
|
||||
|
||||
//! Starts the fade out process.
|
||||
/** In the beginning everything is visible, and at the end of
|
||||
the time only the set color (black by the fault) will be drawn.
|
||||
\param time: Time specifying how long it should need to fade out,
|
||||
in milliseconds. */
|
||||
virtual void fadeOut(u32 time) = 0;
|
||||
|
||||
//! Returns if the fade in or out process is done.
|
||||
virtual bool isReady() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
@ -1,53 +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 __I_GUI_MESH_VIEWER_H_INCLUDED__
|
||||
#define __I_GUI_MESH_VIEWER_H_INCLUDED__
|
||||
|
||||
#include "IGUIElement.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
||||
namespace video
|
||||
{
|
||||
class SMaterial;
|
||||
} // end namespace video
|
||||
|
||||
namespace scene
|
||||
{
|
||||
class IAnimatedMesh;
|
||||
} // end namespace scene
|
||||
|
||||
namespace gui
|
||||
{
|
||||
|
||||
//! 3d mesh viewing GUI element.
|
||||
class IGUIMeshViewer : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIMeshViewer(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_MESH_VIEWER, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Sets the mesh to be shown
|
||||
virtual void setMesh(scene::IAnimatedMesh* mesh) = 0;
|
||||
|
||||
//! Gets the displayed mesh
|
||||
virtual scene::IAnimatedMesh* getMesh() const = 0;
|
||||
|
||||
//! Sets the material
|
||||
virtual void setMaterial(const video::SMaterial& material) = 0;
|
||||
|
||||
//! Gets the material
|
||||
virtual const video::SMaterial& getMaterial() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
@ -1,82 +0,0 @@
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
// Written by Michael Zeilfelder
|
||||
|
||||
#ifndef I_GUI_PROFILER_H_INCLUDED__
|
||||
#define I_GUI_PROFILER_H_INCLUDED__
|
||||
|
||||
#include "IGUIElement.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
class IProfiler;
|
||||
|
||||
namespace gui
|
||||
{
|
||||
class IGUIFont;
|
||||
|
||||
//! Element to display profiler information
|
||||
class IGUIProfiler : public IGUIElement
|
||||
{
|
||||
public:
|
||||
//! constructor
|
||||
/** \param profiler You can pass a custom profiler, but typically you can pass 0 in which cases it takes the global profiler from Irrlicht */
|
||||
IGUIProfiler(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle, IProfiler* profiler = NULL)
|
||||
: IGUIElement(EGUIET_PROFILER, environment, parent, id, rectangle)
|
||||
{}
|
||||
|
||||
//! Show first page of profile data
|
||||
/** \param includeOverview When true show the group-overview page, when false show the profile data of the first group */
|
||||
virtual void firstPage(bool includeOverview=true) = 0;
|
||||
|
||||
//! Show next page of profile data
|
||||
/** \param includeOverview Include the group-overview page */
|
||||
virtual void nextPage(bool includeOverview=true) = 0;
|
||||
|
||||
//! Show previous page of profile data
|
||||
/** \param includeOverview Include the group-overview page */
|
||||
virtual void previousPage(bool includeOverview=true) = 0;
|
||||
|
||||
//! Try to show as many group-pages together as possible instead of showing at most one group per page.
|
||||
/** \param groupsTogether When true show several groups on one page, when false show max. one group per page. Default is false. */
|
||||
virtual void setShowGroupsTogether(bool groupsTogether) = 0;
|
||||
|
||||
//! Can several groups be displayed per page?
|
||||
virtual bool getShowGroupsTogether() const = 0;
|
||||
|
||||
//! Sets another skin independent font.
|
||||
/** If this is set to zero, the button uses the font of the skin.
|
||||
\param font: New font to set. */
|
||||
virtual void setOverrideFont(IGUIFont* font=0) = 0;
|
||||
|
||||
//! Gets the override font (if any)
|
||||
/** \return The override font (may be 0) */
|
||||
virtual IGUIFont* getOverrideFont(void) const = 0;
|
||||
|
||||
//! Get the font which is used right now for drawing
|
||||
/** Currently this is the override font when one is set and the
|
||||
font of the active skin otherwise */
|
||||
virtual IGUIFont* getActiveFont() const = 0;
|
||||
|
||||
//! Sets whether to draw the background. By default disabled,
|
||||
virtual void setDrawBackground(bool draw) = 0;
|
||||
|
||||
//! Checks if background drawing is enabled
|
||||
/** \return true if background drawing is enabled, false otherwise */
|
||||
virtual bool isDrawBackgroundEnabled() const = 0;
|
||||
|
||||
//! Allows to freeze updates which makes it easier to read the numbers
|
||||
/** Numbers are updated once when you switch pages. */
|
||||
virtual void setFrozen(bool freeze) = 0;
|
||||
|
||||
//! Are updates currently frozen
|
||||
virtual bool getFrozen() const = 0;
|
||||
|
||||
//! Filters prevents data that doesn't achieve the conditions from being displayed
|
||||
virtual void setFilters(irr::u32 minCalls = 0, irr::u32 minTimeSum = 0, irr::f32 minTimeAverage = 0.f, irr::u32 minTimeMax = 0) = 0;
|
||||
};
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
@ -1,92 +0,0 @@
|
||||
// Copyright (C) 2006-2012 Michael Zeilfelder
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_SPIN_BOX_H_INCLUDED__
|
||||
#define __I_GUI_SPIN_BOX_H_INCLUDED__
|
||||
|
||||
#include "IGUIElement.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
class IGUIEditBox;
|
||||
|
||||
//! Enumeration bitflag for when to validate the text typed into the spinbox
|
||||
//! Default used by Irrlicht is: (EGUI_SBV_ENTER|EGUI_SBV_LOSE_FOCUS)
|
||||
enum EGUI_SPINBOX_VALIDATION
|
||||
{
|
||||
//! Does not validate typed text, probably a bad idea setting this usually.
|
||||
EGUI_SBV_NEVER = 0,
|
||||
//! Validate on each change. Was default up to Irrlicht 1.8
|
||||
EGUI_SBV_CHANGE = 1,
|
||||
//! Validate when enter was pressed
|
||||
EGUI_SBV_ENTER = 2,
|
||||
//! Validate when the editbox loses the focus
|
||||
EGUI_SBV_LOSE_FOCUS = 4
|
||||
};
|
||||
|
||||
|
||||
//! Single line edit box + spin buttons
|
||||
/** \par This element can create the following events of type EGUI_EVENT_TYPE:
|
||||
\li EGET_SPINBOX_CHANGED
|
||||
*/
|
||||
class IGUISpinBox : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUISpinBox(IGUIEnvironment* environment, IGUIElement* parent,
|
||||
s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_SPIN_BOX, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Access the edit box used in the spin control
|
||||
virtual IGUIEditBox* getEditBox() const = 0;
|
||||
|
||||
//! set the current value of the spinbox
|
||||
/** \param val: value to be set in the spinbox */
|
||||
virtual void setValue(f32 val) = 0;
|
||||
|
||||
//! Get the current value of the spinbox
|
||||
virtual f32 getValue() const = 0;
|
||||
|
||||
//! set the range of values which can be used in the spinbox
|
||||
/** \param min: minimum value
|
||||
\param max: maximum value */
|
||||
virtual void setRange(f32 min, f32 max) = 0;
|
||||
|
||||
//! get the minimum value which can be used in the spinbox
|
||||
virtual f32 getMin() const = 0;
|
||||
|
||||
//! get the maximum value which can be used in the spinbox
|
||||
virtual f32 getMax() const = 0;
|
||||
|
||||
//! Step size by which values are changed when pressing the spinbuttons
|
||||
/** The step size also determines the number of decimal places to display
|
||||
\param step: stepsize used for value changes when pressing spinbuttons */
|
||||
virtual void setStepSize(f32 step=1.f) = 0;
|
||||
|
||||
//! Sets the number of decimal places to display.
|
||||
//! Note that this also rounds the range to the same number of decimal places.
|
||||
/** \param places: The number of decimal places to display, use -1 to reset */
|
||||
virtual void setDecimalPlaces(s32 places) = 0;
|
||||
|
||||
//! get the current step size
|
||||
virtual f32 getStepSize() const = 0;
|
||||
|
||||
//! Sets when the spinbox has to validate entered text.
|
||||
/** \param validateOn Can be any combination of EGUI_SPINBOX_VALIDATION bit flags */
|
||||
virtual void setValidateOn(u32 validateOn) = 0;
|
||||
|
||||
//! Gets when the spinbox has to validate entered text.
|
||||
/** \return A combination of EGUI_SPINBOX_VALIDATION bit flags */
|
||||
virtual u32 getValidateOn() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif // __I_GUI_SPIN_BOX_H_INCLUDED__
|
||||
|
@ -1,235 +0,0 @@
|
||||
// Copyright (C) 2003-2012 Nikolaus Gebhardt
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_TABLE_H_INCLUDED__
|
||||
#define __I_GUI_TABLE_H_INCLUDED__
|
||||
|
||||
#include "IGUIElement.h"
|
||||
#include "SColor.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
class IGUIFont;
|
||||
class IGUIScrollBar;
|
||||
|
||||
//! modes for ordering used when a column header is clicked
|
||||
enum EGUI_COLUMN_ORDERING
|
||||
{
|
||||
//! Do not use ordering
|
||||
EGCO_NONE,
|
||||
|
||||
//! Send a EGET_TABLE_HEADER_CHANGED message when a column header is clicked.
|
||||
EGCO_CUSTOM,
|
||||
|
||||
//! Sort it ascending by it's ascii value like: a,b,c,...
|
||||
EGCO_ASCENDING,
|
||||
|
||||
//! Sort it descending by it's ascii value like: z,x,y,...
|
||||
EGCO_DESCENDING,
|
||||
|
||||
//! Sort it ascending on first click, descending on next, etc
|
||||
EGCO_FLIP_ASCENDING_DESCENDING,
|
||||
|
||||
//! Not used as mode, only to get maximum value for this enum
|
||||
EGCO_COUNT
|
||||
};
|
||||
|
||||
//! Names for EGUI_COLUMN_ORDERING types
|
||||
const c8* const GUIColumnOrderingNames[] =
|
||||
{
|
||||
"none",
|
||||
"custom",
|
||||
"ascend",
|
||||
"descend",
|
||||
"ascend_descend",
|
||||
0,
|
||||
};
|
||||
|
||||
enum EGUI_ORDERING_MODE
|
||||
{
|
||||
//! No element ordering
|
||||
EGOM_NONE,
|
||||
|
||||
//! Elements are ordered from the smallest to the largest.
|
||||
EGOM_ASCENDING,
|
||||
|
||||
//! Elements are ordered from the largest to the smallest.
|
||||
EGOM_DESCENDING,
|
||||
|
||||
//! this value is not used, it only specifies the amount of default ordering types
|
||||
//! available.
|
||||
EGOM_COUNT
|
||||
};
|
||||
|
||||
const c8* const GUIOrderingModeNames[] =
|
||||
{
|
||||
"none",
|
||||
"ascending",
|
||||
"descending",
|
||||
0
|
||||
};
|
||||
|
||||
enum EGUI_TABLE_DRAW_FLAGS
|
||||
{
|
||||
EGTDF_ROWS = 1,
|
||||
EGTDF_COLUMNS = 2,
|
||||
EGTDF_ACTIVE_ROW = 4,
|
||||
EGTDF_COUNT
|
||||
};
|
||||
|
||||
//! Default list box GUI element.
|
||||
/** \par This element can create the following events of type EGUI_EVENT_TYPE:
|
||||
\li EGET_TABLE_CHANGED
|
||||
\li EGET_TABLE_SELECTED_AGAIN
|
||||
\li EGET_TABLE_HEADER_CHANGED
|
||||
*/
|
||||
class IGUITable : public IGUIElement
|
||||
{
|
||||
public:
|
||||
//! constructor
|
||||
IGUITable(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_TABLE, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Adds a column
|
||||
/** If columnIndex is outside the current range, do push new column at the end */
|
||||
virtual void addColumn(const wchar_t* caption, s32 columnIndex=-1) = 0;
|
||||
|
||||
//! remove a column from the table
|
||||
virtual void removeColumn(u32 columnIndex) = 0;
|
||||
|
||||
//! Returns the number of columns in the table control
|
||||
virtual s32 getColumnCount() const = 0;
|
||||
|
||||
//! Makes a column active. This will trigger an ordering process.
|
||||
/** \param idx: The id of the column to make active or a negative number to make non active.
|
||||
\param doOrder: Do also the ordering which depending on mode for active column
|
||||
\return True when the column could be set active (aka - it did exist). */
|
||||
virtual bool setActiveColumn(s32 idx, bool doOrder=false) = 0;
|
||||
|
||||
//! Returns which header is currently active
|
||||
virtual s32 getActiveColumn() const = 0;
|
||||
|
||||
//! Returns the ordering used by the currently active column
|
||||
virtual EGUI_ORDERING_MODE getActiveColumnOrdering() const = 0;
|
||||
|
||||
//! Set the width of a column
|
||||
virtual void setColumnWidth(u32 columnIndex, u32 width) = 0;
|
||||
|
||||
//! Get the width of a column
|
||||
virtual u32 getColumnWidth(u32 columnIndex) const = 0;
|
||||
|
||||
//! columns can be resized by drag 'n drop
|
||||
virtual void setResizableColumns(bool resizable) = 0;
|
||||
|
||||
//! can columns be resized by drag 'n drop?
|
||||
virtual bool hasResizableColumns() const = 0;
|
||||
|
||||
//! This tells the table control which ordering mode should be used when a column header is clicked.
|
||||
/** \param columnIndex The index of the column header.
|
||||
\param mode: One of the modes defined in EGUI_COLUMN_ORDERING */
|
||||
virtual void setColumnOrdering(u32 columnIndex, EGUI_COLUMN_ORDERING mode) = 0;
|
||||
|
||||
//! Returns which row is currently selected
|
||||
virtual s32 getSelected() const = 0;
|
||||
|
||||
//! set which row is currently selected
|
||||
virtual void setSelected( s32 index ) = 0;
|
||||
|
||||
//! Get amount of rows in the tabcontrol
|
||||
virtual s32 getRowCount() const = 0;
|
||||
|
||||
//! adds a row to the table
|
||||
/** \param rowIndex Zero based index of rows. The row will be
|
||||
inserted at this position, if a row already exist there, it
|
||||
will be placed after it. If the row is larger than the actual
|
||||
number of row by more than one, it won't be created. Note that
|
||||
if you create a row that's not at the end, there might be
|
||||
performance issues.
|
||||
\return index of inserted row. */
|
||||
virtual u32 addRow(u32 rowIndex) = 0;
|
||||
|
||||
//! Remove a row from the table
|
||||
virtual void removeRow(u32 rowIndex) = 0;
|
||||
|
||||
//! clears the table rows, but keeps the columns intact
|
||||
virtual void clearRows() = 0;
|
||||
|
||||
//! Swap two row positions.
|
||||
virtual void swapRows(u32 rowIndexA, u32 rowIndexB) = 0;
|
||||
|
||||
//! This tells the table to start ordering all the rows.
|
||||
/** You need to explicitly tell the table to re order the rows
|
||||
when a new row is added or the cells data is changed. This
|
||||
makes the system more flexible and doesn't make you pay the
|
||||
cost of ordering when adding a lot of rows.
|
||||
\param columnIndex: When set to -1 the active column is used.
|
||||
\param mode Ordering mode of the rows. */
|
||||
virtual void orderRows(s32 columnIndex=-1, EGUI_ORDERING_MODE mode=EGOM_NONE) = 0;
|
||||
|
||||
//! Set the text of a cell
|
||||
virtual void setCellText(u32 rowIndex, u32 columnIndex, const core::stringw& text) = 0;
|
||||
|
||||
//! Set the text of a cell, and set a color of this cell.
|
||||
virtual void setCellText(u32 rowIndex, u32 columnIndex, const core::stringw& text, video::SColor color) = 0;
|
||||
|
||||
//! Set the data of a cell
|
||||
virtual void setCellData(u32 rowIndex, u32 columnIndex, void *data) = 0;
|
||||
|
||||
//! Set the color of a cell text
|
||||
virtual void setCellColor(u32 rowIndex, u32 columnIndex, video::SColor color) = 0;
|
||||
|
||||
//! Get the text of a cell
|
||||
virtual const wchar_t* getCellText(u32 rowIndex, u32 columnIndex ) const = 0;
|
||||
|
||||
//! Get the data of a cell
|
||||
virtual void* getCellData(u32 rowIndex, u32 columnIndex ) const = 0;
|
||||
|
||||
//! clears the table, deletes all items in the table
|
||||
virtual void clear() = 0;
|
||||
|
||||
//! Set flags, as defined in ::EGUI_TABLE_DRAW_FLAGS, which influence the layout
|
||||
virtual void setDrawFlags(s32 flags) = 0;
|
||||
|
||||
//! Get the flags, as defined in ::EGUI_TABLE_DRAW_FLAGS, which influence the layout
|
||||
virtual s32 getDrawFlags() const = 0;
|
||||
|
||||
//! Sets another skin independent font.
|
||||
/** If this is set to zero, the button uses the font of the skin.
|
||||
\param font: New font to set. */
|
||||
virtual void setOverrideFont(IGUIFont* font=0) = 0;
|
||||
|
||||
//! Gets the override font (if any)
|
||||
/** \return The override font (may be 0) */
|
||||
virtual IGUIFont* getOverrideFont(void) const = 0;
|
||||
|
||||
//! Get the font which is used right now for drawing
|
||||
/** Currently this is the override font when one is set and the
|
||||
font of the active skin otherwise */
|
||||
virtual IGUIFont* getActiveFont() const = 0;
|
||||
|
||||
//! Get the height of items/rows
|
||||
virtual s32 getItemHeight() const = 0;
|
||||
|
||||
//! Access the vertical scrollbar
|
||||
virtual IGUIScrollBar* getVerticalScrollBar() const = 0;
|
||||
|
||||
//! Access the horizontal scrollbar
|
||||
virtual IGUIScrollBar* getHorizontalScrollBar() const = 0;
|
||||
|
||||
//! Sets whether to draw the background.
|
||||
virtual void setDrawBackground(bool draw) = 0;
|
||||
|
||||
//! Checks if background drawing is enabled
|
||||
/** \return true if background drawing is enabled, false otherwise */
|
||||
virtual bool isDrawBackgroundEnabled() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
@ -1,298 +0,0 @@
|
||||
// written by Reinhard Ostermeier, reinhard@nospam.r-ostermeier.de
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_TREE_VIEW_H_INCLUDED__
|
||||
#define __I_GUI_TREE_VIEW_H_INCLUDED__
|
||||
|
||||
#include "IGUIElement.h"
|
||||
#include "IGUIImageList.h"
|
||||
#include "irrTypes.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
class IGUIFont;
|
||||
class IGUITreeView;
|
||||
class IGUIScrollBar;
|
||||
|
||||
|
||||
//! Node for gui tree view
|
||||
/** \par This element can create the following events of type EGUI_EVENT_TYPE:
|
||||
\li EGET_TREEVIEW_NODE_EXPAND
|
||||
\li EGET_TREEVIEW_NODE_COLLAPS
|
||||
\li EGET_TREEVIEW_NODE_DESELECT
|
||||
\li EGET_TREEVIEW_NODE_SELECT
|
||||
*/
|
||||
class IGUITreeViewNode : public IReferenceCounted
|
||||
{
|
||||
public:
|
||||
//! returns the owner (tree view) of this node
|
||||
virtual IGUITreeView* getOwner() const = 0;
|
||||
|
||||
//! Returns the parent node of this node.
|
||||
/** For the root node this will return 0. */
|
||||
virtual IGUITreeViewNode* getParent() const = 0;
|
||||
|
||||
//! returns the text of the node
|
||||
virtual const wchar_t* getText() const = 0;
|
||||
|
||||
//! sets the text of the node
|
||||
virtual void setText( const wchar_t* text ) = 0;
|
||||
|
||||
//! returns the icon text of the node
|
||||
virtual const wchar_t* getIcon() const = 0;
|
||||
|
||||
//! sets the icon text of the node
|
||||
virtual void setIcon( const wchar_t* icon ) = 0;
|
||||
|
||||
//! returns the image index of the node
|
||||
virtual u32 getImageIndex() const = 0;
|
||||
|
||||
//! sets the image index of the node
|
||||
virtual void setImageIndex( u32 imageIndex ) = 0;
|
||||
|
||||
//! returns the image index of the node
|
||||
virtual u32 getSelectedImageIndex() const = 0;
|
||||
|
||||
//! sets the image index of the node
|
||||
virtual void setSelectedImageIndex( u32 imageIndex ) = 0;
|
||||
|
||||
//! returns the user data (void*) of this node
|
||||
virtual void* getData() const = 0;
|
||||
|
||||
//! sets the user data (void*) of this node
|
||||
virtual void setData( void* data ) = 0;
|
||||
|
||||
//! returns the user data2 (IReferenceCounted) of this node
|
||||
virtual IReferenceCounted* getData2() const = 0;
|
||||
|
||||
//! sets the user data2 (IReferenceCounted) of this node
|
||||
virtual void setData2( IReferenceCounted* data ) = 0;
|
||||
|
||||
//! returns the child item count
|
||||
virtual u32 getChildCount() const = 0;
|
||||
|
||||
//! removes all children (recursive) from this node
|
||||
virtual void clearChildren() = 0;
|
||||
|
||||
//! removes all children (recursive) from this node
|
||||
/** \deprecated Deprecated in 1.8, use clearChildren() instead.
|
||||
This method may be removed by Irrlicht 1.9 */
|
||||
_IRR_DEPRECATED_ void clearChilds()
|
||||
{
|
||||
return clearChildren();
|
||||
}
|
||||
|
||||
//! returns true if this node has child nodes
|
||||
virtual bool hasChildren() const = 0;
|
||||
|
||||
//! returns true if this node has child nodes
|
||||
/** \deprecated Deprecated in 1.8, use hasChildren() instead.
|
||||
This method may be removed by Irrlicht 1.9 */
|
||||
_IRR_DEPRECATED_ bool hasChilds() const
|
||||
{
|
||||
return hasChildren();
|
||||
}
|
||||
|
||||
//! Adds a new node behind the last child node.
|
||||
/** \param text text of the new node
|
||||
\param icon icon text of the new node
|
||||
\param imageIndex index of the image for the new node (-1 = none)
|
||||
\param selectedImageIndex index of the selected image for the new node (-1 = same as imageIndex)
|
||||
\param data user data (void*) of the new node
|
||||
\param data2 user data2 (IReferenceCounted*) of the new node
|
||||
\return The new node
|
||||
*/
|
||||
virtual IGUITreeViewNode* addChildBack(
|
||||
const wchar_t* text, const wchar_t* icon = 0,
|
||||
s32 imageIndex=-1, s32 selectedImageIndex=-1,
|
||||
void* data=0, IReferenceCounted* data2=0) =0;
|
||||
|
||||
//! Adds a new node before the first child node.
|
||||
/** \param text text of the new node
|
||||
\param icon icon text of the new node
|
||||
\param imageIndex index of the image for the new node (-1 = none)
|
||||
\param selectedImageIndex index of the selected image for the new node (-1 = same as imageIndex)
|
||||
\param data user data (void*) of the new node
|
||||
\param data2 user data2 (IReferenceCounted*) of the new node
|
||||
\return The new node
|
||||
*/
|
||||
virtual IGUITreeViewNode* addChildFront(
|
||||
const wchar_t* text, const wchar_t* icon = 0,
|
||||
s32 imageIndex=-1, s32 selectedImageIndex=-1,
|
||||
void* data=0, IReferenceCounted* data2=0 ) =0;
|
||||
|
||||
//! Adds a new node behind the other node.
|
||||
/** The other node has also to be a child node from this node.
|
||||
\param other Node to insert after
|
||||
\param text text of the new node
|
||||
\param icon icon text of the new node
|
||||
\param imageIndex index of the image for the new node (-1 = none)
|
||||
\param selectedImageIndex index of the selected image for the new node (-1 = same as imageIndex)
|
||||
\param data user data (void*) of the new node
|
||||
\param data2 user data2 (IReferenceCounted*) of the new node
|
||||
\return The new node or 0 if other is no child node from this
|
||||
*/
|
||||
virtual IGUITreeViewNode* insertChildAfter(
|
||||
IGUITreeViewNode* other,
|
||||
const wchar_t* text, const wchar_t* icon = 0,
|
||||
s32 imageIndex=-1, s32 selectedImageIndex=-1,
|
||||
void* data=0, IReferenceCounted* data2=0) =0;
|
||||
|
||||
//! Adds a new node before the other node.
|
||||
/** The other node has also to be a child node from this node.
|
||||
\param other Node to insert before
|
||||
\param text text of the new node
|
||||
\param icon icon text of the new node
|
||||
\param imageIndex index of the image for the new node (-1 = none)
|
||||
\param selectedImageIndex index of the selected image for the new node (-1 = same as imageIndex)
|
||||
\param data user data (void*) of the new node
|
||||
\param data2 user data2 (IReferenceCounted*) of the new node
|
||||
\return The new node or 0 if other is no child node from this
|
||||
*/
|
||||
virtual IGUITreeViewNode* insertChildBefore(
|
||||
IGUITreeViewNode* other,
|
||||
const wchar_t* text, const wchar_t* icon = 0,
|
||||
s32 imageIndex=-1, s32 selectedImageIndex=-1,
|
||||
void* data=0, IReferenceCounted* data2=0) = 0;
|
||||
|
||||
//! Return the first child node from this node.
|
||||
/** \return The first child node or 0 if this node has no children. */
|
||||
virtual IGUITreeViewNode* getFirstChild() const = 0;
|
||||
|
||||
//! Return the last child node from this node.
|
||||
/** \return The last child node or 0 if this node has no children. */
|
||||
virtual IGUITreeViewNode* getLastChild() const = 0;
|
||||
|
||||
//! Returns the previous sibling node from this node.
|
||||
/** \return The previous sibling node from this node or 0 if this is
|
||||
the first node from the parent node.
|
||||
*/
|
||||
virtual IGUITreeViewNode* getPrevSibling() const = 0;
|
||||
|
||||
//! Returns the next sibling node from this node.
|
||||
/** \return The next sibling node from this node or 0 if this is
|
||||
the last node from the parent node.
|
||||
*/
|
||||
virtual IGUITreeViewNode* getNextSibling() const = 0;
|
||||
|
||||
//! Returns the next visible (expanded, may be out of scrolling) node from this node.
|
||||
/** \return The next visible node from this node or 0 if this is
|
||||
the last visible node. */
|
||||
virtual IGUITreeViewNode* getNextVisible() const = 0;
|
||||
|
||||
//! Deletes a child node.
|
||||
/** \return Returns true if the node was found as a child and is deleted. */
|
||||
virtual bool deleteChild( IGUITreeViewNode* child ) = 0;
|
||||
|
||||
//! Moves a child node one position up.
|
||||
/** \return True if the node was found as a child node and was not already the first child. */
|
||||
virtual bool moveChildUp( IGUITreeViewNode* child ) = 0;
|
||||
|
||||
//! Moves a child node one position down.
|
||||
/** \return True if the node was found as a child node and was not already the last child. */
|
||||
virtual bool moveChildDown( IGUITreeViewNode* child ) = 0;
|
||||
|
||||
//! Returns true if the node is expanded (children are visible).
|
||||
virtual bool getExpanded() const = 0;
|
||||
|
||||
//! Sets if the node is expanded.
|
||||
virtual void setExpanded( bool expanded ) = 0;
|
||||
|
||||
//! Returns true if the node is currently selected.
|
||||
virtual bool getSelected() const = 0;
|
||||
|
||||
//! Sets this node as selected.
|
||||
virtual void setSelected( bool selected ) = 0;
|
||||
|
||||
//! Returns true if this node is the root node.
|
||||
virtual bool isRoot() const = 0;
|
||||
|
||||
//! Returns the level of this node.
|
||||
/** The root node has level 0. Direct children of the root has level 1 ... */
|
||||
virtual s32 getLevel() const = 0;
|
||||
|
||||
//! Returns true if this node is visible (all parents are expanded).
|
||||
virtual bool isVisible() const = 0;
|
||||
};
|
||||
|
||||
|
||||
//! Default tree view GUI element.
|
||||
/** Displays a windows like tree buttons to expand/collapse the child
|
||||
nodes of an node and optional tree lines. Each node consists of an
|
||||
text, an icon text and a void pointer for user data. */
|
||||
class IGUITreeView : public IGUIElement
|
||||
{
|
||||
public:
|
||||
//! constructor
|
||||
IGUITreeView(IGUIEnvironment* environment, IGUIElement* parent,
|
||||
s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement( EGUIET_TREE_VIEW, environment, parent, id, rectangle ) {}
|
||||
|
||||
//! returns the root node (not visible) from the tree.
|
||||
virtual IGUITreeViewNode* getRoot() const = 0;
|
||||
|
||||
//! returns the selected node of the tree or 0 if none is selected
|
||||
virtual IGUITreeViewNode* getSelected() const = 0;
|
||||
|
||||
//! returns true if the tree lines are visible
|
||||
virtual bool getLinesVisible() const = 0;
|
||||
|
||||
//! sets if the tree lines are visible
|
||||
/** \param visible true for visible, false for invisible */
|
||||
virtual void setLinesVisible( bool visible ) = 0;
|
||||
|
||||
//! Sets the font which should be used as icon font.
|
||||
/** This font is set to the Irrlicht engine built-in-font by
|
||||
default. Icons can be displayed in front of every list item.
|
||||
An icon is a string, displayed with the icon font. When using
|
||||
the build-in-font of the Irrlicht engine as icon font, the icon
|
||||
strings defined in GUIIcons.h can be used.
|
||||
*/
|
||||
virtual void setIconFont( IGUIFont* font ) = 0;
|
||||
|
||||
//! Sets a skin independent font.
|
||||
/** \param font: New font to set or 0 to use the skin-font. */
|
||||
virtual void setOverrideFont(IGUIFont* font=0) = 0;
|
||||
|
||||
//! Gets the override font (if any)
|
||||
/** \return The override font (may be 0) */
|
||||
virtual IGUIFont* getOverrideFont(void) const = 0;
|
||||
|
||||
//! Get the font which is used for drawing
|
||||
/** This is the override font when one is set and the
|
||||
font of the skin otherwise. */
|
||||
virtual IGUIFont* getActiveFont() const = 0;
|
||||
|
||||
//! Sets the image list which should be used for the image and selected image of every node.
|
||||
/** The default is 0 (no images). */
|
||||
virtual void setImageList( IGUIImageList* imageList ) = 0;
|
||||
|
||||
//! Returns the image list which is used for the nodes.
|
||||
virtual IGUIImageList* getImageList() const = 0;
|
||||
|
||||
//! Sets if the image is left of the icon. Default is true.
|
||||
virtual void setImageLeftOfIcon( bool bLeftOf ) = 0;
|
||||
|
||||
//! Returns if the Image is left of the icon. Default is true.
|
||||
virtual bool getImageLeftOfIcon() const = 0;
|
||||
|
||||
//! Returns the node which is associated to the last event.
|
||||
/** This pointer is only valid inside the OnEvent call! */
|
||||
virtual IGUITreeViewNode* getLastEventNode() const = 0;
|
||||
|
||||
//! Access the vertical scrollbar
|
||||
virtual IGUIScrollBar* getVerticalScrollBar() const = 0;
|
||||
|
||||
//! Access the horizontal scrollbar
|
||||
virtual IGUIScrollBar* getHorizontalScrollBar() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
@ -1,74 +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 __I_GUI_WINDOW_H_INCLUDED__
|
||||
#define __I_GUI_WINDOW_H_INCLUDED__
|
||||
|
||||
#include "IGUIElement.h"
|
||||
#include "EMessageBoxFlags.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
class IGUIButton;
|
||||
|
||||
//! Default moveable window GUI element with border, caption and close icons.
|
||||
/** \par This element can create the following events of type EGUI_EVENT_TYPE:
|
||||
\li EGET_ELEMENT_CLOSED
|
||||
*/
|
||||
class IGUIWindow : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIWindow(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_WINDOW, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Returns pointer to the close button
|
||||
/** You can hide the button by calling setVisible(false) on the result. */
|
||||
virtual IGUIButton* getCloseButton() const = 0;
|
||||
|
||||
//! Returns pointer to the minimize button
|
||||
/** You can hide the button by calling setVisible(false) on the result. */
|
||||
virtual IGUIButton* getMinimizeButton() const = 0;
|
||||
|
||||
//! Returns pointer to the maximize button
|
||||
/** You can hide the button by calling setVisible(false) on the result. */
|
||||
virtual IGUIButton* getMaximizeButton() const = 0;
|
||||
|
||||
//! Returns true if the window can be dragged with the mouse, false if not
|
||||
virtual bool isDraggable() const = 0;
|
||||
|
||||
//! Sets whether the window can be dragged by the mouse
|
||||
virtual void setDraggable(bool draggable) = 0;
|
||||
|
||||
//! Set if the window background will be drawn
|
||||
virtual void setDrawBackground(bool draw) = 0;
|
||||
|
||||
//! Get if the window background will be drawn
|
||||
virtual bool getDrawBackground() const = 0;
|
||||
|
||||
//! Set if the window titlebar will be drawn
|
||||
//! Note: If the background is not drawn, then the titlebar is automatically also not drawn
|
||||
virtual void setDrawTitlebar(bool draw) = 0;
|
||||
|
||||
//! Get if the window titlebar will be drawn
|
||||
virtual bool getDrawTitlebar() const = 0;
|
||||
|
||||
//! Returns the rectangle of the drawable area (without border and without titlebar)
|
||||
/** The coordinates are given relative to the top-left position of the gui element.<br>
|
||||
So to get absolute positions you have to add the resulting rectangle to getAbsolutePosition().UpperLeftCorner.<br>
|
||||
To get it relative to the parent element you have to add the resulting rectangle to getRelativePosition().UpperLeftCorner.
|
||||
Beware that adding a menu will not change the clientRect as menus are own gui elements, so in that case you might want to subtract
|
||||
the menu area additionally. */
|
||||
virtual core::rect<s32> getClientRect() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
@ -9,7 +9,6 @@
|
||||
#include "position2d.h"
|
||||
#include "rect.h"
|
||||
#include "SColor.h"
|
||||
#include "irrAllocator.h"
|
||||
#include <string.h>
|
||||
|
||||
namespace irr
|
||||
@ -44,7 +43,7 @@ public:
|
||||
delete[] Data;
|
||||
|
||||
if (DeleteMipMapsMemory)
|
||||
Allocator.deallocate(MipMapsData);
|
||||
delete[] MipMapsData;
|
||||
}
|
||||
|
||||
//! Returns the color format
|
||||
@ -275,13 +274,13 @@ public:
|
||||
will by copied internally.
|
||||
\param deleteMemory Whether the memory is deallocated upon
|
||||
destruction. */
|
||||
void setMipMapsData(void* data, bool ownForeignMemory, bool deleteMemory)
|
||||
void setMipMapsData(void* data, bool ownForeignMemory)
|
||||
{
|
||||
if (data != MipMapsData)
|
||||
{
|
||||
if (DeleteMipMapsMemory)
|
||||
{
|
||||
Allocator.deallocate(MipMapsData);
|
||||
delete[] MipMapsData;
|
||||
|
||||
DeleteMipMapsMemory = false;
|
||||
}
|
||||
@ -292,7 +291,7 @@ public:
|
||||
{
|
||||
MipMapsData = static_cast<u8*>(data);
|
||||
|
||||
DeleteMipMapsMemory = deleteMemory;
|
||||
DeleteMipMapsMemory = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -311,7 +310,7 @@ public:
|
||||
dataSize += getDataSizeFromFormat(Format, width, height);
|
||||
} while (width != 1 || height != 1);
|
||||
|
||||
MipMapsData = Allocator.allocate(dataSize);
|
||||
MipMapsData = new u8[dataSize];
|
||||
memcpy(MipMapsData, data, dataSize);
|
||||
|
||||
DeleteMipMapsMemory = true;
|
||||
@ -578,7 +577,6 @@ protected:
|
||||
bool DeleteMemory;
|
||||
bool DeleteMipMapsMemory;
|
||||
|
||||
core::irrAllocator<u8> Allocator;
|
||||
#if defined(IRRLICHT_sRGB)
|
||||
int Format_sRGB;
|
||||
#endif
|
||||
|
@ -30,44 +30,6 @@ namespace scene
|
||||
{
|
||||
public:
|
||||
|
||||
//! Flips the direction of surfaces.
|
||||
/** Changes backfacing triangles to frontfacing
|
||||
triangles and vice versa.
|
||||
\param mesh Mesh on which the operation is performed. */
|
||||
virtual void flipSurfaces(IMesh* mesh) const = 0;
|
||||
|
||||
//! Sets the alpha vertex color value of the whole mesh to a new value.
|
||||
/** \param mesh Mesh on which the operation is performed.
|
||||
\param alpha New alpha value. Must be a value between 0 and 255. */
|
||||
void setVertexColorAlpha(IMesh* mesh, s32 alpha) const
|
||||
{
|
||||
apply(scene::SVertexColorSetAlphaManipulator(alpha), mesh);
|
||||
}
|
||||
|
||||
//! Sets the alpha vertex color value of the whole mesh to a new value.
|
||||
/** \param buffer Meshbuffer on which the operation is performed.
|
||||
\param alpha New alpha value. Must be a value between 0 and 255. */
|
||||
void setVertexColorAlpha(IMeshBuffer* buffer, s32 alpha) const
|
||||
{
|
||||
apply(scene::SVertexColorSetAlphaManipulator(alpha), buffer);
|
||||
}
|
||||
|
||||
//! Sets the colors of all vertices to one color
|
||||
/** \param mesh Mesh on which the operation is performed.
|
||||
\param color New color. */
|
||||
void setVertexColors(IMesh* mesh, video::SColor color) const
|
||||
{
|
||||
apply(scene::SVertexColorSetManipulator(color), mesh);
|
||||
}
|
||||
|
||||
//! Sets the colors of all vertices to one color
|
||||
/** \param buffer Meshbuffer on which the operation is performed.
|
||||
\param color New color. */
|
||||
void setVertexColors(IMeshBuffer* buffer, video::SColor color) const
|
||||
{
|
||||
apply(scene::SVertexColorSetManipulator(color), buffer);
|
||||
}
|
||||
|
||||
//! Recalculates all normals of the mesh.
|
||||
/** \param mesh: Mesh on which the operation is performed.
|
||||
\param smooth: If the normals shall be smoothed.
|
||||
@ -82,26 +44,6 @@ namespace scene
|
||||
virtual void recalculateNormals(IMeshBuffer* buffer,
|
||||
bool smooth = false, bool angleWeighted = false) const=0;
|
||||
|
||||
//! Recalculates tangents, requires a tangent mesh
|
||||
/** \param mesh Mesh on which the operation is performed.
|
||||
\param recalculateNormals If the normals shall be recalculated, otherwise original normals of the mesh are used unchanged.
|
||||
\param smooth If the normals shall be smoothed.
|
||||
\param angleWeighted If the normals shall be smoothed in relation to their angles. More expensive, but also higher precision.
|
||||
*/
|
||||
virtual void recalculateTangents(IMesh* mesh,
|
||||
bool recalculateNormals=false, bool smooth=false,
|
||||
bool angleWeighted=false) const=0;
|
||||
|
||||
//! Recalculates tangents, requires a tangent mesh buffer
|
||||
/** \param buffer Meshbuffer on which the operation is performed.
|
||||
\param recalculateNormals If the normals shall be recalculated, otherwise original normals of the buffer are used unchanged.
|
||||
\param smooth If the normals shall be smoothed.
|
||||
\param angleWeighted If the normals shall be smoothed in relation to their angles. More expensive, but also higher precision.
|
||||
*/
|
||||
virtual void recalculateTangents(IMeshBuffer* buffer,
|
||||
bool recalculateNormals=false, bool smooth=false,
|
||||
bool angleWeighted=false) const=0;
|
||||
|
||||
//! Scales the actual mesh, not a scene node.
|
||||
/** \param mesh Mesh on which the operation is performed.
|
||||
\param factor Scale factor for each axis. */
|
||||
@ -118,116 +60,6 @@ namespace scene
|
||||
apply(SVertexPositionScaleManipulator(factor), buffer, true);
|
||||
}
|
||||
|
||||
//! Scales the actual mesh, not a scene node.
|
||||
/** \deprecated Use scale() instead. This method may be removed by Irrlicht 1.9
|
||||
\param mesh Mesh on which the operation is performed.
|
||||
\param factor Scale factor for each axis. */
|
||||
_IRR_DEPRECATED_ void scaleMesh(IMesh* mesh, const core::vector3df& factor) const {return scale(mesh,factor);}
|
||||
|
||||
//! Scale the texture coords of a mesh.
|
||||
/** \param mesh Mesh on which the operation is performed.
|
||||
\param factor Vector which defines the scale for each axis.
|
||||
\param level Number of texture coord, starting from 1. Support for level 2 exists for LightMap buffers. */
|
||||
void scaleTCoords(scene::IMesh* mesh, const core::vector2df& factor, u32 level=1) const
|
||||
{
|
||||
apply(SVertexTCoordsScaleManipulator(factor, level), mesh);
|
||||
}
|
||||
|
||||
//! Scale the texture coords of a meshbuffer.
|
||||
/** \param buffer Meshbuffer on which the operation is performed.
|
||||
\param factor Vector which defines the scale for each axis.
|
||||
\param level Number of texture coord, starting from 1. Support for level 2 exists for LightMap buffers. */
|
||||
void scaleTCoords(scene::IMeshBuffer* buffer, const core::vector2df& factor, u32 level=1) const
|
||||
{
|
||||
apply(SVertexTCoordsScaleManipulator(factor, level), buffer);
|
||||
}
|
||||
|
||||
//! Applies a transformation to a mesh
|
||||
/** \param mesh Mesh on which the operation is performed.
|
||||
\param m transformation matrix.
|
||||
\param normalsUpdate When 0 - don't update normals.
|
||||
When 1 - update normals with inverse transposed of the transformation matrix
|
||||
*/
|
||||
void transform(IMesh* mesh, const core::matrix4& m, u32 normalsUpdate = 0) const
|
||||
{
|
||||
apply(SVertexPositionTransformManipulator(m), mesh, true);
|
||||
|
||||
if ( normalsUpdate == 1 )
|
||||
{
|
||||
core::matrix4 invT;
|
||||
if ( m.getInverse(invT) )
|
||||
{
|
||||
invT = invT.getTransposed();
|
||||
apply(SVertexNormalTransformManipulator(invT), mesh, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//! Applies a transformation to a meshbuffer
|
||||
/** \param buffer Meshbuffer on which the operation is performed.
|
||||
\param m transformation matrix.
|
||||
\param normalsUpdate When 0 - don't update normals.
|
||||
When 1 - update normals with inverse transposed of the transformation matrix
|
||||
*/
|
||||
void transform(IMeshBuffer* buffer, const core::matrix4& m, u32 normalsUpdate = 0) const
|
||||
{
|
||||
apply(SVertexPositionTransformManipulator(m), buffer, true);
|
||||
|
||||
if ( normalsUpdate == 1 )
|
||||
{
|
||||
core::matrix4 invT;
|
||||
if ( m.getInverse(invT) )
|
||||
{
|
||||
invT = invT.getTransposed();
|
||||
apply(SVertexNormalTransformManipulator(invT), buffer, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//! Applies a transformation to a mesh
|
||||
/** \deprecated Use transform() instead. This method may be removed by Irrlicht 1.9
|
||||
\param mesh Mesh on which the operation is performed.
|
||||
\param m transformation matrix. */
|
||||
_IRR_DEPRECATED_ virtual void transformMesh(IMesh* mesh, const core::matrix4& m) const {return transform(mesh,m);}
|
||||
|
||||
//! Creates a planar texture mapping on the mesh
|
||||
/** \param mesh: Mesh on which the operation is performed.
|
||||
\param resolution: resolution of the planar mapping. This is
|
||||
the value specifying which is the relation between world space
|
||||
and texture coordinate space. */
|
||||
virtual void makePlanarTextureMapping(IMesh* mesh, f32 resolution=0.001f) const=0;
|
||||
|
||||
//! Creates a planar texture mapping on the meshbuffer
|
||||
/** \param meshbuffer: Buffer on which the operation is performed.
|
||||
\param resolution: resolution of the planar mapping. This is
|
||||
the value specifying which is the relation between world space
|
||||
and texture coordinate space. */
|
||||
virtual void makePlanarTextureMapping(scene::IMeshBuffer* meshbuffer, f32 resolution=0.001f) const=0;
|
||||
|
||||
//! Creates a planar texture mapping on the buffer
|
||||
/** This method is currently implemented towards the LWO planar mapping. A more general biasing might be required.
|
||||
\param mesh Mesh on which the operation is performed.
|
||||
\param resolutionS Resolution of the planar mapping in horizontal direction. This is the ratio between object space and texture space.
|
||||
\param resolutionT Resolution of the planar mapping in vertical direction. This is the ratio between object space and texture space.
|
||||
\param axis The axis along which the texture is projected. The allowed values are 0 (X), 1(Y), and 2(Z).
|
||||
\param offset Vector added to the vertex positions (in object coordinates).
|
||||
*/
|
||||
virtual void makePlanarTextureMapping(scene::IMesh* mesh,
|
||||
f32 resolutionS, f32 resolutionT,
|
||||
u8 axis, const core::vector3df& offset) const=0;
|
||||
|
||||
//! Creates a planar texture mapping on the meshbuffer
|
||||
/** This method is currently implemented towards the LWO planar mapping. A more general biasing might be required.
|
||||
\param buffer Buffer on which the operation is performed.
|
||||
\param resolutionS Resolution of the planar mapping in horizontal direction. This is the ratio between object space and texture space.
|
||||
\param resolutionT Resolution of the planar mapping in vertical direction. This is the ratio between object space and texture space.
|
||||
\param axis The axis along which the texture is projected. The allowed values are 0 (X), 1(Y), and 2(Z).
|
||||
\param offset Vector added to the vertex positions (in object coordinates).
|
||||
*/
|
||||
virtual void makePlanarTextureMapping(scene::IMeshBuffer* buffer,
|
||||
f32 resolutionS, f32 resolutionT,
|
||||
u8 axis, const core::vector3df& offset) const=0;
|
||||
|
||||
//! Clones a static IMesh into a modifiable SMesh.
|
||||
/** All meshbuffers in the returned SMesh
|
||||
are of type SMeshBuffer or SMeshBufferLightMap.
|
||||
@ -237,59 +69,6 @@ namespace scene
|
||||
IReferenceCounted::drop() for more information. */
|
||||
virtual SMesh* createMeshCopy(IMesh* mesh) const = 0;
|
||||
|
||||
//! Creates a copy of the mesh, which will only consist of S3DVertexTangents vertices.
|
||||
/** This is useful if you want to draw tangent space normal
|
||||
mapped geometry because it calculates the tangent and binormal
|
||||
data which is needed there.
|
||||
\param mesh Input mesh
|
||||
\param recalculateNormals The normals are recalculated if set,
|
||||
otherwise the original ones are kept. Note that keeping the
|
||||
normals may introduce inaccurate tangents if the normals are
|
||||
very different to those calculated from the faces.
|
||||
\param smooth The normals/tangents are smoothed across the
|
||||
meshbuffer's faces if this flag is set.
|
||||
\param angleWeighted Improved smoothing calculation used
|
||||
\param recalculateTangents Whether are actually calculated, or just the mesh with proper type is created.
|
||||
\return Mesh consisting only of S3DVertexTangents vertices. If
|
||||
you no longer need the cloned mesh, you should call
|
||||
IMesh::drop(). See IReferenceCounted::drop() for more
|
||||
information. */
|
||||
virtual IMesh* createMeshWithTangents(IMesh* mesh,
|
||||
bool recalculateNormals=false, bool smooth=false,
|
||||
bool angleWeighted=false, bool recalculateTangents=true) const=0;
|
||||
|
||||
//! Creates a copy of the mesh, which will only consist of S3DVertex2TCoord vertices.
|
||||
/** \param mesh Input mesh
|
||||
\return Mesh consisting only of S3DVertex2TCoord vertices. If
|
||||
you no longer need the cloned mesh, you should call
|
||||
IMesh::drop(). See IReferenceCounted::drop() for more
|
||||
information. */
|
||||
virtual IMesh* createMeshWith2TCoords(IMesh* mesh) const = 0;
|
||||
|
||||
//! Creates a copy of the mesh, which will only consist of S3DVertex vertices.
|
||||
/** \param mesh Input mesh
|
||||
\return Mesh consisting only of S3DVertex vertices. If
|
||||
you no longer need the cloned mesh, you should call
|
||||
IMesh::drop(). See IReferenceCounted::drop() for more
|
||||
information. */
|
||||
virtual IMesh* createMeshWith1TCoords(IMesh* mesh) const = 0;
|
||||
|
||||
//! Creates a copy of a mesh with all vertices unwelded
|
||||
/** \param mesh Input mesh
|
||||
\return Mesh consisting only of unique faces. All vertices
|
||||
which were previously shared are now duplicated. If you no
|
||||
longer need the cloned mesh, you should call IMesh::drop(). See
|
||||
IReferenceCounted::drop() for more information. */
|
||||
virtual IMesh* createMeshUniquePrimitives(IMesh* mesh) const = 0;
|
||||
|
||||
//! Creates a copy of a mesh with vertices welded
|
||||
/** \param mesh Input mesh
|
||||
\param tolerance The threshold for vertex comparisons.
|
||||
\return Mesh without redundant vertices. If you no longer need
|
||||
the cloned mesh, you should call IMesh::drop(). See
|
||||
IReferenceCounted::drop() for more information. */
|
||||
virtual IMesh* createMeshWelded(IMesh* mesh, f32 tolerance=core::ROUNDING_ERROR_f32) const = 0;
|
||||
|
||||
//! Get amount of polygons in mesh.
|
||||
/** \param mesh Input mesh
|
||||
\return Number of polygons in mesh. */
|
||||
@ -310,43 +89,6 @@ namespace scene
|
||||
virtual IAnimatedMesh * createAnimatedMesh(IMesh* mesh,
|
||||
scene::E_ANIMATED_MESH_TYPE type = scene::EAMT_UNKNOWN) const = 0;
|
||||
|
||||
//! Vertex cache optimization according to the Forsyth paper
|
||||
/** More information can be found at
|
||||
http://home.comcast.net/~tom_forsyth/papers/fast_vert_cache_opt.html
|
||||
|
||||
The function is thread-safe (read: you can optimize several
|
||||
meshes in different threads).
|
||||
|
||||
\param mesh Source mesh for the operation.
|
||||
\return A new mesh optimized for the vertex cache. */
|
||||
virtual IMesh* createForsythOptimizedMesh(const IMesh *mesh) const = 0;
|
||||
|
||||
//! Optimize the mesh with an algorithm tuned for heightmaps.
|
||||
/**
|
||||
This differs from usual simplification methods in two ways:
|
||||
- it's intended to be lossless
|
||||
- it has special care for the borders, which are useful with heightmap tiles
|
||||
|
||||
This function is thread-safe. Remember to weld afterwards - this
|
||||
function only moves vertices, it does not weld.
|
||||
|
||||
\param mesh Mesh to operate on.
|
||||
*/
|
||||
virtual void heightmapOptimizeMesh(IMesh * const mesh, const f32 tolerance = core::ROUNDING_ERROR_f32) const = 0;
|
||||
|
||||
//! Optimize the meshbuffer with an algorithm tuned for heightmaps.
|
||||
/**
|
||||
This differs from usual simplification methods in two ways:
|
||||
- it's intended to be lossless
|
||||
- it has special care for the borders, which are useful with heightmap tiles
|
||||
|
||||
This function is thread-safe. Remember to weld afterward - this
|
||||
function only moves vertices, it does not weld.
|
||||
|
||||
\param mb Meshbuffer to operate on.
|
||||
*/
|
||||
virtual void heightmapOptimizeMesh(IMeshBuffer * const mb, const f32 tolerance = core::ROUNDING_ERROR_f32) const = 0;
|
||||
|
||||
//! Apply a manipulator on the Meshbuffer
|
||||
/** \param func A functor defining the mesh manipulation.
|
||||
\param buffer The Meshbuffer to apply the manipulator to.
|
||||
|
@ -1,30 +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 __I_RANDOMIZER_H_INCLUDED__
|
||||
#define __I_RANDOMIZER_H_INCLUDED__
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
||||
//! Interface for generating random numbers
|
||||
class IRandomizer : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
//! resets the randomizer
|
||||
/** \param value Initialization value (seed) */
|
||||
virtual void reset(s32 value=0x0f0f0f0f) =0;
|
||||
|
||||
//! generates a pseudo random number in the range 0..randMax()
|
||||
virtual s32 rand() const =0;
|
||||
|
||||
//! get maxmimum number generated by rand()
|
||||
virtual s32 randMax() const =0;
|
||||
};
|
||||
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
@ -602,32 +602,6 @@ namespace scene
|
||||
pass currently is active they can render the correct part of their geometry. */
|
||||
virtual E_SCENE_NODE_RENDER_PASS getSceneNodeRenderPass() const = 0;
|
||||
|
||||
//! Get the default scene node factory which can create all built in scene nodes
|
||||
/** \return Pointer to the default scene node factory
|
||||
This pointer should not be dropped. See IReferenceCounted::drop() for more information. */
|
||||
virtual ISceneNodeFactory* getDefaultSceneNodeFactory() = 0;
|
||||
|
||||
//! Adds a scene node factory to the scene manager.
|
||||
/** Use this to extend the scene manager with new scene node types which it should be
|
||||
able to create automatically, for example when loading data from xml files. */
|
||||
virtual void registerSceneNodeFactory(ISceneNodeFactory* factoryToAdd) = 0;
|
||||
|
||||
//! Get amount of registered scene node factories.
|
||||
virtual u32 getRegisteredSceneNodeFactoryCount() const = 0;
|
||||
|
||||
//! Get a scene node factory by index
|
||||
/** \return Pointer to the requested scene node factory, or 0 if it does not exist.
|
||||
This pointer should not be dropped. See IReferenceCounted::drop() for more information. */
|
||||
virtual ISceneNodeFactory* getSceneNodeFactory(u32 index) = 0;
|
||||
|
||||
//! Get typename from a scene node type or null if not found
|
||||
virtual const c8* getSceneNodeTypeName(ESCENE_NODE_TYPE type) = 0;
|
||||
|
||||
//! Adds a scene node to the scene by name
|
||||
/** \return Pointer to the scene node added by a factory
|
||||
This pointer should not be dropped. See IReferenceCounted::drop() for more information. */
|
||||
virtual ISceneNode* addSceneNode(const char* sceneNodeTypeName, ISceneNode* parent=0) = 0;
|
||||
|
||||
//! Creates a new scene manager.
|
||||
/** This can be used to easily draw and/or store two
|
||||
independent scenes at the same time. The mesh cache will be
|
||||
|
@ -1,68 +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 __I_SCENE_NODE_FACTORY_H_INCLUDED__
|
||||
#define __I_SCENE_NODE_FACTORY_H_INCLUDED__
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "ESceneNodeTypes.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
||||
namespace scene
|
||||
{
|
||||
class ISceneNode;
|
||||
|
||||
//! Interface for dynamic creation of scene nodes
|
||||
/** To be able to add custom scene nodes to Irrlicht and to make it possible for the
|
||||
scene manager to save and load those external scene nodes, simply implement this
|
||||
interface and register it in you scene manager via ISceneManager::registerSceneNodeFactory.
|
||||
Note: When implementing your own scene node factory, don't call ISceneNodeManager::grab() to
|
||||
increase the reference counter of the scene node manager. This is not necessary because the
|
||||
scene node manager will grab() the factory anyway, and otherwise cyclic references will
|
||||
be created and the scene manager and all its nodes won't get deallocated.
|
||||
*/
|
||||
class ISceneNodeFactory : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
//! adds a scene node to the scene graph based on its type id
|
||||
/** \param type: Type of the scene node to add.
|
||||
\param parent: Parent scene node of the new node, can be null to add the scene node to the root.
|
||||
\return Returns pointer to the new scene node or null if not successful.
|
||||
This pointer should not be dropped. See IReferenceCounted::drop() for more information. */
|
||||
virtual ISceneNode* addSceneNode(ESCENE_NODE_TYPE type, ISceneNode* parent=0) = 0;
|
||||
|
||||
//! adds a scene node to the scene graph based on its type name
|
||||
/** \param typeName: Type name of the scene node to add.
|
||||
\param parent: Parent scene node of the new node, can be null to add the scene node to the root.
|
||||
\return Returns pointer to the new scene node or null if not successful.
|
||||
This pointer should not be dropped. See IReferenceCounted::drop() for more information. */
|
||||
virtual ISceneNode* addSceneNode(const c8* typeName, ISceneNode* parent=0) = 0;
|
||||
|
||||
//! returns amount of scene node types this factory is able to create
|
||||
virtual u32 getCreatableSceneNodeTypeCount() const = 0;
|
||||
|
||||
//! returns type of a creatable scene node type
|
||||
/** \param idx: Index of scene node type in this factory. Must be a value between 0 and
|
||||
getCreatableSceneNodeTypeCount() */
|
||||
virtual ESCENE_NODE_TYPE getCreateableSceneNodeType(u32 idx) const = 0;
|
||||
|
||||
//! returns type name of a creatable scene node type by index
|
||||
/** \param idx: Index of scene node type in this factory. Must be a value between 0 and
|
||||
getCreatableSceneNodeTypeCount() */
|
||||
virtual const c8* getCreateableSceneNodeTypeName(u32 idx) const = 0;
|
||||
|
||||
//! returns type name of a creatable scene node type
|
||||
/** \param type: Type of scene node.
|
||||
\return: Returns name of scene node type if this factory can create the type, otherwise 0. */
|
||||
virtual const c8* getCreateableSceneNodeTypeName(ESCENE_NODE_TYPE type) const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
@ -41,7 +41,6 @@ namespace video
|
||||
struct S3DVertex;
|
||||
struct S3DVertex2TCoords;
|
||||
struct S3DVertexTangents;
|
||||
struct SLight;
|
||||
class IImageLoader;
|
||||
class IImageWriter;
|
||||
class IMaterialRenderer;
|
||||
@ -332,7 +331,7 @@ namespace video
|
||||
_IRR_DEPRECATED_ ITexture* addTexture(const io::path& name, IImage* image, void* mipmapData)
|
||||
{
|
||||
if (image)
|
||||
image->setMipMapsData(mipmapData, false, true);
|
||||
image->setMipMapsData(mipmapData, false);
|
||||
|
||||
return addTexture(name, image);
|
||||
}
|
||||
@ -1053,33 +1052,6 @@ namespace video
|
||||
\return Amount of primitives drawn in the last frame. */
|
||||
virtual u32 getPrimitiveCountDrawn( u32 mode =0 ) const =0;
|
||||
|
||||
//! Deletes all dynamic lights which were previously added with addDynamicLight().
|
||||
virtual void deleteAllDynamicLights() =0;
|
||||
|
||||
//! adds a dynamic light, returning an index to the light
|
||||
//! \param light: the light data to use to create the light
|
||||
//! \return An index to the light, or -1 if an error occurs
|
||||
virtual s32 addDynamicLight(const SLight& light) =0;
|
||||
|
||||
//! Returns the maximal amount of dynamic lights the device can handle
|
||||
/** \return Maximal amount of dynamic lights. */
|
||||
virtual u32 getMaximalDynamicLightAmount() const =0;
|
||||
|
||||
//! Returns amount of dynamic lights currently set
|
||||
/** \return Amount of dynamic lights currently set */
|
||||
virtual u32 getDynamicLightCount() const =0;
|
||||
|
||||
//! Returns light data which was previously set by IVideoDriver::addDynamicLight().
|
||||
/** \param idx Zero based index of the light. Must be 0 or
|
||||
greater and smaller than IVideoDriver::getDynamicLightCount.
|
||||
\return Light data. */
|
||||
virtual const SLight& getDynamicLight(u32 idx) const =0;
|
||||
|
||||
//! Turns a dynamic light on or off
|
||||
//! \param lightIndex: the index returned by addDynamicLight
|
||||
//! \param turnOn: true to turn the light on, false to turn it off
|
||||
virtual void turnLightOn(s32 lightIndex, bool turnOn) =0;
|
||||
|
||||
//! Gets name of this video driver.
|
||||
/** \return Returns the name of the video driver, e.g. in case
|
||||
of the Direct3D8 driver, it would return "Direct3D 8.1". */
|
||||
|
@ -1,58 +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 __IRR_I_VIDEO_MODE_LIST_H_INCLUDED__
|
||||
#define __IRR_I_VIDEO_MODE_LIST_H_INCLUDED__
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "dimension2d.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace video
|
||||
{
|
||||
|
||||
//! A list of all available video modes.
|
||||
/** You can get a list via IrrlichtDevice::getVideoModeList().
|
||||
You only need the null device (EDT_NULL) to get the video-modes. */
|
||||
class IVideoModeList : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Gets amount of video modes in the list.
|
||||
/** \return Returns amount of video modes. */
|
||||
virtual s32 getVideoModeCount() const = 0;
|
||||
|
||||
//! Get the screen size of a video mode in pixels.
|
||||
/** \param modeNumber: zero based index of the video mode.
|
||||
\return Size of screen in pixels of the specified video mode. */
|
||||
virtual core::dimension2d<u32> getVideoModeResolution(s32 modeNumber) const = 0;
|
||||
|
||||
//! Get a supported screen size with certain constraints.
|
||||
/** \param minSize: Minimum dimensions required.
|
||||
\param maxSize: Maximum dimensions allowed.
|
||||
\return Size of screen in pixels which matches the requirements.
|
||||
as good as possible. */
|
||||
virtual core::dimension2d<u32> getVideoModeResolution(const core::dimension2d<u32>& minSize, const core::dimension2d<u32>& maxSize) const = 0;
|
||||
|
||||
//! Get the pixel depth of a video mode in bits.
|
||||
/** \param modeNumber: zero based index of the video mode.
|
||||
\return Size of each pixel of the specified video mode in bits. */
|
||||
virtual s32 getVideoModeDepth(s32 modeNumber) const = 0;
|
||||
|
||||
//! Get current desktop screen resolution.
|
||||
/** \return Size of screen in pixels of the current desktop video mode. */
|
||||
virtual const core::dimension2d<u32>& getDesktopResolution() const = 0;
|
||||
|
||||
//! Get the pixel depth of a video mode in bits.
|
||||
/** \return Size of each pixel of the current desktop video mode in bits. */
|
||||
virtual s32 getDesktopDepth() const = 0;
|
||||
};
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -6,8 +6,8 @@
|
||||
#define __IRR_COMPILE_CONFIG_H_INCLUDED__
|
||||
|
||||
//! Identifies the IrrlichtMt fork customized for the Minetest engine
|
||||
#define IRRLICHT_VERSION_MT_REVISION 6
|
||||
#define IRRLICHT_VERSION_MT "mt6"
|
||||
#define IRRLICHT_VERSION_MT_REVISION 9
|
||||
#define IRRLICHT_VERSION_MT "mt9"
|
||||
|
||||
//! Irrlicht SDK Version
|
||||
#define IRRLICHT_VERSION_MAJOR 1
|
||||
@ -37,8 +37,6 @@
|
||||
//! _IRR_COMPILE_WITH_OSX_DEVICE_ for Cocoa native windowing on OSX
|
||||
//! _IRR_COMPILE_WITH_X11_DEVICE_ for Linux X11 based device
|
||||
//! _IRR_COMPILE_WITH_SDL_DEVICE_ for platform independent SDL framework
|
||||
//! _IRR_COMPILE_WITH_CONSOLE_DEVICE_ for no windowing system, used as a fallback
|
||||
//! _IRR_COMPILE_WITH_FB_DEVICE_ for framebuffer systems
|
||||
|
||||
//! Passing defines to the compiler which have NO in front of the _IRR definename is an alternative
|
||||
//! way which can be used to disable defines (instead of outcommenting them in this header).
|
||||
@ -52,12 +50,6 @@
|
||||
#undef _IRR_COMPILE_WITH_SDL_DEVICE_
|
||||
#endif
|
||||
|
||||
//! Comment this line to compile without the fallback console device.
|
||||
#define _IRR_COMPILE_WITH_CONSOLE_DEVICE_
|
||||
#ifdef NO_IRR_COMPILE_WITH_CONSOLE_DEVICE_
|
||||
#undef _IRR_COMPILE_WITH_CONSOLE_DEVICE_
|
||||
#endif
|
||||
|
||||
//! WIN32 for Windows32
|
||||
//! WIN64 for Windows64
|
||||
// The windows platform and API support SDL and WINDOW device
|
||||
@ -280,19 +272,9 @@ define out. */
|
||||
#undef _IRR_COMPILE_WITH_X11_
|
||||
#endif
|
||||
|
||||
//! On some Linux systems the XF86 vidmode extension, X11 RandR, or XInput2 are missing.
|
||||
//! Use these defines to add/remove support for those dependencies as needed.
|
||||
//! XInput2 (library called Xi) is currently only used to support touch-input.
|
||||
#if defined(_IRR_LINUX_PLATFORM_) && defined(_IRR_COMPILE_WITH_X11_)
|
||||
#define _IRR_LINUX_X11_VIDMODE_
|
||||
//#define _IRR_LINUX_X11_RANDR_
|
||||
//#define _IRR_LINUX_X11_XINPUT2_
|
||||
#ifdef NO_IRR_LINUX_X11_VIDMODE_
|
||||
#undef _IRR_LINUX_X11_VIDMODE_
|
||||
#endif
|
||||
#ifdef NO_IRR_LINUX_X11_RANDR_
|
||||
#undef _IRR_LINUX_X11_RANDR_
|
||||
#endif
|
||||
//! XInput2 (library called Xi) is currently only used to support touch-input.
|
||||
#define _IRR_LINUX_X11_XINPUT2_
|
||||
#ifdef NO_IRR_LINUX_X11_XINPUT2_
|
||||
#undef _IRR_LINUX_X11_XINPUT2_
|
||||
#endif
|
||||
|
@ -12,7 +12,6 @@
|
||||
#include "EDeviceTypes.h"
|
||||
#include "IEventReceiver.h"
|
||||
#include "ICursorControl.h"
|
||||
#include "IVideoModeList.h"
|
||||
#include "ITimer.h"
|
||||
#include "IOSOperator.h"
|
||||
|
||||
@ -20,7 +19,6 @@ namespace irr
|
||||
{
|
||||
class ILogger;
|
||||
class IEventReceiver;
|
||||
class IRandomizer;
|
||||
|
||||
namespace io {
|
||||
class IFileSystem;
|
||||
@ -111,14 +109,6 @@ namespace irr
|
||||
/** \return Pointer to the logger. */
|
||||
virtual ILogger* getLogger() = 0;
|
||||
|
||||
//! Gets a list with all video modes available.
|
||||
/** You only need a null driver (ED_NULL) to access
|
||||
those video modes. So you can get the available modes
|
||||
before starting any other video driver.
|
||||
\return Pointer to a list with all video modes supported
|
||||
by the gfx adapter. */
|
||||
virtual video::IVideoModeList* getVideoModeList() = 0;
|
||||
|
||||
//! Get context manager
|
||||
virtual video::IContextManager* getContextManager() = 0;
|
||||
|
||||
@ -136,22 +126,6 @@ namespace irr
|
||||
\return Pointer to the ITimer object. */
|
||||
virtual ITimer* getTimer() = 0;
|
||||
|
||||
//! Provides access to the engine's currently set randomizer.
|
||||
/** \return Pointer to the IRandomizer object. */
|
||||
virtual IRandomizer* getRandomizer() const =0;
|
||||
|
||||
//! Sets a new randomizer.
|
||||
/** \param r Pointer to the new IRandomizer object. This object is
|
||||
grab()'ed by the engine and will be released upon the next setRandomizer
|
||||
call or upon device destruction. */
|
||||
virtual void setRandomizer(IRandomizer* r) =0;
|
||||
|
||||
//! Creates a new default randomizer.
|
||||
/** The default randomizer provides the random sequence known from previous
|
||||
Irrlicht versions and is the initial randomizer set on device creation.
|
||||
\return Pointer to the default IRandomizer object. */
|
||||
virtual IRandomizer* createDefaultRandomizer() const =0;
|
||||
|
||||
//! Sets the caption of the window.
|
||||
/** \param text: New text of the window caption. */
|
||||
virtual void setWindowCaption(const wchar_t* text) = 0;
|
||||
@ -296,14 +270,6 @@ namespace irr
|
||||
//! Is device motion available.
|
||||
virtual bool isDeviceMotionAvailable() = 0;
|
||||
|
||||
//! Set the current Gamma Value for the Display
|
||||
virtual bool setGammaRamp(f32 red, f32 green, f32 blue,
|
||||
f32 relativebrightness, f32 relativecontrast) =0;
|
||||
|
||||
//! Get the current Gamma Value for the Display
|
||||
virtual bool getGammaRamp(f32 &red, f32 &green, f32 &blue,
|
||||
f32 &brightness, f32 &contrast) =0;
|
||||
|
||||
//! Set the maximal elapsed time between 2 clicks to generate doubleclicks for the mouse. It also affects tripleclick behavior.
|
||||
/** When set to 0 no double- and tripleclicks will be generated.
|
||||
\param timeMs maximal time in milliseconds for two consecutive clicks to be recognized as double click
|
||||
@ -342,24 +308,6 @@ namespace irr
|
||||
{
|
||||
case video::EDT_NULL:
|
||||
return true;
|
||||
case video::EDT_SOFTWARE:
|
||||
#ifdef _IRR_COMPILE_WITH_SOFTWARE_
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
case video::EDT_BURNINGSVIDEO:
|
||||
#ifdef _IRR_COMPILE_WITH_BURNINGSVIDEO_
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
case video::EDT_DIRECT3D9:
|
||||
#ifdef _IRR_COMPILE_WITH_DIRECT3D_9_
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
case video::EDT_OPENGL:
|
||||
#ifdef _IRR_COMPILE_WITH_OPENGL_
|
||||
return true;
|
||||
|
@ -38,14 +38,14 @@ namespace scene
|
||||
|
||||
//! Gets the frame count of the animated mesh.
|
||||
/** \return Amount of frames. If the amount is 1, it is a static, non animated mesh. */
|
||||
virtual u32 getFrameCount() const _IRR_OVERRIDE_
|
||||
u32 getFrameCount() const override
|
||||
{
|
||||
return Meshes.size();
|
||||
}
|
||||
|
||||
//! Gets the default animation speed of the animated mesh.
|
||||
/** \return Amount of frames per second. If the amount is 0, it is a static, non animated mesh. */
|
||||
virtual f32 getAnimationSpeed() const _IRR_OVERRIDE_
|
||||
f32 getAnimationSpeed() const override
|
||||
{
|
||||
return FramesPerSecond;
|
||||
}
|
||||
@ -53,7 +53,7 @@ namespace scene
|
||||
//! Gets the frame count of the animated mesh.
|
||||
/** \param fps Frames per second to play the animation with. If the amount is 0, it is not animated.
|
||||
The actual speed is set in the scene node the mesh is instantiated in.*/
|
||||
virtual void setAnimationSpeed(f32 fps) _IRR_OVERRIDE_
|
||||
void setAnimationSpeed(f32 fps) override
|
||||
{
|
||||
FramesPerSecond=fps;
|
||||
}
|
||||
@ -66,7 +66,7 @@ namespace scene
|
||||
\param startFrameLoop: start frame
|
||||
\param endFrameLoop: end frame
|
||||
\return The animated mesh based on a detail level. */
|
||||
virtual IMesh* getMesh(s32 frame, s32 detailLevel=255, s32 startFrameLoop=-1, s32 endFrameLoop=-1) _IRR_OVERRIDE_
|
||||
IMesh* getMesh(s32 frame, s32 detailLevel=255, s32 startFrameLoop=-1, s32 endFrameLoop=-1) override
|
||||
{
|
||||
if (Meshes.empty())
|
||||
return 0;
|
||||
@ -86,13 +86,13 @@ namespace scene
|
||||
|
||||
//! Returns an axis aligned bounding box of the mesh.
|
||||
/** \return A bounding box of this mesh is returned. */
|
||||
virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_
|
||||
const core::aabbox3d<f32>& getBoundingBox() const override
|
||||
{
|
||||
return Box;
|
||||
}
|
||||
|
||||
//! set user axis aligned bounding box
|
||||
virtual void setBoundingBox(const core::aabbox3df& box) _IRR_OVERRIDE_
|
||||
void setBoundingBox(const core::aabbox3df& box) override
|
||||
{
|
||||
Box = box;
|
||||
}
|
||||
@ -112,13 +112,13 @@ namespace scene
|
||||
}
|
||||
|
||||
//! Returns the type of the animated mesh.
|
||||
virtual E_ANIMATED_MESH_TYPE getMeshType() const _IRR_OVERRIDE_
|
||||
E_ANIMATED_MESH_TYPE getMeshType() const override
|
||||
{
|
||||
return Type;
|
||||
}
|
||||
|
||||
//! returns amount of mesh buffers.
|
||||
virtual u32 getMeshBufferCount() const _IRR_OVERRIDE_
|
||||
u32 getMeshBufferCount() const override
|
||||
{
|
||||
if (Meshes.empty())
|
||||
return 0;
|
||||
@ -127,7 +127,7 @@ namespace scene
|
||||
}
|
||||
|
||||
//! returns pointer to a mesh buffer
|
||||
virtual IMeshBuffer* getMeshBuffer(u32 nr) const _IRR_OVERRIDE_
|
||||
IMeshBuffer* getMeshBuffer(u32 nr) const override
|
||||
{
|
||||
if (Meshes.empty())
|
||||
return 0;
|
||||
@ -139,7 +139,7 @@ namespace scene
|
||||
/** \param material: material to search for
|
||||
\return Returns the pointer to the mesh buffer or
|
||||
NULL if there is no such mesh buffer. */
|
||||
virtual IMeshBuffer* getMeshBuffer( const video::SMaterial &material) const _IRR_OVERRIDE_
|
||||
IMeshBuffer* getMeshBuffer( const video::SMaterial &material) const override
|
||||
{
|
||||
if (Meshes.empty())
|
||||
return 0;
|
||||
@ -148,21 +148,21 @@ namespace scene
|
||||
}
|
||||
|
||||
//! Set a material flag for all meshbuffers of this mesh.
|
||||
virtual void setMaterialFlag(video::E_MATERIAL_FLAG flag, bool newvalue) _IRR_OVERRIDE_
|
||||
void setMaterialFlag(video::E_MATERIAL_FLAG flag, bool newvalue) override
|
||||
{
|
||||
for (u32 i=0; i<Meshes.size(); ++i)
|
||||
Meshes[i]->setMaterialFlag(flag, newvalue);
|
||||
}
|
||||
|
||||
//! set the hardware mapping hint, for driver
|
||||
virtual void setHardwareMappingHint( E_HARDWARE_MAPPING newMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX ) _IRR_OVERRIDE_
|
||||
void setHardwareMappingHint( E_HARDWARE_MAPPING newMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX ) override
|
||||
{
|
||||
for (u32 i=0; i<Meshes.size(); ++i)
|
||||
Meshes[i]->setHardwareMappingHint(newMappingHint, buffer);
|
||||
}
|
||||
|
||||
//! flags the meshbuffer as changed, reloads hardware buffers
|
||||
virtual void setDirty(E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX) _IRR_OVERRIDE_
|
||||
void setDirty(E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX) override
|
||||
{
|
||||
for (u32 i=0; i<Meshes.size(); ++i)
|
||||
Meshes[i]->setDirty(buffer);
|
||||
|
@ -98,11 +98,9 @@ namespace irr
|
||||
/** This setting decides the windowing system used by the device, most device types are native
|
||||
to a specific operating system and so may not be available.
|
||||
EIDT_WIN32 is only available on Windows desktops,
|
||||
EIDT_WINCE is only available on Windows mobile devices,
|
||||
EIDT_COCOA is only available on Mac OSX,
|
||||
EIDT_X11 is available on Linux, Solaris, BSD and other operating systems which use X11,
|
||||
EIDT_SDL is available on most systems if compiled in,
|
||||
EIDT_CONSOLE is usually available but can only render to text,
|
||||
EIDT_BEST will select the best available device for your operating system.
|
||||
Default: EIDT_BEST. */
|
||||
E_DEVICE_TYPE DeviceType;
|
||||
|
101
include/SLight.h
101
include/SLight.h
@ -1,101 +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 __S_LIGHT_H_INCLUDED__
|
||||
#define __S_LIGHT_H_INCLUDED__
|
||||
|
||||
#include "SColor.h"
|
||||
#include "vector3d.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace video
|
||||
{
|
||||
|
||||
//! Enumeration for different types of lights
|
||||
enum E_LIGHT_TYPE
|
||||
{
|
||||
//! point light, it has a position in space and radiates light in all directions
|
||||
ELT_POINT,
|
||||
//! spot light, it has a position in space, a direction, and a limited cone of influence
|
||||
ELT_SPOT,
|
||||
//! directional light, coming from a direction from an infinite distance
|
||||
ELT_DIRECTIONAL,
|
||||
|
||||
//! Only used for counting the elements of this enum
|
||||
ELT_COUNT
|
||||
};
|
||||
|
||||
//! Names for light types
|
||||
const c8* const LightTypeNames[] =
|
||||
{
|
||||
"Point",
|
||||
"Spot",
|
||||
"Directional",
|
||||
0
|
||||
};
|
||||
|
||||
//! structure for holding data describing a dynamic point light.
|
||||
/** Irrlicht supports point lights, spot lights, and directional lights.
|
||||
*/
|
||||
struct SLight
|
||||
{
|
||||
SLight() : AmbientColor(0.f,0.f,0.f), DiffuseColor(1.f,1.f,1.f),
|
||||
SpecularColor(1.f,1.f,1.f), Attenuation(1.f,0.f,0.f),
|
||||
OuterCone(45.f), InnerCone(0.f), Falloff(2.f),
|
||||
Position(0.f,0.f,0.f), Direction(0.f,0.f,1.f),
|
||||
Radius(100.f), Type(ELT_POINT), CastShadows(true)
|
||||
{}
|
||||
|
||||
//! Ambient color emitted by the light
|
||||
SColorf AmbientColor;
|
||||
|
||||
//! Diffuse color emitted by the light.
|
||||
/** This is the primary color you want to set. */
|
||||
SColorf DiffuseColor;
|
||||
|
||||
//! Specular color emitted by the light.
|
||||
/** For details how to use specular highlights, see SMaterial::Shininess */
|
||||
SColorf SpecularColor;
|
||||
|
||||
//! Attenuation factors (constant, linear, quadratic)
|
||||
/** Changes the light strength fading over distance.
|
||||
Can also be altered by setting the radius, Attenuation will change to
|
||||
(0,1.f/radius,0). Can be overridden after radius was set. */
|
||||
core::vector3df Attenuation;
|
||||
|
||||
//! The angle of the spot's outer cone. Ignored for other lights.
|
||||
f32 OuterCone;
|
||||
|
||||
//! The angle of the spot's inner cone. Ignored for other lights.
|
||||
f32 InnerCone;
|
||||
|
||||
//! The light strength's decrease between Outer and Inner cone. Only for spot lights
|
||||
f32 Falloff;
|
||||
|
||||
//! Read-ONLY! Position of the light.
|
||||
/** If Type is ELT_DIRECTIONAL, it is ignored. Changed via light scene node's position. */
|
||||
core::vector3df Position;
|
||||
|
||||
//! Read-ONLY! Direction of the light.
|
||||
/** If Type is ELT_POINT, it is ignored. Changed via light scene node's rotation. */
|
||||
core::vector3df Direction;
|
||||
|
||||
//! Read-ONLY! Radius of light. Everything within this radius will be lighted.
|
||||
/** On OpenGL light doesn't stop at radius. To get same light as in OpenGL in other drivers
|
||||
do set the radius to a large value like sqrt(FLT_MAX) and then set the Attenuation afterwards.
|
||||
*/
|
||||
f32 Radius;
|
||||
|
||||
//! Read-ONLY! Type of the light. Default: ELT_POINT
|
||||
E_LIGHT_TYPE Type;
|
||||
|
||||
//! Read-ONLY! Does the light cast shadows?
|
||||
bool CastShadows:1;
|
||||
};
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
@ -6,7 +6,6 @@
|
||||
#define __S_MATERIAL_LAYER_H_INCLUDED__
|
||||
|
||||
#include "matrix4.h"
|
||||
#include "irrAllocator.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
@ -69,8 +68,7 @@ namespace video
|
||||
{
|
||||
if ( TextureMatrix )
|
||||
{
|
||||
MatrixAllocator.destruct(TextureMatrix);
|
||||
MatrixAllocator.deallocate(TextureMatrix);
|
||||
delete TextureMatrix;
|
||||
}
|
||||
}
|
||||
|
||||
@ -90,8 +88,7 @@ namespace video
|
||||
*TextureMatrix = *other.TextureMatrix;
|
||||
else
|
||||
{
|
||||
MatrixAllocator.destruct(TextureMatrix);
|
||||
MatrixAllocator.deallocate(TextureMatrix);
|
||||
delete TextureMatrix;
|
||||
TextureMatrix = 0;
|
||||
}
|
||||
}
|
||||
@ -99,8 +96,7 @@ namespace video
|
||||
{
|
||||
if (other.TextureMatrix)
|
||||
{
|
||||
TextureMatrix = MatrixAllocator.allocate(1);
|
||||
MatrixAllocator.construct(TextureMatrix,*other.TextureMatrix);
|
||||
TextureMatrix = new core::matrix4(*other.TextureMatrix);
|
||||
}
|
||||
else
|
||||
TextureMatrix = 0;
|
||||
@ -122,8 +118,7 @@ namespace video
|
||||
{
|
||||
if (!TextureMatrix)
|
||||
{
|
||||
TextureMatrix = MatrixAllocator.allocate(1);
|
||||
MatrixAllocator.construct(TextureMatrix,core::IdentityMatrix);
|
||||
TextureMatrix = new core::matrix4();
|
||||
}
|
||||
return *TextureMatrix;
|
||||
}
|
||||
@ -146,8 +141,7 @@ namespace video
|
||||
{
|
||||
if (!TextureMatrix)
|
||||
{
|
||||
TextureMatrix = MatrixAllocator.allocate(1);
|
||||
MatrixAllocator.construct(TextureMatrix,mat);
|
||||
TextureMatrix = new core::matrix4(mat);
|
||||
}
|
||||
else
|
||||
*TextureMatrix = mat;
|
||||
@ -216,7 +210,6 @@ namespace video
|
||||
|
||||
private:
|
||||
friend class SMaterial;
|
||||
irr::core::irrAllocator<irr::core::matrix4> MatrixAllocator;
|
||||
|
||||
//! Texture Matrix
|
||||
/** Do not access this element directly as the internal
|
||||
|
@ -44,20 +44,20 @@ namespace scene
|
||||
|
||||
|
||||
//! returns amount of mesh buffers.
|
||||
virtual u32 getMeshBufferCount() const _IRR_OVERRIDE_
|
||||
u32 getMeshBufferCount() const override
|
||||
{
|
||||
return MeshBuffers.size();
|
||||
}
|
||||
|
||||
//! returns pointer to a mesh buffer
|
||||
virtual IMeshBuffer* getMeshBuffer(u32 nr) const _IRR_OVERRIDE_
|
||||
IMeshBuffer* getMeshBuffer(u32 nr) const override
|
||||
{
|
||||
return MeshBuffers[nr];
|
||||
}
|
||||
|
||||
//! returns a meshbuffer which fits a material
|
||||
/** reverse search */
|
||||
virtual IMeshBuffer* getMeshBuffer( const video::SMaterial & material) const _IRR_OVERRIDE_
|
||||
IMeshBuffer* getMeshBuffer( const video::SMaterial & material) const override
|
||||
{
|
||||
for (s32 i = (s32)MeshBuffers.size()-1; i >= 0; --i)
|
||||
{
|
||||
@ -69,13 +69,13 @@ namespace scene
|
||||
}
|
||||
|
||||
//! returns an axis aligned bounding box
|
||||
virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_
|
||||
const core::aabbox3d<f32>& getBoundingBox() const override
|
||||
{
|
||||
return BoundingBox;
|
||||
}
|
||||
|
||||
//! set user axis aligned bounding box
|
||||
virtual void setBoundingBox( const core::aabbox3df& box) _IRR_OVERRIDE_
|
||||
void setBoundingBox( const core::aabbox3df& box) override
|
||||
{
|
||||
BoundingBox = box;
|
||||
}
|
||||
@ -118,21 +118,21 @@ namespace scene
|
||||
}
|
||||
|
||||
//! sets a flag of all contained materials to a new value
|
||||
virtual void setMaterialFlag(video::E_MATERIAL_FLAG flag, bool newvalue) _IRR_OVERRIDE_
|
||||
void setMaterialFlag(video::E_MATERIAL_FLAG flag, bool newvalue) override
|
||||
{
|
||||
for (u32 i=0; i<MeshBuffers.size(); ++i)
|
||||
MeshBuffers[i]->getMaterial().setFlag(flag, newvalue);
|
||||
}
|
||||
|
||||
//! set the hardware mapping hint, for driver
|
||||
virtual void setHardwareMappingHint( E_HARDWARE_MAPPING newMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX ) _IRR_OVERRIDE_
|
||||
void setHardwareMappingHint( E_HARDWARE_MAPPING newMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX ) override
|
||||
{
|
||||
for (u32 i=0; i<MeshBuffers.size(); ++i)
|
||||
MeshBuffers[i]->setHardwareMappingHint(newMappingHint, buffer);
|
||||
}
|
||||
|
||||
//! flags the meshbuffer as changed, reloads hardware buffers
|
||||
virtual void setDirty(E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX) _IRR_OVERRIDE_
|
||||
void setDirty(E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX) override
|
||||
{
|
||||
for (u32 i=0; i<MeshBuffers.size(); ++i)
|
||||
MeshBuffers[i]->setDirty(buffer);
|
||||
|
@ -32,13 +32,13 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! Get Material of this buffer.
|
||||
virtual const video::SMaterial& getMaterial() const _IRR_OVERRIDE_
|
||||
const video::SMaterial& getMaterial() const override
|
||||
{
|
||||
return Material;
|
||||
}
|
||||
|
||||
//! Get Material of this buffer.
|
||||
virtual video::SMaterial& getMaterial() _IRR_OVERRIDE_
|
||||
video::SMaterial& getMaterial() override
|
||||
{
|
||||
return Material;
|
||||
}
|
||||
@ -58,7 +58,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! Get pointer to vertex array
|
||||
virtual const void* getVertices() const _IRR_OVERRIDE_
|
||||
const void* getVertices() const override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
@ -72,7 +72,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! Get pointer to vertex array
|
||||
virtual void* getVertices() _IRR_OVERRIDE_
|
||||
void* getVertices() override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
@ -86,7 +86,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! Get vertex count
|
||||
virtual u32 getVertexCount() const _IRR_OVERRIDE_
|
||||
u32 getVertexCount() const override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
@ -101,43 +101,43 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
|
||||
//! Get type of index data which is stored in this meshbuffer.
|
||||
/** \return Index type of this buffer. */
|
||||
virtual video::E_INDEX_TYPE getIndexType() const _IRR_OVERRIDE_
|
||||
video::E_INDEX_TYPE getIndexType() const override
|
||||
{
|
||||
return video::EIT_16BIT;
|
||||
}
|
||||
|
||||
//! Get pointer to index array
|
||||
virtual const u16* getIndices() const _IRR_OVERRIDE_
|
||||
const u16* getIndices() const override
|
||||
{
|
||||
return Indices.const_pointer();
|
||||
}
|
||||
|
||||
//! Get pointer to index array
|
||||
virtual u16* getIndices() _IRR_OVERRIDE_
|
||||
u16* getIndices() override
|
||||
{
|
||||
return Indices.pointer();
|
||||
}
|
||||
|
||||
//! Get index count
|
||||
virtual u32 getIndexCount() const _IRR_OVERRIDE_
|
||||
u32 getIndexCount() const override
|
||||
{
|
||||
return Indices.size();
|
||||
}
|
||||
|
||||
//! Get bounding box
|
||||
virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_
|
||||
const core::aabbox3d<f32>& getBoundingBox() const override
|
||||
{
|
||||
return BoundingBox;
|
||||
}
|
||||
|
||||
//! Set bounding box
|
||||
virtual void setBoundingBox( const core::aabbox3df& box) _IRR_OVERRIDE_
|
||||
void setBoundingBox( const core::aabbox3df& box) override
|
||||
{
|
||||
BoundingBox = box;
|
||||
}
|
||||
|
||||
//! Recalculate bounding box
|
||||
virtual void recalculateBoundingBox() _IRR_OVERRIDE_
|
||||
void recalculateBoundingBox() override
|
||||
{
|
||||
if(!BoundingBoxNeedsRecalculated)
|
||||
return;
|
||||
@ -186,7 +186,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! Get vertex type
|
||||
virtual video::E_VERTEX_TYPE getVertexType() const _IRR_OVERRIDE_
|
||||
video::E_VERTEX_TYPE getVertexType() const override
|
||||
{
|
||||
return VertexType;
|
||||
}
|
||||
@ -244,7 +244,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! returns position of vertex i
|
||||
virtual const core::vector3df& getPosition(u32 i) const _IRR_OVERRIDE_
|
||||
const core::vector3df& getPosition(u32 i) const override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
@ -258,7 +258,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! returns position of vertex i
|
||||
virtual core::vector3df& getPosition(u32 i) _IRR_OVERRIDE_
|
||||
core::vector3df& getPosition(u32 i) override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
@ -272,7 +272,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! returns normal of vertex i
|
||||
virtual const core::vector3df& getNormal(u32 i) const _IRR_OVERRIDE_
|
||||
const core::vector3df& getNormal(u32 i) const override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
@ -286,7 +286,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! returns normal of vertex i
|
||||
virtual core::vector3df& getNormal(u32 i) _IRR_OVERRIDE_
|
||||
core::vector3df& getNormal(u32 i) override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
@ -300,7 +300,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! returns texture coords of vertex i
|
||||
virtual const core::vector2df& getTCoords(u32 i) const _IRR_OVERRIDE_
|
||||
const core::vector2df& getTCoords(u32 i) const override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
@ -314,7 +314,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! returns texture coords of vertex i
|
||||
virtual core::vector2df& getTCoords(u32 i) _IRR_OVERRIDE_
|
||||
core::vector2df& getTCoords(u32 i) override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
@ -328,25 +328,25 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! append the vertices and indices to the current buffer
|
||||
virtual void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices) _IRR_OVERRIDE_ {}
|
||||
void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices) override {}
|
||||
|
||||
//! append the meshbuffer to the current buffer
|
||||
virtual void append(const IMeshBuffer* const other) _IRR_OVERRIDE_ {}
|
||||
void append(const IMeshBuffer* const other) override {}
|
||||
|
||||
//! get the current hardware mapping hint for vertex buffers
|
||||
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const _IRR_OVERRIDE_
|
||||
E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const override
|
||||
{
|
||||
return MappingHint_Vertex;
|
||||
}
|
||||
|
||||
//! get the current hardware mapping hint for index buffers
|
||||
virtual E_HARDWARE_MAPPING getHardwareMappingHint_Index() const _IRR_OVERRIDE_
|
||||
E_HARDWARE_MAPPING getHardwareMappingHint_Index() const override
|
||||
{
|
||||
return MappingHint_Index;
|
||||
}
|
||||
|
||||
//! set the hardware mapping hint, for driver
|
||||
virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX ) _IRR_OVERRIDE_
|
||||
void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX ) override
|
||||
{
|
||||
if (Buffer==EBT_VERTEX)
|
||||
MappingHint_Vertex=NewMappingHint;
|
||||
@ -360,19 +360,19 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
}
|
||||
|
||||
//! Describe what kind of primitive geometry is used by the meshbuffer
|
||||
virtual void setPrimitiveType(E_PRIMITIVE_TYPE type) _IRR_OVERRIDE_
|
||||
void setPrimitiveType(E_PRIMITIVE_TYPE type) override
|
||||
{
|
||||
PrimitiveType = type;
|
||||
}
|
||||
|
||||
//! Get the kind of primitive geometry which is used by the meshbuffer
|
||||
virtual E_PRIMITIVE_TYPE getPrimitiveType() const _IRR_OVERRIDE_
|
||||
E_PRIMITIVE_TYPE getPrimitiveType() const override
|
||||
{
|
||||
return PrimitiveType;
|
||||
}
|
||||
|
||||
//! flags the mesh as changed, reloads hardware buffers
|
||||
virtual void setDirty(E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX) _IRR_OVERRIDE_
|
||||
void setDirty(E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX) override
|
||||
{
|
||||
if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_VERTEX)
|
||||
++ChangedID_Vertex;
|
||||
@ -380,15 +380,15 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
||||
++ChangedID_Index;
|
||||
}
|
||||
|
||||
virtual u32 getChangedID_Vertex() const _IRR_OVERRIDE_ {return ChangedID_Vertex;}
|
||||
u32 getChangedID_Vertex() const override {return ChangedID_Vertex;}
|
||||
|
||||
virtual u32 getChangedID_Index() const _IRR_OVERRIDE_ {return ChangedID_Index;}
|
||||
u32 getChangedID_Index() const override {return ChangedID_Index;}
|
||||
|
||||
virtual void setHWBuffer(void *ptr) const _IRR_OVERRIDE_ {
|
||||
void setHWBuffer(void *ptr) const override {
|
||||
HWBuffer = ptr;
|
||||
}
|
||||
|
||||
virtual void *getHWBuffer() const _IRR_OVERRIDE_ {
|
||||
void *getHWBuffer() const override {
|
||||
return HWBuffer;
|
||||
}
|
||||
|
||||
|
@ -24,199 +24,6 @@ namespace scene
|
||||
struct IVertexManipulator
|
||||
{
|
||||
};
|
||||
//! Vertex manipulator to set color to a fixed color for all vertices
|
||||
class SVertexColorSetManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexColorSetManipulator(video::SColor color) : Color(color) {}
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color=Color;
|
||||
}
|
||||
private:
|
||||
video::SColor Color;
|
||||
};
|
||||
//! Vertex manipulator to set the alpha value of the vertex color to a fixed value
|
||||
class SVertexColorSetAlphaManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexColorSetAlphaManipulator(u32 alpha) : Alpha(alpha) {}
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color.setAlpha(Alpha);
|
||||
}
|
||||
private:
|
||||
u32 Alpha;
|
||||
};
|
||||
//! Vertex manipulator which inverts the RGB values
|
||||
class SVertexColorInvertManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color.setRed(255-vertex.Color.getRed());
|
||||
vertex.Color.setGreen(255-vertex.Color.getGreen());
|
||||
vertex.Color.setBlue(255-vertex.Color.getBlue());
|
||||
}
|
||||
};
|
||||
//! Vertex manipulator to set vertex color to one of two values depending on a given threshold
|
||||
/** If average of the color value is >Threshold the High color is chosen, else Low. */
|
||||
class SVertexColorThresholdManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexColorThresholdManipulator(u8 threshold, video::SColor low,
|
||||
video::SColor high) : Threshold(threshold), Low(low), High(high) {}
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color = ((u8)vertex.Color.getAverage()>Threshold)?High:Low;
|
||||
}
|
||||
private:
|
||||
u8 Threshold;
|
||||
video::SColor Low;
|
||||
video::SColor High;
|
||||
};
|
||||
//! Vertex manipulator which adjusts the brightness by the given amount
|
||||
/** A positive value increases brightness, a negative value darkens the colors. */
|
||||
class SVertexColorBrightnessManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexColorBrightnessManipulator(s32 amount) : Amount(amount) {}
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color.setRed(core::clamp(vertex.Color.getRed()+Amount, 0u, 255u));
|
||||
vertex.Color.setGreen(core::clamp(vertex.Color.getGreen()+Amount, 0u, 255u));
|
||||
vertex.Color.setBlue(core::clamp(vertex.Color.getBlue()+Amount, 0u, 255u));
|
||||
}
|
||||
private:
|
||||
s32 Amount;
|
||||
};
|
||||
//! Vertex manipulator which adjusts the contrast by the given factor
|
||||
/** Factors over 1 increase contrast, below 1 reduce it. */
|
||||
class SVertexColorContrastManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexColorContrastManipulator(f32 factor) : Factor(factor) {}
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color.setRed(core::clamp(core::round32((vertex.Color.getRed()-128)*Factor)+128, 0, 255));
|
||||
vertex.Color.setGreen(core::clamp(core::round32((vertex.Color.getGreen()-128)*Factor)+128, 0, 255));
|
||||
vertex.Color.setBlue(core::clamp(core::round32((vertex.Color.getBlue()-128)*Factor)+128, 0, 255));
|
||||
}
|
||||
private:
|
||||
f32 Factor;
|
||||
};
|
||||
//! Vertex manipulator which adjusts the contrast by the given factor and brightness by a signed amount.
|
||||
/** Factors over 1 increase contrast, below 1 reduce it.
|
||||
A positive amount increases brightness, a negative one darkens the colors. */
|
||||
class SVertexColorContrastBrightnessManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexColorContrastBrightnessManipulator(f32 factor, s32 amount) : Factor(factor), Amount(amount+128) {}
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color.setRed(core::clamp(core::round32((vertex.Color.getRed()-128)*Factor)+Amount, 0, 255));
|
||||
vertex.Color.setGreen(core::clamp(core::round32((vertex.Color.getGreen()-128)*Factor)+Amount, 0, 255));
|
||||
vertex.Color.setBlue(core::clamp(core::round32((vertex.Color.getBlue()-128)*Factor)+Amount, 0, 255));
|
||||
}
|
||||
private:
|
||||
f32 Factor;
|
||||
s32 Amount;
|
||||
};
|
||||
//! Vertex manipulator which adjusts the brightness by a gamma operation
|
||||
/** A value over one increases brightness, one below darkens the colors. */
|
||||
class SVertexColorGammaManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexColorGammaManipulator(f32 gamma) : Gamma(1.f)
|
||||
{
|
||||
if (gamma != 0.f)
|
||||
Gamma = 1.f/gamma;
|
||||
}
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color.setRed(core::clamp(core::round32(powf((f32)(vertex.Color.getRed()),Gamma)), 0, 255));
|
||||
vertex.Color.setGreen(core::clamp(core::round32(powf((f32)(vertex.Color.getGreen()),Gamma)), 0, 255));
|
||||
vertex.Color.setBlue(core::clamp(core::round32(powf((f32)(vertex.Color.getBlue()),Gamma)), 0, 255));
|
||||
}
|
||||
private:
|
||||
f32 Gamma;
|
||||
};
|
||||
//! Vertex manipulator which scales the color values
|
||||
/** Can e.g be used for white balance, factor would be 255.f/brightest color. */
|
||||
class SVertexColorScaleManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexColorScaleManipulator(f32 factor) : Factor(factor) {}
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color.setRed(core::clamp(core::round32(vertex.Color.getRed()*Factor), 0, 255));
|
||||
vertex.Color.setGreen(core::clamp(core::round32(vertex.Color.getGreen()*Factor), 0, 255));
|
||||
vertex.Color.setBlue(core::clamp(core::round32(vertex.Color.getBlue()*Factor), 0, 255));
|
||||
}
|
||||
private:
|
||||
f32 Factor;
|
||||
};
|
||||
//! Vertex manipulator which desaturates the color values
|
||||
/** Uses the lightness value of the color. */
|
||||
class SVertexColorDesaturateToLightnessManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color=core::round32(vertex.Color.getLightness());
|
||||
}
|
||||
};
|
||||
//! Vertex manipulator which desaturates the color values
|
||||
/** Uses the average value of the color. */
|
||||
class SVertexColorDesaturateToAverageManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color=vertex.Color.getAverage();
|
||||
}
|
||||
};
|
||||
//! Vertex manipulator which desaturates the color values
|
||||
/** Uses the luminance value of the color. */
|
||||
class SVertexColorDesaturateToLuminanceManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color=core::round32(vertex.Color.getLuminance());
|
||||
}
|
||||
};
|
||||
//! Vertex manipulator which interpolates the color values
|
||||
/** Uses linear interpolation. */
|
||||
class SVertexColorInterpolateLinearManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexColorInterpolateLinearManipulator(video::SColor color, f32 factor) :
|
||||
Color(color), Factor(factor) {}
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color=vertex.Color.getInterpolated(Color, Factor);
|
||||
}
|
||||
private:
|
||||
video::SColor Color;
|
||||
f32 Factor;
|
||||
};
|
||||
//! Vertex manipulator which interpolates the color values
|
||||
/** Uses linear interpolation. */
|
||||
class SVertexColorInterpolateQuadraticManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexColorInterpolateQuadraticManipulator(video::SColor color1, video::SColor color2, f32 factor) :
|
||||
Color1(color1), Color2(color2), Factor(factor) {}
|
||||
void operator()(video::S3DVertex& vertex) const
|
||||
{
|
||||
vertex.Color=vertex.Color.getInterpolated_quadratic(Color1, Color2, Factor);
|
||||
}
|
||||
private:
|
||||
video::SColor Color1;
|
||||
video::SColor Color2;
|
||||
f32 Factor;
|
||||
};
|
||||
|
||||
//! Vertex manipulator which scales the position of the vertex
|
||||
class SVertexPositionScaleManipulator : public IVertexManipulator
|
||||
@ -232,74 +39,6 @@ namespace scene
|
||||
core::vector3df Factor;
|
||||
};
|
||||
|
||||
//! Vertex manipulator which scales the position of the vertex along the normals
|
||||
/** This can look more pleasing than the usual Scale operator, but
|
||||
depends on the mesh geometry.
|
||||
*/
|
||||
class SVertexPositionScaleAlongNormalsManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexPositionScaleAlongNormalsManipulator(const core::vector3df& factor) : Factor(factor) {}
|
||||
template <typename VType>
|
||||
void operator()(VType& vertex) const
|
||||
{
|
||||
vertex.Pos += vertex.Normal*Factor;
|
||||
}
|
||||
private:
|
||||
core::vector3df Factor;
|
||||
};
|
||||
|
||||
//! Vertex manipulator which transforms the position of the vertex
|
||||
class SVertexPositionTransformManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexPositionTransformManipulator(const core::matrix4& m) : Transformation(m) {}
|
||||
template <typename VType>
|
||||
void operator()(VType& vertex) const
|
||||
{
|
||||
Transformation.transformVect(vertex.Pos);
|
||||
}
|
||||
private:
|
||||
core::matrix4 Transformation;
|
||||
};
|
||||
|
||||
//! Vertex manipulator which transforms the normal of the vertex
|
||||
class SVertexNormalTransformManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexNormalTransformManipulator(const core::matrix4& m) : Transformation(m) {}
|
||||
template <typename VType>
|
||||
void operator()(VType& vertex) const
|
||||
{
|
||||
Transformation.transformVect(vertex.Normal);
|
||||
}
|
||||
private:
|
||||
core::matrix4 Transformation;
|
||||
};
|
||||
|
||||
//! Vertex manipulator which scales the TCoords of the vertex
|
||||
class SVertexTCoordsScaleManipulator : public IVertexManipulator
|
||||
{
|
||||
public:
|
||||
SVertexTCoordsScaleManipulator(const core::vector2df& factor, u32 uvSet=1) : Factor(factor), UVSet(uvSet) {}
|
||||
void operator()(video::S3DVertex2TCoords& vertex) const
|
||||
{
|
||||
if (1==UVSet)
|
||||
vertex.TCoords *= Factor;
|
||||
else if (2==UVSet)
|
||||
vertex.TCoords2 *= Factor;
|
||||
}
|
||||
template <typename VType>
|
||||
void operator()(VType& vertex) const
|
||||
{
|
||||
if (1==UVSet)
|
||||
vertex.TCoords *= Factor;
|
||||
}
|
||||
private:
|
||||
core::vector2df Factor;
|
||||
u32 UVSet;
|
||||
};
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
|
@ -1,55 +0,0 @@
|
||||
// Copyright (C) 2009-2012 Christian Stehno
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_DRIVER_CHOICE_H_INCLUDED__
|
||||
#define __E_DRIVER_CHOICE_H_INCLUDED__
|
||||
|
||||
#include <iostream>
|
||||
#include <cstdio>
|
||||
#include "EDriverTypes.h"
|
||||
#include "IrrlichtDevice.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
||||
//! ask user for driver
|
||||
static irr::video::E_DRIVER_TYPE driverChoiceConsole(bool allDrivers=false)
|
||||
{
|
||||
#if defined (_IRR_IPHONE_PLATFORM_) || defined (_IRR_ANDROID_PLATFORM_)
|
||||
return irr::video::EDT_OGLES2;
|
||||
#else
|
||||
printf("Please select the driver you want:\n");
|
||||
irr::u32 i=0;
|
||||
char c = 'a';
|
||||
|
||||
for (i=irr::video::EDT_COUNT; i>0; --i)
|
||||
{
|
||||
if ( allDrivers || irr::IrrlichtDevice::isDriverSupported(irr::video::E_DRIVER_TYPE(i-1)) )
|
||||
{
|
||||
printf(" (%c) %s\n", c, irr::video::DRIVER_TYPE_NAMES[i-1]);
|
||||
++c;
|
||||
}
|
||||
}
|
||||
|
||||
char userSelection;
|
||||
std::cin >> userSelection;
|
||||
c = 'a';
|
||||
|
||||
for (i=irr::video::EDT_COUNT; i>0; --i)
|
||||
{
|
||||
if ( allDrivers || irr::IrrlichtDevice::isDriverSupported(irr::video::E_DRIVER_TYPE(i-1)) )
|
||||
{
|
||||
if (userSelection == c)
|
||||
return irr::video::E_DRIVER_TYPE(i-1);
|
||||
++c;
|
||||
}
|
||||
}
|
||||
|
||||
return irr::video::EDT_COUNT;
|
||||
#endif
|
||||
}
|
||||
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
@ -1,113 +0,0 @@
|
||||
// Copyright (C) 2002-2012 Nikolaus Gebhardt
|
||||
// This file is part of the "Irrlicht Engine" and the "irrXML" project.
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h and irrXML.h
|
||||
|
||||
#ifndef __IRR_ALLOCATOR_H_INCLUDED__
|
||||
#define __IRR_ALLOCATOR_H_INCLUDED__
|
||||
|
||||
#include "irrTypes.h"
|
||||
#include <new>
|
||||
// necessary for older compilers
|
||||
#include <memory.h>
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace core
|
||||
{
|
||||
|
||||
//! Very simple allocator implementation, containers using it can be used across dll boundaries
|
||||
template<typename T>
|
||||
class irrAllocator
|
||||
{
|
||||
public:
|
||||
|
||||
//! Destructor
|
||||
virtual ~irrAllocator() {}
|
||||
|
||||
//! Allocate memory for an array of objects
|
||||
T* allocate(size_t cnt)
|
||||
{
|
||||
return (T*)internal_new(cnt* sizeof(T));
|
||||
}
|
||||
|
||||
//! Deallocate memory for an array of objects
|
||||
void deallocate(T* ptr)
|
||||
{
|
||||
internal_delete(ptr);
|
||||
}
|
||||
|
||||
//! Construct an element
|
||||
void construct(T* ptr, const T&e)
|
||||
{
|
||||
new ((void*)ptr) T(e);
|
||||
}
|
||||
|
||||
//! Destruct an element
|
||||
void destruct(T* ptr)
|
||||
{
|
||||
ptr->~T();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
virtual void* internal_new(size_t cnt)
|
||||
{
|
||||
return operator new(cnt);
|
||||
}
|
||||
|
||||
virtual void internal_delete(void* ptr)
|
||||
{
|
||||
operator delete(ptr);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
//! Fast allocator, only to be used in containers inside the same memory heap.
|
||||
/** Containers using it are NOT able to be used it across dll boundaries. Use this
|
||||
when using in an internal class or function or when compiled into a static lib */
|
||||
template<typename T>
|
||||
class irrAllocatorFast
|
||||
{
|
||||
public:
|
||||
|
||||
//! Allocate memory for an array of objects
|
||||
T* allocate(size_t cnt)
|
||||
{
|
||||
return (T*)operator new(cnt* sizeof(T));
|
||||
}
|
||||
|
||||
//! Deallocate memory for an array of objects
|
||||
void deallocate(T* ptr)
|
||||
{
|
||||
operator delete(ptr);
|
||||
}
|
||||
|
||||
//! Construct an element
|
||||
void construct(T* ptr, const T&e)
|
||||
{
|
||||
new ((void*)ptr) T(e);
|
||||
}
|
||||
|
||||
//! Destruct an element
|
||||
void destruct(T* ptr)
|
||||
{
|
||||
ptr->~T();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//! defines an allocation strategy (used only by irr::array so far)
|
||||
enum eAllocStrategy
|
||||
{
|
||||
ALLOC_STRATEGY_SAFE = 0, // increase size by 1
|
||||
ALLOC_STRATEGY_DOUBLE = 1, // double size when under 500 elements, beyond that increase by 1/4th size. Plus a small constant.
|
||||
ALLOC_STRATEGY_SQRT = 2 // not implemented
|
||||
};
|
||||
|
||||
|
||||
} // end namespace core
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
@ -227,7 +227,7 @@ public:
|
||||
/** \return Pointer to the array. */
|
||||
T* pointer()
|
||||
{
|
||||
return &m_data[0];
|
||||
return m_data.empty() ? nullptr : &m_data[0];
|
||||
}
|
||||
|
||||
|
||||
@ -235,7 +235,7 @@ public:
|
||||
/** \return Pointer to the array. */
|
||||
const T* const_pointer() const
|
||||
{
|
||||
return &m_data[0];
|
||||
return m_data.empty() ? nullptr : &m_data[0];
|
||||
}
|
||||
|
||||
|
||||
@ -394,7 +394,7 @@ public:
|
||||
{
|
||||
if (index >= m_data.size() || count < 1)
|
||||
return;
|
||||
count = std::min(count, (s32)m_data.size() - (s32)index);
|
||||
count = core::min_(count, (s32)m_data.size() - (s32)index);
|
||||
auto first = std::next(m_data.begin(), index);
|
||||
auto last = std::next(first, count);
|
||||
m_data.erase(first, last);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -112,13 +112,10 @@ For functions: template<class T> _IRR_DEPRECATED_ void test4(void) {}
|
||||
#define _IRR_DEPRECATED_
|
||||
#endif
|
||||
|
||||
//! Defines an override macro, to protect virtual functions from typos and other mismatches
|
||||
/** Usage in a derived class:
|
||||
virtual void somefunc() _IRR_OVERRIDE_;
|
||||
*/
|
||||
//! deprecated macro for virtual function override
|
||||
/** prefer to use the override keyword for new code */
|
||||
#define _IRR_OVERRIDE_ override
|
||||
|
||||
|
||||
//! creates four CC codes used in Irrlicht for simple ids
|
||||
/** some compilers can create those by directly writing the
|
||||
code like 'code', but some generate warnings so we use this macro here */
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -47,7 +47,6 @@
|
||||
#include "EMaterialFlags.h"
|
||||
#include "EMaterialTypes.h"
|
||||
#include "EMeshWriterEnums.h"
|
||||
#include "EMessageBoxFlags.h"
|
||||
#include "ESceneNodeTypes.h"
|
||||
#include "fast_atof.h"
|
||||
#include "IAnimatedMesh.h"
|
||||
@ -65,31 +64,21 @@
|
||||
#include "IGPUProgrammingServices.h"
|
||||
#include "IGUIButton.h"
|
||||
#include "IGUICheckBox.h"
|
||||
#include "IGUIColorSelectDialog.h"
|
||||
#include "IGUIComboBox.h"
|
||||
#include "IGUIContextMenu.h"
|
||||
#include "IGUIEditBox.h"
|
||||
#include "IGUIElement.h"
|
||||
#include "IGUIElementFactory.h"
|
||||
#include "IGUIEnvironment.h"
|
||||
#include "IGUIFileOpenDialog.h"
|
||||
#include "IGUIFont.h"
|
||||
#include "IGUIFontBitmap.h"
|
||||
#include "IGUIImage.h"
|
||||
#include "IGUIInOutFader.h"
|
||||
#include "IGUIListBox.h"
|
||||
#include "IGUIMeshViewer.h"
|
||||
#include "IGUIScrollBar.h"
|
||||
#include "IGUISkin.h"
|
||||
#include "IGUISpinBox.h"
|
||||
#include "IGUISpriteBank.h"
|
||||
#include "IGUIStaticText.h"
|
||||
#include "IGUITabControl.h"
|
||||
#include "IGUITable.h"
|
||||
#include "IGUIToolbar.h"
|
||||
#include "IGUIWindow.h"
|
||||
#include "IGUITreeView.h"
|
||||
#include "IGUIProfiler.h"
|
||||
#include "IImage.h"
|
||||
#include "IImageLoader.h"
|
||||
#include "IImageWriter.h"
|
||||
@ -108,7 +97,6 @@
|
||||
#include "IReadFile.h"
|
||||
#include "IReferenceCounted.h"
|
||||
#include "irrArray.h"
|
||||
#include "IRandomizer.h"
|
||||
#include "IRenderTarget.h"
|
||||
#include "IrrlichtDevice.h"
|
||||
#include "irrMath.h"
|
||||
@ -118,14 +106,12 @@
|
||||
#include "ISceneCollisionManager.h"
|
||||
#include "ISceneManager.h"
|
||||
#include "ISceneNode.h"
|
||||
#include "ISceneNodeFactory.h"
|
||||
#include "IShaderConstantSetCallBack.h"
|
||||
#include "ISkinnedMesh.h"
|
||||
#include "ITexture.h"
|
||||
#include "ITimer.h"
|
||||
#include "IVertexBuffer.h"
|
||||
#include "IVideoDriver.h"
|
||||
#include "IVideoModeList.h"
|
||||
#include "IWriteFile.h"
|
||||
#include "Keycodes.h"
|
||||
#include "line2d.h"
|
||||
@ -141,7 +127,6 @@
|
||||
#include "SColor.h"
|
||||
#include "SExposedVideoData.h"
|
||||
#include "SIrrCreationParameters.h"
|
||||
#include "SLight.h"
|
||||
#include "SMaterial.h"
|
||||
#include "SMesh.h"
|
||||
#include "SMeshBuffer.h"
|
||||
|
@ -1,5 +1,3 @@
|
||||
#define MAX_LIGHTS 8
|
||||
|
||||
/* Attributes */
|
||||
|
||||
attribute vec3 inVertexPosition;
|
||||
@ -22,15 +20,6 @@ uniform vec4 uMaterialEmissive;
|
||||
uniform vec4 uMaterialSpecular;
|
||||
uniform float uMaterialShininess;
|
||||
|
||||
uniform int uLightCount;
|
||||
uniform int uLightType[MAX_LIGHTS];
|
||||
uniform vec3 uLightPosition[MAX_LIGHTS];
|
||||
uniform vec3 uLightDirection[MAX_LIGHTS];
|
||||
uniform vec3 uLightAttenuation[MAX_LIGHTS];
|
||||
uniform vec4 uLightAmbient[MAX_LIGHTS];
|
||||
uniform vec4 uLightDiffuse[MAX_LIGHTS];
|
||||
uniform vec4 uLightSpecular[MAX_LIGHTS];
|
||||
|
||||
uniform float uThickness;
|
||||
|
||||
/* Varyings */
|
||||
@ -41,58 +30,6 @@ varying vec4 vVertexColor;
|
||||
varying vec4 vSpecularColor;
|
||||
varying float vFogCoord;
|
||||
|
||||
void dirLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
vec3 L = normalize(-(uNMatrix * vec4(uLightDirection[index], 0.0)).xyz);
|
||||
|
||||
ambient += uLightAmbient[index];
|
||||
|
||||
float NdotL = dot(normal, L);
|
||||
|
||||
if (NdotL > 0.0)
|
||||
{
|
||||
diffuse += uLightDiffuse[index] * NdotL;
|
||||
|
||||
vec3 E = normalize(-position);
|
||||
vec3 HalfVector = normalize(L + E);
|
||||
float NdotH = max(0.0, dot(normal, HalfVector));
|
||||
|
||||
float SpecularFactor = pow(NdotH, uMaterialShininess);
|
||||
specular += uLightSpecular[index] * SpecularFactor;
|
||||
}
|
||||
}
|
||||
|
||||
void pointLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
vec3 L = uLightPosition[index] - position;
|
||||
float D = length(L);
|
||||
L = normalize(L);
|
||||
|
||||
float Attenuation = 1.0 / (uLightAttenuation[index].x + uLightAttenuation[index].y * D +
|
||||
uLightAttenuation[index].z * D * D);
|
||||
|
||||
ambient += uLightAmbient[index] * Attenuation;
|
||||
|
||||
float NdotL = dot(normal, L);
|
||||
|
||||
if (NdotL > 0.0)
|
||||
{
|
||||
diffuse += uLightDiffuse[index] * NdotL * Attenuation;
|
||||
|
||||
vec3 E = normalize(-position);
|
||||
vec3 HalfVector = normalize(L + E);
|
||||
float NdotH = max(0.0, dot(normal, HalfVector));
|
||||
|
||||
float SpecularFactor = pow(NdotH, uMaterialShininess);
|
||||
specular += uLightSpecular[index] * SpecularFactor * Attenuation;
|
||||
}
|
||||
}
|
||||
|
||||
void spotLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
// TO-DO
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0);
|
||||
@ -112,48 +49,5 @@ void main()
|
||||
vVertexColor = inVertexColor.bgra;
|
||||
vSpecularColor = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
|
||||
if (uLightCount > 0)
|
||||
{
|
||||
vec3 Normal = normalize((uNMatrix * vec4(inVertexNormal, 0.0)).xyz);
|
||||
|
||||
vec4 Ambient = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 Diffuse = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount ) // can't use uniform as loop-counter directly in glsl
|
||||
break;
|
||||
if (uLightType[i] == 0)
|
||||
pointLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount )
|
||||
break;
|
||||
if (uLightType[i] == 1)
|
||||
spotLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount )
|
||||
break;
|
||||
if (uLightType[i] == 2)
|
||||
dirLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
vec4 LightColor = Ambient * uMaterialAmbient + Diffuse * uMaterialDiffuse;
|
||||
LightColor = clamp(LightColor, 0.0, 1.0);
|
||||
LightColor.w = 1.0;
|
||||
|
||||
vVertexColor *= LightColor;
|
||||
vVertexColor += uMaterialEmissive;
|
||||
vVertexColor += uGlobalAmbient * uMaterialAmbient;
|
||||
vVertexColor = clamp(vVertexColor, 0.0, 1.0);
|
||||
|
||||
vSpecularColor *= uMaterialSpecular;
|
||||
}
|
||||
|
||||
vFogCoord = length(Position);
|
||||
}
|
||||
|
@ -1,5 +1,3 @@
|
||||
#define MAX_LIGHTS 8
|
||||
|
||||
/* Attributes */
|
||||
|
||||
attribute vec3 inVertexPosition;
|
||||
@ -21,15 +19,6 @@ uniform vec4 uMaterialEmissive;
|
||||
uniform vec4 uMaterialSpecular;
|
||||
uniform float uMaterialShininess;
|
||||
|
||||
uniform int uLightCount;
|
||||
uniform int uLightType[MAX_LIGHTS];
|
||||
uniform vec3 uLightPosition[MAX_LIGHTS];
|
||||
uniform vec3 uLightDirection[MAX_LIGHTS];
|
||||
uniform vec3 uLightAttenuation[MAX_LIGHTS];
|
||||
uniform vec4 uLightAmbient[MAX_LIGHTS];
|
||||
uniform vec4 uLightDiffuse[MAX_LIGHTS];
|
||||
uniform vec4 uLightSpecular[MAX_LIGHTS];
|
||||
|
||||
uniform float uThickness;
|
||||
|
||||
/* Varyings */
|
||||
@ -39,58 +28,6 @@ varying vec4 vVertexColor;
|
||||
varying vec4 vSpecularColor;
|
||||
varying float vFogCoord;
|
||||
|
||||
void dirLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
vec3 L = normalize(-(uNMatrix * vec4(uLightDirection[index], 0.0)).xyz);
|
||||
|
||||
ambient += uLightAmbient[index];
|
||||
|
||||
float NdotL = dot(normal, L);
|
||||
|
||||
if (NdotL > 0.0)
|
||||
{
|
||||
diffuse += uLightDiffuse[index] * NdotL;
|
||||
|
||||
vec3 E = normalize(-position);
|
||||
vec3 HalfVector = normalize(L + E);
|
||||
float NdotH = max(0.0, dot(normal, HalfVector));
|
||||
|
||||
float SpecularFactor = pow(NdotH, uMaterialShininess);
|
||||
specular += uLightSpecular[index] * SpecularFactor;
|
||||
}
|
||||
}
|
||||
|
||||
void pointLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
vec3 L = uLightPosition[index] - position;
|
||||
float D = length(L);
|
||||
L = normalize(L);
|
||||
|
||||
float Attenuation = 1.0 / (uLightAttenuation[index].x + uLightAttenuation[index].y * D +
|
||||
uLightAttenuation[index].z * D * D);
|
||||
|
||||
ambient += uLightAmbient[index] * Attenuation;
|
||||
|
||||
float NdotL = dot(normal, L);
|
||||
|
||||
if (NdotL > 0.0)
|
||||
{
|
||||
diffuse += uLightDiffuse[index] * NdotL * Attenuation;
|
||||
|
||||
vec3 E = normalize(-position);
|
||||
vec3 HalfVector = normalize(L + E);
|
||||
float NdotH = max(0.0, dot(normal, HalfVector));
|
||||
|
||||
float SpecularFactor = pow(NdotH, uMaterialShininess);
|
||||
specular += uLightSpecular[index] * SpecularFactor * Attenuation;
|
||||
}
|
||||
}
|
||||
|
||||
void spotLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
// TO-DO
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0);
|
||||
@ -104,48 +41,5 @@ void main()
|
||||
|
||||
vec3 Position = (uWVMatrix * vec4(inVertexPosition, 1.0)).xyz;
|
||||
|
||||
if (uLightCount > 0)
|
||||
{
|
||||
vec3 Normal = normalize((uNMatrix * vec4(inVertexNormal, 0.0)).xyz);
|
||||
|
||||
vec4 Ambient = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 Diffuse = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount ) // can't use uniform as loop-counter directly in glsl
|
||||
break;
|
||||
if (uLightType[i] == 0)
|
||||
pointLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount )
|
||||
break;
|
||||
if (uLightType[i] == 1)
|
||||
spotLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount )
|
||||
break;
|
||||
if (uLightType[i] == 2)
|
||||
dirLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
vec4 LightColor = Ambient * uMaterialAmbient + Diffuse * uMaterialDiffuse;
|
||||
LightColor = clamp(LightColor, 0.0, 1.0);
|
||||
LightColor.w = 1.0;
|
||||
|
||||
vVertexColor *= LightColor;
|
||||
vVertexColor += uMaterialEmissive;
|
||||
vVertexColor += uGlobalAmbient * uMaterialAmbient;
|
||||
vVertexColor = clamp(vVertexColor, 0.0, 1.0);
|
||||
|
||||
vSpecularColor *= uMaterialSpecular;
|
||||
}
|
||||
|
||||
vFogCoord = length(Position);
|
||||
}
|
||||
|
@ -1,5 +1,3 @@
|
||||
#define MAX_LIGHTS 8
|
||||
|
||||
/* Attributes */
|
||||
|
||||
attribute vec3 inVertexPosition;
|
||||
@ -23,15 +21,6 @@ uniform vec4 uMaterialEmissive;
|
||||
uniform vec4 uMaterialSpecular;
|
||||
uniform float uMaterialShininess;
|
||||
|
||||
uniform int uLightCount;
|
||||
uniform int uLightType[MAX_LIGHTS];
|
||||
uniform vec3 uLightPosition[MAX_LIGHTS];
|
||||
uniform vec3 uLightDirection[MAX_LIGHTS];
|
||||
uniform vec3 uLightAttenuation[MAX_LIGHTS];
|
||||
uniform vec4 uLightAmbient[MAX_LIGHTS];
|
||||
uniform vec4 uLightDiffuse[MAX_LIGHTS];
|
||||
uniform vec4 uLightSpecular[MAX_LIGHTS];
|
||||
|
||||
uniform float uThickness;
|
||||
|
||||
/* Varyings */
|
||||
@ -42,58 +31,6 @@ varying vec4 vVertexColor;
|
||||
varying vec4 vSpecularColor;
|
||||
varying float vFogCoord;
|
||||
|
||||
void dirLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
vec3 L = normalize(-(uNMatrix * vec4(uLightDirection[index], 0.0)).xyz);
|
||||
|
||||
ambient += uLightAmbient[index];
|
||||
|
||||
float NdotL = dot(normal, L);
|
||||
|
||||
if (NdotL > 0.0)
|
||||
{
|
||||
diffuse += uLightDiffuse[index] * NdotL;
|
||||
|
||||
vec3 E = normalize(-position);
|
||||
vec3 HalfVector = normalize(L + E);
|
||||
float NdotH = max(0.0, dot(normal, HalfVector));
|
||||
|
||||
float SpecularFactor = pow(NdotH, uMaterialShininess);
|
||||
specular += uLightSpecular[index] * SpecularFactor;
|
||||
}
|
||||
}
|
||||
|
||||
void pointLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
vec3 L = uLightPosition[index] - position;
|
||||
float D = length(L);
|
||||
L = normalize(L);
|
||||
|
||||
float Attenuation = 1.0 / (uLightAttenuation[index].x + uLightAttenuation[index].y * D +
|
||||
uLightAttenuation[index].z * D * D);
|
||||
|
||||
ambient += uLightAmbient[index] * Attenuation;
|
||||
|
||||
float NdotL = dot(normal, L);
|
||||
|
||||
if (NdotL > 0.0)
|
||||
{
|
||||
diffuse += uLightDiffuse[index] * NdotL * Attenuation;
|
||||
|
||||
vec3 E = normalize(-position);
|
||||
vec3 HalfVector = normalize(L + E);
|
||||
float NdotH = max(0.0, dot(normal, HalfVector));
|
||||
|
||||
float SpecularFactor = pow(NdotH, uMaterialShininess);
|
||||
specular += uLightSpecular[index] * SpecularFactor * Attenuation;
|
||||
}
|
||||
}
|
||||
|
||||
void spotLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
// TO-DO
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0);
|
||||
@ -110,48 +47,5 @@ void main()
|
||||
|
||||
vec3 Position = (uWVMatrix * vec4(inVertexPosition, 1.0)).xyz;
|
||||
|
||||
if (uLightCount > 0)
|
||||
{
|
||||
vec3 Normal = normalize((uNMatrix * vec4(inVertexNormal, 0.0)).xyz);
|
||||
|
||||
vec4 Ambient = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 Diffuse = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount ) // can't use uniform as loop-counter directly in glsl
|
||||
break;
|
||||
if (uLightType[i] == 0)
|
||||
pointLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount )
|
||||
break;
|
||||
if (uLightType[i] == 1)
|
||||
spotLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount )
|
||||
break;
|
||||
if (uLightType[i] == 2)
|
||||
dirLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
vec4 LightColor = Ambient * uMaterialAmbient + Diffuse * uMaterialDiffuse;
|
||||
LightColor = clamp(LightColor, 0.0, 1.0);
|
||||
LightColor.w = 1.0;
|
||||
|
||||
vVertexColor *= LightColor;
|
||||
vVertexColor += uMaterialEmissive;
|
||||
vVertexColor += uGlobalAmbient * uMaterialAmbient;
|
||||
vVertexColor = clamp(vVertexColor, 0.0, 1.0);
|
||||
|
||||
vSpecularColor *= uMaterialSpecular;
|
||||
}
|
||||
|
||||
vFogCoord = length(Position);
|
||||
}
|
||||
|
@ -1,5 +1,3 @@
|
||||
#define MAX_LIGHTS 8
|
||||
|
||||
/* Attributes */
|
||||
|
||||
attribute vec3 inVertexPosition;
|
||||
@ -21,15 +19,6 @@ uniform vec4 uMaterialEmissive;
|
||||
uniform vec4 uMaterialSpecular;
|
||||
uniform float uMaterialShininess;
|
||||
|
||||
uniform int uLightCount;
|
||||
uniform int uLightType[MAX_LIGHTS];
|
||||
uniform vec3 uLightPosition[MAX_LIGHTS];
|
||||
uniform vec3 uLightDirection[MAX_LIGHTS];
|
||||
uniform vec3 uLightAttenuation[MAX_LIGHTS];
|
||||
uniform vec4 uLightAmbient[MAX_LIGHTS];
|
||||
uniform vec4 uLightDiffuse[MAX_LIGHTS];
|
||||
uniform vec4 uLightSpecular[MAX_LIGHTS];
|
||||
|
||||
uniform float uThickness;
|
||||
|
||||
/* Varyings */
|
||||
@ -39,58 +28,6 @@ varying vec4 vVertexColor;
|
||||
varying vec4 vSpecularColor;
|
||||
varying float vFogCoord;
|
||||
|
||||
void dirLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
vec3 L = normalize(-(uNMatrix * vec4(uLightDirection[index], 0.0)).xyz);
|
||||
|
||||
ambient += uLightAmbient[index];
|
||||
|
||||
float NdotL = dot(normal, L);
|
||||
|
||||
if (NdotL > 0.0)
|
||||
{
|
||||
diffuse += uLightDiffuse[index] * NdotL;
|
||||
|
||||
vec3 E = normalize(-position);
|
||||
vec3 HalfVector = normalize(L + E);
|
||||
float NdotH = max(0.0, dot(normal, HalfVector));
|
||||
|
||||
float SpecularFactor = pow(NdotH, uMaterialShininess);
|
||||
specular += uLightSpecular[index] * SpecularFactor;
|
||||
}
|
||||
}
|
||||
|
||||
void pointLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
vec3 L = uLightPosition[index] - position;
|
||||
float D = length(L);
|
||||
L = normalize(L);
|
||||
|
||||
float Attenuation = 1.0 / (uLightAttenuation[index].x + uLightAttenuation[index].y * D +
|
||||
uLightAttenuation[index].z * D * D);
|
||||
|
||||
ambient += uLightAmbient[index] * Attenuation;
|
||||
|
||||
float NdotL = dot(normal, L);
|
||||
|
||||
if (NdotL > 0.0)
|
||||
{
|
||||
diffuse += uLightDiffuse[index] * NdotL * Attenuation;
|
||||
|
||||
vec3 E = normalize(-position);
|
||||
vec3 HalfVector = normalize(L + E);
|
||||
float NdotH = max(0.0, dot(normal, HalfVector));
|
||||
|
||||
float SpecularFactor = pow(NdotH, uMaterialShininess);
|
||||
specular += uLightSpecular[index] * SpecularFactor * Attenuation;
|
||||
}
|
||||
}
|
||||
|
||||
void spotLight(in int index, in vec3 position, in vec3 normal, inout vec4 ambient, inout vec4 diffuse, inout vec4 specular)
|
||||
{
|
||||
// TO-DO
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0);
|
||||
@ -107,48 +44,5 @@ void main()
|
||||
vVertexColor = inVertexColor.bgra;
|
||||
vSpecularColor = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
|
||||
if (uLightCount > 0)
|
||||
{
|
||||
vec3 Normal = normalize((uNMatrix * vec4(inVertexNormal, 0.0)).xyz);
|
||||
|
||||
vec4 Ambient = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 Diffuse = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount ) // can't use uniform as loop-counter directly in glsl
|
||||
break;
|
||||
if (uLightType[i] == 0)
|
||||
pointLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount )
|
||||
break;
|
||||
if (uLightType[i] == 1)
|
||||
spotLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
for (int i = 0; i < int(MAX_LIGHTS); i++)
|
||||
{
|
||||
if( i >= uLightCount )
|
||||
break;
|
||||
if (uLightType[i] == 2)
|
||||
dirLight(i, Position, Normal, Ambient, Diffuse, vSpecularColor);
|
||||
}
|
||||
|
||||
vec4 LightColor = Ambient * uMaterialAmbient + Diffuse * uMaterialDiffuse;
|
||||
LightColor = clamp(LightColor, 0.0, 1.0);
|
||||
LightColor.w = 1.0;
|
||||
|
||||
vVertexColor *= LightColor;
|
||||
vVertexColor += uMaterialEmissive;
|
||||
vVertexColor += uGlobalAmbient * uMaterialAmbient;
|
||||
vVertexColor = clamp(vVertexColor, 0.0, 1.0);
|
||||
|
||||
vSpecularColor *= uMaterialSpecular;
|
||||
}
|
||||
|
||||
vFogCoord = length(Position);
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ namespace io
|
||||
virtual void addDirectoryToFileList(const io::path &filename);
|
||||
|
||||
//! return the name (id) of the file Archive
|
||||
virtual const io::path& getArchiveName() const _IRR_OVERRIDE_ {return Path;}
|
||||
const io::path& getArchiveName() const override {return Path;}
|
||||
|
||||
protected:
|
||||
//! Android's asset manager
|
||||
|
@ -276,6 +276,7 @@ void CAnimatedMeshSceneNode::render()
|
||||
#ifdef _DEBUG
|
||||
os::Printer::log("Animated Mesh returned no mesh to render.", Mesh->getDebugName(), ELL_WARNING);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
driver->setTransform(video::ETS_WORLD, AbsoluteTransformation);
|
||||
|
@ -31,114 +31,114 @@ namespace scene
|
||||
virtual ~CAnimatedMeshSceneNode();
|
||||
|
||||
//! sets the current frame. from now on the animation is played from this frame.
|
||||
virtual void setCurrentFrame(f32 frame) _IRR_OVERRIDE_;
|
||||
void setCurrentFrame(f32 frame) override;
|
||||
|
||||
//! frame
|
||||
virtual void OnRegisterSceneNode() _IRR_OVERRIDE_;
|
||||
void OnRegisterSceneNode() override;
|
||||
|
||||
//! OnAnimate() is called just before rendering the whole scene.
|
||||
virtual void OnAnimate(u32 timeMs) _IRR_OVERRIDE_;
|
||||
void OnAnimate(u32 timeMs) override;
|
||||
|
||||
//! renders the node.
|
||||
virtual void render() _IRR_OVERRIDE_;
|
||||
void render() override;
|
||||
|
||||
//! returns the axis aligned bounding box of this node
|
||||
virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_;
|
||||
const core::aabbox3d<f32>& getBoundingBox() const override;
|
||||
|
||||
//! sets the frames between the animation is looped.
|
||||
//! the default is 0 - MaximalFrameCount of the mesh.
|
||||
//! NOTE: setMesh will also change this value and set it to the full range of animations of the mesh
|
||||
virtual bool setFrameLoop(s32 begin, s32 end) _IRR_OVERRIDE_;
|
||||
bool setFrameLoop(s32 begin, s32 end) override;
|
||||
|
||||
//! Sets looping mode which is on by default. If set to false,
|
||||
//! animations will not be looped.
|
||||
virtual void setLoopMode(bool playAnimationLooped) _IRR_OVERRIDE_;
|
||||
void setLoopMode(bool playAnimationLooped) override;
|
||||
|
||||
//! returns the current loop mode
|
||||
virtual bool getLoopMode() const _IRR_OVERRIDE_;
|
||||
bool getLoopMode() const override;
|
||||
|
||||
//! Sets a callback interface which will be called if an animation
|
||||
//! playback has ended. Set this to 0 to disable the callback again.
|
||||
virtual void setAnimationEndCallback(IAnimationEndCallBack* callback=0) _IRR_OVERRIDE_;
|
||||
void setAnimationEndCallback(IAnimationEndCallBack* callback=0) override;
|
||||
|
||||
//! sets the speed with which the animation is played
|
||||
//! NOTE: setMesh will also change this value and set it to the default speed of the mesh
|
||||
virtual void setAnimationSpeed(f32 framesPerSecond) _IRR_OVERRIDE_;
|
||||
void setAnimationSpeed(f32 framesPerSecond) override;
|
||||
|
||||
//! gets the speed with which the animation is played
|
||||
virtual f32 getAnimationSpeed() const _IRR_OVERRIDE_;
|
||||
f32 getAnimationSpeed() const override;
|
||||
|
||||
//! returns the material based on the zero based index i. To get the amount
|
||||
//! of materials used by this scene node, use getMaterialCount().
|
||||
//! This function is needed for inserting the node into the scene hierarchy on a
|
||||
//! optimal position for minimizing renderstate changes, but can also be used
|
||||
//! to directly modify the material of a scene node.
|
||||
virtual video::SMaterial& getMaterial(u32 i) _IRR_OVERRIDE_;
|
||||
video::SMaterial& getMaterial(u32 i) override;
|
||||
|
||||
//! returns amount of materials used by this scene node.
|
||||
virtual u32 getMaterialCount() const _IRR_OVERRIDE_;
|
||||
u32 getMaterialCount() const override;
|
||||
|
||||
//! Returns a pointer to a child node, which has the same transformation as
|
||||
//! the corresponding joint, if the mesh in this scene node is a skinned mesh.
|
||||
virtual IBoneSceneNode* getJointNode(const c8* jointName) _IRR_OVERRIDE_;
|
||||
IBoneSceneNode* getJointNode(const c8* jointName) override;
|
||||
|
||||
//! same as getJointNode(const c8* jointName), but based on id
|
||||
virtual IBoneSceneNode* getJointNode(u32 jointID) _IRR_OVERRIDE_;
|
||||
IBoneSceneNode* getJointNode(u32 jointID) override;
|
||||
|
||||
//! Gets joint count.
|
||||
virtual u32 getJointCount() const _IRR_OVERRIDE_;
|
||||
u32 getJointCount() const override;
|
||||
|
||||
//! Removes a child from this scene node.
|
||||
//! Implemented here, to be able to remove the shadow properly, if there is one,
|
||||
//! or to remove attached child.
|
||||
virtual bool removeChild(ISceneNode* child) _IRR_OVERRIDE_;
|
||||
bool removeChild(ISceneNode* child) override;
|
||||
|
||||
//! Returns the current displayed frame number.
|
||||
virtual f32 getFrameNr() const _IRR_OVERRIDE_;
|
||||
f32 getFrameNr() const override;
|
||||
//! Returns the current start frame number.
|
||||
virtual s32 getStartFrame() const _IRR_OVERRIDE_;
|
||||
s32 getStartFrame() const override;
|
||||
//! Returns the current end frame number.
|
||||
virtual s32 getEndFrame() const _IRR_OVERRIDE_;
|
||||
s32 getEndFrame() const override;
|
||||
|
||||
//! Sets if the scene node should not copy the materials of the mesh but use them in a read only style.
|
||||
/* In this way it is possible to change the materials a mesh causing all mesh scene nodes
|
||||
referencing this mesh to change too. */
|
||||
virtual void setReadOnlyMaterials(bool readonly) _IRR_OVERRIDE_;
|
||||
void setReadOnlyMaterials(bool readonly) override;
|
||||
|
||||
//! Returns if the scene node should not copy the materials of the mesh but use them in a read only style
|
||||
virtual bool isReadOnlyMaterials() const _IRR_OVERRIDE_;
|
||||
bool isReadOnlyMaterials() const override;
|
||||
|
||||
//! Sets a new mesh
|
||||
virtual void setMesh(IAnimatedMesh* mesh) _IRR_OVERRIDE_;
|
||||
void setMesh(IAnimatedMesh* mesh) override;
|
||||
|
||||
//! Returns the current mesh
|
||||
virtual IAnimatedMesh* getMesh(void) _IRR_OVERRIDE_ { return Mesh; }
|
||||
IAnimatedMesh* getMesh(void) override { return Mesh; }
|
||||
|
||||
//! Returns type of the scene node
|
||||
virtual ESCENE_NODE_TYPE getType() const _IRR_OVERRIDE_ { return ESNT_ANIMATED_MESH; }
|
||||
ESCENE_NODE_TYPE getType() const override { return ESNT_ANIMATED_MESH; }
|
||||
|
||||
//! updates the absolute position based on the relative and the parents position
|
||||
virtual void updateAbsolutePosition() _IRR_OVERRIDE_;
|
||||
void updateAbsolutePosition() override;
|
||||
|
||||
|
||||
//! Set the joint update mode (0-unused, 1-get joints only, 2-set joints only, 3-move and set)
|
||||
virtual void setJointMode(E_JOINT_UPDATE_ON_RENDER mode) _IRR_OVERRIDE_;
|
||||
void setJointMode(E_JOINT_UPDATE_ON_RENDER mode) override;
|
||||
|
||||
//! Sets the transition time in seconds (note: This needs to enable joints, and setJointmode maybe set to 2)
|
||||
//! you must call animateJoints(), or the mesh will not animate
|
||||
virtual void setTransitionTime(f32 Time) _IRR_OVERRIDE_;
|
||||
void setTransitionTime(f32 Time) override;
|
||||
|
||||
//! updates the joint positions of this mesh
|
||||
virtual void animateJoints(bool CalculateAbsolutePositions=true) _IRR_OVERRIDE_;
|
||||
void animateJoints(bool CalculateAbsolutePositions=true) override;
|
||||
|
||||
//! render mesh ignoring its transformation. Used with ragdolls. (culling is unaffected)
|
||||
virtual void setRenderFromIdentity( bool On ) _IRR_OVERRIDE_;
|
||||
void setRenderFromIdentity( bool On ) override;
|
||||
|
||||
//! Creates a clone of this scene node and its children.
|
||||
/** \param newParent An optional new parent.
|
||||
\param newManager An optional new scene manager.
|
||||
\return The newly created clone of this node. */
|
||||
virtual ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0) _IRR_OVERRIDE_;
|
||||
ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0) override;
|
||||
|
||||
private:
|
||||
|
||||
|
@ -27,42 +27,42 @@ public:
|
||||
setBool(value);
|
||||
}
|
||||
|
||||
virtual s32 getInt() const _IRR_OVERRIDE_
|
||||
s32 getInt() const override
|
||||
{
|
||||
return BoolValue ? 1 : 0;
|
||||
}
|
||||
|
||||
virtual f32 getFloat() const _IRR_OVERRIDE_
|
||||
f32 getFloat() const override
|
||||
{
|
||||
return BoolValue ? 1.0f : 0.0f;
|
||||
}
|
||||
|
||||
virtual bool getBool() const _IRR_OVERRIDE_
|
||||
bool getBool() const override
|
||||
{
|
||||
return BoolValue;
|
||||
}
|
||||
|
||||
virtual void setInt(s32 intValue) _IRR_OVERRIDE_
|
||||
void setInt(s32 intValue) override
|
||||
{
|
||||
BoolValue = (intValue != 0);
|
||||
}
|
||||
|
||||
virtual void setFloat(f32 floatValue) _IRR_OVERRIDE_
|
||||
void setFloat(f32 floatValue) override
|
||||
{
|
||||
BoolValue = (floatValue != 0);
|
||||
}
|
||||
|
||||
virtual void setBool(bool boolValue) _IRR_OVERRIDE_
|
||||
void setBool(bool boolValue) override
|
||||
{
|
||||
BoolValue = boolValue;
|
||||
}
|
||||
|
||||
virtual E_ATTRIBUTE_TYPE getType() const _IRR_OVERRIDE_
|
||||
E_ATTRIBUTE_TYPE getType() const override
|
||||
{
|
||||
return EAT_BOOL;
|
||||
}
|
||||
|
||||
virtual const wchar_t* getTypeString() const _IRR_OVERRIDE_
|
||||
const wchar_t* getTypeString() const override
|
||||
{
|
||||
return L"bool";
|
||||
}
|
||||
@ -81,32 +81,32 @@ public:
|
||||
setInt(value);
|
||||
}
|
||||
|
||||
virtual s32 getInt() const _IRR_OVERRIDE_
|
||||
s32 getInt() const override
|
||||
{
|
||||
return Value;
|
||||
}
|
||||
|
||||
virtual f32 getFloat() const _IRR_OVERRIDE_
|
||||
f32 getFloat() const override
|
||||
{
|
||||
return (f32)Value;
|
||||
}
|
||||
|
||||
virtual void setInt(s32 intValue) _IRR_OVERRIDE_
|
||||
void setInt(s32 intValue) override
|
||||
{
|
||||
Value = intValue;
|
||||
}
|
||||
|
||||
virtual void setFloat(f32 floatValue) _IRR_OVERRIDE_
|
||||
void setFloat(f32 floatValue) override
|
||||
{
|
||||
Value = (s32)floatValue;
|
||||
};
|
||||
|
||||
virtual E_ATTRIBUTE_TYPE getType() const _IRR_OVERRIDE_
|
||||
E_ATTRIBUTE_TYPE getType() const override
|
||||
{
|
||||
return EAT_INT;
|
||||
}
|
||||
|
||||
virtual const wchar_t* getTypeString() const _IRR_OVERRIDE_
|
||||
const wchar_t* getTypeString() const override
|
||||
{
|
||||
return L"int";
|
||||
}
|
||||
@ -125,32 +125,32 @@ public:
|
||||
setFloat(value);
|
||||
}
|
||||
|
||||
virtual s32 getInt() const _IRR_OVERRIDE_
|
||||
s32 getInt() const override
|
||||
{
|
||||
return (s32)Value;
|
||||
}
|
||||
|
||||
virtual f32 getFloat() const _IRR_OVERRIDE_
|
||||
f32 getFloat() const override
|
||||
{
|
||||
return Value;
|
||||
}
|
||||
|
||||
virtual void setInt(s32 intValue) _IRR_OVERRIDE_
|
||||
void setInt(s32 intValue) override
|
||||
{
|
||||
Value = (f32)intValue;
|
||||
}
|
||||
|
||||
virtual void setFloat(f32 floatValue) _IRR_OVERRIDE_
|
||||
void setFloat(f32 floatValue) override
|
||||
{
|
||||
Value = floatValue;
|
||||
}
|
||||
|
||||
virtual E_ATTRIBUTE_TYPE getType() const _IRR_OVERRIDE_
|
||||
E_ATTRIBUTE_TYPE getType() const override
|
||||
{
|
||||
return EAT_FLOAT;
|
||||
}
|
||||
|
||||
virtual const wchar_t* getTypeString() const _IRR_OVERRIDE_
|
||||
const wchar_t* getTypeString() const override
|
||||
{
|
||||
return L"float";
|
||||
}
|
||||
|
@ -30,37 +30,37 @@ public:
|
||||
~CAttributes();
|
||||
|
||||
//! Returns amount of attributes in this collection of attributes.
|
||||
virtual u32 getAttributeCount() const _IRR_OVERRIDE_;
|
||||
u32 getAttributeCount() const override;
|
||||
|
||||
//! Returns attribute name by index.
|
||||
//! \param index: Index value, must be between 0 and getAttributeCount()-1.
|
||||
virtual const c8* getAttributeName(s32 index) const _IRR_OVERRIDE_;
|
||||
const c8* getAttributeName(s32 index) const override;
|
||||
|
||||
//! Returns the type of an attribute
|
||||
//! \param attributeName: Name for the attribute
|
||||
virtual E_ATTRIBUTE_TYPE getAttributeType(const c8* attributeName) const _IRR_OVERRIDE_;
|
||||
E_ATTRIBUTE_TYPE getAttributeType(const c8* attributeName) const override;
|
||||
|
||||
//! Returns attribute type by index.
|
||||
//! \param index: Index value, must be between 0 and getAttributeCount()-1.
|
||||
virtual E_ATTRIBUTE_TYPE getAttributeType(s32 index) const _IRR_OVERRIDE_;
|
||||
E_ATTRIBUTE_TYPE getAttributeType(s32 index) const override;
|
||||
|
||||
//! 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 _IRR_OVERRIDE_;
|
||||
const wchar_t* getAttributeTypeString(const c8* attributeName, const wchar_t* defaultNotFound = L"unknown") const override;
|
||||
|
||||
//! Returns the type string of the attribute by index.
|
||||
//! \param index: Index value, must be between 0 and getAttributeCount()-1.
|
||||
virtual const wchar_t* getAttributeTypeString(s32 index, const wchar_t* defaultNotFound = L"unknown") const _IRR_OVERRIDE_;
|
||||
const wchar_t* getAttributeTypeString(s32 index, const wchar_t* defaultNotFound = L"unknown") const override;
|
||||
|
||||
//! Returns if an attribute with a name exists
|
||||
virtual bool existsAttribute(const c8* attributeName) const _IRR_OVERRIDE_;
|
||||
bool existsAttribute(const c8* attributeName) const override;
|
||||
|
||||
//! Returns attribute index from name, -1 if not found
|
||||
virtual s32 findAttribute(const c8* attributeName) const _IRR_OVERRIDE_;
|
||||
s32 findAttribute(const c8* attributeName) const override;
|
||||
|
||||
//! Removes all attributes
|
||||
virtual void clear() _IRR_OVERRIDE_;
|
||||
void clear() override;
|
||||
|
||||
|
||||
/*
|
||||
@ -70,23 +70,23 @@ public:
|
||||
*/
|
||||
|
||||
//! Adds an attribute as integer
|
||||
virtual void addInt(const c8* attributeName, s32 value) _IRR_OVERRIDE_;
|
||||
void addInt(const c8* attributeName, s32 value) override;
|
||||
|
||||
//! Sets an attribute as integer value
|
||||
virtual void setAttribute(const c8* attributeName, s32 value) _IRR_OVERRIDE_;
|
||||
void setAttribute(const c8* attributeName, s32 value) override;
|
||||
|
||||
//! Gets an attribute as integer value
|
||||
//! \param attributeName: Name of the attribute to get.
|
||||
//! \param defaultNotFound Value returned when attributeName was not found
|
||||
//! \return Returns value of the attribute previously set by setAttribute()
|
||||
virtual s32 getAttributeAsInt(const c8* attributeName, irr::s32 defaultNotFound=0) const _IRR_OVERRIDE_;
|
||||
s32 getAttributeAsInt(const c8* attributeName, irr::s32 defaultNotFound=0) const override;
|
||||
|
||||
//! Gets an attribute as integer value
|
||||
//! \param index: Index value, must be between 0 and getAttributeCount()-1.
|
||||
virtual s32 getAttributeAsInt(s32 index) const _IRR_OVERRIDE_;
|
||||
s32 getAttributeAsInt(s32 index) const override;
|
||||
|
||||
//! Sets an attribute as integer value
|
||||
virtual void setAttribute(s32 index, s32 value) _IRR_OVERRIDE_;
|
||||
void setAttribute(s32 index, s32 value) override;
|
||||
|
||||
/*
|
||||
|
||||
@ -95,23 +95,23 @@ public:
|
||||
*/
|
||||
|
||||
//! Adds an attribute as float
|
||||
virtual void addFloat(const c8* attributeName, f32 value) _IRR_OVERRIDE_;
|
||||
void addFloat(const c8* attributeName, f32 value) override;
|
||||
|
||||
//! Sets a attribute as float value
|
||||
virtual void setAttribute(const c8* attributeName, f32 value) _IRR_OVERRIDE_;
|
||||
void setAttribute(const c8* attributeName, f32 value) override;
|
||||
|
||||
//! Gets an attribute as float value
|
||||
//! \param attributeName: Name of the attribute to get.
|
||||
//! \param defaultNotFound Value returned when attributeName was not found
|
||||
//! \return Returns value of the attribute previously set by setAttribute()
|
||||
virtual f32 getAttributeAsFloat(const c8* attributeName, irr::f32 defaultNotFound=0.f) const _IRR_OVERRIDE_;
|
||||
f32 getAttributeAsFloat(const c8* attributeName, irr::f32 defaultNotFound=0.f) const override;
|
||||
|
||||
//! Gets an attribute as float value
|
||||
//! \param index: Index value, must be between 0 and getAttributeCount()-1.
|
||||
virtual f32 getAttributeAsFloat(s32 index) const _IRR_OVERRIDE_;
|
||||
f32 getAttributeAsFloat(s32 index) const override;
|
||||
|
||||
//! Sets an attribute as float value
|
||||
virtual void setAttribute(s32 index, f32 value) _IRR_OVERRIDE_;
|
||||
void setAttribute(s32 index, f32 value) override;
|
||||
|
||||
|
||||
/*
|
||||
@ -119,23 +119,23 @@ public:
|
||||
*/
|
||||
|
||||
//! Adds an attribute as bool
|
||||
virtual void addBool(const c8* attributeName, bool value) _IRR_OVERRIDE_;
|
||||
void addBool(const c8* attributeName, bool value) override;
|
||||
|
||||
//! Sets an attribute as boolean value
|
||||
virtual void setAttribute(const c8* attributeName, bool value) _IRR_OVERRIDE_;
|
||||
void setAttribute(const c8* attributeName, bool value) override;
|
||||
|
||||
//! Gets an attribute as boolean value
|
||||
//! \param attributeName: Name of the attribute to get.
|
||||
//! \param defaultNotFound Value returned when attributeName was not found
|
||||
//! \return Returns value of the attribute previously set by setAttribute()
|
||||
virtual bool getAttributeAsBool(const c8* attributeName, bool defaultNotFound=false) const _IRR_OVERRIDE_;
|
||||
bool getAttributeAsBool(const c8* attributeName, bool defaultNotFound=false) const override;
|
||||
|
||||
//! Gets an attribute as boolean value
|
||||
//! \param index: Index value, must be between 0 and getAttributeCount()-1.
|
||||
virtual bool getAttributeAsBool(s32 index) const _IRR_OVERRIDE_;
|
||||
bool getAttributeAsBool(s32 index) const override;
|
||||
|
||||
//! Sets an attribute as boolean value
|
||||
virtual void setAttribute(s32 index, bool value) _IRR_OVERRIDE_;
|
||||
void setAttribute(s32 index, bool value) override;
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -26,7 +26,7 @@ namespace scene
|
||||
|
||||
//! Constructor
|
||||
CB3DMeshFileLoader::CB3DMeshFileLoader(scene::ISceneManager* smgr)
|
||||
: AnimatedMesh(0), B3DFile(0), NormalsInFile(false),
|
||||
: AnimatedMesh(0), B3DFile(0), VerticesStart(0), NormalsInFile(false),
|
||||
HasVertexColors(false), ShowWarning(true)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
|
@ -33,13 +33,13 @@ public:
|
||||
|
||||
//! returns true if the file maybe is able to be loaded by this class
|
||||
//! based on the file extension (e.g. ".bsp")
|
||||
virtual bool isALoadableFileExtension(const io::path& filename) const _IRR_OVERRIDE_;
|
||||
bool isALoadableFileExtension(const io::path& filename) const override;
|
||||
|
||||
//! creates/loads an animated mesh from the file.
|
||||
//! \return Pointer to the created mesh. Returns 0 if loading failed.
|
||||
//! If you no longer need the mesh, you should call IAnimatedMesh::drop().
|
||||
//! See IReferenceCounted::drop() for more information.
|
||||
virtual IAnimatedMesh* createMesh(io::IReadFile* file) _IRR_OVERRIDE_;
|
||||
IAnimatedMesh* createMesh(io::IReadFile* file) override;
|
||||
|
||||
private:
|
||||
|
||||
|
@ -27,10 +27,10 @@ public:
|
||||
CB3DMeshWriter();
|
||||
|
||||
//! Returns the type of the mesh writer
|
||||
virtual EMESH_WRITER_TYPE getType() const _IRR_OVERRIDE_;
|
||||
EMESH_WRITER_TYPE getType() const override;
|
||||
|
||||
//! writes a mesh
|
||||
virtual bool writeMesh(io::IWriteFile* file, scene::IMesh* mesh, s32 flags=EMWF_NONE) _IRR_OVERRIDE_;
|
||||
bool writeMesh(io::IWriteFile* file, scene::IMesh* mesh, s32 flags=EMWF_NONE) override;
|
||||
|
||||
private:
|
||||
void writeJointChunk(io::IWriteFile* file, ISkinnedMesh* mesh , ISkinnedMesh::SJoint* joint, f32 animationSpeedMultiplier);
|
||||
|
@ -28,58 +28,58 @@ public:
|
||||
virtual ~CBillboardSceneNode();
|
||||
|
||||
//! pre render event
|
||||
virtual void OnRegisterSceneNode() _IRR_OVERRIDE_;
|
||||
void OnRegisterSceneNode() override;
|
||||
|
||||
//! render
|
||||
virtual void render() _IRR_OVERRIDE_;
|
||||
void render() override;
|
||||
|
||||
//! returns the axis aligned bounding box of this node
|
||||
virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_;
|
||||
const core::aabbox3d<f32>& getBoundingBox() const override;
|
||||
|
||||
//! sets the size of the billboard
|
||||
virtual void setSize(const core::dimension2d<f32>& size) _IRR_OVERRIDE_;
|
||||
void setSize(const core::dimension2d<f32>& size) override;
|
||||
|
||||
//! Sets the widths of the top and bottom edges of the billboard independently.
|
||||
virtual void setSize(f32 height, f32 bottomEdgeWidth, f32 topEdgeWidth) _IRR_OVERRIDE_;
|
||||
void setSize(f32 height, f32 bottomEdgeWidth, f32 topEdgeWidth) override;
|
||||
|
||||
//! gets the size of the billboard
|
||||
virtual const core::dimension2d<f32>& getSize() const _IRR_OVERRIDE_;
|
||||
const core::dimension2d<f32>& getSize() const override;
|
||||
|
||||
//! Gets the widths of the top and bottom edges of the billboard.
|
||||
virtual void getSize(f32& height, f32& bottomEdgeWidth, f32& topEdgeWidth) const _IRR_OVERRIDE_;
|
||||
void getSize(f32& height, f32& bottomEdgeWidth, f32& topEdgeWidth) const override;
|
||||
|
||||
virtual video::SMaterial& getMaterial(u32 i) _IRR_OVERRIDE_;
|
||||
video::SMaterial& getMaterial(u32 i) override;
|
||||
|
||||
//! returns amount of materials used by this scene node.
|
||||
virtual u32 getMaterialCount() const _IRR_OVERRIDE_;
|
||||
u32 getMaterialCount() const override;
|
||||
|
||||
//! Set the color of all vertices of the billboard
|
||||
//! \param overallColor: the color to set
|
||||
virtual void setColor(const video::SColor& overallColor) _IRR_OVERRIDE_;
|
||||
void setColor(const video::SColor& overallColor) override;
|
||||
|
||||
//! Set the color of the top and bottom vertices of the billboard
|
||||
//! \param topColor: the color to set the top vertices
|
||||
//! \param bottomColor: the color to set the bottom vertices
|
||||
virtual void setColor(const video::SColor& topColor,
|
||||
const video::SColor& bottomColor) _IRR_OVERRIDE_;
|
||||
const video::SColor& bottomColor) override;
|
||||
|
||||
//! Gets the color of the top and bottom vertices of the billboard
|
||||
//! \param[out] topColor: stores the color of the top vertices
|
||||
//! \param[out] bottomColor: stores the color of the bottom vertices
|
||||
virtual void getColor(video::SColor& topColor,
|
||||
video::SColor& bottomColor) const _IRR_OVERRIDE_;
|
||||
video::SColor& bottomColor) const override;
|
||||
|
||||
//! Get the real boundingbox used by the billboard (which depends on the active camera)
|
||||
virtual const core::aabbox3d<f32>& getTransformedBillboardBoundingBox(const irr::scene::ICameraSceneNode* camera) _IRR_OVERRIDE_;
|
||||
const core::aabbox3d<f32>& getTransformedBillboardBoundingBox(const irr::scene::ICameraSceneNode* camera) override;
|
||||
|
||||
//! Get the amount of mesh buffers.
|
||||
virtual u32 getMeshBufferCount() const _IRR_OVERRIDE_
|
||||
u32 getMeshBufferCount() const override
|
||||
{
|
||||
return Buffer ? 1 : 0;
|
||||
}
|
||||
|
||||
//! Get pointer to the mesh buffer.
|
||||
virtual IMeshBuffer* getMeshBuffer(u32 nr) const _IRR_OVERRIDE_
|
||||
IMeshBuffer* getMeshBuffer(u32 nr) const override
|
||||
{
|
||||
if ( nr == 0 )
|
||||
return Buffer;
|
||||
@ -87,10 +87,10 @@ public:
|
||||
}
|
||||
|
||||
//! Returns type of the scene node
|
||||
virtual ESCENE_NODE_TYPE getType() const _IRR_OVERRIDE_ { return ESNT_BILLBOARD; }
|
||||
ESCENE_NODE_TYPE getType() const override { return ESNT_BILLBOARD; }
|
||||
|
||||
//! Creates a clone of this scene node and its children.
|
||||
virtual ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0) _IRR_OVERRIDE_;
|
||||
ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0) override;
|
||||
|
||||
protected:
|
||||
void updateMesh(const irr::scene::ICameraSceneNode* camera);
|
||||
|
@ -23,33 +23,33 @@ namespace scene
|
||||
s32 id=-1, u32 boneIndex=0, const c8* boneName=0);
|
||||
|
||||
//! Returns the index of the bone
|
||||
virtual u32 getBoneIndex() const _IRR_OVERRIDE_;
|
||||
u32 getBoneIndex() const override;
|
||||
|
||||
//! Sets the animation mode of the bone. Returns true if successful.
|
||||
virtual bool setAnimationMode(E_BONE_ANIMATION_MODE mode) _IRR_OVERRIDE_;
|
||||
bool setAnimationMode(E_BONE_ANIMATION_MODE mode) override;
|
||||
|
||||
//! Gets the current animation mode of the bone
|
||||
virtual E_BONE_ANIMATION_MODE getAnimationMode() const _IRR_OVERRIDE_;
|
||||
E_BONE_ANIMATION_MODE getAnimationMode() const override;
|
||||
|
||||
//! returns the axis aligned bounding box of this node
|
||||
virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_;
|
||||
const core::aabbox3d<f32>& getBoundingBox() const override;
|
||||
|
||||
/*
|
||||
//! Returns the relative transformation of the scene node.
|
||||
//virtual core::matrix4 getRelativeTransformation() const _IRR_OVERRIDE_;
|
||||
//core::matrix4 getRelativeTransformation() const override;
|
||||
*/
|
||||
|
||||
virtual void OnAnimate(u32 timeMs) _IRR_OVERRIDE_;
|
||||
void OnAnimate(u32 timeMs) override;
|
||||
|
||||
virtual void updateAbsolutePositionOfAllChildren() _IRR_OVERRIDE_;
|
||||
void updateAbsolutePositionOfAllChildren() override;
|
||||
|
||||
//! How the relative transformation of the bone is used
|
||||
virtual void setSkinningSpace(E_BONE_SKINNING_SPACE space) _IRR_OVERRIDE_
|
||||
void setSkinningSpace(E_BONE_SKINNING_SPACE space) override
|
||||
{
|
||||
SkinningSpace=space;
|
||||
}
|
||||
|
||||
virtual E_BONE_SKINNING_SPACE getSkinningSpace() const _IRR_OVERRIDE_
|
||||
E_BONE_SKINNING_SPACE getSkinningSpace() const override
|
||||
{
|
||||
return SkinningSpace;
|
||||
}
|
||||
|
@ -30,117 +30,117 @@ namespace scene
|
||||
\param projection The new projection matrix of the camera.
|
||||
\param isOrthogonal Set this to true if the matrix is an orthogonal one (e.g.
|
||||
from matrix4::buildProjectionMatrixOrthoLH(). */
|
||||
virtual void setProjectionMatrix(const core::matrix4& projection, bool isOrthogonal = false) _IRR_OVERRIDE_;
|
||||
void setProjectionMatrix(const core::matrix4& projection, bool isOrthogonal = false) override;
|
||||
|
||||
//! Gets the current projection matrix of the camera
|
||||
//! \return Returns the current projection matrix of the camera.
|
||||
virtual const core::matrix4& getProjectionMatrix() const _IRR_OVERRIDE_;
|
||||
const core::matrix4& getProjectionMatrix() const override;
|
||||
|
||||
//! Gets the current view matrix of the camera
|
||||
//! \return Returns the current view matrix of the camera.
|
||||
virtual const core::matrix4& getViewMatrix() const _IRR_OVERRIDE_;
|
||||
const core::matrix4& getViewMatrix() const override;
|
||||
|
||||
//! Sets a custom view matrix affector.
|
||||
/** \param affector: The affector matrix. */
|
||||
virtual void setViewMatrixAffector(const core::matrix4& affector) _IRR_OVERRIDE_;
|
||||
void setViewMatrixAffector(const core::matrix4& affector) override;
|
||||
|
||||
//! Gets the custom view matrix affector.
|
||||
virtual const core::matrix4& getViewMatrixAffector() const _IRR_OVERRIDE_;
|
||||
const core::matrix4& getViewMatrixAffector() const override;
|
||||
|
||||
//! It is possible to send mouse and key events to the camera. Most cameras
|
||||
//! may ignore this input, but camera scene nodes which are created for
|
||||
//! example with scene::ISceneManager::addMayaCameraSceneNode or
|
||||
//! scene::ISceneManager::addMeshViewerCameraSceneNode, may want to get this input
|
||||
//! for changing their position, look at target or whatever.
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_;
|
||||
bool OnEvent(const SEvent& event) override;
|
||||
|
||||
//! Sets the look at target of the camera
|
||||
/** If the camera's target and rotation are bound ( @see bindTargetAndRotation() )
|
||||
then calling this will also change the camera's scene node rotation to match the target.
|
||||
\param pos: Look at target of the camera. */
|
||||
virtual void setTarget(const core::vector3df& pos) _IRR_OVERRIDE_;
|
||||
void setTarget(const core::vector3df& pos) override;
|
||||
|
||||
//! Sets the rotation of the node.
|
||||
/** This only modifies the relative rotation of the node.
|
||||
If the camera's target and rotation are bound ( @see bindTargetAndRotation() )
|
||||
then calling this will also change the camera's target to match the rotation.
|
||||
\param rotation New rotation of the node in degrees. */
|
||||
virtual void setRotation(const core::vector3df& rotation) _IRR_OVERRIDE_;
|
||||
void setRotation(const core::vector3df& rotation) override;
|
||||
|
||||
//! Gets the current look at target of the camera
|
||||
/** \return The current look at target of the camera */
|
||||
virtual const core::vector3df& getTarget() const _IRR_OVERRIDE_;
|
||||
const core::vector3df& getTarget() const override;
|
||||
|
||||
//! Sets the up vector of the camera.
|
||||
//! \param pos: New upvector of the camera.
|
||||
virtual void setUpVector(const core::vector3df& pos) _IRR_OVERRIDE_;
|
||||
void setUpVector(const core::vector3df& pos) override;
|
||||
|
||||
//! Gets the up vector of the camera.
|
||||
//! \return Returns the up vector of the camera.
|
||||
virtual const core::vector3df& getUpVector() const _IRR_OVERRIDE_;
|
||||
const core::vector3df& getUpVector() const override;
|
||||
|
||||
//! Gets distance from the camera to the near plane.
|
||||
//! \return Value of the near plane of the camera.
|
||||
virtual f32 getNearValue() const _IRR_OVERRIDE_;
|
||||
f32 getNearValue() const override;
|
||||
|
||||
//! Gets the distance from the camera to the far plane.
|
||||
//! \return Value of the far plane of the camera.
|
||||
virtual f32 getFarValue() const _IRR_OVERRIDE_;
|
||||
f32 getFarValue() const override;
|
||||
|
||||
//! Get the aspect ratio of the camera.
|
||||
//! \return The aspect ratio of the camera.
|
||||
virtual f32 getAspectRatio() const _IRR_OVERRIDE_;
|
||||
f32 getAspectRatio() const override;
|
||||
|
||||
//! Gets the field of view of the camera.
|
||||
//! \return Field of view of the camera
|
||||
virtual f32 getFOV() const _IRR_OVERRIDE_;
|
||||
f32 getFOV() const override;
|
||||
|
||||
//! Sets the value of the near clipping plane. (default: 1.0f)
|
||||
virtual void setNearValue(f32 zn) _IRR_OVERRIDE_;
|
||||
void setNearValue(f32 zn) override;
|
||||
|
||||
//! Sets the value of the far clipping plane (default: 2000.0f)
|
||||
virtual void setFarValue(f32 zf) _IRR_OVERRIDE_;
|
||||
void setFarValue(f32 zf) override;
|
||||
|
||||
//! Sets the aspect ratio (default: 4.0f / 3.0f)
|
||||
virtual void setAspectRatio(f32 aspect) _IRR_OVERRIDE_;
|
||||
void setAspectRatio(f32 aspect) override;
|
||||
|
||||
//! Sets the field of view (Default: PI / 3.5f)
|
||||
virtual void setFOV(f32 fovy) _IRR_OVERRIDE_;
|
||||
void setFOV(f32 fovy) override;
|
||||
|
||||
//! PreRender event
|
||||
virtual void OnRegisterSceneNode() _IRR_OVERRIDE_;
|
||||
void OnRegisterSceneNode() override;
|
||||
|
||||
//! Render
|
||||
virtual void render() _IRR_OVERRIDE_;
|
||||
void render() override;
|
||||
|
||||
//! Update
|
||||
virtual void updateMatrices() _IRR_OVERRIDE_;
|
||||
void updateMatrices() override;
|
||||
|
||||
//! Returns the axis aligned bounding box of this node
|
||||
virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_;
|
||||
const core::aabbox3d<f32>& getBoundingBox() const override;
|
||||
|
||||
//! Returns the view area.
|
||||
virtual const SViewFrustum* getViewFrustum() const _IRR_OVERRIDE_;
|
||||
const SViewFrustum* getViewFrustum() const override;
|
||||
|
||||
//! Disables or enables the camera to get key or mouse inputs.
|
||||
//! If this is set to true, the camera will respond to key inputs
|
||||
//! otherwise not.
|
||||
virtual void setInputReceiverEnabled(bool enabled) _IRR_OVERRIDE_;
|
||||
void setInputReceiverEnabled(bool enabled) override;
|
||||
|
||||
//! Returns if the input receiver of the camera is currently enabled.
|
||||
virtual bool isInputReceiverEnabled() const _IRR_OVERRIDE_;
|
||||
bool isInputReceiverEnabled() const override;
|
||||
|
||||
//! Returns type of the scene node
|
||||
virtual ESCENE_NODE_TYPE getType() const _IRR_OVERRIDE_ { return ESNT_CAMERA; }
|
||||
ESCENE_NODE_TYPE getType() const override { return ESNT_CAMERA; }
|
||||
|
||||
//! Binds the camera scene node's rotation to its target position and vice versa, or unbinds them.
|
||||
virtual void bindTargetAndRotation(bool bound) _IRR_OVERRIDE_;
|
||||
void bindTargetAndRotation(bool bound) override;
|
||||
|
||||
//! Queries if the camera scene node's rotation and its target position are bound together.
|
||||
virtual bool getTargetAndRotationBinding(void) const _IRR_OVERRIDE_;
|
||||
bool getTargetAndRotationBinding(void) const override;
|
||||
|
||||
//! Creates a clone of this scene node and its children.
|
||||
virtual ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0) _IRR_OVERRIDE_;
|
||||
ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0) override;
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -1,167 +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
|
||||
|
||||
#include "CDefaultGUIElementFactory.h"
|
||||
|
||||
#ifdef _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#include "IGUIEnvironment.h"
|
||||
|
||||
#include "IGUIButton.h"
|
||||
#include "IGUICheckBox.h"
|
||||
#include "IGUIColorSelectDialog.h"
|
||||
#include "IGUIComboBox.h"
|
||||
#include "IGUIContextMenu.h"
|
||||
#include "IGUIEditBox.h"
|
||||
#include "IGUIFileOpenDialog.h"
|
||||
#include "IGUIInOutFader.h"
|
||||
#include "IGUIImage.h"
|
||||
#include "IGUIListBox.h"
|
||||
#include "IGUIMeshViewer.h"
|
||||
#include "IGUIScrollBar.h"
|
||||
#include "IGUISpinBox.h"
|
||||
#include "IGUIStaticText.h"
|
||||
#include "IGUITabControl.h"
|
||||
#include "IGUITable.h"
|
||||
#include "IGUIToolbar.h"
|
||||
#include "IGUIWindow.h"
|
||||
#include "IGUITreeView.h"
|
||||
#include "IGUIProfiler.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
|
||||
CDefaultGUIElementFactory::CDefaultGUIElementFactory(IGUIEnvironment* env)
|
||||
: Environment(env)
|
||||
{
|
||||
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CDefaultGUIElementFactory");
|
||||
#endif
|
||||
|
||||
// don't grab the gui environment here to prevent cyclic references
|
||||
}
|
||||
|
||||
|
||||
//! adds an element to the env based on its type id
|
||||
IGUIElement* CDefaultGUIElementFactory::addGUIElement(EGUI_ELEMENT_TYPE type, IGUIElement* parent)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case EGUIET_BUTTON:
|
||||
return Environment->addButton(core::rect<s32>(0,0,100,100),parent);
|
||||
case EGUIET_CHECK_BOX:
|
||||
return Environment->addCheckBox(false, core::rect<s32>(0,0,100,100), parent);
|
||||
case EGUIET_COLOR_SELECT_DIALOG:
|
||||
return Environment->addColorSelectDialog(0,true,parent);
|
||||
case EGUIET_COMBO_BOX:
|
||||
return Environment->addComboBox(core::rect<s32>(0,0,100,100),parent);
|
||||
case EGUIET_CONTEXT_MENU:
|
||||
return Environment->addContextMenu(core::rect<s32>(0,0,100,100),parent);
|
||||
case EGUIET_MENU:
|
||||
return Environment->addMenu(parent);
|
||||
case EGUIET_EDIT_BOX:
|
||||
return Environment->addEditBox(0,core::rect<s32>(0,0,100,100),true, parent);
|
||||
case EGUIET_FILE_OPEN_DIALOG:
|
||||
return Environment->addFileOpenDialog(0,true,parent);
|
||||
case EGUIET_IMAGE:
|
||||
return Environment->addImage(0,core::position2di(0,0), true, parent);
|
||||
case EGUIET_IN_OUT_FADER:
|
||||
return Environment->addInOutFader(0,parent);
|
||||
case EGUIET_LIST_BOX:
|
||||
return Environment->addListBox(core::rect<s32>(0,0,100,100),parent);
|
||||
case EGUIET_MESH_VIEWER:
|
||||
return Environment->addMeshViewer(core::rect<s32>(0,0,100,100),parent);
|
||||
case EGUIET_MODAL_SCREEN:
|
||||
return Environment->addModalScreen(parent);
|
||||
case EGUIET_MESSAGE_BOX:
|
||||
return Environment->addMessageBox(0,0,false,0,parent);
|
||||
case EGUIET_SCROLL_BAR:
|
||||
return Environment->addScrollBar(false,core::rect<s32>(0,0,100,100),parent);
|
||||
case EGUIET_STATIC_TEXT:
|
||||
return Environment->addStaticText(0,core::rect<s32>(0,0,100,100),false,true,parent);
|
||||
case EGUIET_TAB:
|
||||
return Environment->addTab(core::rect<s32>(0,0,100,100),parent);
|
||||
case EGUIET_TAB_CONTROL:
|
||||
return Environment->addTabControl(core::rect<s32>(0,0,100,100),parent);
|
||||
case EGUIET_TABLE:
|
||||
return Environment->addTable(core::rect<s32>(0,0,100,100), parent);
|
||||
case EGUIET_TOOL_BAR:
|
||||
return Environment->addToolBar(parent);
|
||||
case EGUIET_WINDOW:
|
||||
return Environment->addWindow(core::rect<s32>(0,0,100,100),false,0,parent);
|
||||
case EGUIET_SPIN_BOX:
|
||||
return Environment->addSpinBox(L"0.0", core::rect<s32>(0,0,100,100), true, parent);
|
||||
case EGUIET_TREE_VIEW:
|
||||
return Environment->addTreeView(core::rect<s32>(0,0,100,100),parent);
|
||||
case EGUIET_PROFILER:
|
||||
return Environment->addProfilerDisplay(core::rect<s32>(0,0,100,100), parent);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! adds an element to the environment based on its type name
|
||||
IGUIElement* CDefaultGUIElementFactory::addGUIElement(const c8* typeName, IGUIElement* parent)
|
||||
{
|
||||
return addGUIElement( getTypeFromName(typeName), parent );
|
||||
}
|
||||
|
||||
|
||||
//! Returns the amount of element types this factory is able to create.
|
||||
s32 CDefaultGUIElementFactory::getCreatableGUIElementTypeCount() const
|
||||
{
|
||||
return EGUIET_COUNT;
|
||||
}
|
||||
|
||||
|
||||
//! Returns the type of a creatable element type.
|
||||
EGUI_ELEMENT_TYPE CDefaultGUIElementFactory::getCreateableGUIElementType(s32 idx) const
|
||||
{
|
||||
if (idx>=0 && idx<EGUIET_COUNT)
|
||||
return (EGUI_ELEMENT_TYPE)idx;
|
||||
|
||||
return EGUIET_ELEMENT;
|
||||
}
|
||||
|
||||
|
||||
//! Returns the type name of a creatable element type.
|
||||
const c8* CDefaultGUIElementFactory::getCreateableGUIElementTypeName(s32 idx) const
|
||||
{
|
||||
if (idx>=0 && idx<EGUIET_COUNT)
|
||||
return GUIElementTypeNames[idx];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//! Returns the type name of a creatable element type.
|
||||
const c8* CDefaultGUIElementFactory::getCreateableGUIElementTypeName(EGUI_ELEMENT_TYPE type) const
|
||||
{
|
||||
// for this factory, type == index
|
||||
|
||||
if (type>=0 && type<EGUIET_COUNT)
|
||||
return GUIElementTypeNames[type];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
EGUI_ELEMENT_TYPE CDefaultGUIElementFactory::getTypeFromName(const c8* name) const
|
||||
{
|
||||
for ( u32 i=0; GUIElementTypeNames[i]; ++i)
|
||||
if (!strcmp(name, GUIElementTypeNames[i]) )
|
||||
return (EGUI_ELEMENT_TYPE)i;
|
||||
|
||||
return EGUIET_ELEMENT;
|
||||
}
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif // _IRR_COMPILE_WITH_GUI_
|
||||
|
@ -1,70 +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 __C_DEFAULT_GUI_ELEMENT_FACTORY_H_INCLUDED__
|
||||
#define __C_DEFAULT_GUI_ELEMENT_FACTORY_H_INCLUDED__
|
||||
|
||||
#include "IrrCompileConfig.h"
|
||||
#ifdef _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#include "IGUIElementFactory.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
class IGUIElement;
|
||||
class IGUIEnvironment;
|
||||
|
||||
//! This interface makes it possible to dynamically create gui elements.
|
||||
class CDefaultGUIElementFactory : public IGUIElementFactory
|
||||
{
|
||||
public:
|
||||
|
||||
CDefaultGUIElementFactory(IGUIEnvironment* env);
|
||||
|
||||
//! Adds an element to the gui environment based on its type id.
|
||||
/** \param type: Type of the element to add.
|
||||
\param parent: Parent scene node of the new element. A value of 0 adds it to the root.
|
||||
\return Returns pointer to the new element or 0 if unsuccessful. */
|
||||
virtual IGUIElement* addGUIElement(EGUI_ELEMENT_TYPE type, IGUIElement* parent=0) _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a GUI element to the GUI Environment based on its type name.
|
||||
/** \param typeName: Type name of the element to add. Taken from the GUIElementTypeNames c8* array.
|
||||
\param parent: Parent scene node of the new element. A value of 0 adds it to the root.
|
||||
\return Returns pointer to the new element or 0 if unsuccessful. */
|
||||
virtual IGUIElement* addGUIElement(const c8* typeName, IGUIElement* parent=0) _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns the amount of GUI element types this factory is able to create.
|
||||
virtual s32 getCreatableGUIElementTypeCount() const _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns the type of a createable GUI element type based on the index.
|
||||
/** \param idx: Index of the element type in this factory. The value must be equal or greater than 0
|
||||
and lower than getCreatableGUIElementTypeCount(). */
|
||||
virtual EGUI_ELEMENT_TYPE getCreateableGUIElementType(s32 idx) const _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns the type name of a createable GUI element type based on the index.
|
||||
/** \param idx: Index of the element type in this factory. The value must be equal or greater than 0
|
||||
and lower than getCreatableGUIElementTypeCount(). */
|
||||
virtual const c8* getCreateableGUIElementTypeName(s32 idx) const _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns the type name of a createable GUI element based on its type.
|
||||
/** \param type: Type of the GUI element.
|
||||
\return: Returns the name of the type if this factory can create it, otherwise it returns 0. */
|
||||
virtual const c8* getCreateableGUIElementTypeName(EGUI_ELEMENT_TYPE type) const _IRR_OVERRIDE_;
|
||||
|
||||
private:
|
||||
|
||||
EGUI_ELEMENT_TYPE getTypeFromName(const c8* name) const;
|
||||
|
||||
IGUIEnvironment* Environment;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif // _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#endif // __C_DEFAULT_GUI_ELEMENT_FACTORY_H_INCLUDED__
|
@ -1,122 +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
|
||||
|
||||
#include "CDefaultSceneNodeFactory.h"
|
||||
#include "ISceneManager.h"
|
||||
#include "IDummyTransformationSceneNode.h"
|
||||
#include "ICameraSceneNode.h"
|
||||
#include "IBillboardSceneNode.h"
|
||||
#include "IAnimatedMeshSceneNode.h"
|
||||
#include "IMeshSceneNode.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace scene
|
||||
{
|
||||
|
||||
|
||||
CDefaultSceneNodeFactory::CDefaultSceneNodeFactory(ISceneManager* mgr)
|
||||
: Manager(mgr)
|
||||
{
|
||||
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CDefaultSceneNodeFactory");
|
||||
#endif
|
||||
|
||||
// don't grab the scene manager here to prevent cyclic references
|
||||
|
||||
SupportedSceneNodeTypes.push_back(SSceneNodeTypePair(ESNT_MESH, "mesh"));
|
||||
SupportedSceneNodeTypes.push_back(SSceneNodeTypePair(ESNT_EMPTY, "empty"));
|
||||
SupportedSceneNodeTypes.push_back(SSceneNodeTypePair(ESNT_DUMMY_TRANSFORMATION, "dummyTransformation"));
|
||||
SupportedSceneNodeTypes.push_back(SSceneNodeTypePair(ESNT_CAMERA, "camera"));
|
||||
SupportedSceneNodeTypes.push_back(SSceneNodeTypePair(ESNT_BILLBOARD, "billBoard"));
|
||||
SupportedSceneNodeTypes.push_back(SSceneNodeTypePair(ESNT_ANIMATED_MESH, "animatedMesh"));
|
||||
}
|
||||
|
||||
|
||||
//! adds a scene node to the scene graph based on its type id
|
||||
ISceneNode* CDefaultSceneNodeFactory::addSceneNode(ESCENE_NODE_TYPE type, ISceneNode* parent)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case ESNT_MESH:
|
||||
return Manager->addMeshSceneNode(0, parent, -1, core::vector3df(),
|
||||
core::vector3df(), core::vector3df(1,1,1), true);
|
||||
case ESNT_EMPTY:
|
||||
return Manager->addEmptySceneNode(parent);
|
||||
case ESNT_DUMMY_TRANSFORMATION:
|
||||
return Manager->addDummyTransformationSceneNode(parent);
|
||||
case ESNT_CAMERA:
|
||||
return Manager->addCameraSceneNode(parent);
|
||||
case ESNT_BILLBOARD:
|
||||
return Manager->addBillboardSceneNode(parent);
|
||||
case ESNT_ANIMATED_MESH:
|
||||
return Manager->addAnimatedMeshSceneNode(0, parent, -1, core::vector3df(),
|
||||
core::vector3df(), core::vector3df(1,1,1), true);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//! adds a scene node to the scene graph based on its type name
|
||||
ISceneNode* CDefaultSceneNodeFactory::addSceneNode(const c8* typeName, ISceneNode* parent)
|
||||
{
|
||||
return addSceneNode( getTypeFromName(typeName), parent );
|
||||
}
|
||||
|
||||
|
||||
//! returns amount of scene node types this factory is able to create
|
||||
u32 CDefaultSceneNodeFactory::getCreatableSceneNodeTypeCount() const
|
||||
{
|
||||
return SupportedSceneNodeTypes.size();
|
||||
}
|
||||
|
||||
|
||||
//! returns type of a creatable scene node type
|
||||
ESCENE_NODE_TYPE CDefaultSceneNodeFactory::getCreateableSceneNodeType(u32 idx) const
|
||||
{
|
||||
if (idx<SupportedSceneNodeTypes.size())
|
||||
return SupportedSceneNodeTypes[idx].Type;
|
||||
else
|
||||
return ESNT_UNKNOWN;
|
||||
}
|
||||
|
||||
|
||||
//! returns type name of a creatable scene node type
|
||||
const c8* CDefaultSceneNodeFactory::getCreateableSceneNodeTypeName(u32 idx) const
|
||||
{
|
||||
if (idx<SupportedSceneNodeTypes.size())
|
||||
return SupportedSceneNodeTypes[idx].TypeName.c_str();
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//! returns type name of a creatable scene node type
|
||||
const c8* CDefaultSceneNodeFactory::getCreateableSceneNodeTypeName(ESCENE_NODE_TYPE type) const
|
||||
{
|
||||
for (u32 i=0; i<SupportedSceneNodeTypes.size(); ++i)
|
||||
if (SupportedSceneNodeTypes[i].Type == type)
|
||||
return SupportedSceneNodeTypes[i].TypeName.c_str();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
ESCENE_NODE_TYPE CDefaultSceneNodeFactory::getTypeFromName(const c8* name) const
|
||||
{
|
||||
for (u32 i=0; i<SupportedSceneNodeTypes.size(); ++i)
|
||||
if (SupportedSceneNodeTypes[i].TypeName == name)
|
||||
return SupportedSceneNodeTypes[i].Type;
|
||||
|
||||
return ESNT_UNKNOWN;
|
||||
}
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
@ -1,80 +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 __C_DEFAULT_SCENE_NODE_FACTORY_H_INCLUDED__
|
||||
#define __C_DEFAULT_SCENE_NODE_FACTORY_H_INCLUDED__
|
||||
|
||||
#include "ISceneNodeFactory.h"
|
||||
#include "irrArray.h"
|
||||
#include "irrString.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace scene
|
||||
{
|
||||
class ISceneNode;
|
||||
class ISceneManager;
|
||||
|
||||
//! Interface making it possible to dynamicly create scene nodes and animators
|
||||
class CDefaultSceneNodeFactory : public ISceneNodeFactory
|
||||
{
|
||||
public:
|
||||
|
||||
CDefaultSceneNodeFactory(ISceneManager* mgr);
|
||||
|
||||
//! adds a scene node to the scene graph based on its type id
|
||||
/** \param type: Type of the scene node to add.
|
||||
\param parent: Parent scene node of the new node, can be null to add the scene node to the root.
|
||||
\return Returns pointer to the new scene node or null if not successful. */
|
||||
virtual ISceneNode* addSceneNode(ESCENE_NODE_TYPE type, ISceneNode* parent=0) _IRR_OVERRIDE_;
|
||||
|
||||
//! adds a scene node to the scene graph based on its type name
|
||||
/** \param typeName: Type name of the scene node to add.
|
||||
\param parent: Parent scene node of the new node, can be null to add the scene node to the root.
|
||||
\return Returns pointer to the new scene node or null if not successful. */
|
||||
virtual ISceneNode* addSceneNode(const c8* typeName, ISceneNode* parent=0) _IRR_OVERRIDE_;
|
||||
|
||||
//! returns amount of scene node types this factory is able to create
|
||||
virtual u32 getCreatableSceneNodeTypeCount() const _IRR_OVERRIDE_;
|
||||
|
||||
//! returns type name of a creatable scene node type by index
|
||||
/** \param idx: Index of scene node type in this factory. Must be a value between 0 and
|
||||
uetCreatableSceneNodeTypeCount() */
|
||||
virtual const c8* getCreateableSceneNodeTypeName(u32 idx) const _IRR_OVERRIDE_;
|
||||
|
||||
//! returns type of a creatable scene node type
|
||||
/** \param idx: Index of scene node type in this factory. Must be a value between 0 and
|
||||
getCreatableSceneNodeTypeCount() */
|
||||
virtual ESCENE_NODE_TYPE getCreateableSceneNodeType(u32 idx) const _IRR_OVERRIDE_;
|
||||
|
||||
//! returns type name of a creatable scene node type
|
||||
/** \param idx: Type of scene node.
|
||||
\return: Returns name of scene node type if this factory can create the type, otherwise 0. */
|
||||
virtual const c8* getCreateableSceneNodeTypeName(ESCENE_NODE_TYPE type) const _IRR_OVERRIDE_;
|
||||
|
||||
private:
|
||||
|
||||
ESCENE_NODE_TYPE getTypeFromName(const c8* name) const;
|
||||
|
||||
struct SSceneNodeTypePair
|
||||
{
|
||||
SSceneNodeTypePair(ESCENE_NODE_TYPE type, const c8* name)
|
||||
: Type(type), TypeName(name)
|
||||
{}
|
||||
|
||||
ESCENE_NODE_TYPE Type;
|
||||
core::stringc TypeName;
|
||||
};
|
||||
|
||||
core::array<SSceneNodeTypePair> SupportedSceneNodeTypes;
|
||||
|
||||
ISceneManager* Manager;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
@ -20,36 +20,36 @@ namespace scene
|
||||
CDummyTransformationSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id);
|
||||
|
||||
//! returns the axis aligned bounding box of this node
|
||||
virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_;
|
||||
const core::aabbox3d<f32>& getBoundingBox() const override;
|
||||
|
||||
//! Returns a reference to the current relative transformation matrix.
|
||||
//! This is the matrix, this scene node uses instead of scale, translation
|
||||
//! and rotation.
|
||||
virtual core::matrix4& getRelativeTransformationMatrix() _IRR_OVERRIDE_;
|
||||
core::matrix4& getRelativeTransformationMatrix() override;
|
||||
|
||||
//! Returns the relative transformation of the scene node.
|
||||
virtual core::matrix4 getRelativeTransformation() const _IRR_OVERRIDE_;
|
||||
core::matrix4 getRelativeTransformation() const override;
|
||||
|
||||
//! does nothing.
|
||||
virtual void render() _IRR_OVERRIDE_ {}
|
||||
void render() override {}
|
||||
|
||||
//! Returns type of the scene node
|
||||
virtual ESCENE_NODE_TYPE getType() const _IRR_OVERRIDE_ { return ESNT_DUMMY_TRANSFORMATION; }
|
||||
ESCENE_NODE_TYPE getType() const override { return ESNT_DUMMY_TRANSFORMATION; }
|
||||
|
||||
//! Creates a clone of this scene node and its children.
|
||||
virtual ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0) _IRR_OVERRIDE_;
|
||||
ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0) override;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// TODO: We can add least add some warnings to find troubles faster until we have
|
||||
// fixed bug id 2318691.
|
||||
virtual const core::vector3df& getScale() const _IRR_OVERRIDE_;
|
||||
virtual void setScale(const core::vector3df& scale) _IRR_OVERRIDE_;
|
||||
virtual const core::vector3df& getRotation() const _IRR_OVERRIDE_;
|
||||
virtual void setRotation(const core::vector3df& rotation) _IRR_OVERRIDE_;
|
||||
virtual const core::vector3df& getPosition() const _IRR_OVERRIDE_;
|
||||
virtual void setPosition(const core::vector3df& newpos) _IRR_OVERRIDE_;
|
||||
const core::vector3df& getScale() const override;
|
||||
void setScale(const core::vector3df& scale) override;
|
||||
const core::vector3df& getRotation() const override;
|
||||
void setRotation(const core::vector3df& rotation) override;
|
||||
const core::vector3df& getPosition() const override;
|
||||
void setPosition(const core::vector3df& newpos) override;
|
||||
|
||||
core::matrix4 RelativeTransformationMatrix;
|
||||
core::aabbox3d<f32> Box;
|
||||
|
@ -9,7 +9,6 @@
|
||||
#include "irrString.h"
|
||||
#include "irrArray.h"
|
||||
#include "os.h"
|
||||
#include <dlfcn.h>
|
||||
|
||||
#if defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
|
||||
#include <android/native_activity.h>
|
||||
@ -21,7 +20,7 @@ namespace video
|
||||
{
|
||||
|
||||
CEGLManager::CEGLManager() : IContextManager(), EglWindow(0), EglDisplay(EGL_NO_DISPLAY),
|
||||
EglSurface(EGL_NO_SURFACE), EglContext(EGL_NO_CONTEXT), EglConfig(0), MajorVersion(0), MinorVersion(0), libHandle(NULL)
|
||||
EglSurface(EGL_NO_SURFACE), EglContext(EGL_NO_CONTEXT), EglConfig(0), MajorVersion(0), MinorVersion(0)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CEGLManager");
|
||||
@ -110,9 +109,6 @@ void CEGLManager::terminate()
|
||||
|
||||
MajorVersion = 0;
|
||||
MinorVersion = 0;
|
||||
|
||||
if (libHandle)
|
||||
dlclose(libHandle);
|
||||
}
|
||||
|
||||
bool CEGLManager::generateSurface()
|
||||
@ -596,15 +592,7 @@ const SExposedVideoData& CEGLManager::getContext() const
|
||||
|
||||
void* CEGLManager::getProcAddress(const std::string &procName)
|
||||
{
|
||||
void* proc = NULL;
|
||||
proc = (void*)eglGetProcAddress(procName.c_str());
|
||||
if (!proc) { // fallback
|
||||
if (!libHandle)
|
||||
libHandle = dlopen("libGLESv2.so", RTLD_LAZY);
|
||||
if (libHandle)
|
||||
proc = dlsym(libHandle, procName.c_str());
|
||||
}
|
||||
return proc;
|
||||
return (void*)eglGetProcAddress(procName.c_str());
|
||||
}
|
||||
|
||||
bool CEGLManager::swapBuffers()
|
||||
|
@ -32,42 +32,42 @@ namespace video
|
||||
// Initialize EGL.
|
||||
/* This method initialize EGLand create EGL display, anyway surface and context
|
||||
aren't create. */
|
||||
virtual bool initialize(const SIrrlichtCreationParameters& params, const SExposedVideoData& data) _IRR_OVERRIDE_;
|
||||
bool initialize(const SIrrlichtCreationParameters& params, const SExposedVideoData& data) override;
|
||||
|
||||
// Terminate EGL.
|
||||
/* Terminate EGL context. This method break both existed surface and context. */
|
||||
virtual void terminate() _IRR_OVERRIDE_;
|
||||
void terminate() override;
|
||||
|
||||
// Create EGL surface.
|
||||
/* This method create EGL surface. On some platforms eg. Android, we must
|
||||
recreate surface on each resume, because WindowID may change, so existed
|
||||
surface may not be valid. If EGL context already exist, this method
|
||||
automatically activates it. */
|
||||
virtual bool generateSurface() _IRR_OVERRIDE_;
|
||||
bool generateSurface() override;
|
||||
|
||||
// Destroy EGL surface.
|
||||
/* This method destroy EGL. On some platforms eg. Android, we should call
|
||||
this method on each pause, because after resume this surface may not be valid.
|
||||
Hovewer this method doesn'r break EGL context. */
|
||||
virtual void destroySurface() _IRR_OVERRIDE_;
|
||||
void destroySurface() override;
|
||||
|
||||
// Create EGL context.
|
||||
/* This method create and activate EGL context. */
|
||||
virtual bool generateContext() _IRR_OVERRIDE_;
|
||||
bool generateContext() override;
|
||||
|
||||
// Destroy EGL context.
|
||||
/* This method destroy EGL context. */
|
||||
virtual void destroyContext() _IRR_OVERRIDE_;
|
||||
void destroyContext() override;
|
||||
|
||||
virtual const SExposedVideoData& getContext() const _IRR_OVERRIDE_;
|
||||
const SExposedVideoData& getContext() const override;
|
||||
|
||||
virtual bool activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero) _IRR_OVERRIDE_;
|
||||
bool activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero) override;
|
||||
|
||||
// Get procedure address.
|
||||
virtual void* getProcAddress(const std::string &procName) _IRR_OVERRIDE_;
|
||||
void* getProcAddress(const std::string &procName) override;
|
||||
|
||||
// Swap buffers.
|
||||
virtual bool swapBuffers() _IRR_OVERRIDE_;
|
||||
bool swapBuffers() override;
|
||||
|
||||
protected:
|
||||
enum EConfigStyle
|
||||
@ -111,8 +111,6 @@ namespace video
|
||||
|
||||
EGLint MajorVersion;
|
||||
EGLint MinorVersion;
|
||||
|
||||
void* libHandle;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -20,19 +20,19 @@ namespace scene
|
||||
CEmptySceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id);
|
||||
|
||||
//! returns the axis aligned bounding box of this node
|
||||
virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_;
|
||||
const core::aabbox3d<f32>& getBoundingBox() const override;
|
||||
|
||||
//! This method is called just before the rendering process of the whole scene.
|
||||
virtual void OnRegisterSceneNode() _IRR_OVERRIDE_;
|
||||
void OnRegisterSceneNode() override;
|
||||
|
||||
//! does nothing.
|
||||
virtual void render() _IRR_OVERRIDE_;
|
||||
void render() override;
|
||||
|
||||
//! Returns type of the scene node
|
||||
virtual ESCENE_NODE_TYPE getType() const _IRR_OVERRIDE_ { return ESNT_EMPTY; }
|
||||
ESCENE_NODE_TYPE getType() const override { return ESNT_EMPTY; }
|
||||
|
||||
//! Creates a clone of this scene node and its children.
|
||||
virtual ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0) _IRR_OVERRIDE_;
|
||||
ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0) override;
|
||||
|
||||
private:
|
||||
|
||||
|
@ -82,37 +82,37 @@ public:
|
||||
\param offset The offset where the file is stored in an archive
|
||||
\param size The size of the file in bytes.
|
||||
\param id The ID of the file in the archive which owns it */
|
||||
virtual u32 addItem(const io::path& fullPath, u32 offset, u32 size, bool isDirectory, u32 id=0) _IRR_OVERRIDE_;
|
||||
u32 addItem(const io::path& fullPath, u32 offset, u32 size, bool isDirectory, u32 id=0) override;
|
||||
|
||||
//! Sorts the file list. You should call this after adding any items to the file list
|
||||
virtual void sort() _IRR_OVERRIDE_;
|
||||
void sort() override;
|
||||
|
||||
//! Returns the amount of files in the filelist.
|
||||
virtual u32 getFileCount() const _IRR_OVERRIDE_;
|
||||
u32 getFileCount() const override;
|
||||
|
||||
//! Gets the name of a file in the list, based on an index.
|
||||
virtual const io::path& getFileName(u32 index) const _IRR_OVERRIDE_;
|
||||
const io::path& getFileName(u32 index) const override;
|
||||
|
||||
//! Gets the full name of a file in the list, path included, based on an index.
|
||||
virtual const io::path& getFullFileName(u32 index) const _IRR_OVERRIDE_;
|
||||
const io::path& getFullFileName(u32 index) const override;
|
||||
|
||||
//! Returns the ID of a file in the file list, based on an index.
|
||||
virtual u32 getID(u32 index) const _IRR_OVERRIDE_;
|
||||
u32 getID(u32 index) const override;
|
||||
|
||||
//! Returns true if the file is a directory
|
||||
virtual bool isDirectory(u32 index) const _IRR_OVERRIDE_;
|
||||
bool isDirectory(u32 index) const override;
|
||||
|
||||
//! Returns the size of a file
|
||||
virtual u32 getFileSize(u32 index) const _IRR_OVERRIDE_;
|
||||
u32 getFileSize(u32 index) const override;
|
||||
|
||||
//! Returns the offset of a file
|
||||
virtual u32 getFileOffset(u32 index) const _IRR_OVERRIDE_;
|
||||
u32 getFileOffset(u32 index) const override;
|
||||
|
||||
//! Searches for a file or folder within the list, returns the index
|
||||
virtual s32 findFile(const io::path& filename, bool isFolder) const _IRR_OVERRIDE_;
|
||||
s32 findFile(const io::path& filename, bool isFolder) const override;
|
||||
|
||||
//! Returns the base path of the file list
|
||||
virtual const io::path& getPath() const _IRR_OVERRIDE_;
|
||||
const io::path& getPath() const override;
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -8,7 +8,6 @@
|
||||
#include "IReadFile.h"
|
||||
#include "IWriteFile.h"
|
||||
#include "CZipReader.h"
|
||||
#include "CMountPointReader.h"
|
||||
#include "CFileList.h"
|
||||
#include "stdio.h"
|
||||
#include "os.h"
|
||||
@ -55,26 +54,6 @@ CFileSystem::CFileSystem()
|
||||
//! reset current working directory
|
||||
getWorkingDirectory();
|
||||
|
||||
#ifdef __IRR_COMPILE_WITH_PAK_ARCHIVE_LOADER_
|
||||
ArchiveLoader.push_back(new CArchiveLoaderPAK(this));
|
||||
#endif
|
||||
|
||||
#ifdef __IRR_COMPILE_WITH_NPK_ARCHIVE_LOADER_
|
||||
ArchiveLoader.push_back(new CArchiveLoaderNPK(this));
|
||||
#endif
|
||||
|
||||
#ifdef __IRR_COMPILE_WITH_TAR_ARCHIVE_LOADER_
|
||||
ArchiveLoader.push_back(new CArchiveLoaderTAR(this));
|
||||
#endif
|
||||
|
||||
#ifdef __IRR_COMPILE_WITH_WAD_ARCHIVE_LOADER_
|
||||
ArchiveLoader.push_back(new CArchiveLoaderWAD(this));
|
||||
#endif
|
||||
|
||||
#ifdef __IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_
|
||||
ArchiveLoader.push_back(new CArchiveLoaderMount(this));
|
||||
#endif
|
||||
|
||||
#ifdef __IRR_COMPILE_WITH_ZIP_ARCHIVE_LOADER_
|
||||
ArchiveLoader.push_back(new CArchiveLoaderZIP(this));
|
||||
#endif
|
||||
@ -219,8 +198,6 @@ bool CFileSystem::addFileArchive(const io::path& filename, bool ignoreCase,
|
||||
bool ret = false;
|
||||
|
||||
// see if archive is already added
|
||||
if (changeArchivePassword(filename, password, retArchive))
|
||||
return true;
|
||||
|
||||
s32 i;
|
||||
|
||||
@ -316,29 +293,6 @@ bool CFileSystem::addFileArchive(const io::path& filename, bool ignoreCase,
|
||||
return ret;
|
||||
}
|
||||
|
||||
// don't expose!
|
||||
bool CFileSystem::changeArchivePassword(const path& filename,
|
||||
const core::stringc& password,
|
||||
IFileArchive** archive)
|
||||
{
|
||||
for (s32 idx = 0; idx < (s32)FileArchives.size(); ++idx)
|
||||
{
|
||||
// TODO: This should go into a path normalization method
|
||||
// We need to check for directory names with trailing slash and without
|
||||
const path absPath = getAbsolutePath(filename);
|
||||
const path arcPath = FileArchives[idx]->getFileList()->getPath();
|
||||
if ((absPath == arcPath) || ((absPath+_IRR_TEXT("/")) == arcPath))
|
||||
{
|
||||
if (password.size())
|
||||
FileArchives[idx]->Password=password;
|
||||
if (archive)
|
||||
*archive = FileArchives[idx];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CFileSystem::addFileArchive(IReadFile* file, bool ignoreCase,
|
||||
bool ignorePaths, E_FILE_ARCHIVE_TYPE archiveType,
|
||||
@ -349,9 +303,6 @@ bool CFileSystem::addFileArchive(IReadFile* file, bool ignoreCase,
|
||||
|
||||
if (file)
|
||||
{
|
||||
if (changeArchivePassword(file->getFileName(), password, retArchive))
|
||||
return true;
|
||||
|
||||
IFileArchive* archive = 0;
|
||||
s32 i;
|
||||
|
||||
|
@ -14,8 +14,6 @@ namespace io
|
||||
{
|
||||
|
||||
class CZipReader;
|
||||
class CPakReader;
|
||||
class CMountPointReader;
|
||||
|
||||
/*!
|
||||
FileSystem which uses normal files and one zipfile
|
||||
@ -31,109 +29,104 @@ public:
|
||||
virtual ~CFileSystem();
|
||||
|
||||
//! opens a file for read access
|
||||
virtual IReadFile* createAndOpenFile(const io::path& filename) _IRR_OVERRIDE_;
|
||||
IReadFile* createAndOpenFile(const io::path& filename) override;
|
||||
|
||||
//! Creates an IReadFile interface for accessing memory like a file.
|
||||
virtual IReadFile* createMemoryReadFile(const void* memory, s32 len, const io::path& fileName, bool deleteMemoryWhenDropped = false) _IRR_OVERRIDE_;
|
||||
IReadFile* createMemoryReadFile(const void* memory, s32 len, const io::path& fileName, bool deleteMemoryWhenDropped = false) override;
|
||||
|
||||
//! Creates an IReadFile interface for accessing files inside files
|
||||
virtual IReadFile* createLimitReadFile(const io::path& fileName, IReadFile* alreadyOpenedFile, long pos, long areaSize) _IRR_OVERRIDE_;
|
||||
IReadFile* createLimitReadFile(const io::path& fileName, IReadFile* alreadyOpenedFile, long pos, long areaSize) override;
|
||||
|
||||
//! Creates an IWriteFile interface for accessing memory like a file.
|
||||
virtual IWriteFile* createMemoryWriteFile(void* memory, s32 len, const io::path& fileName, bool deleteMemoryWhenDropped=false) _IRR_OVERRIDE_;
|
||||
IWriteFile* createMemoryWriteFile(void* memory, s32 len, const io::path& fileName, bool deleteMemoryWhenDropped=false) override;
|
||||
|
||||
//! Opens a file for write access.
|
||||
virtual IWriteFile* createAndWriteFile(const io::path& filename, bool append=false) _IRR_OVERRIDE_;
|
||||
IWriteFile* createAndWriteFile(const io::path& filename, bool append=false) override;
|
||||
|
||||
//! Adds an archive to the file system.
|
||||
virtual bool addFileArchive(const io::path& filename,
|
||||
bool ignoreCase = true, bool ignorePaths = true,
|
||||
E_FILE_ARCHIVE_TYPE archiveType = EFAT_UNKNOWN,
|
||||
const core::stringc& password="",
|
||||
IFileArchive** retArchive = 0) _IRR_OVERRIDE_;
|
||||
IFileArchive** retArchive = 0) override;
|
||||
|
||||
//! Adds an archive to the file system.
|
||||
virtual bool addFileArchive(IReadFile* file, bool ignoreCase=true,
|
||||
bool ignorePaths=true,
|
||||
E_FILE_ARCHIVE_TYPE archiveType=EFAT_UNKNOWN,
|
||||
const core::stringc& password="",
|
||||
IFileArchive** retArchive = 0) _IRR_OVERRIDE_;
|
||||
IFileArchive** retArchive = 0) override;
|
||||
|
||||
//! Adds an archive to the file system.
|
||||
virtual bool addFileArchive(IFileArchive* archive) _IRR_OVERRIDE_;
|
||||
bool addFileArchive(IFileArchive* archive) override;
|
||||
|
||||
//! move the hirarchy of the filesystem. moves sourceIndex relative up or down
|
||||
virtual bool moveFileArchive(u32 sourceIndex, s32 relative) _IRR_OVERRIDE_;
|
||||
bool moveFileArchive(u32 sourceIndex, s32 relative) override;
|
||||
|
||||
//! Adds an external archive loader to the engine.
|
||||
virtual void addArchiveLoader(IArchiveLoader* loader) _IRR_OVERRIDE_;
|
||||
void addArchiveLoader(IArchiveLoader* loader) override;
|
||||
|
||||
//! Returns the total number of archive loaders added.
|
||||
virtual u32 getArchiveLoaderCount() const _IRR_OVERRIDE_;
|
||||
u32 getArchiveLoaderCount() const override;
|
||||
|
||||
//! Gets the archive loader by index.
|
||||
virtual IArchiveLoader* getArchiveLoader(u32 index) const _IRR_OVERRIDE_;
|
||||
IArchiveLoader* getArchiveLoader(u32 index) const override;
|
||||
|
||||
//! gets the file archive count
|
||||
virtual u32 getFileArchiveCount() const _IRR_OVERRIDE_;
|
||||
u32 getFileArchiveCount() const override;
|
||||
|
||||
//! gets an archive
|
||||
virtual IFileArchive* getFileArchive(u32 index) _IRR_OVERRIDE_;
|
||||
IFileArchive* getFileArchive(u32 index) override;
|
||||
|
||||
//! removes an archive from the file system.
|
||||
virtual bool removeFileArchive(u32 index) _IRR_OVERRIDE_;
|
||||
bool removeFileArchive(u32 index) override;
|
||||
|
||||
//! removes an archive from the file system.
|
||||
virtual bool removeFileArchive(const io::path& filename) _IRR_OVERRIDE_;
|
||||
bool removeFileArchive(const io::path& filename) override;
|
||||
|
||||
//! Removes an archive from the file system.
|
||||
virtual bool removeFileArchive(const IFileArchive* archive) _IRR_OVERRIDE_;
|
||||
bool removeFileArchive(const IFileArchive* archive) override;
|
||||
|
||||
//! Returns the string of the current working directory
|
||||
virtual const io::path& getWorkingDirectory() _IRR_OVERRIDE_;
|
||||
const io::path& getWorkingDirectory() override;
|
||||
|
||||
//! Changes the current Working Directory to the string given.
|
||||
//! The string is operating system dependent. Under Windows it will look
|
||||
//! like this: "drive:\directory\sudirectory\"
|
||||
virtual bool changeWorkingDirectoryTo(const io::path& newDirectory) _IRR_OVERRIDE_;
|
||||
bool changeWorkingDirectoryTo(const io::path& newDirectory) override;
|
||||
|
||||
//! Converts a relative path to an absolute (unique) path, resolving symbolic links
|
||||
virtual io::path getAbsolutePath(const io::path& filename) const _IRR_OVERRIDE_;
|
||||
io::path getAbsolutePath(const io::path& filename) const override;
|
||||
|
||||
//! Returns the directory a file is located in.
|
||||
/** \param filename: The file to get the directory from */
|
||||
virtual io::path getFileDir(const io::path& filename) const _IRR_OVERRIDE_;
|
||||
io::path getFileDir(const io::path& filename) const override;
|
||||
|
||||
//! Returns the base part of a filename, i.e. the name without the directory
|
||||
//! part. If no directory is prefixed, the full name is returned.
|
||||
/** \param filename: The file to get the basename from */
|
||||
virtual io::path getFileBasename(const io::path& filename, bool keepExtension=true) const _IRR_OVERRIDE_;
|
||||
io::path getFileBasename(const io::path& filename, bool keepExtension=true) const override;
|
||||
|
||||
//! flatten a path and file name for example: "/you/me/../." becomes "/you"
|
||||
virtual io::path& flattenFilename( io::path& directory, const io::path& root = "/" ) const _IRR_OVERRIDE_;
|
||||
io::path& flattenFilename( io::path& directory, const io::path& root = "/" ) const override;
|
||||
|
||||
//! Get the relative filename, relative to the given directory
|
||||
virtual path getRelativeFilename(const path& filename, const path& directory) const _IRR_OVERRIDE_;
|
||||
path getRelativeFilename(const path& filename, const path& directory) const override;
|
||||
|
||||
virtual EFileSystemType setFileListSystem(EFileSystemType listType) _IRR_OVERRIDE_;
|
||||
EFileSystemType setFileListSystem(EFileSystemType listType) override;
|
||||
|
||||
//! Creates a list of files and directories in the current working directory
|
||||
//! and returns it.
|
||||
virtual IFileList* createFileList() _IRR_OVERRIDE_;
|
||||
IFileList* createFileList() override;
|
||||
|
||||
//! Creates an empty filelist
|
||||
virtual IFileList* createEmptyFileList(const io::path& path, bool ignoreCase, bool ignorePaths) _IRR_OVERRIDE_;
|
||||
IFileList* createEmptyFileList(const io::path& path, bool ignoreCase, bool ignorePaths) override;
|
||||
|
||||
//! determines if a file exists and would be able to be opened.
|
||||
virtual bool existFile(const io::path& filename) const _IRR_OVERRIDE_;
|
||||
bool existFile(const io::path& filename) const override;
|
||||
|
||||
private:
|
||||
|
||||
// don't expose, needs refactoring
|
||||
bool changeArchivePassword(const path& filename,
|
||||
const core::stringc& password,
|
||||
IFileArchive** archive = 0);
|
||||
|
||||
//! Currently used FileSystemType
|
||||
EFileSystemType FileSystemType;
|
||||
//! WorkingDirectory for Native and Virtual filesystems
|
||||
|
@ -7,7 +7,6 @@
|
||||
#ifdef _IRR_COMPILE_WITH_GLX_MANAGER_
|
||||
|
||||
#include "os.h"
|
||||
#include <dlfcn.h>
|
||||
|
||||
#if defined(_IRR_OPENGL_USE_EXTPOINTER_)
|
||||
#define GL_GLEXT_LEGACY 1
|
||||
@ -29,7 +28,7 @@ namespace video
|
||||
{
|
||||
|
||||
CGLXManager::CGLXManager(const SIrrlichtCreationParameters& params, const SExposedVideoData& videodata, int screennr)
|
||||
: Params(params), PrimaryContext(videodata), VisualInfo(0), glxFBConfig(0), GlxWin(0), libHandle(NULL)
|
||||
: Params(params), PrimaryContext(videodata), VisualInfo(0), glxFBConfig(0), GlxWin(0)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CGLXManager");
|
||||
@ -280,8 +279,6 @@ bool CGLXManager::initialize(const SIrrlichtCreationParameters& params, const SE
|
||||
|
||||
void CGLXManager::terminate()
|
||||
{
|
||||
if (libHandle)
|
||||
dlclose(libHandle);
|
||||
memset((void*)&CurrentContext, 0, sizeof(CurrentContext));
|
||||
}
|
||||
|
||||
@ -311,6 +308,16 @@ void CGLXManager::destroySurface()
|
||||
glXDestroyWindow((Display*)CurrentContext.OpenGLLinux.X11Display, GlxWin);
|
||||
}
|
||||
|
||||
#if defined(GLX_ARB_create_context)
|
||||
static int IrrIgnoreError(Display *display, XErrorEvent *event)
|
||||
{
|
||||
char msg[256];
|
||||
XGetErrorText(display, event->error_code, msg, 256);
|
||||
os::Printer::log("Ignoring an X error", msg, ELL_DEBUG);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool CGLXManager::generateContext()
|
||||
{
|
||||
GLXContext context = 0;
|
||||
@ -329,13 +336,16 @@ bool CGLXManager::generateContext()
|
||||
|
||||
if (glxCreateContextAttribsARB)
|
||||
{
|
||||
os::Printer::log("GLX with GLX_ARB_create_context", ELL_DEBUG);
|
||||
int contextAttrBuffer[] = {
|
||||
GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
|
||||
GLX_CONTEXT_MINOR_VERSION_ARB, 0,
|
||||
// GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB,
|
||||
None
|
||||
};
|
||||
XErrorHandler old = XSetErrorHandler(IrrIgnoreError);
|
||||
context = glxCreateContextAttribsARB((Display*)CurrentContext.OpenGLLinux.X11Display, (GLXFBConfig)glxFBConfig, NULL, True, contextAttrBuffer);
|
||||
XSetErrorHandler(old);
|
||||
// transparently fall back to legacy call
|
||||
}
|
||||
if (!context)
|
||||
@ -456,15 +466,7 @@ void CGLXManager::destroyContext()
|
||||
|
||||
void* CGLXManager::getProcAddress(const std::string &procName)
|
||||
{
|
||||
void* proc = NULL;
|
||||
proc = (void*)glXGetProcAddressARB(reinterpret_cast<const GLubyte*>(procName.c_str()));
|
||||
if (!proc) {
|
||||
if (!libHandle)
|
||||
libHandle = dlopen("libGL.so", RTLD_LAZY);
|
||||
if (libHandle)
|
||||
proc = dlsym(libHandle, procName.c_str());
|
||||
}
|
||||
return proc;
|
||||
return (void*)glXGetProcAddressARB(reinterpret_cast<const GLubyte*>(procName.c_str()));
|
||||
}
|
||||
|
||||
bool CGLXManager::swapBuffers()
|
||||
|
@ -34,34 +34,34 @@ namespace video
|
||||
~CGLXManager();
|
||||
|
||||
// Initialize
|
||||
virtual bool initialize(const SIrrlichtCreationParameters& params, const SExposedVideoData& data) _IRR_OVERRIDE_;
|
||||
bool initialize(const SIrrlichtCreationParameters& params, const SExposedVideoData& data) override;
|
||||
|
||||
// Terminate
|
||||
virtual void terminate() _IRR_OVERRIDE_;
|
||||
void terminate() override;
|
||||
|
||||
// Create surface.
|
||||
virtual bool generateSurface() _IRR_OVERRIDE_;
|
||||
bool generateSurface() override;
|
||||
|
||||
// Destroy surface.
|
||||
virtual void destroySurface() _IRR_OVERRIDE_;
|
||||
void destroySurface() override;
|
||||
|
||||
// Create context.
|
||||
virtual bool generateContext() _IRR_OVERRIDE_;
|
||||
bool generateContext() override;
|
||||
|
||||
// Destroy context.
|
||||
virtual void destroyContext() _IRR_OVERRIDE_;
|
||||
void destroyContext() override;
|
||||
|
||||
//! Get current context
|
||||
virtual const SExposedVideoData& getContext() const _IRR_OVERRIDE_;
|
||||
const SExposedVideoData& getContext() const override;
|
||||
|
||||
//! Change render context, disable old and activate new defined by videoData
|
||||
virtual bool activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero) _IRR_OVERRIDE_;
|
||||
bool activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero) override;
|
||||
|
||||
// Get procedure address.
|
||||
virtual void* getProcAddress(const std::string &procName) _IRR_OVERRIDE_;
|
||||
void* getProcAddress(const std::string &procName) override;
|
||||
|
||||
// Swap buffers.
|
||||
virtual bool swapBuffers() _IRR_OVERRIDE_;
|
||||
bool swapBuffers() override;
|
||||
|
||||
XVisualInfo* getVisual() const {return VisualInfo;} // return XVisualInfo
|
||||
|
||||
@ -72,7 +72,6 @@ namespace video
|
||||
XVisualInfo* VisualInfo;
|
||||
void* glxFBConfig; // GLXFBConfig
|
||||
XID GlxWin; // GLXWindow
|
||||
void* libHandle; // handle to libGL.so
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -30,64 +30,64 @@ namespace gui
|
||||
virtual ~CGUIButton();
|
||||
|
||||
//! called if an event happened.
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_;
|
||||
bool OnEvent(const SEvent& event) override;
|
||||
|
||||
//! draws the element and its children
|
||||
virtual void draw() _IRR_OVERRIDE_;
|
||||
void draw() override;
|
||||
|
||||
//! sets another skin independent font. if this is set to zero, the button uses the font of the skin.
|
||||
virtual void setOverrideFont(IGUIFont* font=0) _IRR_OVERRIDE_;
|
||||
void setOverrideFont(IGUIFont* font=0) override;
|
||||
|
||||
//! Gets the override font (if any)
|
||||
virtual IGUIFont* getOverrideFont() const _IRR_OVERRIDE_;
|
||||
IGUIFont* getOverrideFont() const override;
|
||||
|
||||
//! Get the font which is used right now for drawing
|
||||
virtual IGUIFont* getActiveFont() const _IRR_OVERRIDE_;
|
||||
IGUIFont* getActiveFont() const override;
|
||||
|
||||
//! Sets another color for the button text.
|
||||
virtual void setOverrideColor(video::SColor color) _IRR_OVERRIDE_;
|
||||
void setOverrideColor(video::SColor color) override;
|
||||
|
||||
//! Gets the override color
|
||||
virtual video::SColor getOverrideColor(void) const _IRR_OVERRIDE_;
|
||||
video::SColor getOverrideColor(void) const override;
|
||||
|
||||
//! Gets the currently used text color
|
||||
virtual video::SColor getActiveColor() const _IRR_OVERRIDE_;
|
||||
video::SColor getActiveColor() const override;
|
||||
|
||||
//! Sets if the button text should use the override color or the color in the gui skin.
|
||||
virtual void enableOverrideColor(bool enable) _IRR_OVERRIDE_;
|
||||
void enableOverrideColor(bool enable) override;
|
||||
|
||||
//! Checks if an override color is enabled
|
||||
virtual bool isOverrideColorEnabled(void) const _IRR_OVERRIDE_;
|
||||
bool isOverrideColorEnabled(void) const override;
|
||||
|
||||
//! Sets an image which should be displayed on the button when it is in the given state.
|
||||
virtual void setImage(EGUI_BUTTON_IMAGE_STATE state, video::ITexture* image=0, const core::rect<s32>& sourceRect=core::rect<s32>(0,0,0,0)) _IRR_OVERRIDE_;
|
||||
void setImage(EGUI_BUTTON_IMAGE_STATE state, video::ITexture* image=0, const core::rect<s32>& sourceRect=core::rect<s32>(0,0,0,0)) override;
|
||||
|
||||
//! Sets an image which should be displayed on the button when it is in normal state.
|
||||
virtual void setImage(video::ITexture* image=0) _IRR_OVERRIDE_
|
||||
void setImage(video::ITexture* image=0) override
|
||||
{
|
||||
setImage(EGBIS_IMAGE_UP, image);
|
||||
}
|
||||
|
||||
//! Sets an image which should be displayed on the button when it is in normal state.
|
||||
virtual void setImage(video::ITexture* image, const core::rect<s32>& pos) _IRR_OVERRIDE_
|
||||
void setImage(video::ITexture* image, const core::rect<s32>& pos) override
|
||||
{
|
||||
setImage(EGBIS_IMAGE_UP, image, pos);
|
||||
}
|
||||
|
||||
//! Sets an image which should be displayed on the button when it is in pressed state.
|
||||
virtual void setPressedImage(video::ITexture* image=0) _IRR_OVERRIDE_
|
||||
void setPressedImage(video::ITexture* image=0) override
|
||||
{
|
||||
setImage(EGBIS_IMAGE_DOWN, image);
|
||||
}
|
||||
|
||||
//! Sets an image which should be displayed on the button when it is in pressed state.
|
||||
virtual void setPressedImage(video::ITexture* image, const core::rect<s32>& pos) _IRR_OVERRIDE_
|
||||
void setPressedImage(video::ITexture* image, const core::rect<s32>& pos) override
|
||||
{
|
||||
setImage(EGBIS_IMAGE_DOWN, image, pos);
|
||||
}
|
||||
|
||||
//! Sets the sprite bank used by the button
|
||||
virtual void setSpriteBank(IGUISpriteBank* bank=0) _IRR_OVERRIDE_;
|
||||
void setSpriteBank(IGUISpriteBank* bank=0) override;
|
||||
|
||||
//! Sets the animated sprite for a specific button state
|
||||
/** \param index: Number of the sprite within the sprite bank, use -1 for no sprite
|
||||
@ -97,60 +97,60 @@ namespace gui
|
||||
*/
|
||||
virtual void setSprite(EGUI_BUTTON_STATE state, s32 index,
|
||||
video::SColor color=video::SColor(255,255,255,255),
|
||||
bool loop=false, bool scale=false) _IRR_OVERRIDE_;
|
||||
bool loop=false, bool scale=false) override;
|
||||
|
||||
//! Get the sprite-index for the given state or -1 when no sprite is set
|
||||
virtual s32 getSpriteIndex(EGUI_BUTTON_STATE state) const _IRR_OVERRIDE_;
|
||||
s32 getSpriteIndex(EGUI_BUTTON_STATE state) const override;
|
||||
|
||||
//! Get the sprite color for the given state. Color is only used when a sprite is set.
|
||||
virtual video::SColor getSpriteColor(EGUI_BUTTON_STATE state) const _IRR_OVERRIDE_;
|
||||
video::SColor getSpriteColor(EGUI_BUTTON_STATE state) const override;
|
||||
|
||||
//! Returns if the sprite in the given state does loop
|
||||
virtual bool getSpriteLoop(EGUI_BUTTON_STATE state) const _IRR_OVERRIDE_;
|
||||
bool getSpriteLoop(EGUI_BUTTON_STATE state) const override;
|
||||
|
||||
//! Returns if the sprite in the given state is scaled
|
||||
virtual bool getSpriteScale(EGUI_BUTTON_STATE state) const _IRR_OVERRIDE_;
|
||||
bool getSpriteScale(EGUI_BUTTON_STATE state) const override;
|
||||
|
||||
//! Sets if the button should behave like a push button. Which means it
|
||||
//! can be in two states: Normal or Pressed. With a click on the button,
|
||||
//! the user can change the state of the button.
|
||||
virtual void setIsPushButton(bool isPushButton=true) _IRR_OVERRIDE_;
|
||||
void setIsPushButton(bool isPushButton=true) override;
|
||||
|
||||
//! Checks whether the button is a push button
|
||||
virtual bool isPushButton() const _IRR_OVERRIDE_;
|
||||
bool isPushButton() const override;
|
||||
|
||||
//! Sets the pressed state of the button if this is a pushbutton
|
||||
virtual void setPressed(bool pressed=true) _IRR_OVERRIDE_;
|
||||
void setPressed(bool pressed=true) override;
|
||||
|
||||
//! Returns if the button is currently pressed
|
||||
virtual bool isPressed() const _IRR_OVERRIDE_;
|
||||
bool isPressed() const override;
|
||||
|
||||
//! Sets if the button should use the skin to draw its border
|
||||
virtual void setDrawBorder(bool border=true) _IRR_OVERRIDE_;
|
||||
void setDrawBorder(bool border=true) override;
|
||||
|
||||
//! Checks if the button face and border are being drawn
|
||||
virtual bool isDrawingBorder() const _IRR_OVERRIDE_;
|
||||
bool isDrawingBorder() const override;
|
||||
|
||||
//! Sets if the alpha channel should be used for drawing images on the button (default is false)
|
||||
virtual void setUseAlphaChannel(bool useAlphaChannel=true) _IRR_OVERRIDE_;
|
||||
void setUseAlphaChannel(bool useAlphaChannel=true) override;
|
||||
|
||||
//! Checks if the alpha channel should be used for drawing images on the button
|
||||
virtual bool isAlphaChannelUsed() const _IRR_OVERRIDE_;
|
||||
bool isAlphaChannelUsed() const override;
|
||||
|
||||
//! Sets if the button should scale the button images to fit
|
||||
virtual void setScaleImage(bool scaleImage=true) _IRR_OVERRIDE_;
|
||||
void setScaleImage(bool scaleImage=true) override;
|
||||
|
||||
//! Checks whether the button scales the used images
|
||||
virtual bool isScalingImage() const _IRR_OVERRIDE_;
|
||||
bool isScalingImage() const override;
|
||||
|
||||
//! Get if the shift key was pressed in last EGET_BUTTON_CLICKED event
|
||||
virtual bool getClickShiftState() const _IRR_OVERRIDE_
|
||||
bool getClickShiftState() const override
|
||||
{
|
||||
return ClickShiftState;
|
||||
}
|
||||
|
||||
//! Get if the control key was pressed in last EGET_BUTTON_CLICKED event
|
||||
virtual bool getClickControlState() const _IRR_OVERRIDE_
|
||||
bool getClickControlState() const override
|
||||
{
|
||||
return ClickControlState;
|
||||
}
|
||||
|
@ -23,30 +23,30 @@ namespace gui
|
||||
CGUICheckBox(bool checked, IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle);
|
||||
|
||||
//! set if box is checked
|
||||
virtual void setChecked(bool checked) _IRR_OVERRIDE_;
|
||||
void setChecked(bool checked) override;
|
||||
|
||||
//! returns if box is checked
|
||||
virtual bool isChecked() const _IRR_OVERRIDE_;
|
||||
bool isChecked() const override;
|
||||
|
||||
//! Sets whether to draw the background
|
||||
virtual void setDrawBackground(bool draw) _IRR_OVERRIDE_;
|
||||
void setDrawBackground(bool draw) override;
|
||||
|
||||
//! Checks if background drawing is enabled
|
||||
/** \return true if background drawing is enabled, false otherwise */
|
||||
virtual bool isDrawBackgroundEnabled() const _IRR_OVERRIDE_;
|
||||
bool isDrawBackgroundEnabled() const override;
|
||||
|
||||
//! Sets whether to draw the border
|
||||
virtual void setDrawBorder(bool draw) _IRR_OVERRIDE_;
|
||||
void setDrawBorder(bool draw) override;
|
||||
|
||||
//! Checks if border drawing is enabled
|
||||
/** \return true if border drawing is enabled, false otherwise */
|
||||
virtual bool isDrawBorderEnabled() const _IRR_OVERRIDE_;
|
||||
bool isDrawBorderEnabled() const override;
|
||||
|
||||
//! called if an event happened.
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_;
|
||||
bool OnEvent(const SEvent& event) override;
|
||||
|
||||
//! draws the element and its children
|
||||
virtual void draw() _IRR_OVERRIDE_;
|
||||
void draw() override;
|
||||
|
||||
private:
|
||||
|
||||
|
@ -1,479 +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
|
||||
|
||||
#include "CGUIColorSelectDialog.h"
|
||||
|
||||
#ifdef _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#include "IGUISkin.h"
|
||||
#include "IGUIEnvironment.h"
|
||||
#include "IVideoDriver.h"
|
||||
#include "IGUIButton.h"
|
||||
#include "IGUIStaticText.h"
|
||||
#include "IGUIFont.h"
|
||||
#include "IGUISpriteBank.h"
|
||||
#include "IFileList.h"
|
||||
#include "os.h"
|
||||
#include "fast_atof.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
|
||||
const s32 CSD_WIDTH = 350;
|
||||
const s32 CSD_HEIGHT = 300;
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
struct subElementPredefines
|
||||
{
|
||||
const wchar_t *pre;
|
||||
const wchar_t *init;
|
||||
const wchar_t *post;
|
||||
int x, y;
|
||||
int range_down ,range_up;
|
||||
};
|
||||
|
||||
static const subElementPredefines Template [] =
|
||||
{
|
||||
{ L"A:", L"0", 0,50,165, 0, 255 },
|
||||
{ L"R:", L"0", 0,20,205, 0, 255 },
|
||||
{ L"G:", L"0", 0,20,230, 0, 255 },
|
||||
{ L"B:", L"0", 0,20,255, 0, 255 },
|
||||
{ L"H:", L"0", L"°",80,205, 0, 360 },
|
||||
{ L"S:", L"0", L"%",80,230, 0, 100 },
|
||||
{ L"L:", L"0", L"%",80,255, 0, 100 },
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
//! constructor
|
||||
CGUIColorSelectDialog::CGUIColorSelectDialog(const wchar_t* title, IGUIEnvironment* environment, IGUIElement* parent, s32 id)
|
||||
: IGUIColorSelectDialog(environment, parent, id,
|
||||
core::rect<s32>((parent->getAbsolutePosition().getWidth()-CSD_WIDTH)/2,
|
||||
(parent->getAbsolutePosition().getHeight()-CSD_HEIGHT)/2,
|
||||
(parent->getAbsolutePosition().getWidth()-CSD_WIDTH)/2+CSD_WIDTH,
|
||||
(parent->getAbsolutePosition().getHeight()-CSD_HEIGHT)/2+CSD_HEIGHT)),
|
||||
Dragging(false)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
IGUIElement::setDebugName("CGUIColorSelectDialog");
|
||||
#endif
|
||||
|
||||
Text = title;
|
||||
|
||||
IGUISkin* skin = Environment->getSkin();
|
||||
|
||||
const s32 buttonw = environment->getSkin()->getSize(EGDS_WINDOW_BUTTON_WIDTH);
|
||||
const s32 posx = RelativeRect.getWidth() - buttonw - 4;
|
||||
|
||||
CloseButton = Environment->addButton(core::rect<s32>(posx, 3, posx + buttonw, 3 + buttonw),
|
||||
this, -1, L"", skin ? skin->getDefaultText(EGDT_WINDOW_CLOSE) : L"Close");
|
||||
if (skin && skin->getSpriteBank())
|
||||
{
|
||||
CloseButton->setSpriteBank(skin->getSpriteBank());
|
||||
CloseButton->setSprite(EGBS_BUTTON_UP, skin->getIcon(EGDI_WINDOW_CLOSE), skin->getColor(EGDC_WINDOW_SYMBOL));
|
||||
CloseButton->setSprite(EGBS_BUTTON_DOWN, skin->getIcon(EGDI_WINDOW_CLOSE), skin->getColor(EGDC_WINDOW_SYMBOL));
|
||||
}
|
||||
CloseButton->setSubElement(true);
|
||||
CloseButton->setTabStop(false);
|
||||
CloseButton->setAlignment(EGUIA_LOWERRIGHT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT);
|
||||
CloseButton->grab();
|
||||
|
||||
OKButton = Environment->addButton(
|
||||
core::rect<s32>(RelativeRect.getWidth()-80, 30, RelativeRect.getWidth()-10, 50),
|
||||
this, -1, skin ? skin->getDefaultText(EGDT_MSG_BOX_OK) : L"OK");
|
||||
OKButton->setSubElement(true);
|
||||
OKButton->setAlignment(EGUIA_LOWERRIGHT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT);
|
||||
OKButton->grab();
|
||||
|
||||
CancelButton = Environment->addButton(
|
||||
core::rect<s32>(RelativeRect.getWidth()-80, 55, RelativeRect.getWidth()-10, 75),
|
||||
this, -1, skin ? skin->getDefaultText(EGDT_MSG_BOX_CANCEL) : L"Cancel");
|
||||
CancelButton->setSubElement(true);
|
||||
CancelButton->setAlignment(EGUIA_LOWERRIGHT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT);
|
||||
CancelButton->grab();
|
||||
|
||||
video::IVideoDriver* driver = Environment->getVideoDriver();
|
||||
ColorRing.Texture = driver->getTexture ( "#colorring" );
|
||||
if ( 0 == ColorRing.Texture )
|
||||
{
|
||||
buildColorRing(core::dimension2d<u32>(128, 128), 1,
|
||||
Environment->getSkin()->getColor(EGDC_3D_SHADOW));
|
||||
}
|
||||
|
||||
core::rect<s32> r(20,20, 0,0);
|
||||
|
||||
ColorRing.Control = Environment->addImage(ColorRing.Texture, r.UpperLeftCorner, true, this);
|
||||
ColorRing.Control->setSubElement(true);
|
||||
ColorRing.Control->grab();
|
||||
|
||||
for ( u32 i = 0; i != sizeof (Template) / sizeof ( subElementPredefines ); ++i )
|
||||
{
|
||||
if ( Template[i].pre )
|
||||
{
|
||||
r.UpperLeftCorner.X = Template[i].x;
|
||||
r.UpperLeftCorner.Y = Template[i].y;
|
||||
r.LowerRightCorner.X = r.UpperLeftCorner.X + 15;
|
||||
r.LowerRightCorner.Y = r.UpperLeftCorner.Y + 20;
|
||||
IGUIElement *t = Environment->addStaticText(Template[i].pre, r, false, false, this);
|
||||
t->setSubElement(true);
|
||||
}
|
||||
|
||||
if ( Template[i].post )
|
||||
{
|
||||
r.UpperLeftCorner.X = Template[i].x + 56;
|
||||
r.UpperLeftCorner.Y = Template[i].y;
|
||||
r.LowerRightCorner.X = r.UpperLeftCorner.X + 15;
|
||||
r.LowerRightCorner.Y = r.UpperLeftCorner.Y + 20;
|
||||
IGUIElement *t = Environment->addStaticText( Template[i].post, r, false, false, this);
|
||||
t->setSubElement(true);
|
||||
}
|
||||
|
||||
r.UpperLeftCorner.X = Template[i].x + 15;
|
||||
r.UpperLeftCorner.Y = Template[i].y-2;
|
||||
r.LowerRightCorner.X = r.UpperLeftCorner.X + 40;
|
||||
r.LowerRightCorner.Y = r.UpperLeftCorner.Y + 20;
|
||||
|
||||
gui::IGUISpinBox* spin = Environment->addSpinBox( Template[i].init, r, true, this);
|
||||
spin->setSubElement(true);
|
||||
spin->setDecimalPlaces(0);
|
||||
spin->setRange((f32)Template[i].range_down, (f32)Template[i].range_up);
|
||||
spin->grab();
|
||||
|
||||
Battery.push_back(spin);
|
||||
}
|
||||
|
||||
bringToFront(CancelButton);
|
||||
bringToFront(OKButton);
|
||||
}
|
||||
|
||||
|
||||
//! destructor
|
||||
CGUIColorSelectDialog::~CGUIColorSelectDialog()
|
||||
{
|
||||
if (CloseButton)
|
||||
CloseButton->drop();
|
||||
|
||||
if (OKButton)
|
||||
OKButton->drop();
|
||||
|
||||
if (CancelButton)
|
||||
CancelButton->drop();
|
||||
|
||||
for (u32 i = 0; i != Battery.size(); ++i)
|
||||
Battery[i]->drop();
|
||||
|
||||
if (ColorRing.Control)
|
||||
ColorRing.Control->drop();
|
||||
}
|
||||
|
||||
|
||||
//! renders a antialiased, colored ring
|
||||
void CGUIColorSelectDialog::buildColorRing( const core::dimension2d<u32> & dim, s32 supersample, const video::SColor& borderColor )
|
||||
{
|
||||
const core::dimension2d<u32> d(dim.Width * supersample, dim.Height * supersample);
|
||||
video::IVideoDriver* driver = Environment->getVideoDriver();
|
||||
|
||||
video::IImage *RawTexture = driver->createImage(video::ECF_A8R8G8B8, d);
|
||||
|
||||
RawTexture->fill ( 0x00808080 );
|
||||
|
||||
const s32 radiusOut = ( d.Width / 2 ) - 4;
|
||||
const s32 fullR2 = radiusOut * radiusOut;
|
||||
|
||||
video::SColorf rgb(0,0,0);
|
||||
video::SColorHSL hsl;
|
||||
hsl.Luminance = 50;
|
||||
hsl.Saturation = 100;
|
||||
|
||||
core::position2d<s32> p;
|
||||
for ( p.Y = -radiusOut; p.Y <= radiusOut; p.Y += 1 )
|
||||
{
|
||||
s32 y2 = p.Y * p.Y;
|
||||
|
||||
for (p.X = -radiusOut; p.X <= radiusOut; p.X += 1)
|
||||
{
|
||||
s32 r2 = y2 + ( p.X * p.X );
|
||||
|
||||
// test point in circle
|
||||
s32 testa = r2 - fullR2;
|
||||
|
||||
if ( testa < 0 )
|
||||
{
|
||||
// dotproduct u ( x,y ) * v ( 1, 0 ) = cosinus(a)
|
||||
|
||||
const f32 r = sqrtf((f32) r2);
|
||||
|
||||
// normalize, dotproduct = xnorm
|
||||
const f32 xn = r == 0.f ? 0.f : -p.X * core::reciprocal(r);
|
||||
|
||||
hsl.Hue = acosf(xn)*core::RADTODEG;
|
||||
if ( p.Y > 0 )
|
||||
hsl.Hue = 360 - hsl.Hue;
|
||||
hsl.Hue -= 90;
|
||||
|
||||
const f32 rTest = r / radiusOut;
|
||||
#if 0
|
||||
if (rTest < 0.33f)
|
||||
{
|
||||
// luminance from 0 to 50
|
||||
hsl.Luminance = 50*(rTest/0.33);
|
||||
hsl.Saturation = 0.f;
|
||||
hsl.toRGB(rgb);
|
||||
}
|
||||
else
|
||||
if ( rTest < 0.66f )
|
||||
{
|
||||
// saturation from 0 to 100
|
||||
hsl.Saturation = 100*(( rTest - 0.33f ) / 0.33f);
|
||||
hsl.Luminance = 50;
|
||||
hsl.toRGB(rgb);
|
||||
}
|
||||
else
|
||||
{
|
||||
// luminance from 50 to 100
|
||||
hsl.Luminance = 100*(0.5f + ( ( rTest - 0.66f ) / .66f ));
|
||||
hsl.Saturation = 100;
|
||||
hsl.toRGB(rgb);
|
||||
}
|
||||
// borders should be slightly transparent
|
||||
if ( rTest >= 0.95f )
|
||||
rgb.a = (1.f-rTest)*20;
|
||||
else
|
||||
rgb.a=1.f;
|
||||
#else
|
||||
if ( rTest > 0.5f )
|
||||
{
|
||||
hsl.Saturation = 100;
|
||||
hsl.Luminance = 50;
|
||||
hsl.toRGB(rgb);
|
||||
}
|
||||
// borders should be slightly transparent
|
||||
if ( rTest < 0.5f )
|
||||
rgb.a = 0;
|
||||
else if ( rTest >= 0.95f )
|
||||
rgb.a = (1.f-rTest)*20;
|
||||
else if ( rTest <= 0.55f )
|
||||
rgb.a = (rTest-0.5f)*20;
|
||||
else
|
||||
rgb.a=1.f;
|
||||
#endif
|
||||
RawTexture->setPixel(4+p.X+radiusOut, 4+p.Y+radiusOut, rgb.toSColor());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( supersample > 1 )
|
||||
{
|
||||
video::IImage * filter = driver->createImage(video::ECF_A8R8G8B8, dim );
|
||||
RawTexture->copyToScalingBoxFilter(filter);
|
||||
RawTexture->drop();
|
||||
RawTexture = filter;
|
||||
}
|
||||
|
||||
bool generateMipLevels = driver->getTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS);
|
||||
driver->setTextureCreationFlag( video::ETCF_CREATE_MIP_MAPS, false);
|
||||
|
||||
ColorRing.Texture = driver->addTexture ( "#colorring", RawTexture);
|
||||
RawTexture->drop();
|
||||
|
||||
driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, generateMipLevels);
|
||||
}
|
||||
|
||||
|
||||
//! called if an event happened.
|
||||
bool CGUIColorSelectDialog::OnEvent(const SEvent& event)
|
||||
{
|
||||
if (isEnabled())
|
||||
{
|
||||
switch(event.EventType)
|
||||
{
|
||||
case EET_GUI_EVENT:
|
||||
switch(event.GUIEvent.EventType)
|
||||
{
|
||||
case EGET_SPINBOX_CHANGED:
|
||||
{
|
||||
for ( u32 i = 0; i!= Battery.size (); ++i )
|
||||
{
|
||||
if ( event.GUIEvent.Caller == Battery[i] )
|
||||
{
|
||||
if (i<4)
|
||||
{
|
||||
video::SColor rgb((u32)Battery[0]->getValue(), (u32)Battery[1]->getValue(),
|
||||
(u32)Battery[2]->getValue(), (u32)Battery[3]->getValue());
|
||||
video::SColorHSL hsl;
|
||||
video::SColorf rgb2(rgb);
|
||||
hsl.fromRGB(rgb2);
|
||||
Battery[4]->setValue(hsl.Hue);
|
||||
Battery[5]->setValue(hsl.Saturation);
|
||||
Battery[6]->setValue(hsl.Luminance);
|
||||
}
|
||||
else
|
||||
{
|
||||
video::SColorHSL hsl(Battery[4]->getValue(), Battery[5]->getValue(),
|
||||
Battery[6]->getValue());
|
||||
video::SColorf rgb2;
|
||||
hsl.toRGB(rgb2);
|
||||
video::SColor rgb = rgb2.toSColor();
|
||||
Battery[1]->setValue((f32)rgb.getRed());
|
||||
Battery[2]->setValue((f32)rgb.getGreen());
|
||||
Battery[3]->setValue((f32)rgb.getBlue());
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
case EGET_ELEMENT_FOCUS_LOST:
|
||||
Dragging = false;
|
||||
break;
|
||||
case EGET_BUTTON_CLICKED:
|
||||
if (event.GUIEvent.Caller == CloseButton ||
|
||||
event.GUIEvent.Caller == CancelButton)
|
||||
{
|
||||
sendCancelEvent();
|
||||
remove();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
if (event.GUIEvent.Caller == OKButton)
|
||||
{
|
||||
sendSelectedEvent();
|
||||
remove();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case EGET_LISTBOX_CHANGED:
|
||||
case EGET_LISTBOX_SELECTED_AGAIN:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EET_MOUSE_INPUT_EVENT:
|
||||
switch(event.MouseInput.Event)
|
||||
{
|
||||
case EMIE_LMOUSE_PRESSED_DOWN:
|
||||
DragStart.X = event.MouseInput.X;
|
||||
DragStart.Y = event.MouseInput.Y;
|
||||
Dragging = true;
|
||||
return true;
|
||||
case EMIE_LMOUSE_LEFT_UP:
|
||||
Dragging = false;
|
||||
return true;
|
||||
case EMIE_MOUSE_MOVED:
|
||||
if (Dragging)
|
||||
{
|
||||
// gui window should not be dragged outside its parent
|
||||
if (Parent)
|
||||
if (event.MouseInput.X < Parent->getAbsolutePosition().UpperLeftCorner.X +1 ||
|
||||
event.MouseInput.Y < Parent->getAbsolutePosition().UpperLeftCorner.Y +1 ||
|
||||
event.MouseInput.X > Parent->getAbsolutePosition().LowerRightCorner.X -1 ||
|
||||
event.MouseInput.Y > Parent->getAbsolutePosition().LowerRightCorner.Y -1)
|
||||
|
||||
return true;
|
||||
|
||||
move(core::position2d<s32>(event.MouseInput.X - DragStart.X, event.MouseInput.Y - DragStart.Y));
|
||||
DragStart.X = event.MouseInput.X;
|
||||
DragStart.Y = event.MouseInput.Y;
|
||||
return true;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return IGUIElement::OnEvent(event);
|
||||
}
|
||||
|
||||
|
||||
//! draws the element and its children
|
||||
void CGUIColorSelectDialog::draw()
|
||||
{
|
||||
if (!IsVisible)
|
||||
return;
|
||||
|
||||
IGUISkin* skin = Environment->getSkin();
|
||||
core::rect<s32> rect = skin->draw3DWindowBackground(this, true, skin->getColor(EGDC_ACTIVE_BORDER),
|
||||
AbsoluteRect, &AbsoluteClippingRect);
|
||||
|
||||
if (Text.size())
|
||||
{
|
||||
rect.UpperLeftCorner.X += 2;
|
||||
rect.LowerRightCorner.X -= skin->getSize(EGDS_WINDOW_BUTTON_WIDTH) + 5;
|
||||
|
||||
IGUIFont* font = skin->getFont(EGDF_WINDOW);
|
||||
if (font)
|
||||
font->draw(Text.c_str(), rect, skin->getColor(EGDC_ACTIVE_CAPTION), false, true,
|
||||
&AbsoluteClippingRect);
|
||||
}
|
||||
|
||||
IGUIElement::draw();
|
||||
|
||||
// draw color selector after the window elements
|
||||
core::vector2di pos(ColorRing.Control->getAbsolutePosition().UpperLeftCorner);
|
||||
pos.X += ColorRing.Texture->getOriginalSize().Width/2;
|
||||
pos.Y += ColorRing.Texture->getOriginalSize().Height/2;
|
||||
#if 0
|
||||
const f32 h = Battery[4]->getValue();
|
||||
const f32 s = Battery[5]->getValue();
|
||||
const f32 l = Battery[6]->getValue();
|
||||
const f32 factor = 58.f*(((s==0)&&(l<50))?(l*0.33f/50):(
|
||||
(s<100)?((.33f+(s*0.33f/100))):((0.66f+(l-50)*0.33f/50))));
|
||||
|
||||
#else
|
||||
const f32 factor = 44;
|
||||
#endif
|
||||
pos.X += core::round32(sinf(Battery[4]->getValue()*core::DEGTORAD)*factor);
|
||||
pos.Y -= core::round32(cosf(Battery[4]->getValue()*core::DEGTORAD)*factor);
|
||||
Environment->getVideoDriver()->draw2DPolygon(pos, 4, 0xffffffff, 4);
|
||||
}
|
||||
|
||||
|
||||
video::SColor CGUIColorSelectDialog::getColor()
|
||||
{
|
||||
return video::SColor((u32)Battery[0]->getValue(), (u32)Battery[1]->getValue(),
|
||||
(u32)Battery[2]->getValue(), (u32)Battery[3]->getValue());
|
||||
}
|
||||
|
||||
video::SColorHSL CGUIColorSelectDialog::getColorHSL()
|
||||
{
|
||||
return video::SColorHSL(Battery[4]->getValue(), Battery[5]->getValue(),
|
||||
Battery[6]->getValue());
|
||||
}
|
||||
|
||||
//! sends the event that the file has been selected.
|
||||
void CGUIColorSelectDialog::sendSelectedEvent()
|
||||
{
|
||||
SEvent event;
|
||||
event.EventType = EET_GUI_EVENT;
|
||||
event.GUIEvent.Caller = this;
|
||||
event.GUIEvent.Element = 0;
|
||||
event.GUIEvent.EventType = EGET_FILE_SELECTED;
|
||||
Parent->OnEvent(event);
|
||||
}
|
||||
|
||||
|
||||
//! sends the event that the file choose process has been canceld
|
||||
void CGUIColorSelectDialog::sendCancelEvent()
|
||||
{
|
||||
SEvent event;
|
||||
event.EventType = EET_GUI_EVENT;
|
||||
event.GUIEvent.Caller = this;
|
||||
event.GUIEvent.Element = 0;
|
||||
event.GUIEvent.EventType = EGET_FILE_CHOOSE_DIALOG_CANCELLED;
|
||||
Parent->OnEvent(event);
|
||||
}
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif // _IRR_COMPILE_WITH_GUI_
|
@ -1,74 +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 __C_GUI_COLOR_SELECT_DIALOG_H_INCLUDED__
|
||||
#define __C_GUI_COLOR_SELECT_DIALOG_H_INCLUDED__
|
||||
|
||||
#include "IrrCompileConfig.h"
|
||||
#ifdef _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#include "IGUIColorSelectDialog.h"
|
||||
#include "IGUIButton.h"
|
||||
#include "IGUISpinBox.h"
|
||||
#include "IGUIImage.h"
|
||||
#include "irrArray.h"
|
||||
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
|
||||
class CGUIColorSelectDialog : public IGUIColorSelectDialog
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
CGUIColorSelectDialog(const wchar_t* title, IGUIEnvironment* environment, IGUIElement* parent, s32 id);
|
||||
|
||||
//! destructor
|
||||
virtual ~CGUIColorSelectDialog();
|
||||
|
||||
//! called if an event happened.
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_;
|
||||
|
||||
//! draws the element and its children
|
||||
virtual void draw() _IRR_OVERRIDE_;
|
||||
|
||||
virtual video::SColor getColor() _IRR_OVERRIDE_;
|
||||
virtual video::SColorHSL getColorHSL() _IRR_OVERRIDE_;
|
||||
|
||||
private:
|
||||
|
||||
//! sends the event that the file has been selected.
|
||||
void sendSelectedEvent();
|
||||
|
||||
//! sends the event that the file choose process has been canceld
|
||||
void sendCancelEvent();
|
||||
|
||||
core::position2d<s32> DragStart;
|
||||
bool Dragging;
|
||||
IGUIButton* CloseButton;
|
||||
IGUIButton* OKButton;
|
||||
IGUIButton* CancelButton;
|
||||
|
||||
core::array<IGUISpinBox*> Battery;
|
||||
|
||||
struct SColorCircle
|
||||
{
|
||||
IGUIImage * Control;
|
||||
video::ITexture * Texture;
|
||||
};
|
||||
SColorCircle ColorRing;
|
||||
|
||||
void buildColorRing( const core::dimension2d<u32> & dim, s32 supersample, const video::SColor& borderColor );
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif // _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#endif // __C_GUI_COLOR_SELECT_DIALOG_H_INCLUDED__
|
@ -30,49 +30,49 @@ namespace gui
|
||||
s32 id, core::rect<s32> rectangle);
|
||||
|
||||
//! Returns amount of items in box
|
||||
virtual u32 getItemCount() const _IRR_OVERRIDE_;
|
||||
u32 getItemCount() const override;
|
||||
|
||||
//! returns string of an item. the idx may be a value from 0 to itemCount-1
|
||||
virtual const wchar_t* getItem(u32 idx) const _IRR_OVERRIDE_;
|
||||
const wchar_t* getItem(u32 idx) const override;
|
||||
|
||||
//! Returns item data of an item. the idx may be a value from 0 to itemCount-1
|
||||
virtual u32 getItemData(u32 idx) const _IRR_OVERRIDE_;
|
||||
u32 getItemData(u32 idx) const override;
|
||||
|
||||
//! Returns index based on item data
|
||||
virtual s32 getIndexForItemData( u32 data ) const _IRR_OVERRIDE_;
|
||||
s32 getIndexForItemData( u32 data ) const override;
|
||||
|
||||
//! adds an item and returns the index of it
|
||||
virtual u32 addItem(const wchar_t* text, u32 data) _IRR_OVERRIDE_;
|
||||
u32 addItem(const wchar_t* text, u32 data) override;
|
||||
|
||||
//! Removes an item from the combo box.
|
||||
virtual void removeItem(u32 id) _IRR_OVERRIDE_;
|
||||
void removeItem(u32 id) override;
|
||||
|
||||
//! deletes all items in the combo box
|
||||
virtual void clear() _IRR_OVERRIDE_;
|
||||
void clear() override;
|
||||
|
||||
//! returns the text of the currently selected item
|
||||
virtual const wchar_t* getText() const _IRR_OVERRIDE_;
|
||||
const wchar_t* getText() const override;
|
||||
|
||||
//! returns id of selected item. returns -1 if no item is selected.
|
||||
virtual s32 getSelected() const _IRR_OVERRIDE_;
|
||||
s32 getSelected() const override;
|
||||
|
||||
//! sets the selected item. Set this to -1 if no item should be selected
|
||||
virtual void setSelected(s32 idx) _IRR_OVERRIDE_;
|
||||
void setSelected(s32 idx) override;
|
||||
|
||||
//! sets the text alignment of the text part
|
||||
virtual void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical) _IRR_OVERRIDE_;
|
||||
void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical) override;
|
||||
|
||||
//! Set the maximal number of rows for the selection listbox
|
||||
virtual void setMaxSelectionRows(u32 max) _IRR_OVERRIDE_;
|
||||
void setMaxSelectionRows(u32 max) override;
|
||||
|
||||
//! Get the maximal number of rows for the selection listbox
|
||||
virtual u32 getMaxSelectionRows() const _IRR_OVERRIDE_;
|
||||
u32 getMaxSelectionRows() const override;
|
||||
|
||||
//! called if an event happened.
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_;
|
||||
bool OnEvent(const SEvent& event) override;
|
||||
|
||||
//! draws the element and its children
|
||||
virtual void draw() _IRR_OVERRIDE_;
|
||||
void draw() override;
|
||||
|
||||
private:
|
||||
|
||||
|
@ -1,773 +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
|
||||
|
||||
#include "CGUIContextMenu.h"
|
||||
|
||||
#ifdef _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#include "IGUISkin.h"
|
||||
#include "IGUIEnvironment.h"
|
||||
#include "IVideoDriver.h"
|
||||
#include "IGUIFont.h"
|
||||
#include "IGUISpriteBank.h"
|
||||
#include "os.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
|
||||
|
||||
//! constructor
|
||||
CGUIContextMenu::CGUIContextMenu(IGUIEnvironment* environment,
|
||||
IGUIElement* parent, s32 id,
|
||||
core::rect<s32> rectangle, bool getFocus, bool allowFocus)
|
||||
: IGUIContextMenu(environment, parent, id, rectangle), EventParent(0), LastFont(0),
|
||||
CloseHandling(ECMC_REMOVE), HighLighted(-1), ChangeTime(0), AllowFocus(allowFocus)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CGUIContextMenu");
|
||||
#endif
|
||||
|
||||
Pos = rectangle.UpperLeftCorner;
|
||||
recalculateSize();
|
||||
|
||||
if (getFocus)
|
||||
Environment->setFocus(this);
|
||||
|
||||
setNotClipped(true);
|
||||
}
|
||||
|
||||
|
||||
//! destructor
|
||||
CGUIContextMenu::~CGUIContextMenu()
|
||||
{
|
||||
for (u32 i=0; i<Items.size(); ++i)
|
||||
if (Items[i].SubMenu)
|
||||
Items[i].SubMenu->drop();
|
||||
|
||||
if (LastFont)
|
||||
LastFont->drop();
|
||||
}
|
||||
|
||||
//! set behavior when menus are closed
|
||||
void CGUIContextMenu::setCloseHandling(ECONTEXT_MENU_CLOSE onClose)
|
||||
{
|
||||
CloseHandling = onClose;
|
||||
}
|
||||
|
||||
//! get current behavior when the menue will be closed
|
||||
ECONTEXT_MENU_CLOSE CGUIContextMenu::getCloseHandling() const
|
||||
{
|
||||
return CloseHandling;
|
||||
}
|
||||
|
||||
//! Returns amount of menu items
|
||||
u32 CGUIContextMenu::getItemCount() const
|
||||
{
|
||||
return Items.size();
|
||||
}
|
||||
|
||||
|
||||
//! Adds a menu item.
|
||||
u32 CGUIContextMenu::addItem(const wchar_t* text, s32 commandId, bool enabled, bool hasSubMenu, bool checked, bool autoChecking)
|
||||
{
|
||||
return insertItem(Items.size(), text, commandId, enabled, hasSubMenu, checked, autoChecking);
|
||||
}
|
||||
|
||||
//! Insert a menu item at specified position.
|
||||
u32 CGUIContextMenu::insertItem(u32 idx, const wchar_t* text, s32 commandId, bool enabled,
|
||||
bool hasSubMenu, bool checked, bool autoChecking)
|
||||
{
|
||||
SItem s;
|
||||
s.Enabled = enabled;
|
||||
s.Checked = checked;
|
||||
s.AutoChecking = autoChecking;
|
||||
s.Text = text;
|
||||
s.IsSeparator = (text == 0);
|
||||
s.SubMenu = 0;
|
||||
s.CommandId = commandId;
|
||||
s.PosY = 0;
|
||||
|
||||
if (hasSubMenu)
|
||||
{
|
||||
s.SubMenu = new CGUIContextMenu(Environment, this, commandId,
|
||||
core::rect<s32>(0,0,100,100), false, false);
|
||||
s.SubMenu->setVisible(false);
|
||||
}
|
||||
|
||||
u32 result = idx;
|
||||
if ( idx < Items.size() )
|
||||
{
|
||||
Items.insert(s, idx);
|
||||
}
|
||||
else
|
||||
{
|
||||
Items.push_back(s);
|
||||
result = Items.size() - 1;
|
||||
}
|
||||
|
||||
recalculateSize();
|
||||
return result;
|
||||
}
|
||||
|
||||
s32 CGUIContextMenu::findItemWithCommandId(s32 commandId, u32 idxStartSearch) const
|
||||
{
|
||||
for ( u32 i=idxStartSearch; i<Items.size(); ++i )
|
||||
{
|
||||
if ( Items[i].CommandId == commandId )
|
||||
{
|
||||
return (s32)i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
//! Adds a sub menu from an element that already exists.
|
||||
void CGUIContextMenu::setSubMenu(u32 index, CGUIContextMenu* menu)
|
||||
{
|
||||
if (index >= Items.size())
|
||||
return;
|
||||
|
||||
if (menu)
|
||||
menu->grab();
|
||||
if (Items[index].SubMenu)
|
||||
Items[index].SubMenu->drop();
|
||||
|
||||
Items[index].SubMenu = menu;
|
||||
|
||||
if (menu)
|
||||
{
|
||||
menu->setVisible(false);
|
||||
menu->AllowFocus = false;
|
||||
if ( Environment->getFocus() == menu )
|
||||
{
|
||||
Environment->setFocus( this );
|
||||
}
|
||||
}
|
||||
|
||||
recalculateSize();
|
||||
}
|
||||
|
||||
|
||||
//! Adds a separator item to the menu
|
||||
void CGUIContextMenu::addSeparator()
|
||||
{
|
||||
addItem(0, -1, true, false, false, false);
|
||||
}
|
||||
|
||||
|
||||
//! Returns text of the menu item.
|
||||
const wchar_t* CGUIContextMenu::getItemText(u32 idx) const
|
||||
{
|
||||
if (idx >= Items.size())
|
||||
return 0;
|
||||
|
||||
return Items[idx].Text.c_str();
|
||||
}
|
||||
|
||||
|
||||
//! Sets text of the menu item.
|
||||
void CGUIContextMenu::setItemText(u32 idx, const wchar_t* text)
|
||||
{
|
||||
if (idx >= Items.size())
|
||||
return;
|
||||
|
||||
Items[idx].Text = text;
|
||||
recalculateSize();
|
||||
}
|
||||
|
||||
//! should the element change the checked status on clicking
|
||||
void CGUIContextMenu::setItemAutoChecking(u32 idx, bool autoChecking)
|
||||
{
|
||||
if ( idx >= Items.size())
|
||||
return;
|
||||
|
||||
Items[idx].AutoChecking = autoChecking;
|
||||
}
|
||||
|
||||
//! does the element change the checked status on clicking
|
||||
bool CGUIContextMenu::getItemAutoChecking(u32 idx) const
|
||||
{
|
||||
if (idx >= Items.size())
|
||||
return false;
|
||||
|
||||
return Items[idx].AutoChecking;
|
||||
}
|
||||
|
||||
|
||||
//! Returns if a menu item is enabled
|
||||
bool CGUIContextMenu::isItemEnabled(u32 idx) const
|
||||
{
|
||||
if (idx >= Items.size())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return Items[idx].Enabled;
|
||||
}
|
||||
|
||||
|
||||
//! Returns if a menu item is checked
|
||||
bool CGUIContextMenu::isItemChecked(u32 idx) const
|
||||
{
|
||||
if (idx >= Items.size())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return Items[idx].Checked;
|
||||
}
|
||||
|
||||
|
||||
//! Sets if the menu item should be enabled.
|
||||
void CGUIContextMenu::setItemEnabled(u32 idx, bool enabled)
|
||||
{
|
||||
if (idx >= Items.size())
|
||||
return;
|
||||
|
||||
Items[idx].Enabled = enabled;
|
||||
}
|
||||
|
||||
|
||||
//! Sets if the menu item should be checked.
|
||||
void CGUIContextMenu::setItemChecked(u32 idx, bool checked )
|
||||
{
|
||||
if (idx >= Items.size())
|
||||
return;
|
||||
|
||||
Items[idx].Checked = checked;
|
||||
}
|
||||
|
||||
|
||||
//! Removes a menu item
|
||||
void CGUIContextMenu::removeItem(u32 idx)
|
||||
{
|
||||
if (idx >= Items.size())
|
||||
return;
|
||||
|
||||
if (Items[idx].SubMenu)
|
||||
{
|
||||
Items[idx].SubMenu->drop();
|
||||
Items[idx].SubMenu = 0;
|
||||
}
|
||||
|
||||
Items.erase(idx);
|
||||
recalculateSize();
|
||||
}
|
||||
|
||||
|
||||
//! Removes all menu items
|
||||
void CGUIContextMenu::removeAllItems()
|
||||
{
|
||||
for (u32 i=0; i<Items.size(); ++i)
|
||||
if (Items[i].SubMenu)
|
||||
Items[i].SubMenu->drop();
|
||||
|
||||
Items.clear();
|
||||
recalculateSize();
|
||||
}
|
||||
|
||||
|
||||
//! called if an event happened.
|
||||
bool CGUIContextMenu::OnEvent(const SEvent& event)
|
||||
{
|
||||
if (isEnabled())
|
||||
{
|
||||
|
||||
switch(event.EventType)
|
||||
{
|
||||
case EET_GUI_EVENT:
|
||||
switch(event.GUIEvent.EventType)
|
||||
{
|
||||
case EGET_ELEMENT_FOCUS_LOST:
|
||||
if (event.GUIEvent.Caller == this && !isMyChild(event.GUIEvent.Element) && AllowFocus)
|
||||
{
|
||||
// set event parent of submenus
|
||||
IGUIElement * p = EventParent ? EventParent : Parent;
|
||||
if ( p ) // can be 0 when element got removed already
|
||||
{
|
||||
setEventParent(p);
|
||||
|
||||
SEvent eventClose;
|
||||
eventClose.EventType = EET_GUI_EVENT;
|
||||
eventClose.GUIEvent.Caller = this;
|
||||
eventClose.GUIEvent.Element = 0;
|
||||
eventClose.GUIEvent.EventType = EGET_ELEMENT_CLOSED;
|
||||
if ( !p->OnEvent(eventClose) )
|
||||
{
|
||||
if ( CloseHandling & ECMC_HIDE )
|
||||
{
|
||||
setVisible(false);
|
||||
}
|
||||
if ( CloseHandling & ECMC_REMOVE )
|
||||
{
|
||||
remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case EGET_ELEMENT_FOCUSED:
|
||||
if (event.GUIEvent.Caller == this && !AllowFocus)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EET_MOUSE_INPUT_EVENT:
|
||||
switch(event.MouseInput.Event)
|
||||
{
|
||||
case EMIE_LMOUSE_LEFT_UP:
|
||||
{
|
||||
// menu might be removed if it loses focus in sendClick, so grab a reference
|
||||
grab();
|
||||
const u32 t = sendClick(core::position2d<s32>(event.MouseInput.X, event.MouseInput.Y));
|
||||
if ((t==0 || t==1) && Environment->hasFocus(this))
|
||||
Environment->removeFocus(this);
|
||||
drop();
|
||||
}
|
||||
return true;
|
||||
case EMIE_LMOUSE_PRESSED_DOWN:
|
||||
return true;
|
||||
case EMIE_MOUSE_MOVED:
|
||||
if (Environment->hasFocus(this))
|
||||
highlight(core::position2d<s32>(event.MouseInput.X, event.MouseInput.Y), true);
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return IGUIElement::OnEvent(event);
|
||||
}
|
||||
|
||||
|
||||
//! Sets the visible state of this element.
|
||||
void CGUIContextMenu::setVisible(bool visible)
|
||||
{
|
||||
HighLighted = -1;
|
||||
ChangeTime = os::Timer::getTime();
|
||||
for (u32 j=0; j<Items.size(); ++j)
|
||||
if (Items[j].SubMenu)
|
||||
Items[j].SubMenu->setVisible(false);
|
||||
|
||||
IGUIElement::setVisible(visible);
|
||||
}
|
||||
|
||||
|
||||
//! sends a click Returns:
|
||||
//! 0 if click went outside of the element,
|
||||
//! 1 if a valid button was clicked,
|
||||
//! 2 if a nonclickable element was clicked
|
||||
u32 CGUIContextMenu::sendClick(const core::position2d<s32>& p)
|
||||
{
|
||||
u32 t = 0;
|
||||
|
||||
// get number of open submenu
|
||||
s32 openmenu = -1;
|
||||
s32 j;
|
||||
for (j=0; j<(s32)Items.size(); ++j)
|
||||
if (Items[j].SubMenu && Items[j].SubMenu->isVisible())
|
||||
{
|
||||
openmenu = j;
|
||||
break;
|
||||
}
|
||||
|
||||
// delegate click operation to submenu
|
||||
if (openmenu != -1)
|
||||
{
|
||||
t = Items[j].SubMenu->sendClick(p);
|
||||
if (t != 0)
|
||||
return t; // clicked something
|
||||
}
|
||||
|
||||
// check click on myself
|
||||
if (isPointInside(p) &&
|
||||
(u32)HighLighted < Items.size())
|
||||
{
|
||||
if (!Items[HighLighted].Enabled ||
|
||||
Items[HighLighted].IsSeparator ||
|
||||
Items[HighLighted].SubMenu)
|
||||
return 2;
|
||||
|
||||
if ( Items[HighLighted].AutoChecking )
|
||||
{
|
||||
Items[HighLighted].Checked = Items[HighLighted].Checked ? false : true;
|
||||
}
|
||||
|
||||
SEvent event;
|
||||
event.EventType = EET_GUI_EVENT;
|
||||
event.GUIEvent.Caller = this;
|
||||
event.GUIEvent.Element = 0;
|
||||
event.GUIEvent.EventType = EGET_MENU_ITEM_SELECTED;
|
||||
if (EventParent)
|
||||
EventParent->OnEvent(event);
|
||||
else if (Parent)
|
||||
Parent->OnEvent(event);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//! returns true, if an element was highligted
|
||||
bool CGUIContextMenu::highlight(const core::position2d<s32>& p, bool canOpenSubMenu)
|
||||
{
|
||||
if (!isEnabled())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// get number of open submenu
|
||||
s32 openmenu = -1;
|
||||
s32 i;
|
||||
for (i=0; i<(s32)Items.size(); ++i)
|
||||
if (Items[i].Enabled && Items[i].SubMenu && Items[i].SubMenu->isVisible())
|
||||
{
|
||||
openmenu = i;
|
||||
break;
|
||||
}
|
||||
|
||||
// delegate highlight operation to submenu
|
||||
if (openmenu != -1)
|
||||
{
|
||||
if (Items[openmenu].Enabled && Items[openmenu].SubMenu->highlight(p, canOpenSubMenu))
|
||||
{
|
||||
HighLighted = openmenu;
|
||||
ChangeTime = os::Timer::getTime();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// highlight myself
|
||||
for (i=0; i<(s32)Items.size(); ++i)
|
||||
{
|
||||
if (Items[i].Enabled && getHRect(Items[i], AbsoluteRect).isPointInside(p))
|
||||
{
|
||||
HighLighted = i;
|
||||
ChangeTime = os::Timer::getTime();
|
||||
|
||||
// make submenus visible/invisible
|
||||
for (s32 j=0; j<(s32)Items.size(); ++j)
|
||||
if (Items[j].SubMenu)
|
||||
{
|
||||
if ( j == i && canOpenSubMenu && Items[j].Enabled )
|
||||
Items[j].SubMenu->setVisible(true);
|
||||
else if ( j != i )
|
||||
Items[j].SubMenu->setVisible(false);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
HighLighted = openmenu;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//! returns the item highlight-area
|
||||
core::rect<s32> CGUIContextMenu::getHRect(const SItem& i, const core::rect<s32>& absolute) const
|
||||
{
|
||||
core::rect<s32> r = absolute;
|
||||
r.UpperLeftCorner.Y += i.PosY;
|
||||
r.LowerRightCorner.Y = r.UpperLeftCorner.Y + i.Dim.Height;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
//! Gets drawing rect of Item
|
||||
core::rect<s32> CGUIContextMenu::getRect(const SItem& i, const core::rect<s32>& absolute) const
|
||||
{
|
||||
core::rect<s32> r = absolute;
|
||||
r.UpperLeftCorner.Y += i.PosY;
|
||||
r.LowerRightCorner.Y = r.UpperLeftCorner.Y + i.Dim.Height;
|
||||
r.UpperLeftCorner.X += 20;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
//! draws the element and its children
|
||||
void CGUIContextMenu::draw()
|
||||
{
|
||||
if (!IsVisible)
|
||||
return;
|
||||
|
||||
IGUISkin* skin = Environment->getSkin();
|
||||
|
||||
if (!skin)
|
||||
return;
|
||||
|
||||
IGUIFont* font = skin->getFont(EGDF_MENU);
|
||||
if (font != LastFont)
|
||||
{
|
||||
if (LastFont)
|
||||
LastFont->drop();
|
||||
LastFont = font;
|
||||
if (LastFont)
|
||||
LastFont->grab();
|
||||
|
||||
recalculateSize();
|
||||
}
|
||||
|
||||
IGUISpriteBank* sprites = skin->getSpriteBank();
|
||||
|
||||
core::rect<s32> rect = AbsoluteRect;
|
||||
core::rect<s32>* clip = 0;
|
||||
|
||||
// draw frame
|
||||
skin->draw3DMenuPane(this, AbsoluteRect, clip);
|
||||
|
||||
// loop through all menu items
|
||||
|
||||
rect = AbsoluteRect;
|
||||
s32 y = AbsoluteRect.UpperLeftCorner.Y;
|
||||
|
||||
for (s32 i=0; i<(s32)Items.size(); ++i)
|
||||
{
|
||||
if (Items[i].IsSeparator)
|
||||
{
|
||||
// draw separator
|
||||
rect = AbsoluteRect;
|
||||
rect.UpperLeftCorner.Y += Items[i].PosY + 3;
|
||||
rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + 1;
|
||||
rect.UpperLeftCorner.X += 5;
|
||||
rect.LowerRightCorner.X -= 5;
|
||||
skin->draw2DRectangle(this, skin->getColor(EGDC_3D_SHADOW), rect, clip);
|
||||
|
||||
rect.LowerRightCorner.Y += 1;
|
||||
rect.UpperLeftCorner.Y += 1;
|
||||
skin->draw2DRectangle(this, skin->getColor(EGDC_3D_HIGH_LIGHT), rect, clip);
|
||||
|
||||
y += 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
rect = getRect(Items[i], AbsoluteRect);
|
||||
|
||||
// draw highlighted
|
||||
|
||||
if (i == HighLighted && Items[i].Enabled)
|
||||
{
|
||||
core::rect<s32> r = AbsoluteRect;
|
||||
r.LowerRightCorner.Y = rect.LowerRightCorner.Y;
|
||||
r.UpperLeftCorner.Y = rect.UpperLeftCorner.Y;
|
||||
r.LowerRightCorner.X -= 5;
|
||||
r.UpperLeftCorner.X += 5;
|
||||
skin->draw2DRectangle(this, skin->getColor(EGDC_HIGH_LIGHT), r, clip);
|
||||
}
|
||||
|
||||
// draw text
|
||||
|
||||
EGUI_DEFAULT_COLOR c = EGDC_BUTTON_TEXT;
|
||||
|
||||
if (i == HighLighted)
|
||||
c = EGDC_HIGH_LIGHT_TEXT;
|
||||
|
||||
if (!Items[i].Enabled)
|
||||
c = EGDC_GRAY_TEXT;
|
||||
|
||||
if (font)
|
||||
font->draw(Items[i].Text.c_str(), rect,
|
||||
skin->getColor(c), false, true, clip);
|
||||
|
||||
// draw submenu symbol
|
||||
if (Items[i].SubMenu && sprites)
|
||||
{
|
||||
core::rect<s32> r = rect;
|
||||
r.UpperLeftCorner.X = r.LowerRightCorner.X - 15;
|
||||
|
||||
sprites->draw2DSprite(skin->getIcon(EGDI_CURSOR_RIGHT),
|
||||
r.getCenter(), clip, skin->getColor(c),
|
||||
(i == HighLighted) ? ChangeTime : 0,
|
||||
(i == HighLighted) ? os::Timer::getTime() : 0,
|
||||
(i == HighLighted), true);
|
||||
}
|
||||
|
||||
// draw checked symbol
|
||||
if (Items[i].Checked && sprites)
|
||||
{
|
||||
core::rect<s32> r = rect;
|
||||
r.LowerRightCorner.X = r.UpperLeftCorner.X - 15;
|
||||
r.UpperLeftCorner.X = r.LowerRightCorner.X + 15;
|
||||
sprites->draw2DSprite(skin->getIcon(EGDI_CHECK_BOX_CHECKED),
|
||||
r.getCenter(), clip, skin->getColor(c),
|
||||
(i == HighLighted) ? ChangeTime : 0,
|
||||
(i == HighLighted) ? os::Timer::getTime() : 0,
|
||||
(i == HighLighted), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IGUIElement::draw();
|
||||
}
|
||||
|
||||
|
||||
void CGUIContextMenu::recalculateSize()
|
||||
{
|
||||
IGUIFont* font = Environment->getSkin()->getFont(EGDF_MENU);
|
||||
|
||||
if (!font)
|
||||
return;
|
||||
|
||||
core::rect<s32> rect;
|
||||
rect.UpperLeftCorner = RelativeRect.UpperLeftCorner;
|
||||
u32 width = 100;
|
||||
u32 height = 3;
|
||||
|
||||
u32 i;
|
||||
for (i=0; i<Items.size(); ++i)
|
||||
{
|
||||
if (Items[i].IsSeparator)
|
||||
{
|
||||
Items[i].Dim.Width = 100;
|
||||
Items[i].Dim.Height = 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
Items[i].Dim = font->getDimension(Items[i].Text.c_str());
|
||||
Items[i].Dim.Width += 40;
|
||||
|
||||
if (Items[i].Dim.Width > width)
|
||||
width = Items[i].Dim.Width;
|
||||
}
|
||||
|
||||
Items[i].PosY = height;
|
||||
height += Items[i].Dim.Height;
|
||||
}
|
||||
|
||||
height += 5;
|
||||
|
||||
if (height < 10)
|
||||
height = 10;
|
||||
|
||||
rect.LowerRightCorner.X = RelativeRect.UpperLeftCorner.X + width;
|
||||
rect.LowerRightCorner.Y = RelativeRect.UpperLeftCorner.Y + height;
|
||||
|
||||
setRelativePosition(rect);
|
||||
|
||||
// recalculate submenus
|
||||
for (i=0; i<Items.size(); ++i)
|
||||
{
|
||||
if (Items[i].SubMenu)
|
||||
{
|
||||
// move submenu
|
||||
const s32 w = Items[i].SubMenu->getAbsolutePosition().getWidth();
|
||||
const s32 h = Items[i].SubMenu->getAbsolutePosition().getHeight();
|
||||
|
||||
core::rect<s32> subRect(width-5, Items[i].PosY, width+w-5, Items[i].PosY+h);
|
||||
|
||||
gui::IGUIElement * root = Environment->getRootGUIElement();
|
||||
if ( root )
|
||||
{
|
||||
core::rect<s32> rectRoot( root->getAbsolutePosition() );
|
||||
|
||||
// if it would be drawn beyond the right border, then add it to the left side
|
||||
if ( getAbsolutePosition().UpperLeftCorner.X+subRect.LowerRightCorner.X > rectRoot.LowerRightCorner.X )
|
||||
{
|
||||
subRect.UpperLeftCorner.X = -w;
|
||||
subRect.LowerRightCorner.X = 0;
|
||||
}
|
||||
|
||||
// if it would be drawn below bottom border, move it up, but not further than to top.
|
||||
irr::s32 belowBottom = getAbsolutePosition().UpperLeftCorner.Y+subRect.LowerRightCorner.Y - rectRoot.LowerRightCorner.Y;
|
||||
if ( belowBottom > 0 )
|
||||
{
|
||||
irr::s32 belowTop = getAbsolutePosition().UpperLeftCorner.Y+subRect.UpperLeftCorner.Y;
|
||||
irr::s32 moveUp = belowBottom < belowTop ? belowBottom : belowTop;
|
||||
subRect.UpperLeftCorner.Y -= moveUp;
|
||||
subRect.LowerRightCorner.Y -= moveUp;
|
||||
}
|
||||
}
|
||||
|
||||
Items[i].SubMenu->setRelativePosition(subRect);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! Returns the selected item in the menu
|
||||
s32 CGUIContextMenu::getSelectedItem() const
|
||||
{
|
||||
return HighLighted;
|
||||
}
|
||||
|
||||
|
||||
//! \return Returns a pointer to the submenu of an item.
|
||||
IGUIContextMenu* CGUIContextMenu::getSubMenu(u32 idx) const
|
||||
{
|
||||
if (idx >= Items.size())
|
||||
return 0;
|
||||
|
||||
return Items[idx].SubMenu;
|
||||
}
|
||||
|
||||
|
||||
//! Returns command id of a menu item
|
||||
s32 CGUIContextMenu::getItemCommandId(u32 idx) const
|
||||
{
|
||||
if (idx >= Items.size())
|
||||
return -1;
|
||||
|
||||
return Items[idx].CommandId;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the command id of a menu item
|
||||
void CGUIContextMenu::setItemCommandId(u32 idx, s32 id)
|
||||
{
|
||||
if (idx >= Items.size())
|
||||
return;
|
||||
|
||||
Items[idx].CommandId = id;
|
||||
}
|
||||
|
||||
|
||||
// because sometimes the element has no parent at click time
|
||||
void CGUIContextMenu::setEventParent(IGUIElement *parent)
|
||||
{
|
||||
EventParent = parent;
|
||||
|
||||
for (u32 i=0; i<Items.size(); ++i)
|
||||
if (Items[i].SubMenu)
|
||||
Items[i].SubMenu->setEventParent(parent);
|
||||
}
|
||||
|
||||
|
||||
bool CGUIContextMenu::hasOpenSubMenu() const
|
||||
{
|
||||
for (u32 i=0; i<Items.size(); ++i)
|
||||
if (Items[i].SubMenu && Items[i].SubMenu->isVisible())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void CGUIContextMenu::closeAllSubMenus()
|
||||
{
|
||||
for (u32 i=0; i<Items.size(); ++i)
|
||||
if (Items[i].SubMenu)
|
||||
Items[i].SubMenu->setVisible(false);
|
||||
|
||||
//HighLighted = -1;
|
||||
}
|
||||
|
||||
|
||||
} // end namespace
|
||||
} // end namespace
|
||||
|
||||
#endif // _IRR_COMPILE_WITH_GUI_
|
||||
|
@ -1,168 +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 __C_GUI_CONTEXT_MENU_H_INCLUDED__
|
||||
#define __C_GUI_CONTEXT_MENU_H_INCLUDED__
|
||||
|
||||
#include "IrrCompileConfig.h"
|
||||
#ifdef _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#include "IGUIContextMenu.h"
|
||||
#include "irrString.h"
|
||||
#include "irrArray.h"
|
||||
#include "IGUIFont.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
|
||||
//! GUI Context menu interface.
|
||||
class CGUIContextMenu : public IGUIContextMenu
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
CGUIContextMenu(IGUIEnvironment* environment,
|
||||
IGUIElement* parent, s32 id, core::rect<s32> rectangle,
|
||||
bool getFocus = true, bool allowFocus = true);
|
||||
|
||||
//! destructor
|
||||
virtual ~CGUIContextMenu();
|
||||
|
||||
//! set behavior when menus are closed
|
||||
virtual void setCloseHandling(ECONTEXT_MENU_CLOSE onClose) _IRR_OVERRIDE_;
|
||||
|
||||
//! get current behavior when the menue will be closed
|
||||
virtual ECONTEXT_MENU_CLOSE getCloseHandling() const _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns amount of menu items
|
||||
virtual u32 getItemCount() const _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a menu item.
|
||||
virtual u32 addItem(const wchar_t* text, s32 commandid,
|
||||
bool enabled, bool hasSubMenu, bool checked, bool autoChecking) _IRR_OVERRIDE_;
|
||||
|
||||
//! Insert a menu item at specified position.
|
||||
virtual u32 insertItem(u32 idx, const wchar_t* text, s32 commandId, bool enabled,
|
||||
bool hasSubMenu, bool checked, bool autoChecking) _IRR_OVERRIDE_;
|
||||
|
||||
//! Find a item which has the given CommandId starting from given index
|
||||
virtual s32 findItemWithCommandId(s32 commandId, u32 idxStartSearch) const _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a separator item to the menu
|
||||
virtual void addSeparator() _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns text of the menu item.
|
||||
virtual const wchar_t* getItemText(u32 idx) const _IRR_OVERRIDE_;
|
||||
|
||||
//! Sets text of the menu item.
|
||||
virtual void setItemText(u32 idx, const wchar_t* text) _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns if a menu item is enabled
|
||||
virtual bool isItemEnabled(u32 idx) const _IRR_OVERRIDE_;
|
||||
|
||||
//! Sets if the menu item should be enabled.
|
||||
virtual void setItemEnabled(u32 idx, bool enabled) _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns if a menu item is checked
|
||||
virtual bool isItemChecked(u32 idx) const _IRR_OVERRIDE_;
|
||||
|
||||
//! Sets if the menu item should be checked.
|
||||
virtual void setItemChecked(u32 idx, bool enabled) _IRR_OVERRIDE_;
|
||||
|
||||
//! Removes a menu item
|
||||
virtual void removeItem(u32 idx) _IRR_OVERRIDE_;
|
||||
|
||||
//! Removes all menu items
|
||||
virtual void removeAllItems() _IRR_OVERRIDE_;
|
||||
|
||||
//! called if an event happened.
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_;
|
||||
|
||||
//! draws the element and its children
|
||||
virtual void draw() _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns the selected item in the menu
|
||||
virtual s32 getSelectedItem() const _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns a pointer to the submenu of an item.
|
||||
//! \return Pointer to the submenu of an item.
|
||||
virtual IGUIContextMenu* getSubMenu(u32 idx) const _IRR_OVERRIDE_;
|
||||
|
||||
//! Sets the visible state of this element.
|
||||
virtual void setVisible(bool visible) _IRR_OVERRIDE_;
|
||||
|
||||
//! should the element change the checked status on clicking
|
||||
virtual void setItemAutoChecking(u32 idx, bool autoChecking) _IRR_OVERRIDE_;
|
||||
|
||||
//! does the element change the checked status on clicking
|
||||
virtual bool getItemAutoChecking(u32 idx) const _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns command id of a menu item
|
||||
virtual s32 getItemCommandId(u32 idx) const _IRR_OVERRIDE_;
|
||||
|
||||
//! Sets the command id of a menu item
|
||||
virtual void setItemCommandId(u32 idx, s32 id) _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a sub menu from an element that already exists.
|
||||
virtual void setSubMenu(u32 index, CGUIContextMenu* menu);
|
||||
|
||||
//! When an eventparent is set it receives events instead of the usual parent element
|
||||
virtual void setEventParent(IGUIElement *parent) _IRR_OVERRIDE_;
|
||||
|
||||
protected:
|
||||
|
||||
void closeAllSubMenus();
|
||||
bool hasOpenSubMenu() const;
|
||||
|
||||
struct SItem
|
||||
{
|
||||
core::stringw Text;
|
||||
bool IsSeparator;
|
||||
bool Enabled;
|
||||
bool Checked;
|
||||
bool AutoChecking;
|
||||
core::dimension2d<u32> Dim;
|
||||
s32 PosY;
|
||||
CGUIContextMenu* SubMenu;
|
||||
s32 CommandId;
|
||||
};
|
||||
|
||||
virtual void recalculateSize();
|
||||
|
||||
//! returns true, if an element was highlighted
|
||||
virtual bool highlight(const core::position2d<s32>& p, bool canOpenSubMenu);
|
||||
|
||||
//! sends a click Returns:
|
||||
//! 0 if click went outside of the element,
|
||||
//! 1 if a valid button was clicked,
|
||||
//! 2 if a nonclickable element was clicked
|
||||
virtual u32 sendClick(const core::position2d<s32>& p);
|
||||
|
||||
//! returns the item highlight-area
|
||||
virtual core::rect<s32> getHRect(const SItem& i, const core::rect<s32>& absolute) const;
|
||||
|
||||
//! Gets drawing rect of Item
|
||||
virtual core::rect<s32> getRect(const SItem& i, const core::rect<s32>& absolute) const;
|
||||
|
||||
|
||||
core::array<SItem> Items;
|
||||
core::position2d<s32> Pos;
|
||||
IGUIElement* EventParent;
|
||||
IGUIFont *LastFont;
|
||||
ECONTEXT_MENU_CLOSE CloseHandling;
|
||||
s32 HighLighted;
|
||||
u32 ChangeTime;
|
||||
bool AllowFocus;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif // _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#endif // __C_GUI_CONTEXT_MENU_H_INCLUDED__
|
||||
|
@ -28,119 +28,119 @@ namespace gui
|
||||
virtual ~CGUIEditBox();
|
||||
|
||||
//! Sets another skin independent font.
|
||||
virtual void setOverrideFont(IGUIFont* font=0) _IRR_OVERRIDE_;
|
||||
void setOverrideFont(IGUIFont* font=0) override;
|
||||
|
||||
//! Gets the override font (if any)
|
||||
/** \return The override font (may be 0) */
|
||||
virtual IGUIFont* getOverrideFont() const _IRR_OVERRIDE_;
|
||||
IGUIFont* getOverrideFont() const override;
|
||||
|
||||
//! Get the font which is used right now for drawing
|
||||
/** Currently this is the override font when one is set and the
|
||||
font of the active skin otherwise */
|
||||
virtual IGUIFont* getActiveFont() const _IRR_OVERRIDE_;
|
||||
IGUIFont* getActiveFont() const override;
|
||||
|
||||
//! Sets another color for the text.
|
||||
virtual void setOverrideColor(video::SColor color) _IRR_OVERRIDE_;
|
||||
void setOverrideColor(video::SColor color) override;
|
||||
|
||||
//! Gets the override color
|
||||
virtual video::SColor getOverrideColor() const _IRR_OVERRIDE_;
|
||||
video::SColor getOverrideColor() const override;
|
||||
|
||||
//! Sets if the text should use the override color or the
|
||||
//! color in the gui skin.
|
||||
virtual void enableOverrideColor(bool enable) _IRR_OVERRIDE_;
|
||||
void enableOverrideColor(bool enable) override;
|
||||
|
||||
//! Checks if an override color is enabled
|
||||
/** \return true if the override color is enabled, false otherwise */
|
||||
virtual bool isOverrideColorEnabled(void) const _IRR_OVERRIDE_;
|
||||
bool isOverrideColorEnabled(void) const override;
|
||||
|
||||
//! Sets whether to draw the background
|
||||
virtual void setDrawBackground(bool draw) _IRR_OVERRIDE_;
|
||||
void setDrawBackground(bool draw) override;
|
||||
|
||||
//! Checks if background drawing is enabled
|
||||
virtual bool isDrawBackgroundEnabled() const _IRR_OVERRIDE_;
|
||||
bool isDrawBackgroundEnabled() const override;
|
||||
|
||||
//! Turns the border on or off
|
||||
virtual void setDrawBorder(bool border) _IRR_OVERRIDE_;
|
||||
void setDrawBorder(bool border) override;
|
||||
|
||||
//! Checks if border drawing is enabled
|
||||
virtual bool isDrawBorderEnabled() const _IRR_OVERRIDE_;
|
||||
bool isDrawBorderEnabled() const override;
|
||||
|
||||
//! Enables or disables word wrap for using the edit box as multiline text editor.
|
||||
virtual void setWordWrap(bool enable) _IRR_OVERRIDE_;
|
||||
void setWordWrap(bool enable) override;
|
||||
|
||||
//! Checks if word wrap is enabled
|
||||
//! \return true if word wrap is enabled, false otherwise
|
||||
virtual bool isWordWrapEnabled() const _IRR_OVERRIDE_;
|
||||
bool isWordWrapEnabled() const override;
|
||||
|
||||
//! Enables or disables newlines.
|
||||
/** \param enable: If set to true, the EGET_EDITBOX_ENTER event will not be fired,
|
||||
instead a newline character will be inserted. */
|
||||
virtual void setMultiLine(bool enable) _IRR_OVERRIDE_;
|
||||
void setMultiLine(bool enable) override;
|
||||
|
||||
//! Checks if multi line editing is enabled
|
||||
//! \return true if mult-line is enabled, false otherwise
|
||||
virtual bool isMultiLineEnabled() const _IRR_OVERRIDE_;
|
||||
bool isMultiLineEnabled() const override;
|
||||
|
||||
//! Enables or disables automatic scrolling with cursor position
|
||||
//! \param enable: If set to true, the text will move around with the cursor position
|
||||
virtual void setAutoScroll(bool enable) _IRR_OVERRIDE_;
|
||||
void setAutoScroll(bool enable) override;
|
||||
|
||||
//! Checks to see if automatic scrolling is enabled
|
||||
//! \return true if automatic scrolling is enabled, false if not
|
||||
virtual bool isAutoScrollEnabled() const _IRR_OVERRIDE_;
|
||||
bool isAutoScrollEnabled() const override;
|
||||
|
||||
//! Gets the size area of the text in the edit box
|
||||
//! \return Returns the size in pixels of the text
|
||||
virtual core::dimension2du getTextDimension() _IRR_OVERRIDE_;
|
||||
core::dimension2du getTextDimension() override;
|
||||
|
||||
//! Sets text justification
|
||||
virtual void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical) _IRR_OVERRIDE_;
|
||||
void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical) override;
|
||||
|
||||
//! called if an event happened.
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_;
|
||||
bool OnEvent(const SEvent& event) override;
|
||||
|
||||
//! draws the element and its children
|
||||
virtual void draw() _IRR_OVERRIDE_;
|
||||
void draw() override;
|
||||
|
||||
//! Sets the new caption of this element.
|
||||
virtual void setText(const wchar_t* text) _IRR_OVERRIDE_;
|
||||
void setText(const wchar_t* text) override;
|
||||
|
||||
//! Sets the maximum amount of characters which may be entered in the box.
|
||||
//! \param max: Maximum amount of characters. If 0, the character amount is
|
||||
//! infinity.
|
||||
virtual void setMax(u32 max) _IRR_OVERRIDE_;
|
||||
void setMax(u32 max) override;
|
||||
|
||||
//! Returns maximum amount of characters, previously set by setMax();
|
||||
virtual u32 getMax() const _IRR_OVERRIDE_;
|
||||
u32 getMax() const override;
|
||||
|
||||
//! Set the character used for the cursor.
|
||||
/** By default it's "_" */
|
||||
virtual void setCursorChar(const wchar_t cursorChar) _IRR_OVERRIDE_;
|
||||
void setCursorChar(const wchar_t cursorChar) override;
|
||||
|
||||
//! Get the character used for the cursor.
|
||||
virtual wchar_t getCursorChar() const _IRR_OVERRIDE_;
|
||||
wchar_t getCursorChar() const override;
|
||||
|
||||
//! Set the blinktime for the cursor. 2x blinktime is one full cycle.
|
||||
//** \param timeMs Blinktime in milliseconds. When set to 0 the cursor is constantly on without blinking */
|
||||
virtual void setCursorBlinkTime(irr::u32 timeMs) _IRR_OVERRIDE_;
|
||||
void setCursorBlinkTime(irr::u32 timeMs) override;
|
||||
|
||||
//! Get the cursor blinktime
|
||||
virtual irr::u32 getCursorBlinkTime() const _IRR_OVERRIDE_;
|
||||
irr::u32 getCursorBlinkTime() const override;
|
||||
|
||||
//! Sets whether the edit box is a password box. Setting this to true will
|
||||
/** disable MultiLine, WordWrap and the ability to copy with ctrl+c or ctrl+x
|
||||
\param passwordBox: true to enable password, false to disable
|
||||
\param passwordChar: the character that is displayed instead of letters */
|
||||
virtual void setPasswordBox(bool passwordBox, wchar_t passwordChar = L'*') _IRR_OVERRIDE_;
|
||||
void setPasswordBox(bool passwordBox, wchar_t passwordChar = L'*') override;
|
||||
|
||||
//! Returns true if the edit box is currently a password box.
|
||||
virtual bool isPasswordBox() const _IRR_OVERRIDE_;
|
||||
bool isPasswordBox() const override;
|
||||
|
||||
//! Updates the absolute position, splits text if required
|
||||
virtual void updateAbsolutePosition() _IRR_OVERRIDE_;
|
||||
void updateAbsolutePosition() override;
|
||||
|
||||
//! Returns whether the element takes input from the IME
|
||||
virtual bool acceptsIME() _IRR_OVERRIDE_;
|
||||
bool acceptsIME() override;
|
||||
|
||||
protected:
|
||||
//! Breaks the single text line.
|
||||
|
@ -11,33 +11,19 @@
|
||||
|
||||
#include "CGUISkin.h"
|
||||
#include "CGUIButton.h"
|
||||
#include "CGUIWindow.h"
|
||||
#include "CGUIScrollBar.h"
|
||||
#include "CGUIFont.h"
|
||||
#include "CGUISpriteBank.h"
|
||||
#include "CGUIImage.h"
|
||||
#include "CGUIMeshViewer.h"
|
||||
#include "CGUICheckBox.h"
|
||||
#include "CGUIListBox.h"
|
||||
#include "CGUITreeView.h"
|
||||
#include "CGUIImageList.h"
|
||||
#include "CGUIFileOpenDialog.h"
|
||||
#include "CGUIColorSelectDialog.h"
|
||||
#include "CGUIStaticText.h"
|
||||
#include "CGUIEditBox.h"
|
||||
#include "CGUISpinBox.h"
|
||||
#include "CGUIInOutFader.h"
|
||||
#include "CGUIMessageBox.h"
|
||||
#include "CGUIModalScreen.h"
|
||||
#include "CGUITabControl.h"
|
||||
#include "CGUIContextMenu.h"
|
||||
#include "CGUIComboBox.h"
|
||||
#include "CGUIMenu.h"
|
||||
#include "CGUIToolBar.h"
|
||||
#include "CGUITable.h"
|
||||
#include "CGUIProfiler.h"
|
||||
|
||||
#include "CDefaultGUIElementFactory.h"
|
||||
#include "IWriteFile.h"
|
||||
|
||||
#include "BuiltInFont.h"
|
||||
@ -69,11 +55,6 @@ CGUIEnvironment::CGUIEnvironment(io::IFileSystem* fs, video::IVideoDriver* drive
|
||||
IGUIEnvironment::setDebugName("CGUIEnvironment");
|
||||
#endif
|
||||
|
||||
// gui factory
|
||||
IGUIElementFactory* factory = new CDefaultGUIElementFactory(this);
|
||||
registerGUIElementFactory(factory);
|
||||
factory->drop();
|
||||
|
||||
loadBuiltInFont();
|
||||
|
||||
IGUISkin* skin = createSkin( gui::EGST_WINDOWS_METALLIC );
|
||||
@ -140,10 +121,6 @@ CGUIEnvironment::~CGUIEnvironment()
|
||||
for (i=0; i<Fonts.size(); ++i)
|
||||
Fonts[i].Font->drop();
|
||||
|
||||
// remove all factories
|
||||
for (i=0; i<GUIElementFactoryList.size(); ++i)
|
||||
GUIElementFactoryList[i]->drop();
|
||||
|
||||
if (Operator)
|
||||
{
|
||||
Operator->drop();
|
||||
@ -707,106 +684,6 @@ IGUISkin* CGUIEnvironment::createSkin(EGUI_SKIN_TYPE type)
|
||||
}
|
||||
|
||||
|
||||
//! Returns the default element factory which can create all built in elements
|
||||
IGUIElementFactory* CGUIEnvironment::getDefaultGUIElementFactory() const
|
||||
{
|
||||
return getGUIElementFactory(0);
|
||||
}
|
||||
|
||||
|
||||
//! Adds an element factory to the gui environment.
|
||||
/** Use this to extend the gui environment with new element types which it should be
|
||||
able to create automatically, for example when loading data from xml files. */
|
||||
void CGUIEnvironment::registerGUIElementFactory(IGUIElementFactory* factoryToAdd)
|
||||
{
|
||||
if (factoryToAdd)
|
||||
{
|
||||
factoryToAdd->grab();
|
||||
GUIElementFactoryList.push_back(factoryToAdd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! Returns amount of registered scene node factories.
|
||||
u32 CGUIEnvironment::getRegisteredGUIElementFactoryCount() const
|
||||
{
|
||||
return GUIElementFactoryList.size();
|
||||
}
|
||||
|
||||
|
||||
//! Returns a scene node factory by index
|
||||
IGUIElementFactory* CGUIEnvironment::getGUIElementFactory(u32 index) const
|
||||
{
|
||||
if (index < GUIElementFactoryList.size())
|
||||
return GUIElementFactoryList[index];
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//! adds a GUI Element using its name
|
||||
IGUIElement* CGUIEnvironment::addGUIElement(const c8* elementName, IGUIElement* parent)
|
||||
{
|
||||
IGUIElement* node=0;
|
||||
|
||||
if (!parent)
|
||||
parent = this;
|
||||
|
||||
for (s32 i=GUIElementFactoryList.size()-1; i>=0 && !node; --i)
|
||||
node = GUIElementFactoryList[i]->addGUIElement(elementName, parent);
|
||||
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
//! Saves the current gui into a file.
|
||||
//! \param filename: Name of the file .
|
||||
bool CGUIEnvironment::saveGUI(const io::path& filename, IGUIElement* start)
|
||||
{
|
||||
io::IWriteFile* file = FileSystem->createAndWriteFile(filename);
|
||||
if (!file)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ret = saveGUI(file, start);
|
||||
file->drop();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//! Saves the current gui into a file.
|
||||
bool CGUIEnvironment::saveGUI(io::IWriteFile* file, IGUIElement* start)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//! Loads the gui. Note that the current gui is not cleared before.
|
||||
//! \param filename: Name of the file.
|
||||
bool CGUIEnvironment::loadGUI(const io::path& filename, IGUIElement* parent)
|
||||
{
|
||||
io::IReadFile* read = FileSystem->createAndOpenFile(filename);
|
||||
if (!read)
|
||||
{
|
||||
os::Printer::log("Unable to open gui file", filename, ELL_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ret = loadGUI(read, parent);
|
||||
read->drop();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//! Loads the gui. Note that the current gui is not cleared before.
|
||||
bool CGUIEnvironment::loadGUI(io::IReadFile* file, IGUIElement* parent)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//! adds a button. The returned pointer must not be dropped.
|
||||
IGUIButton* CGUIEnvironment::addButton(const core::rect<s32>& rectangle, IGUIElement* parent, s32 id, const wchar_t* text, const wchar_t *tooltiptext)
|
||||
{
|
||||
@ -822,83 +699,6 @@ IGUIButton* CGUIEnvironment::addButton(const core::rect<s32>& rectangle, IGUIEle
|
||||
}
|
||||
|
||||
|
||||
//! adds a window. The returned pointer must not be dropped.
|
||||
IGUIWindow* CGUIEnvironment::addWindow(const core::rect<s32>& rectangle, bool modal,
|
||||
const wchar_t* text, IGUIElement* parent, s32 id)
|
||||
{
|
||||
parent = parent ? parent : this;
|
||||
|
||||
IGUIWindow* win = new CGUIWindow(this, parent, id, rectangle);
|
||||
if (text)
|
||||
win->setText(text);
|
||||
win->drop();
|
||||
|
||||
if (modal)
|
||||
{
|
||||
// Careful, don't just set the modal as parent above. That will mess up the focus (and is hard to change because we have to be very
|
||||
// careful not to get virtual function call, like OnEvent, in the window.
|
||||
CGUIModalScreen * modalScreen = new CGUIModalScreen(this, parent, -1);
|
||||
modalScreen->drop();
|
||||
modalScreen->addChild(win);
|
||||
}
|
||||
|
||||
return win;
|
||||
}
|
||||
|
||||
|
||||
//! adds a modal screen. The returned pointer must not be dropped.
|
||||
IGUIElement* CGUIEnvironment::addModalScreen(IGUIElement* parent, int blinkMode)
|
||||
{
|
||||
parent = parent ? parent : this;
|
||||
|
||||
CGUIModalScreen *win = new CGUIModalScreen(this, parent, -1);
|
||||
win->setBlinkMode(blinkMode);
|
||||
win->drop();
|
||||
|
||||
return win;
|
||||
}
|
||||
|
||||
|
||||
//! Adds a message box.
|
||||
IGUIWindow* CGUIEnvironment::addMessageBox(const wchar_t* caption, const wchar_t* text,
|
||||
bool modal, s32 flag, IGUIElement* parent, s32 id, video::ITexture* image)
|
||||
{
|
||||
if (!CurrentSkin)
|
||||
return 0;
|
||||
|
||||
parent = parent ? parent : this;
|
||||
|
||||
core::rect<s32> rect;
|
||||
core::dimension2d<u32> screenDim, msgBoxDim;
|
||||
|
||||
screenDim.Width = parent->getAbsolutePosition().getWidth();
|
||||
screenDim.Height = parent->getAbsolutePosition().getHeight();
|
||||
msgBoxDim.Width = 2;
|
||||
msgBoxDim.Height = 2;
|
||||
|
||||
rect.UpperLeftCorner.X = (screenDim.Width - msgBoxDim.Width) / 2;
|
||||
rect.UpperLeftCorner.Y = (screenDim.Height - msgBoxDim.Height) / 2;
|
||||
rect.LowerRightCorner.X = rect.UpperLeftCorner.X + msgBoxDim.Width;
|
||||
rect.LowerRightCorner.Y = rect.UpperLeftCorner.Y + msgBoxDim.Height;
|
||||
|
||||
IGUIWindow* win = new CGUIMessageBox(this, caption, text, flag,
|
||||
parent, id, rect, image);
|
||||
win->drop();
|
||||
|
||||
if (modal)
|
||||
{
|
||||
// Careful, don't just set the modal as parent above. That will mess up the focus (and is hard to change because we have to be very
|
||||
// careful not to get virtual function call, like OnEvent, in the CGUIMessageBox.
|
||||
CGUIModalScreen * modalScreen = new CGUIModalScreen(this, parent, -1);
|
||||
modalScreen->drop();
|
||||
modalScreen->addChild( win );
|
||||
}
|
||||
|
||||
|
||||
return win;
|
||||
}
|
||||
|
||||
|
||||
//! adds a scrollbar. The returned pointer must not be dropped.
|
||||
IGUIScrollBar* CGUIEnvironment::addScrollBar(bool horizontal, const core::rect<s32>& rectangle, IGUIElement* parent, s32 id)
|
||||
{
|
||||
@ -907,21 +707,6 @@ IGUIScrollBar* CGUIEnvironment::addScrollBar(bool horizontal, const core::rect<s
|
||||
return bar;
|
||||
}
|
||||
|
||||
//! Adds a table to the environment
|
||||
IGUITable* CGUIEnvironment::addTable(const core::rect<s32>& rectangle, IGUIElement* parent, s32 id, bool drawBackground)
|
||||
{
|
||||
CGUITable* b = new CGUITable(this, parent ? parent : this, id, rectangle, true, drawBackground, false);
|
||||
b->drop();
|
||||
return b;
|
||||
}
|
||||
|
||||
//! Adds an element to display the information from the Irrlicht profiler
|
||||
IGUIProfiler* CGUIEnvironment::addProfilerDisplay(const core::rect<s32>& rectangle, IGUIElement* parent, s32 id)
|
||||
{
|
||||
CGUIProfiler* p = new CGUIProfiler(this, parent ? parent : this, id, rectangle, NULL);
|
||||
p->drop();
|
||||
return p;
|
||||
}
|
||||
|
||||
//! Adds an image element.
|
||||
IGUIImage* CGUIEnvironment::addImage(video::ITexture* image, core::position2d<s32> pos,
|
||||
@ -965,20 +750,6 @@ IGUIImage* CGUIEnvironment::addImage(const core::rect<s32>& rectangle, IGUIEleme
|
||||
}
|
||||
|
||||
|
||||
//! adds an mesh viewer. The returned pointer must not be dropped.
|
||||
IGUIMeshViewer* CGUIEnvironment::addMeshViewer(const core::rect<s32>& rectangle, IGUIElement* parent, s32 id, const wchar_t* text)
|
||||
{
|
||||
IGUIMeshViewer* v = new CGUIMeshViewer(this, parent ? parent : this,
|
||||
id, rectangle);
|
||||
|
||||
if (text)
|
||||
v->setText(text);
|
||||
|
||||
v->drop();
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
//! adds a checkbox
|
||||
IGUICheckBox* CGUIEnvironment::addCheckBox(bool checked, const core::rect<s32>& rectangle, IGUIElement* parent, s32 id, const wchar_t* text)
|
||||
{
|
||||
@ -1013,19 +784,6 @@ IGUIListBox* CGUIEnvironment::addListBox(const core::rect<s32>& rectangle,
|
||||
return b;
|
||||
}
|
||||
|
||||
//! adds a tree view
|
||||
IGUITreeView* CGUIEnvironment::addTreeView(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent, s32 id,
|
||||
bool drawBackground,
|
||||
bool scrollBarVertical, bool scrollBarHorizontal)
|
||||
{
|
||||
IGUITreeView* b = new CGUITreeView(this, parent ? parent : this, id, rectangle,
|
||||
true, drawBackground, scrollBarVertical, scrollBarHorizontal);
|
||||
|
||||
b->setIconFont ( getBuiltInFont () );
|
||||
b->drop();
|
||||
return b;
|
||||
}
|
||||
|
||||
//! adds a file open dialog. The returned pointer must not be dropped.
|
||||
IGUIFileOpenDialog* CGUIEnvironment::addFileOpenDialog(const wchar_t* title,
|
||||
@ -1034,42 +792,13 @@ IGUIFileOpenDialog* CGUIEnvironment::addFileOpenDialog(const wchar_t* title,
|
||||
{
|
||||
parent = parent ? parent : this;
|
||||
|
||||
if (modal)
|
||||
return nullptr;
|
||||
|
||||
IGUIFileOpenDialog* d = new CGUIFileOpenDialog(title, this, parent, id,
|
||||
restoreCWD, startDir);
|
||||
d->drop();
|
||||
|
||||
if (modal)
|
||||
{
|
||||
// Careful, don't just set the modal as parent above. That will mess up the focus (and is hard to change because we have to be very
|
||||
// careful not to get virtual function call, like OnEvent, in the window.
|
||||
CGUIModalScreen * modalScreen = new CGUIModalScreen(this, parent, -1);
|
||||
modalScreen->drop();
|
||||
modalScreen->addChild(d);
|
||||
}
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
//! adds a color select dialog. The returned pointer must not be dropped.
|
||||
IGUIColorSelectDialog* CGUIEnvironment::addColorSelectDialog(const wchar_t* title,
|
||||
bool modal, IGUIElement* parent, s32 id)
|
||||
{
|
||||
parent = parent ? parent : this;
|
||||
|
||||
IGUIColorSelectDialog* d = new CGUIColorSelectDialog( title,
|
||||
this, parent, id);
|
||||
d->drop();
|
||||
|
||||
if (modal)
|
||||
{
|
||||
// Careful, don't just set the modal as parent above. That will mess up the focus (and is hard to change because we have to be very
|
||||
// careful not to get virtual function call, like OnEvent, in the window.
|
||||
CGUIModalScreen * modalScreen = new CGUIModalScreen(this, parent, -1);
|
||||
modalScreen->drop();
|
||||
modalScreen->addChild(d);
|
||||
}
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
@ -1103,19 +832,6 @@ IGUIEditBox* CGUIEnvironment::addEditBox(const wchar_t* text,
|
||||
}
|
||||
|
||||
|
||||
//! Adds a spin box to the environment
|
||||
IGUISpinBox* CGUIEnvironment::addSpinBox(const wchar_t* text,
|
||||
const core::rect<s32> &rectangle,
|
||||
bool border,IGUIElement* parent, s32 id)
|
||||
{
|
||||
IGUISpinBox* d = new CGUISpinBox(text, border,this,
|
||||
parent ? parent : this, id, rectangle);
|
||||
|
||||
d->drop();
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
//! Adds a tab control to the environment.
|
||||
IGUITabControl* CGUIEnvironment::addTabControl(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent, bool fillbackground, bool border, s32 id)
|
||||
@ -1138,65 +854,6 @@ IGUITab* CGUIEnvironment::addTab(const core::rect<s32>& rectangle,
|
||||
}
|
||||
|
||||
|
||||
//! Adds a context menu to the environment.
|
||||
IGUIContextMenu* CGUIEnvironment::addContextMenu(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent, s32 id)
|
||||
{
|
||||
IGUIContextMenu* c = new CGUIContextMenu(this,
|
||||
parent ? parent : this, id, rectangle, true);
|
||||
c->drop();
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
//! Adds a menu to the environment.
|
||||
IGUIContextMenu* CGUIEnvironment::addMenu(IGUIElement* parent, s32 id)
|
||||
{
|
||||
if (!parent)
|
||||
parent = this;
|
||||
|
||||
IGUIContextMenu* c = new CGUIMenu(this,
|
||||
parent, id, core::rect<s32>(0,0,
|
||||
parent->getAbsolutePosition().getWidth(),
|
||||
parent->getAbsolutePosition().getHeight()));
|
||||
|
||||
c->drop();
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
//! Adds a toolbar to the environment. It is like a menu is always placed on top
|
||||
//! in its parent, and contains buttons.
|
||||
IGUIToolBar* CGUIEnvironment::addToolBar(IGUIElement* parent, s32 id)
|
||||
{
|
||||
if (!parent)
|
||||
parent = this;
|
||||
|
||||
IGUIToolBar* b = new CGUIToolBar(this, parent, id, core::rect<s32>(0,0,10,10));
|
||||
b->drop();
|
||||
return b;
|
||||
}
|
||||
|
||||
|
||||
//! Adds an element for fading in or out.
|
||||
IGUIInOutFader* CGUIEnvironment::addInOutFader(const core::rect<s32>* rectangle, IGUIElement* parent, s32 id)
|
||||
{
|
||||
core::rect<s32> rect;
|
||||
|
||||
if (rectangle)
|
||||
rect = *rectangle;
|
||||
else if (Driver)
|
||||
rect = core::rect<s32>(core::dimension2di(Driver->getScreenSize()));
|
||||
|
||||
if (!parent)
|
||||
parent = this;
|
||||
|
||||
IGUIInOutFader* fader = new CGUIInOutFader(this, parent, id, rect);
|
||||
fader->drop();
|
||||
return fader;
|
||||
}
|
||||
|
||||
|
||||
//! Adds a combo box to the environment.
|
||||
IGUIComboBox* CGUIEnvironment::addComboBox(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent, s32 id)
|
||||
|
@ -31,234 +31,143 @@ public:
|
||||
virtual ~CGUIEnvironment();
|
||||
|
||||
//! draws all gui elements
|
||||
virtual void drawAll(bool useScreenSize) _IRR_OVERRIDE_;
|
||||
void drawAll(bool useScreenSize) override;
|
||||
|
||||
//! returns the current video driver
|
||||
virtual video::IVideoDriver* getVideoDriver() const _IRR_OVERRIDE_;
|
||||
video::IVideoDriver* getVideoDriver() const override;
|
||||
|
||||
//! returns pointer to the filesystem
|
||||
virtual io::IFileSystem* getFileSystem() const _IRR_OVERRIDE_;
|
||||
io::IFileSystem* getFileSystem() const override;
|
||||
|
||||
//! returns a pointer to the OS operator
|
||||
virtual IOSOperator* getOSOperator() const _IRR_OVERRIDE_;
|
||||
IOSOperator* getOSOperator() const override;
|
||||
|
||||
//! posts an input event to the environment
|
||||
virtual bool postEventFromUser(const SEvent& event) _IRR_OVERRIDE_;
|
||||
bool postEventFromUser(const SEvent& event) override;
|
||||
|
||||
//! This sets a new event receiver for gui events. Usually you do not have to
|
||||
//! use this method, it is used by the internal engine.
|
||||
virtual void setUserEventReceiver(IEventReceiver* evr) _IRR_OVERRIDE_;
|
||||
void setUserEventReceiver(IEventReceiver* evr) override;
|
||||
|
||||
//! removes all elements from the environment
|
||||
virtual void clear() _IRR_OVERRIDE_;
|
||||
void clear() override;
|
||||
|
||||
//! called if an event happened.
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_;
|
||||
bool OnEvent(const SEvent& event) override;
|
||||
|
||||
//! returns the current gui skin
|
||||
virtual IGUISkin* getSkin() const _IRR_OVERRIDE_;
|
||||
IGUISkin* getSkin() const override;
|
||||
|
||||
//! Sets a new GUI Skin
|
||||
virtual void setSkin(IGUISkin* skin) _IRR_OVERRIDE_;
|
||||
void setSkin(IGUISkin* skin) override;
|
||||
|
||||
//! Creates a new GUI Skin based on a template.
|
||||
/** \return Returns a pointer to the created skin.
|
||||
If you no longer need the skin, you should call IGUISkin::drop().
|
||||
See IReferenceCounted::drop() for more information. */
|
||||
virtual IGUISkin* createSkin(EGUI_SKIN_TYPE type) _IRR_OVERRIDE_;
|
||||
IGUISkin* createSkin(EGUI_SKIN_TYPE type) override;
|
||||
|
||||
//! Creates the image list from the given texture.
|
||||
virtual IGUIImageList* createImageList(video::ITexture* texture,
|
||||
core::dimension2d<s32> imageSize, bool useAlphaChannel) _IRR_OVERRIDE_;
|
||||
core::dimension2d<s32> imageSize, bool useAlphaChannel) override;
|
||||
|
||||
//! returns the font
|
||||
virtual IGUIFont* getFont(const io::path& filename) _IRR_OVERRIDE_;
|
||||
IGUIFont* getFont(const io::path& filename) override;
|
||||
|
||||
//! add an externally loaded font
|
||||
virtual IGUIFont* addFont(const io::path& name, IGUIFont* font) _IRR_OVERRIDE_;
|
||||
IGUIFont* addFont(const io::path& name, IGUIFont* font) override;
|
||||
|
||||
//! remove loaded font
|
||||
virtual void removeFont(IGUIFont* font) _IRR_OVERRIDE_;
|
||||
void removeFont(IGUIFont* font) override;
|
||||
|
||||
//! returns default font
|
||||
virtual IGUIFont* getBuiltInFont() const _IRR_OVERRIDE_;
|
||||
IGUIFont* getBuiltInFont() const override;
|
||||
|
||||
//! returns the sprite bank
|
||||
virtual IGUISpriteBank* getSpriteBank(const io::path& filename) _IRR_OVERRIDE_;
|
||||
IGUISpriteBank* getSpriteBank(const io::path& filename) override;
|
||||
|
||||
//! returns the sprite bank
|
||||
virtual IGUISpriteBank* addEmptySpriteBank(const io::path& name) _IRR_OVERRIDE_;
|
||||
IGUISpriteBank* addEmptySpriteBank(const io::path& name) override;
|
||||
|
||||
//! adds an button. The returned pointer must not be dropped.
|
||||
virtual IGUIButton* addButton(const core::rect<s32>& rectangle, IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0,const wchar_t* tooltiptext = 0) _IRR_OVERRIDE_;
|
||||
|
||||
//! adds a window. The returned pointer must not be dropped.
|
||||
virtual IGUIWindow* addWindow(const core::rect<s32>& rectangle, bool modal = false,
|
||||
const wchar_t* text=0, IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
|
||||
//! adds a modal screen. The returned pointer must not be dropped.
|
||||
virtual IGUIElement* addModalScreen(IGUIElement* parent, int blinkMode) _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a message box.
|
||||
virtual IGUIWindow* addMessageBox(const wchar_t* caption, const wchar_t* text=0,
|
||||
bool modal = true, s32 flag = EMBF_OK, IGUIElement* parent=0, s32 id=-1, video::ITexture* image=0) _IRR_OVERRIDE_;
|
||||
IGUIButton* addButton(const core::rect<s32>& rectangle, IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0,const wchar_t* tooltiptext = 0) override;
|
||||
|
||||
//! adds a scrollbar. The returned pointer must not be dropped.
|
||||
virtual IGUIScrollBar* addScrollBar(bool horizontal, const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
IGUIElement* parent=0, s32 id=-1) override;
|
||||
|
||||
//! Adds an image element.
|
||||
virtual IGUIImage* addImage(video::ITexture* image, core::position2d<s32> pos,
|
||||
bool useAlphaChannel=true, IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) _IRR_OVERRIDE_;
|
||||
bool useAlphaChannel=true, IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) override;
|
||||
|
||||
//! adds an image. The returned pointer must not be dropped.
|
||||
virtual IGUIImage* addImage(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0, bool useAlphaChannel=true) _IRR_OVERRIDE_;
|
||||
IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0, bool useAlphaChannel=true) override;
|
||||
|
||||
//! adds a checkbox
|
||||
virtual IGUICheckBox* addCheckBox(bool checked, const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) _IRR_OVERRIDE_;
|
||||
IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) override;
|
||||
|
||||
//! adds a list box
|
||||
virtual IGUIListBox* addListBox(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) _IRR_OVERRIDE_;
|
||||
|
||||
//! adds a tree view
|
||||
virtual IGUITreeView* addTreeView(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1, bool drawBackground=false,
|
||||
bool scrollBarVertical = true, bool scrollBarHorizontal = false) _IRR_OVERRIDE_;
|
||||
|
||||
//! adds an mesh viewer. The returned pointer must not be dropped.
|
||||
virtual IGUIMeshViewer* addMeshViewer(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) _IRR_OVERRIDE_;
|
||||
IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) override;
|
||||
|
||||
//! Adds a file open dialog.
|
||||
virtual IGUIFileOpenDialog* addFileOpenDialog(const wchar_t* title = 0,
|
||||
bool modal=true, IGUIElement* parent=0, s32 id=-1,
|
||||
bool restoreCWD=false, io::path::char_type* startDir=0) _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a color select dialog.
|
||||
virtual IGUIColorSelectDialog* addColorSelectDialog(const wchar_t* title = 0,
|
||||
bool modal=true, IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
bool restoreCWD=false, io::path::char_type* startDir=0) override;
|
||||
|
||||
//! adds a static text. The returned pointer must not be dropped.
|
||||
virtual IGUIStaticText* addStaticText(const wchar_t* text, const core::rect<s32>& rectangle,
|
||||
bool border=false, bool wordWrap=true, IGUIElement* parent=0, s32 id=-1, bool drawBackground = false) _IRR_OVERRIDE_;
|
||||
bool border=false, bool wordWrap=true, IGUIElement* parent=0, s32 id=-1, bool drawBackground = false) override;
|
||||
|
||||
//! Adds an edit box. The returned pointer must not be dropped.
|
||||
virtual IGUIEditBox* addEditBox(const wchar_t* text, const core::rect<s32>& rectangle,
|
||||
bool border=false, IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a spin box to the environment
|
||||
virtual IGUISpinBox* addSpinBox(const wchar_t* text, const core::rect<s32>& rectangle,
|
||||
bool border=false,IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
bool border=false, IGUIElement* parent=0, s32 id=-1) override;
|
||||
|
||||
//! Adds a tab control to the environment.
|
||||
virtual IGUITabControl* addTabControl(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, bool fillbackground=false, bool border=true, s32 id=-1) _IRR_OVERRIDE_;
|
||||
IGUIElement* parent=0, bool fillbackground=false, bool border=true, s32 id=-1) override;
|
||||
|
||||
//! Adds tab to the environment.
|
||||
virtual IGUITab* addTab(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a context menu to the environment.
|
||||
virtual IGUIContextMenu* addContextMenu(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a menu to the environment.
|
||||
virtual IGUIContextMenu* addMenu(IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a toolbar to the environment. It is like a menu is always placed on top
|
||||
//! in its parent, and contains buttons.
|
||||
virtual IGUIToolBar* addToolBar(IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
IGUIElement* parent=0, s32 id=-1) override;
|
||||
|
||||
//! Adds a combo box to the environment.
|
||||
virtual IGUIComboBox* addComboBox(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a table element.
|
||||
virtual IGUITable* addTable(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds an element to display the information from the Irrlicht profiler
|
||||
virtual IGUIProfiler* addProfilerDisplay(const core::rect<s32>& rectangle,
|
||||
IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
IGUIElement* parent=0, s32 id=-1) override;
|
||||
|
||||
//! sets the focus to an element
|
||||
virtual bool setFocus(IGUIElement* element) _IRR_OVERRIDE_;
|
||||
bool setFocus(IGUIElement* element) override;
|
||||
|
||||
//! removes the focus from an element
|
||||
virtual bool removeFocus(IGUIElement* element) _IRR_OVERRIDE_;
|
||||
bool removeFocus(IGUIElement* element) override;
|
||||
|
||||
//! Returns if the element has focus
|
||||
virtual bool hasFocus(const IGUIElement* element, bool checkSubElements=false) const _IRR_OVERRIDE_;
|
||||
bool hasFocus(const IGUIElement* element, bool checkSubElements=false) const override;
|
||||
|
||||
//! Returns the element with the focus
|
||||
virtual IGUIElement* getFocus() const _IRR_OVERRIDE_;
|
||||
IGUIElement* getFocus() const override;
|
||||
|
||||
//! Returns the element last known to be under the mouse
|
||||
virtual IGUIElement* getHovered() const _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds an element for fading in or out.
|
||||
virtual IGUIInOutFader* addInOutFader(const core::rect<s32>* rectangle=0, IGUIElement* parent=0, s32 id=-1) _IRR_OVERRIDE_;
|
||||
IGUIElement* getHovered() const override;
|
||||
|
||||
//! Returns the root gui element.
|
||||
virtual IGUIElement* getRootGUIElement() _IRR_OVERRIDE_;
|
||||
IGUIElement* getRootGUIElement() override;
|
||||
|
||||
virtual void OnPostRender( u32 time ) _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns the default element factory which can create all built in elements
|
||||
virtual IGUIElementFactory* getDefaultGUIElementFactory() const _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds an element factory to the gui environment.
|
||||
/** Use this to extend the gui environment with new element types which it should be
|
||||
able to create automatically, for example when loading data from xml files. */
|
||||
virtual void registerGUIElementFactory(IGUIElementFactory* factoryToAdd) _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns amount of registered scene node factories.
|
||||
virtual u32 getRegisteredGUIElementFactoryCount() const _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns a scene node factory by index
|
||||
virtual IGUIElementFactory* getGUIElementFactory(u32 index) const _IRR_OVERRIDE_;
|
||||
|
||||
//! Adds a GUI Element by its name
|
||||
virtual IGUIElement* addGUIElement(const c8* elementName, IGUIElement* parent=0) _IRR_OVERRIDE_;
|
||||
|
||||
//! Saves the current gui into a file.
|
||||
/** \param filename: Name of the file.
|
||||
\param start: The element to start saving from.
|
||||
if not specified, the root element will be used */
|
||||
virtual bool saveGUI( const io::path& filename, IGUIElement* start=0) _IRR_OVERRIDE_;
|
||||
|
||||
//! Saves the current gui into a file.
|
||||
/** \param file: The file to save the GUI to.
|
||||
\param start: The element to start saving from.
|
||||
if not specified, the root element will be used */
|
||||
virtual bool saveGUI(io::IWriteFile* file, IGUIElement* start=0) _IRR_OVERRIDE_;
|
||||
|
||||
//! Loads the gui. Note that the current gui is not cleared before.
|
||||
/** \param filename: Name of the file.
|
||||
\param parent: The parent of all loaded GUI elements,
|
||||
if not specified, the root element will be used */
|
||||
virtual bool loadGUI(const io::path& filename, IGUIElement* parent=0) _IRR_OVERRIDE_;
|
||||
|
||||
//! Loads the gui. Note that the current gui is not cleared before.
|
||||
/** \param file: IReadFile to load the GUI from
|
||||
\param parent: The parent of all loaded GUI elements,
|
||||
if not specified, the root element will be used */
|
||||
virtual bool loadGUI(io::IReadFile* file, IGUIElement* parent=0) _IRR_OVERRIDE_;
|
||||
void OnPostRender( u32 time ) override;
|
||||
|
||||
//! Find the next element which would be selected when pressing the tab-key
|
||||
virtual IGUIElement* getNextElement(bool reverse=false, bool group=false) _IRR_OVERRIDE_;
|
||||
IGUIElement* getNextElement(bool reverse=false, bool group=false) override;
|
||||
|
||||
//! Set the way the gui will handle focus changes
|
||||
virtual void setFocusBehavior(u32 flags) _IRR_OVERRIDE_;
|
||||
void setFocusBehavior(u32 flags) override;
|
||||
|
||||
//! Get the way the gui does handle focus changes
|
||||
virtual u32 getFocusBehavior() const _IRR_OVERRIDE_;
|
||||
u32 getFocusBehavior() const override;
|
||||
|
||||
//! Adds a IGUIElement to deletion queue.
|
||||
virtual void addToDeletionQueue(IGUIElement* element) _IRR_OVERRIDE_;
|
||||
void addToDeletionQueue(IGUIElement* element) override;
|
||||
|
||||
private:
|
||||
|
||||
@ -302,8 +211,6 @@ private:
|
||||
|
||||
SToolTip ToolTip;
|
||||
|
||||
core::array<IGUIElementFactory*> GUIElementFactoryList;
|
||||
|
||||
core::array<SFont> Fonts;
|
||||
core::array<SSpriteBank> Banks;
|
||||
video::IVideoDriver* Driver;
|
||||
|
@ -74,7 +74,7 @@ CGUIFileOpenDialog::CGUIFileOpenDialog(const wchar_t* title,
|
||||
L"", skin ? skin->getDefaultText(EGDT_WINDOW_CLOSE) : L"Close");
|
||||
CloseButton->setSubElement(true);
|
||||
CloseButton->setTabStop(false);
|
||||
if (sprites)
|
||||
if (sprites && skin)
|
||||
{
|
||||
CloseButton->setSpriteBank(sprites);
|
||||
CloseButton->setSprite(EGBS_BUTTON_UP, skin->getIcon(EGDI_WINDOW_CLOSE), color);
|
||||
|
@ -32,22 +32,22 @@ namespace gui
|
||||
virtual ~CGUIFileOpenDialog();
|
||||
|
||||
//! returns the filename of the selected file. Returns NULL, if no file was selected.
|
||||
virtual const wchar_t* getFileName() const _IRR_OVERRIDE_;
|
||||
const wchar_t* getFileName() const override;
|
||||
|
||||
//! Returns the filename of the selected file. Is empty if no file was selected.
|
||||
virtual const io::path& getFileNameP() const _IRR_OVERRIDE_;
|
||||
const io::path& getFileNameP() const override;
|
||||
|
||||
//! Returns the directory of the selected file. Returns NULL, if no directory was selected.
|
||||
virtual const io::path& getDirectoryName() const _IRR_OVERRIDE_;
|
||||
const io::path& getDirectoryName() const override;
|
||||
|
||||
//! Returns the directory of the selected file converted to wide characters. Returns NULL if no directory was selected.
|
||||
virtual const wchar_t* getDirectoryNameW() const _IRR_OVERRIDE_;
|
||||
const wchar_t* getDirectoryNameW() const override;
|
||||
|
||||
//! called if an event happened.
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_;
|
||||
bool OnEvent(const SEvent& event) override;
|
||||
|
||||
//! draws the element and its children
|
||||
virtual void draw() _IRR_OVERRIDE_;
|
||||
void draw() override;
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -47,32 +47,32 @@ public:
|
||||
//! draws an text and clips it to the specified rectangle if wanted
|
||||
virtual void draw(const core::stringw& text, const core::rect<s32>& position,
|
||||
video::SColor color, bool hcenter=false,
|
||||
bool vcenter=false, const core::rect<s32>* clip=0) _IRR_OVERRIDE_;
|
||||
bool vcenter=false, const core::rect<s32>* clip=0) override;
|
||||
|
||||
//! returns the dimension of a text
|
||||
virtual core::dimension2d<u32> getDimension(const wchar_t* text) const _IRR_OVERRIDE_;
|
||||
core::dimension2d<u32> getDimension(const wchar_t* text) const override;
|
||||
|
||||
//! Calculates the index of the character in the text which is on a specific position.
|
||||
virtual s32 getCharacterFromPos(const wchar_t* text, s32 pixel_x) const _IRR_OVERRIDE_;
|
||||
s32 getCharacterFromPos(const wchar_t* text, s32 pixel_x) const override;
|
||||
|
||||
//! Returns the type of this font
|
||||
virtual EGUI_FONT_TYPE getType() const _IRR_OVERRIDE_ { return EGFT_BITMAP; }
|
||||
EGUI_FONT_TYPE getType() const override { return EGFT_BITMAP; }
|
||||
|
||||
//! set an Pixel Offset on Drawing ( scale position on width )
|
||||
virtual void setKerningWidth (s32 kerning) _IRR_OVERRIDE_;
|
||||
virtual void setKerningHeight (s32 kerning) _IRR_OVERRIDE_;
|
||||
void setKerningWidth (s32 kerning) override;
|
||||
void setKerningHeight (s32 kerning) override;
|
||||
|
||||
//! set an Pixel Offset on Drawing ( scale position on width )
|
||||
virtual s32 getKerningWidth(const wchar_t* thisLetter=0, const wchar_t* previousLetter=0) const _IRR_OVERRIDE_;
|
||||
virtual s32 getKerningHeight() const _IRR_OVERRIDE_;
|
||||
s32 getKerningWidth(const wchar_t* thisLetter=0, const wchar_t* previousLetter=0) const override;
|
||||
s32 getKerningHeight() const override;
|
||||
|
||||
//! gets the sprite bank
|
||||
virtual IGUISpriteBank* getSpriteBank() const _IRR_OVERRIDE_;
|
||||
IGUISpriteBank* getSpriteBank() const override;
|
||||
|
||||
//! returns the sprite number from a given character
|
||||
virtual u32 getSpriteNoFromChar(const wchar_t *c) const _IRR_OVERRIDE_;
|
||||
u32 getSpriteNoFromChar(const wchar_t *c) const override;
|
||||
|
||||
virtual void setInvisibleCharacters( const wchar_t *s ) _IRR_OVERRIDE_;
|
||||
void setInvisibleCharacters( const wchar_t *s ) override;
|
||||
|
||||
private:
|
||||
|
||||
|
@ -26,52 +26,52 @@ namespace gui
|
||||
virtual ~CGUIImage();
|
||||
|
||||
//! sets an image
|
||||
virtual void setImage(video::ITexture* image) _IRR_OVERRIDE_;
|
||||
void setImage(video::ITexture* image) override;
|
||||
|
||||
//! Gets the image texture
|
||||
virtual video::ITexture* getImage() const _IRR_OVERRIDE_;
|
||||
video::ITexture* getImage() const override;
|
||||
|
||||
//! sets the color of the image
|
||||
virtual void setColor(video::SColor color) _IRR_OVERRIDE_;
|
||||
void setColor(video::SColor color) override;
|
||||
|
||||
//! sets if the image should scale to fit the element
|
||||
virtual void setScaleImage(bool scale) _IRR_OVERRIDE_;
|
||||
void setScaleImage(bool scale) override;
|
||||
|
||||
//! draws the element and its children
|
||||
virtual void draw() _IRR_OVERRIDE_;
|
||||
void draw() override;
|
||||
|
||||
//! sets if the image should use its alpha channel to draw itself
|
||||
virtual void setUseAlphaChannel(bool use) _IRR_OVERRIDE_;
|
||||
void setUseAlphaChannel(bool use) override;
|
||||
|
||||
//! Gets the color of the image
|
||||
virtual video::SColor getColor() const _IRR_OVERRIDE_;
|
||||
video::SColor getColor() const override;
|
||||
|
||||
//! Returns true if the image is scaled to fit, false if not
|
||||
virtual bool isImageScaled() const _IRR_OVERRIDE_;
|
||||
bool isImageScaled() const override;
|
||||
|
||||
//! Returns true if the image is using the alpha channel, false if not
|
||||
virtual bool isAlphaChannelUsed() const _IRR_OVERRIDE_;
|
||||
bool isAlphaChannelUsed() const override;
|
||||
|
||||
//! Sets the source rectangle of the image. By default the full image is used.
|
||||
virtual void setSourceRect(const core::rect<s32>& sourceRect) _IRR_OVERRIDE_;
|
||||
void setSourceRect(const core::rect<s32>& sourceRect) override;
|
||||
|
||||
//! Returns the customized source rectangle of the image to be used.
|
||||
virtual core::rect<s32> getSourceRect() const _IRR_OVERRIDE_;
|
||||
core::rect<s32> getSourceRect() const override;
|
||||
|
||||
//! Restrict drawing-area.
|
||||
virtual void setDrawBounds(const core::rect<f32>& drawBoundUVs) _IRR_OVERRIDE_;
|
||||
void setDrawBounds(const core::rect<f32>& drawBoundUVs) override;
|
||||
|
||||
//! Get drawing-area restrictions.
|
||||
virtual core::rect<f32> getDrawBounds() const _IRR_OVERRIDE_;
|
||||
core::rect<f32> getDrawBounds() const override;
|
||||
|
||||
//! Sets whether to draw a background color (EGDC_3D_DARK_SHADOW) when no texture is set
|
||||
virtual void setDrawBackground(bool draw) _IRR_OVERRIDE_
|
||||
void setDrawBackground(bool draw) override
|
||||
{
|
||||
DrawBackground = draw;
|
||||
}
|
||||
|
||||
//! Checks if a background is drawn when no texture is set
|
||||
virtual bool isDrawBackgroundEnabled() const _IRR_OVERRIDE_
|
||||
bool isDrawBackgroundEnabled() const override
|
||||
{
|
||||
return DrawBackground;
|
||||
}
|
||||
|
@ -38,16 +38,16 @@ public:
|
||||
//! \param clip: Optional pointer to a rectangle against which the text will be clipped.
|
||||
//! If the pointer is null, no clipping will be done.
|
||||
virtual void draw( s32 index, const core::position2d<s32>& destPos,
|
||||
const core::rect<s32>* clip = 0 ) _IRR_OVERRIDE_;
|
||||
const core::rect<s32>* clip = 0 ) override;
|
||||
|
||||
//! Returns the count of Images in the list.
|
||||
//! \return Returns the count of Images in the list.
|
||||
virtual s32 getImageCount() const _IRR_OVERRIDE_
|
||||
s32 getImageCount() const override
|
||||
{ return ImageCount; }
|
||||
|
||||
//! Returns the size of the images in the list.
|
||||
//! \return Returns the size of the images in the list.
|
||||
virtual core::dimension2d<s32> getImageSize() const _IRR_OVERRIDE_
|
||||
core::dimension2d<s32> getImageSize() const override
|
||||
{ return ImageSize; }
|
||||
|
||||
private:
|
||||
|
@ -1,156 +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
|
||||
|
||||
#include "CGUIInOutFader.h"
|
||||
#ifdef _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#include "IGUIEnvironment.h"
|
||||
#include "IVideoDriver.h"
|
||||
#include "os.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
|
||||
|
||||
//! constructor
|
||||
CGUIInOutFader::CGUIInOutFader(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIInOutFader(environment, parent, id, rectangle)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CGUIInOutFader");
|
||||
#endif
|
||||
|
||||
Action = EFA_NOTHING;
|
||||
StartTime = 0;
|
||||
EndTime = 0;
|
||||
|
||||
setColor(video::SColor(0,0,0,0));
|
||||
}
|
||||
|
||||
|
||||
//! draws the element and its children
|
||||
void CGUIInOutFader::draw()
|
||||
{
|
||||
if (!IsVisible || !Action)
|
||||
return;
|
||||
|
||||
u32 now = os::Timer::getTime();
|
||||
if (now > EndTime && Action == EFA_FADE_IN)
|
||||
{
|
||||
Action = EFA_NOTHING;
|
||||
return;
|
||||
}
|
||||
|
||||
video::IVideoDriver* driver = Environment->getVideoDriver();
|
||||
|
||||
if (driver)
|
||||
{
|
||||
f32 d;
|
||||
|
||||
if (now > EndTime)
|
||||
d = 0.0f;
|
||||
else
|
||||
d = (EndTime - now) / (f32)(EndTime - StartTime);
|
||||
|
||||
video::SColor newCol = FullColor.getInterpolated(TransColor, d);
|
||||
driver->draw2DRectangle(newCol, AbsoluteRect, &AbsoluteClippingRect);
|
||||
}
|
||||
|
||||
IGUIElement::draw();
|
||||
}
|
||||
|
||||
|
||||
//! Gets the color to fade out to or to fade in from.
|
||||
video::SColor CGUIInOutFader::getColor() const
|
||||
{
|
||||
return Color[1];
|
||||
}
|
||||
|
||||
|
||||
//! Sets the color to fade out to or to fade in from.
|
||||
void CGUIInOutFader::setColor(video::SColor color)
|
||||
{
|
||||
video::SColor s = color;
|
||||
video::SColor d = color;
|
||||
|
||||
s.setAlpha ( 255 );
|
||||
d.setAlpha ( 0 );
|
||||
setColor ( s,d );
|
||||
|
||||
/*
|
||||
Color[0] = color;
|
||||
|
||||
FullColor = Color[0];
|
||||
TransColor = Color[0];
|
||||
|
||||
if (Action == EFA_FADE_OUT)
|
||||
{
|
||||
FullColor.setAlpha(0);
|
||||
TransColor.setAlpha(255);
|
||||
}
|
||||
else
|
||||
if (Action == EFA_FADE_IN)
|
||||
{
|
||||
FullColor.setAlpha(255);
|
||||
TransColor.setAlpha(0);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
void CGUIInOutFader::setColor(video::SColor source, video::SColor dest)
|
||||
{
|
||||
Color[0] = source;
|
||||
Color[1] = dest;
|
||||
|
||||
if (Action == EFA_FADE_OUT)
|
||||
{
|
||||
FullColor = Color[1];
|
||||
TransColor = Color[0];
|
||||
}
|
||||
else
|
||||
if (Action == EFA_FADE_IN)
|
||||
{
|
||||
FullColor = Color[0];
|
||||
TransColor = Color[1];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
//! Returns if the fade in or out process is done.
|
||||
bool CGUIInOutFader::isReady() const
|
||||
{
|
||||
u32 now = os::Timer::getTime();
|
||||
bool ret = (now > EndTime);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//! Starts the fade in process.
|
||||
void CGUIInOutFader::fadeIn(u32 time)
|
||||
{
|
||||
StartTime = os::Timer::getTime();
|
||||
EndTime = StartTime + time;
|
||||
Action = EFA_FADE_IN;
|
||||
setColor(Color[0],Color[1]);
|
||||
}
|
||||
|
||||
|
||||
//! Starts the fade out process.
|
||||
void CGUIInOutFader::fadeOut(u32 time)
|
||||
{
|
||||
StartTime = os::Timer::getTime();
|
||||
EndTime = StartTime + time;
|
||||
Action = EFA_FADE_OUT;
|
||||
setColor(Color[0],Color[1]);
|
||||
}
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif // _IRR_COMPILE_WITH_GUI_
|
||||
|
@ -1,69 +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 __C_GUI_IN_OUT_FADER_H_INCLUDED__
|
||||
#define __C_GUI_IN_OUT_FADER_H_INCLUDED__
|
||||
|
||||
#include "IrrCompileConfig.h"
|
||||
#ifdef _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#include "IGUIInOutFader.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
|
||||
class CGUIInOutFader : public IGUIInOutFader
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
CGUIInOutFader(IGUIEnvironment* environment, IGUIElement* parent,
|
||||
s32 id, core::rect<s32> rectangle);
|
||||
|
||||
//! draws the element and its children
|
||||
virtual void draw() _IRR_OVERRIDE_;
|
||||
|
||||
//! Gets the color to fade out to or to fade in from.
|
||||
virtual video::SColor getColor() const _IRR_OVERRIDE_;
|
||||
|
||||
//! Sets the color to fade out to or to fade in from.
|
||||
virtual void setColor(video::SColor color ) _IRR_OVERRIDE_;
|
||||
virtual void setColor(video::SColor source, video::SColor dest) _IRR_OVERRIDE_;
|
||||
|
||||
//! Starts the fade in process.
|
||||
virtual void fadeIn(u32 time) _IRR_OVERRIDE_;
|
||||
|
||||
//! Starts the fade out process.
|
||||
virtual void fadeOut(u32 time) _IRR_OVERRIDE_;
|
||||
|
||||
//! Returns if the fade in or out process is done.
|
||||
virtual bool isReady() const _IRR_OVERRIDE_;
|
||||
|
||||
private:
|
||||
|
||||
enum EFadeAction
|
||||
{
|
||||
EFA_NOTHING = 0,
|
||||
EFA_FADE_IN,
|
||||
EFA_FADE_OUT
|
||||
};
|
||||
|
||||
u32 StartTime;
|
||||
u32 EndTime;
|
||||
EFadeAction Action;
|
||||
|
||||
video::SColor Color[2];
|
||||
video::SColor FullColor;
|
||||
video::SColor TransColor;
|
||||
};
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif // _IRR_COMPILE_WITH_GUI_
|
||||
|
||||
#endif // __C_GUI_IN_OUT_FADER_H_INCLUDED__
|
||||
|
@ -31,121 +31,117 @@ namespace gui
|
||||
virtual ~CGUIListBox();
|
||||
|
||||
//! returns amount of list items
|
||||
virtual u32 getItemCount() const _IRR_OVERRIDE_;
|
||||
u32 getItemCount() const override;
|
||||
|
||||
//! returns string of a list item. the id may be a value from 0 to itemCount-1
|
||||
virtual const wchar_t* getListItem(u32 id) const _IRR_OVERRIDE_;
|
||||
const wchar_t* getListItem(u32 id) const override;
|
||||
|
||||
//! adds an list item, returns id of item
|
||||
virtual u32 addItem(const wchar_t* text) _IRR_OVERRIDE_;
|
||||
u32 addItem(const wchar_t* text) override;
|
||||
|
||||
//! clears the list
|
||||
virtual void clear() _IRR_OVERRIDE_;
|
||||
void clear() override;
|
||||
|
||||
//! returns id of selected item. returns -1 if no item is selected.
|
||||
virtual s32 getSelected() const _IRR_OVERRIDE_;
|
||||
s32 getSelected() const override;
|
||||
|
||||
//! sets the selected item. Set this to -1 if no item should be selected
|
||||
virtual void setSelected(s32 id) _IRR_OVERRIDE_;
|
||||
void setSelected(s32 id) override;
|
||||
|
||||
//! sets the selected item. Set this to -1 if no item should be selected
|
||||
virtual void setSelected(const wchar_t *item) _IRR_OVERRIDE_;
|
||||
void setSelected(const wchar_t *item) override;
|
||||
|
||||
//! called if an event happened.
|
||||
virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_;
|
||||
bool OnEvent(const SEvent& event) override;
|
||||
|
||||
//! draws the element and its children
|
||||
virtual void draw() _IRR_OVERRIDE_;
|
||||
void draw() override;
|
||||
|
||||
//! adds an list item with an icon
|
||||
//! \param text Text of list entry
|
||||
//! \param icon Sprite index of the Icon within the current sprite bank. Set it to -1 if you want no icon
|
||||
//! \return
|
||||
//! returns the id of the new created item
|
||||
virtual u32 addItem(const wchar_t* text, s32 icon) _IRR_OVERRIDE_;
|
||||
u32 addItem(const wchar_t* text, s32 icon) override;
|
||||
|
||||
//! Returns the icon of an item
|
||||
virtual s32 getIcon(u32 id) const _IRR_OVERRIDE_;
|
||||
s32 getIcon(u32 id) const override;
|
||||
|
||||
//! removes an item from the list
|
||||
virtual void removeItem(u32 id) _IRR_OVERRIDE_;
|
||||
void removeItem(u32 id) override;
|
||||
|
||||
//! get the the id of the item at the given absolute coordinates
|
||||
virtual s32 getItemAt(s32 xpos, s32 ypos) const _IRR_OVERRIDE_;
|
||||
s32 getItemAt(s32 xpos, s32 ypos) const override;
|
||||
|
||||
//! Sets the sprite bank which should be used to draw list icons. This font is set to the sprite bank of
|
||||
//! the built-in-font by default. A sprite can be displayed in front of every list item.
|
||||
//! An icon is an index within the icon sprite bank. Several default icons are available in the
|
||||
//! skin through getIcon
|
||||
virtual void setSpriteBank(IGUISpriteBank* bank) _IRR_OVERRIDE_;
|
||||
void setSpriteBank(IGUISpriteBank* bank) override;
|
||||
|
||||
//! set whether the listbox should scroll to newly selected items
|
||||
virtual void setAutoScrollEnabled(bool scroll) _IRR_OVERRIDE_;
|
||||
void setAutoScrollEnabled(bool scroll) override;
|
||||
|
||||
//! returns true if automatic scrolling is enabled, false if not.
|
||||
virtual bool isAutoScrollEnabled() const _IRR_OVERRIDE_;
|
||||
bool isAutoScrollEnabled() const override;
|
||||
|
||||
//! Update the position and size of the listbox, and update the scrollbar
|
||||
virtual void updateAbsolutePosition() _IRR_OVERRIDE_;
|
||||
void updateAbsolutePosition() override;
|
||||
|
||||
//! set all item colors at given index to color
|
||||
virtual void setItemOverrideColor(u32 index, video::SColor color) _IRR_OVERRIDE_;
|
||||
void setItemOverrideColor(u32 index, video::SColor color) override;
|
||||
|
||||
//! set all item colors of specified type at given index to color
|
||||
virtual void setItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType, video::SColor color) _IRR_OVERRIDE_;
|
||||
void setItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType, video::SColor color) override;
|
||||
|
||||
//! clear all item colors at index
|
||||
virtual void clearItemOverrideColor(u32 index) _IRR_OVERRIDE_;
|
||||
void clearItemOverrideColor(u32 index) override;
|
||||
|
||||
//! clear item color at index for given colortype
|
||||
virtual void clearItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType) _IRR_OVERRIDE_;
|
||||
void clearItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType) override;
|
||||
|
||||
//! has the item at index its color overwritten?
|
||||
virtual bool hasItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType) const _IRR_OVERRIDE_;
|
||||
bool hasItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType) const override;
|
||||
|
||||
//! return the overwrite color at given item index.
|
||||
virtual video::SColor getItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType) const _IRR_OVERRIDE_;
|
||||
video::SColor getItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType) const override;
|
||||
|
||||
//! return the default color which is used for the given colorType
|
||||
virtual video::SColor getItemDefaultColor(EGUI_LISTBOX_COLOR colorType) const _IRR_OVERRIDE_;
|
||||
video::SColor getItemDefaultColor(EGUI_LISTBOX_COLOR colorType) const override;
|
||||
|
||||
//! set the item at the given index
|
||||
virtual void setItem(u32 index, const wchar_t* text, s32 icon) _IRR_OVERRIDE_;
|
||||
void setItem(u32 index, const wchar_t* text, s32 icon) override;
|
||||
|
||||
//! Insert the item at the given index
|
||||
//! Return the index on success or -1 on failure.
|
||||
virtual s32 insertItem(u32 index, const wchar_t* text, s32 icon) _IRR_OVERRIDE_;
|
||||
s32 insertItem(u32 index, const wchar_t* text, s32 icon) override;
|
||||
|
||||
//! Swap the items at the given indices
|
||||
virtual void swapItems(u32 index1, u32 index2) _IRR_OVERRIDE_;
|
||||
void swapItems(u32 index1, u32 index2) override;
|
||||
|
||||
//! set global itemHeight
|
||||
virtual void setItemHeight( s32 height ) _IRR_OVERRIDE_;
|
||||
void setItemHeight( s32 height ) override;
|
||||
|
||||
//! Sets whether to draw the background
|
||||
virtual void setDrawBackground(bool draw) _IRR_OVERRIDE_;
|
||||
void setDrawBackground(bool draw) override;
|
||||
|
||||
//! Access the vertical scrollbar
|
||||
virtual IGUIScrollBar* getVerticalScrollBar() const _IRR_OVERRIDE_;
|
||||
IGUIScrollBar* getVerticalScrollBar() const override;
|
||||
|
||||
private:
|
||||
|
||||
struct ListItem
|
||||
{
|
||||
ListItem() : Icon(-1)
|
||||
{}
|
||||
|
||||
core::stringw Text;
|
||||
s32 Icon;
|
||||
s32 Icon = -1;
|
||||
|
||||
// A multicolor extension
|
||||
struct ListItemOverrideColor
|
||||
{
|
||||
ListItemOverrideColor() : Use(false) {}
|
||||
bool Use;
|
||||
bool Use = false;
|
||||
video::SColor Color;
|
||||
};
|
||||
ListItemOverrideColor OverrideColors[EGUI_LBC_COUNT];
|
||||
ListItemOverrideColor OverrideColors[EGUI_LBC_COUNT]{};
|
||||
};
|
||||
|
||||
void recalculateItemHeight();
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user