mirror of https://github.com/minetest/irrlicht.git
Compare commits
22 Commits
Author | SHA1 | Date |
---|---|---|
celeron55 | 7173c2c629 | |
sfan5 | 124708784f | |
Desour | bcb952c3ca | |
Desour | 594e88bf3b | |
Desour | dd1043c4c0 | |
Desour | 72e303238e | |
Desour | adc96072cd | |
Desour | 7cf801244c | |
numzero | b01a3ea781 | |
Desour | e5b97d440a | |
Desour | f5c6d3e945 | |
numzero | 9814510b1b | |
sfan5 | 05c8bc8314 | |
sfan5 | a9c4683b18 | |
sfan5 | 26c4f4e63d | |
sfan5 | 9d07f906a7 | |
sfan5 | d26c0aeaaf | |
sfan5 | 70b0b46d50 | |
sfan5 | a7dd075dec | |
sfan5 | 1e89db1b80 | |
sfan5 | 44a368ef0e | |
sfan5 | 7ddf740f9b |
|
@ -61,8 +61,7 @@ jobs:
|
|||
LIBGL_ALWAYS_SOFTWARE=true xvfb-run ./AutomatedTest ogles2
|
||||
|
||||
linux-sdl:
|
||||
# something is wrong with the SDL cmake files on 20.04
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install deps
|
||||
|
@ -106,8 +105,7 @@ jobs:
|
|||
LIBGL_ALWAYS_SOFTWARE=true xvfb-run ./AutomatedTest opengl3
|
||||
|
||||
linux-sdl-gles2:
|
||||
# something is wrong with the SDL cmake files on 20.04
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install deps
|
||||
|
@ -167,8 +165,11 @@ jobs:
|
|||
- uses: actions/checkout@v4
|
||||
- name: Install deps
|
||||
run: |
|
||||
brew update
|
||||
brew update --auto-update
|
||||
brew install cmake libpng jpeg
|
||||
env:
|
||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
|
@ -185,8 +186,11 @@ jobs:
|
|||
- uses: actions/checkout@v4
|
||||
- name: Install deps
|
||||
run: |
|
||||
brew update
|
||||
brew update --auto-update
|
||||
brew install cmake libpng jpeg sdl2
|
||||
env:
|
||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
||||
HOMEBREW_NO_INSTALL_CLEANUP: 1
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
|
|
|
@ -35,7 +35,7 @@ endif()
|
|||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
enable_testing()
|
||||
add_subdirectory(source/Irrlicht)
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(test)
|
||||
|
||||
option(BUILD_EXAMPLES "Build example applications" FALSE)
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
IrrlichtMt version 1.9
|
||||
======================
|
||||
|
||||
Notice
|
||||
------
|
||||
|
||||
IrrlichtMt has been moved into the [main Minetest repository](https://github.com/minetest) during Minetest 5.9 development. This repository is an archive useful for building older versions of Minetest.
|
||||
|
||||
About
|
||||
-----
|
||||
|
||||
IrrlichtMt is the 3D engine of [Minetest](https://github.com/minetest).
|
||||
It is based on the [Irrlicht Engine](https://irrlicht.sourceforge.io/) but is now developed independently.
|
||||
It is intentionally not compatible to upstream and is planned to be eventually absorbed into Minetest.
|
||||
|
|
|
@ -28,14 +28,14 @@ static video::E_DRIVER_TYPE chooseDriver(core::stringc arg_)
|
|||
|
||||
static inline void check(bool ok, const char *msg)
|
||||
{
|
||||
if (!ok)
|
||||
{
|
||||
if (!ok) {
|
||||
test_fail++;
|
||||
device->getLogger()->log((core::stringc("FAILED TEST: ") + msg).c_str(), ELL_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
void run_unit_tests() {
|
||||
void run_unit_tests()
|
||||
{
|
||||
std::cout << "Running unit tests:" << std::endl;
|
||||
try {
|
||||
test_irr_array();
|
||||
|
@ -93,13 +93,11 @@ int main(int argc, char *argv[])
|
|||
check(mesh, "mesh loading");
|
||||
if (mesh_file)
|
||||
mesh_file->drop();
|
||||
if (mesh)
|
||||
{
|
||||
if (mesh) {
|
||||
video::ITexture *tex = driver->getTexture(mediaPath + "cooltexture.png");
|
||||
check(tex, "texture loading");
|
||||
scene::IAnimatedMeshSceneNode *node = smgr->addAnimatedMeshSceneNode(mesh);
|
||||
if (node)
|
||||
{
|
||||
if (node) {
|
||||
node->forEachMaterial([tex](video::SMaterial &mat) {
|
||||
mat.Lighting = false;
|
||||
mat.setTexture(0, tex);
|
||||
|
@ -115,25 +113,20 @@ int main(int argc, char *argv[])
|
|||
SEvent event;
|
||||
device->getTimer()->start();
|
||||
|
||||
while (device->run())
|
||||
{
|
||||
if (device->getTimer()->getTime() >= 1000)
|
||||
{
|
||||
while (device->run()) {
|
||||
if (device->getTimer()->getTime() >= 1000) {
|
||||
device->getTimer()->setTime(0);
|
||||
++n;
|
||||
if (n == 1) // Tooltip display
|
||||
{
|
||||
if (n == 1) { // Tooltip display
|
||||
bzero(&event, sizeof(SEvent));
|
||||
event.EventType = irr::EET_MOUSE_INPUT_EVENT;
|
||||
event.MouseInput.Event = irr::EMIE_MOUSE_MOVED;
|
||||
event.MouseInput.X = button->getAbsolutePosition().getCenter().X;
|
||||
event.MouseInput.Y = button->getAbsolutePosition().getCenter().Y;
|
||||
device->postEventFromUser(event);
|
||||
}
|
||||
else if (n == 2) // Text input focus
|
||||
} else if (n == 2) // Text input focus
|
||||
guienv->setFocus(editbox);
|
||||
else if (n == 3) // Keypress for Text input
|
||||
{
|
||||
else if (n == 3) { // Keypress for Text input
|
||||
bzero(&event, sizeof(SEvent));
|
||||
event.EventType = irr::EET_KEY_INPUT_EVENT;
|
||||
event.KeyInput.Char = L'a';
|
||||
|
@ -142,8 +135,7 @@ int main(int argc, char *argv[])
|
|||
device->postEventFromUser(event);
|
||||
event.KeyInput.PressedDown = false;
|
||||
device->postEventFromUser(event);
|
||||
}
|
||||
else
|
||||
} else
|
||||
device->closeDevice();
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
using namespace irr;
|
||||
using core::array;
|
||||
|
||||
static void test_basics() {
|
||||
static void test_basics()
|
||||
{
|
||||
array<int> v;
|
||||
v.push_back(1); // 1
|
||||
v.push_front(2); // 2, 1
|
||||
|
@ -57,7 +58,8 @@ static void test_basics() {
|
|||
UASSERTEQ(v.size(), 2);
|
||||
}
|
||||
|
||||
static void test_linear_searches() {
|
||||
static void test_linear_searches()
|
||||
{
|
||||
// Populate the array with 0, 1, 2, ..., 100, 100, 99, 98, 97, ..., 0
|
||||
array<int> arr;
|
||||
for (int i = 0; i <= 100; i++)
|
||||
|
@ -75,7 +77,8 @@ static void test_linear_searches() {
|
|||
}
|
||||
}
|
||||
|
||||
static void test_binary_searches() {
|
||||
static void test_binary_searches()
|
||||
{
|
||||
const auto &values = {3, 5, 1, 2, 5, 10, 19, 9, 7, 1, 2, 5, 8, 15};
|
||||
array<int> arr;
|
||||
for (int value : values) {
|
||||
|
|
|
@ -3,11 +3,13 @@
|
|||
#include <exception>
|
||||
#include <iostream>
|
||||
|
||||
class TestFailedException : public std::exception {
|
||||
class TestFailedException : public std::exception
|
||||
{
|
||||
};
|
||||
|
||||
// Asserts the comparison specified by CMP is true, or fails the current unit test
|
||||
#define UASSERTCMP(CMP, actual, expected) do { \
|
||||
#define UASSERTCMP(CMP, actual, expected) \
|
||||
do { \
|
||||
const auto &a = (actual); \
|
||||
const auto &e = (expected); \
|
||||
if (!CMP(a, e)) { \
|
||||
|
@ -15,7 +17,8 @@ class TestFailedException : public std::exception {
|
|||
<< "Test assertion failed: " << #actual << " " << #CMP << " " \
|
||||
<< #expected << std::endl \
|
||||
<< " at " << __FILE__ << ":" << __LINE__ << std::endl \
|
||||
<< " actual: " << a << std::endl << " expected: " \
|
||||
<< " actual: " << a << std::endl \
|
||||
<< " expected: " \
|
||||
<< e << std::endl; \
|
||||
throw TestFailedException(); \
|
||||
} \
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __T_MESH_BUFFER_H_INCLUDED__
|
||||
#define __T_MESH_BUFFER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrArray.h"
|
||||
#include "IMeshBuffer.h"
|
||||
|
@ -18,18 +17,14 @@ namespace scene
|
|||
{
|
||||
public:
|
||||
//! Default constructor for empty meshbuffer
|
||||
CMeshBuffer()
|
||||
: ChangedID_Vertex(1), ChangedID_Index(1)
|
||||
, MappingHint_Vertex(EHM_NEVER), MappingHint_Index(EHM_NEVER)
|
||||
, HWBuffer(NULL)
|
||||
, PrimitiveType(EPT_TRIANGLES)
|
||||
CMeshBuffer() :
|
||||
ChangedID_Vertex(1), ChangedID_Index(1), MappingHint_Vertex(EHM_NEVER), MappingHint_Index(EHM_NEVER), HWBuffer(NULL), PrimitiveType(EPT_TRIANGLES)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CMeshBuffer");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
//! Get material of this meshbuffer
|
||||
/** \return Material of this buffer */
|
||||
const video::SMaterial &getMaterial() const override
|
||||
|
@ -37,7 +32,6 @@ namespace scene
|
|||
return Material;
|
||||
}
|
||||
|
||||
|
||||
//! Get material of this meshbuffer
|
||||
/** \return Material of this buffer */
|
||||
video::SMaterial &getMaterial() override
|
||||
|
@ -45,7 +39,6 @@ namespace scene
|
|||
return Material;
|
||||
}
|
||||
|
||||
|
||||
//! Get pointer to vertices
|
||||
/** \return Pointer to vertices. */
|
||||
const void *getVertices() const override
|
||||
|
@ -53,7 +46,6 @@ namespace scene
|
|||
return Vertices.const_pointer();
|
||||
}
|
||||
|
||||
|
||||
//! Get pointer to vertices
|
||||
/** \return Pointer to vertices. */
|
||||
void *getVertices() override
|
||||
|
@ -61,7 +53,6 @@ namespace scene
|
|||
return Vertices.pointer();
|
||||
}
|
||||
|
||||
|
||||
//! Get number of vertices
|
||||
/** \return Number of vertices. */
|
||||
u32 getVertexCount() const override
|
||||
|
@ -83,7 +74,6 @@ namespace scene
|
|||
return Indices.const_pointer();
|
||||
}
|
||||
|
||||
|
||||
//! Get pointer to indices
|
||||
/** \return Pointer to indices. */
|
||||
u16 *getIndices() override
|
||||
|
@ -91,7 +81,6 @@ namespace scene
|
|||
return Indices.pointer();
|
||||
}
|
||||
|
||||
|
||||
//! Get number of indices
|
||||
/** \return Number of indices. */
|
||||
u32 getIndexCount() const override
|
||||
|
@ -99,7 +88,6 @@ namespace scene
|
|||
return Indices.size();
|
||||
}
|
||||
|
||||
|
||||
//! Get the axis aligned bounding box
|
||||
/** \return Axis aligned bounding box of this buffer. */
|
||||
const core::aabbox3d<f32> &getBoundingBox() const override
|
||||
|
@ -107,7 +95,6 @@ namespace scene
|
|||
return BoundingBox;
|
||||
}
|
||||
|
||||
|
||||
//! Set the axis aligned bounding box
|
||||
/** \param box New axis aligned bounding box for this buffer. */
|
||||
//! set user axis aligned bounding box
|
||||
|
@ -116,24 +103,19 @@ namespace scene
|
|||
BoundingBox = box;
|
||||
}
|
||||
|
||||
|
||||
//! Recalculate the bounding box.
|
||||
/** should be called if the mesh changed. */
|
||||
void recalculateBoundingBox() override
|
||||
{
|
||||
if (!Vertices.empty())
|
||||
{
|
||||
if (!Vertices.empty()) {
|
||||
BoundingBox.reset(Vertices[0].Pos);
|
||||
const irr::u32 vsize = Vertices.size();
|
||||
for (u32 i = 1; i < vsize; ++i)
|
||||
BoundingBox.addInternalPoint(Vertices[i].Pos);
|
||||
}
|
||||
else
|
||||
} else
|
||||
BoundingBox.reset(0, 0, 0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//! Get type of vertex data stored in this buffer.
|
||||
/** \return Type of vertex data. */
|
||||
video::E_VERTEX_TYPE getVertexType() const override
|
||||
|
@ -177,7 +159,6 @@ namespace scene
|
|||
return Vertices[i].TCoords;
|
||||
}
|
||||
|
||||
|
||||
//! Append the vertices and indices to the current buffer
|
||||
/** Only works for compatible types, i.e. either the same type
|
||||
or the main buffer is of standard type. Otherwise, behavior is
|
||||
|
@ -192,20 +173,17 @@ namespace scene
|
|||
u32 i;
|
||||
|
||||
Vertices.reallocate(vertexCount + numVertices);
|
||||
for (i=0; i<numVertices; ++i)
|
||||
{
|
||||
for (i = 0; i < numVertices; ++i) {
|
||||
Vertices.push_back(static_cast<const T *>(vertices)[i]);
|
||||
BoundingBox.addInternalPoint(static_cast<const T *>(vertices)[i].Pos);
|
||||
}
|
||||
|
||||
Indices.reallocate(getIndexCount() + numIndices);
|
||||
for (i=0; i<numIndices; ++i)
|
||||
{
|
||||
for (i = 0; i < numIndices; ++i) {
|
||||
Indices.push_back(indices[i] + vertexCount);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! get the current hardware mapping hint
|
||||
E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const override
|
||||
{
|
||||
|
@ -256,15 +234,16 @@ namespace scene
|
|||
/** This shouldn't be used for anything outside the VideoDriver. */
|
||||
u32 getChangedID_Index() const override { return ChangedID_Index; }
|
||||
|
||||
void setHWBuffer(void *ptr) const override {
|
||||
void setHWBuffer(void *ptr) const override
|
||||
{
|
||||
HWBuffer = ptr;
|
||||
}
|
||||
|
||||
void *getHWBuffer() const override {
|
||||
void *getHWBuffer() const override
|
||||
{
|
||||
return HWBuffer;
|
||||
}
|
||||
|
||||
|
||||
u32 ChangedID_Vertex;
|
||||
u32 ChangedID_Index;
|
||||
|
||||
|
@ -293,7 +272,3 @@ namespace scene
|
|||
typedef CMeshBuffer<video::S3DVertexTangents> SMeshBufferTangents;
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_ATTRIBUTES_H_INCLUDED__
|
||||
#define __E_ATTRIBUTES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -31,5 +30,3 @@ enum E_ATTRIBUTE_TYPE
|
|||
|
||||
} // end namespace io
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_CULLING_TYPES_H_INCLUDED__
|
||||
#define __E_CULLING_TYPES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrTypes.h"
|
||||
|
||||
|
@ -23,19 +22,14 @@ namespace scene
|
|||
};
|
||||
|
||||
//! Names for culling type
|
||||
const c8* const AutomaticCullingNames[] =
|
||||
{
|
||||
const c8 *const AutomaticCullingNames[] = {
|
||||
"false",
|
||||
"box", // camera box against node box
|
||||
"frustum_box", // camera frustum against node box
|
||||
"frustum_sphere", // camera frustum against node sphere
|
||||
"occ_query", // occlusion query
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif // __E_CULLING_TYPES_H_INCLUDED__
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_DEBUG_SCENE_TYPES_H_INCLUDED__
|
||||
#define __E_DEBUG_SCENE_TYPES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -38,10 +37,5 @@ namespace scene
|
|||
EDS_FULL = 0xffffffff
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif // __E_DEBUG_SCENE_TYPES_H_INCLUDED__
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_DEVICE_TYPES_H_INCLUDED__
|
||||
#define __E_DEVICE_TYPES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -45,6 +44,3 @@ namespace irr
|
|||
};
|
||||
|
||||
} // end namespace irr
|
||||
|
||||
#endif // __E_DEVICE_TYPES_H_INCLUDED__
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_DRIVER_FEATURES_H_INCLUDED__
|
||||
#define __E_DRIVER_FEATURES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -136,7 +135,3 @@ namespace video
|
|||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_DRIVER_TYPES_H_INCLUDED__
|
||||
#define __E_DRIVER_TYPES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrTypes.h"
|
||||
|
||||
|
@ -43,6 +42,3 @@ namespace video
|
|||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef E_FOCUS_FLAGS_H_INCLUDED__
|
||||
#define E_FOCUS_FLAGS_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -33,6 +32,3 @@ enum EFOCUS_FLAG
|
|||
|
||||
} // namespace gui
|
||||
} // namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_GUI_ALIGNMENT_H_INCLUDED__
|
||||
#define __E_GUI_ALIGNMENT_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrTypes.h"
|
||||
|
||||
|
@ -24,16 +23,13 @@ enum EGUI_ALIGNMENT
|
|||
};
|
||||
|
||||
//! Names for alignments
|
||||
const c8* const GUIAlignmentNames[] =
|
||||
{
|
||||
const c8 *const GUIAlignmentNames[] = {
|
||||
"upperLeft",
|
||||
"lowerRight",
|
||||
"center",
|
||||
"scale",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
} // namespace gui
|
||||
} // namespace irr
|
||||
|
||||
#endif // __E_GUI_ALIGNMENT_H_INCLUDED__
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_GUI_ELEMENT_TYPES_H_INCLUDED__
|
||||
#define __E_GUI_ELEMENT_TYPES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrTypes.h"
|
||||
|
||||
|
@ -100,8 +99,7 @@ enum EGUI_ELEMENT_TYPE
|
|||
};
|
||||
|
||||
//! Names for built-in element types
|
||||
const c8* const GUIElementTypeNames[] =
|
||||
{
|
||||
const c8 *const GUIElementTypeNames[] = {
|
||||
"button",
|
||||
"checkBox",
|
||||
"comboBox",
|
||||
|
@ -128,14 +126,8 @@ const c8* const GUIElementTypeNames[] =
|
|||
"element",
|
||||
"root",
|
||||
"profiler",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_HARDWARE_BUFFER_FLAGS_INCLUDED__
|
||||
#define __E_HARDWARE_BUFFER_FLAGS_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -39,6 +38,3 @@ namespace scene
|
|||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_MATERIAL_PROPS_H_INCLUDED__
|
||||
#define __E_MATERIAL_PROPS_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -81,7 +80,3 @@ namespace video
|
|||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif // __E_MATERIAL_PROPS_H_INCLUDED__
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_MATERIAL_TYPES_H_INCLUDED__
|
||||
#define __E_MATERIAL_TYPES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrTypes.h"
|
||||
|
||||
|
@ -59,14 +58,13 @@ namespace video
|
|||
};
|
||||
|
||||
//! Array holding the built in material type names
|
||||
const char* const sBuiltInMaterialTypeNames[] =
|
||||
{
|
||||
const char *const sBuiltInMaterialTypeNames[] = {
|
||||
"solid",
|
||||
"trans_alphach",
|
||||
"trans_alphach_ref",
|
||||
"trans_vertex_alpha",
|
||||
"onetexture_blend",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
constexpr u32 numBuiltInMaterials =
|
||||
|
@ -74,7 +72,3 @@ namespace video
|
|||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif // __E_MATERIAL_TYPES_H_INCLUDED__
|
||||
|
||||
|
|
|
@ -1,65 +0,0 @@
|
|||
// Copyright (C) 2002-2012 Nikolaus Gebhardt
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_MESH_WRITER_ENUMS_H_INCLUDED__
|
||||
#define __E_MESH_WRITER_ENUMS_H_INCLUDED__
|
||||
|
||||
#include "irrTypes.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace scene
|
||||
{
|
||||
|
||||
//! An enumeration for all supported types of built-in mesh writers
|
||||
/** A scene mesh writers is represented by a four character code
|
||||
such as 'irrm' or 'coll' instead of simple numbers, to avoid
|
||||
name clashes with external mesh writers.*/
|
||||
enum EMESH_WRITER_TYPE
|
||||
{
|
||||
//! Irrlicht native mesh writer, for static .irrmesh files.
|
||||
EMWT_IRR_MESH = MAKE_IRR_ID('i','r','r','m'),
|
||||
|
||||
//! COLLADA mesh writer for .dae and .xml files
|
||||
EMWT_COLLADA = MAKE_IRR_ID('c','o','l','l'),
|
||||
|
||||
//! STL mesh writer for .stl files
|
||||
EMWT_STL = MAKE_IRR_ID('s','t','l',0),
|
||||
|
||||
//! OBJ mesh writer for .obj files
|
||||
EMWT_OBJ = MAKE_IRR_ID('o','b','j',0),
|
||||
|
||||
//! PLY mesh writer for .ply files
|
||||
EMWT_PLY = MAKE_IRR_ID('p','l','y',0),
|
||||
|
||||
//! B3D mesh writer, for static .b3d files
|
||||
EMWT_B3D = MAKE_IRR_ID('b', '3', 'd', 0)
|
||||
};
|
||||
|
||||
|
||||
//! flags configuring mesh writing
|
||||
enum E_MESH_WRITER_FLAGS
|
||||
{
|
||||
//! no writer flags
|
||||
EMWF_NONE = 0,
|
||||
|
||||
//! write lightmap textures out if possible
|
||||
//! Currently not used by any Irrlicht mesh-writer
|
||||
// (Note: User meshwriters can still use it)
|
||||
EMWF_WRITE_LIGHTMAPS = 0x1,
|
||||
|
||||
//! write in a way that consumes less disk space
|
||||
// (Note: Mainly there for user meshwriters)
|
||||
EMWF_WRITE_COMPRESSED = 0x2,
|
||||
|
||||
//! write in binary format rather than text
|
||||
EMWF_WRITE_BINARY = 0x4
|
||||
};
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif // __E_MESH_WRITER_ENUMS_H_INCLUDED__
|
||||
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_PRIMITIVE_TYPES_H_INCLUDED__
|
||||
#define __E_PRIMITIVE_TYPES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -42,6 +41,3 @@ namespace scene
|
|||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_READ_FILE_TYPES_H_INCLUDED__
|
||||
#define __E_READ_FILE_TYPES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrTypes.h"
|
||||
|
||||
|
@ -29,6 +28,3 @@ namespace io
|
|||
};
|
||||
} // end namespace io
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __E_SCENE_NODE_TYPES_H_INCLUDED__
|
||||
#define __E_SCENE_NODE_TYPES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrTypes.h"
|
||||
|
||||
|
@ -46,11 +45,5 @@ namespace scene
|
|||
ESNT_ANY = MAKE_IRR_ID('a', 'n', 'y', '_')
|
||||
};
|
||||
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#ifndef __E_SHADER_TYPES_H_INCLUDED__
|
||||
#define __E_SHADER_TYPES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrTypes.h"
|
||||
|
||||
|
@ -82,9 +81,5 @@ const c8* const GEOMETRY_SHADER_TYPE_NAMES[] = {
|
|||
"gs_4_0",
|
||||
0};
|
||||
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif // __E_SHADER_TYPES_H_INCLUDED__
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#ifndef __E_VERTEX_ATTRIBUTES_H_INCLUDED__
|
||||
#define __E_VERTEX_ATTRIBUTES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -20,8 +19,7 @@ enum E_VERTEX_ATTRIBUTES
|
|||
};
|
||||
|
||||
//! Array holding the built in vertex attribute names
|
||||
const char* const sBuiltInVertexAttributeNames[] =
|
||||
{
|
||||
const char *const sBuiltInVertexAttributeNames[] = {
|
||||
"inVertexPosition",
|
||||
"inVertexNormal",
|
||||
"inVertexColor",
|
||||
|
@ -29,10 +27,8 @@ const char* const sBuiltInVertexAttributeNames[] =
|
|||
"inTexCoord1",
|
||||
"inVertexTangent",
|
||||
"inVertexBinormal",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif //__E_VERTEX_ATTRIBUTES_H_INCLUDED__
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_ANIMATED_MESH_H_INCLUDED__
|
||||
#define __I_ANIMATED_MESH_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "aabbox3d.h"
|
||||
#include "IMesh.h"
|
||||
|
@ -20,7 +19,6 @@ namespace scene
|
|||
class IAnimatedMesh : public IMesh
|
||||
{
|
||||
public:
|
||||
|
||||
//! Gets the frame count of the animated mesh.
|
||||
/** Note that the play-time is usually getFrameCount()-1 as it stops as soon as the last frame-key is reached.
|
||||
\return The amount of frames. If the amount is 1,
|
||||
|
@ -69,6 +67,3 @@ namespace scene
|
|||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_ANIMATED_MESH_SCENE_NODE_H_INCLUDED__
|
||||
#define __I_ANIMATED_MESH_SCENE_NODE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "ISceneNode.h"
|
||||
#include "IBoneSceneNode.h"
|
||||
|
@ -25,7 +24,6 @@ namespace scene
|
|||
EJUOR_CONTROL
|
||||
};
|
||||
|
||||
|
||||
class IAnimatedMeshSceneNode;
|
||||
|
||||
//! Callback interface for catching events of ended animations.
|
||||
|
@ -36,7 +34,6 @@ namespace scene
|
|||
class IAnimationEndCallBack : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Will be called when the animation playback has ended.
|
||||
/** See IAnimatedMeshSceneNode::setAnimationEndCallback for
|
||||
more information.
|
||||
|
@ -48,13 +45,12 @@ namespace scene
|
|||
class IAnimatedMeshSceneNode : public ISceneNode
|
||||
{
|
||||
public:
|
||||
|
||||
//! Constructor
|
||||
IAnimatedMeshSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id,
|
||||
const core::vector3df &position = core::vector3df(0, 0, 0),
|
||||
const core::vector3df &rotation = core::vector3df(0, 0, 0),
|
||||
const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f))
|
||||
: ISceneNode(parent, mgr, id, position, rotation, scale) {}
|
||||
const core::vector3df &scale = core::vector3df(1.0f, 1.0f, 1.0f)) :
|
||||
ISceneNode(parent, mgr, id, position, rotation, scale) {}
|
||||
|
||||
//! Destructor
|
||||
virtual ~IAnimatedMeshSceneNode() {}
|
||||
|
@ -167,11 +163,7 @@ namespace scene
|
|||
\param newManager An optional new scene manager.
|
||||
\return The newly created clone of this node. */
|
||||
virtual ISceneNode *clone(ISceneNode *newParent = 0, ISceneManager *newManager = 0) = 0;
|
||||
|
||||
};
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_ATTRIBUTES_H_INCLUDED__
|
||||
#define __I_ATTRIBUTES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "EAttributes.h"
|
||||
|
@ -24,7 +23,6 @@ namespace io
|
|||
class IAttributes : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Returns amount of attributes in this collection of attributes.
|
||||
virtual u32 getAttributeCount() const = 0;
|
||||
|
||||
|
@ -49,7 +47,6 @@ public:
|
|||
//! Removes all attributes
|
||||
virtual void clear() = 0;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Integer Attribute
|
||||
|
@ -100,7 +97,6 @@ public:
|
|||
//! Sets an attribute as float value
|
||||
virtual void setAttribute(s32 index, f32 value) = 0;
|
||||
|
||||
|
||||
/*
|
||||
Bool Attribute
|
||||
*/
|
||||
|
@ -123,10 +119,7 @@ public:
|
|||
|
||||
//! Sets an attribute as boolean value
|
||||
virtual void setAttribute(s32 index, bool value) = 0;
|
||||
|
||||
};
|
||||
|
||||
} // end namespace io
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_BILLBOARD_SCENE_NODE_H_INCLUDED__
|
||||
#define __I_BILLBOARD_SCENE_NODE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "ISceneNode.h"
|
||||
|
||||
|
@ -22,11 +21,10 @@ lensflares, particles and things like that.
|
|||
class IBillboardSceneNode : public ISceneNode
|
||||
{
|
||||
public:
|
||||
|
||||
//! Constructor
|
||||
IBillboardSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id,
|
||||
const core::vector3df& position = core::vector3df(0,0,0))
|
||||
: ISceneNode(parent, mgr, id, position) {}
|
||||
const core::vector3df &position = core::vector3df(0, 0, 0)) :
|
||||
ISceneNode(parent, mgr, id, position) {}
|
||||
|
||||
//! Sets the size of the billboard, making it rectangular.
|
||||
virtual void setSize(const core::dimension2d<f32> &size) = 0;
|
||||
|
@ -90,7 +88,3 @@ public:
|
|||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_BONE_SCENE_NODE_H_INCLUDED__
|
||||
#define __I_BONE_SCENE_NODE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "ISceneNode.h"
|
||||
|
||||
|
@ -41,21 +40,18 @@ namespace scene
|
|||
};
|
||||
|
||||
//! Names for bone animation modes
|
||||
const c8* const BoneAnimationModeNames[] =
|
||||
{
|
||||
const c8 *const BoneAnimationModeNames[] = {
|
||||
"automatic",
|
||||
"animated",
|
||||
"unanimated",
|
||||
0,
|
||||
};
|
||||
|
||||
|
||||
//! Interface for bones used for skeletal animation.
|
||||
/** Used with ISkinnedMesh and IAnimatedMeshSceneNode. */
|
||||
class IBoneSceneNode : public ISceneNode
|
||||
{
|
||||
public:
|
||||
|
||||
IBoneSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id = -1) :
|
||||
ISceneNode(parent, mgr, id), positionHint(-1), scaleHint(-1), rotationHint(-1) {}
|
||||
|
||||
|
@ -96,9 +92,5 @@ namespace scene
|
|||
s32 rotationHint;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_CAMERA_SCENE_NODE_H_INCLUDED__
|
||||
#define __I_CAMERA_SCENE_NODE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "ISceneNode.h"
|
||||
#include "IEventReceiver.h"
|
||||
|
@ -23,13 +22,13 @@ namespace scene
|
|||
class ICameraSceneNode : public ISceneNode, public IEventReceiver
|
||||
{
|
||||
public:
|
||||
|
||||
//! Constructor
|
||||
ICameraSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id,
|
||||
const core::vector3df &position = core::vector3df(0, 0, 0),
|
||||
const core::vector3df &rotation = core::vector3df(0, 0, 0),
|
||||
const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f))
|
||||
: ISceneNode(parent, mgr, id, position, rotation, scale), IsOrthogonal(false) {}
|
||||
const core::vector3df &scale = core::vector3df(1.0f, 1.0f, 1.0f)) :
|
||||
ISceneNode(parent, mgr, id, position, rotation, scale),
|
||||
IsOrthogonal(false) {}
|
||||
|
||||
//! Sets the projection matrix of the camera.
|
||||
/** The core::matrix4 class has some methods to build a
|
||||
|
@ -173,7 +172,6 @@ namespace scene
|
|||
virtual bool getTargetAndRotationBinding(void) const = 0;
|
||||
|
||||
protected:
|
||||
|
||||
void cloneMembers(const ICameraSceneNode *toCopyFrom)
|
||||
{
|
||||
IsOrthogonal = toCopyFrom->IsOrthogonal;
|
||||
|
@ -184,6 +182,3 @@ namespace scene
|
|||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -57,5 +57,3 @@ namespace video
|
|||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_CURSOR_CONTROL_H_INCLUDED__
|
||||
#define __I_CURSOR_CONTROL_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "position2d.h"
|
||||
|
@ -42,8 +41,7 @@ namespace gui
|
|||
};
|
||||
|
||||
//! Names for ECURSOR_ICON
|
||||
const c8* const GUICursorIconNames[ECI_COUNT+1] =
|
||||
{
|
||||
const c8 *const GUICursorIconNames[ECI_COUNT + 1] = {
|
||||
"normal",
|
||||
"cross",
|
||||
"hand",
|
||||
|
@ -57,19 +55,19 @@ namespace gui
|
|||
"sizens",
|
||||
"sizewe",
|
||||
"sizeup",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
//! structure used to set sprites as cursors.
|
||||
struct SCursorSprite
|
||||
{
|
||||
SCursorSprite()
|
||||
: SpriteBank(0), SpriteId(-1)
|
||||
SCursorSprite() :
|
||||
SpriteBank(0), SpriteId(-1)
|
||||
{
|
||||
}
|
||||
|
||||
SCursorSprite( gui::IGUISpriteBank * spriteBank, s32 spriteId, const core::position2d<s32> &hotspot=(core::position2d<s32>(0,0)) )
|
||||
: SpriteBank(spriteBank), SpriteId(spriteId), HotSpot(hotspot)
|
||||
SCursorSprite(gui::IGUISpriteBank *spriteBank, s32 spriteId, const core::position2d<s32> &hotspot = (core::position2d<s32>(0, 0))) :
|
||||
SpriteBank(spriteBank), SpriteId(spriteId), HotSpot(hotspot)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -97,7 +95,6 @@ namespace gui
|
|||
class ICursorControl : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Changes the visible state of the mouse cursor.
|
||||
/** \param visible: The new visible state. If true, the cursor will be visible,
|
||||
if false, it will be invisible. */
|
||||
|
@ -194,9 +191,5 @@ namespace gui
|
|||
virtual ECURSOR_PLATFORM_BEHAVIOR getPlatformBehavior() const { return ECPB_NONE; }
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_DUMMY_TRANSFORMATION_SCENE_NODE_H_INCLUDED__
|
||||
#define __I_DUMMY_TRANSFORMATION_SCENE_NODE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "ISceneNode.h"
|
||||
|
||||
|
@ -23,10 +22,9 @@ joint scene nodes when playing skeletal animations.
|
|||
class IDummyTransformationSceneNode : public ISceneNode
|
||||
{
|
||||
public:
|
||||
|
||||
//! Constructor
|
||||
IDummyTransformationSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id)
|
||||
: ISceneNode(parent, mgr, id) {}
|
||||
IDummyTransformationSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id) :
|
||||
ISceneNode(parent, mgr, id) {}
|
||||
|
||||
//! Returns a reference to the current relative transformation matrix.
|
||||
/** This is the matrix, this scene node uses instead of scale, translation
|
||||
|
@ -36,7 +34,3 @@ public:
|
|||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_EVENT_RECEIVER_H_INCLUDED__
|
||||
#define __I_EVENT_RECEIVER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "ILogger.h"
|
||||
#include "Keycodes.h"
|
||||
|
@ -309,7 +308,6 @@ namespace irr
|
|||
};
|
||||
} // end namespace gui
|
||||
|
||||
|
||||
//! SEvents hold information about an event. See irr::IEventReceiver for details on event handling.
|
||||
struct SEvent
|
||||
{
|
||||
|
@ -324,7 +322,6 @@ struct SEvent
|
|||
|
||||
//! Type of GUI Event
|
||||
gui::EGUI_EVENT_TYPE EventType;
|
||||
|
||||
};
|
||||
|
||||
//! Any kind of mouse event.
|
||||
|
@ -573,7 +570,6 @@ struct SEvent
|
|||
struct SSystemEvent SystemEvent;
|
||||
struct SApplicationEvent ApplicationEvent;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
//! Interface of an object which can receive events.
|
||||
|
@ -585,7 +581,6 @@ path it takes through the system. */
|
|||
class IEventReceiver
|
||||
{
|
||||
public:
|
||||
|
||||
//! Destructor
|
||||
virtual ~IEventReceiver() {}
|
||||
|
||||
|
@ -598,7 +593,6 @@ public:
|
|||
virtual bool OnEvent(const SEvent &event) = 0;
|
||||
};
|
||||
|
||||
|
||||
//! Information on a joystick, returned from @ref irr::IrrlichtDevice::activateJoysticks()
|
||||
struct SJoystickInfo
|
||||
{
|
||||
|
@ -635,8 +629,4 @@ struct SJoystickInfo
|
|||
} PovHat;
|
||||
}; // struct SJoystickInfo
|
||||
|
||||
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_FILE_ARCHIVE_H_INCLUDED__
|
||||
#define __I_FILE_ARCHIVE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReadFile.h"
|
||||
#include "IFileList.h"
|
||||
|
@ -30,21 +29,6 @@ enum E_FILE_ARCHIVE_TYPE
|
|||
//! A gzip archive
|
||||
EFAT_GZIP = MAKE_IRR_ID('g', 'z', 'i', 'p'),
|
||||
|
||||
//! A virtual directory
|
||||
EFAT_FOLDER = MAKE_IRR_ID('f','l','d','r'),
|
||||
|
||||
//! An ID Software PAK archive
|
||||
EFAT_PAK = MAKE_IRR_ID('P','A','K', 0),
|
||||
|
||||
//! A Nebula Device archive
|
||||
EFAT_NPK = MAKE_IRR_ID('N','P','K', 0),
|
||||
|
||||
//! A Tape ARchive
|
||||
EFAT_TAR = MAKE_IRR_ID('T','A','R', 0),
|
||||
|
||||
//! A wad Archive, Quake2, Halflife
|
||||
EFAT_WAD = MAKE_IRR_ID('W','A','D', 0),
|
||||
|
||||
//! An Android asset file archive
|
||||
EFAT_ANDROID_ASSET = MAKE_IRR_ID('A', 'S', 'S', 'E'),
|
||||
|
||||
|
@ -56,7 +40,6 @@ enum E_FILE_ARCHIVE_TYPE
|
|||
class IFileArchive : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Opens a file based on its name
|
||||
/** Creates and returns a new IReadFile for a file in the archive.
|
||||
\param filename The file to open
|
||||
|
@ -140,9 +123,5 @@ public:
|
|||
virtual IFileArchive *createArchive(io::IReadFile *file, bool ignoreCase, bool ignorePaths) const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace io
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_FILE_LIST_H_INCLUDED__
|
||||
#define __I_FILE_LIST_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "path.h"
|
||||
|
@ -88,7 +87,3 @@ public:
|
|||
|
||||
} // end namespace irr
|
||||
} // end namespace io
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_FILE_SYSTEM_H_INCLUDED__
|
||||
#define __I_FILE_SYSTEM_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "IFileArchive.h"
|
||||
|
@ -22,7 +21,6 @@ class IWriteFile;
|
|||
class IFileList;
|
||||
class IAttributes;
|
||||
|
||||
|
||||
//! The FileSystem manages files and archives and provides access to them.
|
||||
/** It manages where files are, so that modules which use the the IO do not
|
||||
need to know where every file is located. A file could be in a .zip-Archive or
|
||||
|
@ -30,7 +28,6 @@ as file on disk, using the IFileSystem makes no difference to this. */
|
|||
class IFileSystem : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Opens a file for read access.
|
||||
/** \param filename: Name of file to open.
|
||||
\return Pointer to the created file interface.
|
||||
|
@ -78,7 +75,6 @@ public:
|
|||
*/
|
||||
virtual IWriteFile *createMemoryWriteFile(void *memory, s32 len, const path &fileName, bool deleteMemoryWhenDropped = false) = 0;
|
||||
|
||||
|
||||
//! Opens a file for write access.
|
||||
/** \param filename: Name of file to open.
|
||||
\param append: If the file already exist, all write operations are
|
||||
|
@ -265,9 +261,5 @@ public:
|
|||
virtual bool existFile(const path &filename) const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace io
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__
|
||||
#define __I_GPU_PROGRAMMING_SERVICES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "EShaderTypes.h"
|
||||
#include "EMaterialTypes.h"
|
||||
|
@ -28,7 +27,6 @@ class IShaderConstantSetCallBack;
|
|||
class IGPUProgrammingServices
|
||||
{
|
||||
public:
|
||||
|
||||
//! Destructor
|
||||
virtual ~IGPUProgrammingServices() {}
|
||||
|
||||
|
@ -367,9 +365,5 @@ public:
|
|||
virtual void deleteShaderMaterial(s32 material) = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_BUTTON_H_INCLUDED__
|
||||
#define __I_GUI_BUTTON_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
|
||||
|
@ -46,8 +45,7 @@ namespace gui
|
|||
};
|
||||
|
||||
//! Names for gui button state icons
|
||||
const c8* const GUIButtonStateNames[EGBS_COUNT+1] =
|
||||
{
|
||||
const c8 *const GUIButtonStateNames[EGBS_COUNT + 1] = {
|
||||
"buttonUp",
|
||||
"buttonDown",
|
||||
"buttonMouseOver",
|
||||
|
@ -55,7 +53,7 @@ namespace gui
|
|||
"buttonFocused",
|
||||
"buttonNotFocused",
|
||||
"buttonDisabled",
|
||||
0 // count
|
||||
0, // count
|
||||
};
|
||||
|
||||
//! State of buttons used for drawing texture images.
|
||||
|
@ -88,8 +86,7 @@ namespace gui
|
|||
};
|
||||
|
||||
//! Names for gui button image states
|
||||
const c8* const GUIButtonImageStateNames[EGBIS_COUNT+1] =
|
||||
{
|
||||
const c8 *const GUIButtonImageStateNames[EGBIS_COUNT + 1] = {
|
||||
"Image", // not "ImageUp" as it otherwise breaks serialization of old files
|
||||
"ImageUpOver",
|
||||
"ImageUpFocused",
|
||||
|
@ -99,7 +96,7 @@ namespace gui
|
|||
"ImageDownFocused",
|
||||
"ImageDownFocusedOver",
|
||||
"ImageDisabled",
|
||||
0 // count
|
||||
0, // count
|
||||
};
|
||||
|
||||
//! GUI Button interface.
|
||||
|
@ -109,10 +106,9 @@ namespace gui
|
|||
class IGUIButton : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIButton(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_BUTTON, environment, parent, id, rectangle) {}
|
||||
IGUIButton(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_BUTTON, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Sets another skin independent font.
|
||||
/** If this is set to zero, the button uses the font of the skin.
|
||||
|
@ -188,7 +184,6 @@ namespace gui
|
|||
\param sourceRect: Position in the texture, where the image is located */
|
||||
virtual void setPressedImage(video::ITexture *image, const core::rect<s32> &sourceRect) = 0;
|
||||
|
||||
|
||||
//! Sets the sprite bank used by the button
|
||||
/** NOTE: The spritebank itself is _not_ serialized so far. The sprites are serialized.
|
||||
Which means after loading the gui you still have to set the spritebank manually. */
|
||||
|
@ -260,9 +255,5 @@ namespace gui
|
|||
virtual bool getClickControlState() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_CHECKBOX_H_INCLUDED__
|
||||
#define __I_GUI_CHECKBOX_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
|
||||
|
@ -19,10 +18,9 @@ namespace gui
|
|||
class IGUICheckBox : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUICheckBox(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_CHECK_BOX, environment, parent, id, rectangle) {}
|
||||
IGUICheckBox(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_CHECK_BOX, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Set if box is checked.
|
||||
virtual void setChecked(bool checked) = 0;
|
||||
|
@ -43,11 +41,7 @@ namespace gui
|
|||
//! Checks if border drawing is enabled
|
||||
/** \return true if border drawing is enabled, false otherwise */
|
||||
virtual bool isDrawBorderEnabled() const = 0;
|
||||
|
||||
};
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_COMBO_BOX_H_INCLUDED__
|
||||
#define __I_GUI_COMBO_BOX_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
|
||||
|
@ -19,10 +18,9 @@ namespace gui
|
|||
class IGUIComboBox : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIComboBox(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_COMBO_BOX, environment, parent, id, rectangle) {}
|
||||
IGUIComboBox(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_COMBO_BOX, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Returns amount of items in box
|
||||
virtual u32 getItemCount() const = 0;
|
||||
|
@ -70,9 +68,5 @@ namespace gui
|
|||
virtual u32 getMaxSelectionRows() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_EDIT_BOX_H_INCLUDED__
|
||||
#define __I_GUI_EDIT_BOX_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
#include "SColor.h"
|
||||
|
@ -23,10 +22,9 @@ namespace gui
|
|||
class IGUIEditBox : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIEditBox(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_EDIT_BOX, environment, parent, id, rectangle) {}
|
||||
IGUIEditBox(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_EDIT_BOX, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Sets another skin independent font.
|
||||
/** If this is set to zero, the button uses the font of the skin.
|
||||
|
@ -149,9 +147,5 @@ namespace gui
|
|||
virtual irr::u32 getCursorBlinkTime() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_ELEMENT_H_INCLUDED__
|
||||
#define __I_GUI_ELEMENT_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "rect.h"
|
||||
|
@ -26,11 +25,11 @@ namespace gui
|
|||
class IGUIElement : virtual public IReferenceCounted, public IEventReceiver
|
||||
{
|
||||
public:
|
||||
|
||||
//! Constructor
|
||||
IGUIElement(EGUI_ELEMENT_TYPE type, IGUIEnvironment *environment, IGUIElement *parent,
|
||||
s32 id, const core::rect<s32>& rectangle)
|
||||
: Parent(0), RelativeRect(rectangle), AbsoluteRect(rectangle),
|
||||
s32 id, const core::rect<s32> &rectangle) :
|
||||
Parent(0),
|
||||
RelativeRect(rectangle), AbsoluteRect(rectangle),
|
||||
AbsoluteClippingRect(rectangle), DesiredRect(rectangle),
|
||||
MaxSize(0, 0), MinSize(1, 1), IsVisible(true), IsEnabled(true),
|
||||
IsSubElement(false), NoClip(false), ID(id), IsTabStop(false), TabOrder(-1), IsTabGroup(false),
|
||||
|
@ -42,14 +41,12 @@ public:
|
|||
#endif
|
||||
|
||||
// if we were given a parent to attach to
|
||||
if (parent)
|
||||
{
|
||||
if (parent) {
|
||||
parent->addChildToEnd(this);
|
||||
recalculateAbsolutePosition(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! Destructor
|
||||
virtual ~IGUIElement()
|
||||
{
|
||||
|
@ -59,7 +56,6 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//! Returns parent of this element.
|
||||
IGUIElement *getParent() const
|
||||
{
|
||||
|
@ -72,13 +68,11 @@ public:
|
|||
return RelativeRect;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the relative rectangle of this element.
|
||||
/** \param r The absolute position to set */
|
||||
void setRelativePosition(const core::rect<s32> &r)
|
||||
{
|
||||
if (Parent)
|
||||
{
|
||||
if (Parent) {
|
||||
const core::rect<s32> &r2 = Parent->getAbsolutePosition();
|
||||
|
||||
core::dimension2df d((f32)(r2.getSize().Width), (f32)(r2.getSize().Height));
|
||||
|
@ -107,7 +101,6 @@ public:
|
|||
setRelativePosition(rectangle);
|
||||
}
|
||||
|
||||
|
||||
//! Sets the relative rectangle of this element as a proportion of its parent's area.
|
||||
/** \note This method used to be 'void setRelativePosition(const core::rect<f32>& r)'
|
||||
\param r The rectangle to set, interpreted as a proportion of the parent's area.
|
||||
|
@ -131,21 +124,18 @@ public:
|
|||
updateAbsolutePosition();
|
||||
}
|
||||
|
||||
|
||||
//! Gets the absolute rectangle of this element
|
||||
core::rect<s32> getAbsolutePosition() const
|
||||
{
|
||||
return AbsoluteRect;
|
||||
}
|
||||
|
||||
|
||||
//! Returns the visible area of the element.
|
||||
core::rect<s32> getAbsoluteClippingRect() const
|
||||
{
|
||||
return AbsoluteClippingRect;
|
||||
}
|
||||
|
||||
|
||||
//! Sets whether the element will ignore its parent's clipping rectangle
|
||||
/** \param noClip If true, the element will not be clipped by its parent's clipping rectangle. */
|
||||
void setNotClipped(bool noClip)
|
||||
|
@ -154,7 +144,6 @@ public:
|
|||
updateAbsolutePosition();
|
||||
}
|
||||
|
||||
|
||||
//! Gets whether the element will ignore its parent's clipping rectangle
|
||||
/** \return true if the element is not clipped by its parent's clipping rectangle. */
|
||||
bool isNotClipped() const
|
||||
|
@ -162,7 +151,6 @@ public:
|
|||
return NoClip;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the maximum size allowed for this element
|
||||
/** If set to 0,0, there is no maximum size */
|
||||
void setMaxSize(core::dimension2du size)
|
||||
|
@ -171,7 +159,6 @@ public:
|
|||
updateAbsolutePosition();
|
||||
}
|
||||
|
||||
|
||||
//! Sets the minimum size allowed for this element
|
||||
void setMinSize(core::dimension2du size)
|
||||
{
|
||||
|
@ -183,7 +170,6 @@ public:
|
|||
updateAbsolutePosition();
|
||||
}
|
||||
|
||||
|
||||
//! The alignment defines how the borders of this element will be positioned when the parent element is resized.
|
||||
void setAlignment(EGUI_ALIGNMENT left, EGUI_ALIGNMENT right, EGUI_ALIGNMENT top, EGUI_ALIGNMENT bottom)
|
||||
{
|
||||
|
@ -192,8 +178,7 @@ public:
|
|||
AlignTop = top;
|
||||
AlignBottom = bottom;
|
||||
|
||||
if (Parent)
|
||||
{
|
||||
if (Parent) {
|
||||
core::rect<s32> r(Parent->getAbsolutePosition());
|
||||
|
||||
core::dimension2df d((f32)r.getSize().Width, (f32)r.getSize().Height);
|
||||
|
@ -239,13 +224,11 @@ public:
|
|||
recalculateAbsolutePosition(false);
|
||||
|
||||
// update all children
|
||||
for (auto child : Children)
|
||||
{
|
||||
for (auto child : Children) {
|
||||
child->updateAbsolutePosition();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! Returns the topmost GUI element at the specific position.
|
||||
/**
|
||||
This will check this GUI element and all of its descendants, so it
|
||||
|
@ -262,14 +245,12 @@ public:
|
|||
{
|
||||
IGUIElement *target = 0;
|
||||
|
||||
if (isVisible())
|
||||
{
|
||||
if (isVisible()) {
|
||||
// we have to search from back to front, because later children
|
||||
// might be drawn over the top of earlier ones.
|
||||
auto it = Children.rbegin();
|
||||
auto ie = Children.rend();
|
||||
while (it != ie)
|
||||
{
|
||||
while (it != ie) {
|
||||
target = (*it)->getElementFromPoint(point);
|
||||
if (target)
|
||||
return target;
|
||||
|
@ -284,7 +265,6 @@ public:
|
|||
return target;
|
||||
}
|
||||
|
||||
|
||||
//! Returns true if a point is within this element.
|
||||
/** Elements with a shape other than a rectangle should override this method */
|
||||
virtual bool isPointInside(const core::position2d<s32> &point) const
|
||||
|
@ -292,12 +272,10 @@ public:
|
|||
return AbsoluteClippingRect.isPointInside(point);
|
||||
}
|
||||
|
||||
|
||||
//! Adds a GUI element as new child of this element.
|
||||
virtual void addChild(IGUIElement *child)
|
||||
{
|
||||
if ( child && child != this )
|
||||
{
|
||||
if (child && child != this) {
|
||||
addChildToEnd(child);
|
||||
child->updateAbsolutePosition();
|
||||
}
|
||||
|
@ -313,7 +291,8 @@ public:
|
|||
}
|
||||
|
||||
//! Removes all children.
|
||||
virtual void removeAllChildren() {
|
||||
virtual void removeAllChildren()
|
||||
{
|
||||
while (!Children.empty()) {
|
||||
auto child = Children.back();
|
||||
child->remove();
|
||||
|
@ -327,36 +306,30 @@ public:
|
|||
Parent->removeChild(this);
|
||||
}
|
||||
|
||||
|
||||
//! Draws the element and its children.
|
||||
virtual void draw()
|
||||
{
|
||||
if ( isVisible() )
|
||||
{
|
||||
if (isVisible()) {
|
||||
for (auto child : Children)
|
||||
child->draw();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! animate the element and its children.
|
||||
virtual void OnPostRender(u32 timeMs)
|
||||
{
|
||||
if ( isVisible() )
|
||||
{
|
||||
if (isVisible()) {
|
||||
for (auto child : Children)
|
||||
child->OnPostRender(timeMs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! Moves this element.
|
||||
virtual void move(core::position2d<s32> absoluteMovement)
|
||||
{
|
||||
setRelativePosition(DesiredRect + absoluteMovement);
|
||||
}
|
||||
|
||||
|
||||
//! Returns true if element is visible.
|
||||
virtual bool isVisible() const
|
||||
{
|
||||
|
@ -383,14 +356,12 @@ public:
|
|||
IsVisible = visible;
|
||||
}
|
||||
|
||||
|
||||
//! Returns true if this element was created as part of its parent control
|
||||
virtual bool isSubElement() const
|
||||
{
|
||||
return IsSubElement;
|
||||
}
|
||||
|
||||
|
||||
//! Sets whether this control was created as part of its parent.
|
||||
/** For example, it is true when a scrollbar is part of a listbox.
|
||||
SubElements are not saved to disk when calling guiEnvironment->saveGUI() */
|
||||
|
@ -399,7 +370,6 @@ public:
|
|||
IsSubElement = subElement;
|
||||
}
|
||||
|
||||
|
||||
//! If set to true, the focus will visit this element when using the tab key to cycle through elements.
|
||||
/** If this element is a tab group (see isTabGroup/setTabGroup) then
|
||||
ctrl+tab will be used instead. */
|
||||
|
@ -408,51 +378,43 @@ public:
|
|||
IsTabStop = enable;
|
||||
}
|
||||
|
||||
|
||||
//! Returns true if this element can be focused by navigating with the tab key
|
||||
bool isTabStop() const
|
||||
{
|
||||
return IsTabStop;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the priority of focus when using the tab key to navigate between a group of elements.
|
||||
/** See setTabGroup, isTabGroup and getTabGroup for information on tab groups.
|
||||
Elements with a lower number are focused first */
|
||||
void setTabOrder(s32 index)
|
||||
{
|
||||
// negative = autonumber
|
||||
if (index < 0)
|
||||
{
|
||||
if (index < 0) {
|
||||
TabOrder = 0;
|
||||
IGUIElement *el = getTabGroup();
|
||||
while (IsTabGroup && el && el->Parent)
|
||||
el = el->Parent;
|
||||
|
||||
IGUIElement *first = 0, *closest = 0;
|
||||
if (el)
|
||||
{
|
||||
if (el) {
|
||||
// find the highest element number
|
||||
el->getNextElement(-1, true, IsTabGroup, first, closest, true, true);
|
||||
if (first)
|
||||
{
|
||||
if (first) {
|
||||
TabOrder = first->getTabOrder() + 1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
} else
|
||||
TabOrder = index;
|
||||
}
|
||||
|
||||
|
||||
//! Returns the number in the tab order sequence
|
||||
s32 getTabOrder() const
|
||||
{
|
||||
return TabOrder;
|
||||
}
|
||||
|
||||
|
||||
//! Sets whether this element is a container for a group of elements which can be navigated using the tab key.
|
||||
/** For example, windows are tab groups.
|
||||
Groups can be navigated using ctrl+tab, providing isTabStop is true. */
|
||||
|
@ -461,14 +423,12 @@ public:
|
|||
IsTabGroup = isGroup;
|
||||
}
|
||||
|
||||
|
||||
//! Returns true if this element is a tab group.
|
||||
bool isTabGroup() const
|
||||
{
|
||||
return IsTabGroup;
|
||||
}
|
||||
|
||||
|
||||
//! Returns the container element which holds all elements in this element's tab group.
|
||||
IGUIElement *getTabGroup()
|
||||
{
|
||||
|
@ -480,7 +440,6 @@ public:
|
|||
return ret;
|
||||
}
|
||||
|
||||
|
||||
//! Returns true if element is enabled
|
||||
/** Currently elements do _not_ care about parent-states.
|
||||
So if you want to affect children you have to enable/disable them all.
|
||||
|
@ -494,63 +453,54 @@ public:
|
|||
return IsEnabled;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the enabled state of this element.
|
||||
virtual void setEnabled(bool enabled)
|
||||
{
|
||||
IsEnabled = enabled;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the new caption of this element.
|
||||
virtual void setText(const wchar_t *text)
|
||||
{
|
||||
Text = text;
|
||||
}
|
||||
|
||||
|
||||
//! Returns caption of this element.
|
||||
virtual const wchar_t *getText() const
|
||||
{
|
||||
return Text.c_str();
|
||||
}
|
||||
|
||||
|
||||
//! Sets the new caption of this element.
|
||||
virtual void setToolTipText(const wchar_t *text)
|
||||
{
|
||||
ToolTipText = text;
|
||||
}
|
||||
|
||||
|
||||
//! Returns caption of this element.
|
||||
virtual const core::stringw &getToolTipText() const
|
||||
{
|
||||
return ToolTipText;
|
||||
}
|
||||
|
||||
|
||||
//! Returns id. Can be used to identify the element.
|
||||
virtual s32 getID() const
|
||||
{
|
||||
return ID;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the id of this element
|
||||
virtual void setID(s32 id)
|
||||
{
|
||||
ID = id;
|
||||
}
|
||||
|
||||
|
||||
//! Called if an event happened.
|
||||
bool OnEvent(const SEvent &event) override
|
||||
{
|
||||
return Parent ? Parent->OnEvent(event) : false;
|
||||
}
|
||||
|
||||
|
||||
//! Brings a child to front
|
||||
/** \return True if successful, false if not. */
|
||||
virtual bool bringToFront(IGUIElement *child)
|
||||
|
@ -564,7 +514,6 @@ public:
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
//! Moves a child to the back, so it's siblings are drawn on top of it
|
||||
/** \return True if successful, false if not. */
|
||||
virtual bool sendToBack(IGUIElement *child)
|
||||
|
@ -584,7 +533,6 @@ public:
|
|||
return Children;
|
||||
}
|
||||
|
||||
|
||||
//! Finds the first element with the given id.
|
||||
/** \param id: Id to search for.
|
||||
\param searchchildren: Set this to true, if also children of this
|
||||
|
@ -596,8 +544,7 @@ public:
|
|||
{
|
||||
IGUIElement *e = 0;
|
||||
|
||||
for (auto child : Children)
|
||||
{
|
||||
for (auto child : Children) {
|
||||
if (child->getID() == id)
|
||||
return child;
|
||||
|
||||
|
@ -611,25 +558,21 @@ public:
|
|||
return e;
|
||||
}
|
||||
|
||||
|
||||
//! returns true if the given element is a child of this one.
|
||||
//! \param child: The child element to check
|
||||
bool isMyChild(IGUIElement *child) const
|
||||
{
|
||||
if (!child)
|
||||
return false;
|
||||
do
|
||||
{
|
||||
do {
|
||||
if (child->Parent)
|
||||
child = child->Parent;
|
||||
|
||||
} while (child->Parent && child != this);
|
||||
|
||||
|
||||
return child == this;
|
||||
}
|
||||
|
||||
|
||||
//! searches elements to find the closest next element to tab to
|
||||
/** \param startOrder: The TabOrder of the current element, -1 if none
|
||||
\param reverse: true if searching for a lower number
|
||||
|
@ -652,62 +595,46 @@ public:
|
|||
|
||||
s32 closestOrder, currentOrder;
|
||||
|
||||
while(it != Children.end())
|
||||
{
|
||||
while (it != Children.end()) {
|
||||
// ignore invisible elements and their children
|
||||
if (((*it)->isVisible() || includeInvisible) &&
|
||||
(group == true || (*it)->isTabGroup() == false) )
|
||||
{
|
||||
(group == true || (*it)->isTabGroup() == false)) {
|
||||
// ignore disabled, but children are checked (disabled is currently per element ignoring parent states)
|
||||
if ( (*it)->isEnabled() || includeDisabled )
|
||||
{
|
||||
if ((*it)->isEnabled() || includeDisabled) {
|
||||
// only check tab stops and those with the same group status
|
||||
if ((*it)->isTabStop() && ((*it)->isTabGroup() == group))
|
||||
{
|
||||
if ((*it)->isTabStop() && ((*it)->isTabGroup() == group)) {
|
||||
currentOrder = (*it)->getTabOrder();
|
||||
|
||||
// is this what we're looking for?
|
||||
if (currentOrder == wanted)
|
||||
{
|
||||
if (currentOrder == wanted) {
|
||||
closest = *it;
|
||||
return true;
|
||||
}
|
||||
|
||||
// is it closer than the current closest?
|
||||
if (closest)
|
||||
{
|
||||
if (closest) {
|
||||
closestOrder = closest->getTabOrder();
|
||||
if ( ( reverse && currentOrder > closestOrder && currentOrder < startOrder)
|
||||
||(!reverse && currentOrder < closestOrder && currentOrder > startOrder))
|
||||
{
|
||||
if ((reverse && currentOrder > closestOrder && currentOrder < startOrder) || (!reverse && currentOrder < closestOrder && currentOrder > startOrder)) {
|
||||
closest = *it;
|
||||
}
|
||||
}
|
||||
else
|
||||
if ( (reverse && currentOrder < startOrder) || (!reverse && currentOrder > startOrder) )
|
||||
{
|
||||
} else if ((reverse && currentOrder < startOrder) || (!reverse && currentOrder > startOrder)) {
|
||||
closest = *it;
|
||||
}
|
||||
|
||||
// is it before the current first?
|
||||
if (first)
|
||||
{
|
||||
if (first) {
|
||||
closestOrder = first->getTabOrder();
|
||||
|
||||
if ( (reverse && closestOrder < currentOrder) || (!reverse && closestOrder > currentOrder) )
|
||||
{
|
||||
if ((reverse && closestOrder < currentOrder) || (!reverse && closestOrder > currentOrder)) {
|
||||
first = *it;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
first = *it;
|
||||
}
|
||||
}
|
||||
}
|
||||
// search within children
|
||||
if ((*it)->getNextElement(startOrder, reverse, group, first, closest, includeInvisible, includeDisabled))
|
||||
{
|
||||
if ((*it)->getNextElement(startOrder, reverse, group, first, closest, includeInvisible, includeDisabled)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -716,7 +643,6 @@ public:
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
//! Returns the type of the gui element.
|
||||
/** This is needed for the .NET wrapper but will be used
|
||||
later for serializing and deserializing.
|
||||
|
@ -741,7 +667,6 @@ public:
|
|||
return type == Type;
|
||||
}
|
||||
|
||||
|
||||
//! Returns the type name of the gui element.
|
||||
/** This is needed serializing elements. */
|
||||
virtual const c8 *getTypeName() const
|
||||
|
@ -756,7 +681,6 @@ public:
|
|||
return Name.c_str();
|
||||
}
|
||||
|
||||
|
||||
//! Sets the name of the element.
|
||||
/** \param name New name of the gui element. */
|
||||
virtual void setName(const c8 *name)
|
||||
|
@ -764,7 +688,6 @@ public:
|
|||
Name = name;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the name of the element.
|
||||
/** \param name New name of the gui element. */
|
||||
virtual void setName(const core::stringc &name)
|
||||
|
@ -772,20 +695,17 @@ public:
|
|||
Name = name;
|
||||
}
|
||||
|
||||
|
||||
//! Returns whether the element takes input from the IME
|
||||
virtual bool acceptsIME()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
protected:
|
||||
// not virtual because needed in constructor
|
||||
void addChildToEnd(IGUIElement *child)
|
||||
{
|
||||
if (child)
|
||||
{
|
||||
if (child) {
|
||||
child->grab(); // prevent destruction when removed
|
||||
child->remove(); // remove from old parent
|
||||
child->LastParentRect = getAbsolutePosition();
|
||||
|
@ -796,7 +716,8 @@ protected:
|
|||
|
||||
#ifndef NDEBUG
|
||||
template <typename Iterator>
|
||||
static size_t _fastSetChecksum(Iterator begin, Iterator end) {
|
||||
static size_t _fastSetChecksum(Iterator begin, Iterator end)
|
||||
{
|
||||
std::hash<typename Iterator::value_type> hasher;
|
||||
size_t checksum = 0;
|
||||
for (Iterator it = begin; it != end; ++it) {
|
||||
|
@ -814,8 +735,7 @@ protected:
|
|||
const std::vector<IGUIElement *> &neworder)
|
||||
{
|
||||
assert(_fastSetChecksum(from, to) == _fastSetChecksum(neworder.begin(), neworder.end()));
|
||||
for (auto e : neworder)
|
||||
{
|
||||
for (auto e : neworder) {
|
||||
*from = e;
|
||||
e->ParentPos = from;
|
||||
++from;
|
||||
|
@ -823,7 +743,6 @@ protected:
|
|||
assert(from == to);
|
||||
}
|
||||
|
||||
|
||||
// not virtual because needed in constructor
|
||||
void recalculateAbsolutePosition(bool recursive)
|
||||
{
|
||||
|
@ -831,18 +750,15 @@ protected:
|
|||
core::rect<s32> parentAbsoluteClip;
|
||||
f32 fw = 0.f, fh = 0.f;
|
||||
|
||||
if (Parent)
|
||||
{
|
||||
if (Parent) {
|
||||
parentAbsolute = Parent->AbsoluteRect;
|
||||
|
||||
if (NoClip)
|
||||
{
|
||||
if (NoClip) {
|
||||
IGUIElement *p = this;
|
||||
while (p->Parent)
|
||||
p = p->Parent;
|
||||
parentAbsoluteClip = p->AbsoluteClippingRect;
|
||||
}
|
||||
else
|
||||
} else
|
||||
parentAbsoluteClip = Parent->AbsoluteClippingRect;
|
||||
}
|
||||
|
||||
|
@ -855,8 +771,7 @@ protected:
|
|||
if (AlignTop == EGUIA_SCALE || AlignBottom == EGUIA_SCALE)
|
||||
fh = (f32)parentAbsolute.getHeight();
|
||||
|
||||
switch (AlignLeft)
|
||||
{
|
||||
switch (AlignLeft) {
|
||||
case EGUIA_UPPERLEFT:
|
||||
break;
|
||||
case EGUIA_LOWERRIGHT:
|
||||
|
@ -870,8 +785,7 @@ protected:
|
|||
break;
|
||||
}
|
||||
|
||||
switch (AlignRight)
|
||||
{
|
||||
switch (AlignRight) {
|
||||
case EGUIA_UPPERLEFT:
|
||||
break;
|
||||
case EGUIA_LOWERRIGHT:
|
||||
|
@ -885,8 +799,7 @@ protected:
|
|||
break;
|
||||
}
|
||||
|
||||
switch (AlignTop)
|
||||
{
|
||||
switch (AlignTop) {
|
||||
case EGUIA_UPPERLEFT:
|
||||
break;
|
||||
case EGUIA_LOWERRIGHT:
|
||||
|
@ -900,8 +813,7 @@ protected:
|
|||
break;
|
||||
}
|
||||
|
||||
switch (AlignBottom)
|
||||
{
|
||||
switch (AlignBottom) {
|
||||
case EGUIA_UPPERLEFT:
|
||||
break;
|
||||
case EGUIA_LOWERRIGHT:
|
||||
|
@ -942,18 +854,15 @@ protected:
|
|||
|
||||
LastParentRect = parentAbsolute;
|
||||
|
||||
if ( recursive )
|
||||
{
|
||||
if (recursive) {
|
||||
// update all children
|
||||
for (auto child : Children)
|
||||
{
|
||||
for (auto child : Children) {
|
||||
child->recalculateAbsolutePosition(recursive);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
//! List of all children of this element
|
||||
std::list<IGUIElement *> Children;
|
||||
|
||||
|
@ -1028,9 +937,5 @@ protected:
|
|||
EGUI_ELEMENT_TYPE Type;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_ENVIRONMENT_H_INCLUDED__
|
||||
#define __I_GUI_ENVIRONMENT_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "IGUISkin.h"
|
||||
|
@ -59,7 +58,6 @@ class IGUIWindow;
|
|||
class IGUIEnvironment : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Draws all gui elements by traversing the GUI environment starting at the root node.
|
||||
/** \param When true ensure the GuiEnvironment (aka the RootGUIElement) has the same size as the current driver screensize.
|
||||
Can be set to false to control that size yourself, p.E when not the full size should be used for UI. */
|
||||
|
@ -153,7 +151,6 @@ public:
|
|||
See IReferenceCounted::drop() for more information. */
|
||||
virtual IGUISkin *createSkin(EGUI_SKIN_TYPE type) = 0;
|
||||
|
||||
|
||||
//! Creates the image list from the given texture.
|
||||
/** \param texture Texture to split into images
|
||||
\param imageSize Dimension of each image
|
||||
|
@ -413,9 +410,5 @@ public:
|
|||
virtual void addToDeletionQueue(IGUIElement *element) = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_FILE_OPEN_DIALOG_H_INCLUDED__
|
||||
#define __I_GUI_FILE_OPEN_DIALOG_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
#include "path.h"
|
||||
|
@ -24,10 +23,9 @@ namespace gui
|
|||
class IGUIFileOpenDialog : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIFileOpenDialog(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_FILE_OPEN_DIALOG, environment, parent, id, rectangle) {}
|
||||
IGUIFileOpenDialog(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_FILE_OPEN_DIALOG, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Returns the filename of the selected file converted to wide characters. Returns NULL if no file was selected.
|
||||
virtual const wchar_t *getFileName() const = 0;
|
||||
|
@ -42,9 +40,5 @@ namespace gui
|
|||
virtual const wchar_t *getDirectoryNameW() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_FONT_H_INCLUDED__
|
||||
#define __I_GUI_FONT_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "SColor.h"
|
||||
|
@ -39,7 +38,6 @@ enum EGUI_FONT_TYPE
|
|||
class IGUIFont : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Draws some text and clips it to the specified rectangle if wanted.
|
||||
/** \param text: Text to draw
|
||||
\param position: Rectangle specifying position where to draw the text.
|
||||
|
@ -99,6 +97,3 @@ public:
|
|||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_FONT_BITMAP_H_INCLUDED__
|
||||
#define __I_GUI_FONT_BITMAP_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIFont.h"
|
||||
|
||||
|
@ -17,7 +16,6 @@ namespace gui
|
|||
class IGUIFontBitmap : public IGUIFont
|
||||
{
|
||||
public:
|
||||
|
||||
//! Returns the type of this font
|
||||
EGUI_FONT_TYPE getType() const override { return EGFT_BITMAP; }
|
||||
|
||||
|
@ -41,6 +39,3 @@ public:
|
|||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_IMAGE_H_INCLUDED__
|
||||
#define __I_GUI_IMAGE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
|
||||
|
@ -19,10 +18,9 @@ namespace gui
|
|||
class IGUIImage : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIImage(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_IMAGE, environment, parent, id, rectangle) {}
|
||||
IGUIImage(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_IMAGE, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Sets an image texture
|
||||
virtual void setImage(video::ITexture *image) = 0;
|
||||
|
@ -80,8 +78,5 @@ namespace gui
|
|||
virtual bool isDrawBackgroundEnabled() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// written by Reinhard Ostermeier, reinhard@nospam.r-ostermeier.de
|
||||
|
||||
#ifndef __I_GUI_IMAGE_LIST_H_INCLUDED__
|
||||
#define __I_GUI_IMAGE_LIST_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
#include "rect.h"
|
||||
|
@ -17,7 +16,6 @@ namespace gui
|
|||
class IGUIImageList : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Destructor
|
||||
virtual ~IGUIImageList(){};
|
||||
|
||||
|
@ -40,6 +38,3 @@ public:
|
|||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_LIST_BOX_H_INCLUDED__
|
||||
#define __I_GUI_LIST_BOX_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
#include "SColor.h"
|
||||
|
@ -30,7 +29,6 @@ namespace gui
|
|||
EGUI_LBC_COUNT
|
||||
};
|
||||
|
||||
|
||||
//! Default list box GUI element.
|
||||
/** \par This element can create the following events of type EGUI_EVENT_TYPE:
|
||||
\li EGET_LISTBOX_CHANGED
|
||||
|
@ -40,8 +38,8 @@ namespace gui
|
|||
{
|
||||
public:
|
||||
//! constructor
|
||||
IGUIListBox(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_LIST_BOX, environment, parent, id, rectangle) {}
|
||||
IGUIListBox(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_LIST_BOX, environment, parent, id, rectangle) {}
|
||||
|
||||
//! returns amount of list items
|
||||
virtual u32 getItemCount() const = 0;
|
||||
|
@ -134,9 +132,5 @@ namespace gui
|
|||
virtual IGUIScrollBar *getVerticalScrollBar() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_SCROLL_BAR_H_INCLUDED__
|
||||
#define __I_GUI_SCROLL_BAR_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
|
||||
|
@ -19,10 +18,9 @@ namespace gui
|
|||
class IGUIScrollBar : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIScrollBar(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_SCROLL_BAR, environment, parent, id, rectangle) {}
|
||||
IGUIScrollBar(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_SCROLL_BAR, environment, parent, id, rectangle) {}
|
||||
|
||||
//! sets the maximum value of the scrollbar.
|
||||
virtual void setMax(s32 max) = 0;
|
||||
|
@ -57,9 +55,5 @@ namespace gui
|
|||
virtual void setPos(s32 pos) = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_SKIN_H_INCLUDED__
|
||||
#define __I_GUI_SKIN_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "EGUIAlignment.h"
|
||||
|
@ -46,8 +45,7 @@ namespace gui
|
|||
};
|
||||
|
||||
//! Names for gui element types
|
||||
const c8* const GUISkinTypeNames[EGST_COUNT+1] =
|
||||
{
|
||||
const c8 *const GUISkinTypeNames[EGST_COUNT + 1] = {
|
||||
"windowsClassic",
|
||||
"windowsMetallic",
|
||||
"burning",
|
||||
|
@ -55,7 +53,6 @@ namespace gui
|
|||
0,
|
||||
};
|
||||
|
||||
|
||||
//! Enumeration for skin colors
|
||||
enum EGUI_DEFAULT_COLOR
|
||||
{
|
||||
|
@ -116,8 +113,7 @@ namespace gui
|
|||
};
|
||||
|
||||
//! Names for default skin colors
|
||||
const c8* const GUISkinColorNames[EGDC_COUNT+1] =
|
||||
{
|
||||
const c8 *const GUISkinColorNames[EGDC_COUNT + 1] = {
|
||||
"3DDarkShadow",
|
||||
"3DShadow",
|
||||
"3DFace",
|
||||
|
@ -201,10 +197,8 @@ namespace gui
|
|||
EGDS_COUNT
|
||||
};
|
||||
|
||||
|
||||
//! Names for default skin sizes
|
||||
const c8* const GUISkinSizeNames[EGDS_COUNT+1] =
|
||||
{
|
||||
const c8 *const GUISkinSizeNames[EGDS_COUNT + 1] = {
|
||||
"ScrollBarSize",
|
||||
"MenuHeight",
|
||||
"WindowButtonWidth",
|
||||
|
@ -228,10 +222,9 @@ namespace gui
|
|||
"ButtonPressedTextOffsetY",
|
||||
"ButtonPressedSpriteOffsetX",
|
||||
"ButtonPressedSpriteOffsetY",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
|
||||
enum EGUI_DEFAULT_TEXT
|
||||
{
|
||||
//! Text for the OK button on a message box
|
||||
|
@ -256,8 +249,7 @@ namespace gui
|
|||
};
|
||||
|
||||
//! Names for default skin sizes
|
||||
const c8* const GUISkinTextNames[EGDT_COUNT+1] =
|
||||
{
|
||||
const c8 *const GUISkinTextNames[EGDT_COUNT + 1] = {
|
||||
"MessageBoxOkay",
|
||||
"MessageBoxCancel",
|
||||
"MessageBoxYes",
|
||||
|
@ -266,7 +258,7 @@ namespace gui
|
|||
"WindowButtonMaximize",
|
||||
"WindowButtonMinimize",
|
||||
"WindowButtonRestore",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
//! Customizable symbols for GUI
|
||||
|
@ -324,8 +316,7 @@ namespace gui
|
|||
EGDI_COUNT
|
||||
};
|
||||
|
||||
const c8* const GUISkinIconNames[EGDI_COUNT+1] =
|
||||
{
|
||||
const c8 *const GUISkinIconNames[EGDI_COUNT + 1] = {
|
||||
"windowMaximize",
|
||||
"windowRestore",
|
||||
"windowClose",
|
||||
|
@ -349,7 +340,7 @@ namespace gui
|
|||
"collapse",
|
||||
"file",
|
||||
"directory",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
// Customizable fonts
|
||||
|
@ -370,21 +361,19 @@ namespace gui
|
|||
EGDF_COUNT
|
||||
};
|
||||
|
||||
const c8* const GUISkinFontNames[EGDF_COUNT+1] =
|
||||
{
|
||||
const c8 *const GUISkinFontNames[EGDF_COUNT + 1] = {
|
||||
"defaultFont",
|
||||
"buttonFont",
|
||||
"windowFont",
|
||||
"menuFont",
|
||||
"tooltipFont",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
//! A skin modifies the look of the GUI elements.
|
||||
class IGUISkin : virtual public IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! returns default color
|
||||
virtual video::SColor getColor(EGUI_DEFAULT_COLOR color) const = 0;
|
||||
|
||||
|
@ -572,9 +561,5 @@ namespace gui
|
|||
virtual EGUI_SKIN_TYPE getType() const { return EGST_UNKNOWN; }
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_SPRITE_BANK_H_INCLUDED__
|
||||
#define __I_GUI_SPRITE_BANK_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "irrArray.h"
|
||||
|
@ -25,12 +24,13 @@ namespace gui
|
|||
// Note for implementer: Can't fix variable names to uppercase as this is a public interface used since a while
|
||||
struct SGUISpriteFrame
|
||||
{
|
||||
SGUISpriteFrame() : textureNumber(0), rectNumber(0)
|
||||
SGUISpriteFrame() :
|
||||
textureNumber(0), rectNumber(0)
|
||||
{
|
||||
}
|
||||
|
||||
SGUISpriteFrame(u32 textureIndex, u32 positionIndex)
|
||||
: textureNumber(textureIndex), rectNumber(positionIndex)
|
||||
SGUISpriteFrame(u32 textureIndex, u32 positionIndex) :
|
||||
textureNumber(textureIndex), rectNumber(positionIndex)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -45,8 +45,10 @@ struct SGUISpriteFrame
|
|||
// Note for implementer: Can't fix variable names to uppercase as this is a public interface used since a while
|
||||
struct SGUISprite
|
||||
{
|
||||
SGUISprite() : frameTime(0) {}
|
||||
SGUISprite(const SGUISpriteFrame& firstFrame) : frameTime(0)
|
||||
SGUISprite() :
|
||||
frameTime(0) {}
|
||||
SGUISprite(const SGUISpriteFrame &firstFrame) :
|
||||
frameTime(0)
|
||||
{
|
||||
Frames.push_back(firstFrame);
|
||||
}
|
||||
|
@ -55,7 +57,6 @@ struct SGUISprite
|
|||
u32 frameTime;
|
||||
};
|
||||
|
||||
|
||||
//! Sprite bank interface.
|
||||
/** See http://http://irrlicht.sourceforge.net/forum//viewtopic.php?f=9&t=25742
|
||||
* for more information how to use the spritebank.
|
||||
|
@ -63,7 +64,6 @@ struct SGUISprite
|
|||
class IGUISpriteBank : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Returns the list of rectangles held by the sprite bank
|
||||
virtual core::array<core::rect<s32>> &getPositions() = 0;
|
||||
|
||||
|
@ -134,9 +134,5 @@ public:
|
|||
bool loop = true, bool center = false) = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif // __I_GUI_SPRITE_BANK_H_INCLUDED__
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_STATIC_TEXT_H_INCLUDED__
|
||||
#define __I_GUI_STATIC_TEXT_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
#include "SColor.h"
|
||||
|
@ -18,10 +17,9 @@ namespace gui
|
|||
class IGUIStaticText : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIStaticText(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_STATIC_TEXT, environment, parent, id, rectangle) {}
|
||||
IGUIStaticText(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_STATIC_TEXT, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Sets another skin independent font.
|
||||
/** If this is set to zero, the button uses the font of the skin.
|
||||
|
@ -131,9 +129,5 @@ namespace gui
|
|||
virtual bool isRightToLeft() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_TAB_CONTROL_H_INCLUDED__
|
||||
#define __I_GUI_TAB_CONTROL_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
#include "SColor.h"
|
||||
|
@ -22,10 +21,9 @@ namespace gui
|
|||
class IGUITabControl : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUITabControl(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_TAB_CONTROL, environment, parent, id, rectangle) {}
|
||||
IGUITabControl(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_TAB_CONTROL, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Adds a tab
|
||||
virtual IGUITab *addTab(const wchar_t *caption, s32 id = -1) = 0;
|
||||
|
@ -124,10 +122,9 @@ namespace gui
|
|||
class IGUITab : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUITab(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_TAB, environment, parent, id, rectangle) {}
|
||||
IGUITab(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_TAB, environment, parent, id, rectangle) {}
|
||||
|
||||
//! sets if the tab should draw its background
|
||||
virtual void setDrawBackground(bool draw = true) = 0;
|
||||
|
@ -150,6 +147,3 @@ namespace gui
|
|||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_GUI_TOOL_BAR_H_INCLUDED__
|
||||
#define __I_GUI_TOOL_BAR_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IGUIElement.h"
|
||||
|
||||
|
@ -21,10 +20,9 @@ namespace gui
|
|||
class IGUIToolBar : public IGUIElement
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IGUIToolBar(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
|
||||
: IGUIElement(EGUIET_TOOL_BAR, environment, parent, id, rectangle) {}
|
||||
IGUIToolBar(IGUIEnvironment *environment, IGUIElement *parent, s32 id, core::rect<s32> rectangle) :
|
||||
IGUIElement(EGUIET_TOOL_BAR, environment, parent, id, rectangle) {}
|
||||
|
||||
//! Adds a button to the tool bar
|
||||
virtual IGUIButton *addButton(s32 id = -1, const wchar_t *text = 0, const wchar_t *tooltiptext = 0,
|
||||
|
@ -32,9 +30,5 @@ namespace gui
|
|||
bool isPushButton = false, bool useAlphaChannel = false) = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace gui
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,14 +2,13 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_IMAGE_H_INCLUDED__
|
||||
#define __I_IMAGE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "position2d.h"
|
||||
#include "rect.h"
|
||||
#include "SColor.h"
|
||||
#include <string.h>
|
||||
#include <cstring>
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -24,13 +23,9 @@ NOTE: Floating point formats are not well supported yet. Basically only getData(
|
|||
class IImage : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IImage(ECOLOR_FORMAT format, const core::dimension2d<u32> &size, bool deleteMemory) :
|
||||
Format(format), Size(size), Data(0), MipMapsData(0), BytesPerPixel(0), Pitch(0), DeleteMemory(deleteMemory), DeleteMipMapsMemory(false)
|
||||
#if defined(IRRLICHT_sRGB)
|
||||
,Format_sRGB(1)
|
||||
#endif
|
||||
{
|
||||
BytesPerPixel = getBitsPerPixelFromFormat(Format) / 8;
|
||||
Pitch = BytesPerPixel * Size.Width;
|
||||
|
@ -52,18 +47,6 @@ public:
|
|||
return Format;
|
||||
}
|
||||
|
||||
#if defined(IRRLICHT_sRGB)
|
||||
//! Texture is linear/sRGB (should be part of ColorFormat: default yes)
|
||||
int get_sRGB() const
|
||||
{
|
||||
return Format_sRGB;
|
||||
}
|
||||
void set_sRGB(int val)
|
||||
{
|
||||
Format_sRGB = val;
|
||||
}
|
||||
#endif
|
||||
|
||||
//! Returns width and height of image data.
|
||||
const core::dimension2d<u32> &getDimension() const
|
||||
{
|
||||
|
@ -104,8 +87,7 @@ public:
|
|||
//! Returns mask for red value of a pixel
|
||||
u32 getRedMask() const
|
||||
{
|
||||
switch (Format)
|
||||
{
|
||||
switch (Format) {
|
||||
case ECF_A1R5G5B5:
|
||||
return 0x1F << 10;
|
||||
case ECF_R5G6B5:
|
||||
|
@ -122,8 +104,7 @@ public:
|
|||
//! Returns mask for green value of a pixel
|
||||
u32 getGreenMask() const
|
||||
{
|
||||
switch (Format)
|
||||
{
|
||||
switch (Format) {
|
||||
case ECF_A1R5G5B5:
|
||||
return 0x1F << 5;
|
||||
case ECF_R5G6B5:
|
||||
|
@ -140,8 +121,7 @@ public:
|
|||
//! Returns mask for blue value of a pixel
|
||||
u32 getBlueMask() const
|
||||
{
|
||||
switch (Format)
|
||||
{
|
||||
switch (Format) {
|
||||
case ECF_A1R5G5B5:
|
||||
return 0x1F;
|
||||
case ECF_R5G6B5:
|
||||
|
@ -158,8 +138,7 @@ public:
|
|||
//! Returns mask for alpha value of a pixel
|
||||
u32 getAlphaMask() const
|
||||
{
|
||||
switch (Format)
|
||||
{
|
||||
switch (Format) {
|
||||
case ECF_A1R5G5B5:
|
||||
return 0x1 << 15;
|
||||
case ECF_R5G6B5:
|
||||
|
@ -191,15 +170,13 @@ public:
|
|||
return getMipMapsSize(Size, mipmapLevel);
|
||||
}
|
||||
|
||||
|
||||
//! Calculate mipmap size for a certain level
|
||||
/** level 0 will be full image size. Every further level is half the size. */
|
||||
static core::dimension2du getMipMapsSize(const core::dimension2du &sizeLevel0, u32 mipmapLevel)
|
||||
{
|
||||
core::dimension2du result(sizeLevel0);
|
||||
u32 i = 0;
|
||||
while (i != mipmapLevel)
|
||||
{
|
||||
while (i != mipmapLevel) {
|
||||
if (result.Width > 1)
|
||||
result.Width >>= 1;
|
||||
if (result.Height > 1)
|
||||
|
@ -212,7 +189,6 @@ public:
|
|||
return result;
|
||||
}
|
||||
|
||||
|
||||
//! Get mipmaps data.
|
||||
/** Note that different mip levels are just behind each other in memory block.
|
||||
So if you just get level 1 you also have the data for all other levels.
|
||||
|
@ -220,14 +196,12 @@ public:
|
|||
*/
|
||||
void *getMipMapsData(irr::u32 mipLevel = 1) const
|
||||
{
|
||||
if ( MipMapsData && mipLevel > 0)
|
||||
{
|
||||
if (MipMapsData && mipLevel > 0) {
|
||||
size_t dataSize = 0;
|
||||
core::dimension2du mipSize(Size);
|
||||
u32 i = 1; // We want the start of data for this level, not end.
|
||||
|
||||
while (i != mipLevel)
|
||||
{
|
||||
while (i != mipLevel) {
|
||||
if (mipSize.Width > 1)
|
||||
mipSize.Width >>= 1;
|
||||
|
||||
|
@ -258,31 +232,24 @@ public:
|
|||
destruction. */
|
||||
void setMipMapsData(void *data, bool ownForeignMemory)
|
||||
{
|
||||
if (data != MipMapsData)
|
||||
{
|
||||
if (DeleteMipMapsMemory)
|
||||
{
|
||||
if (data != MipMapsData) {
|
||||
if (DeleteMipMapsMemory) {
|
||||
delete[] MipMapsData;
|
||||
|
||||
DeleteMipMapsMemory = false;
|
||||
}
|
||||
|
||||
if (data)
|
||||
{
|
||||
if (ownForeignMemory)
|
||||
{
|
||||
if (data) {
|
||||
if (ownForeignMemory) {
|
||||
MipMapsData = static_cast<u8 *>(data);
|
||||
|
||||
DeleteMipMapsMemory = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
u32 dataSize = 0;
|
||||
u32 width = Size.Width;
|
||||
u32 height = Size.Height;
|
||||
|
||||
do
|
||||
{
|
||||
do {
|
||||
if (width > 1)
|
||||
width >>= 1;
|
||||
|
||||
|
@ -297,9 +264,7 @@ public:
|
|||
|
||||
DeleteMipMapsMemory = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
MipMapsData = 0;
|
||||
}
|
||||
}
|
||||
|
@ -352,8 +317,7 @@ public:
|
|||
//! get the amount of Bits per Pixel of the given color format
|
||||
static u32 getBitsPerPixelFromFormat(const ECOLOR_FORMAT format)
|
||||
{
|
||||
switch(format)
|
||||
{
|
||||
switch (format) {
|
||||
case ECF_A1R5G5B5:
|
||||
return 16;
|
||||
case ECF_R5G6B5:
|
||||
|
@ -412,8 +376,7 @@ public:
|
|||
//! check if the color format is only viable for depth/stencil textures
|
||||
static bool isDepthFormat(const ECOLOR_FORMAT format)
|
||||
{
|
||||
switch(format)
|
||||
{
|
||||
switch (format) {
|
||||
case ECF_D16:
|
||||
case ECF_D32:
|
||||
case ECF_D24S8:
|
||||
|
@ -429,8 +392,7 @@ public:
|
|||
if (isCompressedFormat(format))
|
||||
return false;
|
||||
|
||||
switch(format)
|
||||
{
|
||||
switch (format) {
|
||||
case ECF_R16F:
|
||||
case ECF_G16R16F:
|
||||
case ECF_A16B16G16R16F:
|
||||
|
@ -456,15 +418,7 @@ protected:
|
|||
|
||||
bool DeleteMemory;
|
||||
bool DeleteMipMapsMemory;
|
||||
|
||||
#if defined(IRRLICHT_sRGB)
|
||||
int Format_sRGB;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_SURFACE_LOADER_H_INCLUDED__
|
||||
#define __I_SURFACE_LOADER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "IImage.h"
|
||||
|
@ -28,7 +27,6 @@ IVideoDriver::addExternalImageLoader() to the engine. */
|
|||
class IImageLoader : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Check if the file might be loaded by this class
|
||||
/** Check is based on the file extension (e.g. ".tga")
|
||||
\param filename Name of file to check.
|
||||
|
@ -47,9 +45,5 @@ public:
|
|||
virtual IImage *loadImage(io::IReadFile *file) const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef _I_IMAGE_WRITER_H_INCLUDED__
|
||||
#define _I_IMAGE_WRITER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "irrString.h"
|
||||
|
@ -20,7 +19,6 @@ namespace video
|
|||
{
|
||||
class IImage;
|
||||
|
||||
|
||||
//! Interface for writing software image data.
|
||||
class IImageWriter : public IReferenceCounted
|
||||
{
|
||||
|
@ -40,6 +38,3 @@ public:
|
|||
|
||||
} // namespace video
|
||||
} // namespace irr
|
||||
|
||||
#endif // _I_IMAGE_WRITER_H_INCLUDED__
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_INDEX_BUFFER_H_INCLUDED__
|
||||
#define __I_INDEX_BUFFER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "irrArray.h"
|
||||
|
@ -24,7 +23,6 @@ namespace scene
|
|||
class IIndexBuffer : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
virtual void *getData() = 0;
|
||||
|
||||
virtual video::E_INDEX_TYPE getType() const = 0;
|
||||
|
@ -57,9 +55,5 @@ namespace scene
|
|||
virtual u32 getChangedID() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_LOGGER_H_INCLUDED__
|
||||
#define __I_LOGGER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
|
||||
|
@ -33,12 +32,10 @@ enum ELOG_LEVEL
|
|||
ELL_NONE
|
||||
};
|
||||
|
||||
|
||||
//! Interface for logging messages, warnings and errors
|
||||
class ILogger : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Destructor
|
||||
virtual ~ILogger() {}
|
||||
|
||||
|
@ -76,6 +73,3 @@ public:
|
|||
};
|
||||
|
||||
} // end namespace
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_MATERIAL_RENDERER_H_INCLUDED__
|
||||
#define __I_MATERIAL_RENDERER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "SMaterial.h"
|
||||
|
@ -25,7 +24,6 @@ engine with new materials. */
|
|||
class IMaterialRenderer : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Called by the IVideoDriver implementation the let the renderer set its needed render states.
|
||||
/** This is called during the IVideoDriver::setMaterial() call.
|
||||
When overriding this, you can set some renderstates or for example a
|
||||
|
@ -99,9 +97,5 @@ public:
|
|||
virtual IShaderConstantSetCallBack *getShaderConstantSetCallBack() const { return 0; }
|
||||
};
|
||||
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_MATERIAL_RENDERER_SERVICES_H_INCLUDED__
|
||||
#define __I_MATERIAL_RENDERER_SERVICES_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "SMaterial.h"
|
||||
#include "S3DVertex.h"
|
||||
|
@ -15,12 +14,10 @@ namespace video
|
|||
|
||||
class IVideoDriver;
|
||||
|
||||
|
||||
//! Interface providing some methods for changing advanced, internal states of a IVideoDriver.
|
||||
class IMaterialRendererServices
|
||||
{
|
||||
public:
|
||||
|
||||
//! Destructor
|
||||
virtual ~IMaterialRendererServices() {}
|
||||
|
||||
|
@ -81,6 +78,3 @@ public:
|
|||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_MEMORY_READ_FILE_H_INCLUDED__
|
||||
#define __I_MEMORY_READ_FILE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReadFile.h"
|
||||
|
||||
|
@ -26,6 +25,3 @@ namespace io
|
|||
};
|
||||
} // end namespace io
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_MESH_H_INCLUDED__
|
||||
#define __I_MESH_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "SMaterial.h"
|
||||
|
@ -60,7 +59,6 @@ namespace scene
|
|||
EAMT_STATIC
|
||||
};
|
||||
|
||||
|
||||
class IMeshBuffer;
|
||||
|
||||
//! Class which holds the geometry of an object.
|
||||
|
@ -71,7 +69,6 @@ namespace scene
|
|||
class IMesh : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Get the amount of mesh buffers.
|
||||
/** \return Amount of mesh buffers (IMeshBuffer) in this mesh. */
|
||||
virtual u32 getMeshBufferCount() const = 0;
|
||||
|
@ -124,6 +121,3 @@ namespace scene
|
|||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_MESH_BUFFER_H_INCLUDED__
|
||||
#define __I_MESH_BUFFER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "SMaterial.h"
|
||||
|
@ -39,7 +38,6 @@ namespace scene
|
|||
class IMeshBuffer : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Get the material of this meshbuffer
|
||||
/** \return Material of this buffer. */
|
||||
virtual video::SMaterial &getMaterial() = 0;
|
||||
|
@ -158,23 +156,27 @@ namespace scene
|
|||
virtual u32 getPrimitiveCount() const
|
||||
{
|
||||
const u32 indexCount = getIndexCount();
|
||||
switch (getPrimitiveType())
|
||||
{
|
||||
case scene::EPT_POINTS: return indexCount;
|
||||
case scene::EPT_LINE_STRIP: return indexCount-1;
|
||||
case scene::EPT_LINE_LOOP: return indexCount;
|
||||
case scene::EPT_LINES: return indexCount/2;
|
||||
case scene::EPT_TRIANGLE_STRIP: return (indexCount-2);
|
||||
case scene::EPT_TRIANGLE_FAN: return (indexCount-2);
|
||||
case scene::EPT_TRIANGLES: return indexCount/3;
|
||||
case scene::EPT_POINT_SPRITES: return indexCount;
|
||||
switch (getPrimitiveType()) {
|
||||
case scene::EPT_POINTS:
|
||||
return indexCount;
|
||||
case scene::EPT_LINE_STRIP:
|
||||
return indexCount - 1;
|
||||
case scene::EPT_LINE_LOOP:
|
||||
return indexCount;
|
||||
case scene::EPT_LINES:
|
||||
return indexCount / 2;
|
||||
case scene::EPT_TRIANGLE_STRIP:
|
||||
return (indexCount - 2);
|
||||
case scene::EPT_TRIANGLE_FAN:
|
||||
return (indexCount - 2);
|
||||
case scene::EPT_TRIANGLES:
|
||||
return indexCount / 3;
|
||||
case scene::EPT_POINT_SPRITES:
|
||||
return indexCount;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_MESH_CACHE_H_INCLUDED__
|
||||
#define __I_MESH_CACHE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "path.h"
|
||||
|
@ -27,7 +26,6 @@ namespace scene
|
|||
class IMeshCache : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Destructor
|
||||
virtual ~IMeshCache() {}
|
||||
|
||||
|
@ -129,9 +127,5 @@ namespace scene
|
|||
virtual void clearUnusedMeshes() = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_MESH_LOADER_H_INCLUDED__
|
||||
#define __I_MESH_LOADER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "path.h"
|
||||
|
@ -26,7 +25,6 @@ ISceneManager::addExternalMeshLoader() to the engine. */
|
|||
class IMeshLoader : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Constructor
|
||||
IMeshLoader() {}
|
||||
|
||||
|
@ -48,8 +46,5 @@ public:
|
|||
virtual IAnimatedMesh *createMesh(io::IReadFile *file) = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_MESH_MANIPULATOR_H_INCLUDED__
|
||||
#define __I_MESH_MANIPULATOR_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "vector3d.h"
|
||||
|
@ -29,7 +28,6 @@ namespace scene
|
|||
class IMeshManipulator : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Recalculates all normals of the mesh.
|
||||
/** \param mesh: Mesh on which the operation is performed.
|
||||
\param smooth: If the normals shall be smoothed.
|
||||
|
@ -100,7 +98,6 @@ namespace scene
|
|||
return apply_(func, buffer, boundingBoxUpdate, func);
|
||||
}
|
||||
|
||||
|
||||
//! Apply a manipulator on the Mesh
|
||||
/** \param func A functor defining the mesh manipulation.
|
||||
\param mesh The Mesh to apply the manipulator to.
|
||||
|
@ -113,11 +110,9 @@ namespace scene
|
|||
return true;
|
||||
bool result = true;
|
||||
core::aabbox3df bufferbox;
|
||||
for (u32 i=0; i<mesh->getMeshBufferCount(); ++i)
|
||||
{
|
||||
for (u32 i = 0; i < mesh->getMeshBufferCount(); ++i) {
|
||||
result &= apply(func, mesh->getMeshBuffer(i), boundingBoxUpdate);
|
||||
if (boundingBoxUpdate)
|
||||
{
|
||||
if (boundingBoxUpdate) {
|
||||
if (0 == i)
|
||||
bufferbox.reset(mesh->getMeshBuffer(i)->getBoundingBox());
|
||||
else
|
||||
|
@ -143,31 +138,22 @@ protected:
|
|||
return true;
|
||||
|
||||
core::aabbox3df bufferbox;
|
||||
for (u32 i=0; i<buffer->getVertexCount(); ++i)
|
||||
{
|
||||
switch (buffer->getVertexType())
|
||||
{
|
||||
case video::EVT_STANDARD:
|
||||
{
|
||||
for (u32 i = 0; i < buffer->getVertexCount(); ++i) {
|
||||
switch (buffer->getVertexType()) {
|
||||
case video::EVT_STANDARD: {
|
||||
video::S3DVertex *verts = (video::S3DVertex *)buffer->getVertices();
|
||||
func(verts[i]);
|
||||
}
|
||||
break;
|
||||
case video::EVT_2TCOORDS:
|
||||
{
|
||||
} break;
|
||||
case video::EVT_2TCOORDS: {
|
||||
video::S3DVertex2TCoords *verts = (video::S3DVertex2TCoords *)buffer->getVertices();
|
||||
func(verts[i]);
|
||||
}
|
||||
break;
|
||||
case video::EVT_TANGENTS:
|
||||
{
|
||||
} break;
|
||||
case video::EVT_TANGENTS: {
|
||||
video::S3DVertexTangents *verts = (video::S3DVertexTangents *)buffer->getVertices();
|
||||
func(verts[i]);
|
||||
} break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (boundingBoxUpdate)
|
||||
{
|
||||
if (boundingBoxUpdate) {
|
||||
if (0 == i)
|
||||
bufferbox.reset(buffer->getPosition(0));
|
||||
else
|
||||
|
@ -182,6 +168,3 @@ protected:
|
|||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_MESH_SCENE_NODE_H_INCLUDED__
|
||||
#define __I_MESH_SCENE_NODE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "ISceneNode.h"
|
||||
|
||||
|
@ -14,20 +13,18 @@ namespace scene
|
|||
|
||||
class IMesh;
|
||||
|
||||
|
||||
//! A scene node displaying a static mesh
|
||||
class IMeshSceneNode : public ISceneNode
|
||||
{
|
||||
public:
|
||||
|
||||
//! Constructor
|
||||
/** Use setMesh() to set the mesh to display.
|
||||
*/
|
||||
IMeshSceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id,
|
||||
const core::vector3df &position = core::vector3df(0, 0, 0),
|
||||
const core::vector3df &rotation = core::vector3df(0, 0, 0),
|
||||
const core::vector3df& scale = core::vector3df(1,1,1))
|
||||
: ISceneNode(parent, mgr, id, position, rotation, scale) {}
|
||||
const core::vector3df &scale = core::vector3df(1, 1, 1)) :
|
||||
ISceneNode(parent, mgr, id, position, rotation, scale) {}
|
||||
|
||||
//! Sets a new mesh to display
|
||||
/** \param mesh Mesh to display. */
|
||||
|
@ -51,7 +48,3 @@ public:
|
|||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,55 +0,0 @@
|
|||
// Copyright (C) 2002-2012 Nikolaus Gebhardt
|
||||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#pragma once
|
||||
#include "IReferenceCounted.h"
|
||||
#include "EMeshWriterEnums.h"
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace io
|
||||
{
|
||||
class IWriteFile;
|
||||
} // end namespace io
|
||||
|
||||
namespace scene
|
||||
{
|
||||
class IMesh;
|
||||
|
||||
//! Interface for writing meshes
|
||||
class IMeshWriter : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Destructor
|
||||
virtual ~IMeshWriter() {}
|
||||
|
||||
//! Get the type of the mesh writer
|
||||
/** For own implementations, use MAKE_IRR_ID as shown in the
|
||||
EMESH_WRITER_TYPE enumeration to return your own unique mesh
|
||||
type id.
|
||||
\return Type of the mesh writer. */
|
||||
virtual EMESH_WRITER_TYPE getType() const = 0;
|
||||
|
||||
//! Write a static mesh.
|
||||
/** \param file File handle to write the mesh to.
|
||||
\param mesh Pointer to mesh to be written.
|
||||
\param flags Optional flags to set properties of the writer.
|
||||
\return True if successful */
|
||||
virtual bool writeMesh(io::IWriteFile* file, scene::IMesh* mesh,
|
||||
s32 flags=EMWF_NONE) = 0;
|
||||
|
||||
// Writes an animated mesh
|
||||
// for future use, only b3d writer is able to write animated meshes currently and that was implemented using the writeMesh above.
|
||||
/* \return Returns true if successful */
|
||||
//virtual bool writeAnimatedMesh(io::IWriteFile* file,
|
||||
// scene::IAnimatedMesh* mesh,
|
||||
// s32 flags=EMWF_NONE) = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace
|
||||
} // end namespace
|
||||
|
||||
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_OS_OPERATOR_H_INCLUDED__
|
||||
#define __I_OS_OPERATOR_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "irrString.h"
|
||||
|
@ -41,9 +40,6 @@ public:
|
|||
\param availableBytes: will contain the available memory in Kilobytes (1024 B)
|
||||
\return True if successful, false if not */
|
||||
virtual bool getSystemMemory(u32 *totalBytes, u32 *availableBytes) const = 0;
|
||||
|
||||
};
|
||||
|
||||
} // end namespace
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_READ_FILE_H_INCLUDED__
|
||||
#define __I_READ_FILE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "coreutil.h"
|
||||
|
@ -56,6 +55,3 @@ namespace io
|
|||
|
||||
} // end namespace io
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_IREFERENCE_COUNTED_H_INCLUDED__
|
||||
#define __I_IREFERENCE_COUNTED_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrTypes.h"
|
||||
|
||||
|
@ -41,10 +40,9 @@ namespace irr
|
|||
class IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Constructor.
|
||||
IReferenceCounted()
|
||||
: DebugName(0), ReferenceCounter(1)
|
||||
IReferenceCounted() :
|
||||
DebugName(0), ReferenceCounter(1)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -119,8 +117,7 @@ namespace irr
|
|||
_IRR_DEBUG_BREAK_IF(ReferenceCounter <= 0)
|
||||
|
||||
--ReferenceCounter;
|
||||
if (!ReferenceCounter)
|
||||
{
|
||||
if (!ReferenceCounter) {
|
||||
delete this;
|
||||
return true;
|
||||
}
|
||||
|
@ -145,7 +142,6 @@ namespace irr
|
|||
}
|
||||
|
||||
protected:
|
||||
|
||||
//! Sets the debug name of the object.
|
||||
/** The Debugname may only be set and changed by the object
|
||||
itself. This method should only be used in Debug mode.
|
||||
|
@ -156,7 +152,6 @@ namespace irr
|
|||
}
|
||||
|
||||
private:
|
||||
|
||||
//! The debug name.
|
||||
const c8 *DebugName;
|
||||
|
||||
|
@ -165,6 +160,3 @@ namespace irr
|
|||
};
|
||||
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_RENDER_TARGET_H_INCLUDED__
|
||||
#define __I_RENDER_TARGET_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "EDriverTypes.h"
|
||||
|
@ -30,9 +29,9 @@ namespace video
|
|||
class IRenderTarget : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
IRenderTarget() : DepthStencil(0), DriverType(EDT_NULL)
|
||||
IRenderTarget() :
|
||||
DepthStencil(0), DriverType(EDT_NULL)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -70,12 +69,9 @@ namespace video
|
|||
//! You can pass getDepthStencil() for depthStencil if you don't want to change that one
|
||||
void setTexture(ITexture *texture, ITexture *depthStencil)
|
||||
{
|
||||
if ( texture )
|
||||
{
|
||||
if (texture) {
|
||||
setTextures(&texture, 1, depthStencil);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
setTextures(0, 0, depthStencil);
|
||||
}
|
||||
}
|
||||
|
@ -83,12 +79,9 @@ namespace video
|
|||
//! Set one cube surface texture.
|
||||
void setTexture(ITexture *texture, ITexture *depthStencil, E_CUBE_SURFACE cubeSurface)
|
||||
{
|
||||
if ( texture )
|
||||
{
|
||||
if (texture) {
|
||||
setTextures(&texture, 1, depthStencil, &cubeSurface, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
setTextures(0, 0, depthStencil, &cubeSurface, 1);
|
||||
}
|
||||
}
|
||||
|
@ -100,7 +93,6 @@ namespace video
|
|||
}
|
||||
|
||||
protected:
|
||||
|
||||
//! Set multiple textures.
|
||||
// NOTE: working with pointers instead of arrays to avoid unnecessary memory allocations for the single textures case
|
||||
virtual void setTextures(ITexture *const *textures, u32 numTextures, ITexture *depthStencil, const E_CUBE_SURFACE *cubeSurfaces = 0, u32 numCubeSurfaces = 0) = 0;
|
||||
|
@ -125,5 +117,3 @@ namespace video
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_SCENE_COLLISION_MANAGER_H_INCLUDED__
|
||||
#define __I_SCENE_COLLISION_MANAGER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "position2d.h"
|
||||
|
@ -19,7 +18,6 @@ namespace scene
|
|||
class ISceneCollisionManager : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Returns a 3d ray which would go through the 2d screen coordinates.
|
||||
/** \param pos: Screen coordinates in pixels.
|
||||
\param camera: Camera from which the ray starts. If null, the
|
||||
|
@ -29,10 +27,7 @@ namespace scene
|
|||
would be behind the 2d screen coordinates. */
|
||||
virtual core::line3d<f32> getRayFromScreenCoordinates(
|
||||
const core::position2d<s32> &pos, const ICameraSceneNode *camera = 0) = 0;
|
||||
|
||||
};
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_SCENE_MANAGER_H_INCLUDED__
|
||||
#define __I_SCENE_MANAGER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "irrArray.h"
|
||||
|
@ -13,7 +12,6 @@
|
|||
#include "dimension2d.h"
|
||||
#include "SColor.h"
|
||||
#include "ESceneNodeTypes.h"
|
||||
#include "EMeshWriterEnums.h"
|
||||
#include "SceneParameters.h"
|
||||
#include "ISkinnedMesh.h"
|
||||
|
||||
|
@ -109,7 +107,6 @@ namespace scene
|
|||
class IMeshLoader;
|
||||
class IMeshManipulator;
|
||||
class IMeshSceneNode;
|
||||
class IMeshWriter;
|
||||
class ISceneNode;
|
||||
class ISceneNodeFactory;
|
||||
|
||||
|
@ -129,7 +126,6 @@ namespace scene
|
|||
class ISceneManager : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Get pointer to an animatable mesh. Loads the file if not loaded already.
|
||||
/**
|
||||
* If you want to remove a loaded mesh from the cache again, use removeMesh().
|
||||
|
@ -603,11 +599,6 @@ namespace scene
|
|||
See IReferenceCounted::drop() for more information. */
|
||||
virtual ISceneManager *createNewSceneManager(bool cloneContent = false) = 0;
|
||||
|
||||
//! Get a mesh writer implementation if available
|
||||
/** Note: You need to drop() the pointer after use again, see IReferenceCounted::drop()
|
||||
for details. */
|
||||
virtual IMeshWriter* createMeshWriter(EMESH_WRITER_TYPE type) = 0;
|
||||
|
||||
//! Get a skinned mesh, which is not available as header-only code
|
||||
/** Note: You need to drop() the pointer after use again, see IReferenceCounted::drop()
|
||||
for details. */
|
||||
|
@ -637,9 +628,5 @@ namespace scene
|
|||
virtual bool isCulled(const ISceneNode *node) const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_SCENE_NODE_H_INCLUDED__
|
||||
#define __I_SCENE_NODE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "ESceneNodeTypes.h"
|
||||
|
@ -39,13 +38,13 @@ namespace scene
|
|||
class ISceneNode : virtual public IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Constructor
|
||||
ISceneNode(ISceneNode *parent, ISceneManager *mgr, s32 id = -1,
|
||||
const core::vector3df &position = core::vector3df(0, 0, 0),
|
||||
const core::vector3df &rotation = core::vector3df(0, 0, 0),
|
||||
const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f))
|
||||
: RelativeTranslation(position), RelativeRotation(rotation), RelativeScale(scale),
|
||||
const core::vector3df &scale = core::vector3df(1.0f, 1.0f, 1.0f)) :
|
||||
RelativeTranslation(position),
|
||||
RelativeRotation(rotation), RelativeScale(scale),
|
||||
Parent(0), SceneManager(mgr), ID(id),
|
||||
AutomaticCullingState(EAC_BOX), DebugDataVisible(EDS_OFF),
|
||||
IsVisible(true), IsDebugObject(false)
|
||||
|
@ -56,7 +55,6 @@ namespace scene
|
|||
updateAbsolutePosition();
|
||||
}
|
||||
|
||||
|
||||
//! Destructor
|
||||
virtual ~ISceneNode()
|
||||
{
|
||||
|
@ -64,7 +62,6 @@ namespace scene
|
|||
removeAll();
|
||||
}
|
||||
|
||||
|
||||
//! This method is called just before the rendering process of the whole scene.
|
||||
/** Nodes may register themselves in the render pipeline during this call,
|
||||
precalculate the geometry which should be rendered, and prevent their
|
||||
|
@ -81,15 +78,13 @@ namespace scene
|
|||
*/
|
||||
virtual void OnRegisterSceneNode()
|
||||
{
|
||||
if (IsVisible)
|
||||
{
|
||||
if (IsVisible) {
|
||||
ISceneNodeList::iterator it = Children.begin();
|
||||
for (; it != Children.end(); ++it)
|
||||
(*it)->OnRegisterSceneNode();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! OnAnimate() is called just before rendering the whole scene.
|
||||
/** Nodes may calculate or store animations here, and may do other useful things,
|
||||
depending on what they are. Also, OnAnimate() should be called for all
|
||||
|
@ -98,8 +93,7 @@ namespace scene
|
|||
\param timeMs Current time in milliseconds. */
|
||||
virtual void OnAnimate(u32 timeMs)
|
||||
{
|
||||
if (IsVisible)
|
||||
{
|
||||
if (IsVisible) {
|
||||
// update absolute position
|
||||
updateAbsolutePosition();
|
||||
|
||||
|
@ -111,11 +105,9 @@ namespace scene
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//! Renders the node.
|
||||
virtual void render() = 0;
|
||||
|
||||
|
||||
//! Returns the name of the node.
|
||||
/** \return Name as character string. */
|
||||
virtual const std::optional<std::string> &getName() const
|
||||
|
@ -130,7 +122,6 @@ namespace scene
|
|||
Name = name;
|
||||
}
|
||||
|
||||
|
||||
//! Get the axis aligned, not transformed bounding box of this node.
|
||||
/** This means that if this node is an animated 3d character,
|
||||
moving in a room, the bounding box will always be around the
|
||||
|
@ -141,7 +132,6 @@ namespace scene
|
|||
\return The non-transformed bounding box. */
|
||||
virtual const core::aabbox3d<f32> &getBoundingBox() const = 0;
|
||||
|
||||
|
||||
//! Get the axis aligned, transformed and animated absolute bounding box of this node.
|
||||
/** Note: The result is still an axis-aligned bounding box, so it's size
|
||||
changes with rotation.
|
||||
|
@ -178,7 +168,6 @@ namespace scene
|
|||
return AbsoluteTransformation;
|
||||
}
|
||||
|
||||
|
||||
//! Returns the relative transformation of the scene node.
|
||||
/** The relative transformation is stored internally as 3
|
||||
vectors: translation, rotation and scale. To get the relative
|
||||
|
@ -190,8 +179,7 @@ namespace scene
|
|||
mat.setRotationDegrees(RelativeRotation);
|
||||
mat.setTranslation(RelativeTranslation);
|
||||
|
||||
if (RelativeScale != core::vector3df(1.f,1.f,1.f))
|
||||
{
|
||||
if (RelativeScale != core::vector3df(1.f, 1.f, 1.f)) {
|
||||
core::matrix4 smat;
|
||||
smat.setScale(RelativeScale);
|
||||
mat *= smat;
|
||||
|
@ -200,7 +188,6 @@ namespace scene
|
|||
return mat;
|
||||
}
|
||||
|
||||
|
||||
//! Returns whether the node should be visible (if all of its parents are visible).
|
||||
/** This is only an option set by the user, but has nothing to
|
||||
do with geometry culling
|
||||
|
@ -235,7 +222,6 @@ namespace scene
|
|||
IsVisible = isVisible;
|
||||
}
|
||||
|
||||
|
||||
//! Get the id of the scene node.
|
||||
/** This id can be used to identify the node.
|
||||
\return The id. */
|
||||
|
@ -244,7 +230,6 @@ namespace scene
|
|||
return ID;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the id of the scene node.
|
||||
/** This id can be used to identify the node.
|
||||
\param id The new id. */
|
||||
|
@ -253,15 +238,13 @@ namespace scene
|
|||
ID = id;
|
||||
}
|
||||
|
||||
|
||||
//! Adds a child to this scene node.
|
||||
/** If the scene node already has a parent it is first removed
|
||||
from the other parent.
|
||||
\param child A pointer to the new child. */
|
||||
virtual void addChild(ISceneNode *child)
|
||||
{
|
||||
if (child && (child != this))
|
||||
{
|
||||
if (child && (child != this)) {
|
||||
// Change scene manager?
|
||||
if (SceneManager != child->SceneManager)
|
||||
child->setSceneManager(SceneManager);
|
||||
|
@ -274,7 +257,6 @@ namespace scene
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//! Removes a child from this scene node.
|
||||
/**
|
||||
\param child A pointer to the child which shall be removed.
|
||||
|
@ -295,7 +277,6 @@ namespace scene
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
//! Removes all children of this scene node
|
||||
/** The scene nodes found in the children list are also dropped
|
||||
and might be deleted if no other grab exists on them.
|
||||
|
@ -310,7 +291,6 @@ namespace scene
|
|||
Children.clear();
|
||||
}
|
||||
|
||||
|
||||
//! Removes this scene node from the scene
|
||||
/** If no other grab exists for this node, it will be deleted.
|
||||
*/
|
||||
|
@ -320,7 +300,6 @@ namespace scene
|
|||
Parent->removeChild(this);
|
||||
}
|
||||
|
||||
|
||||
//! 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
|
||||
|
@ -334,7 +313,6 @@ namespace scene
|
|||
return video::IdentityMaterial;
|
||||
}
|
||||
|
||||
|
||||
//! Get amount of materials used by this scene node.
|
||||
/** \return Current amount of materials of this scene node. */
|
||||
virtual u32 getMaterialCount() const
|
||||
|
@ -342,18 +320,17 @@ namespace scene
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//! Execute a function on all materials of this scene node.
|
||||
/** Useful for setting material properties, e.g. if you want the whole
|
||||
mesh to be affected by light. */
|
||||
template <typename F>
|
||||
void forEachMaterial(F &&fn) {
|
||||
void forEachMaterial(F &&fn)
|
||||
{
|
||||
for (u32 i = 0; i < getMaterialCount(); i++) {
|
||||
fn(getMaterial(i));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//! Gets the scale of the scene node relative to its parent.
|
||||
/** This is the scale of this node relative to its parent.
|
||||
If you want the absolute scale, use
|
||||
|
@ -364,7 +341,6 @@ namespace scene
|
|||
return RelativeScale;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the relative scale of the scene node.
|
||||
/** \param scale New scale of the node, relative to its parent. */
|
||||
virtual void setScale(const core::vector3df &scale)
|
||||
|
@ -372,7 +348,6 @@ namespace scene
|
|||
RelativeScale = scale;
|
||||
}
|
||||
|
||||
|
||||
//! Gets the rotation of the node relative to its parent.
|
||||
/** Note that this is the relative rotation of the node.
|
||||
If you want the absolute rotation, use
|
||||
|
@ -383,7 +358,6 @@ namespace scene
|
|||
return RelativeRotation;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the rotation of the node relative to its parent.
|
||||
/** This only modifies the relative rotation of the node.
|
||||
\param rotation New rotation of the node in degrees. */
|
||||
|
@ -392,7 +366,6 @@ namespace scene
|
|||
RelativeRotation = rotation;
|
||||
}
|
||||
|
||||
|
||||
//! Gets the position of the node relative to its parent.
|
||||
/** Note that the position is relative to the parent. If you want
|
||||
the position in world coordinates, use getAbsolutePosition() instead.
|
||||
|
@ -402,7 +375,6 @@ namespace scene
|
|||
return RelativeTranslation;
|
||||
}
|
||||
|
||||
|
||||
//! Sets the position of the node relative to its parent.
|
||||
/** Note that the position is relative to the parent.
|
||||
\param newpos New relative position of the scene node. */
|
||||
|
@ -411,7 +383,6 @@ namespace scene
|
|||
RelativeTranslation = newpos;
|
||||
}
|
||||
|
||||
|
||||
//! Gets the absolute position of the node in world coordinates.
|
||||
/** If you want the position of the node relative to its parent,
|
||||
use getPosition() instead.
|
||||
|
@ -426,7 +397,6 @@ namespace scene
|
|||
return AbsoluteTransformation.getTranslation();
|
||||
}
|
||||
|
||||
|
||||
//! Set a culling style or disable culling completely.
|
||||
/** Box cullling (EAC_BOX) is set by default. Note that not
|
||||
all SceneNodes support culling and that some nodes always cull
|
||||
|
@ -438,7 +408,6 @@ namespace scene
|
|||
AutomaticCullingState = state;
|
||||
}
|
||||
|
||||
|
||||
//! Gets the automatic culling state.
|
||||
/** \return The automatic culling state. */
|
||||
u32 getAutomaticCulling() const
|
||||
|
@ -446,7 +415,6 @@ namespace scene
|
|||
return AutomaticCullingState;
|
||||
}
|
||||
|
||||
|
||||
//! Sets if debug data like bounding boxes should be drawn.
|
||||
/** A bitwise OR of the types from @ref irr::scene::E_DEBUG_SCENE_TYPE.
|
||||
Please note that not all scene nodes support all debug data types.
|
||||
|
@ -464,7 +432,6 @@ namespace scene
|
|||
return DebugDataVisible;
|
||||
}
|
||||
|
||||
|
||||
//! Sets if this scene node is a debug object.
|
||||
/** Debug objects have some special properties, for example they can be easily
|
||||
excluded from collision detection or from serialization, etc. */
|
||||
|
@ -473,7 +440,6 @@ namespace scene
|
|||
IsDebugObject = debugObject;
|
||||
}
|
||||
|
||||
|
||||
//! Returns if this scene node is a debug object.
|
||||
/** Debug objects have some special properties, for example they can be easily
|
||||
excluded from collision detection or from serialization, etc.
|
||||
|
@ -483,7 +449,6 @@ namespace scene
|
|||
return IsDebugObject;
|
||||
}
|
||||
|
||||
|
||||
//! Returns a const reference to the list of all children.
|
||||
/** \return The list of all children of this node. */
|
||||
const std::list<ISceneNode *> &getChildren() const
|
||||
|
@ -491,7 +456,6 @@ namespace scene
|
|||
return Children;
|
||||
}
|
||||
|
||||
|
||||
//! Changes the parent of the scene node.
|
||||
/** \param newParent The new parent to be used. */
|
||||
virtual void setParent(ISceneNode *newParent)
|
||||
|
@ -505,22 +469,18 @@ namespace scene
|
|||
drop();
|
||||
}
|
||||
|
||||
|
||||
//! Updates the absolute position based on the relative and the parents position
|
||||
/** Note: This does not recursively update the parents absolute positions, so if you have a deeper
|
||||
hierarchy you might want to update the parents first.*/
|
||||
virtual void updateAbsolutePosition()
|
||||
{
|
||||
if (Parent)
|
||||
{
|
||||
if (Parent) {
|
||||
AbsoluteTransformation =
|
||||
Parent->getAbsoluteTransformation() * getRelativeTransformation();
|
||||
}
|
||||
else
|
||||
} else
|
||||
AbsoluteTransformation = getRelativeTransformation();
|
||||
}
|
||||
|
||||
|
||||
//! Returns the parent of this scene node
|
||||
/** \return A pointer to the parent. */
|
||||
scene::ISceneNode *getParent() const
|
||||
|
@ -528,7 +488,6 @@ namespace scene
|
|||
return Parent;
|
||||
}
|
||||
|
||||
|
||||
//! Returns type of the scene node
|
||||
/** \return The type of this node. */
|
||||
virtual ESCENE_NODE_TYPE getType() const
|
||||
|
@ -550,7 +509,6 @@ namespace scene
|
|||
virtual ISceneManager *getSceneManager(void) const { return SceneManager; }
|
||||
|
||||
protected:
|
||||
|
||||
//! A clone function for the ISceneNode members.
|
||||
/** This method can be used by clone() implementations of
|
||||
derived classes
|
||||
|
@ -635,9 +593,5 @@ namespace scene
|
|||
bool IsDebugObject;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_SHADER_CONSTANT_SET_CALLBACT_H_INCLUDED__
|
||||
#define __I_SHADER_CONSTANT_SET_CALLBACT_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
|
||||
|
@ -21,7 +20,6 @@ OnSetConstants method will be called every frame now. */
|
|||
class IShaderConstantSetCallBack : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Called to let the callBack know the used material (optional method)
|
||||
/**
|
||||
\code
|
||||
|
@ -77,9 +75,5 @@ public:
|
|||
virtual void OnSetConstants(IMaterialRendererServices *services, s32 userData) = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_SKINNED_MESH_H_INCLUDED__
|
||||
#define __I_SKINNED_MESH_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrArray.h"
|
||||
#include "IBoneSceneNode.h"
|
||||
|
@ -29,12 +28,10 @@ namespace scene
|
|||
EIM_COUNT
|
||||
};
|
||||
|
||||
|
||||
//! Interface for using some special functions of Skinned meshes
|
||||
class ISkinnedMesh : public IAnimatedMesh
|
||||
{
|
||||
public:
|
||||
|
||||
//! Gets joint count.
|
||||
/** \return Amount of joints in the skeletal animated mesh. */
|
||||
virtual u32 getJointCount() const = 0;
|
||||
|
@ -107,7 +104,6 @@ namespace scene
|
|||
core::vector3df StaticNormal;
|
||||
};
|
||||
|
||||
|
||||
//! Animation keyframe which describes a new position
|
||||
struct SPositionKey
|
||||
{
|
||||
|
@ -132,7 +128,8 @@ namespace scene
|
|||
//! Joints
|
||||
struct SJoint
|
||||
{
|
||||
SJoint() : UseAnimationFrom(0), GlobalSkinningSpace(false),
|
||||
SJoint() :
|
||||
UseAnimationFrom(0), GlobalSkinningSpace(false),
|
||||
positionHint(-1), scaleHint(-1), rotationHint(-1)
|
||||
{
|
||||
}
|
||||
|
@ -183,7 +180,6 @@ namespace scene
|
|||
s32 rotationHint;
|
||||
};
|
||||
|
||||
|
||||
// Interface for the mesh loaders (finalize should lock these functions, and they should have some prefix like loader_
|
||||
|
||||
// these functions will use the needed arrays, set values, etc to help the loaders
|
||||
|
@ -222,6 +218,3 @@ namespace scene
|
|||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_TEXTURE_H_INCLUDED__
|
||||
#define __I_TEXTURE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "IImage.h"
|
||||
|
@ -17,7 +16,6 @@ namespace irr
|
|||
namespace video
|
||||
{
|
||||
|
||||
|
||||
//! Enumeration flags used to tell the video driver with setTextureCreationFlag in which format textures should be created.
|
||||
enum E_TEXTURE_CREATION_FLAG
|
||||
{
|
||||
|
@ -177,9 +175,9 @@ and write a warning or an error message to the output buffer.
|
|||
class ITexture : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! constructor
|
||||
ITexture(const io::path& name, E_TEXTURE_TYPE type) : NamedPath(name), DriverType(EDT_NULL), OriginalColorFormat(ECF_UNKNOWN),
|
||||
ITexture(const io::path &name, E_TEXTURE_TYPE type) :
|
||||
NamedPath(name), DriverType(EDT_NULL), OriginalColorFormat(ECF_UNKNOWN),
|
||||
ColorFormat(ECF_UNKNOWN), Pitch(0), HasMipMaps(false), IsRenderTarget(false), Source(ETS_UNKNOWN), Type(type)
|
||||
{
|
||||
}
|
||||
|
@ -288,8 +286,7 @@ public:
|
|||
{
|
||||
bool status = false;
|
||||
|
||||
switch (ColorFormat)
|
||||
{
|
||||
switch (ColorFormat) {
|
||||
case ECF_A8R8G8B8:
|
||||
case ECF_A1R5G5B5:
|
||||
case ECF_A16B16G16R16F:
|
||||
|
@ -307,7 +304,6 @@ public:
|
|||
E_TEXTURE_TYPE getType() const { return Type; }
|
||||
|
||||
protected:
|
||||
|
||||
//! Helper function, helps to get the desired texture creation format from the flags.
|
||||
/** \return Either ETCF_ALWAYS_32_BIT, ETCF_ALWAYS_16_BIT,
|
||||
ETCF_OPTIMIZED_FOR_QUALITY, or ETCF_OPTIMIZED_FOR_SPEED. */
|
||||
|
@ -337,9 +333,5 @@ protected:
|
|||
E_TEXTURE_TYPE Type;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_TIMER_H_INCLUDED__
|
||||
#define __I_TIMER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
|
||||
|
@ -64,5 +63,3 @@ public:
|
|||
};
|
||||
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_VERTEX_BUFFER_H_INCLUDED__
|
||||
#define __I_VERTEX_BUFFER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "irrArray.h"
|
||||
|
@ -45,9 +44,5 @@ namespace scene
|
|||
virtual u32 getChangedID() const = 0;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
#include "dimension2d.h"
|
||||
#include "position2d.h"
|
||||
#include "IMeshBuffer.h"
|
||||
#include "triangle3d.h"
|
||||
#include "EDriverTypes.h"
|
||||
#include "EDriverFeatures.h"
|
||||
#include "SExposedVideoData.h"
|
||||
|
@ -108,12 +107,11 @@ namespace video
|
|||
EFT_FOG_EXP2
|
||||
};
|
||||
|
||||
const c8* const FogTypeNames[] =
|
||||
{
|
||||
const c8 *const FogTypeNames[] = {
|
||||
"FogExp",
|
||||
"FogLinear",
|
||||
"FogExp2",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
//! Interface to driver which is able to perform 2d and 3d graphics functions.
|
||||
|
@ -127,7 +125,6 @@ namespace video
|
|||
class IVideoDriver : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Applications must call this method before performing any rendering.
|
||||
/** This method can clear the back- and the z-buffer.
|
||||
\param clearFlag A combination of the E_CLEAR_BUFFER_FLAG bit-flags.
|
||||
|
@ -1208,5 +1205,3 @@ namespace video
|
|||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_WRITE_FILE_H_INCLUDED__
|
||||
#define __I_WRITE_FILE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "path.h"
|
||||
|
@ -46,6 +45,3 @@ namespace io
|
|||
|
||||
} // end namespace io
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
#define IRRLICHT_VERSION_SVN alpha
|
||||
#define IRRLICHT_SDK_VERSION "1.9.0" IRRLICHT_VERSION_MT
|
||||
|
||||
#include <stdio.h> // TODO: Although included elsewhere this is required at least for mingw
|
||||
|
||||
#ifdef _WIN32
|
||||
#define IRRCALLCONV __stdcall
|
||||
#else
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_IRRLICHT_DEVICE_H_INCLUDED__
|
||||
#define __I_IRRLICHT_DEVICE_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IReferenceCounted.h"
|
||||
#include "dimension2d.h"
|
||||
|
@ -21,19 +20,23 @@ namespace irr
|
|||
class ILogger;
|
||||
class IEventReceiver;
|
||||
|
||||
namespace io {
|
||||
namespace io
|
||||
{
|
||||
class IFileSystem;
|
||||
} // end namespace io
|
||||
|
||||
namespace gui {
|
||||
namespace gui
|
||||
{
|
||||
class IGUIEnvironment;
|
||||
} // end namespace gui
|
||||
|
||||
namespace scene {
|
||||
namespace scene
|
||||
{
|
||||
class ISceneManager;
|
||||
} // end namespace scene
|
||||
|
||||
namespace video {
|
||||
namespace video
|
||||
{
|
||||
class IContextManager;
|
||||
extern "C" IRRLICHT_API bool IRRCALLCONV isDriverSupported(E_DRIVER_TYPE driver);
|
||||
} // end namespace video
|
||||
|
@ -47,7 +50,6 @@ namespace irr
|
|||
class IrrlichtDevice : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
|
||||
//! Runs the device.
|
||||
/** Also increments the virtual timer by calling
|
||||
ITimer::tick();. You can prevent this
|
||||
|
@ -337,6 +339,3 @@ namespace irr
|
|||
};
|
||||
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -183,5 +183,3 @@ namespace irr
|
|||
};
|
||||
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __S_3D_VERTEX_H_INCLUDED__
|
||||
#define __S_3D_VERTEX_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "vector3d.h"
|
||||
#include "vector2d.h"
|
||||
|
@ -32,28 +31,29 @@ enum E_VERTEX_TYPE
|
|||
};
|
||||
|
||||
//! Array holding the built in vertex type names
|
||||
const char* const sBuiltInVertexTypeNames[] =
|
||||
{
|
||||
const char *const sBuiltInVertexTypeNames[] = {
|
||||
"standard",
|
||||
"2tcoords",
|
||||
"tangents",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
//! standard vertex used by the Irrlicht engine.
|
||||
struct S3DVertex
|
||||
{
|
||||
//! default constructor
|
||||
S3DVertex() : Color(0xffffffff) {}
|
||||
constexpr S3DVertex() :
|
||||
Color(0xffffffff) {}
|
||||
|
||||
//! constructor
|
||||
S3DVertex(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, SColor c, f32 tu, f32 tv)
|
||||
: Pos(x,y,z), Normal(nx,ny,nz), Color(c), TCoords(tu,tv) {}
|
||||
constexpr S3DVertex(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, SColor c, f32 tu, f32 tv) :
|
||||
Pos(x, y, z), Normal(nx, ny, nz), Color(c), TCoords(tu, tv) {}
|
||||
|
||||
//! constructor
|
||||
S3DVertex(const core::vector3df& pos, const core::vector3df& normal,
|
||||
SColor color, const core::vector2d<f32>& tcoords)
|
||||
: Pos(pos), Normal(normal), Color(color), TCoords(tcoords) {}
|
||||
constexpr S3DVertex(const core::vector3df &pos, const core::vector3df &normal,
|
||||
SColor color, const core::vector2df &tcoords) :
|
||||
Pos(pos),
|
||||
Normal(normal), Color(color), TCoords(tcoords) {}
|
||||
|
||||
//! Position
|
||||
core::vector3df Pos;
|
||||
|
@ -65,21 +65,21 @@ struct S3DVertex
|
|||
SColor Color;
|
||||
|
||||
//! Texture coordinates
|
||||
core::vector2d<f32> TCoords;
|
||||
core::vector2df TCoords;
|
||||
|
||||
bool operator==(const S3DVertex& other) const
|
||||
constexpr bool operator==(const S3DVertex &other) const
|
||||
{
|
||||
return ((Pos == other.Pos) && (Normal == other.Normal) &&
|
||||
(Color == other.Color) && (TCoords == other.TCoords));
|
||||
}
|
||||
|
||||
bool operator!=(const S3DVertex& other) const
|
||||
constexpr bool operator!=(const S3DVertex &other) const
|
||||
{
|
||||
return ((Pos != other.Pos) || (Normal != other.Normal) ||
|
||||
(Color != other.Color) || (TCoords != other.TCoords));
|
||||
}
|
||||
|
||||
bool operator<(const S3DVertex& other) const
|
||||
constexpr bool operator<(const S3DVertex &other) const
|
||||
{
|
||||
return ((Pos < other.Pos) ||
|
||||
((Pos == other.Pos) && (Normal < other.Normal)) ||
|
||||
|
@ -104,7 +104,6 @@ struct S3DVertex
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
//! Vertex with two texture coordinates.
|
||||
/** Usually used for geometry with lightmaps
|
||||
or other special materials.
|
||||
|
@ -112,56 +111,65 @@ or other special materials.
|
|||
struct S3DVertex2TCoords : public S3DVertex
|
||||
{
|
||||
//! default constructor
|
||||
S3DVertex2TCoords() : S3DVertex() {}
|
||||
constexpr S3DVertex2TCoords() :
|
||||
S3DVertex() {}
|
||||
|
||||
//! constructor with two different texture coords, but no normal
|
||||
S3DVertex2TCoords(f32 x, f32 y, f32 z, SColor c, f32 tu, f32 tv, f32 tu2, f32 tv2)
|
||||
: S3DVertex(x,y,z, 0.0f, 0.0f, 0.0f, c, tu,tv), TCoords2(tu2,tv2) {}
|
||||
constexpr S3DVertex2TCoords(f32 x, f32 y, f32 z, SColor c, f32 tu, f32 tv, f32 tu2, f32 tv2) :
|
||||
S3DVertex(x, y, z, 0.0f, 0.0f, 0.0f, c, tu, tv), TCoords2(tu2, tv2) {}
|
||||
|
||||
//! constructor with two different texture coords, but no normal
|
||||
S3DVertex2TCoords(const core::vector3df& pos, SColor color,
|
||||
const core::vector2d<f32>& tcoords, const core::vector2d<f32>& tcoords2)
|
||||
: S3DVertex(pos, core::vector3df(), color, tcoords), TCoords2(tcoords2) {}
|
||||
constexpr S3DVertex2TCoords(const core::vector3df &pos, SColor color,
|
||||
const core::vector2df &tcoords, const core::vector2df &tcoords2) :
|
||||
S3DVertex(pos, core::vector3df(), color, tcoords),
|
||||
TCoords2(tcoords2) {}
|
||||
|
||||
//! constructor with all values
|
||||
S3DVertex2TCoords(const core::vector3df& pos, const core::vector3df& normal, const SColor& color,
|
||||
const core::vector2d<f32>& tcoords, const core::vector2d<f32>& tcoords2)
|
||||
: S3DVertex(pos, normal, color, tcoords), TCoords2(tcoords2) {}
|
||||
constexpr S3DVertex2TCoords(const core::vector3df &pos, const core::vector3df &normal, const SColor &color,
|
||||
const core::vector2df &tcoords, const core::vector2df &tcoords2) :
|
||||
S3DVertex(pos, normal, color, tcoords),
|
||||
TCoords2(tcoords2) {}
|
||||
|
||||
//! constructor with all values
|
||||
S3DVertex2TCoords(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, SColor c, f32 tu, f32 tv, f32 tu2, f32 tv2)
|
||||
: S3DVertex(x,y,z, nx,ny,nz, c, tu,tv), TCoords2(tu2,tv2) {}
|
||||
constexpr S3DVertex2TCoords(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz,
|
||||
SColor c, f32 tu, f32 tv, f32 tu2, f32 tv2) :
|
||||
S3DVertex(x, y, z, nx, ny, nz, c, tu, tv),
|
||||
TCoords2(tu2, tv2) {}
|
||||
|
||||
//! constructor with the same texture coords and normal
|
||||
S3DVertex2TCoords(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, SColor c, f32 tu, f32 tv)
|
||||
: S3DVertex(x,y,z, nx,ny,nz, c, tu,tv), TCoords2(tu,tv) {}
|
||||
constexpr S3DVertex2TCoords(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz,
|
||||
SColor c, f32 tu, f32 tv) :
|
||||
S3DVertex(x, y, z, nx, ny, nz, c, tu, tv),
|
||||
TCoords2(tu, tv) {}
|
||||
|
||||
//! constructor with the same texture coords and normal
|
||||
S3DVertex2TCoords(const core::vector3df& pos, const core::vector3df& normal,
|
||||
SColor color, const core::vector2d<f32>& tcoords)
|
||||
: S3DVertex(pos, normal, color, tcoords), TCoords2(tcoords) {}
|
||||
constexpr S3DVertex2TCoords(const core::vector3df &pos, const core::vector3df &normal,
|
||||
SColor color, const core::vector2df &tcoords) :
|
||||
S3DVertex(pos, normal, color, tcoords),
|
||||
TCoords2(tcoords) {}
|
||||
|
||||
//! constructor from S3DVertex
|
||||
S3DVertex2TCoords(const S3DVertex& o) : S3DVertex(o) {}
|
||||
constexpr S3DVertex2TCoords(const S3DVertex &o) :
|
||||
S3DVertex(o) {}
|
||||
|
||||
//! Second set of texture coordinates
|
||||
core::vector2d<f32> TCoords2;
|
||||
core::vector2df TCoords2;
|
||||
|
||||
//! Equality operator
|
||||
bool operator==(const S3DVertex2TCoords& other) const
|
||||
constexpr bool operator==(const S3DVertex2TCoords &other) const
|
||||
{
|
||||
return ((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) &&
|
||||
(TCoords2 == other.TCoords2));
|
||||
}
|
||||
|
||||
//! Inequality operator
|
||||
bool operator!=(const S3DVertex2TCoords& other) const
|
||||
constexpr bool operator!=(const S3DVertex2TCoords &other) const
|
||||
{
|
||||
return ((static_cast<S3DVertex>(*this) != static_cast<const S3DVertex &>(other)) ||
|
||||
(TCoords2 != other.TCoords2));
|
||||
}
|
||||
|
||||
bool operator<(const S3DVertex2TCoords& other) const
|
||||
constexpr bool operator<(const S3DVertex2TCoords &other) const
|
||||
{
|
||||
return ((static_cast<S3DVertex>(*this) < other) ||
|
||||
((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) && (TCoords2 < other.TCoords2)));
|
||||
|
@ -184,7 +192,6 @@ struct S3DVertex2TCoords : public S3DVertex
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
//! Vertex with a tangent and binormal vector.
|
||||
/** Usually used for tangent space normal mapping.
|
||||
Usually tangent and binormal get send to shaders as texture coordinate sets 1 and 2.
|
||||
|
@ -192,30 +199,34 @@ struct S3DVertex2TCoords : public S3DVertex
|
|||
struct S3DVertexTangents : public S3DVertex
|
||||
{
|
||||
//! default constructor
|
||||
S3DVertexTangents() : S3DVertex() { }
|
||||
S3DVertexTangents() :
|
||||
S3DVertex() {}
|
||||
|
||||
//! constructor
|
||||
S3DVertexTangents(f32 x, f32 y, f32 z, f32 nx=0.0f, f32 ny=0.0f, f32 nz=0.0f,
|
||||
constexpr S3DVertexTangents(f32 x, f32 y, f32 z, f32 nx = 0.0f, f32 ny = 0.0f, f32 nz = 0.0f,
|
||||
SColor c = 0xFFFFFFFF, f32 tu = 0.0f, f32 tv = 0.0f,
|
||||
f32 tanx = 0.0f, f32 tany = 0.0f, f32 tanz = 0.0f,
|
||||
f32 bx=0.0f, f32 by=0.0f, f32 bz=0.0f)
|
||||
: S3DVertex(x,y,z, nx,ny,nz, c, tu,tv), Tangent(tanx,tany,tanz), Binormal(bx,by,bz) { }
|
||||
f32 bx = 0.0f, f32 by = 0.0f, f32 bz = 0.0f) :
|
||||
S3DVertex(x, y, z, nx, ny, nz, c, tu, tv),
|
||||
Tangent(tanx, tany, tanz), Binormal(bx, by, bz) {}
|
||||
|
||||
//! constructor
|
||||
S3DVertexTangents(const core::vector3df& pos, SColor c,
|
||||
const core::vector2df& tcoords)
|
||||
: S3DVertex(pos, core::vector3df(), c, tcoords) { }
|
||||
constexpr S3DVertexTangents(const core::vector3df &pos, SColor c,
|
||||
const core::vector2df &tcoords) :
|
||||
S3DVertex(pos, core::vector3df(), c, tcoords) {}
|
||||
|
||||
//! constructor
|
||||
S3DVertexTangents(const core::vector3df& pos,
|
||||
constexpr S3DVertexTangents(const core::vector3df &pos,
|
||||
const core::vector3df &normal, SColor c,
|
||||
const core::vector2df &tcoords,
|
||||
const core::vector3df &tangent = core::vector3df(),
|
||||
const core::vector3df& binormal=core::vector3df())
|
||||
: S3DVertex(pos, normal, c, tcoords), Tangent(tangent), Binormal(binormal) { }
|
||||
const core::vector3df &binormal = core::vector3df()) :
|
||||
S3DVertex(pos, normal, c, tcoords),
|
||||
Tangent(tangent), Binormal(binormal) {}
|
||||
|
||||
//! constructor from S3DVertex
|
||||
S3DVertexTangents(const S3DVertex& o) : S3DVertex(o) {}
|
||||
constexpr S3DVertexTangents(const S3DVertex &o) :
|
||||
S3DVertex(o) {}
|
||||
|
||||
//! Tangent vector along the x-axis of the texture
|
||||
core::vector3df Tangent;
|
||||
|
@ -223,21 +234,21 @@ struct S3DVertexTangents : public S3DVertex
|
|||
//! Binormal vector (tangent x normal)
|
||||
core::vector3df Binormal;
|
||||
|
||||
bool operator==(const S3DVertexTangents& other) const
|
||||
constexpr bool operator==(const S3DVertexTangents &other) const
|
||||
{
|
||||
return ((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) &&
|
||||
(Tangent == other.Tangent) &&
|
||||
(Binormal == other.Binormal));
|
||||
}
|
||||
|
||||
bool operator!=(const S3DVertexTangents& other) const
|
||||
constexpr bool operator!=(const S3DVertexTangents &other) const
|
||||
{
|
||||
return ((static_cast<S3DVertex>(*this) != static_cast<const S3DVertex &>(other)) ||
|
||||
(Tangent != other.Tangent) ||
|
||||
(Binormal != other.Binormal));
|
||||
}
|
||||
|
||||
bool operator<(const S3DVertexTangents& other) const
|
||||
constexpr bool operator<(const S3DVertexTangents &other) const
|
||||
{
|
||||
return ((static_cast<S3DVertex>(*this) < other) ||
|
||||
((static_cast<S3DVertex>(*this) == static_cast<const S3DVertex &>(other)) && (Tangent < other.Tangent)) ||
|
||||
|
@ -261,12 +272,9 @@ struct S3DVertexTangents : public S3DVertex
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
inline u32 getVertexPitchFromType(E_VERTEX_TYPE vertexType)
|
||||
{
|
||||
switch (vertexType)
|
||||
{
|
||||
switch (vertexType) {
|
||||
case video::EVT_2TCOORDS:
|
||||
return sizeof(video::S3DVertex2TCoords);
|
||||
case video::EVT_TANGENTS:
|
||||
|
@ -276,9 +284,5 @@ inline u32 getVertexPitchFromType(E_VERTEX_TYPE vertexType)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __S_ANIMATED_MESH_H_INCLUDED__
|
||||
#define __S_ANIMATED_MESH_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IAnimatedMesh.h"
|
||||
#include "IMesh.h"
|
||||
|
@ -19,7 +18,8 @@ namespace scene
|
|||
struct SAnimatedMesh : public IAnimatedMesh
|
||||
{
|
||||
//! constructor
|
||||
SAnimatedMesh(scene::IMesh* mesh=0, scene::E_ANIMATED_MESH_TYPE type=scene::EAMT_UNKNOWN) : IAnimatedMesh(), FramesPerSecond(25.f), Type(type)
|
||||
SAnimatedMesh(scene::IMesh *mesh = 0, scene::E_ANIMATED_MESH_TYPE type = scene::EAMT_UNKNOWN) :
|
||||
IAnimatedMesh(), FramesPerSecond(25.f), Type(type)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("SAnimatedMesh");
|
||||
|
@ -77,8 +77,7 @@ namespace scene
|
|||
//! adds a Mesh
|
||||
void addMesh(IMesh *mesh)
|
||||
{
|
||||
if (mesh)
|
||||
{
|
||||
if (mesh) {
|
||||
mesh->grab();
|
||||
Meshes.push_back(mesh);
|
||||
}
|
||||
|
@ -174,9 +173,5 @@ namespace scene
|
|||
E_ANIMATED_MESH_TYPE Type;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
160
include/SColor.h
160
include/SColor.h
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __COLOR_H_INCLUDED__
|
||||
#define __COLOR_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "irrTypes.h"
|
||||
#include "irrMath.h"
|
||||
|
@ -89,8 +88,7 @@ namespace video
|
|||
};
|
||||
|
||||
//! Names for ECOLOR_FORMAT types
|
||||
const c8* const ColorFormatNames[ECF_UNKNOWN+2] =
|
||||
{
|
||||
const c8 *const ColorFormatNames[ECF_UNKNOWN + 2] = {
|
||||
"A1R5G5B5",
|
||||
"R5G6B5",
|
||||
"R8G8B8",
|
||||
|
@ -109,10 +107,9 @@ namespace video
|
|||
"D32",
|
||||
"D24S8",
|
||||
"UNKNOWN",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
|
||||
//! Creates a 16 bit A1R5G5B5 color
|
||||
inline u16 RGBA16(u32 r, u32 g, u32 b, u32 a = 0xFF)
|
||||
{
|
||||
|
@ -122,14 +119,12 @@ namespace video
|
|||
(b & 0xF8) >> 3);
|
||||
}
|
||||
|
||||
|
||||
//! Creates a 16 bit A1R5G5B5 color
|
||||
inline u16 RGB16(u32 r, u32 g, u32 b)
|
||||
{
|
||||
return RGBA16(r, g, b);
|
||||
}
|
||||
|
||||
|
||||
//! Creates a 16bit A1R5G5B5 color, based on 16bit input values
|
||||
inline u16 RGB16from16(u16 r, u16 g, u16 b)
|
||||
{
|
||||
|
@ -139,7 +134,6 @@ namespace video
|
|||
(b & 0x1F));
|
||||
}
|
||||
|
||||
|
||||
//! Converts a 32bit (X8R8G8B8) color to a 16bit A1R5G5B5 color
|
||||
inline u16 X8R8G8B8toA1R5G5B5(u32 color)
|
||||
{
|
||||
|
@ -149,7 +143,6 @@ namespace video
|
|||
(color & 0x000000F8) >> 3);
|
||||
}
|
||||
|
||||
|
||||
//! Converts a 32bit (A8R8G8B8) color to a 16bit A1R5G5B5 color
|
||||
inline u16 A8R8G8B8toA1R5G5B5(u32 color)
|
||||
{
|
||||
|
@ -159,7 +152,6 @@ namespace video
|
|||
(color & 0x000000F8) >> 3);
|
||||
}
|
||||
|
||||
|
||||
//! Converts a 32bit (A8R8G8B8) color to a 16bit R5G6B5 color
|
||||
inline u16 A8R8G8B8toR5G6B5(u32 color)
|
||||
{
|
||||
|
@ -168,7 +160,6 @@ namespace video
|
|||
(color & 0x000000F8) >> 3);
|
||||
}
|
||||
|
||||
|
||||
//! Convert A8R8G8B8 Color from A1R5G5B5 color
|
||||
/** build a nicer 32bit Color by extending dest lower bits with source high bits. */
|
||||
inline u32 A1R5G5B5toA8R8G8B8(u16 color)
|
||||
|
@ -176,11 +167,9 @@ namespace video
|
|||
return (((-((s32)color & 0x00008000) >> (s32)31) & 0xFF000000) |
|
||||
((color & 0x00007C00) << 9) | ((color & 0x00007000) << 4) |
|
||||
((color & 0x000003E0) << 6) | ((color & 0x00000380) << 1) |
|
||||
(( color & 0x0000001F ) << 3) | (( color & 0x0000001C ) >> 2)
|
||||
);
|
||||
((color & 0x0000001F) << 3) | ((color & 0x0000001C) >> 2));
|
||||
}
|
||||
|
||||
|
||||
//! Returns A8R8G8B8 Color from R5G6B5 color
|
||||
inline u32 R5G6B5toA8R8G8B8(u16 color)
|
||||
{
|
||||
|
@ -190,22 +179,18 @@ namespace video
|
|||
((color & 0x001F) << 3);
|
||||
}
|
||||
|
||||
|
||||
//! Returns A1R5G5B5 Color from R5G6B5 color
|
||||
inline u16 R5G6B5toA1R5G5B5(u16 color)
|
||||
{
|
||||
return 0x8000 | (((color & 0xFFC0) >> 1) | (color & 0x1F));
|
||||
}
|
||||
|
||||
|
||||
//! Returns R5G6B5 Color from A1R5G5B5 color
|
||||
inline u16 A1R5G5B5toR5G6B5(u16 color)
|
||||
{
|
||||
return (((color & 0x7FE0) << 1) | (color & 0x1F));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//! Returns the alpha component from A1R5G5B5 color
|
||||
/** In Irrlicht, alpha refers to opacity.
|
||||
\return The alpha value of the color. 0 is transparent, 1 is opaque. */
|
||||
|
@ -214,7 +199,6 @@ namespace video
|
|||
return ((color >> 15) & 0x1);
|
||||
}
|
||||
|
||||
|
||||
//! Returns the red component from A1R5G5B5 color.
|
||||
/** Shift left by 3 to get 8 bit value. */
|
||||
inline u32 getRed(u16 color)
|
||||
|
@ -222,7 +206,6 @@ namespace video
|
|||
return ((color >> 10) & 0x1F);
|
||||
}
|
||||
|
||||
|
||||
//! Returns the green component from A1R5G5B5 color
|
||||
/** Shift left by 3 to get 8 bit value. */
|
||||
inline u32 getGreen(u16 color)
|
||||
|
@ -230,7 +213,6 @@ namespace video
|
|||
return ((color >> 5) & 0x1F);
|
||||
}
|
||||
|
||||
|
||||
//! Returns the blue component from A1R5G5B5 color
|
||||
/** Shift left by 3 to get 8 bit value. */
|
||||
inline u32 getBlue(u16 color)
|
||||
|
@ -238,14 +220,12 @@ namespace video
|
|||
return (color & 0x1F);
|
||||
}
|
||||
|
||||
|
||||
//! Returns the average from a 16 bit A1R5G5B5 color
|
||||
inline s32 getAverage(s16 color)
|
||||
{
|
||||
return ((getRed(color) << 3) + (getGreen(color) << 3) + (getBlue(color) << 3)) / 3;
|
||||
}
|
||||
|
||||
|
||||
//! Class representing a 32 bit ARGB color.
|
||||
/** The color values for alpha, red, green, and blue are
|
||||
stored in a single u32. So all four values may be between 0 and 255.
|
||||
|
@ -258,19 +238,18 @@ namespace video
|
|||
class SColor
|
||||
{
|
||||
public:
|
||||
|
||||
//! Constructor of the Color. Does nothing.
|
||||
/** The color value is not initialized to save time. */
|
||||
SColor() {}
|
||||
|
||||
//! Constructs the color from 4 values representing the alpha, red, green and blue component.
|
||||
/** Must be values between 0 and 255. */
|
||||
SColor (u32 a, u32 r, u32 g, u32 b)
|
||||
: color(((a & 0xff)<<24) | ((r & 0xff)<<16) | ((g & 0xff)<<8) | (b & 0xff)) {}
|
||||
constexpr SColor(u32 a, u32 r, u32 g, u32 b) :
|
||||
color(((a & 0xff) << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff)) {}
|
||||
|
||||
//! Constructs the color from a 32 bit value. Could be another color.
|
||||
SColor(u32 clr)
|
||||
: color(clr) {}
|
||||
constexpr SColor(u32 clr) :
|
||||
color(clr) {}
|
||||
|
||||
//! Returns the alpha component of the color.
|
||||
/** The alpha component defines how opaque a color is.
|
||||
|
@ -419,13 +398,17 @@ namespace video
|
|||
|
||||
return SColor(
|
||||
core::clamp(core::floor32(
|
||||
getAlpha() * mul0 + c1.getAlpha() * mul1 + c2.getAlpha() * mul2 ), 0, 255 ),
|
||||
getAlpha() * mul0 + c1.getAlpha() * mul1 + c2.getAlpha() * mul2),
|
||||
0, 255),
|
||||
core::clamp(core::floor32(
|
||||
getRed() * mul0 + c1.getRed() * mul1 + c2.getRed() * mul2 ), 0, 255 ),
|
||||
getRed() * mul0 + c1.getRed() * mul1 + c2.getRed() * mul2),
|
||||
0, 255),
|
||||
core::clamp(core::floor32(
|
||||
getGreen() * mul0 + c1.getGreen() * mul1 + c2.getGreen() * mul2 ), 0, 255 ),
|
||||
getGreen() * mul0 + c1.getGreen() * mul1 + c2.getGreen() * mul2),
|
||||
0, 255),
|
||||
core::clamp(core::floor32(
|
||||
getBlue() * mul0 + c1.getBlue() * mul1 + c2.getBlue() * mul2 ), 0, 255 ));
|
||||
getBlue() * mul0 + c1.getBlue() * mul1 + c2.getBlue() * mul2),
|
||||
0, 255));
|
||||
}
|
||||
|
||||
//! set the color by expecting data in the given format
|
||||
|
@ -434,8 +417,7 @@ namespace video
|
|||
*/
|
||||
void setData(const void *data, ECOLOR_FORMAT format)
|
||||
{
|
||||
switch (format)
|
||||
{
|
||||
switch (format) {
|
||||
case ECF_A1R5G5B5:
|
||||
color = A1R5G5B5toA8R8G8B8(*(u16 *)data);
|
||||
break;
|
||||
|
@ -445,12 +427,10 @@ namespace video
|
|||
case ECF_A8R8G8B8:
|
||||
color = *(u32 *)data;
|
||||
break;
|
||||
case ECF_R8G8B8:
|
||||
{
|
||||
case ECF_R8G8B8: {
|
||||
const u8 *p = (u8 *)data;
|
||||
set(255, p[0], p[1], p[2]);
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
default:
|
||||
color = 0xffffffff;
|
||||
break;
|
||||
|
@ -463,37 +443,28 @@ namespace video
|
|||
*/
|
||||
void getData(void *data, ECOLOR_FORMAT format) const
|
||||
{
|
||||
switch(format)
|
||||
{
|
||||
case ECF_A1R5G5B5:
|
||||
{
|
||||
switch (format) {
|
||||
case ECF_A1R5G5B5: {
|
||||
u16 *dest = (u16 *)data;
|
||||
*dest = video::A8R8G8B8toA1R5G5B5(color);
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
|
||||
case ECF_R5G6B5:
|
||||
{
|
||||
case ECF_R5G6B5: {
|
||||
u16 *dest = (u16 *)data;
|
||||
*dest = video::A8R8G8B8toR5G6B5(color);
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
|
||||
case ECF_R8G8B8:
|
||||
{
|
||||
case ECF_R8G8B8: {
|
||||
u8 *dest = (u8 *)data;
|
||||
dest[0] = (u8)getRed();
|
||||
dest[1] = (u8)getGreen();
|
||||
dest[2] = (u8)getBlue();
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
|
||||
case ECF_A8R8G8B8:
|
||||
{
|
||||
case ECF_A8R8G8B8: {
|
||||
u32 *dest = (u32 *)data;
|
||||
*dest = color;
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
@ -504,7 +475,6 @@ namespace video
|
|||
u32 color;
|
||||
};
|
||||
|
||||
|
||||
//! Class representing a color with four floats.
|
||||
/** The color values for red, green, blue
|
||||
and alpha are each stored in a 32 bit floating point variable.
|
||||
|
@ -517,7 +487,8 @@ namespace video
|
|||
public:
|
||||
//! Default constructor for SColorf.
|
||||
/** Sets red, green and blue to 0.0f and alpha to 1.0f. */
|
||||
SColorf() : r(0.0f), g(0.0f), b(0.0f), a(1.0f) {}
|
||||
SColorf() :
|
||||
r(0.0f), g(0.0f), b(0.0f), a(1.0f) {}
|
||||
|
||||
//! Constructs a color from up to four color values: red, green, blue, and alpha.
|
||||
/** \param r: Red color component. Should be a value between
|
||||
|
@ -530,7 +501,8 @@ namespace video
|
|||
component defines how transparent a color should be. Has to be
|
||||
a value between 0.0f and 1.0f, 1.0f means not transparent
|
||||
(opaque), 0.0f means fully transparent. */
|
||||
SColorf(f32 r, f32 g, f32 b, f32 a = 1.0f) : r(r), g(g), b(b), a(a) {}
|
||||
SColorf(f32 r, f32 g, f32 b, f32 a = 1.0f) :
|
||||
r(r), g(g), b(b), a(a) {}
|
||||
|
||||
//! Constructs a color from 32 bit Color.
|
||||
/** \param c: 32 bit color from which this SColorf class is
|
||||
|
@ -557,7 +529,12 @@ namespace video
|
|||
no green (=black) and 1.0f, meaning full green.
|
||||
\param bb: Blue color component. Should be a value between 0.0f meaning
|
||||
no blue (=black) and 1.0f, meaning full blue. */
|
||||
void set(f32 rr, f32 gg, f32 bb) {r = rr; g =gg; b = bb; }
|
||||
void set(f32 rr, f32 gg, f32 bb)
|
||||
{
|
||||
r = rr;
|
||||
g = gg;
|
||||
b = bb;
|
||||
}
|
||||
|
||||
//! Sets all four color components to new values at once.
|
||||
/** \param aa: Alpha component. Should be a value between 0.0f meaning
|
||||
|
@ -568,7 +545,13 @@ namespace video
|
|||
no green and 1.0f, meaning full green.
|
||||
\param bb: Blue color component. Should be a value between 0.0f meaning
|
||||
no blue and 1.0f, meaning full blue. */
|
||||
void set(f32 aa, f32 rr, f32 gg, f32 bb) {a = aa; r = rr; g =gg; b = bb; }
|
||||
void set(f32 aa, f32 rr, f32 gg, f32 bb)
|
||||
{
|
||||
a = aa;
|
||||
r = rr;
|
||||
g = gg;
|
||||
b = bb;
|
||||
}
|
||||
|
||||
//! Interpolates the color with a f32 value to another color
|
||||
/** \param other: Other color
|
||||
|
@ -602,16 +585,22 @@ namespace video
|
|||
a * mul0 + c1.a * mul1 + c2.a * mul2);
|
||||
}
|
||||
|
||||
|
||||
//! Sets a color component by index. R=0, G=1, B=2, A=3
|
||||
void setColorComponentValue(s32 index, f32 value)
|
||||
{
|
||||
switch(index)
|
||||
{
|
||||
case 0: r = value; break;
|
||||
case 1: g = value; break;
|
||||
case 2: b = value; break;
|
||||
case 3: a = value; break;
|
||||
switch (index) {
|
||||
case 0:
|
||||
r = value;
|
||||
break;
|
||||
case 1:
|
||||
g = value;
|
||||
break;
|
||||
case 2:
|
||||
b = value;
|
||||
break;
|
||||
case 3:
|
||||
a = value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -640,7 +629,6 @@ namespace video
|
|||
f32 a;
|
||||
};
|
||||
|
||||
|
||||
//! Class representing a color in HSL format
|
||||
/** The color values for hue, saturation, luminance
|
||||
are stored in 32bit floating point variables. Hue is in range [0,360],
|
||||
|
@ -649,8 +637,8 @@ namespace video
|
|||
class SColorHSL
|
||||
{
|
||||
public:
|
||||
SColorHSL ( f32 h = 0.f, f32 s = 0.f, f32 l = 0.f )
|
||||
: Hue ( h ), Saturation ( s ), Luminance ( l ) {}
|
||||
constexpr SColorHSL(f32 h = 0.f, f32 s = 0.f, f32 l = 0.f) :
|
||||
Hue(h), Saturation(s), Luminance(l) {}
|
||||
|
||||
void fromRGB(const SColorf &color);
|
||||
void toRGB(SColorf &color) const;
|
||||
|
@ -661,7 +649,6 @@ namespace video
|
|||
|
||||
private:
|
||||
inline f32 toRGB1(f32 rm1, f32 rm2, f32 rh) const;
|
||||
|
||||
};
|
||||
|
||||
inline void SColorHSL::fromRGB(const SColorf &color)
|
||||
|
@ -669,20 +656,16 @@ namespace video
|
|||
const f32 maxVal = core::max_(color.getRed(), color.getGreen(), color.getBlue());
|
||||
const f32 minVal = (f32)core::min_(color.getRed(), color.getGreen(), color.getBlue());
|
||||
Luminance = (maxVal + minVal) * 50;
|
||||
if (core::equals(maxVal, minVal))
|
||||
{
|
||||
if (core::equals(maxVal, minVal)) {
|
||||
Hue = 0.f;
|
||||
Saturation = 0.f;
|
||||
return;
|
||||
}
|
||||
|
||||
const f32 delta = maxVal - minVal;
|
||||
if ( Luminance <= 50 )
|
||||
{
|
||||
if (Luminance <= 50) {
|
||||
Saturation = (delta) / (maxVal + minVal);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
Saturation = (delta) / (2 - maxVal - minVal);
|
||||
}
|
||||
Saturation *= 100;
|
||||
|
@ -699,24 +682,19 @@ namespace video
|
|||
Hue += 360;
|
||||
}
|
||||
|
||||
|
||||
inline void SColorHSL::toRGB(SColorf &color) const
|
||||
{
|
||||
const f32 l = Luminance / 100;
|
||||
if (core::iszero(Saturation)) // grey
|
||||
{
|
||||
if (core::iszero(Saturation)) { // grey
|
||||
color.set(l, l, l);
|
||||
return;
|
||||
}
|
||||
|
||||
f32 rm2;
|
||||
|
||||
if ( Luminance <= 50 )
|
||||
{
|
||||
if (Luminance <= 50) {
|
||||
rm2 = l + l * (Saturation / 100);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
rm2 = l + (1 - l) * (Saturation / 100);
|
||||
}
|
||||
|
||||
|
@ -725,11 +703,9 @@ namespace video
|
|||
const f32 h = Hue / 360.0f;
|
||||
color.set(toRGB1(rm1, rm2, h + 1.f / 3.f),
|
||||
toRGB1(rm1, rm2, h),
|
||||
toRGB1(rm1, rm2, h - 1.f/3.f)
|
||||
);
|
||||
toRGB1(rm1, rm2, h - 1.f / 3.f));
|
||||
}
|
||||
|
||||
|
||||
// algorithm from Foley/Van-Dam
|
||||
inline f32 SColorHSL::toRGB1(f32 rm1, f32 rm2, f32 rh) const
|
||||
{
|
||||
|
@ -750,5 +726,3 @@ namespace video
|
|||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __S_EXPOSED_VIDEO_DATA_H_INCLUDED__
|
||||
#define __S_EXPOSED_VIDEO_DATA_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -18,8 +17,18 @@ you are using the software or the null device.
|
|||
*/
|
||||
struct SExposedVideoData
|
||||
{
|
||||
SExposedVideoData() {OpenGLWin32.HDc=0; OpenGLWin32.HRc=0; OpenGLWin32.HWnd=0;}
|
||||
explicit SExposedVideoData(void* Window) {OpenGLWin32.HDc=0; OpenGLWin32.HRc=0; OpenGLWin32.HWnd=Window;}
|
||||
SExposedVideoData()
|
||||
{
|
||||
OpenGLWin32.HDc = 0;
|
||||
OpenGLWin32.HRc = 0;
|
||||
OpenGLWin32.HWnd = 0;
|
||||
}
|
||||
explicit SExposedVideoData(void *Window)
|
||||
{
|
||||
OpenGLWin32.HDc = 0;
|
||||
OpenGLWin32.HRc = 0;
|
||||
OpenGLWin32.HWnd = Window;
|
||||
}
|
||||
|
||||
struct SOpenGLWin32
|
||||
{
|
||||
|
@ -78,7 +87,3 @@ struct SExposedVideoData
|
|||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_IRRLICHT_CREATION_PARAMETERS_H_INCLUDED__
|
||||
#define __I_IRRLICHT_CREATION_PARAMETERS_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "EDriverTypes.h"
|
||||
#include "EDeviceTypes.h"
|
||||
|
@ -35,10 +34,8 @@ namespace irr
|
|||
Stencilbuffer(true),
|
||||
Vsync(false),
|
||||
AntiAlias(0),
|
||||
HandleSRGB(false),
|
||||
WithAlphaChannel(false),
|
||||
Doublebuffer(true),
|
||||
IgnoreInput(false),
|
||||
Stereobuffer(false),
|
||||
EventReceiver(0),
|
||||
WindowId(0),
|
||||
|
@ -59,7 +56,9 @@ namespace irr
|
|||
|
||||
SIrrlichtCreationParameters(const SIrrlichtCreationParameters &other) :
|
||||
SDK_version_do_not_use(IRRLICHT_SDK_VERSION)
|
||||
{*this = other;}
|
||||
{
|
||||
*this = other;
|
||||
}
|
||||
|
||||
SIrrlichtCreationParameters &operator=(const SIrrlichtCreationParameters &other)
|
||||
{
|
||||
|
@ -75,10 +74,8 @@ namespace irr
|
|||
Stencilbuffer = other.Stencilbuffer;
|
||||
Vsync = other.Vsync;
|
||||
AntiAlias = other.AntiAlias;
|
||||
HandleSRGB = other.HandleSRGB;
|
||||
WithAlphaChannel = other.WithAlphaChannel;
|
||||
Doublebuffer = other.Doublebuffer;
|
||||
IgnoreInput = other.IgnoreInput;
|
||||
Stereobuffer = other.Stereobuffer;
|
||||
EventReceiver = other.EventReceiver;
|
||||
WindowId = other.WindowId;
|
||||
|
@ -159,21 +156,6 @@ namespace irr
|
|||
Default value: 0 - disabled */
|
||||
u8 AntiAlias;
|
||||
|
||||
//! Flag to enable proper sRGB and linear color handling
|
||||
/** In most situations, it is desirable to have the color handling in
|
||||
non-linear sRGB color space, and only do the intermediate color
|
||||
calculations in linear RGB space. If this flag is enabled, the device and
|
||||
driver try to assure that all color input and output are color corrected
|
||||
and only the internal color representation is linear. This means, that
|
||||
the color output is properly gamma-adjusted to provide the brighter
|
||||
colors for monitor display. And that blending and lighting give a more
|
||||
natural look, due to proper conversion from non-linear colors into linear
|
||||
color space for blend operations. If this flag is enabled, all texture colors
|
||||
(which are usually in sRGB space) are correctly displayed. However vertex colors
|
||||
and other explicitly set values have to be manually encoded in linear color space.
|
||||
Default value: false. */
|
||||
bool HandleSRGB;
|
||||
|
||||
//! Whether the main framebuffer uses an alpha channel.
|
||||
/** In some situations it might be desirable to get a color
|
||||
buffer with an alpha channel, e.g. when rendering into a
|
||||
|
@ -193,13 +175,6 @@ namespace irr
|
|||
single buffers. Default value: true */
|
||||
bool Doublebuffer;
|
||||
|
||||
//! Specifies if the device should ignore input events
|
||||
/** This is only relevant when using external I/O handlers.
|
||||
External windows need to take care of this themselves.
|
||||
Currently only supported by X11.
|
||||
Default value: false */
|
||||
bool IgnoreInput;
|
||||
|
||||
//! Specifies if the device should use stereo buffers
|
||||
/** Some high-end gfx cards support two framebuffers for direct
|
||||
support of stereoscopic output devices. If this flag is set the
|
||||
|
@ -289,8 +264,4 @@ namespace irr
|
|||
irr::io::path OGLES2ShaderPath;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __S_MATERIAL_H_INCLUDED__
|
||||
#define __S_MATERIAL_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "SColor.h"
|
||||
#include "matrix4.h"
|
||||
|
@ -164,8 +163,7 @@ namespace video
|
|||
//! has blend factor alphablending
|
||||
inline bool textureBlendFunc_hasAlpha(const E_BLEND_FACTOR factor)
|
||||
{
|
||||
switch ( factor )
|
||||
{
|
||||
switch (factor) {
|
||||
case EBF_SRC_ALPHA:
|
||||
case EBF_ONE_MINUS_SRC_ALPHA:
|
||||
case EBF_DST_ALPHA:
|
||||
|
@ -177,7 +175,6 @@ namespace video
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//! These flags are used to specify the anti-aliasing and smoothing modes
|
||||
/** Techniques supported are multisampling, geometry smoothing, and alpha
|
||||
to coverage.
|
||||
|
@ -222,11 +219,10 @@ namespace video
|
|||
};
|
||||
|
||||
//! Names for polygon offset direction
|
||||
const c8* const PolygonOffsetDirectionNames[] =
|
||||
{
|
||||
const c8 *const PolygonOffsetDirectionNames[] = {
|
||||
"Back",
|
||||
"Front",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
//! For SMaterial.ZWriteEnable
|
||||
|
@ -247,16 +243,13 @@ namespace video
|
|||
};
|
||||
|
||||
//! Names for E_ZWRITE
|
||||
const c8* const ZWriteNames[] =
|
||||
{
|
||||
const c8 *const ZWriteNames[] = {
|
||||
"Off",
|
||||
"Auto",
|
||||
"On",
|
||||
0
|
||||
0,
|
||||
};
|
||||
|
||||
|
||||
|
||||
//! Maximum number of texture an SMaterial can have.
|
||||
/** SMaterial might ignore some textures in most function, like assignment and comparison,
|
||||
when SIrrlichtCreationParameters::MaxTextureUnits is set to a lower number.
|
||||
|
@ -280,7 +273,8 @@ namespace video
|
|||
GouraudShading(true), Lighting(true), ZWriteEnable(EZW_AUTO),
|
||||
BackfaceCulling(true), FrontfaceCulling(false), FogEnable(false),
|
||||
NormalizeNormals(false), UseMipMaps(true)
|
||||
{ }
|
||||
{
|
||||
}
|
||||
|
||||
//! Texture layer array.
|
||||
SMaterialLayer TextureLayers[MATERIAL_MAX_TEXTURES];
|
||||
|
@ -431,7 +425,8 @@ namespace video
|
|||
/** Useful for setting properties which are not per material, but per
|
||||
texture layer, e.g. bilinear filtering. */
|
||||
template <typename F>
|
||||
void forEachTexture(F &&fn) {
|
||||
void forEachTexture(F &&fn)
|
||||
{
|
||||
for (u32 i = 0; i < MATERIAL_MAX_TEXTURES; i++) {
|
||||
fn(TextureLayers[i]);
|
||||
}
|
||||
|
@ -516,10 +511,8 @@ namespace video
|
|||
BlendFactor != b.BlendFactor ||
|
||||
PolygonOffsetDepthBias != b.PolygonOffsetDepthBias ||
|
||||
PolygonOffsetSlopeScale != b.PolygonOffsetSlopeScale ||
|
||||
UseMipMaps != b.UseMipMaps
|
||||
;
|
||||
for (u32 i=0; (i<MATERIAL_MAX_TEXTURES) && !different; ++i)
|
||||
{
|
||||
UseMipMaps != b.UseMipMaps;
|
||||
for (u32 i = 0; (i < MATERIAL_MAX_TEXTURES) && !different; ++i) {
|
||||
different |= (TextureLayers[i] != b.TextureLayers[i]);
|
||||
}
|
||||
return different;
|
||||
|
@ -529,13 +522,14 @@ namespace video
|
|||
/** \param b Material to compare to.
|
||||
\return True if the materials are equal, else false. */
|
||||
inline bool operator==(const SMaterial &b) const
|
||||
{ return !(b!=*this); }
|
||||
{
|
||||
return !(b != *this);
|
||||
}
|
||||
|
||||
//! Check if material needs alpha blending
|
||||
bool isAlphaBlendOperation() const
|
||||
{
|
||||
if (BlendOperation != EBO_NONE && BlendFactor != 0.f)
|
||||
{
|
||||
if (BlendOperation != EBO_NONE && BlendFactor != 0.f) {
|
||||
E_BLEND_FACTOR srcRGBFact = EBF_ZERO;
|
||||
E_BLEND_FACTOR dstRGBFact = EBF_ZERO;
|
||||
E_BLEND_FACTOR srcAlphaFact = EBF_ZERO;
|
||||
|
@ -546,8 +540,7 @@ namespace video
|
|||
unpack_textureBlendFuncSeparate(srcRGBFact, dstRGBFact, srcAlphaFact, dstAlphaFact, modulo, alphaSource, BlendFactor);
|
||||
|
||||
if (textureBlendFunc_hasAlpha(srcRGBFact) || textureBlendFunc_hasAlpha(dstRGBFact) ||
|
||||
textureBlendFunc_hasAlpha(srcAlphaFact) || textureBlendFunc_hasAlpha(dstAlphaFact))
|
||||
{
|
||||
textureBlendFunc_hasAlpha(srcAlphaFact) || textureBlendFunc_hasAlpha(dstAlphaFact)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -571,5 +564,3 @@ namespace video
|
|||
IRRLICHT_API extern SMaterial IdentityMaterial;
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __S_MATERIAL_LAYER_H_INCLUDED__
|
||||
#define __S_MATERIAL_LAYER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "matrix4.h"
|
||||
|
||||
|
@ -43,11 +42,11 @@ namespace video
|
|||
"texture_clamp_mirror_clamp_to_edge",
|
||||
"texture_clamp_mirror_clamp_to_border", 0};
|
||||
|
||||
|
||||
//! Texture minification filter.
|
||||
/** Used when scaling textures down. See the documentation on OpenGL's
|
||||
`GL_TEXTURE_MIN_FILTER` for more information. */
|
||||
enum E_TEXTURE_MIN_FILTER {
|
||||
enum E_TEXTURE_MIN_FILTER
|
||||
{
|
||||
//! Aka nearest-neighbor.
|
||||
ETMINF_NEAREST_MIPMAP_NEAREST = 0,
|
||||
//! Aka bilinear.
|
||||
|
@ -62,7 +61,8 @@ namespace video
|
|||
/** Used when scaling textures up. See the documentation on OpenGL's
|
||||
`GL_TEXTURE_MAG_FILTER` for more information.
|
||||
Note that mipmaps are only used for minification, not for magnification. */
|
||||
enum E_TEXTURE_MAG_FILTER {
|
||||
enum E_TEXTURE_MAG_FILTER
|
||||
{
|
||||
//! Aka nearest-neighbor.
|
||||
ETMAGF_NEAREST = 0,
|
||||
//! Aka bilinear.
|
||||
|
@ -75,7 +75,8 @@ namespace video
|
|||
{
|
||||
public:
|
||||
//! Default constructor
|
||||
SMaterialLayer() : Texture(0), TextureWrapU(ETC_REPEAT), TextureWrapV(ETC_REPEAT), TextureWrapW(ETC_REPEAT),
|
||||
SMaterialLayer() :
|
||||
Texture(0), TextureWrapU(ETC_REPEAT), TextureWrapV(ETC_REPEAT), TextureWrapW(ETC_REPEAT),
|
||||
MinFilter(ETMINF_LINEAR_MIPMAP_NEAREST), MagFilter(ETMAGF_LINEAR), AnisotropicFilter(0), LODBias(0), TextureMatrix(0)
|
||||
{
|
||||
}
|
||||
|
@ -92,8 +93,7 @@ namespace video
|
|||
//! Destructor
|
||||
~SMaterialLayer()
|
||||
{
|
||||
if ( TextureMatrix )
|
||||
{
|
||||
if (TextureMatrix) {
|
||||
delete TextureMatrix;
|
||||
}
|
||||
}
|
||||
|
@ -108,23 +108,17 @@ namespace video
|
|||
return *this;
|
||||
|
||||
Texture = other.Texture;
|
||||
if (TextureMatrix)
|
||||
{
|
||||
if (TextureMatrix) {
|
||||
if (other.TextureMatrix)
|
||||
*TextureMatrix = *other.TextureMatrix;
|
||||
else
|
||||
{
|
||||
else {
|
||||
delete TextureMatrix;
|
||||
TextureMatrix = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (other.TextureMatrix)
|
||||
{
|
||||
} else {
|
||||
if (other.TextureMatrix) {
|
||||
TextureMatrix = new core::matrix4(*other.TextureMatrix);
|
||||
}
|
||||
else
|
||||
} else
|
||||
TextureMatrix = 0;
|
||||
}
|
||||
TextureWrapU = other.TextureWrapU;
|
||||
|
@ -142,8 +136,7 @@ namespace video
|
|||
/** \return Texture matrix of this layer. */
|
||||
core::matrix4 &getTextureMatrix()
|
||||
{
|
||||
if (!TextureMatrix)
|
||||
{
|
||||
if (!TextureMatrix) {
|
||||
TextureMatrix = new core::matrix4();
|
||||
}
|
||||
return *TextureMatrix;
|
||||
|
@ -165,11 +158,9 @@ namespace video
|
|||
\param mat New texture matrix for this layer. */
|
||||
void setTextureMatrix(const core::matrix4 &mat)
|
||||
{
|
||||
if (!TextureMatrix)
|
||||
{
|
||||
if (!TextureMatrix) {
|
||||
TextureMatrix = new core::matrix4(mat);
|
||||
}
|
||||
else
|
||||
} else
|
||||
*TextureMatrix = mat;
|
||||
}
|
||||
|
||||
|
@ -199,7 +190,9 @@ namespace video
|
|||
/** \param b Layer to compare to.
|
||||
\return True if layers are equal, else false. */
|
||||
inline bool operator==(const SMaterialLayer &b) const
|
||||
{ return !(b!=*this); }
|
||||
{
|
||||
return !(b != *this);
|
||||
}
|
||||
|
||||
//! Texture
|
||||
ITexture *Texture;
|
||||
|
@ -243,5 +236,3 @@ namespace video
|
|||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif // __S_MATERIAL_LAYER_H_INCLUDED__
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __S_MESH_H_INCLUDED__
|
||||
#define __S_MESH_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IMesh.h"
|
||||
#include "IMeshBuffer.h"
|
||||
|
@ -42,7 +41,6 @@ namespace scene
|
|||
BoundingBox.reset(0.f, 0.f, 0.f);
|
||||
}
|
||||
|
||||
|
||||
//! returns amount of mesh buffers.
|
||||
u32 getMeshBufferCount() const override
|
||||
{
|
||||
|
@ -59,8 +57,7 @@ namespace scene
|
|||
/** reverse search */
|
||||
IMeshBuffer *getMeshBuffer(const video::SMaterial &material) const override
|
||||
{
|
||||
for (s32 i = (s32)MeshBuffers.size()-1; i >= 0; --i)
|
||||
{
|
||||
for (s32 i = (s32)MeshBuffers.size() - 1; i >= 0; --i) {
|
||||
if (material == MeshBuffers[i]->getMaterial())
|
||||
return MeshBuffers[i];
|
||||
}
|
||||
|
@ -84,21 +81,15 @@ namespace scene
|
|||
void recalculateBoundingBox()
|
||||
{
|
||||
bool hasMeshBufferBBox = false;
|
||||
for (u32 i=0; i<MeshBuffers.size(); ++i)
|
||||
{
|
||||
for (u32 i = 0; i < MeshBuffers.size(); ++i) {
|
||||
const core::aabbox3df &bb = MeshBuffers[i]->getBoundingBox();
|
||||
if ( !bb.isEmpty() )
|
||||
{
|
||||
if ( !hasMeshBufferBBox )
|
||||
{
|
||||
if (!bb.isEmpty()) {
|
||||
if (!hasMeshBufferBBox) {
|
||||
hasMeshBufferBBox = true;
|
||||
BoundingBox = bb;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
BoundingBox.addInternalBox(bb);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -110,8 +101,7 @@ namespace scene
|
|||
/** The bounding box is not updated automatically. */
|
||||
void addMeshBuffer(IMeshBuffer *buf)
|
||||
{
|
||||
if (buf)
|
||||
{
|
||||
if (buf) {
|
||||
buf->grab();
|
||||
MeshBuffers.push_back(buf);
|
||||
}
|
||||
|
@ -138,9 +128,5 @@ namespace scene
|
|||
core::aabbox3d<f32> BoundingBox;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -4,4 +4,3 @@
|
|||
|
||||
// replaced by template
|
||||
#include "CMeshBuffer.h"
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __S_OVERRIDE_MATERIAL_H_INCLUDED__
|
||||
#define __S_OVERRIDE_MATERIAL_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "SMaterial.h"
|
||||
|
||||
|
@ -44,8 +43,10 @@ namespace video
|
|||
|
||||
struct SMaterialTypeReplacement
|
||||
{
|
||||
SMaterialTypeReplacement(s32 original, u32 replacement) : Original(original), Replacement(replacement) {}
|
||||
SMaterialTypeReplacement(u32 replacement) : Original(-1), Replacement(replacement) {}
|
||||
SMaterialTypeReplacement(s32 original, u32 replacement) :
|
||||
Original(original), Replacement(replacement) {}
|
||||
SMaterialTypeReplacement(u32 replacement) :
|
||||
Original(-1), Replacement(replacement) {}
|
||||
|
||||
//! SMaterial.MaterialType to replace.
|
||||
//! -1 for all types or a specific value to only replace that one (which is either one of E_MATERIAL_TYPE or a shader material id)
|
||||
|
@ -59,7 +60,8 @@ namespace video
|
|||
core::array<SMaterialTypeReplacement> MaterialTypes;
|
||||
|
||||
//! Default constructor
|
||||
SOverrideMaterial() : EnableProps(0), EnablePasses(0), Enabled(false)
|
||||
SOverrideMaterial() :
|
||||
EnableProps(0), EnablePasses(0), Enabled(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -69,8 +71,7 @@ namespace video
|
|||
EnableProps = 0;
|
||||
EnablePasses = 0;
|
||||
Enabled = false;
|
||||
for (u32 i = 0; i < MATERIAL_MAX_TEXTURES; ++i)
|
||||
{
|
||||
for (u32 i = 0; i < MATERIAL_MAX_TEXTURES; ++i) {
|
||||
EnableLayerProps[i] = true; // doesn't do anything unless EnableProps is set, just saying by default all texture layers are affected by properties
|
||||
EnableTextures[i] = false;
|
||||
EnableLayers[i] = false;
|
||||
|
@ -81,75 +82,94 @@ namespace video
|
|||
//! Apply the enabled overrides
|
||||
void apply(SMaterial &material)
|
||||
{
|
||||
if (Enabled)
|
||||
{
|
||||
for (u32 i = 0; i < MaterialTypes.size(); ++i)
|
||||
{
|
||||
if (Enabled) {
|
||||
for (u32 i = 0; i < MaterialTypes.size(); ++i) {
|
||||
const SMaterialTypeReplacement &mtr = MaterialTypes[i];
|
||||
if (mtr.Original < 0 || (s32)mtr.Original == material.MaterialType)
|
||||
material.MaterialType = (E_MATERIAL_TYPE)mtr.Replacement;
|
||||
}
|
||||
for (u32 f=0; f<32; ++f)
|
||||
{
|
||||
for (u32 f = 0; f < 32; ++f) {
|
||||
const u32 num = (1 << f);
|
||||
if (EnableProps & num)
|
||||
{
|
||||
switch (num)
|
||||
{
|
||||
case EMP_WIREFRAME: material.Wireframe = Material.Wireframe; break;
|
||||
case EMP_POINTCLOUD: material.PointCloud = Material.PointCloud; break;
|
||||
case EMP_GOURAUD_SHADING: material.GouraudShading = Material.GouraudShading; break;
|
||||
case EMP_LIGHTING: material.Lighting = Material.Lighting; break;
|
||||
case EMP_ZBUFFER: material.ZBuffer = Material.ZBuffer; break;
|
||||
case EMP_ZWRITE_ENABLE: material.ZWriteEnable = Material.ZWriteEnable; break;
|
||||
case EMP_BACK_FACE_CULLING: material.BackfaceCulling = Material.BackfaceCulling; break;
|
||||
case EMP_FRONT_FACE_CULLING: material.FrontfaceCulling = Material.FrontfaceCulling; break;
|
||||
if (EnableProps & num) {
|
||||
switch (num) {
|
||||
case EMP_WIREFRAME:
|
||||
material.Wireframe = Material.Wireframe;
|
||||
break;
|
||||
case EMP_POINTCLOUD:
|
||||
material.PointCloud = Material.PointCloud;
|
||||
break;
|
||||
case EMP_GOURAUD_SHADING:
|
||||
material.GouraudShading = Material.GouraudShading;
|
||||
break;
|
||||
case EMP_LIGHTING:
|
||||
material.Lighting = Material.Lighting;
|
||||
break;
|
||||
case EMP_ZBUFFER:
|
||||
material.ZBuffer = Material.ZBuffer;
|
||||
break;
|
||||
case EMP_ZWRITE_ENABLE:
|
||||
material.ZWriteEnable = Material.ZWriteEnable;
|
||||
break;
|
||||
case EMP_BACK_FACE_CULLING:
|
||||
material.BackfaceCulling = Material.BackfaceCulling;
|
||||
break;
|
||||
case EMP_FRONT_FACE_CULLING:
|
||||
material.FrontfaceCulling = Material.FrontfaceCulling;
|
||||
break;
|
||||
case EMP_MIN_FILTER:
|
||||
for ( u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
|
||||
{
|
||||
if ( EnableLayerProps[i] )
|
||||
{
|
||||
for (u32 i = 0; i < MATERIAL_MAX_TEXTURES; ++i) {
|
||||
if (EnableLayerProps[i]) {
|
||||
material.TextureLayers[i].MinFilter = Material.TextureLayers[i].MinFilter;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EMP_MAG_FILTER:
|
||||
for ( u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
|
||||
{
|
||||
if ( EnableLayerProps[i] )
|
||||
{
|
||||
for (u32 i = 0; i < MATERIAL_MAX_TEXTURES; ++i) {
|
||||
if (EnableLayerProps[i]) {
|
||||
material.TextureLayers[i].MagFilter = Material.TextureLayers[i].MagFilter;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EMP_ANISOTROPIC_FILTER:
|
||||
for ( u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
|
||||
{
|
||||
if ( EnableLayerProps[i] )
|
||||
{
|
||||
for (u32 i = 0; i < MATERIAL_MAX_TEXTURES; ++i) {
|
||||
if (EnableLayerProps[i]) {
|
||||
material.TextureLayers[i].AnisotropicFilter = Material.TextureLayers[i].AnisotropicFilter;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EMP_FOG_ENABLE: material.FogEnable = Material.FogEnable; break;
|
||||
case EMP_NORMALIZE_NORMALS: material.NormalizeNormals = Material.NormalizeNormals; break;
|
||||
case EMP_FOG_ENABLE:
|
||||
material.FogEnable = Material.FogEnable;
|
||||
break;
|
||||
case EMP_NORMALIZE_NORMALS:
|
||||
material.NormalizeNormals = Material.NormalizeNormals;
|
||||
break;
|
||||
case EMP_TEXTURE_WRAP:
|
||||
for ( u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
|
||||
{
|
||||
if ( EnableLayerProps[i] )
|
||||
{
|
||||
for (u32 i = 0; i < MATERIAL_MAX_TEXTURES; ++i) {
|
||||
if (EnableLayerProps[i]) {
|
||||
material.TextureLayers[i].TextureWrapU = Material.TextureLayers[i].TextureWrapU;
|
||||
material.TextureLayers[i].TextureWrapV = Material.TextureLayers[i].TextureWrapV;
|
||||
material.TextureLayers[i].TextureWrapW = Material.TextureLayers[i].TextureWrapW;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EMP_ANTI_ALIASING: material.AntiAliasing = Material.AntiAliasing; break;
|
||||
case EMP_COLOR_MASK: material.ColorMask = Material.ColorMask; break;
|
||||
case EMP_COLOR_MATERIAL: material.ColorMaterial = Material.ColorMaterial; break;
|
||||
case EMP_USE_MIP_MAPS: material.UseMipMaps = Material.UseMipMaps; break;
|
||||
case EMP_BLEND_OPERATION: material.BlendOperation = Material.BlendOperation; break;
|
||||
case EMP_BLEND_FACTOR: material.BlendFactor = Material.BlendFactor; break;
|
||||
case EMP_ANTI_ALIASING:
|
||||
material.AntiAliasing = Material.AntiAliasing;
|
||||
break;
|
||||
case EMP_COLOR_MASK:
|
||||
material.ColorMask = Material.ColorMask;
|
||||
break;
|
||||
case EMP_COLOR_MATERIAL:
|
||||
material.ColorMaterial = Material.ColorMaterial;
|
||||
break;
|
||||
case EMP_USE_MIP_MAPS:
|
||||
material.UseMipMaps = Material.UseMipMaps;
|
||||
break;
|
||||
case EMP_BLEND_OPERATION:
|
||||
material.BlendOperation = Material.BlendOperation;
|
||||
break;
|
||||
case EMP_BLEND_FACTOR:
|
||||
material.BlendFactor = Material.BlendFactor;
|
||||
break;
|
||||
case EMP_POLYGON_OFFSET:
|
||||
material.PolygonOffsetDepthBias = Material.PolygonOffsetDepthBias;
|
||||
material.PolygonOffsetSlopeScale = Material.PolygonOffsetSlopeScale;
|
||||
|
@ -157,24 +177,16 @@ namespace video
|
|||
}
|
||||
}
|
||||
}
|
||||
for(u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i )
|
||||
{
|
||||
if ( EnableLayers[i] )
|
||||
{
|
||||
for (u32 i = 0; i < MATERIAL_MAX_TEXTURES; ++i) {
|
||||
if (EnableLayers[i]) {
|
||||
material.TextureLayers[i] = Material.TextureLayers[i];
|
||||
}
|
||||
else if ( EnableTextures[i] )
|
||||
{
|
||||
} else if (EnableTextures[i]) {
|
||||
material.TextureLayers[i].Texture = Material.TextureLayers[i].Texture;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
} // end namespace video
|
||||
} // end namespace irr
|
||||
|
||||
#endif // __S_OVERRIDE_MATERIAL_H_INCLUDED__
|
||||
|
||||
|
|
|
@ -2,19 +2,16 @@
|
|||
// This file is part of the "Irrlicht Engine".
|
||||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#ifndef __I_SKIN_MESH_BUFFER_H_INCLUDED__
|
||||
#define __I_SKIN_MESH_BUFFER_H_INCLUDED__
|
||||
#pragma once
|
||||
|
||||
#include "IMeshBuffer.h"
|
||||
#include "S3DVertex.h"
|
||||
|
||||
|
||||
namespace irr
|
||||
{
|
||||
namespace scene
|
||||
{
|
||||
|
||||
|
||||
//! A mesh buffer able to choose between S3DVertex2TCoords, S3DVertex and S3DVertexTangents at runtime
|
||||
struct SSkinMeshBuffer : public IMeshBuffer
|
||||
{
|
||||
|
@ -46,8 +43,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! Get standard vertex at given index
|
||||
virtual video::S3DVertex *getVertex(u32 index)
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
switch (VertexType) {
|
||||
case video::EVT_2TCOORDS:
|
||||
return (video::S3DVertex *)&Vertices_2TCoords[index];
|
||||
case video::EVT_TANGENTS:
|
||||
|
@ -60,8 +56,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! Get pointer to vertex array
|
||||
const void *getVertices() const override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
switch (VertexType) {
|
||||
case video::EVT_2TCOORDS:
|
||||
return Vertices_2TCoords.const_pointer();
|
||||
case video::EVT_TANGENTS:
|
||||
|
@ -74,8 +69,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! Get pointer to vertex array
|
||||
void *getVertices() override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
switch (VertexType) {
|
||||
case video::EVT_2TCOORDS:
|
||||
return Vertices_2TCoords.pointer();
|
||||
case video::EVT_TANGENTS:
|
||||
|
@ -88,8 +82,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! Get vertex count
|
||||
u32 getVertexCount() const override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
switch (VertexType) {
|
||||
case video::EVT_2TCOORDS:
|
||||
return Vertices_2TCoords.size();
|
||||
case video::EVT_TANGENTS:
|
||||
|
@ -144,38 +137,31 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
|
||||
BoundingBoxNeedsRecalculated = false;
|
||||
|
||||
switch (VertexType)
|
||||
{
|
||||
case video::EVT_STANDARD:
|
||||
{
|
||||
switch (VertexType) {
|
||||
case video::EVT_STANDARD: {
|
||||
if (Vertices_Standard.empty())
|
||||
BoundingBox.reset(0, 0, 0);
|
||||
else
|
||||
{
|
||||
else {
|
||||
BoundingBox.reset(Vertices_Standard[0].Pos);
|
||||
for (u32 i = 1; i < Vertices_Standard.size(); ++i)
|
||||
BoundingBox.addInternalPoint(Vertices_Standard[i].Pos);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case video::EVT_2TCOORDS:
|
||||
{
|
||||
case video::EVT_2TCOORDS: {
|
||||
if (Vertices_2TCoords.empty())
|
||||
BoundingBox.reset(0, 0, 0);
|
||||
else
|
||||
{
|
||||
else {
|
||||
BoundingBox.reset(Vertices_2TCoords[0].Pos);
|
||||
for (u32 i = 1; i < Vertices_2TCoords.size(); ++i)
|
||||
BoundingBox.addInternalPoint(Vertices_2TCoords[i].Pos);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case video::EVT_TANGENTS:
|
||||
{
|
||||
case video::EVT_TANGENTS: {
|
||||
if (Vertices_Tangents.empty())
|
||||
BoundingBox.reset(0, 0, 0);
|
||||
else
|
||||
{
|
||||
else {
|
||||
BoundingBox.reset(Vertices_Tangents[0].Pos);
|
||||
for (u32 i = 1; i < Vertices_Tangents.size(); ++i)
|
||||
BoundingBox.addInternalPoint(Vertices_Tangents[i].Pos);
|
||||
|
@ -194,10 +180,8 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! Convert to 2tcoords vertex type
|
||||
void convertTo2TCoords()
|
||||
{
|
||||
if (VertexType==video::EVT_STANDARD)
|
||||
{
|
||||
for(u32 n=0;n<Vertices_Standard.size();++n)
|
||||
{
|
||||
if (VertexType == video::EVT_STANDARD) {
|
||||
for (u32 n = 0; n < Vertices_Standard.size(); ++n) {
|
||||
video::S3DVertex2TCoords Vertex;
|
||||
Vertex.Color = Vertices_Standard[n].Color;
|
||||
Vertex.Pos = Vertices_Standard[n].Pos;
|
||||
|
@ -213,10 +197,8 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! Convert to tangents vertex type
|
||||
void convertToTangents()
|
||||
{
|
||||
if (VertexType==video::EVT_STANDARD)
|
||||
{
|
||||
for(u32 n=0;n<Vertices_Standard.size();++n)
|
||||
{
|
||||
if (VertexType == video::EVT_STANDARD) {
|
||||
for (u32 n = 0; n < Vertices_Standard.size(); ++n) {
|
||||
video::S3DVertexTangents Vertex;
|
||||
Vertex.Color = Vertices_Standard[n].Color;
|
||||
Vertex.Pos = Vertices_Standard[n].Pos;
|
||||
|
@ -226,11 +208,8 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
}
|
||||
Vertices_Standard.clear();
|
||||
VertexType = video::EVT_TANGENTS;
|
||||
}
|
||||
else if (VertexType==video::EVT_2TCOORDS)
|
||||
{
|
||||
for(u32 n=0;n<Vertices_2TCoords.size();++n)
|
||||
{
|
||||
} else if (VertexType == video::EVT_2TCOORDS) {
|
||||
for (u32 n = 0; n < Vertices_2TCoords.size(); ++n) {
|
||||
video::S3DVertexTangents Vertex;
|
||||
Vertex.Color = Vertices_2TCoords[n].Color;
|
||||
Vertex.Pos = Vertices_2TCoords[n].Pos;
|
||||
|
@ -246,8 +225,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! returns position of vertex i
|
||||
const core::vector3df &getPosition(u32 i) const override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
switch (VertexType) {
|
||||
case video::EVT_2TCOORDS:
|
||||
return Vertices_2TCoords[i].Pos;
|
||||
case video::EVT_TANGENTS:
|
||||
|
@ -260,8 +238,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! returns position of vertex i
|
||||
core::vector3df &getPosition(u32 i) override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
switch (VertexType) {
|
||||
case video::EVT_2TCOORDS:
|
||||
return Vertices_2TCoords[i].Pos;
|
||||
case video::EVT_TANGENTS:
|
||||
|
@ -274,8 +251,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! returns normal of vertex i
|
||||
const core::vector3df &getNormal(u32 i) const override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
switch (VertexType) {
|
||||
case video::EVT_2TCOORDS:
|
||||
return Vertices_2TCoords[i].Normal;
|
||||
case video::EVT_TANGENTS:
|
||||
|
@ -288,8 +264,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! returns normal of vertex i
|
||||
core::vector3df &getNormal(u32 i) override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
switch (VertexType) {
|
||||
case video::EVT_2TCOORDS:
|
||||
return Vertices_2TCoords[i].Normal;
|
||||
case video::EVT_TANGENTS:
|
||||
|
@ -302,8 +277,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! returns texture coords of vertex i
|
||||
const core::vector2df &getTCoords(u32 i) const override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
switch (VertexType) {
|
||||
case video::EVT_2TCOORDS:
|
||||
return Vertices_2TCoords[i].TCoords;
|
||||
case video::EVT_TANGENTS:
|
||||
|
@ -316,8 +290,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
//! returns texture coords of vertex i
|
||||
core::vector2df &getTCoords(u32 i) override
|
||||
{
|
||||
switch (VertexType)
|
||||
{
|
||||
switch (VertexType) {
|
||||
case video::EVT_2TCOORDS:
|
||||
return Vertices_2TCoords[i].TCoords;
|
||||
case video::EVT_TANGENTS:
|
||||
|
@ -349,8 +322,7 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
MappingHint_Vertex = NewMappingHint;
|
||||
else if (Buffer == EBT_INDEX)
|
||||
MappingHint_Index = NewMappingHint;
|
||||
else if (Buffer==EBT_VERTEX_AND_INDEX)
|
||||
{
|
||||
else if (Buffer == EBT_VERTEX_AND_INDEX) {
|
||||
MappingHint_Vertex = NewMappingHint;
|
||||
MappingHint_Index = NewMappingHint;
|
||||
}
|
||||
|
@ -381,15 +353,16 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
|
||||
u32 getChangedID_Index() const override { return ChangedID_Index; }
|
||||
|
||||
void setHWBuffer(void *ptr) const override {
|
||||
void setHWBuffer(void *ptr) const override
|
||||
{
|
||||
HWBuffer = ptr;
|
||||
}
|
||||
|
||||
void *getHWBuffer() const override {
|
||||
void *getHWBuffer() const override
|
||||
{
|
||||
return HWBuffer;
|
||||
}
|
||||
|
||||
|
||||
//! Call this after changing the positions of any vertex.
|
||||
void boundingBoxNeedsRecalculated(void) { BoundingBoxNeedsRecalculated = true; }
|
||||
|
||||
|
@ -421,9 +394,5 @@ struct SSkinMeshBuffer : public IMeshBuffer
|
|||
bool BoundingBoxNeedsRecalculated : 1;
|
||||
};
|
||||
|
||||
|
||||
} // end namespace scene
|
||||
} // end namespace irr
|
||||
|
||||
#endif
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue