1 This file contains API changes between consecutive versions. You can get the
2 relevant information about all changes to the public Irrlicht API needed for
3 upgrading your code (esp. custom scene nodes and GUI elements) to a new Irrlicht
4 version. Since all changes are incremental you should skip forward to the
5 version you use right now and check each note until you reach the desired
7 Please note that the changes described here do not contain functional changes,
8 but only syntactical ones. Also, new methods are not documented here and
9 have to be looked up in the API documentation instead.
11 Basically, all changes have to be reflected in user code where used. Removed
12 and renamed methods are obviously not existant anymore. A hint is usually given
13 for such changes on how to remedy the situation.
14 Changed signatures of methods might go unnoticed. That need not be a bad thing,
15 e.g. for changes from s32 to u32 the parameters are usually automatically
16 converted by the compiler. However, one should be careful when writing custom
17 scene nodes or GUI elements. It might happen that the methods are not properly
18 chosen as candidates for virtual overloading. So always check that methods in
19 the user code have the proper signatures just as the interface versions. The
20 change hint will help to identify necessary changes.
22 Changes for Version 1.2
23 -----------------------
24 Removed compile flag (always used where available)
25 _IRR_LINUX_OPENGL_USE_EXTENSIONS_
28 Removed (no replacement available)
29 virtual void AddMatrixToJoint(s32 jointNumber, core::matrix4* matrix) = 0;
32 Changed signatures (made const)
33 IGUIElement* getParent() const
34 core::rect<s32> getRelativePosition() const
37 Changed signatures (const param)
38 virtual IGUITab* addTab(const wchar_t* caption, s32 id=-1) = 0;
41 Changed signatures (made const)
42 virtual ECOLOR_FORMAT getColorFormat() const = 0;
45 Changed inheritance (from irr:IUnknown)
46 class IParticleAffector : public virtual io::IAttributeExchangingObject
49 Changed inheritance (from irr:IUnknown)
50 class IParticleEmitter : public virtual io::IAttributeExchangingObject
52 IParticleSystemSceneNode.h
53 Changed signatures (const param)
54 virtual IParticleEmitter* createPointEmitter(
55 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
56 u32 minParticlesPerSecond = 5,
57 u32 maxParticlesPerSecond = 10,
58 video::SColor minStartColor = video::SColor(255,0,0,0),
59 virtual IParticleEmitter* createBoxEmitter(
60 const core::aabbox3df& box = core::aabbox3df(-10,28,-10,10,30,10),
61 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
62 u32 minParticlesPerSecond = 5,
63 u32 maxParticlesPerSecond = 10,
64 video::SColor minStartColor = video::SColor(255,0,0,0),
66 virtual IParticleAffector* createGravityAffector(
67 const core::vector3df& gravity = core::vector3df(0.0f,-0.03f,0.0f),
68 u32 timeForceLost = 1000) = 0;
71 Changed signatures (additional param)
72 virtual ISceneNodeAnimator* createFlyCircleAnimator(const core::vector3df& center,
73 f32 radius, f32 speed=0.001f, const core::vector3df& direction= core::vector3df ( 0.f, 1.f, 0.f ) ) = 0;
76 Changed signatures (made const)
77 virtual ECOLOR_FORMAT getColorFormat() const = 0;
80 Changed signatures (changed default param, use ECF_A1R5G5B5 explicitly for old behavior)
81 virtual ITexture* addTexture(const core::dimension2d<s32>& size,
82 const c8* name, ECOLOR_FORMAT format = ECF_A8R8G8B8) = 0;
83 Changed signatures (made const)
84 virtual ITexture* createRenderTargetTexture(const core::dimension2d<s32>& size) = 0;
87 Changed signatures (swapped parameter, it was (col, row) before although the names did not represent this)
88 f32& operator()(s32 row, s32 col);
89 const f32& operator()(s32 row, s32 col) const;
92 Changed signatures (unconst param)
93 S3DVertex(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, SColor c, f32 tu, f32 tv);
94 S3DVertex(const core::vector3df& pos, const core::vector3df& normal,
95 SColor color, const core::vector2d<f32>& tcoords);
96 S3DVertex2TCoords(f32 x, f32 y, f32 z, SColor c, f32 tu, f32 tv, f32 tu2, f32 tv2);
97 S3DVertex2TCoords(const core::vector3df& pos, SColor color,
98 const core::vector2d<f32>& tcoords, const core::vector2d<f32>& tcoords2);
99 S3DVertex2TCoords(f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, SColor c, f32 tu, f32 tv);
100 S3DVertex2TCoords(const core::vector3df& pos, const core::vector3df& normal,
101 SColor color, const core::vector2d<f32>& tcoords);
102 S3DVertexTangents(const core::vector3df& pos,
103 const core::vector2df& tcoords, SColor c);
106 Changed signatures (changed param types from signed to unsigned)
107 inline u16 RGBA16(u32 r, u32 g, u32 b, u32 a);
108 inline u16 RGB16(u32 r, u32 g, u32 b);
109 inline u16 X8R8G8B8toA1R5G5B5(u32 color);
110 inline u32 A1R5G5B5toA8R8G8B8(u32 color);
111 inline u32 R5G6B5toA8R8G8B8(u16 color);
112 inline u16 R5G6B5toA1R5G5B5(u16 color);
113 inline u16 A1R5G5B5toR5G6B5(u16 color);
114 inline u32 getAlpha(u16 color);
115 inline u32 getRed(u16 color);
116 inline u32 getGreen(u16 color);
117 inline u32 getBlue(u16 color);
118 inline u32 getLuminance(u16 color);
119 inline SColor (u32 a, u32 r, u32 g, u32 b);
120 inline SColor(u32 clr);
121 inline u32 getAlpha() const
122 inline u32 getRed() const
123 inline u32 getGreen() const
124 inline u32 getBlue() const
125 inline void setAlpha(u32 a);
126 inline void setRed(u32 r);
127 inline void setGreen(u32 g);
128 inline void setBlue(u32 b);
129 inline u16 toA1R5G5B5() const
130 inline void toOpenGLColor(u8* dest) const
131 inline void set(u32 a, u32 r, u32 g, u32 b);
132 inline void set(u32 col);
133 Changed signatures (const param)
134 inline SColor getInterpolated(const SColor &other, f32 d) const
135 Changed public member (type changed)
139 Changes for Version 1.3
140 -----------------------
141 Globally renamed Frustrum to Frustum in all signatures and code parts
144 Renamed methods (small first letter)
145 virtual void setInterpolationMode(s32 mode) = 0;
146 virtual void setAnimateMode(s32 mode) = 0;
148 IAnimatedMeshSceneNode.h
149 changed signature (changed types)
150 virtual void setAnimationSpeed(f32 framesPerSecond) = 0;
153 Renamed methods and changed signature (changed types, frustum renaming)
154 virtual const SViewFrustum* getViewFrustum() const = 0;
157 Renamed method (from addUnZipFileArchive)
158 virtual bool addFolderFileArchive(const c8* filename, bool ignoreCase = true, bool ignorePaths = true) = 0;
161 Changed signature (added param)
162 virtual s32 addItem(const wchar_t* text, s32 commandId=-1, bool enabled=true,
163 bool hasSubMenu=false, bool checked=false) = 0;
167 class IGUIElement : public virtual io::IAttributeExchangingObject, public IEventReceiver
168 Changed signature (made const)
169 core::rect<s32> getAbsolutePosition() const
172 Changed signature (added param)
173 virtual IGUIButton* addButton(const core::rect<s32>& rectangle,
174 IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0, const wchar_t* tooltiptext = 0) = 0;
177 Removed method (Using sprite bank now)
178 virtual void setIconFont(IGUIFont* font) = 0;
179 Change signature (changed types, due to sprite bank)
180 virtual s32 addItem(const wchar_t* text, s32 icon) = 0;
184 class IGUISkin : public virtual io::IAttributeExchangingObject
187 Changed signature (Added param for tooltips)
188 virtual IGUIButton* addButton(s32 id=-1, const wchar_t* text=0, const wchar_t* tooltiptext=0,
189 video::ITexture* img=0, video::ITexture* pressedimg=0,
190 bool isPushButton=false, bool useAlphaChannel=false) = 0;
193 Changed signature (made const)
194 virtual u32 getPitch() const = 0;
197 Changed signature (additional param)
198 virtual bool writeImage(io::IWriteFile *file, IImage *image, u32 param = 0) = 0;
201 Changed signature (changed return type)
202 virtual u32 getVertexCount() const = 0;
203 virtual u32 getIndexCount() const = 0;
204 Removed method (use setBoundingBox instead)
205 virtual core::aabbox3df& getBoundingBox() = 0;
208 Changed signature (changed types, made const)
209 virtual u32 getMeshBufferCount() const = 0;
210 virtual IMeshBuffer* getMeshBuffer(u32 nr) const = 0;
211 Removed method (use setBoundingBox instead)
212 virtual core::aabbox3d<f32>& getBoundingBox() = 0;
215 Changed signature (changed types)
216 virtual s32 read(void* buffer, u32 sizeToRead) = 0;
219 Changed signature (made const)
220 s32 binary_search(const T& element, s32 left, s32 right) const
224 const f32 PI = 3.14159265359f;
225 Constants removed (use RADTODEG64 or DEGTORAD64 instead)
226 const f64 GRAD_PI = 180.0 / PI64;
227 const f64 GRAD_PI2 = PI64 / 180.0;
228 Changed signature (added tolerance parameter)
229 inline bool equals(const f32 a, const f32 b, const f32 tolerance = ROUNDING_ERROR_32)
232 Changed signature (const param)
233 template <class B> string(const B* const c, u32 length);
234 template <class B> string(const B* const c);
235 template <class B> string<T>& operator=(const B* const c);
236 template <class B> string<T> operator+(const B* const c) const
237 bool operator ==(const T* const str) const
238 bool operator !=(const T* const str) const
239 bool equalsn(const T* const str, int len) const
240 void append(const T* const other);
241 s32 findFirstChar(const T* const c, u32 count) const
242 template <class B> s32 findFirstCharNotInList(const B* const c, u32 count) const
243 template <class B> s32 findLastCharNotInList(const B* const c, u32 count) const
244 template <class B> s32 find(const B* const str) const
245 void operator += (const T* const c);
246 Changed signature (changed type from signed)
247 T& operator [](const u32 index) const
249 void append(const string<T>& other, u32 length);
250 void reserve(u32 count);
251 s32 findNext(T c, u32 startPos) const
252 string<T> subString(u32 begin, s32 length) const
253 void erase(u32 index);
254 void reallocate(u32 new_size);
255 Changed signature (added param)
256 s32 findLast(T c, s32 start = -1) const
259 Changed signature (changed default param from 128 minimalPolysPerNode)
260 virtual ISceneNode* addOctTreeSceneNode(IAnimatedMesh* mesh, ISceneNode* parent=0,
261 s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false) = 0;
262 virtual ISceneNode* addOctTreeSceneNode(IMesh* mesh, ISceneNode* parent=0,
263 s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false) = 0;
264 Changed signature (added param)
265 virtual ICameraSceneNode* addCameraSceneNodeFPS(ISceneNode* parent = 0,
266 f32 rotateSpeed = 100.0f, f32 moveSpeed = 500.0f, s32 id=-1,
267 SKeyMap* keyMapArray=0, s32 keyMapSize=0, bool noVerticalMovement=false,
268 f32 jumpSpeed = 0.f) = 0;
270 virtual IBillboardSceneNode* addBillboardSceneNode(ISceneNode* parent = 0,
271 const core::dimension2d<f32>& size = core::dimension2d<f32>(10.0f, 10.0f),
272 const core::vector3df& position = core::vector3df(0,0,0), s32 id=-1,
273 video::SColor shade_top = 0xFFFFFFFF, video::SColor shade_down = 0xFFFFFFFF) = 0;
275 virtual ITerrainSceneNode* addTerrainSceneNode(
276 const c8* heightMapFileName,
277 ISceneNode* parent=0, s32 id=-1,
278 const core::vector3df& position = core::vector3df(0.0f,0.0f,0.0f),
279 const core::vector3df& rotation = core::vector3df(0.0f,0.0f,0.0f),
280 const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f),
281 video::SColor vertexColor = video::SColor(255,255,255,255),
282 s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0) = 0;
284 virtual ITerrainSceneNode* addTerrainSceneNode(
285 io::IReadFile* heightMapFile,
286 ISceneNode* parent=0, s32 id=-1,
287 const core::vector3df& position = core::vector3df(0.0f,0.0f,0.0f),
288 const core::vector3df& rotation = core::vector3df(0.0f,0.0f,0.0f),
289 const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f),
290 video::SColor vertexColor = video::SColor(255,255,255,255),
291 s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0) = 0;
292 Changed signature (changed return type)
293 virtual u32 registerNodeForRendering(ISceneNode* node,
294 E_SCENE_NODE_RENDER_PASS pass = ESNRP_AUTOMATIC) = 0;
296 ISceneNodeAnimatorCollisionResponse.h
297 Changed signature (made const)
298 virtual void setEllipsoidTranslation(const core::vector3df &translation) = 0;
301 Renamed method (from OnPreRender)
302 virtual void OnRegisterSceneNode();
303 Renamed method (from OnPostRender)
304 virtual void OnAnimate(u32 timeMs);
305 Changed signature (made const)
306 virtual const core::aabbox3d<f32> getTransformedBoundingBox() const
307 const core::matrix4& getAbsoluteTransformation() const
308 virtual bool isVisible() const
309 virtual s32 getID() const
310 scene::ISceneNode* getParent() const
311 virtual ESCENE_NODE_TYPE getType() const
312 Changed signature (changed type)
313 virtual video::SMaterial& getMaterial(u32 num);
314 void setMaterialTexture(u32 textureLayer, video::ITexture* texture);
315 void setAutomaticCulling( E_CULLING_TYPE state);
316 virtual void setDebugDataVisible(E_DEBUG_SCENE_TYPE visible);
317 Changed signature (changed return type)
318 virtual u32 getMaterialCount();
319 virtual const core::vector3df& getRotation() const
320 E_CULLING_TYPE getAutomaticCulling() const
321 Changed signature (changed return type, made const)
322 E_DEBUG_SCENE_TYPE isDebugDataVisible() const
325 Changed signature (changed return type)
326 virtual u32 getIndexCount() = 0;
329 Changed signature (changed return type, made const)
330 virtual u32 getPitch() const = 0;
331 Removed method (Available in SMaterial now)
332 core::matrix4& getTransformation();
335 Changed signature (changed types)
336 virtual ITexture* getTextureByIndex(u32 index) = 0;
337 virtual void drawVertexPrimitiveList(const void* vertices, u32 vertexCount, const u16* indexList, u32 triangleCount, E_VERTEX_TYPE vType, scene::E_PRIMITIVE_TYPE pType) = 0;
338 virtual void drawIndexedTriangleList(const S3DVertex* vertices,
339 u32 vertexCount, const u16* indexList, u32 triangleCount) = 0;
340 virtual void drawIndexedTriangleList(const S3DVertex2TCoords* vertices,
341 u32 vertexCount, const u16* indexList, u32 triangleCount) = 0;
342 virtual void drawIndexedTriangleList(const S3DVertexTangents* vertices,
343 u32 vertexCount, const u16* indexList, u32 triangleCount) = 0;
344 virtual void drawIndexedTriangleFan(const S3DVertex* vertices,
345 u32 vertexCount, const u16* indexList, u32 triangleCount) = 0;
346 virtual void drawIndexedTriangleFan(const S3DVertex2TCoords* vertices,
347 u32 vertexCount, const u16* indexList, u32 triangleCount) = 0;
348 virtual const SLight& getDynamicLight(u32 idx) = 0;
349 virtual IMaterialRenderer* getMaterialRenderer(u32 idx) = 0;
350 virtual const c8* getMaterialRendererName(u32 idx) = 0;
351 Changed signature (const param)
352 virtual void drawMeshBuffer( const scene::IMeshBuffer* mb) = 0;
353 virtual io::IAttributes* createAttributesFromMaterial(const video::SMaterial& material) = 0;
354 Changed signature (added param)
355 virtual u32 getPrimitiveCountDrawn( u32 param = 0 ) = 0;
356 virtual bool writeImageToFile(IImage* image, const c8* filename, u32 param = 0) = 0;
357 virtual IImage* createImageFromData(ECOLOR_FORMAT format,
358 const core::dimension2d<s32>& size, void *data,
359 bool ownForeignMemory=false,
360 bool deleteMemory = true) = 0;
361 Changed signature (changed return types)
362 virtual u32 getMaximalDynamicLightAmount() = 0;
363 virtual u32 getDynamicLightCount() = 0;
364 virtual u32 getMaximalPrimitiveCount() = 0;
365 virtual u32 getMaterialRendererCount() = 0;
368 Changed signature (added param)
369 matrix4( eConstructor constructor = EM4CONST_IDENTITY );
370 Changed signature (const param)
371 f32& operator()(const s32 row, const s32 col);
372 const f32& operator()(const s32 row, const s32 col) const
373 Changed signature (param order)
374 void transformVect( vector3df& out, const vector3df& in ) const;
377 Changed signature (changed return type)
378 void slerp( quaternion q1, const quaternion q2, f32 interpolate );
381 Renamed method (from getLuminance), changed types
382 inline s32 getAverage(s16 color);
383 Changed signature (changed return types)
384 inline f32 getLuminance() const
385 Changed signature (const param)
386 inline SColorf getInterpolated(const SColorf &other, f32 d) const
389 Constant type changed
390 const u32 MATERIAL_MAX_TEXTURES = 4;
393 Public members removed (use Textures[] instead)
398 Public members removed (use setFlag()/getFlag() instead)
400 Public members changed (type changed)
402 Changed signature (made const)
403 inline bool operator!=(const SMaterial& b) const
406 Changed signature (changed param)
407 virtual u32 getVertexCount() const
408 virtual u32 getIndexCount() const
409 Removed method (use setBoundingBox instead)
410 virtual core::aabbox3d<f32>& getBoundingBox();
412 SMeshBufferLightMap.h
413 Changed signature (changed param)
414 virtual u32 getVertexCount() const
415 virtual u32 getIndexCount() const
416 Removed method (use setBoundingBox instead)
417 virtual core::aabbox3d<f32>& getBoundingBox();
419 SMeshBufferTangents.h
420 Changed signature (changed param)
421 virtual u32 getVertexCount() const
422 virtual u32 getIndexCount() const
423 Removed method (use setBoundingBox instead)
424 virtual core::aabbox3d<f32>& getBoundingBox();
427 Changed signature (changed param, made const)
428 virtual u32 getMeshBufferCount() const
429 virtual IMeshBuffer* getMeshBuffer(u32 nr) const
430 Removed method (use setBoundingBox instead);
431 virtual core::aabbox3d<f32>& getBoundingBox();
434 Changed signature (changed return type)
436 Changed signature (changed type)
437 vector3d<T> getInterpolated(const vector3d<T>& other, const T d) const
439 Changes for Version 1.3.1
440 -------------------------
442 SMeshBuffer* types are now template typedefs from CMeshBuffer
445 Changed signature (const param)
446 dimension2d(const T& width, const T& height);
447 dimension2d<T> operator/(const T& scale);
448 dimension2d<T> operator*(const T& scale);
450 IAnimatedMeshSceneNode.h
451 Changed signature (made const)
452 virtual s32 getFrameNr() const = 0;
453 virtual s32 getStartFrame() const = 0;
454 virtual s32 getEndFrame() const = 0;
455 Renamed method (from getAbsoluteTransformation)
456 virtual const SMD3QuaterionTag& getMD3TagTransformation( const core::stringc & tagname) = 0;
459 Renamed method (from getUseAlphaChannel)
460 virtual bool isAlphaChannelUsed() = 0;
463 Changed signature (made const)
464 EGUI_ELEMENT_TYPE getType() const
465 virtual const c8* getTypeName() const
468 Changed signature (added param)
469 virtual bool saveGUI(const c8* filename, IGUIElement* start=0) = 0;
470 virtual bool saveGUI(io::IWriteFile* file, IGUIElement* start=0) = 0;
471 virtual bool loadGUI(const c8* filename, IGUIElement* parent=0) = 0;
472 virtual bool loadGUI(io::IReadFile* file, IGUIElement* parent=0) = 0;
475 Changed signature (made const)
476 virtual EGUI_FONT_TYPE getType() const { return EGFT_BITMAP; }
479 Changed signature (made const)
480 virtual EGUI_FONT_TYPE getType() const { return EGFT_CUSTOM; }
483 Changed signature (added param)
484 virtual IGUIFont* getFont(EGUI_DEFAULT_FONT which=EGDF_DEFAULT) = 0;
485 virtual void setFont(IGUIFont* font, EGUI_DEFAULT_FONT which=EGDF_DEFAULT) = 0;
486 Changed signature (made const)
487 virtual EGUI_SKIN_TYPE getType() const { return EGST_UNKNOWN; };
490 Changed signature (made const)
491 virtual const core::dimension2d<s32>& getDimension() const = 0;
492 virtual u32 getRedMask() const = 0;
493 virtual u32 getGreenMask() const = 0;
494 virtual u32 getBlueMask() const = 0;
495 virtual u32 getAlphaMask() const = 0;
496 Changed signature (changed return type, made const)
497 virtual u32 getBitsPerPixel() const = 0;
498 virtual u32 getBytesPerPixel() const = 0;
499 virtual u32 getImageDataSizeInBytes() const = 0;
500 virtual u32 getImageDataSizeInPixels() const = 0;
501 Changed signature (changed param type, made const)
502 virtual SColor getPixel(u32 x, u32 y) const = 0;
505 Changed signature (const param)
506 virtual void removeMesh(const IAnimatedMesh* const mesh) = 0;
507 Changed signature (const param, made const)
508 virtual s32 getMeshIndex(const IAnimatedMesh* const mesh) const = 0;
509 virtual const c8* getMeshFilename(const IAnimatedMesh* const mesh) const = 0;
510 virtual const c8* getMeshFilename(const IMesh* const mesh) const = 0;
511 Changed signature (changed return type, made const)
512 virtual u32 getMeshCount() const = 0;
513 Changed signature (changed param type)
514 virtual IAnimatedMesh* getMeshByIndex(u32 index) = 0;
515 Changed signature (made const)
516 virtual const c8* getMeshFilename(u32 index) const = 0;
519 Changed signature (made const)
520 virtual E_PARTICLE_AFFECTOR_TYPE getType() const = 0;
523 Changed signature (made const)
524 virtual E_PARTICLE_EMITTER_TYPE getType() const = 0;
527 Changed signature (const param)
528 string(const double number);
529 Changed signature (changed return type)
530 string<T>& operator += (T c);
531 string<T>& operator += (const string<T>& other);
532 Changed signature (changed return type, const param)
533 string<T>& operator += (const T* const c);
534 string<T>& operator += (const int i);
535 string<T>& operator += (const double i);
538 Changed signature (added param)
539 virtual ITerrainSceneNode* addTerrainSceneNode(
540 const c8* heightMapFileName,
541 ISceneNode* parent=0, s32 id=-1,
542 const core::vector3df& position = core::vector3df(0.0f,0.0f,0.0f),
543 const core::vector3df& rotation = core::vector3df(0.0f,0.0f,0.0f),
544 const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f),
545 video::SColor vertexColor = video::SColor(255,255,255,255),
546 s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0,
547 bool addAlsoIfHeightmapEmpty = false) = 0;
548 virtual ITerrainSceneNode* addTerrainSceneNode(
549 io::IReadFile* heightMapFile,
550 ISceneNode* parent=0, s32 id=-1,
551 const core::vector3df& position = core::vector3df(0.0f,0.0f,0.0f),
552 const core::vector3df& rotation = core::vector3df(0.0f,0.0f,0.0f),
553 const core::vector3df& scale = core::vector3df(1.0f,1.0f,1.0f),
554 video::SColor vertexColor = video::SColor(255,255,255,255),
555 s32 maxLOD=5, E_TERRAIN_PATCH_SIZE patchSize=ETPS_17, s32 smoothFactor=0,
556 bool addAlsoIfHeightmapEmpty = false) = 0;
557 virtual ISceneManager* createNewSceneManager(bool cloneContent=false) = 0;
560 Changed signature (made const)
561 virtual ESCENE_NODE_ANIMATOR_TYPE getType() const
564 Changed signature (made const)
565 virtual bool hasMipMaps() const
568 Changed signature (reference param)
569 virtual void draw3DBox(const core::aabbox3d<f32>& box,
570 SColor color = SColor(255,255,255,255)) = 0;
571 Changed signature (added defaults for param)
572 virtual void draw2DImage(video::ITexture* texture,
573 const core::position2d<s32>& pos,
574 const core::array<core::rect<s32> >& sourceRects,
575 const core::array<s32>& indices,
577 const core::rect<s32>* clipRect=0,
578 SColor color=SColor(255,255,255,255),
579 bool useAlphaChannelOfTexture=false) = 0;
580 Changed signature (changed return type)
581 virtual const SExposedVideoData& getExposedVideoData() = 0;
584 Changed signature (changed return type)
588 Changed type to template class
589 template <class T> class CMatrix4
590 typedef CMatrix4<f32> matrix4;
591 Changed signature (changed return type)
592 T& operator()(const s32 row, const s32 col);
593 const T& operator()(const s32 row, const s32 col) const
594 T& operator[](u32 index);
595 const T& operator[](u32 index) const
596 Changed signature (changed param type)
597 inline CMatrix4<T>& operator=(const T& scalar);
598 const T* pointer() const
600 CMatrix4<T> operator*(const T& scalar) const;
601 CMatrix4<T>& operator*=(const T& scalar);
602 void transformVect(T *out,const core::vector3df &in) const;
603 void rotateVect(T *out,const core::vector3df &in) const;
604 void multiplyWith1x4Matrix(T* matrix) const;
605 CMatrix4<T> interpolate(const core::CMatrix4<T>& b, f32 time) const;
608 Renamed method (from existsInterSection)
609 bool existsIntersection(const plane3d<T>& other) const
612 Changed signature (unconst param)
613 void slerp( quaternion q1, quaternion q2, f32 interpolate );
616 Removed public member (replaced by X11Display and X11Window)
619 SIrrCreationParameters.h
620 Changed public member (changed type for 64bit system support)
624 Changed method to private
625 bool isOnSameSide(const vector3d<T>& p1, const vector3d<T>& p2,
626 const vector3d<T>& a, const vector3d<T>& b) const
629 Changed signature (changed return value)
631 T getDistanceFrom(const vector2d<T>& other) const
634 Changed signature (changed return value)
635 T getDistanceFrom(const vector3d<T>& other) const
637 Changes for Version 1.4
638 -----------------------
639 This release had many changes in API method signatures. Many methods have been
640 made const, also several parameter types were changed. The two most noticeable
641 changes (which almost every user of the Irrlicht API will come across) are the
642 renaming of IUnknown to IReferenceCounted and const-ref change of the SEvent
643 structure of the OnEvent method. Another important change: DirectX8 support is
644 now by default disabled, enable the define in IrrCompileConfig.h to restore the
648 Renamed Type (from IUnknown). This changed most classes in Irrlicht
649 class IReferenceCounted
652 Changed signature (made const)
653 virtual bool OnEvent(const SEvent& event) = 0;
656 DirectX8 support is now by default disabled
660 virtual u32 getVertexPitch() const
663 Changed signature to allow optional second parameter
664 u32 strtol10(const char* in, const char** out=0)
667 Changed inheritance (instead of IReferenceCounted)
668 class IAnimatedMesh : public IMesh
669 Changed signature (made const)
670 virtual u32 getFrameCount() const = 0;
672 IAnimatedMeshSceneNode.h
673 Changed signature (changed param type)
674 virtual void setCurrentFrame(f32 frame) = 0;
675 Replaced methods (generalized method getJointNode available)
676 virtual ISceneNode* getMS3DJointNode(const c8* jointName) = 0;
677 virtual ISceneNode* getXJointNode(const c8* jointName) = 0;
678 virtual ISceneNode* getB3DJointNode(const c8* jointName) = 0;
679 Changed signature (changed return type)
680 virtual f32 getFrameNr() const = 0;
681 Changed signature (made const)
682 virtual bool isReadOnlyMaterials() const = 0;
684 IAttributeExchangingObject.h
685 Changed signature (made const)
686 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const {}
689 Changed signature (made const, changed param type)
690 virtual u32 getAttributeCount() const = 0;
691 Changed signature (added param)
692 virtual bool read(io::IXMLReader* reader, bool readCurrentElementOnly=false, const wchar_t* elementName=0) = 0;
693 virtual bool write(io::IXMLWriter* writer, bool writeXMLHeader=false, const wchar_t* elementName=0) = 0;
694 Changed signature (made const-ref param)
695 virtual void addMatrix(const c8* attributeName, const core::matrix4& v) = 0;
696 virtual void setAttribute(const c8* attributeName, const core::matrix4& v) = 0;
697 virtual void setAttribute(s32 index, const core::matrix4& v) = 0;
699 IBillboardSceneNode.h
700 Changed signature (made const)
701 virtual const core::dimension2d<f32>& getSize() const = 0;
702 virtual void getColor(video::SColor & topColor, video::SColor & bottomColor) const = 0;
705 Changed signature (made const)
706 virtual const core::matrix4& getProjectionMatrix() const = 0;
707 virtual const core::matrix4& getViewMatrix() const = 0;
708 virtual bool OnEvent(const SEvent& event) = 0;
709 virtual f32 getNearValue() const = 0;
710 virtual f32 getFarValue() const = 0;
711 virtual f32 getAspectRatio() const = 0;
712 virtual f32 getFOV() const = 0;
713 virtual bool isInputReceiverEnabled() const = 0;
714 virtual bool isOrthogonal() const
717 Changed signature (made const)
718 virtual bool isVisible() const = 0;
721 Changed signature (made const, changed param or return types)
722 virtual u32 getFileCount() const = 0;
723 virtual const c8* getFileName(u32 index) const = 0;
724 virtual const c8* getFullFileName(u32 index) = 0;
725 virtual bool isDirectory(u32 index) const = 0;
727 IFileSystem.h 2007-09-17 09:53:10.000000000 +0200
728 Changed signature (made const method and const-ref param)
729 virtual core::stringc getAbsolutePath(const core::stringc& filename) const = 0;
730 virtual core::stringc getFileDir(const core::stringc& filename) const = 0;
731 Changed signature (made const)
732 virtual IFileList* createFileList() const = 0;
733 virtual bool existFile(const c8* filename) const = 0;
736 Changed signature (made const)
737 virtual bool isPressed() const = 0;
738 virtual bool isAlphaChannelUsed() const = 0;
739 virtual bool isPushButton() const = 0;
740 virtual bool isDrawingBorder() const = 0;
743 Changed signature (made const)
744 virtual bool isChecked() const = 0;
747 Changed signature (made const, changed param or return types)
748 virtual u32 getItemCount() const = 0;
749 virtual const wchar_t* getItem(u32 idx) const = 0;
750 virtual s32 getSelected() const = 0;
751 Changed signature (changed param or return types)
752 virtual u32 addItem(const wchar_t* text) = 0;
753 virtual void removeItem(u32 id) = 0;
756 Changed signature (changed param or return types)
757 virtual u32 getItemCount() const = 0;
758 virtual u32 addItem(const wchar_t* text, s32 commandId=-1, bool enabled=true, bool hasSubMenu=false, bool checked=false) = 0;
759 virtual void setItemText(u32 idx, const wchar_t* text) = 0;
760 virtual void setItemEnabled(u32 idx, bool enabled) = 0;
761 virtual void setItemChecked(u32 idx, bool enabled) = 0;
762 virtual void removeItem(u32 idx) = 0;
763 virtual void setItemCommandId(u32 idx, s32 id) = 0;
764 Changed signature (made const, changed param or return types)
765 virtual const wchar_t* getItemText(u32 idx) const = 0;
766 virtual bool isItemEnabled(u32 idx) const = 0;
767 virtual bool isItemChecked(u32 idx) const = 0;
768 virtual s32 getSelectedItem() const = 0;
769 virtual s32 getItemCommandId(u32 idx) const = 0;
770 virtual IGUIContextMenu* getSubMenu(u32 idx) const = 0;
773 Changed signature (changed param or return types)
774 virtual void setMax(u32 max) = 0;
775 Changed signature (made const, changed param or return types)
776 virtual u32 getMax() const = 0;
779 Changed signature (made const)
780 virtual s32 getCreatableGUIElementTypeCount() const = 0;
781 virtual EGUI_ELEMENT_TYPE getCreateableGUIElementType(s32 idx) const = 0;
782 virtual const c8* getCreateableGUIElementTypeName(s32 idx) const = 0;
783 virtual const c8* getCreateableGUIElementTypeName(EGUI_ELEMENT_TYPE type) const = 0;
786 Changed signature (made const)
787 bool isNotClipped() const
788 virtual bool isVisible() const
789 virtual bool isSubElement() const
790 virtual bool isEnabled() const
791 virtual const wchar_t* getText() const
792 virtual s32 getID() const
793 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const
794 Changed signature (made const-ref param or return type)
795 virtual const core::stringw& getToolTipText() const
796 virtual bool OnEvent(const SEvent& event)
799 Changed signature (changed return type)
800 virtual bool setFocus(IGUIElement* element) = 0;
801 virtual bool removeFocus(IGUIElement* element) = 0;
802 Changed signature (made const)
803 virtual IGUIElement* getFocus() const = 0;
804 virtual bool hasFocus(IGUIElement* element) const = 0;
805 virtual video::IVideoDriver* getVideoDriver() const = 0;
806 virtual io::IFileSystem* getFileSystem() const = 0;
807 virtual IOSOperator* getOSOperator() const = 0;
808 virtual IGUISkin* getSkin() const = 0;
809 virtual IGUIFont* getBuiltInFont() const = 0;
810 virtual IGUIElementFactory* getDefaultGUIElementFactory() const = 0;
811 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const =0;
812 Changed signature (made const-ref param or return type)
813 virtual bool postEventFromUser(const SEvent& event) = 0;
814 Changed signature (made const, changed param or return types)
815 virtual u32 getRegisteredGUIElementFactoryCount() const = 0;
816 virtual IGUIElementFactory* getGUIElementFactory(u32 index) const = 0;
819 Changed signature (made const)
820 virtual const wchar_t* getFileName() const = 0;
823 Changed signature (made const)
824 virtual IGUISpriteBank* getSpriteBank() const = 0;
825 virtual u32 getSpriteNoFromChar(const wchar_t *c) const = 0;
826 virtual s32 getKerningWidth(const wchar_t* thisLetter=0, const wchar_t* previousLetter=0) const = 0;
829 Changed signature (made const)
830 virtual core::dimension2d<s32> getDimension(const wchar_t* text) const = 0;
831 virtual s32 getCharacterFromPos(const wchar_t* text, s32 pixel_x) const = 0;
832 virtual s32 getKerningWidth(const wchar_t* thisLetter=0, const wchar_t* previousLetter=0) const = 0;
833 virtual s32 getKerningHeight() const = 0;
836 Changed signature (made const, changed param or return types)
837 virtual u32 getItemCount() const = 0;
838 virtual const wchar_t* getListItem(u32 id) const = 0;
839 virtual s32 getIcon(u32 index) const = 0;
840 Changed signature (changed param or return types)
841 virtual u32 addItem(const wchar_t* text) = 0;
842 virtual u32 addItem(const wchar_t* text, s32 icon) = 0;
843 virtual void removeItem(u32 index) = 0;
844 Changed signature (made const)
845 virtual s32 getSelected() const = 0;
848 Changed signature (made const)
849 virtual const video::SMaterial& getMaterial() const = 0;
852 Changed signature (made const)
853 virtual s32 getMax() const = 0;
854 virtual s32 getSmallStep() const = 0;
855 virtual s32 getPos() const = 0;
858 Changed signature (made const)
859 virtual video::SColor getColor(EGUI_DEFAULT_COLOR color) const = 0;
860 virtual s32 getSize(EGUI_DEFAULT_SIZE size) const = 0;
861 virtual const wchar_t* getDefaultText(EGUI_DEFAULT_TEXT text) const = 0;
862 virtual IGUIFont* getFont(EGUI_DEFAULT_FONT which=EGDF_DEFAULT) const = 0;
863 virtual IGUISpriteBank* getSpriteBank() const = 0;
864 virtual u32 getIcon(EGUI_DEFAULT_ICON icon) const = 0;
867 Changed signature (made const)
868 virtual u32 getTextureCount() const = 0;
869 virtual video::ITexture* getTexture(u32 index) const = 0;
872 Changed signature (made const)
873 virtual IGUIFont* getOverrideFont(void) const = 0;
874 virtual video::SColor const& getOverrideColor(void) const = 0;
875 virtual bool isOverrideColorEnabled(void) const = 0;
876 virtual bool isWordWrapEnabled(void) const = 0;
877 virtual s32 getTextHeight() const = 0;
878 virtual s32 getTextWidth(void) const = 0;
881 Changed signature (made const)
882 virtual s32 getNumber() const = 0;
883 virtual s32 getTabCount() const = 0;
884 virtual IGUITab* getTab(s32 idx) const = 0;
885 virtual s32 getActiveTab() const = 0;
888 Changed signature (made const)
889 virtual IGUIButton* getCloseButton() const = 0;
890 virtual IGUIButton* getMinimizeButton() const = 0;
891 virtual IGUIButton* getMaximizeButton() const = 0;
894 Changed signature (made const)
895 virtual bool isALoadableFileExtension(const c8* fileName) const = 0;
896 virtual bool isALoadableFileFormat(io::IReadFile* file) const = 0;
897 virtual IImage* loadImage(io::IReadFile* file) const = 0;
900 Changed signature (made const)
901 virtual bool isAWriteableFileExtension(const c8* fileName) const = 0;
902 virtual bool writeImage(io::IWriteFile *file, IImage *image, u32 param = 0) const = 0;
905 Changed signature (made const)
906 virtual ELOG_LEVEL getLogLevel() const = 0;
909 Changed signature (made const-ref param)
910 virtual void OnSetMaterial(const SMaterial& material, const SMaterial& lastMaterial, bool resetAllRenderstates, IMaterialRendererServices* services) {};
911 Changed signature (made const)
912 virtual bool isTransparent() const { return false; }
913 virtual s32 getRenderCapability() const { return 0; }
916 Changed signature (made const)
917 virtual IMeshBuffer* getMeshBuffer( const video::SMaterial &material) const = 0;
920 Changed signature (made const)
921 virtual bool isALoadableFileExtension(const c8* fileName) const = 0;
924 Removed method (now in IMeshBuffer)
925 virtual void recalculateBoundingBox(scene::IMeshBuffer* buffer) const
928 Changed signature (made const)
929 virtual bool isReadOnlyMaterials() const = 0;
932 Changed signature (made const)
933 virtual const wchar_t* getOperationSystemVersion() const = 0;
934 virtual void copyToClipboard(const c8* text) const = 0;
935 virtual c8* getTextFromClipboard() const = 0;
936 virtual bool getProcessorSpeedMHz(u32* MHz) const = 0;
937 virtual bool getSystemMemory(u32* Total, u32* Avail) const = 0;
940 Changed signature (made const)
941 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const {}
944 Changed signature (made const)
945 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const {}
947 IParticleSystemSceneNode.h
948 Changed signature (changed return type, changed param types)
949 virtual IParticlePointEmitter* createPointEmitter(
950 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
951 u32 minParticlesPerSecond = 5,
952 u32 maxParticlesPerSecond = 10,
953 const video::SColor& minStartColor = video::SColor(255,0,0,0),
954 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
955 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
956 s32 maxAngleDegrees=0) = 0;
957 virtual IParticleEmitter* createBoxEmitter(
958 const core::aabbox3df& box = core::aabbox3df(-10,28,-10,10,30,10),
959 const core::vector3df& direction = core::vector3df(0.0f,0.03f,0.0f),
960 u32 minParticlesPerSecond = 5,
961 u32 maxParticlesPerSecond = 10,
962 const video::SColor& minStartColor = video::SColor(255,0,0,0),
963 const video::SColor& maxStartColor = video::SColor(255,255,255,255),
964 u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
965 s32 maxAngleDegrees=0) = 0;
966 virtual IParticleFadeOutAffector* createFadeOutParticleAffector(
967 const video::SColor& targetColor = video::SColor(0,0,0,0),
968 u32 timeNeededToFadeOut = 1000) = 0;
969 virtual IParticleGravityAffector* createGravityAffector(
970 const core::vector3df& gravity = core::vector3df(0.0f,-0.03f,0.0f),
971 u32 timeForceLost = 1000) = 0;
975 bool operator < ( const SVariable &other ) const
978 Changed param types (adapt the correct C-API for file positions)
979 virtual bool seek(long finalPos, bool relativeMovement = false) = 0;
980 virtual long getSize() const = 0;
981 virtual long getPos() const = 0;
982 IReadFile* createLimitReadFile(const c8* fileName, IReadFile* alreadyOpenedFile, long areaSize);
983 IReadFile* createMemoryReadFile(void* memory, long size, const c8* fileName, bool deleteMemoryWhenDropped);
984 Changed signature (made const)
985 virtual const c8* getFileName() const = 0;
988 Changed signature (made const)
989 virtual bool isWindowActive() const = 0;
990 virtual const c8* getVersion() const = 0;
991 Changed signature (made const-ref param)
992 virtual void postEventFromUser(const SEvent& event) = 0;
995 Changed some structures in order to incorporate a ConstIterator class.
997 ConstIterator begin() const
999 ConstIterator end() const
1001 ConstIterator getLast() const
1002 void insert_after(const Iterator& it, const T& element)
1003 void insert_before(const Iterator& it, const T& element)
1006 Changed signature (Use const references for better class handling)
1007 inline const T& min_(const T& a, const T& b)
1008 inline const T& min_(const T& a, const T& b, const T& c)
1009 inline const T& max_(const T& a, const T& b)
1010 inline const T& max_(const T& a, const T& b, const T& c)
1011 inline T abs_(const T& a)
1012 inline T lerp(const T& a, const T& b, const f32 t)
1013 inline const T clamp (const T& value, const T& low, const T& high)
1016 Changed signature (made proper const method)
1017 T& operator [](const u32 index)
1018 const T& operator [](const u32 index) const
1021 Changed signature (adapt the correct C-API for file positions, made const)
1022 virtual long getSize() const = 0;
1023 Changed signature (changed param types)
1024 virtual unsigned int getAttributeCount() const = 0;
1027 Changed signature (changed param types)
1028 virtual IAnimatedMesh* addHillPlaneMesh(const c8* name,
1029 const core::dimension2d<f32>& tileSize, const core::dimension2d<u32>& tileCount,
1030 video::SMaterial* material = 0, f32 hillHeight = 0.0f,
1031 const core::dimension2d<f32>& countHills = core::dimension2d<f32>(0.0f, 0.0f),
1032 const core::dimension2d<f32>& textureRepeatCount = core::dimension2d<f32>(1.0f, 1.0f)) = 0;
1033 Changed signature (changed param types and order)
1034 virtual IAnimatedMesh* addArrowMesh(const c8* name,
1035 video::SColor vtxColor0=0xFFFFFFFF,
1036 video::SColor vtxColor1=0xFFFFFFFF,
1037 u32 tesselationCylinder=4, u32 tesselationCone=8,
1038 f32 height=1.f, f32 cylinderHeight=0.6f,
1039 f32 width0=0.05f, f32 width1=0.3f) = 0;
1040 Changed signature (changed param types)
1041 virtual bool postEventFromUser(const SEvent& event) = 0;
1042 virtual ISceneNodeFactory* getSceneNodeFactory(u32 index) = 0;
1043 virtual ISceneNodeAnimatorFactory* getSceneNodeAnimatorFactory(u32 index) = 0;
1044 Changed signature (made const)
1045 virtual E_SCENE_NODE_RENDER_PASS getSceneNodeRenderPass() const = 0;
1046 Changed signature (changed param types, made const)
1047 virtual u32 getRegisteredSceneNodeFactoryCount() const = 0;
1048 virtual u32 getRegisteredSceneNodeAnimatorFactoryCount() const = 0;
1049 virtual const video::SColorf& getAmbientLight() const = 0;
1051 ISceneNodeAnimatorCollisionResponse.h
1052 Changed signature (made const)
1053 virtual bool isFalling() const = 0;
1055 ISceneNodeAnimatorFactory.h
1056 Changed signature (changed param types, made const)
1057 virtual u32 getCreatableSceneNodeAnimatorTypeCount() const = 0;
1058 virtual ESCENE_NODE_ANIMATOR_TYPE getCreateableSceneNodeAnimatorType(u32 idx) const = 0;
1059 virtual const c8* getCreateableSceneNodeAnimatorTypeName(u32 idx) const = 0;
1060 Changed signature (made const)
1061 virtual const c8* getCreateableSceneNodeAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type) const = 0;
1064 Changed signature (changed param types, made const)
1065 virtual u32 getCreatableSceneNodeTypeCount() const = 0;
1066 virtual ESCENE_NODE_TYPE getCreateableSceneNodeType(u32 idx) const = 0;
1067 virtual const c8* getCreateableSceneNodeTypeName(u32 idx) const = 0;
1068 Changed signature (made const)
1069 virtual const c8* getCreateableSceneNodeTypeName(ESCENE_NODE_TYPE type) const = 0;
1072 Changed signature (made const)
1073 virtual u32 getMaterialCount() const
1074 bool isDebugObject() const
1075 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const
1077 IShadowVolumeSceneNode.h
1078 Changed signature (made const param)
1079 virtual void setMeshToRenderFrom(const IMesh* mesh) = 0;
1082 Changed signature (made const)
1083 virtual u32 getIndexCount() const = 0;
1084 virtual void getMeshBufferForLOD(SMeshBufferLightMap& mb, s32 LOD) const = 0;
1085 virtual s32 getCurrentLODOfPatches(core::array<s32>& LODs) const = 0;
1086 virtual f32 getHeight( f32 x, f32 y ) const = 0;
1087 Changed signature (made const, made const-ref param)
1088 virtual const core::vector3df& getTerrainCenter() const = 0;
1091 Changed signature (made const)
1092 virtual const core::dimension2d<s32>& getOriginalSize() const = 0;
1093 virtual const core::dimension2d<s32>& getSize() const = 0;
1094 virtual E_DRIVER_TYPE getDriverType() const = 0;
1095 const core::stringc& getName() const { return Name; }
1098 Changed signature (made const)
1099 virtual u32 getRealTime() const = 0;
1100 virtual u32 getTime() const = 0;
1101 virtual f32 getSpeed() const = 0;
1102 virtual bool isStopped() const = 0;
1105 Changed signature (made const)
1106 virtual void getTriangles(core::triangle3df* triangles, s32 arraySize,
1107 s32& outTriangleCount, const core::matrix4* transform=0) const = 0;
1108 virtual void getTriangles(core::triangle3df* triangles, s32 arraySize,
1109 s32& outTriangleCount, const core::aabbox3d<f32>& box,
1110 const core::matrix4* transform=0) const = 0;
1111 virtual void getTriangles(core::triangle3df* triangles, s32 arraySize,
1112 s32& outTriangleCount, const core::line3d<f32>& line,
1113 const core::matrix4* transform=0) const = 0;
1116 Changed signature (made const, changed param type)
1117 virtual u32 getTextureCount() const = 0;
1118 Changed signature (made const param) in all draw2DImage methods
1119 virtual void draw2DImage(const video::ITexture* texture,
1120 Changed signature (made const-ref param, made const)
1121 virtual const core::dimension2d<s32>& getScreenSize() const = 0;
1122 virtual const core::dimension2d<s32>& getCurrentRenderTargetSize() const = 0;
1123 Changed signature (made const)
1124 virtual bool queryFeature(E_VIDEO_DRIVER_FEATURE feature) const = 0;
1125 virtual const core::matrix4& getTransform(E_TRANSFORMATION_STATE state) const = 0;
1126 virtual ITexture* createRenderTargetTexture(const core::dimension2d<s32>& size, const c8* name = 0) = 0;
1127 virtual void makeColorKeyTexture(video::ITexture* texture, video::SColor color) const = 0;
1128 virtual void makeColorKeyTexture(video::ITexture* texture,
1129 core::position2d<s32> colorKeyPixelPos) const = 0;
1130 virtual void makeNormalMapTexture(video::ITexture* texture, f32 amplitude=1.0f) const = 0;
1131 virtual s32 getFPS() const = 0;
1132 virtual u32 getPrimitiveCountDrawn( u32 param = 0 ) const = 0;
1133 virtual u32 getMaximalDynamicLightAmount() const = 0;
1134 virtual u32 getDynamicLightCount() const = 0;
1135 virtual const SLight& getDynamicLight(u32 idx) const = 0;
1136 virtual const wchar_t* getName() const = 0;
1137 virtual u32 getMaximalPrimitiveCount() const = 0;
1138 virtual bool getTextureCreationFlag(E_TEXTURE_CREATION_FLAG flag) const = 0;
1139 virtual u32 getMaterialRendererCount() const = 0;
1140 virtual const c8* getMaterialRendererName(u32 idx) const = 0;
1141 virtual E_DRIVER_TYPE getDriverType() const = 0;
1144 Changed signature (changed param type)
1145 virtual s32 write(const void* buffer, u32 sizeToWrite) = 0;
1146 virtual bool seek(long finalPos, bool relativeMovement = false) = 0;
1147 Changed signature (changed param type, made const)
1148 virtual long getPos() const = 0;
1149 Changed signature (made const)
1150 virtual const c8* getFileName() const = 0;
1153 Changed signature (made const)
1154 vector2d<T> getUnitVector() const
1155 f64 getAngleWith(const line2d<T>& l) const
1156 T getPointOrientation(const vector2d<T>& point) const
1157 bool isPointOnLine(const vector2d<T>& point) const
1160 Changed signature (made template param)
1161 void setTranslation( const vector3d<T>& translation );
1162 vector3d<T> getTranslation() const;
1163 void setInverseTranslation( const vector3d<T>& translation );
1164 inline void setRotationRadians( const vector3d<T>& rotation );
1165 void setRotationDegrees( const vector3d<T>& rotation );
1166 core::vector3d<T> getRotationDegrees() const;
1167 inline void setInverseRotationRadians( const vector3d<T>& rotation );
1168 void setInverseRotationDegrees( const vector3d<T>& rotation );
1169 void setScale( const vector3d<T>& scale );
1170 core::vector3d<T> getScale() const;
1173 Changed signature (made non-const ref param, C++ conformance)
1174 rect<T>& operator+=(const position2d<T>& pos)
1175 rect<T>& operator-=(const position2d<T>& pos)
1178 Changed inheritance (S3DVertex is now base class of other vertex types)
1179 struct S3DVertex2TCoords : public S3DVertex
1180 struct S3DVertexTangents : public S3DVertex
1183 Changed signature (changed param type, made const)
1184 virtual u32 getFrameCount() const
1187 Changed signature (changed param type)
1188 inline u32 A1R5G5B5toA8R8G8B8(u16 color)
1191 Removed attribute (use LightSceneNode position instead)
1192 core::vector3df Position;
1195 Changed attribute structure (texture layer properties are now in thenew TextureLayer array). This changes access to Textures, TextureMatrix, TextureWrap, and the filter settings, which are also per-layer now.
1196 SMaterialLayer TextureLayer[MATERIAL_MAX_TEXTURES];
1199 Changed signature (made template param)
1200 bool equals(const vector3d<T>& other, const T tolerance = (T)ROUNDING_ERROR_32 ) const
1202 Changes for Version 1.4.1
1203 -------------------------
1204 Since this version is a backward compatible bugfix release, the API changes are only a few. None of them should result
1205 in uncompilable code. Newly found warnings might point out wrongly used variables, additional casts or type changes in the
1206 app should easily fix that. The only change which might go unnoticed by the compiler, but affect the application is the
1207 changed initialization in SColorf. This was done to synchronize with other constructors from SColorf and SColor, though,
1208 so the expectations are now much better met.
1209 Also, OSX users have to adjust the defines in IrrCompileConfig, as we now also have OSX defines in Irrlicht style. It's now
1210 even possible to build with X11 support under OSX without changes in the device code.
1213 Changed signature (SColorf is now default initialized to alpha=1.0f)
1214 SColorf(f32 r=0.f, f32 g=0.f, f32 b=0.f, f32 a=1.f) : r(r), g(g), b(b), a(a) {}
1217 Split the OSX define into platform and device (from old MACOSX define)
1218 _IRR_OSX_PLATFORM_ for Apple systems running OSX
1219 _IRR_USE_OSX_DEVICE_ for Cocoa native windowing on OSX
1222 Added new overload for getMesh with IReadFile instead of filename.
1223 virtual IAnimatedMesh* getMesh(io::IReadFile* file) = 0;
1226 Renamed method setbit
1227 REALINLINE void setbit_cond ( u32 &state, s32 condition, u32 mask )
1230 Changed signature (because the debug data enum values can be OR'ed to enable multiple debug data types)
1231 virtual void setDebugDataVisible(s32 state)
1232 s32 isDebugDataVisible() const
1233 s32 DebugDataVisible;
1236 Changed signature (Added return values to some methods)
1237 inline CMatrix4<T>& setbyproduct(const CMatrix4<T>& other_a,const CMatrix4<T>& other_b );
1238 CMatrix4<T>& setbyproduct_nocheck(const CMatrix4<T>& other_a,const CMatrix4<T>& other_b );
1239 inline CMatrix4<T>& makeIdentity();
1240 CMatrix4<T>& setTranslation( const vector3d<T>& translation );
1241 CMatrix4<T>& setInverseTranslation( const vector3d<T>& translation );
1242 inline CMatrix4<T>& setRotationRadians( const vector3d<T>& rotation );
1243 CMatrix4<T>& setRotationDegrees( const vector3d<T>& rotation );
1244 inline CMatrix4<T>& setInverseRotationRadians( const vector3d<T>& rotation );
1245 CMatrix4<T>& setInverseRotationDegrees( const vector3d<T>& rotation );
1246 CMatrix4<T>& setScale( const vector3d<T>& scale );
1247 CMatrix4<T>& buildProjectionMatrixPerspectiveFovRH(f32 fieldOfViewRadians, f32 aspectRatio, f32 zNear, f32 zFar);
1248 CMatrix4<T>& buildProjectionMatrixPerspectiveFovLH(f32 fieldOfViewRadians, f32 aspectRatio, f32 zNear, f32 zFar);
1249 CMatrix4<T>& buildProjectionMatrixPerspectiveRH(f32 widthOfViewVolume, f32 heightOfViewVolume, f32 zNear, f32 zFar);
1250 CMatrix4<T>& buildProjectionMatrixPerspectiveLH(f32 widthOfViewVolume, f32 heightOfViewVolume, f32 zNear, f32 zFar);
1251 CMatrix4<T>& buildProjectionMatrixOrthoLH(f32 widthOfViewVolume, f32 heightOfViewVolume, f32 zNear, f32 zFar);
1252 CMatrix4<T>& buildProjectionMatrixOrthoRH(f32 widthOfViewVolume, f32 heightOfViewVolume, f32 zNear, f32 zFar);
1253 CMatrix4<T>& buildCameraLookAtMatrixLH(...)
1254 CMatrix4<T>& buildCameraLookAtMatrixRH(...)
1255 CMatrix4<T>& buildShadowMatrix(const core::vector3df& light, core::plane3df plane, f32 point=1.0f);
1256 CMatrix4<T>& buildNDCToDCMatrix( const core::rect<s32>& area, f32 zScale);
1257 CMatrix4<T>& setTextureScale( f32 sx, f32 sy );
1258 CMatrix4<T>& setTextureRotationCenter( f32 radAngle );
1259 CMatrix4<T>& setTextureScaleCenter( f32 sx, f32 sy );
1260 CMatrix4<T>& setTextureTranslate( f32 x, f32 y );
1261 CMatrix4<T>& setM(const T* data);
1262 Added overload (for one scale value for all axes)
1263 CMatrix4<T>& setScale( const T scale ) { return setScale(core::vector3d<T>(scale,scale,scale)); }
1267 bool operator<(const S3DVertex& other) const
1268 bool operator<(const S3DVertex2TCoords& other) const
1269 bool operator<(const S3DVertexTangents& other) const
1272 Changed signature (int->u32, negative length didn't make sense)
1273 bool equalsn(const string<T>& other, u32 n) const
1274 bool equalsn(const T* const str, u32 n) const
1275 New overload/missing method (completing the findLast... and find...Char methods)
1276 s32 findLastChar(const T* const c, u32 count) const
1277 Changed signature (Added return value)
1280 Changes for Version 1.4.2
1281 -------------------------
1282 This is once more a bugfix release of the 1.4 branch, and hence pretty API-consistent and backward compatible. The major reason to publish this release is the OpenGL bug, which made several OpenGL 2.x drivers run in SW emulation.
1283 However, we also introduced some driver consistency fixes, which might affect your application's behavior. So read through the next points thoroughly.
1285 SceneParameters.h (and general video driver behavior)
1286 The way Irrlicht handles zbuffer writing with transparent materials has changed. This was an issue ever since, because the default behavior in Irrlicht is to disable writing to the z-buffer for all really transparent, i.e. blending materials. This avoids problems with intersecting faces, but can also break renderings. And this is now consistent for both OpenGL and Direct3D.
1287 If transparent materials should use the SMaterial flag for ZWriteEnable just as other material types use the newly introduced attribute scene::ALLOW_ZWRITE_ON_TRANSPARENT like this:
1288 SceneManager->getParameters()->setAttribute(scene::ALLOW_ZWRITE_ON_TRANSPARENT, true);
1289 All transparent materials will henceforth work as specified by the material flag, until the scenemanager attribute is set to false.
1292 The texture matrix now uses irrAllocator for memory handling. This shouldn't be noticeable from the user application (besides fixed heap corruptions on Windows machines), but is still mentioned for completeness.
1295 Documentation error. The docs said that children of a scene node are not visible if the node itself is set to visible. This is of course wrong, children inherit non-visibility of the parent and are hence invisible if the parent is. If the parent is visible, the visibility flag of the child determines its status.
1298 Removed methods (use the unsigned versions and cast in your app if necessary)
1299 inline s32 getRedSigned(u16 color)
1300 inline s32 getGreenSigned(u16 color)
1301 inline s32 getBlueSigned(u16 color)
1303 IParticleSystemSceneNode.h
1304 Changed default values (the old direction default was no real direction)
1305 virtual IParticleAnimatedMeshSceneNodeEmitter* createAnimatedMeshSceneNodeEmitter(...)
1306 virtual IParticleCylinderEmitter* createCylinderEmitter(...)
1307 virtual IParticleMeshEmitter* createMeshEmitter(...)
1310 Changed signature (Made const)
1311 virtual E_BONE_SKINNING_SPACE getSkinningSpace() const=0;
1314 Changed signature (Return value bool instead of void). Returns whether the event has been handled somewhere.
1315 virtual bool postEventFromUser(const SEvent& event) = 0;
1317 Changes for Version 1.5
1318 -----------------------
1319 Another major release, so expect API breaks at several places. The changes
1320 herein are described as a difference to Irrlicht 1.4.2.
1322 The most noticeable changes are the speed factor of the FPS camera (now units/ms
1323 instead of units/s, so divide the parameter by 1000.f) and the new interfaces
1324 of the camera nodes, based on scene node animators. Custom camera nodes should
1325 be adpated to this new scheme, although they might still work. Also, particle
1326 sizes are now set and handled by the emitters, which requires a change of the
1327 particle system constructor call or adaption of the setParticleSize method to
1328 work on the emitters. A deprecation method is issued if the old scheme is used.
1329 Light setting has also changed, the SLight struct is used in even less
1330 situations than before, instead use methods in ILightSceneNode.
1332 Other changes did change major parts of the underlying structures, but might go
1333 unnoticed on the user level. This includes 32bit indices and Vertex Buffer
1334 Objects. However, VBOs require the user to call setDirty on Meshes or
1335 MeshBuffers after changes to the vertex or index data. The all need only to be
1336 done once before the next render call, but again after subsequent changes later
1340 All Mesh types and MeshBuffers:
1341 New methods for VBO support. Once VBOs are enabled for a meshbuffer, changes
1342 will only be effective after a call to setDirty(). VBOs are enabled by default
1343 for some scene nodes.
1344 virtual void setDirty(E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX);
1347 Due to the 32bit support, it might happen that indices are stored as 32bit integers. The actual index type can be queried from a mesh buffer.
1348 virtual video::E_INDEX_TYPE getIndexType() const
1351 Some new defines for configuring Irrlicht
1352 _IRR_USE_WINDOWS_CE_DEVICE_ for Windows CE API based device
1353 _IRR_COMPILE_WITH_JOYSTICK_EVENTS_ to enable joystick support (enabled by default)
1354 _IRR_COMPILE_WITH_LWO_LOADER_ to enable the LWO mesh loader (enabled by default)
1355 _IRR_COMPILE_WITH_OBJ_WRITER_ to enable the OBJ mesh writer (enabled by default)
1356 _IRR_COMPILE_WITH_WAL_LOADER_ to enable the WAL image loader (enabled by default)
1357 _IRR_USE_NVIDIA_PERFHUD_ for support of the PerfHUD tool (disabled by default)
1360 New parameter scene::OBJ_LOADER_IGNORE_GROUPS, which allows to ignore the group structure of obj files. It's disabled by default, meaning obj groups will be represented by separate meshbuffers.
1363 Renamed method names of the SColorHSL class
1364 void fromRGB(const SColor &color);
1365 void toRGB(SColor &color) const;
1369 virtual void* lock(bool readOnly = false) = 0;
1372 Renamed methods (the old ones still exist, but are deprecated). The new methods also work on meshbuffers, not just meshes.
1373 (renamed from scaleMesh)
1374 virtual void scale(IMesh* mesh, const core::vector3df& factor) const = 0;
1375 (renamed from transformMesh)
1376 virtual void transform(IMesh* mesh, const core::matrix4& m) const = 0;
1377 Changed signature (Added new parameters to adjust the algorithm)
1378 virtual IMesh* createMeshWithTangents(IMesh* mesh, bool recalculateNormals=false, bool smooth=false, bool angleWeighted=false) const = 0;
1380 IBillboardTextSceneNode.h
1381 New interface replacing the multiple inheritance from bliiboard and text scene node previously used by the billboard text scene node.
1383 IParticleSystemSceneNode.h
1384 All emitters have minStartSize and maxStartSize parameters now, since partice size is handled by the emitters now.
1386 virtual void setParticlesAreGlobal(bool global=true) = 0;
1389 Signature change (return value changed from u32)
1390 inline s32 strtol10(const char* in, const char** out=0)
1391 Signature change (parameter changed from float)
1392 inline const char* fast_atof_move( const char * in, f32 & out)
1394 IAnimatedMeshSceneNode.h
1395 Added new parameter (dummy node used for simplifying shadow calculation)
1396 virtual IShadowVolumeSceneNode* addShadowVolumeSceneNode(const IMesh* shadowMesh=0,
1397 s32 id=-1, bool zfailmethod=true, f32 infinity=10000.0f) = 0;
1400 Removed extra render passes for quake shaders
1401 Changed scene node from ISceneNode to IMeshSceneNode
1402 virtual IMeshSceneNode* addCubeSceneNode(f32 size=10.0f, ISceneNode* parent=0, s32 id=-1, ...)
1403 virtual IMeshSceneNode* addSphereSceneNode(f32 radius=5.0f, s32 polyCount=16, ...)
1404 Changed default value (from 256 to 512, for efficiency on common gfx hardware)
1405 virtual ISceneNode* addOctTreeSceneNode(IAnimatedMesh* mesh, ISceneNode* parent=0,
1406 s32 id=-1, s32 minimalPolysPerNode=512, bool alsoAddIfMeshPointerZero=false) = 0;
1407 Changed default value (from 500.f, to adapt the changed speed scale)
1408 virtual ICameraSceneNode* addCameraSceneNodeFPS(ISceneNode* parent = 0,
1409 f32 rotateSpeed = 100.0f, f32 moveSpeed = .5f, s32 id=-1, ...)
1410 Added default values
1411 virtual ISceneNode* addSkyDomeSceneNode(video::ITexture* texture,
1412 u32 horiRes=16, u32 vertRes=8,
1413 f64 texturePercentage=0.9, f64 spherePercentage=2.0,
1414 ISceneNode* parent=0, s32 id=-1) = 0;
1415 Changed return value (from ITextSceneNode, due to changed inheritance)
1416 virtual IBillboardTextSceneNode* addBillboardTextSceneNode( gui::IGUIFont* font, const wchar_t* text, ...)
1417 Changed default value (gravity, from -100.f)
1418 virtual ISceneNodeAnimatorCollisionResponse* createCollisionResponseAnimator(
1419 ITriangleSelector* world, ISceneNode* sceneNode,
1420 const core::vector3df& ellipsoidRadius = core::vector3df(30,60,30),
1421 const core::vector3df& gravityPerSecond = core::vector3df(0,-10.0f,0),
1422 const core::vector3df& ellipsoidTranslation = core::vector3df(0,0,0),
1423 f32 slidingValue = 0.0005f) = 0;
1425 ISceneNodeAnimator.h
1426 Changed inheritance (for interactive animators)
1427 class ISceneNodeAnimator : public io::IAttributeExchangingObject, public IEventReceiver
1428 Changed to pure virtual (bug fix)
1429 virtual ISceneNodeAnimator* createClone(ISceneNode* node, ISceneManager* newManager=0) = 0;
1432 Changed return value (constification)
1433 virtual const core::dimension2d<s32>& getDesktopResolution() const = 0;
1436 Deprecation: Use getName instead.
1437 virtual const c8* getBoneName() const;
1440 Changed return value (return *this)
1441 vector3d<T>& set(const T nx, const T ny, const T nz) {X=nx; Y=ny; Z=nz; return *this;}
1442 vector3d<T>& set(const vector3d<T>& p) {X=p.X; Y=p.Y; Z=p.Z;return *this;}
1443 vector3d<T>& setLength(T newlength)
1444 vector3d<T>& invert()
1446 void rotateXZBy(f64 degrees, const vector3d<T>& center=vector3d<T>())
1447 void rotateXYBy(f64 degrees, const vector3d<T>& center=vector3d<T>())
1448 void rotateYZBy(f64 degrees, const vector3d<T>& center=vector3d<T>())
1449 Changed parameter type (interpolation factor must not be integral)
1450 vector3d<T> getInterpolated(const vector3d<T>& other, f64 d) const
1451 vector3d<T> getInterpolated_quadratic(const vector3d<T>& v2, const vector3d<T>& v3, f64 d) const
1453 vector3d<T> getHorizontalAngle() const
1456 Attenuation can be overridden by ILightSceneMethod setRadius() Attenuation will
1457 change to (0,1.f/radius,0). Can be overridden after radius was set.
1458 The following members are read-only now:
1464 Parameter type changed (diue to possible 32bit indices)
1465 virtual void getMeshBufferForLOD(IDynamicMeshBuffer& mb, s32 LOD=0) const =0;
1466 Added dafault value (highest detail)
1467 virtual void setLODOfPatch(s32 patchX, s32 patchZ, s32 LOD=0) =0;
1470 Changed member attributes (from s32, to fix 64bit architecture problems)
1477 Changed return value (constification)
1478 const SMD3QuaterionTag& operator[](u32 index) const
1481 Changed default q3 shader values (from LIGHTMAP_M2)
1482 const video::E_MATERIAL_TYPE defaultMaterialType = video::EMT_LIGHTMAP_M4;
1483 const video::E_MODULATE_FUNC defaultModulate = video::EMFN_MODULATE_4X;
1487 virtual const core::matrix4& getAbsoluteTransformation() const
1488 Changed return value (constified)
1489 virtual const core::vector3df& getScale() const
1490 virtual const core::vector3df& getPosition() const
1493 Removed member from UserEvent
1497 Changed member type (from u32)
1501 Added parameter (for alignment)
1502 virtual void draw3DTabButton(IGUIElement* element, bool active,
1503 const core::rect<s32>& rect, const core::rect<s32>* clip=0, gui::EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT) = 0;
1504 virtual void draw3DTabBody(IGUIElement* element, bool border, bool background,
1505 const core::rect<s32>& rect, const core::rect<s32>* clip=0, s32 tabHeight=-1, gui::EGUI_ALIGNMENT alignment=EGUIA_UPPERLEFT ) = 0;
1508 Renamed method (from getDotProduct)
1509 inline f32 dotProduct(const quaternion& other) const;
1510 Changed return value (return *this)
1511 quaternion& set(f32 x, f32 y, f32 z, f32 w);
1512 quaternion& set(f32 x, f32 y, f32 z);
1513 quaternion& set(const core::vector3df& vec);
1514 quaternion& makeInverse();
1515 quaternion& slerp( quaternion q1, quaternion q2, f32 interpolate );
1516 quaternion& fromAngleAxis (f32 angle, const vector3df& axis);
1517 quaternion& makeIdentity();
1518 quaternion& rotationFromTo(const vector3df& from, const vector3df& to);
1521 Added parameters (moved from endScene) and added default values
1522 virtual bool beginScene(bool backBuffer=true, bool zBuffer=true,
1523 SColor color=SColor(255,0,0,0), void* windowId=0,
1524 core::rect<s32>* sourceRect=0) = 0;
1525 Removed parameter (move to beginScene)
1526 virtual bool endScene() = 0;
1527 Renamed method (note, also affects ReferenceCount behavior!)
1528 Use addRenderTargetTexture instead of createRenderTargetTexture
1529 virtual ITexture* addRenderTargetTexture(const core::dimension2d<s32>& size,
1530 const c8* name=0) =0;
1531 Changed parameters (for 32bit index support)
1532 virtual void drawVertexPrimitiveList(const void* vertices, u32 vertexCount,
1533 const void* indexList, u32 primCount, E_VERTEX_TYPE vType,
1534 scene::E_PRIMITIVE_TYPE pType, E_INDEX_TYPE iType) = 0;
1535 Changed parameter (colors are const pointers now)
1536 virtual void draw2DImage(const video::ITexture* texture, const core::rect<s32>& destRect,
1537 const core::rect<s32>& sourceRect, const core::rect<s32>* clipRect = 0,
1538 const video::SColor * const colors=0, bool useAlphaChannelOfTexture=false) = 0;
1542 virtual const quake3::SShader* getShader( const c8* filename, bool fileNameIsValid=true ) = 0;
1545 Added method parameter (required to set orthogonal together with projection to avoid inconsistencies)
1546 virtual void setProjectionMatrix(const core::matrix4& projection, bool isOrthogonal = false) = 0;
1547 Removed method (use new parameter in setProjectionMatrix)
1548 void setIsOrthogonal( bool orthogonal )
1549 Constified return value
1550 virtual const core::vector3df& getTarget() const = 0;
1551 virtual const core::vector3df& getUpVector() const = 0;
1554 Removed method (use transformPlane)
1555 void transformPlane_new( core::plane3d<f32> &plane) const;
1556 Changed qulifications (to enable use under Win32 systems, too)
1557 IRRLICHT_API extern const matrix4 IdentityMatrix;
1559 SIrrCreationParameters.h
1560 Changed member attribute types
1562 const c8* const SDK_version_do_not_use;
1565 Renamed method from setRelativePosition (to distinguish rather different parameter interpretation)
1566 void setRelativePositionProportional(const core::rect<f32>& r)
1569 Constructors made explicit (use core::stringc(var) in places where var was used before)
1570 explicit string(const double number)
1571 explicit string(int number)
1572 explicit string(unsigned int number)
1573 Added parameter (allows use of method for stringw, and other things)
1574 string<T>& trim(const string<T> & whitespace = " \t\n\r")
1577 Changed return value (return *this)
1578 vector2d<T>& set(T nx, T ny) {X=nx; Y=ny; return *this; }
1579 vector2d<T>& set(const vector2d<T>& p) { X=p.X; Y=p.Y; return *this; }
1581 vector2d<T>& rotateBy(f64 degrees, const vector2d<T>& center=vector2d<T>())
1582 Changed parameter type (interpolation factor must not be int)
1583 vector2d<T> getInterpolated(const vector2d<T>& other, f64 d) const
1584 vector2d<T> getInterpolated_quadratic(const vector2d<T>& v2, const vector2d<T>& v3, f64 d) const
1585 vector2d<T>& interpolate(const vector2d<T>& a, const vector2d<T>& b, f64 d)
1587 Changes for Version 1.5.1
1588 -------------------------
1589 This release is a pure bugfixes release, with almost no visible API changes. All changes should be backward compatible (as it's just a minor release), but you have to recompile the app due to changes in the virtual method tables.
1592 Fixed a bug in the operator+=, added operator-= and changed comparison to equal() method.
1593 dimension2d<T>& operator-=(const dimension2d<T>& other)
1596 Added defines to check for the Irrlicht version in the code.
1597 IRRLICHT_VERSION_MAJOR
1598 IRRLICHT_VERSION_MINOR
1599 IRRLICHT_VERSION_REVISION
1600 IRRLICHT_VERSION_SVN // only defined if you're using a version from SVN, i.e. not officially released one
1603 Added static method isDriverSupported which checks the driver support of the library
1604 static bool isDriverSupported(video::E_DRIVER_TYPE driver)
1607 Added iszero specialization for f64
1608 bool iszero(const f64 a, const f64 tolerance = ROUNDING_ERROR_64)
1611 Added deleteCallback flag for cleanup of the ReadCallback.
1612 IrrXMLReader* createIrrXMLReader(IFileReadCallBack* callback, bool deleteCallback = false);
1613 IrrXMLReaderUTF16* createIrrXMLReaderUTF16(IFileReadCallBack* callback, bool deleteCallback = false);
1614 IrrXMLReaderUTF32* createIrrXMLReaderUTF32(IFileReadCallBack* callback, bool deleteCallback = false);
1617 Added getSceneManager to get the currently used scene manager of the node.
1618 ISceneManager* getSceneManager(void) const
1621 Added default values for vType, pType, and iType
1622 virtual void drawVertexPrimitiveList(const void* vertices, u32 vertexCount, const void* indexList, u32 primCount,
1623 E_VERTEX_TYPE vType=EVT_STANDARD, scene::E_PRIMITIVE_TYPE pType=scene::EPT_TRIANGLES, E_INDEX_TYPE iType=EIT_16BIT)
1624 Added method to draw 2d rectangle outline
1625 void draw2DRectangleOutline(const core::recti& pos, SColor color=SColor(255,255,255,255))
1628 Added method to get transposedInverse
1629 CMatrix4<T> transposedInverse(*this, EM4CONST_INVERSE_TRANSPOSED)
1633 typedef rect<f32> rectf;
1634 typedef rect<s32> recti;
1637 Split hardware mapping hint into vertex and index part
1638 E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const
1639 E_HARDWARE_MAPPING getHardwareMappingHint_Index() const
1640 void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX )
1643 Fix angle calculation for integer vectors
1645 Changes for Version 1.5.2
1646 -------------------------
1647 Even less visible changes have been made in this version. Only the automatic Solaris OS recognition has changed, so make sure you have all things defined properly if you compile for Solaris. And the float parser bugfix is a visible change, though non-interfering for existing code.
1649 Changes for Version 1.6.0
1650 -------------------------
1651 This releases has many changes in method signatures. The most obvious ones are signedness changes from s32 to u32. Since many templates won't accept both types, you need to change the types manually in your code. The other major change is from many different types of strings to the new class io::path. These changes should be transparent to the app, unless you need proper overrides in derived classes.
1652 Finally, some deprecated methods have been removed, and some were simply renamed. Just check the API if some methods is not found anymore.
1655 Added default parameters for identity transformation
1656 IMeshSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id,
1657 const core::vector3df& position = core::vector3df(0,0,0),
1658 const core::vector3df& rotation = core::vector3df(0,0,0),
1659 const core::vector3df& scale = core::vector3df(1,1,1))
1662 This is a new type, which handles stuff with UTF file systems.
1663 typedef core::string<fschar_t> io::path;
1666 New scene node identifiers
1667 ESNT_SKY_DOME = MAKE_IRR_ID('s','k','y','d'),
1668 ESNT_Q3SHADER_SCENE_NODE = MAKE_IRR_ID('q','3','s','h'),
1669 ESNT_VOLUME_LIGHT = MAKE_IRR_ID('v','o','l','l'),
1673 virtual void setSelected(const wchar_t *item) = 0;
1674 virtual void setItemHeight( s32 height ) = 0;
1675 virtual void setDrawBackground(bool draw) = 0;
1678 New texture generation flag for burnings video driver
1679 //! Allow the Driver to use Non-Power-2-Textures
1680 ETCF_ALLOW_NON_POWER_2 = 0x00000040,
1681 Parameter change (now using path type instead of C-strings)
1682 ITexture(const io::path& name)
1684 virtual const core::dimension2d<u32>& getOriginalSize() const = 0;
1685 virtual const core::dimension2d<u32>& getSize() const = 0;
1687 virtual bool hasAlpha() const
1688 Parameter change (now using path type instead of stringc)
1689 const io::path& getName() const
1692 This is a new interface for the light manager
1693 class ILightManager : public IReferenceCounted
1697 virtual core::dimension2du getTextDimension() = 0;
1701 virtual const ISceneNode* getSceneNodeForTriangle(u32 triangleIndex) const = 0;
1705 virtual void makePlanarTextureMapping(scene::IMeshBuffer* meshbuffer, f32 resolution=0.001f) const =0;
1706 virtual void makePlanarTextureMapping(scene::IMeshBuffer* buffer, f32 resolutionS, f32 resolutionT, u8 axis, const core::vector3df& offset) const =0;
1707 virtual IMesh* createMeshWith1TCoords(IMesh* mesh) const = 0;
1711 const c8* const DMF_USE_MATERIALS_DIRS = "DMF_MaterialsDir";
1713 const c8* const DMF_IGNORE_MATERIALS_DIRS = "DMF_IgnoreMaterialsDir";
1714 const c8* const OBJ_LOADER_IGNORE_MATERIAL_FILES = "OBJ_IgnoreMaterialFiles";
1715 const c8* const B3D_LOADER_IGNORE_MIPMAP_FLAG = "B3D_IgnoreMipmapFlag";
1716 const c8* const DEBUG_NORMAL_LENGTH = "DEBUG_Normal_Length";
1717 const c8* const DEBUG_NORMAL_COLOR = "DEBUG_Normal_Color";
1720 Removed method (use getTransform)
1721 void setTransformState( video::E_TRANSFORMATION_STATE state);
1723 core::matrix4& getTransform( video::E_TRANSFORMATION_STATE state);
1724 const core::matrix4& getTransform( video::E_TRANSFORMATION_STATE state) const;
1725 bool clipLine(core::line3d<f32>& line) const;
1728 Changed parameters (to io::path)
1729 virtual const io::path& getFileName(u32 index) const = 0;
1730 virtual const io::path& getFullFileName(u32 index) const = 0;
1732 virtual u32 getFileSize(u32 index) const = 0;
1733 virtual s32 findFile(const io::path& filename, bool isFolder=false) const = 0;
1734 virtual const io::path& getPath() const = 0;
1738 s32 isFileExtension(const io::path& filename,
1739 const io::path& ext0, const io::path& ext1, const io::path& ext2)
1740 bool hasFileExtension(const io::path& filename,
1741 const io::path& ext0, const io::path& ext1 = "", const io::path& ext2 = "")
1742 stringw& cutFilenameExtension ( stringw &dest, const stringw &source )
1743 core::stringw& deletePathFromFilename(core::stringw& filename)
1744 core::stringc& deletePathFromFilename(core::stringc& filename)
1745 io::path& deletePathFromPath(io::path& filename, s32 pathCount)
1746 s32 isInSameDirectory ( const io::path& path, const io::path& file )
1750 virtual u32 getItemData(u32 idx) const = 0;
1751 virtual s32 getIndexForItemData(u32 data ) const = 0;
1753 virtual u32 addItem(const wchar_t* text, u32 data = 0) = 0;
1756 New allocation scheme member
1758 Use overload instead of different name
1759 s32 binary_search(const T& element) const
1761 void setAllocStrategy ( eAllocStrategy newStrategy = ALLOC_STRATEGY_DOUBLE )
1762 s32 binary_search_multi(const T& element, s32 &last)
1766 #define _IRR_MATERIAL_MAX_TEXTURES_ 4
1767 //! Define _IRR_D3D_USE_LEGACY_HLSL_COMPILER to enable the old HLSL compiler in recent DX SDKs
1768 #define BURNINGVIDEO_RENDERER_CE
1769 #define IGNORE_DEPRECATED_WARNING
1770 #define _IRR_COMPILE_WITH_PLY_LOADER_
1771 #define _IRR_COMPILE_WITH_PLY_WRITER_
1772 #define _IRR_COMPILE_WITH_RGB_LOADER_
1773 #define __IRR_COMPILE_WITH_ZIP_ARCHIVE_LOADER_
1774 #define __IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_
1775 #define __IRR_COMPILE_WITH_PAK_ARCHIVE_LOADER_
1776 #define __IRR_COMPILE_WITH_TAR_ARCHIVE_LOADER_
1777 //! _IRR_WINDOWS_CE_PLATFORM_ for Windows CE
1778 //! _IRR_COMPILE_WITH_WINDOWS_DEVICE_ for Windows API based device
1779 //! _IRR_COMPILE_WITH_WINDOWS_CE_DEVICE_ for Windows CE API based device
1780 //! _IRR_COMPILE_WITH_OSX_DEVICE_ for Cocoa native windowing on OSX
1781 //! _IRR_COMPILE_WITH_X11_DEVICE_ for Linux X11 based device
1782 //! _IRR_COMPILE_WITH_SDL_DEVICE_ for platform independent SDL framework
1783 //! _IRR_COMPILE_WITH_CONSOLE_DEVICE_ for no windowing system, used as a fallback
1784 Removed compiler flags
1785 //! _IRR_USE_SDL_DEVICE_ for platform independent SDL framework
1786 //! _IRR_USE_WINDOWS_DEVICE_ for Windows API based device
1787 //! _IRR_USE_WINDOWS_CE_DEVICE_ for Windows CE API based device
1788 //! _IRR_USE_LINUX_DEVICE_ for X11 based device
1789 //! _IRR_USE_OSX_DEVICE_ for Cocoa native windowing on OSX
1790 Old compilers rejected
1791 # error "Only Microsoft Visual Studio 7.0 and later are supported."
1792 Force symbol export in shared libraries built with gcc.
1793 #define IRRLICHT_API __attribute__ ((visibility("default")))
1795 IGUIFileOpenDialog.h
1797 virtual const io::path& getDirectoryName() = 0;
1800 New enum for multi-device support
1804 Changed parameter to use io::path instead of C strings
1805 virtual bool isALoadableFileExtension(const io::path& filename) const = 0;
1807 IAnimatedMeshSceneNode.h
1808 Changed return value to pointer type
1809 virtual const SMD3QuaternionTag* getMD3TagTransformation( const core::stringc & tagname) = 0;
1812 New enum values and numbering
1813 enum E_SCENE_NODE_RENDER_PASS
1815 ESNRP_TRANSPARENT =16,
1816 ESNRP_TRANSPARENT_EFFECT =32,
1817 Changed parameter to use io::path instead of C strings
1818 virtual IAnimatedMesh* getMesh(const io::path& filename) = 0;
1820 virtual io::IFileSystem* getFileSystem() = 0;
1821 virtual ITriangleSelector* createTriangleSelector(IAnimatedMeshSceneNode* node) = 0;
1822 virtual const c8* getAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type) = 0;
1823 virtual ISkinnedMesh* createSkinnedMesh() = 0;
1824 virtual void setLightManager(ILightManager* lightManager) = 0;
1825 virtual const IGeometryCreator* getGeometryCreator(void) const = 0;
1826 virtual bool isCulled(const ISceneNode* node) const =0;
1827 Changed return type to IMeshSceneNode
1828 virtual IMeshSceneNode* addOctTreeSceneNode(IAnimatedMesh* mesh, ISceneNode* parent=0,
1829 s32 id=-1, s32 minimalPolysPerNode=512, bool alsoAddIfMeshPointerZero=false) = 0;
1830 virtual IMeshSceneNode* addOctTreeSceneNode(IMesh* mesh, ISceneNode* parent=0,
1831 s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false) = 0;
1832 virtual IMeshSceneNode* addQuake3SceneNode(IMeshBuffer* meshBuffer, const quake3::IShader * shader,
1833 ISceneNode* parent=0, s32 id=-1) = 0;
1834 New parameter invertMouse
1835 virtual ICameraSceneNode* addCameraSceneNodeFPS(ISceneNode* parent = 0,
1836 f32 rotateSpeed = 100.0f, f32 moveSpeed = 0.5f, s32 id=-1,
1837 SKeyMap* keyMapArray=0, s32 keyMapSize=0, bool noVerticalMovement=false,
1838 f32 jumpSpeed = 0.f, bool invertMouse=false) = 0;
1839 New parameter radius
1840 virtual ISceneNode* addSkyDomeSceneNode(video::ITexture* texture,
1841 u32 horiRes=16, u32 vertRes=8,
1842 f32 texturePercentage=0.9, f32 spherePercentage=2.0,f32 radius = 1000.f,
1843 ISceneNode* parent=0, s32 id=-1) = 0;
1844 Changed to use io::path instead of C strings
1845 virtual ITerrainSceneNode* addTerrainSceneNode(
1846 const io::path& heightMapFileName,
1847 ISceneNode* parent=0, s32 id=-1,
1848 virtual IAnimatedMesh* addHillPlaneMesh(const io::path& name,
1849 const core::dimension2d<f32>& tileSize, const core::dimension2d<u32>& tileCount,
1850 video::SMaterial* material = 0, f32 hillHeight = 0.0f,
1851 const core::dimension2d<f32>& countHills = core::dimension2d<f32>(0.0f, 0.0f),
1852 const core::dimension2d<f32>& textureRepeatCount = core::dimension2d<f32>(1.0f, 1.0f)) = 0;
1853 virtual IAnimatedMesh* addArrowMesh(const io::path& name,
1854 video::SColor vtxColor0=0xFFFFFFFF,
1855 video::SColor vtxColor1=0xFFFFFFFF,
1856 u32 tesselationCylinder=4, u32 tesselationCone=8,
1857 virtual IAnimatedMesh* addSphereMesh(const io::path& name,
1858 f32 radius=5.f, u32 polyCountX = 16,
1859 u32 polyCountY = 16) = 0;
1860 virtual bool saveScene(const io::path& filename, ISceneUserDataSerializer* userDataSerializer=0) = 0;
1861 virtual bool loadScene(const io::path& filename, ISceneUserDataSerializer* userDataSerializer=0) = 0;
1862 Changed to use io::path instead of C strings and signedness change
1863 virtual IAnimatedMesh* addTerrainMesh(const io::path& meshname,
1864 video::IImage* texture, video::IImage* heightmap,
1865 const core::dimension2d<f32>& stretchSize = core::dimension2d<f32>(10.0f,10.0f),
1866 f32 maxHeight=200.0f,
1867 const core::dimension2d<u32>& defaultVertexBlockSize = core::dimension2d<u32>(64,64)) = 0;
1869 virtual IAnimatedMesh* addVolumeLightMesh(const io::path& name,
1870 const u32 SubdivideU = 32, const u32 SubdivideV = 32,
1871 const video::SColor FootColor = video::SColor(51, 0, 230, 180),
1872 const video::SColor TailColor = video::SColor(0, 0, 0, 0)) = 0;
1873 Constification of method
1874 virtual ICameraSceneNode* getActiveCamera() const =0;
1876 virtual ISceneNodeAnimator* createFlyCircleAnimator(
1877 const core::vector3df& center=core::vector3df(0.f,0.f,0.f),
1878 f32 radius=100.f, f32 speed=0.001f,
1879 const core::vector3df& direction=core::vector3df(0.f, 1.f, 0.f),
1880 f32 startPosition = 0.f,
1881 f32 radiusEllipsoid = 0.f) = 0;
1882 virtual ISceneNodeAnimator* createFlyStraightAnimator(const core::vector3df& startPoint,
1883 const core::vector3df& endPoint, u32 timeForWay, bool loop=false, bool pingpong = false) = 0;
1885 ISceneNodeAnimatorCollisionResponse.h
1887 class ICollisionCallback : public virtual IReferenceCounted
1888 New methods for ISceneNodeAnimatorCollisionResponse
1889 virtual void setAnimateTarget ( bool enable ) = 0;
1890 virtual bool getAnimateTarget () const = 0;
1891 virtual void setTargetNode(ISceneNode * node) = 0;
1892 virtual ISceneNode* getTargetNode(void) const = 0;
1893 virtual bool collisionOccurred() const = 0;
1894 virtual const core::vector3df & getCollisionPoint() const = 0;
1895 virtual const core::triangle3df & getCollisionTriangle() const = 0;
1896 virtual const core::vector3df & getCollisionResultPosition(void) const = 0;
1897 virtual const ISceneNode* getCollisionNode(void) const = 0;
1898 virtual void setCollisionCallback(ICollisionCallback* callback) = 0;
1902 virtual void setVisible(bool isVisible) = 0;
1906 EMWT_PLY = MAKE_IRR_ID('p','l','y',0)
1907 EMWF_WRITE_BINARY = 0x4
1909 ISceneNodeAnimator.h
1911 virtual bool hasFinished(void) const
1916 bool BilinearFilter:1;
1917 bool TrilinearFilter:1;
1918 u8 AnisotropicFilter;
1924 virtual core::dimension2d<u32> getVideoModeResolution(s32 modeNumber) const = 0;
1925 virtual core::dimension2d<u32> getVideoModeResolution(const core::dimension2d<u32>& minSize, const core::dimension2d<u32>& maxSize) const = 0;
1926 virtual const core::dimension2d<u32>& getDesktopResolution() const = 0;
1929 Enum values changed (all renumbered)
1932 Renamed methods (was create... before, but these methods grab the things they create)
1933 virtual SSkinMeshBuffer* addMeshBuffer() = 0;
1934 virtual SJoint* addJoint(SJoint *parent=0) = 0;
1935 virtual SWeight* addWeight(SJoint *joint) = 0;
1936 virtual SPositionKey* addPositionKey(SJoint *joint) = 0;
1937 virtual SScaleKey* addScaleKey(SJoint *joint) = 0;
1938 virtual SRotationKey* addRotationKey(SJoint *joint) = 0;
1946 // written by Reinhard Ostermeier, reinhard@nospam.r-ostermeier.de
1947 class IGUITreeView : public IGUIElement
1950 Renamed class (from SMD3QuaterionTag)
1951 struct SMD3QuaternionTag
1955 virtual IGUIImageList* createImageList( video::ITexture* texture,
1956 core::dimension2d<s32> imageSize, bool useAlphaChannel ) = 0;
1957 virtual IGUITreeView* addTreeView(const core::rect<s32>& rectangle,
1958 IGUIElement* parent=0, s32 id=-1, bool drawBackground=false,
1959 bool scrollBarVertical = true, bool scrollBarHorizontal = false) = 0;
1960 Changed parameters to use io::path (instead of C strings)
1961 virtual IGUIFont* getFont(const io::path& filename) = 0;
1962 virtual IGUISpriteBank* getSpriteBank(const io::path& filename) = 0;
1963 virtual IGUISpriteBank* addEmptySpriteBank(const io::path& name) = 0;
1964 virtual bool saveGUI(const io::path& filename, IGUIElement* start=0) = 0;
1965 virtual bool loadGUI(const io::path& filename, IGUIElement* parent=0) = 0;
1966 New parameter "border"
1967 virtual IGUISpinBox* addSpinBox(const wchar_t* text, const core::rect<s32>& rectangle,
1968 bool border=true,IGUIElement* parent=0, s32 id=-1) = 0;
1972 static core::stringc irrEmptyStringc("");
1976 E_Q3_MESH_UNRESOLVED,
1980 class IGeometryCreator : public IReferenceCounted
1984 class IFileArchive : public virtual IReferenceCounted
1985 class IArchiveLoader : public virtual IReferenceCounted
1988 Changed parameters to use io::path (instead of C strings/stringc)
1989 virtual IReadFile* createAndOpenFile(const path& filename) =0;
1990 virtual IReadFile* createMemoryReadFile(void* memory, s32 len, const path& fileName, bool deleteMemoryWhenDropped=false) =0;
1991 virtual IWriteFile* createAndWriteFile(const path& filename, bool append=false) =0;
1992 virtual const path& getWorkingDirectory() =0;
1993 virtual bool changeWorkingDirectoryTo(const path& newDirectory) =0;
1994 virtual path getAbsolutePath(const path& filename) const =0;
1995 virtual path getFileDir(const path& filename) const =0;
1996 virtual path getFileBasename(const path& filename, bool keepExtension=true) const =0;
1997 virtual bool existFile(const path& filename) const =0;
1998 virtual IXMLReader* createXMLReader(const path& filename) =0;
1999 virtual IXMLReaderUTF8* createXMLReaderUTF8(const path& filename) =0;
2000 virtual IXMLWriter* createXMLWriter(const path& filename) =0;
2002 virtual IReadFile* createLimitReadFile(const path& fileName,
2003 IReadFile* alreadyOpenedFile, long pos, long areaSize) =0;
2004 virtual IWriteFile* createMemoryWriteFile(void* memory, s32 len, const path& fileName, bool deleteMemoryWhenDropped=false) =0;
2005 virtual bool addFileArchive(const path& filename, bool ignoreCase=true, bool ignorePaths=true,
2006 E_FILE_ARCHIVE_TYPE archiveType=EFAT_UNKNOWN) =0;
2007 virtual void addArchiveLoader(IArchiveLoader* loader) =0;
2008 virtual u32 getFileArchiveCount() const =0;
2009 virtual bool removeFileArchive(u32 index) =0;
2010 virtual bool removeFileArchive(const path& filename) =0;
2011 virtual bool moveFileArchive(u32 sourceIndex, s32 relative) =0;
2012 virtual IFileArchive* getFileArchive(u32 index) =0;
2013 virtual path& flattenFilename(path& directory, const path& root="/") const =0;
2014 virtual EFileSystemType setFileListSystem(EFileSystemType listType) =0;
2016 virtual bool addZipFileArchive(const c8* filename, bool ignoreCase=true, bool ignorePaths=true)
2017 virtual bool addFolderFileArchive(const c8* filename, bool ignoreCase=true, bool ignorePaths=true)
2018 virtual bool addPakFileArchive(const c8* filename, bool ignoreCase=true, bool ignorePaths=true)
2019 Constification of method
2020 virtual IFileList* createFileList() =0;
2023 Renamed method (from setResizeAble)
2024 virtual void setResizable(bool resize=false) = 0;
2026 virtual void minimizeWindow() =0;
2027 virtual void maximizeWindow() =0;
2028 virtual void restoreWindow() =0;
2029 virtual bool setGammaRamp(f32 red, f32 green, f32 blue,
2030 f32 relativebrightness, f32 relativecontrast) =0;
2031 virtual bool getGammaRamp(f32 &red, f32 &green, f32 &blue,
2032 f32 &brightness, f32 &contrast) =0;
2033 virtual E_DEVICE_TYPE getType() const = 0;
2036 Renamed from ROUNDING_ERROR_32
2037 const f32 ROUNDING_ERROR_f32 = 0.000001f;
2038 Renamed from ROUNDING_ERROR_64
2039 const f64 ROUNDING_ERROR_f64 = 0.00000001;
2041 const s32 ROUNDING_ERROR_S32 = 1;
2043 bool isnotzero(const f32 a, const f32 tolerance = ROUNDING_ERROR_f32)
2044 u16 if_c_a_else_b ( const s16 condition, const u16 a, const u16 b )
2045 f32 squareroot(const f32 f)
2046 f64 squareroot(const f64 f)
2047 s32 squareroot(const s32 f)
2048 f64 reciprocal_squareroot(const f64 x)
2049 s32 reciprocal_squareroot(const s32 x)
2050 f64 reciprocal ( const f64 f )
2052 IGPUProgrammingServices.h
2053 Changed parameters to use io::path
2054 virtual s32 addHighLevelShaderMaterialFromFiles(
2055 const io::path& vertexShaderProgramFileName,
2056 const c8* vertexShaderEntryPointName = "main",
2057 E_VERTEX_SHADER_TYPE vsCompileTarget = EVST_VS_1_1,
2058 const io::path& pixelShaderProgramFileName = "",
2059 const c8* pixelShaderEntryPointName = "main",
2060 E_PIXEL_SHADER_TYPE psCompileTarget = EPST_PS_1_1,
2061 IShaderConstantSetCallBack* callback = 0,
2062 virtual s32 addShaderMaterialFromFiles(const io::path& vertexShaderProgramFileName,
2063 const io::path& pixelShaderProgramFileName,
2064 IShaderConstantSetCallBack* callback = 0,
2065 E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,
2066 s32 userData = 0) = 0;
2070 virtual bool isTrulyVisible() const
2074 EMIE_MOUSE_DOUBLE_CLICK,
2075 EMIE_MOUSE_TRIPLE_CLICK,
2076 EGET_DIRECTORY_SELECTED,
2077 EGET_EDITBOX_CHANGED,
2078 EGET_EDITBOX_MARKING_CHANGED,
2079 EGET_TREEVIEW_NODE_DESELECT,
2080 EGET_TREEVIEW_NODE_SELECT,
2081 EGET_TREEVIEW_NODE_EXPAND,
2082 EGET_TREEVIEW_NODE_COLLAPS,
2085 enum E_MOUSE_BUTTON_STATE_MASK
2091 bool isLeftPressed() const { return 0 != ( ButtonStates & EMBSM_LEFT ); }
2092 bool isRightPressed() const { return 0 != ( ButtonStates & EMBSM_RIGHT ); }
2093 bool isMiddlePressed() const { return 0 != ( ButtonStates & EMBSM_MIDDLE ); }
2101 virtual void draw2DSpriteBatch(const core::array<u32>& indices, const core::array<core::position2di>& pos,
2102 const core::rect<s32>* clip=0,
2103 const video::SColor& color= video::SColor(255,255,255,255),
2104 u32 starttime=0, u32 currenttime=0,
2105 bool loop=true, bool center=false) = 0;
2109 enum E_COMPARISON_FUNC
2112 enum E_ANTI_ALIASING_MODE
2113 enum E_COLOR_MATERIAL
2115 inline f32 pack_texureBlendFunc ( const E_BLEND_FACTOR srcFact, const E_BLEND_FACTOR dstFact, const E_MODULATE_FUNC modulate=EMFN_MODULATE_1X, const u32 alphaSource=EAS_TEXTURE )
2116 inline void unpack_texureBlendFunc ( E_BLEND_FACTOR &srcFact, E_BLEND_FACTOR &dstFact,
2117 E_MODULATE_FUNC &modulo, u32& alphaSource, const f32 param )
2119 inline bool textureBlendFunc_hasAlpha ( const E_BLEND_FACTOR factor )
2120 Default value set elsewhere now (see IrrCompileConfig.h)
2121 const u32 MATERIAL_MAX_TEXTURES = _IRR_MATERIAL_MAX_TEXTURES_;
2126 bool GouraudShading:1;
2128 bool ZWriteEnable:1;
2129 bool BackfaceCulling:1;
2130 bool FrontfaceCulling:1;
2132 bool NormalizeNormals:1;
2138 IRRLICHT_API extern SMaterial IdentityMaterial;
2142 EGDS_TITLEBARTEXT_DISTANCE_X,
2143 EGDS_TITLEBARTEXT_DISTANCE_Y,
2147 void getMatrix( matrix4 &dest, const vector3df &translation ) const;
2149 void getMatrixCenter( matrix4 &dest, const vector3df ¢er, const vector3df &translation ) const;
2151 ISceneNodeAnimatorCameraFPS.h
2153 virtual void setInvertMouse(bool invert) = 0;
2157 /** Floating Point formats. The following formats may only be used for render target textures. */
2166 virtual const core::dimension2d<u32>& getDimension() const = 0;
2167 virtual void copyToScaling(void* target, u32 width, u32 height, ECOLOR_FORMAT format=ECF_A8R8G8B8, u32 pitch=0) =0;
2169 virtual void setPixel(u32 x, u32 y, const SColor &color, bool blend = false ) = 0;
2171 virtual void copyToScalingBoxFilter(IImage* target, s32 bias = 0, bool blend = false) = 0;
2172 static u32 getBitsPerPixelFromFormat(const ECOLOR_FORMAT format)
2173 static bool isRenderTargetOnlyFormat(const ECOLOR_FORMAT format)
2176 New enum values (only existing if _IRR_MATERIAL_MAX_TEXTURES_ large enough)
2182 enum E_RENDER_TARGET
2185 struct SOverrideMaterial
2187 virtual u32 getImageLoaderCount() const = 0;
2188 virtual IImageLoader* getImageLoader(u32 n) = 0;
2189 virtual u32 getImageWriterCount() const = 0;
2190 virtual IImageWriter* getImageWriter(u32 n) = 0;
2191 virtual bool setRenderTarget(E_RENDER_TARGET target, bool clearTarget=true,
2192 bool clearZBuffer=true, SColor color=video::SColor(0,0,0,0)) =0;
2193 virtual void draw2DVertexPrimitiveList(const void* vertices, u32 vertexCount,
2194 const void* indexList, u32 primCount,
2195 E_VERTEX_TYPE vType=EVT_STANDARD,
2196 scene::E_PRIMITIVE_TYPE pType=scene::EPT_TRIANGLES,
2197 E_INDEX_TYPE iType=EIT_16BIT) =0;
2198 virtual void draw2DImageBatch(const video::ITexture* texture,
2199 const core::array<core::position2d<s32> >& positions,
2200 const core::array<core::rect<s32> >& sourceRects,
2201 const core::rect<s32>* clipRect=0,
2202 SColor color=SColor(255,255,255,255),
2203 bool useAlphaChannelOfTexture=false) =0;
2204 virtual void turnLightOn(s32 lightIndex, bool turnOn) =0;
2205 virtual bool writeImageToFile(IImage* image, io::IWriteFile* file, u32 param =0) =0;
2206 virtual IImage* createImage(ITexture* texture,
2207 const core::position2d<s32>& pos, const core::dimension2d<u32>& size) =0;
2208 virtual void setMinHardwareBufferVertexCount(u32 count) =0;
2209 virtual SOverrideMaterial& getOverrideMaterial() =0;
2210 Changed parameters to use io::path
2211 virtual ITexture* getTexture(const io::path& filename) = 0;
2212 virtual void renameTexture(ITexture* texture, const io::path& newName) = 0;
2213 virtual ITexture* addTexture(const io::path& name, IImage* image) = 0;
2214 virtual IImage* createImageFromFile(const io::path& filename) = 0;
2215 virtual bool writeImageToFile(IImage* image, const io::path& filename, u32 param = 0) = 0;
2216 virtual video::ITexture* findTexture(const io::path& filename) = 0;
2218 virtual ITexture* addTexture(const core::dimension2d<u32>& size,
2219 const io::path& name, ECOLOR_FORMAT format = ECF_A8R8G8B8) = 0;
2220 virtual const core::dimension2d<u32>& getScreenSize() const =0;
2221 virtual const core::dimension2d<u32>& getCurrentRenderTargetSize() const =0;
2222 virtual IImage* createImageFromData(ECOLOR_FORMAT format,
2223 const core::dimension2d<u32>& size, void *data,
2224 bool ownForeignMemory=false,
2225 bool deleteMemory = true) =0;
2226 virtual IImage* createImage(ECOLOR_FORMAT format, const core::dimension2d<u32>& size) =0;
2227 virtual IImage* createImage(IImage* imageToCopy,
2228 const core::position2d<s32>& pos,
2229 const core::dimension2d<u32>& size) =0;
2230 virtual void OnResize(const core::dimension2d<u32>& size) =0;
2231 Changed signedness and usage of io::path
2232 virtual ITexture* addRenderTargetTexture(const core::dimension2d<u32>& size,
2233 const io::path& name = "rt", const ECOLOR_FORMAT format = ECF_UNKNOWN) =0;
2234 Removed deprecated method
2235 virtual ITexture* createRenderTargetTexture(const core::dimension2d<s32>& size,
2236 const c8* name=0) =0;
2238 virtual void makeColorKeyTexture(video::ITexture* texture,
2239 video::SColor color, bool zeroTexels = false) const =0;
2240 virtual void makeColorKeyTexture(video::ITexture* texture,
2241 core::position2d<s32> colorKeyPixelPos, bool zeroTexels = false) const =0;
2243 virtual void setFog(SColor color=SColor(0,255,255,255),
2244 E_FOG_TYPE fogType=EFT_FOG_LINEAR,
2245 f32 start=50.0f, f32 end=100.0f, f32 density=0.01f,
2246 bool pixelFog=false, bool rangeFog=false) =0;
2247 Changed return types
2248 virtual s32 addDynamicLight(const SLight& light) =0;
2252 EVDF_ALPHA_TO_COVERAGE,
2257 virtual void setMin(s32 max) = 0;
2258 virtual s32 getMin() const = 0;
2262 virtual void releaseMesh(s32 index) = 0;
2263 Made return value non-const
2264 virtual quake3::tQ3EntityList& getEntityList() = 0;
2266 ISceneCollisionManager.h
2268 virtual bool getCollisionPoint(const core::line3d<f32>& ray,
2269 ITriangleSelector* selector, core::vector3df& outCollisionPoint,
2270 core::triangle3df& outTriangle, const ISceneNode*& outNode) =0;
2271 virtual core::vector3df getCollisionResultPosition(
2272 ITriangleSelector* selector,
2273 const core::vector3df &ellipsoidPosition,
2274 const core::vector3df& ellipsoidRadius,
2275 const core::vector3df& ellipsoidDirectionAndSpeed,
2276 core::triangle3df& triout,
2277 core::vector3df& hitPosition,
2279 const ISceneNode*& outNode,
2280 f32 slidingSpeed = 0.0005f,
2281 const core::vector3df& gravityDirectionAndSpeed = core::vector3df(0.0f, 0.0f, 0.0f)) = 0;
2282 Made parameter const&
2283 virtual core::line3d<f32> getRayFromScreenCoordinates(
2284 const core::position2d<s32> & pos, ICameraSceneNode* camera = 0) = 0;
2285 virtual core::position2d<s32> getScreenCoordinatesFrom3DPosition(
2286 const core::vector3df & pos, ICameraSceneNode* camera=0) = 0;
2287 Made parameter const& and added new parameter
2288 virtual ISceneNode* getSceneNodeFromScreenCoordinatesBB(const core::position2d<s32>& pos,
2289 s32 idBitMask=0, bool bNoDebugObjects=false, ISceneNode* root=0) =0;
2290 virtual ISceneNode* getSceneNodeFromRayBB(const core::line3d<f32>& ray,
2291 s32 idBitMask=0, bool bNoDebugObjects=false, ISceneNode* root=0) =0;
2293 virtual ISceneNode* getSceneNodeAndCollisionPointFromRay(
2294 core::line3df ray, core::vector3df & outCollisionPoint,
2295 core::triangle3df & outTriangle, s32 idBitMask = 0,
2296 ISceneNode * collisionRootNode = 0, bool noDebugObjects = false) = 0;
2299 Changed interface of method (qualifiers and signedness)
2300 extern "C" IRRLICHT_API IrrlichtDevice* IRRCALLCONV createDevice(
2301 video::E_DRIVER_TYPE deviceType = video::EDT_SOFTWARE,
2302 // parantheses are necessary for some compilers
2303 const core::dimension2d<u32>& windowSize = (core::dimension2d<u32>(640,480)),
2305 bool fullscreen = false,
2306 bool stencilbuffer = false,
2308 IEventReceiver* receiver = 0);
2309 extern "C" IRRLICHT_API IrrlichtDevice* IRRCALLCONV createDeviceEx(
2310 const SIrrlichtCreationParameters& parameters);
2313 Changed parameters to use io::path
2314 virtual bool isALoadableFileExtension(const io::path& filename) const = 0;
2318 virtual bool isDraggable() const = 0;
2319 virtual void setDraggable(bool draggable) = 0;
2320 virtual void setDrawBackground(bool draw) = 0;
2321 virtual bool getDrawBackground() const = 0;
2322 virtual void setDrawTitlebar(bool draw) = 0;
2323 virtual bool getDrawTitlebar() const = 0;
2327 virtual void setViewMatrixAffector(const core::matrix4& affector) =0;
2328 virtual const core::matrix4& getViewMatrixAffector() const =0;
2335 Changed parameters to use io::path
2336 virtual bool isAWriteableFileExtension(const io::path& filename) const = 0;
2338 SIrrCreationParameters.h
2340 E_DEVICE_TYPE DeviceType;
2344 core::dimension2d<u32> WindowSize;
2345 Changed type (from bool)
2350 bool isOrthogonal() const;
2351 CMatrix4<T>& buildRotateFromTo(const core::vector3df& from, const core::vector3df& to);
2352 void setRotationCenter(const core::vector3df& center, const core::vector3df& translate);
2353 void buildAxisAlignedBillboard( const core::vector3df& camPos,
2354 const core::vector3df& center, const core::vector3df& translation,
2355 const core::vector3df& axis, const core::vector3df& from);
2358 Changed parameters to use io::path
2359 virtual const path& getFileName() const = 0;
2363 virtual void setSelected( s32 index ) = 0;
2364 Changed type (from wide c string)
2365 virtual void setCellText(u32 rowIndex, u32 columnIndex, const core::stringw& text) = 0;
2366 virtual void setCellText(u32 rowIndex, u32 columnIndex, const core::stringw& text, video::SColor color) = 0;
2373 Changed type (from wide c string)
2374 virtual void draw(const core::stringw& text, const core::rect<s32>& position,
2375 video::SColor color, bool hcenter=false, bool vcenter=false,
2376 const core::rect<s32>* clip=0) = 0;
2378 virtual core::dimension2d<u32> getDimension(const wchar_t* text) const = 0;
2380 virtual void setInvisibleCharacters( const wchar_t *s ) = 0;
2383 Changed parameters to use io::path
2384 virtual void addMesh(const io::path& filename, IAnimatedMesh* mesh) = 0;
2385 virtual IAnimatedMesh* getMeshByFilename(const io::path& filename) = 0;
2386 virtual const io::path& getMeshFilename(u32 index) const = 0;
2387 virtual const io::path& getMeshFilename(const IAnimatedMesh* const mesh) const = 0;
2388 virtual const io::path& getMeshFilename(const IMesh* const mesh) const = 0;
2389 virtual bool setMeshFilename(u32 index, const io::path& filename) = 0;
2390 virtual bool setMeshFilename(const IAnimatedMesh* const mesh, const io::path& filename) = 0;
2391 virtual bool setMeshFilename(const IMesh* const mesh, const io::path& filename) = 0;
2392 virtual bool isMeshLoaded(const io::path& filename) = 0;
2396 virtual void setImage(video::ITexture* image=0) = 0;
2397 virtual void setPressedImage(video::ITexture* image=0) = 0;
2398 virtual void setSpriteBank(IGUISpriteBank* bank=0) = 0;
2399 virtual void setIsPushButton(bool isPushButton=true) = 0;
2400 virtual void setPressed(bool pressed=true) = 0;
2401 virtual void setUseAlphaChannel(bool useAlphaChannel=true) = 0;
2402 virtual void setDrawBorder(bool border=true) = 0;
2404 virtual void setScaleImage(bool scaleImage=true) = 0;
2405 virtual bool isScalingImage() const = 0;
2408 Replaced by vector2d
2412 class IGUIImageList : public virtual IReferenceCounted
2415 Added second template parameter to allow mismatched signedness
2417 rect(const position2d<T>& pos, const dimension2d<U>& size)
2420 Removed wrong overrides
2421 virtual void serializeAttributes(io::IAttributes* out,
2422 io::SAttributeReadWriteOptions* options=0) const {}
2423 virtual s32 deserializeAttributes(s32 startIndex, io::IAttributes* in,
2424 io::SAttributeReadWriteOptions* options=0) { return 0; }
2428 virtual const c8* getTextFromClipboard() const = 0;
2432 void setMaxSize(core::dimension2du size)
2433 void setMinSize(core::dimension2du size)
2436 Changed parameters to use io::path
2437 virtual const io::path& getFileName() const = 0;
2438 IReadFile* createReadFile(const io::path& fileName);
2439 IReadFile* createLimitReadFile(const io::path& fileName, IReadFile* alreadyOpenedFile, long pos, long areaSize);
2440 IReadFile* createMemoryReadFile(void* memory, long size, const io::path& fileName, bool deleteMemoryWhenDropped);
2444 virtual void setTabMaxWidth(s32 width ) = 0;
2445 virtual s32 getTabMaxWidth() const = 0;
2448 Removed wrong overrides
2449 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const {}
2450 virtual s32 deserializeAttributes(s32 startIndex, io::IAttributes* in, io::SAttributeReadWriteOptions* options=0) { return 0; }
2454 virtual void log(const c8* text, const wchar_t* hint, ELOG_LEVEL ll=ELL_INFORMATION) = 0;
2458 vector2d(const dimension2d<T>& other) : X(other.Width), Y(other.Height) {}
2459 vector2d<T>& operator=(const dimension2d<T>& other) { X = other.Width; Y = other.Height; return *this; }
2460 vector2d<T> operator+(const dimension2d<T>& other) const { return vector2d<T>(X + other.Width, Y + other.Height); }
2461 vector2d<T>& operator+=(const dimension2d<T>& other) { X += other.Width; Y += other.Height; return *this; }
2462 vector2d<T> operator-(const dimension2d<T>& other) const { return vector2d<T>(X - other.Width, Y - other.Height); }
2463 vector2d<T>& operator-=(const dimension2d<T>& other) { X -= other.Width; Y -= other.Height; return *this; }
2464 // These methods are declared in dimension2d, but need definitions of vector2d
2466 dimension2d<T>::dimension2d(const vector2d<T>& other) : Width(other.X), Height(other.Y) { }
2468 bool dimension2d<T>::operator==(const vector2d<T>& other) const { return Width == other.X && Height == other.Y; }
2470 Changes for Version 1.6.1
2471 -------------------------
2472 This is again just a bugfix release. However, some minor API changes have happened. The most important one is the removal of lins anti-aliasing from SMaterial's default values. Please add that line smoothing flag to the materials you want to be smoothed. But note that this may lead to drastically reduced performance, if no multi-sampling is active.
2476 virtual u32 getID(u32 index) const = 0;
2477 virtual u32 addItem(const io::path& fullPath, u32 size, bool isDirectory, u32 id=0) = 0;
2478 virtual void sort() = 0;
2481 Removed auto recognition of Solaris OS, please define the setting on your own if you need it
2482 _IRR_SOLARIS_PLATFORM_
2485 removed methods (use automatically generated versions)
2486 IGUITreeViewNode() {}
2487 virtual ~IGUITreeViewNode() {}
2488 virtual ~IGUITreeView() {}
2492 virtual IFileList* createEmptyFileList(const io::path& path, bool ignoreCase, bool ignorePaths) =0;
2495 Removed default value (EAAM_LINE_SMOOTH from AntiAliasing)
2496 ZBuffer(ECFN_LESSEQUAL), AntiAliasing(EAAM_SIMPLE), ColorMask(ECP_ALL),
2503 Changes for Version 1.7
2504 -------------------------
2505 This version has less API-breaking changes than the previous major changes. It has many new features, which simply add methods. All those changes, which affect old methods or structures are mostly put in parallel to the old (and now deprecated) methods. Only a few things are changed without backward compatibility: The texture wrap mode is split into separate U and V modes. The beginScene void* parameter has been replaced by an SExposedVideoData. Simply wrap the pointer with this struct and it should work again.
2506 EMIE_LMOUSE_DOUBLE_CLICK replaces EMIE_MOUSE_DOUBLE_CLICK and EMIE_LMOUSE_TRIPLE_CLICK replaces EMIE_MOUSE_TRIPLE_CLICK
2507 Elements used in the array container need now to have an operator=
2508 Here comes the full list:
2516 bool isTotalOutsideBox(const aabbox3d<T>& box) const
2519 Changed enum value (from octt)
2520 ESNT_OCTREE = MAKE_IRR_ID('o','c','t','r'),
2524 f32 getLightness() const
2528 static irr::video::E_DRIVER_TYPE driverChoiceConsole(bool allDrivers=true)
2532 virtual void regenerateMipMapLevels(void* mipmapData=0) = 0;
2533 Changed return value (from io:path)
2534 const io::SNamedPath& getName() const { return NamedPath; }
2537 New scene parameters
2538 const c8* const OBJ_TEXTURE_PATH = "OBJ_TexturePath";
2539 const c8* const B3D_TEXTURE_PATH = "B3D_TexturePath";
2543 void setVertexColorAlpha(IMesh* mesh, s32 alpha) const
2544 void setVertexColors(IMesh* mesh, video::SColor color) const
2545 void scale(IMeshBuffer* buffer, const core::vector3df& factor) const
2546 void scaleMesh(IMesh* mesh, const core::vector3df& factor) const
2547 void scaleTCoords(scene::IMesh* mesh, const core::vector2df& factor, u32 level=1) const
2548 void scaleTCoords(scene::IMeshBuffer* buffer, const core::vector2df& factor, u32 level=1) const
2549 void transform(IMesh* mesh, const core::matrix4& m) const
2550 void transform(IMeshBuffer* buffer, const core::matrix4& m) const
2552 template <typename Functor>
2553 bool apply(const Functor& func, IMeshBuffer* buffer, bool boundingBoxUpdate=false) const
2554 template <typename Functor>
2555 bool apply(const Functor& func, IMesh* mesh, bool boundingBoxUpdate=false) const
2556 virtual void recalculateTangents(IMesh* mesh, bool recalculateNormals=false,
2557 bool smooth=false, bool angleWeighted=false) const=0;
2558 void scale(IMesh* mesh, const core::vector3df& factor) const
2560 virtual IMesh* createMeshWithTangents(IMesh* mesh, bool recalculateNormals=false, bool smooth=false, bool angleWeighted=false, bool recalculateTangents=true) const = 0;
2563 Changed return type and parameters (from stringc/w)
2564 inline io::path& cutFilenameExtension ( io::path &dest, const io::path &source )
2565 inline io::path& getFileNameExtension ( io::path &dest, const io::path &source )
2566 inline io::path& deletePathFromFilename(io::path& filename)
2568 inline io::path& deletePathFromPath(io::path& filename, s32 pathCount)
2572 virtual const core::position2d<s32>& getPosition() = 0;
2575 Fixed allocator template usage
2576 array(const array<T, TAlloc>& other) : data(0)
2577 const array<T, TAlloc>& operator=(const array<T, TAlloc>& other)
2578 bool operator == (const array<T, TAlloc>& other) const
2579 bool operator != (const array<T, TAlloc>& other) const
2580 Changed behavior for free_when_destroyed
2581 void set_pointer(T* newPointer, u32 size, bool _is_sorted=false, bool _free_when_destroyed=true)
2582 void set_free_when_destroyed(bool f)
2585 Renamed method (from isEmpty)
2588 void swap(map<KeyType, ValueType>& other)
2591 virtual f32 getAnimationSpeed() const =0;
2594 Made parameters const-ref
2595 virtual void addArray(const c8* attributeName, const core::array<core::stringw>& value) = 0;
2596 virtual void setAttribute(const c8* attributeName, const core::array<core::stringw>& value) = 0;
2597 virtual void setAttribute(s32 index, const core::array<core::stringw>& value) = 0;
2600 Renamed method (from OctTree)
2601 virtual IMeshSceneNode* addOctreeSceneNode(IAnimatedMesh* mesh, ISceneNode* parent=0,
2602 s32 id=-1, s32 minimalPolysPerNode=512, bool alsoAddIfMeshPointerZero=false) = 0;
2603 virtual IMeshSceneNode* addOctreeSceneNode(IMesh* mesh, ISceneNode* parent=0,
2604 s32 id=-1, s32 minimalPolysPerNode=256, bool alsoAddIfMeshPointerZero=false) = 0;
2605 virtual ITriangleSelector* createOctreeTriangleSelector(IMesh* mesh,
2606 ISceneNode* node, s32 minimalPolysPerNode=32) = 0;
2607 New parameter (makeActive)
2608 virtual ICameraSceneNode* addCameraSceneNode(ISceneNode* parent = 0,
2609 const core::vector3df& position = core::vector3df(0,0,0),
2610 const core::vector3df& lookat = core::vector3df(0,0,100),
2611 s32 id=-1, bool makeActive=true) = 0;
2612 virtual ICameraSceneNode* addCameraSceneNodeMaya(ISceneNode* parent = 0,
2613 f32 rotateSpeed = -1500.0f, f32 zoomSpeed = 200.0f,
2614 f32 translationSpeed = 1500.0f, s32 id=-1,
2615 bool makeActive=true) = 0;
2616 virtual ICameraSceneNode* addCameraSceneNodeFPS(ISceneNode* parent = 0,
2617 f32 rotateSpeed = 100.0f, f32 moveSpeed = 0.5f, s32 id=-1,
2618 SKeyMap* keyMapArray=0, s32 keyMapSize=0, bool noVerticalMovement=false,
2619 f32 jumpSpeed = 0.f, bool invertMouse=false,
2620 bool makeActive=true) = 0;
2621 Make parameter const
2622 virtual IMeshSceneNode* addQuake3SceneNode(const IMeshBuffer* meshBuffer, const quake3::IShader * shader,
2623 ISceneNode* parent=0, s32 id=-1) = 0;
2624 New parameter (loop, pingpong)
2625 virtual ISceneNodeAnimator* createFollowSplineAnimator(s32 startTime,
2626 const core::array< core::vector3df >& points,
2627 f32 speed = 1.0f, f32 tightness = 0.5f, bool loop=true, bool pingpong=false) = 0;
2631 ETC_MIRROR_CLAMP, ETC_MIRROR_CLAMP_TO_EDGE, ETC_MIRROR_CLAMP_TO_BORDER
2632 New material layer modes (replaces TextureWrap)
2633 TextureWrapU(ETC_REPEAT), TextureWrapV(ETC_REPEAT)
2636 Use tolerance to compare, changed order function to total order
2637 bool operator<=(const vector3d<T>&other) const
2638 bool operator>=(const vector3d<T>&other) const
2639 bool operator<(const vector3d<T>&other) const
2640 bool operator>(const vector3d<T>&other) const
2642 vector3d<T> getSphericalCoordinateAngles()
2643 New method specializations
2645 inline vector3d<s32> vector3d<s32>::operator /(s32 val) const {return core::vector3d<s32>(X/val,Y/val,Z/val);}
2647 inline vector3d<s32>& vector3d<s32>::operator /=(s32 val) {X/=val;Y/=val;Z/=val; return *this;}
2651 SExposedVideoData() {OpenGLWin32.HDc=0; OpenGLWin32.HRc=0; OpenGLWin32.HWnd=0;}
2652 explicit SExposedVideoData(void* Window) {OpenGLWin32.HDc=0; OpenGLWin32.HRc=0; OpenGLWin32.HWnd=Window;}
2656 virtual IGUIFont* addFont(const io::path& name, IGUIFont* font) = 0;
2657 New parameter (image)
2658 virtual IGUIWindow* addMessageBox(const wchar_t* caption, const wchar_t* text=0,
2659 bool modal = true, s32 flags = EMBF_OK, IGUIElement* parent=0, s32 id=-1, video::ITexture* image=0) = 0;
2663 IMesh* createPlaneMesh(const core::dimension2d<f32>& tileSize,
2664 const core::dimension2d<u32>& tileCount,
2665 video::SMaterial* material,
2666 const core::dimension2d<f32>& textureRepeatCount) const
2670 EFAT_NPK = MAKE_IRR_ID('N','P','K', 0),
2671 New member for storing the password of AES-encrypted archives
2672 core::stringc Password;
2675 New parameter (password)
2676 virtual bool addFileArchive(const path& filename, bool ignoreCase=true,
2677 bool ignorePaths=true,
2678 E_FILE_ARCHIVE_TYPE archiveType=EFAT_UNKNOWN,
2679 const core::stringc& password="") =0;
2683 virtual void clearSystemMessages() = 0;
2686 Changed constant (from 1)
2687 const s32 ROUNDING_ERROR_S32 = 0;
2690 inline void swap(T& a, T& b)
2692 IGPUProgrammingServices.h
2693 New parameters (for geometry shaders)
2694 virtual s32 addHighLevelShaderMaterial
2695 virtual s32 addHighLevelShaderMaterialFromFiles
2696 virtual s32 addHighLevelShaderMaterialFromFiles
2697 New overload (for calling with geometry shaders)
2698 s32 addHighLevelShaderMaterial
2699 s32 addHighLevelShaderMaterialFromFiles
2700 s32 addHighLevelShaderMaterialFromFiles
2704 typedef core::list<ISceneNode*> ISceneNodeList;
2705 typedef core::list<ISceneNodeAnimator*> ISceneNodeAnimatorList;
2708 Renamed events (split from EMIE_MOUSE_*)
2709 EMIE_LMOUSE_DOUBLE_CLICK,
2710 EMIE_RMOUSE_DOUBLE_CLICK,
2711 EMIE_MMOUSE_DOUBLE_CLICK,
2712 EMIE_LMOUSE_TRIPLE_CLICK,
2713 EMIE_RMOUSE_TRIPLE_CLICK,
2714 EMIE_MMOUSE_TRIPLE_CLICK,
2718 virtual s32 addTextureAsSprite(video::ITexture* texture) = 0;
2719 virtual void clear() = 0;
2722 Changed binary packing (non-visible from user calls)
2723 inline f32 pack_texureBlendFunc ( const E_BLEND_FACTOR srcFact, const E_BLEND_FACTOR dstFact, const E_MODULATE_FUNC modulate=EMFN_MODULATE_1X, const u32 alphaSource=EAS_TEXTURE )
2727 EGDS_MESSAGE_BOX_GAP_SPACE,
2728 EGDS_MESSAGE_BOX_MIN_TEXT_WIDTH,
2729 EGDS_MESSAGE_BOX_MAX_TEST_WIDTH,
2730 EGDS_MESSAGE_BOX_MIN_TEXT_HEIGHT,
2731 EGDS_MESSAGE_BOX_MAX_TEXT_HEIGHT,
2732 New parameter (checkClientArea)
2733 virtual core::rect<s32> draw3DWindowBackground(IGUIElement* element,
2734 bool drawTitleBar, video::SColor titleBarColor,
2735 const core::rect<s32>& rect,
2736 const core::rect<s32>* clip=0,
2737 core::rect<s32>* checkClientArea=0) = 0;
2741 bool operator!=(const quaternion& other) const;
2743 inline quaternion& set(const core::quaternion& quat);
2744 inline bool equals(const quaternion& other,
2745 const f32 tolerance = ROUNDING_ERROR_f32 ) const;
2750 void swap(list<T>& other)
2754 ERT_MULTI_RENDER_TEXTURES
2756 struct IRenderTarget
2757 Changed parameter (from void*)
2758 virtual bool beginScene(bool backBuffer=true, bool zBuffer=true,
2759 SColor color=SColor(255,0,0,0),
2760 const SExposedVideoData& videoData=SExposedVideoData(),
2761 core::rect<s32>* sourceRect=0) =0;
2762 New parameter (mipmapData)
2763 virtual ITexture* addTexture(const io::path& name, IImage* image, void* mipmapData=0) = 0;
2765 virtual bool setRenderTarget(const core::array<video::IRenderTarget>& texture,
2766 bool clearBackBuffer=true, bool clearZBuffer=true,
2767 SColor color=video::SColor(0,0,0,0)) =0;
2768 void drawIndexedTriangleFan(const S3DVertexTangents* vertices,
2769 u32 vertexCount, const u16* indexList, u32 triangleCount)
2770 virtual void getFog(SColor& color, E_FOG_TYPE& fogType,
2771 f32& start, f32& end, f32& density,
2772 bool& pixelFog, bool& rangeFog) = 0;
2773 virtual SMaterial& getMaterial2D() =0;
2774 virtual void enableMaterial2D(bool enable=true) =0;
2775 virtual core::dimension2du getMaxTextureSize() const =0;
2777 void drawIndexedTriangleList(const S3DVertex* vertices,
2778 u32 vertexCount, const u16* indexList, u32 triangleCount)
2779 void drawIndexedTriangleList(const S3DVertex2TCoords* vertices,
2780 u32 vertexCount, const u16* indexList, u32 triangleCount)
2781 void drawIndexedTriangleList(const S3DVertexTangents* vertices,
2782 u32 vertexCount, const u16* indexList, u32 triangleCount)
2783 void drawIndexedTriangleFan(const S3DVertex* vertices,
2784 u32 vertexCount, const u16* indexList, u32 triangleCount)
2785 void drawIndexedTriangleFan(const S3DVertex2TCoords* vertices,
2786 u32 vertexCount, const u16* indexList, u32 triangleCount)
2789 New driver feature enums
2790 EVDF_MULTIPLE_RENDER_TARGETS,
2792 EVDF_MRT_COLOR_MASK,
2793 EVDF_MRT_BLEND_FUNC,
2794 EVDF_GEOMETRY_SHADER,
2798 virtual core::rect<s32> getClientRect() const = 0;
2802 enum ECONTEXT_MENU_CLOSE
2804 virtual void setCloseHandling(ECONTEXT_MENU_CLOSE onClose) = 0;
2805 virtual ECONTEXT_MENU_CLOSE getCloseHandling() const = 0;
2806 virtual u32 insertItem(u32 idx, const wchar_t* text, s32 commandId=-1, bool enabled=true,
2807 bool hasSubMenu=false, bool checked=false, bool autoChecking=false) = 0;
2808 virtual s32 findItemWithCommandId(s32 commandId, u32 idxStartSearch=0) const = 0;
2809 virtual void setItemAutoChecking(u32 idx, bool autoChecking) = 0;
2810 virtual bool getItemAutoChecking(u32 idx) const = 0;
2811 virtual void setEventParent(IGUIElement *parent) = 0;
2813 virtual u32 addItem(const wchar_t* text, s32 commandId=-1, bool enabled=true,
2814 bool hasSubMenu=false, bool checked=false, bool autoChecking=false) = 0;
2816 SIrrCreationParameters.h
2817 New parameter (LoggingLevel)
2822 bool equals(const core::CMatrix4<T>& other, const T tolerance=(T)ROUNDING_ERROR_f64) const;
2825 Renamed method (from MoveTo_2TCoords)
2826 virtual void convertTo2TCoords()
2827 Renamed method (from MoveTo_Tangents)
2828 virtual void convertToTangents()
2830 SVertexManipulator.h
2831 New classes (for vertex manipulation)
2832 class SVertexColorSetManipulator : public IVertexManipulator
2833 class SVertexColorSetAlphaManipulator : public IVertexManipulator
2834 class SVertexColorInvertManipulator : public IVertexManipulator
2835 class SVertexColorThresholdManipulator : public IVertexManipulator
2836 class SVertexColorBrightnessManipulator : public IVertexManipulator
2837 class SVertexColorContrastManipulator : public IVertexManipulator
2838 class SVertexColorContrastBrightnessManipulator : public IVertexManipulator
2839 class SVertexColorGammaManipulator : public IVertexManipulator
2841 class SVertexColorScaleManipulator : public IVertexManipulator
2842 class SVertexColorDesaturateToLightnessManipulator : public IVertexManipulator
2843 class SVertexColorDesaturateToAverageManipulator : public IVertexManipulator
2844 class SVertexColorDesaturateToLuminanceManipulator : public IVertexManipulator
2845 class SVertexColorInterpolateLinearManipulator : public IVertexManipulator
2846 class SVertexColorInterpolateQuadraticManipulator : public IVertexManipulator
2847 class SVertexPositionScaleManipulator : public IVertexManipulator
2849 class SVertexPositionScaleAlongNormalsManipulator : public IVertexManipulator
2850 class SVertexPositionTransformManipulator : public IVertexManipulator
2851 class SVertexTCoordsScaleManipulator : public IVertexManipulator
2854 Renamed method (from getMeshByFilename)
2855 virtual IAnimatedMesh* getMeshByName(const io::path& name) = 0;
2856 Renamed method and changed return type (from getMeshFilename/io::path)
2857 virtual const io::SNamedPath& getMeshName(u32 index) const = 0;
2858 virtual const io::SNamedPath& getMeshName(const IAnimatedMesh* const mesh) const = 0;
2859 virtual const io::SNamedPath& getMeshName(const IMesh* const mesh) const = 0;
2860 Renamed method (from setMeshFilename)
2861 virtual bool renameMesh(u32 index, const io::path& name) = 0;
2862 virtual bool renameMesh(const IAnimatedMesh* const mesh, const io::path& name) = 0;
2863 virtual bool renameMesh(const IMesh* const mesh, const io::path& name) = 0;
2866 Changed parameter (to const-ref)
2867 IGUIElement(EGUI_ELEMENT_TYPE type, IGUIEnvironment* environment, IGUIElement* parent,
2868 s32 id, const core::rect<s32>& rectangle)
2870 virtual bool hasType(EGUI_ELEMENT_TYPE type) const
2873 Changed parameter (to template with allocator) in all methods with templates
2874 Made destructor non-virtual
2877 s32 find(const B* const str, const u32 start = 0) const
2880 void remove(const string<T,TAlloc> toRemove)
2881 void removeChars(const string<T,TAlloc> & characters)
2882 template<class container>
2883 u32 split(container& ret, const T* const c, u32 count=1, bool ignoreEmptyTokens=true, bool keepSeparators=false) const
2886 Use tolerance to compare, changed order function to total order
2887 bool operator<=(const vector2d<T>&other) const
2888 bool operator>=(const vector2d<T>&other) const
2889 bool operator<(const vector2d<T>&other) const
2890 bool operator>(const vector2d<T>&other) const