aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/irrlicht-1.8/changes.txt
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/irrlicht-1.8/changes.txt')
-rw-r--r--libraries/irrlicht-1.8/changes.txt5065
1 files changed, 5065 insertions, 0 deletions
diff --git a/libraries/irrlicht-1.8/changes.txt b/libraries/irrlicht-1.8/changes.txt
new file mode 100644
index 0000000..14d0548
--- /dev/null
+++ b/libraries/irrlicht-1.8/changes.txt
@@ -0,0 +1,5065 @@
1Changes in 1.8 (7.11.2012)
2
3 - Let sphere mesh use full opaque color, just as all the other ones do
4
5 - Gcc on Win32 (MinGW) now also works with the _w file access functions when compiled with _IRR_WCHAR_FILESYSTEM. (thx @ alexzk for reporting compile troubles)
6
7 - Fix a bunch of off-by one errors in irr::core::string in functions equals_substring_ignore_case, findFirst, findFirstChar, findNext, findLast, findLastChar, replace, remove and removeChars.
8 This prevents some potential memory access errors, find functions no longer try to find the \0, replace no longer replaces the \0 and remove no longer tries to remove it (which did remove the last character instead).
9
10 - matrix4::setRotationAxisRadians added
11
12 - user clipplanes fixed
13
14 - Skip rendering of lines, points, and polygons, as these lead to crahses due to wrong access to the vertex lists. A fix would need major rewrite of the vertex cache, or at least some other render methods.
15
16 - Add mipmap generation for makeColorKeyTexture
17
18 - Add another saveScene overload which allows to pass in a user-created XMLWriter. Patch suggested by eversilver.
19
20 - quaternion conversions to and from matrix4 no longer invert rotations.
21 To test if your code was affected by this you can set IRR_TEST_BROKEN_QUATERNION_USE in quaternion.h and try to compile your application.
22 Then on all compile-errors when you pass the matrix to the quaternion you can replace the matrix transposed matrix.
23 For all errors you get on getMatrix() you can use quaternion::getMatrix_transposed instead.
24
25 - CGUIEnvironment::loadGui - loading a gui into a target-element no longer messes up when the gui-file contained guienvironment serialization.
26
27 - Colladawriter now exports materials per node when those are used in Irrlicht
28
29 - Colladawriter now writing matrices for node transformations as old solution did not work with CDummyTransformationSceneNode's.
30
31 - Colladawriter no longer create an extra node for the scenemanger as <visual_scene> has that job in Collada.
32
33 - Colladwriter no longer makes all Scenenodes children of ambient-light as that can be parallel on the same layer instead.
34
35 - Colladareader now creates the ambient-light correct instead of creating a point-light for it.
36
37 - Add new parameter to array reallocate function. This prevents a reallocation in case the array would become smaller. As the reallocation operation is quite time consuming, this can be avoided on request now, on the expense of more memory consumption.
38
39 - Add IAnimatedMeshSceneNode::getLoopMode (asked for by JLouisB)
40
41 - CSceneNodeAnimatorCameraFPS now resets the key-input when it was disabled (thx @ gerdb for reporting and patch-proposal)
42
43 - Properly destroy OpenGL resources on linux (thx @curaga for the patch)
44
45 - Fix diplay bux in the attribute-panel of the GUIEditor. Fixes bug 3517314 (thx @Darkcoder for reporting).
46
47 - Allow caching cursor position on X11 to work around slow XQueryPointer calls (thx @Hendu for reporting+patch proposal)
48
49 - Make sure after EGET_EDITBOX_ENTER and EGET_COMBO_BOX_CHANGED event processing no more code is executed for the corresponding editbox or combobox objects to allow clearing the environment on those actions (see comments on bug-id 2995838).
50
51 - Fix string::replace which failed replacing substrings at the end when the replacement was longer
52
53 - Struct packing works now with gcc 4.7 changes on MinGW (thx @Sudi for reporting).
54
55 - Struct packing uses now same solution throughout (by including headers in corresponding places)
56
57 - User can now set characters used for decimal point in fast_atof for localisation.
58
59 - Add parameter useAlphaChannel to second IGUIEnvironment::addImage function.
60
61 - Get rid of unnecessary warning "Could not load sprite bank because the file does not exist" for "#defaultfont".
62
63 - Fix MRT disabling. Bug found and fixed by hendu.
64
65 - core:::array::reallocate returning now immediately when it has nothing to do. Should reduce a lot of memory thrashing on irrArrays.
66
67 - Start mesh animations at first OnAnimate , before start-frame was rather random. Thx @Auria for reporting and patch proposal.
68
69 - renderTargetTexture now working with ECF_R5G6B5
70
71 - add -fPic in c::b linux fast math shared build.
72
73 - Fix by Auria for starting the animated meshes only at first OnAnimate instead of at random times and animation frames.
74
75 - Add support for MAX_COMBINED_TEXTURES, which allows more texture support than with the original fixed pipeline texture check under OpenGL. Now, more than 4 textures should also work with newer gfx cards and drivers, which often only support 4 fixed pipeline textures.
76
77 - triangle3d::isPointInsideFast now using some epsilon to catch all points on the borders.
78
79 - triangle3d::getIntersectionOfPlaneWithLine calculates now with higher precision for more exact results.
80
81 - triangle3d::isOnSameSide (used by isPointInside) calculates now with higher precision and uses some epsilon to make it work with larger integers and less floating point troubles. Slightly slower now.
82
83 - new function equalsByUlp to test for spacing between floating point numbers.
84
85 - speedup for collada writing.
86
87 - speedup for xml-writing.
88
89 - Fix 8bit grey image TGAs, which were not working due to missing palette. Also switched to RGB8 format, as otherwise a loss in precision would occur. Thanks to Klunk for the error report and a test image.
90
91 - fixed issues with a D3D driver and Aero effects.
92
93 - Fix font-drawing in CGUIButton to use EGDF_BUTTON again (thx @DJLinux for reporting).
94
95 - Add texture cache with proper reference handling. This avoids deletion of textures while still being active on the GPU. Test case and fix by m(att)giuca
96
97 - CFileSystem::removeFileArchive now checking for normalized path
98
99 - Fix zip's with passwords on 64-bit systems (thx @ Dr. Gladman for writing the bugfix)
100
101 - replace asserts in tests with macro assert_log to allow running all tests through on problems.
102
103 - added IGUIElement::setName and IGUIElement::getName (similar to ISceneNode)
104
105 - irr::s64 support
106
107 - line2d::getClosestPoint can now also get the closest point on the line additional to only checking for closest point on the line-segment.
108
109 - avoid division by zero in line2d::getClosestPoint when start- and endpoint are identical
110
111 - Support for sw drivers under OSX
112
113 - Fix font-loading which got broken by fixed xml-loading. Thanks @ pc0de for finding and providing a test and patch.
114
115 - Don't crash draw2DSpriteBatch when it get's no textures.
116
117 - Add support for int passing in setShaderConstant
118
119 - Support for better collada texture wrapping support on loading.
120
121 - Fix for render context change where only the window id is given. We now try to change only the window ID, keeping context and display unchanged. Suggestion by vovo4ka from the forum.
122
123 - XML-reader now ignores all whitespace-only EXN_TEXT elements as old way didn't work in cross-platform way (and arguably also not well on Windows).
124
125 - CXMLReader initializes IsEmptyElement now.
126
127 - line2d::intersectWith and and line2d::getClosestPoint work now also with integers.
128
129 - line2d::getMiddle and line3d::getMiddle work now also with integers. But can be slower for compilers which are not optimizing division by 2 to multiplication by 0.5 for floats.
130
131 - Add Nadro's initial Cg support. Example 10 is enhanced to allow also Cg shaders.
132
133 - Add mipmap support from FBO extension, patch by Nadro.
134
135 - Add vertex optimization algorithm submitted by curaga
136
137 - rename texureBlend functions to textureBlend
138
139 - Add threshold for slerp calculation, switching between linear and slerp at this point.
140
141 - Fix for bug 3401933 - vertex color interpolation with shadow volumes in the scene
142
143 - Fixed bug in button sprites reported by RdR
144
145 - Fixed button state sprite animations for pressed, focused and hovered.
146
147 - Added serialization for terrain smooth factor, patch by RdR
148
149 - Implemented more button states for sprite banks, patch submitted by RdR
150
151 - Add IGUIEnvironment::getHovered to get the element most recently known to be under the mouse cursor
152
153 - Add FPS settings for animated meshes, which allows to push animation speed from files to Irrlicht animation system
154
155 - Maya camera updates
156
157 - Add support for bsp brush entities. Written by Hendu.
158
159 - weighted normals recalculation fixed
160
161 - Billboard improvements
162
163 - API docs updates
164
165 - triangle selector improvements
166
167 - OSX improvements by Auria
168
169 - Add new methods for adding and removing file archives based on ifilearchive pointers.
170
171 - Add getBackgroundColor, isDrawBackgroundEnabled and isDrawBorderEnabled to IGUIStaticText (thx 4 patch from Nalin).
172
173 - Reduction of multiple skinning the same mesh and frame in one render cycle
174
175 - Added ISceneNodeAnimatorCameraFPS::getKeyMap and a new ISceneNodeAnimatorCameraFPS::setKeyMap.
176
177 - CSceneNodeAnimatorCameraFPS uses now SKeyMap instead of SCamKeyMap (structs were identical which was confusing and there wasn't any explanation in comments, so I decided to simplify it).
178
179 - Add some workaround to MeshViewer to show how we can currently fix the FPS-cam when users to alt-tab while moving. We can improve that some day when we have focus-events, but this works for now.
180
181 - Fix LZMA decompression
182
183 - Ply normal fixes
184
185 - HW buffers only support rendering with both vertex and index buffers
186
187 - Enables VBOs for water node
188
189 - Octree support for non-standard vertex meshes
190
191 - Fix rotationFromTo
192
193 - Added ConstIterator
194
195 - Fix for getScreenCoordinatesFrom3DPosition to use proper RTT sizes
196
197 - Add IGUIComboBox::setMaxSelectionRows and IGUIComboBox::getMaxSelectionRows
198
199 - Scenemanager switches from type ESNT_UNKNOWN to type ESNT_SCENE_MANAGER.
200
201 - Add getActiveFont to all elements which have setOverrideFont for cleaner code
202
203 - Add getOverrideFont to all elements which have setOverrideFont to have a consistent interface
204
205 - IGUIEditBox: added missing serialization for Border
206
207 - IGUIEditBox: remove bug that added spaces to the end of each line
208
209 - IGUIEditBox: fix crash that happened when wordwrapping was enabled, spaces were entered beyond the border and then cursor-key was pressed.
210
211 - IGUIEditBox::setDrawBackground added.
212
213 - CGUISkin::draw3DSunkenPane no longer ignores fillBackGround in non-flat mode. Also borderlines are no longer drawn overlapping to avoid ugly corners.
214
215 - CDummyTransformationSceneNode::clone() added.
216
217 - IParticleSystemSceneNode::doParticleSystem now public to allow rendering outside scenegraph.
218
219 - getRelativeFilenames updates and fixes
220
221 - Renamed IOSOperator::getOperationSystemVersion to getOperatingSystemVersion. Changed return type from wchar_t to core::stringc, as that's the internal representation the name is built on.
222
223 - Added IGUITabControl::insertTab, IGUITabControl::removeTab, IGUITabControl::clear and IGUITabControl::getTabAt
224
225 - Add 32bit support to some mesh manipulator methods
226
227 - Fix mipmap locking under OpenGL
228
229 - Improvement of screenshot function to support more color formats and targets
230
231 - getAngle fix to avoid NaNs
232
233 - Available gfx memory output in log messages
234
235 - Improved 2d render settings and caching
236
237 - Initial suppport for sRGB render functions
238
239 - Improved terrain scene node rendering
240
241 - Paletted png image support fixed
242
243 - Gamma settings in image loaders improved
244
245 - Support for relative filenames in serialization
246
247 - Access to selectors inside meta selectors implemented
248
249 - DirectInput joystick support
250
251 - Support for scaling with draw2dimage with burnings video
252
253 - More gl extensions have correctly initialised return values
254
255 - Some fixes for quaternion to euler function
256
257 - Properly return nullptr if RTT creation fails on low levels
258
259 - Added IGUIListBox::getItemAt
260
261 - Add more image formats tried to load by q3 level loader
262
263 - Add fast_atof improvements from assimp, also strtoul10 method
264
265 - Add blend equation function for MRTs
266
267 - Add new material fields for blend operation and polygon offset (depth bias).
268
269 - Reorder texture stage assignments
270
271 - Improved VSync handling
272
273 - Fix Ogre loader for materials with more than one texture
274
275 - Fix createMeshCopy material handling
276
277 - Framework target for OSX project added
278
279 - Terrain scene node fixes
280
281 - Fix HSL color class
282
283 - Fix color selection GUI element
284
285 - Transparency issues in particle system fixed
286
287 - Particle sphere emitter rand values fixed
288
289 - Support Unicode SHY dynamic hypen in word wrap
290
291 - Fix OBJ reader sometimes running over EOF
292
293 - Added IGUITable::getColumnWidth
294
295 - Billboard text animates in OnAnimate now
296
297 - Fix mountpoint reader to properly sync file names and firectories
298
299 - Added the ability to open an archive from an IReadFile*, added a FileToHeader tool with instructions of how to make a portable app that consists of a single executable file.
300
301 - Added suppport for right-to-left (RTL) text, supplied by Auria from STK
302
303 - Added ISceneManager::createSceneNodeAnimator to create animators by name
304
305 - The Makefile now creates a symlink from the soname to the binary name during install. Binary compatibility is only confirmed between same minor releases.
306
307 - Added SMF mesh loader, loads meshes from 3D World Studio. Originally written by Joseph Ellis
308
309 - The loader selection process now consistently checks loader lists in reverse order, so new loaders added to Irrlicht override the internal ones. This applies when adding external mesh, image, scene and archive loaders, image writers, plus node, animator and GUI element factories.
310
311 - Added getters to retrieve mesh, scene and archive loaders.
312
313 - Added ISceneLoader interface and .irr loader. Users can now add their own scene loaders to the scene manager and use them by calling loadScene.
314
315 - Renamed IGUIElement::bringToBack to sendToBack, like in Windows
316
317 - Send EGET_ELEMENT_CLOSED event when context menus should be closed (thx @ Mloren for reporting).
318
319 - Added treeview to GUI editor, provided by Armen
320
321 - Added root type for GUI environment
322
323 - zip archive fixes: Fix directory tags in file list. Fix loading of stream zip files which have file sizes only in the central directory.
324
325 - Fixed panel scrollbars in GUI editor, reported by Armen
326
327 - Fix b3d loading of files with mixed mesh/bone sections.
328
329 - Fix particle emitters which used integer random numbers so far. The distributions of the particles should be much better (and the code also somewhat faster) now.
330
331 - Add new random method frand: Returns a random number in the interval [0..1] and gives better distributions than using fmodf on the integer number.
332
333 - Add node parameter to saveScene and loadScene. saveScene saves the given node and all descendants to the file (if 0, the full scene is saved as before). loadScene loads all elements of the scene as childs of the given node. As before, 0 would load the file on the top level (scenemanager).
334
335 - Add method to make a filename relative to a given directory.
336
337 - Fix setMesh to correctly update the joints cache.
338
339 - Fix setting transition time of skinned meshes back to 0.
340
341 - Add some getters to IGUIImage: getImage, getColor
342
343 - Fix OpenGL FBODepthTexture to create less overhead
344
345 - Fix MRT disabling under OpenGL
346
347 - API change: Added write only lock mode for textures. The lock method has changed the signature and uses an enum parameter now instead of a bool. The default is still to lock for read/write (previously 'false'). The old 'true' value should be replaced by ETLM_READ_ONLY.
348
349 - Speedup deleting of particles
350
351 - Add function IParticleSystemSceneNode::clearParticles
352
353 - Fix RTT render states under OpenGL
354
355 - Fix AntiAliasing setup under Windows/OpenGL in case no AA is available
356
357 - Fix transformation matrices when RTT used
358
359 - API change: getScreenCoordinatesFrom3DPosition has a new parameter, which needs to be set to true to get the original behavior. Now, the method returns coordinates which would fit as render coordinates of a currently enabled viewport. With the parameter set to true the result would fit only after the viewport is reset to full window rendering.
360
361 - More checks for Stencilbuffer
362
363 - Improve render state resets
364
365 - Fix MRT handling
366
367 - Fix file search
368
369 - Add flag and method to disable clipping of the text to the gui element rectangle in GUI static text.
370
371 - addShadowVolumeSceneNode now replaces an existing shadow. One should avoid to call this method multiple times without changing any parameter, as it is quite time consuming and cannot recognize the duplicate calls.
372
373 - Add function IGUIEnvironment::removeFont (TODO: Does not remove the texture from cache so far)
374
375 - Fixed mem leak in mountfilesystem
376
377 - Update to libjpeg 8b, zlib 1.2.5, bzip2 1.0.6, libpng 1.4.4 and lzma from 9.20 SDK
378
379 - Functions in IMeshCache expecting IAnimatedMesh* parameters removed as similar functions with IMesh* can be used since a while. Fixes also problems when IAnimatedMesh* got upcasted to IMesh*. (thx @ Greenya for reporting)
380
381 - Fix blend states for MRTs
382
383 - 64bit targets for MSVC added
384
385 - The following functions will now use a "ISceneNode *" instead of a "const ISceneNode *":
386 ITriangleSelector::getSceneNodeForTriangle, ISceneNodeAnimatorCollisionResponse::getCollisionNode, ISceneCollisionManager::getCollisionPoint and ISceneCollisionManager::getCollisionResultPosition.
387 As collision functions often are followed by changing node positions users where so far forced to using const_casts (found by Greenya).
388
389 - Add vector3d::getAs3Values (patch provided by slavik262)
390
391 - Add function to SViewFrustum to get corners of the near plane (patch provided by Matt Kline, aka slavik262)
392
393 - ParticleFadeOutAffector::setFadeOutTime can no longer be set to invalid values
394
395 - ParticleFadeOutAffector uses now throughout u32 for fadeOutTime (found by greenya)
396
397 - Add missing access function CParticleSystemSceneNode::getAffectors() (seen by B@z)
398
399 - Add missing setters/getters for particle emitters (seen by B@z)
400
401 - Compile-defines can now be disabled from Makefiles/Projectfiles instead of having to change IrrCompileConfig.h each time.
402
403 - IGUITabControl::setActiveTab should only take IGUITab* and not IGUIElement* (thx to greenya for finding)
404
405 - Add new skin-colors: EGDC_GRAY_WINDOW_SYMBOL, EGDC_EDITABLE, EGDC_GRAY_EDITABLE, EGDC_FOCUSED_EDITABLE
406
407 - Disabled state is now extended to sub-elements
408
409 - Make disabled state for several elements more visible
410
411 - Bugfix: Icons in tabcontrol get now affected immediately by skin-changes
412
413 - Proper cleanup if visual not created
414
415 - XML reader bugfix
416
417 - Disable mipmaps in 2d mode everywhere
418
419 - Add xml example written by Yoran Bosman.
420
421 - Fix cursor cleanup under Linux when using multiple devices
422
423 - Fix collada parser
424
425 - Fix MRT reset under D3D
426
427 - Add a generic attribute interface for querying video driver attributes which are not necessarily of type bool. This interface allows to check certain supported features, such as the number of user clip planes, supported lights and textures, MRTs, and other things. The interface might change in the future, but it's fully functional already. The supported attributes are listed in the API docs of the function:
428The following names can be queried for the given types:
429 * MaxTextures (int) The maximum number of simultaneous textures supported by the driver. This can be less than the supported number of textures of the driver. Use _IRR_MATERIAL_MAX_TEXTURES_ to adapt the number.
430 * MaxSupportedTextures (int) The maximum number of simultaneous textures supported by the fixed function pipeline of the (hw) driver. The actual supported number of textures supported by the engine can be lower.
431 * MaxLights (int) Number of hardware lights supported in the fixed function pipieline of the driver, typically 6-8. Use light manager or deferred shading for more.
432 * MaxAnisotropy (int) Number of anisotropy levels supported for filtering. At least 1, max is typically at 16 or 32.
433 * MaxUserClipPlanes (int) Number of additional clip planes, which can be set by the user via dedicated driver methods.
434 * MaxAuxBuffers (int) Special render buffers, which are currently not really usable inside Irrlicht. Only supported by OpenGL
435 * MaxMultipleRenderTargets (int) Number of render targets which can be bound simultaneously. Rendering to MRTs is done via shaders.
436 * MaxIndices (int) Number of indices which can be used in one render call (i.e. one mesh buffer).
437 * MaxTextureSize (int) Dimension that a texture may have, both in width and height.
438 * MaxGeometryVerticesOut (int) Number of vertices the geometry shader can output in one pass. Only OpenGL so far.
439 * MaxTextureLODBias (float) Maximum value for LOD bias. Is usually at around 16, but can be lower on some systems.
440 * Version (int) Version of the driver. Should be Major*100+Minor
441 * ShaderLanguageVersion (int) Version of the high level shader language. Should be Major*100+Minor.
442
443 - Fix getRotationDegrees
444
445 - Add creation parameter which allows to disable highres timers on Windows upon device creation.
446
447 - Several transparency setup bugs fixed. Now, alpha_vertex_blend uses proper alpha blending instead of a mixed add/alpha blending.
448
449 - Added a method to get real time and date in a human readable struct
450
451 - Fix add folder archives method to support files without trailing slashes.
452
453 - fix transparent_reflection_2_layers
454
455 - Add support for MSVC 2010
456
457 - Fix "unsupported format" warning on RTT usage
458
459 - Add IGUIElement::bringToBack (patch written by DtD, although I'm to blame for the function-name)
460
461 - BurningVideo
462 - add Normalmap Rendering (one light only), pushed Burningvideo to 0.46
463 - add Stencil Shadow Rendering (one color only and 32 bit only),
464 pushed Burningvideo to 0.47
465 - internal vertexformat changed
466 - changed fixpoint from 9 to 10 bit fract resolution
467 - renamed createBurningVideoDriver to createBurningVideoDriver and uses SIrrlichtCreationParameters like opengl
468 - internal interfaces for the trianglerenders unified.
469
470 - Example 11, changed the light billboards to use the light color.
471 allow to disable the bump/parallax on the earth like in the room ( with transparency )
472
473 - added DDS Image files, DXT2, DXT3, DXT4, DXT5, based on code from nvidia and Randy Reddig
474
475 - added Halflife 1 Model Loader (based on code by Fabio Concas)
476 Halflife 1.1.0.8, Counter-Strike 1.6 working
477 -> Load all Textures ( can even optimize it to texture atlas ), all bone animation, all submodels.
478 -> But to make use of the values (named animation, mouth animation)
479 the Interface for IAnimatedMeshSceneNode has to be redone.
480
481 TODO:
482 ->can handle float frames numbers, the interface for getMesh should be reworked
483 This is my idea of a new getMesh interface for IAnimatedMesh
484
485 //! Returns the IMesh interface for a frame.
486 /** \param frameA: Frame number as zero based index.
487 The Blend Factor is in the fractional part of frameA
488 The Mesh will be calculated as
489 frame = integer(frameA) * (1-fractional(frameA )) + frameB * fractional(frameA)
490 FrameNr KeyFrameA KeyFrameB
491 40.0 1 0
492 40.1 0.9 0.1
493 40.5 0.5 0.5
494 40.9 0.1 0.9
495 41.0 0 1
496 \param frameB: Frame number as zero based index. The other KeyFrame which is blended with FrameA.
497 \param userParam: for Example Level of detail, or something else
498 */
499 virtual IMesh* getMesh(f32 frameA, s32 frameB = 0,s32 param = 0) = 0;
500
501 For now i used the (unused, always 255) detail level parameter and set a blend percentage as
502 s32 frameNr = (s32) getFrameNr();
503 s32 frameBlend = (s32) (core::fract ( getFrameNr() ) * 1000.f);
504 return Mesh->getMesh(frameNr, frameBlend, StartFrame, EndFrame);
505
506 So no interface is affected.
507
508 -> TODO: Quaternion Rotation is done private hand made and should be done with irrlicht quaternions
509
510 - Included 357kb Yodan.mdl mesh and copyright info file from Doug Hillyer
511 to the media directory, used in example 7. collision as 4th model.
512
513 - added Halflife 1 Texture Loader
514 Valve uses WAL archive types like quake2. textures are inside model files
515 I reworked the existing ImageloaderWAL and added named Halflife textures to wal2 ( they have no extension )
516 and an LMP (palette/texture) loader into the same file (all using 32bit now)
517
518 - added WAD Archive Loader (Quake2 (WAL2) and Halflife (WAL3) are supported)
519
520 - CFileList
521 added Offset Parameter to SFileListEntry and removed the private array from the archive loaders.
522 CFileList::addItem now uses automatic incremental id if id = 0
523
524 - added void splitFilename, splits a path into components
525
526 - added parameter make_lower to substring ( copy just lower case )
527 string<T> subString(u32 begin, s32 length, bool make_lower = false ) const
528
529 - ColorConverter added
530 //! converts a 8 bit palettized or non palettized image (A8) into R8G8B8
531 static void convert8BitTo24Bit(const u8* in, s16* out, s32 width, s32 height, const s32* palette, s32 linepad = 0, bool flip=false);
532 //! converts a 8 bit palettized or non palettized image (A8) into A8R8G8B8
533 static void convert8BitTo32Bit(const u8* in, u8* out, s32 width, s32 height, const u8* palette, s32 linepad = 0, bool flip=false);
534
535 - In IGUITreeView "clearChilds" and "hasChilds" deprecated for "clearChildren" and "hasChildren" (thx @Greenya for noticing)
536
537 - add CGUIEditBox::getOverrideColor and CGUIEditBox::isOverrideColorEnabled
538
539 - add dimension2d::operator-
540
541 - Add logging level ELL_DEBUG
542
543 - Add parameter DisplayAdapter to creation params to allow selecting the card when more than one card is in the system.
544
545 - Added support for custom cursors
546
547 - WM_SYSCOMMAND - SC_KEYMENU message is now ignored (F10 and ALT in Win32 windowed mode)
548
549 - Avoid argument lookup ambiguity in swap when used in combination with stl. Using same trick as boost now and use 2 different template parameters in it.
550
551 - Add UseMipMap flag in material
552
553 - Add occlusion query support. Based on code by Nadro
554
555 - Add support for vertex_array_bgra extension in OpenGL driver. This will speed up OpenGL rendering quite a lot as it skips the silly color conversion thing we have to do otherwise.
556
557 - Replace raw xml char implementation with template struct in order to decouple the type from POD types. May also help for 64bit problems or changes needed there.
558
559 - Fixed bug causing memory access violation in string::replace found and patched by Nalin.
560
561 - Fix windows32 class unregister
562
563 - Add parameter to line2d::intersectWith to allow getting intersections outside the segments (thx Yoran).
564
565 - External windows are not destroyed anymore
566
567 - clamp values in getRotationDegrees to avoid nan values
568
569 - texture size in terrain mesh fixed
570
571 - ms3d fixes
572
573 - Add new matrix methods for infinite projection matrix
574
575 - Support new OpenGL 2.x shader creation
576
577-----------------------------
578Changes in 1.7.4
579
580 - Change include order to get example 21 compiling on MinGW.
581
582 - Irrlicht.dll has correct name now again (was named libIrrlicht.dll in c::b). This fixes bugreport 3518765 reported by tetho.
583
584 - Fix linker path in example 16 for C::B project file (linker path was in include path section).
585
586 - Link with opengl32 and gdi32 in Example 14 in C::B.
587
588 - Remove --no-export-all-symbols which got recently added to the windows build as that flag is not known by gcc on Windows.
589
590 - Fix bug in example 23 where Width and Height got mixed up. Thanks @Lazier for reporting.
591
592 - Fix for R5G6B5 converter submitted by XMight
593
594 - Fix conversion warning under mingw, found by Randajad
595
596 - Set EMF_NORMALIZE_NORMALS correct for syndey model in Demo (thanks @ Midnight for reporting).
597
598 - SceneNodeAnimatorFlyCircle fixes serialization of RadiusEllipsoid (was writing Radius). Thx @ wing64 for reporting.
599
600 - Yield on Linux now uses nanosleep with 1ns as 0 isn't guaranteed to yield (thx @ hendu for finding + fix)
601
602-----------------------------
603Changes in 1.7.3 (20.02.2012)
604
605 - SceneNodeAnimatorFlyCircle fixes serialization of RadiusEllipsoid (was writing Radius). Thx @ wing64 for reporting.
606
607 - Yield on Linux now uses nanosleep with 1ns as 0 isn't guaranteed to yield (thx @ hendu for finding + fix)
608
609 - GUIEditor attributes have now scrollbar to be editable
610
611 - Remove warning when compiling line2d::intersectWith with other types than f32.
612
613 - Document that triangle3d::isPointInside should not be used with int's.
614
615 - triangle3d::isPointInsideFast handles 'on-border' cases now consistently.
616
617 - Some more editbox fixes
618
619 - Harden Linux joystick usage, in case the driver returns illegal values
620
621 - Bugfix: vector2d.normalize() and vector3d.normalize() had returned wrong results with very short vectors since Irrlicht 1.5. Thanks to Willem Swart for Bugreport + testcase.
622
623 - Unknown keymappings now use the X11 keycode instead of 0 to make such keys at least usable in games.
624
625 - KeyMapping for KeyInput.Key on X11 ignores states like shift&ctrl now like on Windows.
626
627 - Additional keymappings for X11 (tested with german and us keyboards which seem to work now in all cases).
628
629 - Fix crash in multiline editbox when pasting several lines into it on Windows (found by Reiko)
630
631 - example 09.Meshviewer no longer catches keys while a modal dialog is open
632
633 - Fix SSharedMeshBuffer
634
635 - Fix right handed ortho matrix
636
637 - editbox no longer displays cursor when disabled
638
639 - editbox autoscrolling now at least works good enough to actually show the text which the user is typing in.
640
641 - editbox no longer moves text into next line when it fails wrapping creating senseless empty lines which mess up scrolling.
642
643 - Fix crash in editbox when scrolling up with empty first lines caused by textwrapping.
644
645 - Fix endianess conversions
646
647 - Changes to isPointInside
648
649 - Fix focus problem when removing an unfocused modal dialog reported by Reiko here: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=44358
650
651 - Fix md2 normals problem again
652
653 - Add integer template specialization for vector3d::getSphericalCoordinateAngles which rounds angles to nearest integer now.
654
655 - Recalculate FrameRect and ScrollPos in CGUIEditBox when AbsoluteRect gets changed (thx @ serengeor for report + testcase)
656
657 - Fix crash in editbox
658
659 - Fix 'k' in bigfont.png (thx @ Scrappi for reporting)
660
661 - fix serialization for CBillboardSceneNode, it had missed 2 color (thx for finding + patch from pc0de)
662
663 - EMIE_MOUSE_WHEEL messages now handled correctly in several gui-element when wheel isn't just 1.0 or -1.0 (thx @ Reiko for reporting)
664
665 - Fix problems in Textwrapping in CGUIStaticText. Did use wrong size and did ignore last word of the text (thx @ Reiko for bugreport)
666
667 - Fix crash in collada (.dae) loading
668
669 - Fix bug handling in case RTT is not properly created
670
671 - Fix SColorf interpolation
672
673 - Fix memory-leaks in example 22 MaterialViewer
674
675 - Fix array::erase which did destroy objects more than once when used with a range (thx @ RedDragCZ for reporting + testcase).
676
677 - Copy now all membervariables for CCameraSceneNode when cloning.
678
679 - ICameraSceneNode::IsOrthogonal is correctly serialized and cloned now.
680
681 - CGUIScrollBar passes unused mousemove-events now to parent element. Fixes focus-bug in ComboBox reported by REDDemon here: http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=43474&highlight=
682
683 - Fix getAngle and getAngleWith
684
685 - Fix clipping in CGUITabControl
686
687 - Fix clipping in CGUITable, reported by ceyron
688
689 - Skip bone weights and additional information in ms3d file if no joint was defined before.
690
691 - Fix mem leak in CImage, found by mloren.
692
693 - Fix tga writing, reported by xirtamatrix
694
695 - Tab-positions care now about the borders correctly
696
697 - TabControl now respositions it's tabs when setTabVerticalAlignment is changed (thx @ ceyron for reporting+testcase)
698
699 - CGUIModalScreen now no longer takes focus itself, but tries to give it first child when possible to fix modal windows losing focus all the time
700
701 - Modal screens no longer blinks when gui-elements call removeFocus on themself (thx @ yaten for reporting+testcase)
702
703 - Fix crash in multiline-editbox when selecting with mouse (thx @ ceyron for reporting and testcase)
704
705 - Fix render context creation for OpenGL under Windows.
706
707 - Fix the reset problem of d3d9 driver in combination with hardware buffers.
708
709 - Fix .x loader in case of unused vertices.
710
711 - Avoid empty line in texts with very large words. Text wrapping would introduce an empty line in earlier versions.
712
713 - Add a new attribute which assigns hw mapping hint to the whole Mesh.
714
715 - Allow creation of water scene node without mesh.
716
717 - Fix regeneration of skydome.
718
719 - Fix scene node type and factory support for volume light
720
721 - Q3 maps no longer crash when faces try accessing lightmaps which are not mentioned to be loaded in the file.
722
723 - Fix crash on null-readfile in texture loading
724
725 - Get particles saved before 1.7.2 (for example in irrEdit) working again (thx to smashly for problem reporting)
726
727 - Fix IGUIScrollBar setMax and setMin which had been restricted wrongly (reported by REDDemon)
728
729 - Fix CNullDriver::createImage - Creating the image from a texture-rectangle which doesn't start at 0,0 works now again (thx @ ceyron for bugreport+testcase)
730
731 - Menu no longer sets highlight state when clicking disabled menu-item (reported by Mloren)
732
733 - Treeview can now be disabled
734
735-----------------------------
736Changes in 1.7.2 (15.11.2010)
737
738 - Fix in d3d9 driver, which caused a crash when device creation failed. Bug found and fixed by Kostya
739
740 - Fix a wrong access to Value instead of ValueW. Found and fixed by vroad.
741
742 - Fix line loop rendering in d3d drivers. Fix submitted by tonic.
743
744 - Fix tar recognition in tar reader.
745
746 - Fix blend mode setup in OpenGL driver, when using the material2d override, as pointed out by Auria
747
748 - Avoid crash due to tcoords2 handling. Might need some more fixing to work correctly.
749
750 - Fix 2d line intersections. Has had problems with consecutive, but non-overlapping line segments and with overlapping line segments.
751
752 - Fix image creation from texture, found by dataslayer
753
754 - Fix crashes when taking Screenhots for DirectX in Windowed mode (thx to agamemnus for reporting)
755
756 - StaticText does now serialize the background color
757
758 - Fix gui-elements which didn't care when skin-colors changed. That made it impossible to make the gui slowly transparent (thx to PI for reporting).
759 Note that it couldn't be completely fixed for the SpinBox without breaking the interface, so for that element you have to enforce this by calling for example element->setValue(element->getValue()) once.
760
761 - Fix CXMLReaderImpl::getAttributeValueAsInt which returned wrong values with large integers (thx to squisher for finding)
762
763 - Fix compile problem in swap when using irrlicht in combination with stl (backport from trunk r3281)
764
765 - Add EGET_TREEVIEW_NODE_COLLAPSE and deprecate EGET_TREEVIEW_NODE_COLLAPS (found by greenya)
766
767 - Fix serialization in CParticleSystemSceneNode (found by B@z)
768
769 - Prevent crash in BillboardTextSceneNode when a custom font is used. Found and fixed by Nalin (bugtracker id: 3020487)
770
771 - Fix problem in animation system that currentFrame got messed up after long pauses (especially when not starting at frame 0).
772 See forum thread (http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?p=210537#210537) and bug id 2898876.
773 Also remove BeginFrameTime in CAnimatedMeshSceneNode as it hasn't been used anymore since some time.
774
775 - Add framerate and current frame information for animations in example 09 and do some minor cleanup.
776
777 - Added another test for xml-reader.
778
779 - Fix serialization in several particle emitters and affectors (thx to Ion Dune for reporting).
780
781 - Fix compile-error on VS for vector2d::getAngleTrig when used with integers. (thx to greenya for reporting)
782
783 - Fix bug in dimension2d::getInterpolated that caused wrong results when used with integers as template parameter. (thx to Greenya for noticing a warning which made me look over this code).
784
785 - Remove 2 minor memory leaks in meshloaders (found by tool cppcheck-1.43)
786
787 - reduce file dependencies for IGUIEventReceiver.h (thx ngc92)
788
789 - Initialize GUIEvent.Element in several places (found by greenya)
790
791 - Add EGDS_MESSAGE_BOX_MAX_TEXT_WIDTH and deprecated EGDS_MESSAGE_BOX_MAX_TEST_WIDTH (thx to greenya for reporting).
792
793 - Fix colors in irr files.
794
795 - Fix several places where "used" in core::string was used wrongly preventing some memory corruption
796
797 - Remove additional slash in pathnames in X-Loader
798
799 - Fix crash in CGUIListBox when environment was cleared on events
800
801 - Bugfix: Clear up depth-textures which could not be attached in OpenGL to prevent crashes.
802
803 - Fix arrowMesh boundingbox.
804
805 - Fix rounding problem in getInterpolated in the color classes
806
807 - Scrollbar in GUIListbox now uses default id -1 instead of 0
808
809 - Fix octree clipping issues.
810
811 - Fix obj loader.
812
813 - clone function fixes.
814
815 - Fix tooltips.
816
817 - Fix Ogre parser.
818
819-----------------------------
820Changes in 1.7.1 (17.02.2010)
821
822 - Fix octree with frustum+parent checks enabled (didn't clip at all before). Now using plane-checks instead of edge-checks for frustum-box intersection.
823
824 - Prevent that X11 selects larger resolutions in fullscreen even when perfect fits are available.
825
826 - Ignore setResizable also on X11 when we're fullscreen to avoid messing up the window mode.
827
828 - Work around a crash when pressing ESC after closing a Messagebox (found by Acki)
829
830 - Prevent borland compile warnings in SColorHSL::FromRGB and in SVertexColorThresholdManipulator (found by mdeininger)
831
832 - Improve Windows version detection rules (Patch from brferreira)
833
834 - Make it compile on Borland compilers (thx to mdeininger)
835
836 - Make sure that CAnimatedMeshSceneNode::clone calls the virtual updateAbsolutePosition for the new object
837
838 - Fix that clones got dropped too often when SceneNodes without parent got cloned (found by Ulf)
839
840 - Make sure TAB is still recognized on X11 when shift+tab is pressed. This does also fix going to the previous tabstop on X11.
841
842 - Send EGET_ELEMENT_LEFT also when there won't be a new hovered element
843
844 - Update docs for EGET_ELEMENT_LEFT and EGET_ELEMENT_HOVERED
845
846 - Fix tooltips: Remove them when the element is hidden or removed (thx to seven for finding)
847
848 - Fix tooltips: Make (more) sure they don't get confused by gui-subelements
849
850 - Fix tooltips: Get faster relaunch times working
851
852 - Fix tooltips: Make sure hovered element is never the tooltip itself
853
854 - Fix string::remove which got in an endless loop when remove was called with an empty string (found and fixed by Ulf)
855
856 - Correctly release the GLSL shaders
857
858 - Make sure we only release an X11 atom when it was actually created
859
860 - Fix aabbox collision test, which not only broke the collision test routines, but also frustum culling, octree tests, etc.
861
862 - Fix compilation problem under OSX due to wrong glProgramParameteri usage
863
864 - mem leak in OBJ loader fixed
865
866 - Removed some default parameters to reduce ambigious situations
867
868---------------------------
869Changes in 1.7 (03.02.2010)
870
871 - Implement minimize and deminimize under OSX.
872
873 - Define sorting order for vector2d and vector3d in operators <, <=, > and >= to fix bugs 2783509 and 2783510. Operators order now by X,Y,Z and use float tolerances.
874
875 - Ogre mesh 32bit indices fixed.
876
877 - Fix tooltips for gui-elements with sub-element like IGUISpinBox (id: 2927079, found by ArakisTheKitsune)
878
879 - ITimer no longer stops when started twice
880
881 - wchar_t filesystem updates under Windows.
882
883 - Joystick POV fixed under Windows, ids fixed under OSX.
884
885 - Some updates to skinned mesh for better bones support and scaling animations.
886
887 - OSX supports external window id in creation parameters now.
888
889 - Fix bbox collision tests.
890
891 - Updates for win32 key handling
892
893 - new convenience method for flat plane creation.
894
895 - Sky dome and other meshes use VBOs by default now.
896
897 - Speed up b3d loading for files with many frames, material color flags and vertex color support enhanced.
898
899 - Add hasType to IGUIElement as a dynamic_cast substitute.
900
901 - Add another parameter to IGUISkin::draw3DWindowBackground to allow getting the client area without actually drawing
902
903 - Add function getClientRect to IGUIWindow for getting the draw-able area
904
905 - Fix bug that menus on IGUIWindows with titlebar got drawn too high (id: 2714400)
906
907 - Renamed OctTree to Octree
908
909 - Allow getting a ConstIterator from a non-const core:list
910
911 - Add swap functions to irrMath and to the core classes.
912
913 - Deprecate map::isEmpty() and replace it with map::empty() to make it similar to other base classes.
914
915 - Allow to set the logging level already in SIrrlichtCreationParameters.
916
917 - Add clearSystemMessages to devices (implemented only for Linux and Win32 so far).
918
919 - Support changing the render window from beginScene also with OpenGL driver.
920
921 - Add getMaterial2D which allows to alter the 2d render state settings, such as filtering, anti-aliasing, thickness, etc.
922
923 - Fix incorrect cursorpos for resizable windows on Windows Vista (found and patched by buffer)
924
925 - Change the beginScene window parameter from void* to SExposedVideoData&. This will allow to manage contexts for OpenGL at some point.
926
927 - Add bzip2 and LZMA decompression modes for zip loader.
928
929 - Add OBJ_TEXTURE_PATH and B3D_TEXTURE_PATH to SceneParameters to allow setting texture-paths for obj and b3d.
930
931 - Irrlicht keeps now filenames additionally to the internally used names, thereby fixing some problems with uppercase-filenames on Linux.
932
933 - Bugfix: Mousewheel no longer sends EMIE_MOUSE_WHEEL messages twice on Linux.
934
935 - Use latest jpeglib
936
937 - refactoring: E_ATTRIBUTE_TYPE and IAttribute have now own headers
938
939 - CStringWArrayAttribute speedup
940
941 - SceneNodeAnimatorFollowSpline can now loop and pingpong
942
943 - Meshviewer.example got some fast-scale buttons.
944
945 - Support AES-encrypted zip files. Should work with 128, 196, and 256 bit AES. This addition also adds a new PRNG, SHA, and other algorithms to the engine, though no interface is yet added for them. The implementation of the encryption algorithms is provided by Dr Brian Gladman.
946
947 - flattenFilename and getAbsolutePath fixed and properly added at several places.
948
949 - Added geometry shaders for OpenGL. A first version of the code was submitted by Matthew Kielan (devsh).
950
951 - Bugfix: irrArray should no longer crash when using other allocators.
952
953 - Add MaterialViewer example.
954
955 - Texture activation now back in setMaterial, which simplifies writing external material renderers (OpenGL only).
956
957 - Checkbox uses now disabled text color when disabled.
958
959 - Changed colors for window-title caption to keep them readable when not active.
960
961 - Draw sub-menus to left side if they would be outside main-window otherwise.
962
963 - Give ListBox better defaults for the ScrollBar stepsizes.
964
965 - Double and triple click events now for each mouse-button. Old events for that got removed.
966
967 - Fix adding archives twice, which caused multiple archives of the same name and type covering each other. This one required a texture name change from using backslashes to slashes under Windows.
968
969 - Give access to texture mipmaps. You can provide custom mipmap textures upon generation, regeneration, and locking.
970 Make sure the provided data is large enough and covers all miplevels. Also the returned pointer (from lock) will only cover the smaller data of the mipmap level dimension chosen (level 0 is the original texture).
971
972 - Separate TextureWrap mode into U and V fields
973
974 - Add mirror texture wrap modes
975
976 - windows show now active/inactive state
977
978 - remove unneeded drop/grab calls found by manik_sheeri
979
980 - fix rounding problem in IGUIElements which have EGUIA_SCALE alignments.
981
982 - MessageBox supports now automatic resizing and images.
983 Deprecated EGDS_MESSAGE_BOX_WIDTH and EGDS_MESSAGE_BOX_HEIGHT
984
985 - Let maya-cam animator react on a setTarget call to the camera which happened outside it's own control
986
987 - New contextmenue features:
988 automatic checking for checked flag.
989 close handling now customizable
990 serialization can handle incomplete xml's
991 setEventParent now in public interface
992 New function findItemWithCommandId
993 New function insertItem
994
995 - new vector3d::getSphericalCoordinateAngles method.
996
997 - new triangle3d::isTotalOutsideBox method.
998
999 - Newly introduced VertexManipulator interface. This allows for very easy creation of vertex manipulation algorithms. Several manipulators, e.g. vertex color changer and transformation algorithms are already available.
1000
1001 - createMeshWith1TCoords avoids vertex duplication
1002
1003 - getRotation now handles matrices with scaling as well
1004
1005 - Ogre format animations now supported.
1006
1007 - irrArray: Fixed issues with push_front and reallocation
1008 Changed behavior for set_pointer and clear, when free_when_destroyed is false
1009
1010 - NPK (Nebula device archive) reader added, it's an uncompressed PAK-like format
1011
1012 - SSkinMeshBuffer::MoveTo* methods renamed to convertTo*
1013
1014 - Multiple Render Target (MRT) support added, including some enhanced blend features where supported
1015
1016 - Directory changing fixed for virtual file systems (Archives etc)
1017
1018 - Fix texture matrix init in scene manager and driver
1019
1020 - More draw2dimage support in software drivers
1021
1022 - Sphere node now properly chooses a good tesselation based on the parameters
1023
1024 - Active camera not registered twice anymore
1025
1026 - Parallax/normal map shader rotation bug under OpenGL fixed
1027
1028 - bump map handling for obj files fixed
1029
1030 - Fog serialization added
1031
1032 - New context menu features added
1033
1034 - Bounding Box updates for skinned meshes fixed
1035
1036 - The current FPS for an animated scene node can be queried now, added some variables to serialization
1037
1038 - Scrollbars fixed
1039
1040 - Fixed 2d vertex primitive method to correctly handle transparency
1041
1042 - Fullscreen handling has been enhanced for Windows, now proper resolution is restored on Alt-Tab etc.
1043
1044 - Cameras can now be added to the scene node without automatically activating them
1045 Clone method added
1046
1047 - New video driver method getMaxTextureSize
1048
1049 - PAK archive reader fixed
1050
1051 - TRANSPARENT_ALPHA_CHANNEL_REF uses modulate to enable lighting
1052
1053 - LIGHTMAP_ADD now always uses add operator
1054
1055 - Some Unicode file system fixes
1056
1057 - destructor of irrString not virtual anymore, please don't derive from irrString
1058 Some new methods added, for searching and splitting
1059 Assignment operator optimized
1060
1061 - new lightness method for SColor
1062
1063 - draw3DTriangle now renders filled polygons, old behavior can be achieved by setting EMT_WIREFRAME
1064
1065-----------------------------
1066Changes in 1.6.1 (13.01.2010)
1067
1068 - Fix pingpong for CSceneNodeAnimatorFlyStraight (found by gbox)
1069
1070 - Fix bug with IGUIEditBox where the cursor position is reset on text change.
1071
1072 - Make sure the window top-left corner on Windows is not negative on start so that Windows sytem-menu is always visible.
1073
1074 - Fix problem that the window did sometimes not get the keyboard focus in X11 in fullscreen. Add more debug output in case focus grabbing goes wrong.
1075
1076 - Fix screensize in videodriver when we didn't get the requested window size. This also prevents that gui-clicks are no longer synchronized with gui-drawing and elements can't be hit anymore.
1077
1078 - Bugfix: Prevent a crash when getTypeName was called for the guienvironment. EGUIET_ELEMENT got changed for this.
1079
1080 - Bugfix: Horizontal centered font with linebreaks draw now all lines. For example multiline TextSceneNodes work again.
1081
1082 - Bugfix: spinbox can no longer get in an endless loop due to floating point rounding error (found by slavik262)
1083
1084 - !!API change!! Disabled AntiAliasing of Lines in material default
1085 Please enable this manually per material when sure that it won't lead to SW rendering.
1086
1087 - IGUIComboBox: clicking on the statictext displaying the active selection does now close and open listbox correctly. (Bug found by Reiko)
1088
1089 - Scrollbuttons in IGUITabControl adapt now to tab-height.
1090
1091 - Fix texturing of cylinder mesh
1092
1093 - Fix modal dialog position (found by LoneBoco: http://sourceforge.net/tracker/?func=detail&aid=2900266&group_id=74339&atid=540676)
1094
1095 - Fix DMF loading
1096
1097 - Fixing left+right special keys (ctrl, shift, alt) on Win32 (thanks to pc0de for good patch-ideas).
1098
1099 - Make stringarrays for enums in IGUISkin a little safer
1100
1101 - Add support for keys KEY_PRINT, KEY_HOME (on numpad) and KEY_NUMLOCK on Linux.
1102
1103 - Fix material handling in createMeshWith1TCoords
1104
1105 - Fix another (OldValue == NewValue) before drop()/grap(), this time in CTextureAttribute::setTexture.
1106
1107 - Fix LIGHTMAP_LIGHTING for D3D drivers.
1108
1109 - AntiAliasing disabled for debug render elements.
1110
1111 - Bugfix: CGUIToolBar::addButton does no longer mess up when no image is set and does now actually work with the text.
1112
1113 - Fix ninja animation range which got messed up a little when b3d animations got fixed (thx gbox for finding)
1114
1115---------------------------
1116Changes in 1.6 (23.09.2009)
1117
1118 - Added IFileSystem::createEmptyFileList, exposed IFileList::sort, addItem and added getID
1119
1120 - Fix MAKE_IRR_ID so it can be used from outside the irr namespace (Micha's patch)
1121
1122 - Renamed some methods in ISkinnedMesh to match the official Irrlicht naming scheme according to createXXX()
1123
1124 - Change debug data to draw using lines instead of arrows, which is much faster. Patch by pc0de
1125
1126 - Fix a bug with FPS camera animator causing stutters. Patch by FuzzYspo0N
1127
1128 - Fix scrolling controls in CGUITabControl
1129
1130 - Fix a bug when getting optimal texture size in D3D drivers, by Jetro Lauha (tonic)
1131
1132 - Added EGDS_TITLEBARTEXT_DISTANCE_X and EGDS_TITLEBARTEXT_DISTANCE_Y to GUI, submitted by FuzzYspo0N
1133
1134 - Fix for UFT8 filenames displayed in file dialog, patch by MadHyde.
1135
1136 - Added const method for array::binary_search, potentially slow as it doesn't sort the list!
1137
1138 - Add support for scaling button images.
1139
1140 - Irrlicht can now come with multiple device types compiled in, the device to use is selected by SIrrlichtCreationParameters.DeviceType. This defaults to EIDT_BEST which automatically select the best device available starting with native, then X11, SDL and finally the console.
1141
1142 - Added support for EXP2 fog distribution. This required a change in the setFog parameters where now an enum value instead of the bool linear is given.
1143
1144 - IFileSystem changes:
1145
1146 - Renamed the following functions-
1147 IFileArchive::getArchiveType to getType
1148 IFileSystem::registerFileArchive to addFileArchive
1149 IFileSystem::unregisterFileArchive to removeFileArchive
1150 IFileArchive::openFile to createAndOpenFile
1151
1152 - New enum, E_FILE_ARCHIVE_TYPE. getType on IArchiveLoader and IFileArchive now both return this.
1153
1154 - IFileSystem::addFileArchive takes a parameter to specify the archive type rather always using the file extension. IFileSystem::addZipFileArchive, addFolderFileArchive and addPakFileArchive now use this but these functions are now marked as deprecated. Users should now use addFileArchive instead.
1155
1156 - Added TAR archive loader.
1157
1158 - The ZIP archive loader can now load gzip files, combined with the TAR loader this means Irrlicht now has native support for .tar.gz
1159 Currently this must be done in two calls, for example:
1160 fileSystem->addFileArchive("path/to/myArchive.tar.gz");
1161 fileSystem->addFileArchive("myArchive.tar");
1162
1163 - Fix highlighting in IGUIEditBox where kerning pairs are used in the font. For example in future italic, OS or other custom fonts.
1164
1165 - IOSOperator::getTextFromClipboard returns now const c8* instead of c8*
1166
1167 - Support for copy&paste on linux (X11) added (fixing bug 2804014 found by Pan)
1168
1169 - bugfix for 2795321 found by egrath: Don't rely anymore on broken XkbSetDetectableAutoRepeat.
1170
1171 - bugfix: CMountPointReader::openFile no longer returns true for empty files. Corresponding test added.
1172
1173 - Direct3D now also uses screen coordinates in 2d mode, just like OpenGL. This means that screen coords are going from 0..ScreenWidth and 0..ScreenHeight instead of -1..1.
1174
1175 - ALT+F4 keypress now closes Windows SDL device
1176
1177 - Allow Direct3D drivers in SDL, patch by Halifax
1178
1179 - Added compiler error when attempting to compile with VC6.
1180
1181 - Use setWindowTextA in Windows device for WIN64 platform, posted by veegun
1182
1183 - ELL_ERROR log events are now created when shaders fail to compile or link, reported by Halan
1184
1185 - irrList now uses irrAllocator, fixed by Nox
1186
1187 - Added IGUIWindow::setDraggable and IGUIWindow::isDraggable, by Nox
1188
1189 - Added SGI RGB file reader by Gary Conway, for loading Silicon Graphics .rgb, .rgba, .sgi, .int and .inta textures
1190
1191 - Renamed setResizeAble to setResizable
1192
1193 - Added new device method minimizeWindow which minimizes the window (just as if the minimize button has been clicked).
1194
1195 - SkyDome is now serialized correctly
1196
1197 - Added PLY mesh reader and writer
1198
1199 - Ensure ListBox on combo box doesn't hang off the bottom of the GUI root, by Matthias Specht
1200
1201 - Made IGUIElements recalculate clipping rectangle after setNotClipped, reported by Aelis440
1202
1203 - Bug fix for the combo box where it showed white text instead of skin color before being focused, fix posted by drewbacca
1204
1205 - EGDS_MESSAGE_BOX_HEIGHT is now honoured, bug reported by Spkka
1206
1207 - Fixed a bug in the edit box where events are sometimes sent to a null parent, reported by Sudi.
1208
1209 - Coordinate system fix for OpenGL in SDL device
1210
1211 - Added generic console device. You can now use Irrlicht to create and manipuate graphics on a shell where no graphics hardware
1212 or windowing system is available. To enable it uncomment #define _IRR_USE_CONSOLE_DEVICE_ in IrrCompileConfig.h
1213 - The console device can now present images from the software drivers and display them as ASCII art in the console
1214 - By default it replaces the default font in the skin, to prevent fonts from being huge.
1215
1216 - Fixed problems with changing cursor visibility while mouse is pressed on windows
1217
1218 - Allow control of background drawing in listbox
1219
1220 - Allow control of drawing background and titlebar in windows
1221
1222 - Improved window serialization
1223
1224 - Add mouse events EMIE_MOUSE_DOUBLE_CLICK and EMIE_MOUSE_TRIPLE_CLICK (thx to Ulf for patch proposal)
1225
1226 - Set "ButtonStates" for mouse events also on Linux (was only for Windows formerly)
1227
1228 - Add Shift+Control states to mouse event
1229
1230 - bugfix (2003238): serialize modal screens
1231
1232 - allow stacking modal screens
1233
1234 - allowing hiding modals
1235
1236 - replace many IsVisible checks with virtual isVisible() checks in IGUIElement
1237
1238 - bugfix: reset selected row when clearing CGUITable
1239
1240 - adding events EGET_EDITBOX_CHANGED and EGET_EDITBOX_MARKING_CHANGED
1241
1242 - prevent editbox from recalculating its textbreaking each frame
1243
1244 - let spinbox react on each textchange without waiting for enter to prevent getting value changes without corresponding EGET_SPINBOX_CHANGED events.
1245
1246 - new test for zipreader
1247
1248 - prevent dropping objects accidentally in many set functions
1249
1250 - Reversed change in vector3d::normalize.
1251 Works now again as documented and a corresponding test has been added.
1252 Does fix bug 2770709 (https://sourceforge.net/tracker/?func=detail&aid=2770709&group_id=74339&atid=540676)
1253
1254 - Animations can now be paused by setting the fps to 0.
1255
1256 - Avoid fp-precision problem in getPickedNodeBB (see also http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=33838&highlight=).
1257 This change might also fix the problem with picking nodes found by aanderse (http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=32890&highlight=)
1258
1259 - implemented isALoadableFileFormat ( File *file ) for the Archive Loader
1260
1261 - PixelBlend16 and PixelBlend16_simd are working for the new rules.
1262
1263 - bugfix. CLightSceneNode didn't correctly update it's attributes
1264
1265 - vector template and equals tests
1266 also set the equal test for s32 to behave like the f32 routine.
1267 The function equals always implements a weak test.
1268 that means a tolerance MUST always be used if you use the equal function. default is 1.
1269
1270 - VideoDriver drawPixel
1271 The HW renderes are using the alpha components for blending.
1272 The Software Renderes and image loaders are using CImage::setPixel copy.
1273 so setPixel is engaged to either blends or copy the pixel
1274 default: false
1275 - Burningvideo
1276 added RenderMaterial EMT_SPHERE_MAP
1277 pushed burningsvideo to 0.43
1278 added RenderMaterial EMT_REFLECTION_2_LAYER
1279 pushed burningsvideo to 0.44
1280 set EMT_TRANSPARENT_ALPHA_CHANNEL_REF
1281 to use AlphaRef 0.5 like Direct3D
1282
1283 One Note: in OpenGL there is know difference between sphere_map and reflection layer
1284 both using GL_TEXTURE_GEN_MODE GL_SPHERE_MAP, whereas in d3d one time using camera_normal
1285 on sphere and reflection on refletcion_layer.
1286
1287 The visual difference is that on sphere map the "image is not moving" when you rotate the
1288 viewer. For Burning i took the opengl visual. always moving
1289
1290 - rename quake3 SEntity to IEntity to be confom with IShader
1291
1292 - fixed createMeshWith2TCoords, normals were missing during copy.
1293
1294 - added
1295 //! Creates a copy of the mesh, which will only consist of S3DVertex vertices.
1296 IMesh* CMeshManipulator::createMeshWith1TCoords(IMesh* mesh) const
1297
1298 - added io::IFileSystem* CSceneManager::getFileSystem()
1299
1300 - added virtual const c8* ISceneManager::getAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type);
1301
1302 - added CSceneNodeAnimatorFlyCircle::radiusEllipsoid.
1303 if radiusEllipsoid == 0 the default circle animation is done
1304 else radiusEllipsoid forms the b-axe of the ellipsoid.
1305 -> gummiball bouncing
1306
1307 - added ISceneManager::createFlyStraightAnimator variable bool ping-pong
1308 used in loop mode to device if start from beginning ( default ) or make ping-pong
1309 -> straight bouncing
1310
1311 - changed IFileSystem::registerFileArchive
1312 remove the index of the hierarchy and added a new interface method
1313 //! move the hirarchy of the filesystem. moves sourceIndex relative up or down
1314 virtual bool moveFileArchive( u32 sourceIndex, s32 relative ) = 0;
1315
1316 - bugfix and changes in SViewFrustum::SViewFrustum
1317 wrong size of Matrices copy.
1318 renamed E_TRANSFORMATION_STATE_2 to E_TRANSFORMATION_STATE_FRUSTUM
1319 therefore also changed SViewFrustum::setTransformState to not tap
1320
1321 in the pitfall again of wrong memory...
1322
1323 - moved
1324 //! EMT_ONETEXTURE_BLEND: has BlendFactor Alphablending
1325 inline bool textureBlendFunc_hasAlpha ( E_BLEND_FACTOR factor ) const
1326 from the material renderes ( 3x declared ) to SMaterial.h
1327
1328 - updated managed light example to use standard driver selection
1329
1330 - BurningsVideo
1331 - LightModel reworked.
1332 Point Light & Direction Light works for Diffuse Color as expected
1333 Specular and Fog still have problems ( needs new pixel shader )
1334 pushed burningsvideo to 0.42 for this major step
1335
1336 - removed obsolete matrix transformations
1337 renamed E_TRANSFORMATION_STATE_2 to E_TRANSFORMATION_STATE_BURNING
1338
1339 - cleaned line3d.h vector3d.h template behavior.
1340 many mixed f32/f64 implementations are here. i'm not sure if this should be
1341 the default behavior to use f64 for example for 1.0/x value, because they
1342 benefit from more precisions, but in my point of view the user is responsible
1343 of choosing a vector3d<f32> or vector3d<f64>.
1344
1345 - added core::squareroot to irrmath.h
1346 -> for having candidates for faster math in the same file
1347
1348 - added AllowZWriteOnTransparent from SceneManager to burningsvideo
1349
1350 -added hasAlpha() to ITexture
1351 This info can be used for e.q to downgrade a transparent alpha channel blit
1352 to add if the texture has no alpha channel.
1353
1354- FileSystem 2.0 SUPER MASTER MAJOR API CHANGE !!!
1355
1356 The FileSystem is now build internally like for e.g. the image- and meshloaders.
1357 There exists a known list of ArchiveLoaders, which know how to produce a Archive.
1358 The Loaders and the Archives can be attached/detached on runtime.
1359
1360 The FileNames are now stored as io::path. where c16 is toggled between char/wchar
1361 with the #define flag _IRR_WCHAR_FILESYSTEM, to supported unicode backends (default:off)
1362 Replaced most (const c8* filename) to string references.
1363
1364 Basically the FileSystem is divided into two regions. Native and Virtual.
1365 Native means using the backend OS.
1366 Virtual means only use currently attached IArchives.
1367
1368 Browsing
1369 each FileSystem has it's own workdirectory and it's own methods to
1370 - create a FileTree
1371 - add/remove files & directory ( to be done )
1372 Hint: store a savegame in a zip archive...
1373
1374 basic browsing for all archives is implemented.
1375 Example 21. Quake3Explorer shows this
1376
1377 TODO:
1378 - a file filter should be implemented.
1379 - The IArchive should have a function to create a filetree
1380 for now CFileList is used.
1381
1382 Class Hierarchy:
1383
1384 IArchiveLoader: is able to produce a IFileArchive
1385 - ZipLoader
1386 - PakLoader
1387 - MountPointReader ( formaly known as CUnzipReader )
1388
1389 IFileArchive:
1390 -ZipArchive
1391 -PakArchive
1392 -MountPoint (known as FolderFile)
1393
1394 IFileSystem
1395 - addArchiveLoader
1396
1397 - changed implementation of isALoadableFileExtension in all loaders
1398 to have consistent behavior
1399 - added a parameter to IFileList * createFileList
1400 setFileListSystem
1401 allows to query files in any of the game archives
1402 standard behavior listtype = SYSTEM ( default)
1403
1404 - CLimitReadFile
1405 added multiple file random-access support.
1406 solved problems with mixed compressed & uncompressed files in a zip
1407
1408- IrrlichtDevice
1409 added:
1410 virtual bool setGammaRamp( f32 red, f32 green, f32 blue, f32 brightness, f32 contrast ) = 0;
1411 virtual bool getGammaRamp( f32 &red, f32 &green, f32 &blue ) = 0;
1412 and calculating methods to DeviceStub.
1413
1414 - irrlicht.h
1415 changed exported irrlicht.dll routines createDevice, createDeviceEx, IdentityMatrix
1416 to extern "C" name mangling.
1417
1418 - ParticleSystem
1419 removed the private (old?,wrong?) interface from the ParticleEffectors
1420 to match the parent class irr::io::IAttributeExchangingObject::deserializeAttributes
1421
1422- Generic
1423 - vector3d<T>& normalize() optimized
1424 added reciprocal_squareroot for f64
1425
1426 - dimension2d
1427 added operator dimension2d<T>& operator=(const dimension2d<U>& other)
1428 to cast between different types
1429
1430 - vector2d bugfix operator+=
1431
1432 - C3DSMeshLoader renamed chunks const u16 to a enum
1433 removing "variable declared but never used warning"
1434
1435 - added a global const identity Material
1436 changed all references *((video::SMaterial*)0) to point to IdentityMaterial
1437 removed warning: "a NULL reference is not allowed"
1438
1439 - modified IRRLICHT_MATH to not support reciprocal stuff
1440 but to use faster float-to-int conversion.
1441
1442 - core::matrix4
1443 USE_MATRIX_TEST
1444
1445 i tried to optimize the identity-check ( w.r.t. performance)
1446 i didn't succeed so well, so i made a define for the matrix isIdentity -check
1447 for now it's sometimes faster to always calculate versus identity-check
1448 but if there are a lot of scenenodes/ particles one can profit from the
1449 fast_inverse matrix, when no scaling is used. further approvement could
1450 be done on inverse for just translation! ( many static scenenodes are not rotated,
1451 they are just placed somewhere in the world)
1452 one thing to take in account is that sizeof(matrix) is 64 byte and
1453 with the additional bool/u32 makes it 66 byte which is not really cache-friendly..
1454
1455 - added buildRotateFromTo
1456 Builds a matrix that rotates from one vector to another
1457
1458 - irr::array. changed allocating routine in push_back
1459
1460 added a new method setAllocStrategy,
1461 safe ( used + 1 ), double ( used * 2 + 1)
1462 better default strategies will be implemented
1463
1464 - removed binary_search_const
1465 i added it quite a long time ago, but it doesnt make real sense
1466 a call to a sort method should happen always. i just wanted to safe
1467 a few cycles..
1468 - added binary_search_multi
1469 searches for a multi-set ( more than 1 entry in the sorted array)
1470 returns start and end-index
1471
1472 - changed some identity matrix settings to use core::IdentityMatrix
1473
1474 - added deletePathFromFilename to generic string functions in coreutil.h and
1475 removed from CZipReader and CPakReader
1476
1477 - s32 deserializeAttributes used instead of virtual void deserializeAttributes in
1478 ParticleSystem ( wrong virtual was used)
1479
1480- strings & Locale
1481 - started to add locale support
1482 - added verify to string
1483 - added some helper functions
1484
1485- XBOX
1486 i have access to a XBOX development machine now. I started to compile
1487 for the XBOX. Question: Who did the previous implementation?. There
1488 is no XBOX-Device inhere. maybe it's forbidden because of using the offical
1489 Microsoft XDK. I will implement a native or sdl device based on opendk.
1490 irrlicht compiles without errors on the xbox but can't be used.
1491
1492- Windows Mobile
1493 reworked a little. added the mobile example to the windows solution for
1494 cross development.
1495 added maximal 128x128 texture size for windows mobile ( memory issues )
1496
1497- Collision Speed Up
1498
1499 The Collision Speed Up greatly improves with many small static child-nodes
1500
1501 - added COctTreeTriangleSelector::getTriangles for 3dline from user Piraaate
1502
1503 - modified createOctTreeTriangleSelector and createTriangleSelector
1504 to allow node == 0, to be added to a meta selector
1505
1506 - CSceneNodeAnimatorCollisionResponse has the same problem as CSceneNodeAnimatorFPS
1507 on first update:
1508 Problem. you start setting the map. (setWorld). First update cames 4000 ms later.
1509 The Animator applies the missing force... big problem...
1510 changed to react on first update like camera.
1511
1512 - add Variable FirstUpdate. if set to true ( on all changes )
1513 then position, lasttime, and falling are initialized
1514
1515 -added #define OCTTREE_USE_HARDWARE in Octree.h
1516
1517 if defined octtree uses internally a derived scene::MeshBuffer which has
1518 the possibility to use the Hardware Vertex Buffer for static vertices and
1519 dirty indices;-)
1520
1521 if defined OCTTREE_USE_HARDWARE octree uses internally a derived scene::CMeshBuffer
1522 so it's not just a replacement inside the octree. It also in the OctTreeSceneNode.
1523 #define OCTTREE_PARENTTEST is also used. It's skip testing on fully outside and takes everything on fully inside
1524
1525 - virtual void ISceneNode::updateAbsolutePosition()
1526 - changed inline CMatrix4<T> CMatrix4<T>::operator*(const CMatrix4<T>& m2) const
1527
1528 - changed inline bool CMatrix4<T>::isIdentity() const
1529 to look first on Translation, because this is the most challenging element
1530
1531 - virtual core::matrix4 getRelativeTransformation() const
1532 Hierarchy on Identity-Check
1533 1) ->getRelativeTransform -> 9 floating point checks to be passed as Identity
1534 2) ->isIdentity () -> 16 floating point checks to be passed as Identity
1535
1536 - inline void CMatrix4<T>::transformBoxEx(core::aabbox3d<f32>& box) const
1537 added isIdentity() check
1538
1539- changed CSceneNodeAnimatorCollisionResponse
1540 - added CSceneNodeAnimatorCollisionResponse::setGravity
1541 needed to set the differents Forces for the Animator. for eq. water..
1542 - added CSceneNodeAnimatorCollisionResponse::setAnimateTarget
1543 - added CSceneNodeAnimatorCollisionResponse::getAnimateTarget
1544 - changed CSceneNodeAnimatorCollisionResponse::animateNode to react on FirstUpdate
1545 - TODO: set Gravity to Physically frame independent values..
1546 current response uses an frame depdended acceleration vector.
1547 ~9.81 m/s^2 was achieved at around 50 fps with a setting of -0.03
1548 may effect existing application..
1549
1550- SceneNodes
1551 - CSkyDomeSceneNode
1552 moved radius ( default 1000 ) to constructor
1553 added Normals
1554 added DebugInfo
1555 added Material.ZBuffer, added SceneManager
1556
1557 - CVolumeLightSceneNode:
1558 changed default blending OneTextureBlendgl_src_color gl_src_alpha to
1559 EMT_TRANSPARENT_ADD_COLOR ( gl_src_color gl_one )
1560 which gives the same effect on non-transparent-materials.
1561 Following the unspoken guide-line, lowest effect as default
1562
1563 - changed SceneNode Skydome from f64 to f32
1564
1565 - AnimatedMesh Debug Data:
1566 mesh normals didn't rotate with the scenenode fixed ( matrix-multiplication order)
1567
1568 - Camera SceneNode setPosition
1569 Camera now finally allow to change position and target and updates all
1570 effected animators..
1571
1572- Device:
1573 added the current mousebutton state to the Mouse Event
1574 so i need to get the current mouse state from the OS
1575
1576- GUI
1577
1578 - CGUIFont:
1579 - added virtual void setInvisibleCharacters( const wchar_t *s ) = 0;
1580 define which characters should not be drawn ( send to driver) by the font.
1581 default: setInvisibleCharacters ( L" " );
1582
1583 - added MultiLine rendering
1584 should avoid to us CStaticText breaking text in future
1585
1586 - CGUIListBox
1587 - changed Scrollbar LargeStepSize to ItemHeight
1588 which easy enables to scroll line by line
1589
1590 - CGUIScrollBar
1591 - bug: event lost when moving outside the window
1592 - bug: Scrollbar notifyListBox notify when the scrollbar is clicked.
1593 - changed timed event in draw to OnPostRender
1594
1595 - added GUI Image List from Reinhard Ostermeier, modified to work
1596
1597 - FileOpenDialog
1598 changed the static text for the filename to an edit box.
1599
1600 - changed the interface for addEditBox to match with addStaticText
1601
1602 - changed the interface for addSpinBox to match with addEditBox
1603
1604 - added MouseWheel to Spinbox
1605
1606 - changed CGUITable CLICK_AREA from 3 to 12 to enable clicking on the visible marker
1607
1608 - CGUISpritebank
1609 removed some crashes with empty Sprite banks
1610
1611 - IGUIScrollBar
1612 added SetMin before min was always 0
1613 changed ScrollWheel Direction on horizontal to move right on wheel up, left on wheel down
1614
1615 - IComboBox: added ItemData
1616
1617 - optimized IsVisible check in IGUIElement::draw
1618
1619- Image Loaders
1620 - added TGA file type 2 ( grayscale uncompressed )
1621 - added TGA file type (1) 8 Bit indexed color uncompressed
1622
1623 ColorConverter:
1624 - added convert_B8G8R8toA8R8G8B8
1625 - added convert_B8G8R8A8toA8R8G8B8
1626
1627- Media Files
1628 - added missing shaders and textures to map-20kdm2.
1629 Taken from free implementation
1630 - ball.wav. adjusted DC-Offset, amplified to -4dB, trim cross-zero
1631 - impact.wav clip-restoration, trim cross-zero
1632 - added gun.md2, gun.pcx to media-files
1633 - added new irrlicht logo irrlicht3.png
1634
1635- OctTree
1636 -added
1637 #define OCTTREE_PARENTTEST ( default: disabled )
1638 used to leave-out children test if the parent passed a complete frustum.
1639 plus: leaves out children test
1640 minus: all edges have to be checked
1641 - added MeshBuffer Hardware Hint Vertex to octtree
1642
1643- CQuake3ShaderSceneNode:
1644 - removed function releaseMesh
1645 Shader doesn't copy the original mesh anymore ( saving memory )
1646 so therefore this (for others often misleading ) function was removed
1647 - changed constructor to take a (shared) destination meshbuffer for rendering
1648 reducing vertex-memory to a half
1649 - don't copy the original vertices anymore
1650 - added deformvertexes autosprite
1651 - added deformvertexes move
1652 - added support for RTCW and Raven BSPs ( qmap2 )
1653 - added polygonoffset (TODO: not perfect)
1654 - added added nomipmaps
1655 - added rgbgen const
1656 - added alphagen
1657 - added MesBuffer Hardware Hint Vertex/Index to Quake3: static geometry, dynamic indices
1658 - added Quake3Explorer examples
1659 - added wave noise
1660 - added tcmod transform
1661 - added whiteimage
1662 - added collision to Quake3Explorer
1663 - renamed SMD3QuaterionTag* to SMD3QuaternionTag* ( typo )
1664 - updated quake3:blendfunc
1665 - added crouch to Quake3Explorer
1666 (modifying the ellipsiodRadius of the camera animator )
1667 added crouch to CSceneNodeAnimatorCameraFPS
1668 still problems with stand up and collision
1669 - Quake3MapLoader
1670 modified memory allocation for faster loading
1671 - Quake3LoadParam
1672 added Parameter to the Mesh-Loader
1673 - added
1674 The still existing missing caulking of curved surfaces.
1675 using round in the coordinates doesn't solve the problem.
1676 but for the demo bsp mesh it solves the problem... (luck)
1677 so for now it's switchable.
1678 TJUNCTION_SOLVER_ROUND
1679 default:off
1680
1681- BurningVideo
1682 - pushed BurningsVideo to 0.40
1683 - added blendfunc gl_one_minus_dst_alpha gl_one
1684 - added blendfunc gl_dst_color gl_zero
1685 - added blendfunc gl_dst_color src_alpha
1686 - modified AlphaChannel_Ref renderer to support alpha test lessequal
1687 - addded 32 Bit Index Buffer
1688 - added sourceRect/destRect check to 2D-Blitter ( slower, but resolves crash )
1689 - added setTextureCreationFlag video::ETCF_ALLOW_NON_POWER_2
1690 Burning checks this flag and when set, it bypasses the power2 size check,
1691 which is necessary on 3D but can be avoided on 2D.
1692 used on fonts automatically.
1693 - added Support for Destination Alpha
1694
1695- Direct3D8
1696 - added 32 Bit Index Buffer
1697 - compile for XBOX
1698
1699- Direct3D9
1700 - fixed crash on RTT Textures DepthBuffer freed twice.
1701 added deleteAllTextures to destructor
1702
1703- NullDriver
1704 - removeallTextures. added setMaterial ( SMaterial() ) to clean pointers for freed textures
1705
1706 - ISceneCollisionManager::getSceneNodeAndCollisionPointFromRay() allows selection by BB and triangle on a heirarchy of scene nodes.
1707
1708 - Triangle selectors created from animated mesh scene nodes will update themselves as required to stay in sync with the node.
1709
1710 - IVideoDriver has methods to enumerate the available image loaders and writers.
1711
1712 - Octtree scene nodes are now IMeshSceneNodes rather than ISceneNodes, and so you can call getMesh() on them.
1713
1714 - New scene parameter B3D_LOADER_IGNORE_MIPMAP_FLAG to ignore the often missing mipmap flag in b3d files. If this parameter is true, the old pre Irrlicht-1.5 behavior is restored.
1715
1716 - Added Mipmap LOD Bias attribute to MaterialLayer.
1717
1718 - Added ColorMask support to selectively disable color planes on rendering.
1719
1720 - Added support for all available depth test functions.
1721
1722 - Add an outNode to getCollisionPoint() that returns the scene node that was hit, as well as the triangle.
1723
1724 - Initial support for Alpha To Coverage, needs some more fixing until it works on all supported platforms.
1725
1726 - Added support for Anti-Aliasing modes per material
1727
1728 - Added an ICollisionCallback to ISceneNodeAnimatorCollisionResponse, to inform the application that a collision has occured. Thanks to garrittg for this.
1729
1730 - Added an startPosition parameter to createFlyCircleAnimator() to allow starting the animator at any position on the circle.
1731
1732 - Many uses of dimension2d<s32> changed to dimension2d<u32>, including IImage, ITexture and screen dimensions. You will have to change (at least) createDevice() calls to use dimension2d<u32>
1733
1734 - Added Doublebuffer flag to SIrrCreationParameters, for better finetuning
1735
1736 - Added Stereo-Framebuffer support for professional OpenGL cards
1737
1738 - Added IFileSystem::createMemoryWriteFile() to allow creation of an IWriteFile interface that uses an application supplied memory buffer.
1739
1740 - Added an IVideoDriver::writeImageToFile() overload that can take an IWriteFile interface.
1741
1742 - (Internal) Replaced CMemoryReadFile with CMemoryFile, that also implements an IWriteFile interface.
1743
1744 - Added an optional light manager to the scene manager to allow the user application to turn lights on and off during scene rendering. This can be used to produce "zoned" lighting. See example 20.ManagedLights.
1745
1746 - Added a method to flip the Y movement of the FPS camera.
1747
1748 - The Anisotropy filter can now be set to the AF value per texture layer. So no forced MAX_ANISOTROPY anymore. .irr files will probably fail, though.
1749
1750 - AntiAlias parameter in SIrrCreationParameters is now an u8 value specifying the multisampling level (0 for disabled, 4,6,8, and others for anti-aliasing)
1751
1752 - D3D devices use DISCARD for windowed renderbuffers now, can be faster.
1753
1754 - Changed behavior of PixelBlend16() / PixelBlend16_simd() so that they treat the 1 bit alpha of the source pixel as boolean, i.e. they draw either the source pixel, or the destination pixel, rather than "blending". (Issue revealed by the fix to IVideoDriver::makeColorKeyTexture()).
1755
1756 - IVideoDriver::makeColorKeyTexture() bug fixed so that only alphas, not whole texel colors, are zeroed. An optional parameter allows using the old (buggy) behavior for backwards compatibility.
1757
1758 - position2d is now a synonym for vector2d. position2d is therefore marked as deprecated, although it's unlikely to be removed.
1759
1760 - ISceneNodeAnimator now has a hasFinished() method.
1761
1762 - ISceneNodeAnimatorCollisionResponse exposes the target node. Setting the node again resets the last position, allowing the node to be teleported.
1763
1764 - Add a hitPosition out parameter to ISceneCollisionManager::getCollisionResultPosition() - this is a (small) API breaking change.
1765
1766-------------------------------------
1767Changes in version 1.5.2 (16.12.2009)
1768
1769 - Properly check boundaries in getFont and setFont.
1770
1771 - Reinit values in the driver when scene manager is cleared.
1772
1773 - Normals handling fixed in createMeshWithTangents, existing normals are not always destroyed now.
1774
1775 - Fix terrain smoothing, bug found by loverlinfish
1776
1777 - SOLARIS recognition removed. Please specify the platform define manually. This allows for compilation under sparc/Linux and sparc/Solaris
1778
1779 - Some uninitialized variables fixed
1780
1781 - FreeBSD joystick support added (for Debian package)
1782
1783 - Fix cursor problems found by buffer and by rvl2 as described in http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=34823&highlight=
1784
1785 - OSX/XCode updates
1786
1787 - MS3D loader bug fixed
1788
1789 - Float parse bug fixed
1790
1791-------------------------------------
1792Changes in version 1.5.1 (05.08.2009)
1793
1794 - Make sure a missing font does not corrupt the skin.
1795
1796 - Fix getAngle in vector2d as suggested by xray. This has only a minor impact on s32 vectors.
1797
1798 - bugfix: CGUIFont::getCharacterFromPos regards now kerning (found by Arras)
1799
1800 - Add support for range fog in some OpenGL versions.
1801
1802 - Fix for shadow volume removal, submitted by vitek.
1803
1804 - Avoid using X11 autorepeat to deal with broken X11 versions.
1805
1806 - Speculars are properly exported into mtl files now, instead of corrupting them.
1807
1808 - Binary type loading in attributes fixed.
1809
1810 - bugfix: Use make_lower throughout for spritebank filenames (found and patched by Ion Dune)
1811
1812 - STL loader fixed: Right-handedness corrected, normals and bboxes are correctly added now.
1813
1814 - bugfix: CUnZipReader::openFile no longer returns true for empty files. Corresponding test added.
1815
1816 - Big endian issues in .x loader fixed.
1817
1818 - HSLColor methods repaired.
1819
1820 - copyToScaling fixed.
1821
1822 - Fixed problem with highlighting menus when mouse was outside sub-menu area.
1823
1824 - bugfix (2796207): menu acted (wrongly) on left-click down instead of left-click up.
1825
1826 - bswap16 fallback macro fixed
1827
1828 - getBaseName fixed to work correct with dots in filenames.
1829
1830 - static method isDriverSupported allows for simple check of available drivers.
1831
1832 - Some defines added to check for the Irrlicht version of the library.
1833
1834 - Make sure all renderstates are properly initialized
1835
1836 - Wrong size for main depth buffer fixed.
1837
1838 - Fix 3ds shininess to the allowed range.
1839
1840 - Fix loading of Collada files from irrEdit 1.2
1841
1842 - Remove texture pointers after texture clear.
1843
1844 - WindowsCE pathnames fixed.
1845
1846 - Some virtuals are now overridden as expected.
1847
1848 - Incomplete FBOs are properly signalled now
1849
1850 - Update to libpng 1.2.35, fixed issues on 64bit machines with system's libpng.
1851
1852 - Fixed wrong grab/drop in setOverrideFont
1853
1854 - Added draw2dRectOutline
1855
1856 - rectf and recti added.
1857
1858 - Fix ALPHA_CHANNEL_REF to a fixed check for alpha==127 as expected.
1859
1860 - Fixed OSX device bug where screen size was not set in fullscreen mode.
1861
1862 - cursor setVisible changed to be called less often.
1863
1864 - OpenGL version calculation fixed.
1865
1866 - OSX device now supports shift and ctrl keys.
1867
1868 - Fixed ambient light issues in burningsvideo.
1869
1870 - device reset for d3d fixed when using VBOs.
1871
1872 - Fix dimension2d +=
1873
1874 - MD2 mesh loader: Now uses much less memory, reduced number of allocations when loading meshes.
1875
1876 - OpenGL render state (texture wrongly cached) fixed.
1877
1878 - Fixed animator removal.
1879
1880 - Checnged collision checks for children of invisible elements to also be ignored (as they're actually invisible due to inheritance).
1881
1882 - Fix terrain to use 32bit only when necessary, make terrain use hw buffers. Heightmap loading and height calculation fixed. Visibility and LOD calculations updated.
1883
1884 - Some mem leaks fixed
1885
1886 - FPS camera resets the cursor better
1887
1888-----------------------------------
1889Changes in version 1.5 (15.12.2008)
1890
1891 - Construction calls for FPS camera changed to take speed in units/milliseconds, just as the setSpeed method does.
1892
1893 - Code::Blocks workspaces added. C::B projects (using gcc) now output to /lib/gcc and /bin/gcc, when built on either Windows or Linux.
1894
1895 - Added a test suite in the /tests directory. This can be used to perform regression tests, and should be updated with new tests to verify fixes or validate new features.
1896
1897 - Changed the preferred way of altering light node's radius: Use the new member methods of ILightSceneNode instead of directly modifying the SLight structure.
1898
1899 - Changed the initial attenuation back to (0,1/radius,0). To override this value simply change the attenuation in the SLight (lightnode->getLightData().Attenuation.set(x,y,z))
1900
1901 - Dirty fix for OSX device setResizable and a bug fix to do with resizing the device.
1902
1903 - Terrain heightmap and texture were flipped in order to draw them as expected (looking onto the terrain from high above will just look like the actual texture/heightmap).
1904
1905 - Significant internal change to the way that FPS camera jump speed and collision response animator gravity interact. The behavior is now much more realistic, but it will require you to adjust your jump speed and gravity.
1906
1907 - Skybox won't be culled anymore by nearplane or farplane.
1908
1909 - BBoxes of animated meshes (skinned meshes) are updated again.
1910
1911 - Lost devices (as found with D3D) are properly handled now. So the screen can be resized or minimized without crashing the app.
1912
1913 - Renamed IGUIElement::setRelativePosition(const core::rect<f32>& r) to IGUIElement::setRelativePositionProportional(), as it has radically different functionality from setRelativePosition(const core::rect<s32>& r)
1914
1915 - Added IGUIElement::setRelativePosition(const core::position2di & position) to set a new position while retaining the existing height and width.
1916
1917 - Many Collada fixes. z_up coords are supported now, texture coords are properly loaded. Transparency is supported.
1918
1919 - Camera scene node rotation and target can now be bound together so that changing one automatically changes the other (as the FPS camera has always done). See ICameraSceneNode::bindTargetAndRotation()
1920
1921 - Removed the extra libpng files for OSX. OSX now also uses the default libpng.
1922
1923 - Enhanced PCX support with some more color formats and write support.
1924
1925 - Fixed LMTS problems with extra data in files.
1926
1927 - Removed VS6 .dsw / .dsp project files - VS6 is no longer supported.
1928
1929 - Particles can be scaled during animations. Particle scaling needs to happen in the emitter now, instead of in the Particle system scene node. Deprecation methods will guide the user.
1930
1931 - ISceneNode::setParent and addChild now updates node SceneManager pointers if the node was from another SceneManager.
1932
1933 - Basic support for joystick input events on Windows, Linux, SDL and OSX. Tested with wired Logitech and Thrustmaster wired controllers and XBox 360 wireless controller ( http://tattiebogle.net/index.php/ProjectRoot/Xbox360Controller/OsxDriver )
1934
1935 - Fixed scaled octree nodes being incorrectly frustum culled.
1936
1937 - FSAA under OpenGL and Win32 added. Now all hw drivers and platforms should support it.
1938
1939 - Unlimited RTT fix for D3D systems. Depth buffers are now shared if possible, otherwise a new depth buffer is generated. In order to save VidMem one should create RTTs starting with the largest one.
1940
1941 - Avoid RTTs with nonFBO-support under OpenGL which are larger than the screen. Since we rely on rendering into textures in this case we need to clamp the size by the screensize.
1942
1943 - Fixes for getAbsoluteFilename under Linux in order to return a filename instead of en empty string in case the file doesn't exist.
1944
1945 - Use absolute path names when creating / finding textures.
1946
1947 - Font tool implementation for Linux with xft, by Neil Burlock.
1948
1949 - Support for normals and UV coords from DeclData in .x files.
1950
1951 - Modified line2d<T>::intersectWith() to cover more cases.
1952
1953 - Added IVideoDriver::drawPixel().
1954
1955 - Moved the window pointer from endScene to beginScene, as this is required for OpenGL support of external window pointers.
1956
1957 - Fix for terrain culling.
1958
1959 - Added minimize button to win32 window (if resizable)
1960
1961 - Major API change: RTTs are now created via addRenderTargetTexture instead of createRenderTargetTexture, which allows to retrieve them from the texture cache, but also changes the way of removing the RTTs, and especially one must not drop the pointer anymore.
1962
1963 - WindowsCE-Bugfix
1964
1965 - disableFeature can be used to override feature support of the video driver.
1966
1967 - draw2DImage can now also handle RTTs under OpenGL (which were flipped before).
1968
1969 - Ogre mesh format fixes for proper texture support.
1970
1971 - Added .obj mesh writer.
1972
1973 - Some core::string constructors made explicit to avoid unintended conversions. Just add core::stringc() or core::stringw() around the old code to avoid warnings.
1974
1975 - IdentityMatrix is now a properly defined global, with external visibility on all platforms.
1976
1977 - Bugfix for context releases with glx 1.3 on error.
1978
1979 - Removed constraints for sizes of the terrain scene node.
1980
1981 - Support for 32bit indices in a special MeshBuffer class.
1982
1983 - isBetweenPoints return true now even for the begin and end points, i.e. line segments are now including their start and end.
1984
1985 - Fix XML reader creation for non-existing files and invalid callbacks.
1986
1987 - Changed interpretation of MaterialTypeParam==0 in transparent materials. Now it's consistent with all other values, but one has to set the value to 0.5 to get the old behavior (slightly faster rendering, but no smooth borders)
1988
1989 - Replaced transformBox by transformBoxEx in some internal methods to avoid major malfunction of the transformations.
1990
1991 - Fix use of zip file inside zip files.
1992
1993 - Avoid loading textures which are not used by the mesh in b3d loader.
1994
1995 - Added scaleTCoords methods to MeshManipulator
1996
1997 - Enable use of other meshes for shadow mesh generation, can be used to speed up shadow generation and rendering for complex meshes. Patch based on a version by tonic.
1998
1999 - Fixed usage of SIrrCreationParameters struct, which dind't have copy constructor and assignment operator anymore, since the Irrlicht version string was made const.
2000
2001 - New glext.h (version 41) and glxext.h (version 20) supporting OpenGL 3.0
2002
2003 - Added support for read-only locking of textures. Can speed up those calls.
2004
2005 - Added support for locking RTTs under OpenGL.
2006
2007 - Implementation of UserData events from system events.
2008
2009 - ICameraSceneNode::setIsOrthogonal replaced by a parameter to setProjectionMatrix.
2010
2011 - All meshbuffers are now dynamically allocated to avoid problems with grabbed buffers, which may be deleted before the last drop happens (due to static memory allocation).
2012
2013 - Enhanced scene graph traversal with example from rogerborg.
2014
2015 - FPS camera disabling of event receiver works better now.
2016
2017 - scene deserialization allows for a user defined callback after a new scene node is created.
2018
2019 - Fixed tangent mesh loading from .irrmesh files.
2020
2021 - OpenGL clamp modes are now properly set.
2022
2023 - IMeshManipulator::transformMesh renamed to transform, also supports meshbuffers now.
2024 scaleMesh renamed to scale, supports meshbuffers as well.
2025
2026 - vector3d::rotationToDirection added.
2027
2028 - New mesh generators for cone and cylinder.
2029
2030 - Hardware accelerated Vertex and Index Buffer support finally integrated into Irrlicht. Thanks to a resource handling idea by Klasker and the almost immediate implementation by Luke, Irrlicht now supports VBOs under OpenGL and D3D.
2031 Hardware buffers make rendering the same vertices much faster. To use this feature with a mesh, simply set a usage type via MeshBuffer->setHardwareMappingHint(scene::EHM_STATIC). The driver will upload the vertices and indices on the next draw and reuse this information without the need to upload it each frame.
2032 Vertex and Index buffers can also be updated separately, which is e.g. useful for the terrain node's LOD.
2033
2034 - Changed FBO creation according to Nadro's patch. Seems to have zbuffer problems currently.
2035
2036 - Update to libpng 1.2.29
2037
2038 - Compiler flag for PerfHUD support added.
2039
2040 - recalculateNormals and tangent space creation enhancements by ryanclark.
2041
2042 - Added getColorFormat methods for device and driver, returning the color format of the device's window and the driver's framebuffer.
2043
2044 - Added isFullscreen method.
2045
2046 - Added isWindowFocused and isWindowMinimized methods.
2047
2048 - Screenshots are now always made from the frontbuffer, so always the last completely rendered image is captured. However, overlapping windows may corrupt those parts of the screenshot (as was previously happening with d3d already).
2049
2050 - New device creation parameter to disable Irrlicht's system event handling.
2051
2052 - New device creation parameter to specify depth bits.
2053
2054 - New device creation parameter to request alpha channel in framebuffer.
2055
2056 - Draw2DImage methods under OpenGL now also handle RTTs correctly.
2057
2058 - Fixed RTT bug which lead to strangely clamped textures.
2059
2060 - Speed improvement for screenshots on some Intel cards under OpenGL.
2061
2062 - My3D file loader fixed.
2063
2064 - Terrain mesh performance increased.
2065
2066 - Fixed mem leak in cube node.
2067
2068 - Compiler errors in shaders won't corrupt the material renderer list anymore.
2069
2070 - Quake3 shader files now have properly working texture matrices again.
2071
2072 - FPS and Maya style cameras are now standard cameras with a special animator.
2073 - ISceneNodeAnimator now inherits IEventReceiver
2074 - New method ISceneNodeAnimator::isEventReceiverEnabled, returns false by default
2075 - CCameraSceneNode::OnEvent passes events to animators with enabled event receivers
2076 - ISceneNodeAnimatorCameraFPS and ISceneNodeAnimatorCameraMaya interfaces for changing camera settings at run-time.
2077
2078 - Changed SExposedVideoData to use void* instead of s32. Fixed 64bit portability.
2079
2080 - Added support for front face culling.
2081
2082 - Fix for HLSL shaders in one file.
2083
2084 - Billboard::setColor bug fix by rogerborg.
2085
2086 - Scene node sorting uses squared distances now.
2087
2088 - Enhanced API for hte math functions. Many of them will now return a reference to *this for chained method invocations.
2089
2090 - prevent .x loader to load .xml files.
2091
2092 - AntiAlias support for OSX device.
2093
2094 - Period character handling bug fixed.
2095
2096 - New filesystem methods for filename handling.
2097
2098 - added getVideoModeList and getDesktopResolution support for OSX
2099
2100 - Octree supports tangent meshes now. Some performance improvements for the generation.
2101
2102 - Fix mouse pointer and fullscreen mode problems in OSX.
2103
2104 - Make cube and sphere scene node a mesh scene node (for access to the cube/sphere mesh).
2105
2106 - Support for normal maps in 3ds files. Mem leak fixed. Loading for files with keyframe data fixed.
2107
2108 - BillboardTextSceneNode is now an IBillboardSceneNode and an ITextSceneNode.
2109
2110 - Support for external windows under Linux.
2111
2112 - .X loader bug fixes.
2113
2114 - Better debug visualization for MeshSceneNodes.
2115
2116 - Fixed bug in material serialization when using the NullDriver.
2117
2118 - Fix for Win32 CursorControl::setVisible
2119
2120 - Support for LWO files.
2121
2122 - Support for Collada 1.4 files.
2123
2124 - Better and faster terrain smoothing by Frosty Topaz.
2125
2126 - Fixed a performance bug in ISceneNode constructor reported by izhbq412
2127
2128 - Win32 device now makes the cursor invisible immediately when setVisible(false) is called.
2129
2130 - Command line tool for mesh conversion added.
2131
2132 - Added volume light scene node
2133
2134 - .obj files now won't duplicate vertices unnecessarily. This allows recalculation of smooth normals and other things, and is also faster when rendering. The loading is a little slower now.
2135 They also support normal maps and texture clamping now. Group support added, can be ignored via scene manager attribute scene::OBJ_LOADER_IGNORE_GROUPS.
2136 Normals will be calculated if the file doesn't provide them.
2137
2138 - Better fix for hires timers on dual core machines by RogerBorg
2139
2140 - added Initial Windows Mobile 6 Version.
2141 - Windows Mobile 6 SDK
2142 - Visual Studio 2005
2143
2144 - Added checks to avoid buffer overrun in b3d loader. Enabled normals calculation in all cases, previously it was not done for lightmapped meshes.
2145 Fixed transparency support. Added mipmap creation flag support which might disable mipmap creation too often. Should be checked.
2146
2147 - Burningvideo: MipMap Selection repaired
2148
2149 - renamed private Driver function getTextureSizeFromImageSize to getTextureSizeFromSurfaceSize
2150
2151 - Added collision manager speedup patch by RogerBorg.
2152
2153 - D3D drivers now releases the IImage member from initialization, thus freeing lots of memory. The image is accessible via the driver anyway.
2154
2155 - SDL device character handling enhanced.
2156
2157 - MeshBuffers can now access the elements of the S3DVertex base class in all vertex types directly, instead of using the getVertices() pointer access. This simplifies simple mesh manipulations as it does not require a switch statement over all vertex types.
2158
2159 - More OpenGL renderstate bugs fixed
2160
2161 - GLSL changes for setting arrays. Also allow for only pixel or vertex shader to be set.
2162
2163 - Bugfix for removeChild in AnimatedMeshSceneNode.
2164
2165 - Some bugfixes for Joint handling and skinned meshes. Added getJointCount in IAnimatedMeshSceneNode and isStatic in ISkinnedMesh.
2166
2167 - Added WAL image format support based on the original loader by Murphy McCauley, written for Irrlicht around version 0.7.
2168
2169 - OpenGL RTTs now also support alpha values.
2170
2171 - New method driver->getVendorInfo() to query information about the actual hardware driver.
2172
2173 - Fixed somed CQuake3ShaderSceneNode problems.
2174
2175 - Changed BurningsVideo internal Vertex Format. version changed to 0.39
2176
2177 - SceneManager:
2178 Removed the seperate rendering states for quake3 Shader Scene Nodes.
2179 Nodes are now solid or transparent. ( but still more states are needed )
2180
2181 - GUI:
2182
2183 - Editbox didn't draw children
2184 - Checking IsEnabled is now consistent across all GUI elements
2185 - Move window to front bug fixed.
2186 - Disabling the BMP loader now compiles without the built-in font
2187 - Added setTextAlignment to IGUIComboBox
2188 - Avoid dropping skin pointer which is in use.
2189 - Better warning for fonts without regions (sometimes wrong file is loaded by the user).
2190 - Fixed a bug in CGUISpriteBank which caused a crash when a non-looping animated sprite reached the end of its animation.
2191 - Modal screens no longer flash invisible children when rejecting a focus change.
2192 - Finally added StarSonata patch with table element and TabControl additions. Table is based on MultiColor listbox by Acki, and has loads of changes by CuteAlien.
2193
2194-------------------------------------------
2195Changes in version 1.4.2 (22.9.2008)
2196
2197 - Unified the handling of zwrite enable with transparent materials on all hw accelerated drivers. This means that all transparent materials will now disable ZWrite, ignoring the material flag.
2198 There is a scene manager attribute, though, which will revert this behavior to the usual SMaterial driven way. Simply call
2199 SceneManager->getParameters()->setAttribute(scene::ALLOW_ZWRITE_ON_TRANSPARENT, true) and set the SMaterial flag as desired.
2200
2201 - Some changes for texture matrices in q3 shaders.
2202
2203 - Added BlindSide's irrAllocator patch for proper TextureMatrix release under Win32 with any CRT library.
2204
2205 - Added VC9 project files.
2206
2207 - Added getEmitter for particle system scene nodes.
2208
2209 - Fixed rounding problem in getScreenCoordinatesFrom3DPosition
2210
2211 - Fixed Software renderer color flicker, was a shift bug I believe.
2212
2213 - irrMap fix to make root node always black, by rogerborg.
2214
2215 - Possible core dump fixed in particle system node, by CuteAlien.
2216
2217 - Mem leak fixed in b3d loader.
2218
2219 - Avoid double rendering of child nodes of joints.
2220
2221 - Support for d3d draw2dimage clipping by CuteAlien.
2222
2223 - Fixed an animation transition bug, pointed out by wuallen.
2224
2225 - Fixed the major problem with OpenGL drivers, that claim to be 2.x compatible, but don't offer NPOT support (well, they do, but only in sw rendering...). Now we check for the extension string only.
2226
2227 - Fixed .obj loader bug which inserted vertices in wrong buffers.
2228
2229 - Fixed minor mem leak in Linux device.
2230
2231-------------------------------------------
2232Changes in version 1.4.1 (04 Jun 2008)
2233
2234 - MD3 meshes are movable again.
2235
2236 - New JPG image writer version by Vitek.
2237
2238 - Texture matrix fixes, all methods should now work as expected.
2239
2240 - Some container methods now return the this pointer after member functions have been called on them, in order to allow call chains.
2241
2242 - Some new methods for SColorf access, for uniform API of all colors.
2243
2244 - bug fix for SMaterialLayer equality check. Did only check the TextureMatrix pointers, instead of the matrices.
2245
2246 - New getMesh method for the SceneManager, which takes an IReadFile instead of a filename.
2247
2248 - Support for flags _WIN32 and _WIN64 in addition to WIN32 and WIN64 added, this simplifies usage of Irrlicht headers under MSVC.
2249
2250 - Fixed a crash in GUIMeshViewer
2251
2252 - new string method findLastChar by Halifax
2253
2254 - GUIEditBox got the 1 pixel shift after click fixed.
2255
2256 - Some debug visualization has been fixed for skinned meshes
2257
2258 - Undef PI symbol before declaring core::PI to avoid compilation problems
2259
2260 - SAnimatedMesh now properly returns properties of Meshes[0] if those exist, such that it should be usable in place of an SMesh again.
2261
2262 - Fixed 2d initialisation in opengl and d3d9 driver. This should fix problems with render states mixing up and distrubing, e.g. skin effects.
2263
2264 - Avoid a crash when passing setSkin the current skin
2265
2266
2267 - Fixed current frame calculation for non-looped animations. Bug reported by greenya.
2268
2269 - Fixed bug in CBillboardSceneNode::setColor, reported by rogerborg
2270
2271 - Fixed clipping of menu, toolbar and combo box GUI elements, reported by greenya
2272 - setNotClipped now applies all the way up to the root of the GUI environment, rather than just to the next parent
2273
2274 - Made new scene managers use the original manager's GUIEnvironment, reported by MasterGod
2275
2276 - Fixed IGUICheckBox::setEnabled, reported by Dorth
2277
2278 - Fixed the FollowSpline animator to avoid crashes when only one waypoint is given.
2279
2280 - OpenGL VolumeShadow now uses glPolygonOffset to avoid zbuffer artifacts.
2281
2282 - Fixed meshbuffer corruption in append methods.
2283
2284 - Fixed mem leaks in irrArray.
2285
2286 - Fixed minor bugs in ISceneNode and ISceneManager.
2287
2288 - Fixed the MeshCache handling of GeometryCreator meshes.
2289
2290 - Terrain LOD bugfix.
2291
2292 - Some Collada 1.3 loader enhancements and bug fixes.
2293
2294 - Fixed a bug in CGUISpriteBank which caused a crash when a non-looping animated sprite reached the end of its animation.
2295
2296 - Enhanced the .obj loader with the patch from ryanclark. This allows for recalculation of smoothed normals of the mesh, also should decrease the tri count on some meshes.
2297
2298 - Avoid the global Logger to be destroyed too early.
2299
2300 - Function setbit was renamed to setbit_cond to avoid name clashes.
2301
2302 - Fixed .x animations with multiple references to the same joint from different meshes. Fixed texture path problems.
2303
2304 - Support for Milkshape 1.8 files, also with multiple weights per joint.
2305
2306 - The config file now also supports _IRR_OSX_PLATFORM_ and _IRR_USE_OSX_DEVICE_. This allows to use the Linux device (X11 support) on OSX.
2307
2308 - Avoid terrain scene node crash when heightmap cannot be loaded.
2309
2310 - Speed improvements for WaterSceneNode.
2311
2312 - FlyCircle animator now also works for upvectors (Direction parameter) which are not (0,1,0). Is also faster now, since most calculations are done on init. Thanks to Dorth for working on this.
2313
2314 - The 3ds loader correctly creates a texture matrix when texture tiling properties are found in the file.
2315
2316 - Fix for S3DVertex comparison operators. Used some wrong logic.
2317
2318 - Bugfix getCurrentRenderTargetSize in D3D drivers. Due to signature differences a wrong virtual method was chosen. Thanks to Jiang for finding it.
2319
2320-------------------------------------------
2321Changes in version 1.4 (30 Nov 2007)
2322
2323 - Major API change: All material properties which are available per texture layer (curently texture, texture matrix, texture filters, and texture wrap mode) are separated into a new struct SMaterialLayer. You can access them via the array TextureLayer[] in SMaterial. The texture matrix methods in SMaterial are still alive, and also textures can be accessed via methods in SMaterial now. But still, many places in user code need some update (usually changing material.Textures[i] to material.TextureLayer[i].Texture etc.)
2324
2325 - Major API rewriting for proper const usage. Now, most getter methods are const and so are the larger parameters and return values. Moreover, many methods taking only unsigned numbers now use u32 instead of s32 in order to recognize this limitation from the method's signature.
2326
2327 - the base class for nearly all Irrlicht classes has been renamed from IUnknown to IReferenceCounted
2328
2329 - Fixed Skybox texture orientations. They are now displayed non-flipped. Existing skyboxes have to be changed, though: Exchange left and right texture. Textures from Terragen and other tools can be used directly, now. Quake maps will also need the right/left exchange.
2330
2331 - Added ITexture::isRenderTarget()
2332
2333 - Added STL mesh file format reader and writer.
2334
2335 - Added IMeshManipulator::createMeshWelded which creates a copy of the mesh with similar vertices welded together.
2336
2337 - Irrlicht now has its own file format for static meshes. It is based on xml and has the
2338 extension .irrmesh. Irrlicht is able to write every IMesh to this file format, and of course to
2339 read it back again.
2340
2341 - Irrlicht is now able to write Meshes out into files. Use ISceneManager::createMeshWriter()
2342 to obtain an interface with which you can write out meshes. Currently, an own .irrmesh
2343 file format is supported as well as the COLLADA file format.
2344
2345 - fixed the keyboard autorepeat difference betwenn Linux and Windows. Thanks to denton we now have only KeyPressed events on both systems in case of autorepeat.
2346
2347 - Added several new particle emitters and affectors from IrrSpintz. Also some new getter and setter methods were added.
2348
2349 - D3D transparent materials do not disable zbuffer writing automatically anymore. This has to be done by the user to keep those settings configurable.
2350
2351 - OpenGL texture now also require a regenerateMipmapLevels() after unlocking. This is the same as for d3d devices now.
2352
2353 - Point sprite support in the driver. Point sprites use just one 3d vertex and a size to create a textured billboard on the GPU. This can provide fast particle systems, especially in combination with shaders. The proper particle extension will follow later on as it needs some more refactoring.
2354
2355 - OpenGL 2D drawing accuracy fix by tuXXX
2356
2357 - Added OnResize and getCurrentRenderTargetSize to the software video drivers.
2358
2359 - Added Spot light type for dynamic lights. Note that both position and direction for all dynamic lights are now determined by the LightSceneNode, the SLight attributes are only used for internal purposes.
2360 API change! One can easily work around this change by setting the LightSceneNode's Position and Rotation instead of the SLight's. This change won't provoke a compile error, though, and can hence go unrecognized besides the visual problems.
2361 The lights use a default direction (0,0,-1) which is rotated by the usual scene node transformations and can hence be modified by scene node animators.
2362 A change in the Radius usage can lead to strange artifacts. Just increase the Radius in this case. further handling of Radius is to be discussed.
2363
2364 - Added per pixel fog support for OpenGL.
2365
2366 - Added driver support for user defined clip planes, based on mandrav's patch.
2367 The OpenGL version is more picky about ModelView matrices, so it's best to set the projection plane at the time it is used.
2368
2369 - .obj files now load relative indices correctly. Collada files load textures.
2370
2371 - A new MeshBuffer implementation is publicly available. It supports a shared vertex list for all MeshBuffers, used for MS3D meshes.
2372
2373 - MeshBuffers can recalculate their BoundingBoxes on their own now, no need for MeshManipulators. New append methods help to merge MeshBuffers. take care that the types match!
2374
2375 - The new texture generation mode is working. With ETCF_NO_ALPHA_CHANNEL textures are generated without ALPHA bits reserved.
2376
2377 - D3D9 hardware mipmap updates are re-enabled, problems should be reported.
2378
2379 - In some cases fullscreeen modes under win32 should have a better frame rate now.
2380
2381 - Fixed the hillplane mesh to work with non-quadratic dimensions as well. Changed the interface also, so use a u32 dimension to specify the tilecount now.
2382
2383 - Hires timers are disabled on windows systems with more than one CPU, due to bugs
2384 in the BIOS of many multi-core motherboards. To enable hires timers in your project,
2385 use SetProcessAffinityMask to set to use only one CPU before creating the device.
2386
2387 - OpenGL render targets now the same way up as the other drivers. If you have
2388 written opengl shaders that use render targets then you'll need to change your
2389 texture coordinates accordingly.
2390
2391 - Fixed some OpenGL renderstate stuff. setBasicRenderstate returns with
2392 active texture layer 0. The material renderer must return from OnUnset
2393 with the same active texture layer. The alpha test is disabled and the
2394 texture mode should be GL_MODULATE.
2395
2396 - Fixed CSoftwareTexture2::getOriginalSize, reported by CaptainPants. Added a
2397 new method CSoftwareTexture2::getMaxMipMapSize to return the size of the largest
2398 mipmap, which is used by texelarea instead of getOriginalSize.
2399
2400 - Changed parameter order of addArrowMesh and added default parameters such
2401 that it's enough to set the color (or even just the name).
2402
2403 - Fixed bugs in MY3D and OBJ loader.
2404
2405 - Added IMeshCache::clearUnusedMeshes(). This allows the user to remove
2406 meshes that are sitting in the mesh cache but aren't used by any scene nodes.
2407 This is useful for example when changing levels.
2408
2409 - Added IUnknown::getReferenceCount()
2410
2411 - createDevice now reports errors if the driverType is unknown, previously it
2412 created a window but populated it with a null driver without any warning.
2413
2414 - Fixed a bug in CBillboardTextSceneNode::setText where the old text was not
2415 cleared.
2416
2417 - Changed irrArray::linear_search to use the == operator rather than <
2418 This may be slower in some cases, but it no longer returns false positives
2419 when searching arrays of classes that override the < operator but
2420 !(x<y) && !(y<x) does not necessarily mean x==y (vectors, positions etc).
2421
2422 - Fixed getSize/getOriginalSize method inversion in OpenGL textures.
2423
2424 - Added per texture-layer filter settings, i.e. one can choose to filter
2425 only chosen texture layers. If all layers are set to the same value the
2426 convenience function material.setFlag(EMF_BILINEAR_FILTER, boolean) can be
2427 used, TRILINEAR_FILTER and ANISOTROPIC_FILTER do work, too. In all other
2428 cases material.BilinearFilter[i] (resp. TrilinerFilter[i] or
2429 AnisotropicFilter[i]) shall are to be used.
2430
2431 - Added adjustable Attenuation for dynamic lights. This allows to change the
2432 intensity of a light based on its distance. The default attenuation changed
2433 from (0,1/radius,0) to (1,0,0) which means no effect by distance. Good
2434 values for distance effects simply add small values to the second and third
2435 element.
2436
2437 - Fixed a typo to do with 2nd light vectors in opengl parallax and normal map
2438 renderers.
2439
2440GUI:
2441
2442 - Fixes to menu and listbox (de)serialization, and custom listbox colors by CuteAlien.
2443
2444 - Added EGET_ELEMENT_CLOSED GUI event type. Absorb this event to cancel closing a window.
2445
2446 - Added _IRR_COMPILE_WITH_GUI_ to allow compiling without the GUI.
2447 This is useful if you use another GUI system (ie CEGUI) or are using Irrlicht
2448 inside another window. You will have to supply an external IGUIFont if you wish
2449 to use font scene nodes as there will be no GUI environment available to load fonts.
2450
2451 - Added 7 more symbols to the built-in font and skin.
2452 EGDI_MORE_LEFT, EGDI_MORE_RIGHT, EGDI_MORE_UP, EGDI_MORE_DOWN: "<<" symbols
2453 indicating there is more content in that direction.
2454 EGDI_WINDOW_RESIZE: Window symbol for resizing by clicking the bottom right
2455 corner of a window.
2456 EGDI_EXPAND, EGDI_COLLAPSE: Plus and minus buttons for trees.
2457
2458 - Added IGUISkin::draw2dRectangle, so skins can override the default highlight.
2459
2460 - EGET_ELEMENT_FOCUS_LOST and EGET_ELEMENT_FOCUSED events can now be absorbed
2461 by returning true in OnEvent. Absorbing these events will cancel the focus
2462 change.
2463
2464 - IGUIEnvironment::setFocus and removeFocus now return bools.
2465
2466 - New SEvent.GUIEvent.Element. Points to a second element that is being
2467 used in the event. During a EGET_ELEMENT_FOCUS_LOST event it points
2468 to the element which would like the focus.
2469
2470 - Fixed the default font icons so they have a black border and are not
2471 invisible in default listboxes. Old font tool textures now keep their color
2472 so colorful fonts are possible by editing the font's texture. The colors of
2473 completely transparent areas are no longer kept when generating the texture
2474 from an image. Added builtInFont.bmp for ease of editing.
2475
2476 - IGUIElement changes:
2477
2478 Most elements can now be accessed using the keyboard. Use space and return
2479 to select or deselect, escape to cancel selection (ie while pressing a
2480 button with space or return), and the cursor keys where appropriate.
2481
2482 Added navigation through the GUI using tab and the shift and control keys.
2483 Use these new methods to control tab navigation:
2484 setTabStop - set this to true if the focus will vist the element.
2485 isTabStop - returns true if the focus will visit the element.
2486 setTabOrder - Sets the order of focus within this tab group,
2487 Only one element in each group should have the same TabOrder number.
2488 Set to -1 to add to the end of the group.
2489 setTabGroup - set this to true if the element is a group that contains
2490 other elements, and can be navigated with ctrl+tab/ctrl+shift+tab.
2491 isTabGroup - returns true if the element is a tab group.
2492 getTabGroup - returns the tab group that the element belongs to.
2493 getNextElement - searches for the next element which would be focused
2494 within the element's children, only useful if you are doing your own
2495 custom navigation.
2496
2497 Added isMychild, to check if an element is descended from this one.
2498
2499 Added isPointInside, which is called by getElementFromPoint. Override this
2500 when making non-rectangular elements.
2501
2502 OnEvent no longer absorbs events by default.
2503
2504 Serialize/deserialize now call getter and setter functions, in case people
2505 override these and don't use the internal protected variables.
2506
2507 added getAbsoluteClippingRect, returns the visible area of an element.
2508
2509 - Added IGUISpinBox, by Michael Zeilfelder (CuteAlien).
2510
2511 - IGUIEditBox new methods:
2512 setWordWrap/isWordWrapEnabled, to split words on to the next line.
2513 setMultiLine and isMultiLineEnabled, inserts a newline instead of sending
2514 EGET_EDITBOX_ENTER events.
2515 setPasswordBox/isPasswordBox to use the edit box for password input.
2516 setTextAlignment, to align the text to left, right, top, bottom and centers
2517 setAutoScroll, to enable and disable automatic scrolling with the cursor
2518
2519 - IGUIStaticText new methods setDrawBorder and setTextAlignment.
2520
2521 - IGUIListBox changes:
2522 Added setAutoScrollEnabled and isAutoScrollEnabled, for automatic scrolling
2523 when selecting or adding an item.
2524 Scrollbars are now only visible when the list doesn't fit in the visible area.
2525 You can now type an item's text to select it.
2526
2527 - IGUIScrollBar new methods set/getLargeStep
2528
2529-------------------------------------------
2530Changes in version 1.3.1 (20 Jun 2007)
2531
2532 - Fixed a bug with negative exponents in fast_atof, posted by RVL
2533
2534 - renamed IAnimatedMeshSceneNode::getAbsoluteTransformation to
2535 getMD3TagTransformation to avoid conflicts with
2536 ISceneNode::getAbsoluteTransformation
2537
2538 - Added rect::constrainTo for locking a rectangle inside another without
2539 resizing it
2540
2541 - Moved the OpenGL API functions from COpenGL driver into new extension
2542 handler. Thereby, some renaming took place - the ARB and EXT suffix was
2543 removed. Simply rename the functions in case you use them.
2544
2545 - matrix4 is now a template internally such that also int and double matrices
2546 are possible now.
2547
2548 - CMeshBuffer is a new template replacing all previous SMeshBuffer* classes.
2549 New mesh buffers can be easily implemented based on this code.
2550
2551 - Ogre 1.40 files now also load.
2552
2553 - New filename based methods in the MeshCache.
2554
2555 - CSphereSceneNode is now texture wrapped with sphere mapping by exactly one
2556 texture. Only a small error on the top remained.
2557
2558 - The Sky box scene node now clamps its textures by default (meaning no
2559 more ugly artifacts at the borders).
2560
2561 - Frustum culling fixed by using the fixed classifyPointRelation function.
2562
2563 - Some fixes in the 3d basic structures: plane3d.classifyPointRelation now
2564 correctly returns the relation, it returned the opposite before. Also
2565 renamed existsInterSection to existsIntersection for consistency.
2566 triangle3d.isOnSameSide is now private - it's just a helper class not
2567 intended for further use.
2568
2569 - Added IFileSystem::getFileDir, to get the directory when given a file
2570 name. Submitted by Jeff Myers
2571
2572 - Updated to latest PNG library (1.2.18), fixing a vulnerability.
2573 Also changed some data structures which should make the library 64bit
2574 compatible.
2575
2576 - Changed the external window pointer from s32 to void*. This makes the
2577 mechanism 64bit safe, but also breaks the API. You have to cast to
2578 void* now.
2579
2580 - Moved image scaling algorithms to CImage class and made them public. This
2581 replaces lots of code from the hardware textures. It should also fix the
2582 missing MipMaps in OpenGL if the driver does not support mipmap generation.
2583
2584 - Added support for texture creation flags in OpenGL. This changes some
2585 textures to other color formats than in previous versions.
2586
2587 - MD2 normals fixed.
2588
2589 - Some defines for the platform choice have changed their names and semantics.
2590 E.g. IRR_LINUX is now _IRR_LINUX_PLATFORM_ for os specific things and
2591 _IRR_USE_LINUX_DEVICE_ to choose the original X11 IrrLinux device.
2592
2593 - Added an SDL device for cross-platform window support. Especially useful
2594 for embedded systems and others without hardware acceleration. This device
2595 is mutually exclusive with the other devices and requires linking against
2596 the SDL library.
2597
2598 - Q3 shader crash fix.
2599
2600 - Fixed the too small D3D texture bug.
2601
2602 - The OpenGL texture is internally stored as a CImage now.
2603
2604 - Fixed some Borland compiler problems.
2605
2606 - ShadowVolume init bug fixed.
2607
2608 - MS3D rotation bug fixed.
2609
2610 - setFrameLoop bug fixed.
2611
2612 - Fixed OpenGL's draw2DImage texture inits to avoid texture confusion.
2613
2614 - Fixed getHeight from terrain scene node.
2615
2616 - The FPS counter now works as in previous releases, the accumulating counter
2617 can be enabled by a parameter.
2618
2619 - getType() is now const correct (API Changes)
2620
2621 - Added scissor test to opengl draw2DImage method that ignored clip.
2622
2623 - Fixed a bug in rect::isValid, it was almost always true.
2624
2625 - Fixed wrong particle emission.
2626
2627 - Added LinuxDevice setResizeAble implementation.
2628
2629 - Enumeration values of the ESCENE_NODE_TYPE enum are no longer ints but four
2630 character codes. If you were using them as index previously, this is no longer possible.
2631
2632 - There is now a way to set which scene manager should recieve user input, when working
2633 with multiple scene managers: IrrlichtDevice::setInputReceivingSceneManager().
2634
2635 - ICursorControl now supports setting a reference rectangle.
2636 If this rect is set, the cursor position is not being calculated relative to
2637 the rendering window but to this rect. You can set the rect pointer to 0 to disable
2638 this feature again. This feature is useful when rendering into parts of foreign windows
2639 for example in an editor. See ICursorControl::setReferenceRect() for details.
2640 (Windows only implementation currently)
2641
2642 - It is now possible to clone single scene nodes (ISceneNode::clone()) and to create copies
2643 of a whole scene graph (ISceneManager::createNewSceneManager(cloneContent=true);
2644
2645 - IAttributes now supports a user pointer (void*)
2646
2647 - Added query methods to scene manager: Find Scene nodes by type
2648 getSceneNodesFromType
2649
2650 - Added min and max functions with 3 values: core::min_ and core::max_
2651
2652 - Fixed a crash when using Octtrees caused by unnecessary dropping of meshes when
2653 deserializing the scene node.
2654
2655 - Removed an array::erase from Octtrees and Octtree triangle selector.
2656
2657 - Removed a bug which caused irrlicht to crash when using animated .x files as static meshes.
2658
2659GUI:
2660
2661 - Added EGUI_DEFAULT_FONT for skins, default fonts can now be set for windows, menus, buttons and tooltips.
2662 use IGUISkin::setFont and getFont to use them. Fonts are not serialized with saveGUI yet
2663
2664 - Added EGDC_TOOLTIP_BACKGROUND for setting background color of tooltips.
2665
2666 - Tooltips now appear relative to mouse position, also they do not appear for 500ms.
2667
2668 - Fixed a memory leak when dropping the GUIEnvironment when a tooltip was present.
2669
2670 - Added IGUIStaticText::setDrawBackground and IGUIStaticText::setBackgroundColor.
2671
2672 - Fixed a messagebox focus bug when no 'okay' button was present.
2673
2674 - Added setColor and setScaleImage to GUIImage.
2675
2676 - GUIListBox highlighted area now clips properly.
2677
2678 - added getOSOperator to GUIEnvironment (for clipboard access in elements) and updated CGUIEditBox.
2679
2680 - Can now load/save gui environment from/to an element.
2681
2682 - Most element set functions now have a corresponding get or is function.
2683 (API change) IGUIButton::getUseAlphaChannel is now isAlphaChannelUsed, to fit with other is* functions.
2684
2685 - Fixed a bug with resizing the gui environment when the device is resized
2686
2687 - Modal screens now resize to fit their parent.
2688
2689 - XML bitmap fonts now load textures from the XML file directory rather than the current one.
2690
2691 - Fixed a small bug with click areas in combo boxes.
2692
2693 - Fixed a bug in clear() when an element was hovered or had focus
2694
2695 - Fixed a bug when loading fonts with uppercase letters in the name in case-sensitive filesystems
2696
2697GUI Editor:
2698
2699 - Added cut/copy/paste using clipboard and xml (via memory file). Will have problems in Linux due
2700 to no clipboard support
2701
2702 - Added texture attribute element
2703
2704 - Added CGUIPanel, a container with optional scrollbars. Originally submitted by Asger Feldthaus
2705
2706-------------------------------------------
2707Changes in version 1.3 (15 Mar 2007)
2708
2709- SMaterial structure changed:
2710 - Enable Irrlicht to change TextureAddress Mode (Clamping), for each layer separately
2711 - Added Texture matrices to SMaterial for all texture layers
2712 - Removed the anonymous union/struct access to textures and material flags.
2713 Now, Texture1..4 is removed - use Textures[i] instead
2714 The Flags[x] is replaced by setFlags(x, bool) resp. getFlags(x)
2715
2716- The methods OnPreRender and OnPostRender of ISceneNode have been changed to
2717 OnRegisterSceneNode() and OnAnimate(). Also, they are now called at different
2718 times: OnAnimate is called every frame before anything else, removing the
2719 one-frame-lag Irrlicht suffered until now. To make most of your own scene
2720 nodes work again, it should be enough to rename OnPreRender()
2721 to OnRegisterSceneNode() and OnPostRender() to OnAnimate() in most cases.
2722
2723- ISceneNode::getMaterialCount and getMaterial now use u32 instead of s32. You will also need
2724 to update this in your custom scene nodes.
2725
2726- matrix4 speed enhancement, testing for identity before multiply. faster check for identity
2727 for the positive case using an additional boolean flag.
2728 The internal array M is now private, changing the API. Use mat[x] instead of mat.M[x].
2729 The pointer to M is acquired by mat.pointer(), some methods take a matrix4 reference
2730 instead of a f32*.
2731
2732- Some more suppport for tangent meshes
2733
2734- Several alpha blend fixes in several drivers and methods
2735
2736Font improvements:
2737
2738 - Changed built-in IGUIFont to IGUIFontBitmap and added options for more fonts.
2739 CGUIFont now supports UCS-2 and may span many textures, loads from XML (Unicode support planned)
2740
2741 - Started a font tool for creating the new XML fonts, including generating vector fonts
2742 (currently not backward compatible with old fonts, only works for Win2K+, some bugs still)
2743
2744 - Font interface now supports kerning- kerning pairs, per letter and global kerning widths,
2745 although he internal font only supports global and per-letter.
2746
2747 - added _IRR_COMPILE_WITH_SOFTWARE_ and _IRR_COMPILE_WITH_BURNINGSVIDEO_ to compile config
2748
2749
2750- GUI enhancements:
2751
2752 - GUI Serialization with loadGUI and saveGUI, and serializable custom GUI elements via factories
2753
2754 - Started a GUI Editor as a GUI element factory example (work in progress)
2755
2756 - New IGUIElement functions: isSubElement & setSubElement for child elements created by their parents
2757 (eg. a scrollbar on a list box). Set it if you don't want an element to be serialized
2758
2759 - New GUI event, EGET_ELEMENT_FOCUSED
2760
2761 - GUI environment ELEMENT_FOCUS_LOST event now sets the element as the caller, focus_lost events
2762 are now usually passed to parent elements, so elements now check if they are the caller before
2763 updating (so users can catch focus lost events without them being eaten by the elements)
2764
2765 - Buttons, checkboxes and tab controls now only activate when the mouse is released over them.
2766
2767 - Windows mouse-up events are now caught outside the window, so mouse coords may now be negative.
2768 could cause problems with draggable user windows, as they may now be dragged off screen.
2769
2770 - Elements can now automatically resize to fit their parents, or align themselves to an edge:
2771 setAlignment(left, right, top, bottom) - sets how each edge aligns to its parent,
2772 through EGUI_ALIGNMENT enum
2773 EGUIA_UPPERLEFT - default behavior, aligns to top or left edge
2774 EGUIA_LOWERRIGHT - aligns to the lower or right edge
2775 EGUIA_CENTER - moves relative to the center of its parent
2776 EGUIA_SCALE - uses relative scale
2777
2778 - setMaxSize, setMinSize - sets the maximum and minimum sizes for automatic resizing,
2779 use 0 for no maximum size.
2780
2781 - setRelativePosition now takes a rect<f32> for relative positioning within their parents
2782
2783 - getFileSystem added to the GUI environment
2784
2785 - New IGUISpriteBank, used to hold 2d image data like fonts and GUI icons.
2786 Icons provided by the built-in font are now accessed through the skin's sprite bank.
2787 Users can override the icons by setting a different sprite bank and setting new sprites.
2788
2789 - Skins are now serializable and are loaded/saved with the GUI.
2790
2791 - IGUIStaticText getter/setter functions patch by rogerborg.
2792
2793- added 3d TextSceneNode2. to view a Text in real 3D Space
2794 in fact it is a combination of Billboard & TextSceneNode
2795
2796- Burning Video (the second but only complete software renderer)
2797 - New Compile Config BURNINGVIDEO_RENDERER_ULTRA_FAST
2798 - New Compile Config BURNINGVIDEO_RENDERER_FAST
2799 touching the 20fps border in the demo ( P4 mobile 2Ghz ). 15fps average.
2800 ( Compile config Release Fast-FPU )
2801
2802 - VertexCache for Tansformed & Light Vertices
2803 boost small drawPrimitive Calls ( 2DRectangle, Billboard ) and Real Index Triangles
2804
2805 - Bilinear Dither
2806 - clipping test ( compare instead of generic plane normal )
2807 - support for NOT using vertexcolor
2808 #define SOFTWARE_DRIVER_2_USE_VERTEX_COLOR
2809
2810- added vertex to color to billboard.
2811 shade top & shade down.
2812 to support some static lighting effect on billboards
2813
2814- Implemented line rendering for SoftwareDriver
2815
2816- XMLWriter fix for 32bit wchar_t (esp. for big endian)
2817
2818- updated to latest PNG library
2819
2820- implemented CImagerWriterJpeg::writeImage
2821
2822- The ISceneManager::addCameraSceneNodeFPS() has a new parameter named 'jumpSpeed'
2823 and a Key Map Entry.
2824
2825- added param to IIImageWriteFile::writeImage
2826 control Parameter for the backend ( e.g. jpeg compression level )
2827
2828- addContextMenu: CGUIEnvironment::addContextMenu set the focus on the submenu.
2829
2830- Added IFileSystem::createMemoryReadFile for accessing memory like a file.
2831
2832- Added core::map class submitted by Nastase Catalin (Kat'Oun)
2833
2834- Fix vertex colors for .x and .ms3d, alpha bug in .obj
2835
2836- Fixed 16bit depth screens under Windows.
2837
2838- Implemented getMeshBuffer(SMaterial) for all AnimatedMeshes.
2839 It was returning 0 for all implementations previously. User defined IMesh derivates
2840 will also have to implement it now due to the removed empty implementation.
2841
2842- Added yield() method to IrrlichtDevice which allows to pause the Irrlicht process for
2843 a very short time. This allows other processes to execute without a major
2844 penalty for the Irrlicht application.
2845
2846- Added sleep() methd to IrrlichtDevice, for pausing the Irrlicht process for a longer
2847 amount of time.
2848
2849- Auto-split mesh to 16bit buffers in 3ds loader
2850
2851- 8bit RGB332 image format support
2852
2853- isActive() under Linux now behaves like the Windows variant: True iff window has focus
2854
2855- Fixed(?) the glXGetProcAddress problems with different drivers
2856
2857- B3D changes by Luke:
2858 Texture scaling bugfix, support for alpha blending, new option to normalise weights,
2859 animation code optimization, fixed memory leak
2860
2861- ROUNDING_ERROR is now ROUNDING_ERROR_f32 or ROUNDING_ERROR_f64
2862
2863- Material ZBuffer flag changed to a u32 value
2864 Reason: change ( off or on ) to , off, lequal, equal
2865 Necessary for multi-pass if previous stage has had transparency
2866
2867- DebugDataVisible is now an enum of flags
2868 show normals is supported ( uses the new build in arrowmesh )
2869
2870- New Function: GeometryCreator
2871 addArrowMesh. build a closed cylinder and a cone
2872 used to show normals as debug feature
2873
2874- New Function:
2875 CMeshManipulator::transformMesh(scene::IMesh* mesh, const core::matrix4& m) const
2876 transforms VertexPosition and VertexNormal
2877
2878- BUGFIX: CGUIButton notified Pressed when Mouse was clicked Inside ( correct )
2879 but also left up outside rectangle ( incorrect)
2880
2881- BUGFIX: Octree:getPolys(const scene::SViewFrustum& frustum, SIndexData* idxdata)
2882 was recursive calling invisible children
2883
2884- CFileList: Changed FileListEntry sorting to
2885 a) Directory comes first
2886 b) sorting ignores case
2887 so it feel's more like common browers
2888
2889- added a Texture transform to IVideoDriver::setTransform
2890
2891- quaternion::getmatrix
2892 in fact the getmatrix version is returning the transposed.
2893 i'm quite sure that this is the wrong implementation.
2894 so this should be verified to remove the getmatrix_transposed version...
2895
2896- Quake3 Map Loader:
2897 new loading method
2898 - Bezier Patches with LOD more than 3
2899 - Multiple Meshes, stay compatible with the previous version
2900 - Indexed Triangle List
2901 - initial support for quake3 Shaders and Entities
2902 - Shaders are parsed. When it's possible to resolve a 2 Texture Scheme it's taken
2903 Shaders exist in namespace scene::quake3
2904 - The Example Quake3Map shows how to continue applying the Q3Shaders with SceneNodes
2905 ( for example animmap converts to TextureAnimator.)
2906 TODO: use the Irrlicht Variable Syntax to remove redundant code..
2907
2908- added getVertexPitch() to IMeshBuffer interface
2909
2910- added generic isupper, isspace.. functions to coreutil.h to remove dependencies for ctype.h
2911 ( future: it's possibly to use binary comparison test..)
2912 removed 1000's include of string.h and moved one to irrstring.h
2913 in preparing of complete removing the MSVC.
2914
2915- moved fast_atof.h to the public include
2916 added strtol10 to remove dependencies for stdlib.h
2917 anyway math.h is needed for powf
2918
2919- core::vector3d
2920 added getInterpolated_quadratic.
2921 vector3d<T> getInterpolated_quadratic(const vector3d<T>& v2, const vector3d<T>& v3, const T d) const
2922 // this*(1-d)*(1-d) + 2 * v2 * (1-d) + v3 * d * d;
2923
2924- irrstring: added param start to findLast(T c, s32 start = -1 )
2925 reason: to continue searching reverse on a specific position
2926 (parameter is checked against boundaries )
2927
2928- added operation reciprocal_squareroot to irrmath.
2929 core::reciprocal_squareroot = 1.f / sqrtf ( x )
2930 changed the core::vector3df normalize vector.
2931 specialized templates are not allowed in irrlicht currently, so it's only for f32 for now.
2932 a C function and a NVidia Version are in irrmath.h
2933
2934- add Primitives to CFPSCounter
2935 and changed interpolation to 1500ms instead of 2000ms
2936 and rounding to ceiling..
2937
2938- added Interface setAmbientLight to ISceneManager
2939 it was a Bug, because SceneManager always calls Driver therefore AmbientLight has to be set in SceneManager.
2940
2941- changed GUIFont & FontTool to support kerning ( on a global basis )
2942 very basic mode.. apply an offset for position
2943 useful for example if you want to apply an outline stroke in your favorite
2944 and therefore let the texture grow.
2945 and to correct the border back on drawing, specify the parameter in IGUIFont.
2946 this is quite useful if you want to use more artistic fonts.
2947 default = 0
2948 better kerning would need a seperate coordinate set for each symbol.
2949
2950- changed MD2_FRAME_SHIFT to lower framerate
2951 -> lower IPol
2952 problems can occur if somebody uses hardcoded frame-numbers instead
2953 of Animation name...
2954
2955- changed spelling "frustrum" to "frustum"
2956
2957 -> changed also SViewFrustrum.h to SViewFrustum.h
2958
2959- changed Parameter AutomaticCulling from bool to enum E_CULLING_TYPE
2960 to support more than two culling modes.
2961
2962 added Frustum culling ( it's a copy & paste from the octree )
2963 added initial bounding sphere
2964 used for culling point lights..
2965
2966- Added getSystemMemory and getProcessorSpeedMHz for Windows and Linux to the OSOperator, submitted by Vitek.
2967
2968-------------------------------------------
2969Changes in version 1.2 (29 Nov 2006)
2970
2971- Added Solaris/Sparc port (basically some compiler define statements). Irrlicht and the examples should compile out-of-the-box on Suns with the usual Makefiles and gnumake.
2972
2973- Added texture matrix support for hardware accelerated drivers. This allows for efficient texture coord manipulations for complete meshes at once.
2974
2975- Multisampling with OpenGL under Linux added
2976
2977- Non-power-of-two textures are left unscaled if the driver supports such textures.
2978
2979- new draw2DImage method that speeds up drawing many quads from the same texture. Font drawing is improved by this under OpenGL.
2980
2981- TGA files are now always correctly flipped and loaded if compressed. All PNG color formats are now supported, including correct alpha handling.
2982
2983- 3ds mesh loader fix in texture loading, now loads some textures that were not loaded before, but might introduce problems with very recent files. OGRE mesh loader bugfixes and lightmap support. Several B3d mesh loader updates. Obj and mtl loader enhancements.
2984
2985- A new compile flag (IRR_OPENGL_USE_EXTPOINTER) allows Irrlicht to either use OpenGL extension function pointers or direct OpenGL calls.
2986
2987- OpenGL now uses frame buffer objects for render targets larger than the screen, supplied by Mandrav
2988
2989- Split ESNRP_LIGHT_AND_CAMERA passes into ESNRP_LIGHT and ESNRP_CAMERA to fix a problem with lights being rendered before cameras in OpenGL (thanks again to Vitek for finding this). ESNRP_LIGHT_AND_CAMERA is now deprecated.
2990
2991- Fixed many OpenGL render state problems which were related to wrong texture states. The textures are now enabled and disabled by the material renderers in OnSetMaterial. Also enabled the texture state cache which helps preventing texture changes just as the one for D3Dx. Thanks to hey_i_am_real for some good hints on where the problem was located.
2992
2993- Added compile flag _IRR_COMPILE_WITH_X11_ which is by default enabled. Disabling the flag removes all X11 dependencies from Irrlicht and allows for a headless Linux Irrlicht server - added by request :-)
2994
2995- Win32 OpenGL driver tries to use the requested bpp size.
2996
2997- Default texture format is now A8R8G8B8 if not explicitly specified. This fixes some color artifacts with lightmaps. Bugfix submitted by hey_i_am_real.
2998
2999- In OnPostRender all transformations were taken as relative and multiplied with the root transformation matrix every time due to a wrong check for the real root node. This shoudl increase render performance for scenes with lots of (invisible) nodes.
3000
3001- Added correct list copy constructor.
3002
3003- Color selection dialog added.
3004
3005- New GUI skin "Burning Skin".
3006 it's a black & white skin. look elegant on true-color.
3007 and looks ok on 1-Bit ( e.g. no vertex color in burnings video )
3008
3009- GUIStatic text is correctly grayed out if disabled.
3010
3011- Added getHeight method for terrain node submitted by Spintz. It calculates the height from the base mesh instead of requiring ray casts and collision detection and is much faster.
3012
3013- New methods core::lerp to linearly interpolate two floats and SColor.getLuminance to calculate luminance of RGB color.
3014
3015- MAJOR API CHANGE:
3016 Fixed matrix access methods mat(x,y). These were previously said to be (row,column) but actually were (column, row). This lead to some confusion and made their use quite tricky. Irrlicht code is updated for the new method, but applications will silently fail now (i.e. compile without errors, but not working as expected).
3017
3018- Update to zlib-1.2.3
3019
3020- Fixed vertex alpha handling in DirectX drivers.
3021
3022- Image writers fixed and working (at least for little endian systems).
3023
3024- VSync under Linux fixed and correctly working.
3025
3026- New os::Byteswap::byteswap methods which can be used for byteswapping (endianess correction) in mesh loaders and image loaders.
3027
3028- New video driver feature to check for multitexture feature.
3029
3030- Direct3D drivers update the devicelost variable if reseeting failed with this return code.
3031
3032- VideoModeList under Linux is correctly filled now. No glX calls are made if GLX extension is not found - only software drivers are available then. RandR extension can be enabled with a new compile flag in IrrCompileConfig.h, either instead of XF86VidMode or in addition.
3033
3034- Big Endian support for MS3D loader.
3035
3036- Apfelbaum software renderer: basic mipmap support (per triangle), switch for using w-buffer instad z-buffer ( default on )
3037
3038- Better FPU support: Changed various fpu-call's in whole project (main reason to use faster float to int conversion on x86. ( fistp ))
3039
3040- changed Visual Studio 7.1 vcproj project config "Release Fast FPU" to __fastcall in /QIfist
3041
3042- CGUIFont added True Alpha Font Support. (currently it's a little hack, but it'a good starting point. Fonts are back compatible. To use the new feature make first pixel half transparent in the font file.)
3043
3044- Scolor: replaced s16 color with u16 color, replaced s32 color with u32 color to get rid of unnecessary arithmetic shift
3045
3046- Colorconverter: X8R8G8B8toA1R5G5B5, set Alpha High, minor: A1R5G5B5toA8R8G8B8 changed if (a) to conditional set
3047
3048- CImage: added boxfilter (weigthed average), (generic, slow)
3049
3050- The scene manager now sets an ambient light color when calling ISceneManager::drawAll().
3051 You can influence this by calling ISceneManager::setAmbientLight(). That light color
3052 is also stored when saving .irr files via ISceneManager::saveScene().
3053
3054- Loaded COLLADA files which contained only one single mesh now behave like all the
3055 other loaded meshes, and the #meshname workaround has been removed.
3056
3057- File lists are now sorted.
3058
3059- Dynamically checking the OpenGL version now instead of at compile time to call the supported methods of the executing machine, not that one of the compile host. This should fix the extension check and the automatic mipmap update.
3060
3061- Fixed vertex alpha handling of 2D images with OpenGL.
3062
3063- Default depth buffer under Windows now 24bit to avoid zbuffer fighting.
3064
3065- Fixed light count in OpenGL.
3066
3067- Particle emitters can now be enabled/disabled via a new method.
3068
3069- Sky dome is rotatable just like the sky box.
3070
3071- Rotation animator can be applied to several nodes now, before it only rotated the first one it was applied to.
3072
3073- Support for drawing other vertex primitive lists such as triangle strips.
3074
3075- Default specular color is white again, thus simply enabling shininess is enough to get speculars.
3076
3077- Some .x loader and animator improvements. Vertex color support.
3078
3079- isActive now also work under Linux.
3080
3081-------------------------------------------
3082
3083Changes in version 1.1 (06 Aug 2006)
3084
3085- New example to show some features of the .irr format
3086
3087- Added support for making screenshots in all video drivers and a general
3088 possibility to save any IImage to several file formats.
3089 Some image writers are not yet implemented. As a testcase screenshots
3090 are now available in the demo by pressing F9.
3091 This code was contributed by Travis Vitek.
3092
3093- Changed EAMTS_OCT to EAMT_OCT.
3094
3095- Improved .3ds and .obj file importers.
3096
3097- Added support for .b3d (Blitz Basic) submitted by Luke Hoschke and
3098 .pak (Quake archive) files submitted by skreamz.
3099
3100- Added sky dome implementation contributed by Anders la Cour-Harbo (alc).
3101
3102- In addition to the Cube scene node (formerly test scene node) there is now also a sphere scene node available,
3103 with an adjustable amount of polygons. Use ISceneManager::addSphereSceneNode to create it.
3104 Thx to Alfaz93 for making available his code on which this node is based on.
3105 Note that both nodes now use default material settings, e.g. lighting is enabled by default.
3106
3107- Fixed Linux keyhandling for many keys.
3108
3109- The aspect ratio has been inverted in the matrix, which means when setting a new aspect ratio
3110 for cameras, set it to screen.width/screen.height now instead of screen.height/screen.width
3111 as previously.
3112
3113- added support for reading/importing binary .x files.
3114
3115- .ms3d and .x normals are now correctly transformed in animations, bounding
3116 boxes are slightly better transformed, but not yet correct.
3117
3118- Added possibility to load and save Irrlicht scenes to and from xml files via
3119 ISceneManager::saveScene and ISceneManager::loadScene. Note that not all
3120 scene nodes are supported yet, but most features should already work.
3121
3122- Bounding box of the Skybox corrected (set to null)
3123
3124- The SMaterial structure now supports 4 textures. (Currently ignored by the renderers and their materials.)
3125
3126- Test scene node renamed to CubeSceneNode.
3127
3128- Added scene node animator factories. This is the same as scene node
3129 factories, but for scene node animators.
3130
3131- Added scene node factories. This is an interface making it possible to dynamicly
3132 create scene nodes. To be able to add custom scene nodes to Irrlicht and
3133 to make it possible for the scene manager to save and load those external scene nodes, simply
3134 implement this interface and register it in you scene manager via ISceneManager::
3135 registerSceneNodeFactory
3136
3137- Introduced IMeshSceneNode interface with the possibility to set readonly materials to make
3138 it possible to use the mesh materials directly instead of overriding them. In this way
3139 it is possible to change the materials of a mesh causing all mesh scene nodes
3140 referencing this mesh to change, too.
3141
3142- Added possibility to load OGRE .mesh files directly, thanks to Christian Stehno who contributed
3143 a loader for this.
3144
3145- Merged with Irrlicht 1.0 for MacOS
3146
3147- Added a method getType() to ISceneNodeAnimator.
3148
3149- There is now a system to serialize and deserialize attributes of scene nodes. In this way
3150 it should be quite simple to to expose the attributes of your scene node for scripting
3151 languages, editors, debuggers or xml serialization purposes.
3152
3153- Irrlicht containers and strings now have allocators, making it possible to
3154 use them across .dll boundaries.
3155
3156- Changed the name of scene nodes from wide character to to char* for speed and memory reasons.
3157
3158- Renamed IStringParameter class to IAttributes and enhanced it to be able to
3159 serialize its content into and from xml.
3160
3161- Textures now have a method getName().
3162
3163- Added the methods getTextureCount() and getTextureByIndex() to IVideoDriver.
3164
3165- Most classes now derive virtually from IUnknown.
3166
3167-------------------------------------------
3168Changes in version 1.0 (19 Apr 2006)
3169
3170- Irrlicht now will load d3d 9 dlls (like d3dx9_27.dll) manually if needed. If you compile irrlicht
3171 with an SDK which needs one of these dlls, irrlicht will now also start up on a pc without
3172 these Dlls installed. Note that now these dlls will also only be loaded if your application
3173 uses shaders. If the dlls are missing, shader support will be disabled.
3174
3175- The Apfelbaum Software Software Renderer now works in 32 bit and is capable of rendering dynamic
3176 lighting as well as doing alpha channel blending.
3177
3178- Added support for the Code::Blocks IDE (http://www.codeblocks.org)
3179
3180- It is now possible to draw temporarily to foreign windows, by specifying a window handle when
3181 calling IVideoDriver::endScene(). Note: This does not work in fullscreen mode and is not
3182 implemented for all devices (only for D3D8, D3D9, Software1 and Software2, and only for Windows).
3183 In addition, you can also specify the source rectangle to present.
3184
3185- Picking is now more accurate and also works with view ports and better with orthogonal cameras.
3186
3187- Scene Nodes now have an additional flag, IsDebugObject. This denotes if a
3188 scene node is a debug object. Debug objects have some special properties,
3189 for example they can be easily excluded
3190 from collision detection, picking or from serialization, etc.
3191
3192- Scene Nodes now have the possibility to return their type using
3193 virtual ESCENE_NODE_TYPE getType().
3194
3195- Improved support for orthogonal rendering: Skyboxes and billboards can be
3196 used with orthogonal cameras now, too.
3197
3198- Fixed a bug in collision
3199
3200- Fixed some marshalling bugs in Irrlicht.NET
3201
3202- Some fixes to make gcc 4 happy.
3203
3204- Fixed a bug which caused the engine to crash when trying to use the
3205 apfelbaum software rasterizer with linux
3206
3207- Several improvements to Irrlicht.NET, for example string output for vectors, viewfrustrum access
3208 for cameras, drawing of bounding boxes, support for orthogonal cameras.
3209
3210- Updated DMF importer to support new DeleD functionalities, solid materials will now be
3211 shown correctly again in Irrlicht. Thanks to Salvatore "Il Buzzo".
3212
3213- Added a method to change the return value of ICameraSceneNode::isOrthogonal
3214
3215- Improved md2 animation playback
3216
3217- Fixed the REFLECTION_2_LAYER materials. Now also works for OpenGL. Had to change the parameters
3218 of this material (for all drivers), the reflection is now at texture 2 and the diffuse map at
3219 texture 1. This was the other way round before.
3220
3221- Added examples for csharp, visualbasic, delphi.net and boo.
3222
3223- Several other small bug fixes.
3224
3225-------------------------------------------------------------------------------------
3226Changes in version 0.14.0 (30 November 2005)
3227
3228- Irrlicht now includes another video driver type. Together with D3D8, D3D9, OpenGL, the NULL
3229 driver and the Software Renderer, an Irrlicht user now has the decision between 6 renderers:
3230 The new included renderer is The Apfelbaum Software Renderer, an alternative software renderer
3231 for Irrlicht. Basically it can be described as the Irrlicht Software renderer on steroids.
3232 It rasterizes 3D geometry perfectly: It is able to perform correct 3d clipping, perspective
3233 correct texture mapping, perspective correct color mapping, and renders sub pixel correct,
3234 sub texel correct primitives. In addition, it does bilinear texel filtering and supports more
3235 materials than the EDT_SOFTWARE driver. In short: It looks a lot like the already available hardware
3236 accelerated drivers, but without hardware. :) This renderer has been written entirely by
3237 Thomas Alten, thanks a lot for this huge contribution.
3238
3239- Irrlicht now supports anisotropic filtering. Use the SMaterial::AnisotropicFilter member or
3240 EMF_ANISOTROPIC_FILTER flag to enable it. I implemented this for all 3 hardware accelerated
3241 drivers: D3D8, D3D9 and OpenGL.
3242
3243- Irrlicht now supports the recently released new microsoft compiler. Irrlicht versions compiled
3244 with older verions of this compiler can now also be used with the new one, which wasn't possible
3245 previously because of a name mangeling issue.
3246
3247- All 2D drawing functions can now be used to draw into textures (render targets). This also
3248 means for example that the whole GUI environment can be rendered into textures.
3249
3250- Irrlicht.NET now supports shaders.
3251
3252- Irrlicht now loads all textures in 32 bit mode by default. (Previously this
3253 was 16bit). To change this behavior back again, use
3254 device->getVideoDriver()->setTextureCreationFlag(ETCF_ALWAYS_16_BIT, true);
3255
3256- Irrlicht.NET now supports Particlesystems and Shaders. Thanks to a code
3257 contribution by Delight.
3258
3259- Fixed a bug in the mipmap generation. Now mipmaps are not that blurry
3260 anymore and the rendering quality has been improved a lot.
3261
3262- It is now possible to assign a userData int to callback functions of shaders. In this way it
3263 it easily possible to use the same callback method for multiple materials and distinguish
3264 between them during the call.
3265
3266- Directional lights are now supported in the OpenGL and D3D drivers. To switch on directional
3267 lighting, set the light type to ELT_DIRECTIONAL in the SLight structure.
3268
3269- Fixed several bugs in the GLSL implementation. Thanks to Michael Zoech for
3270 sending in his improvements.
3271
3272- For the windows version of Irrlicht, the engine now displays an icon in the
3273 program window, if there is one available in the start path with the name "irr.ico".
3274
3275- It is now possible to use images with alpha channels on buttons. Use the new
3276 IGUIButton::setUseAlphaChannel() method to enable this feature.
3277
3278- The scene manager has a new method getSceneNodeFromName() which finds a scene node by its name.
3279
3280- It is now also possible to attach scene nodes to joints/bones of sceletal animated .x files.
3281 (Using IAnimatedMesh->getXJointNode() ). This was previously only possible with milkshape models.
3282
3283- Billboards now draw their bounding box when debugdata is set to visible for them.
3284
3285- Lights now draw their bounding box and radius when debugdata is set to visible for them.
3286
3287- Upgraded to irrXML 1.2. Thanks to some hints by Patrik Mller, irrXML, the XML parser used
3288 by the Irrlicht Engine now has CDATA support and some other useful new features.
3289
3290- Support for VisualC++ (Express) 2005. Added a project file and a IrrlichtPropsVC2005.vsprops
3291 file which sets the no deprecate define and adds needed libraries.
3292
3293- Fixed size of the bounding box of billboards.
3294
3295- Billboards are now also culled by default, increasing rendering speed a bit.
3296
3297- Fixed a bug which caused the .ms3d loader to crash when loading .ms3d files
3298 without materials. Thanks to sdi2000 for posting this.
3299
3300- Fixed a bug causing the possibility to crash when destructing the scene
3301 graph or a scene node with children.
3302
3303- Fixed some bugs which caused invalid RTT operations, when for example the
3304 render target texture was smaller than the screen.
3305
3306- Fixed a heavy bug in Irrlicht.NET causing lots of memory leaks when drawing text.
3307
3308- Fixed a bug in the attachement of scene nodes to animated X files.
3309
3310- Fixed a bug in the .NET Vector3D addition operator.
3311
3312- Updated to Salvatore Russo's DMF loader version 1.3. Notes by him:
3313 This version just adds some new functionalities. First of all Alpha Blended Textures are now
3314 supported by DeleD as well as loader. Because of some trouble with Irrlicht 0.12.0 TGA loading,
3315 TGA textures are always flipped so I've added a parameter so that you can choose to
3316 flip or not all TGA textures coords, this way:
3317 SceneManager->getParameters()->setParameter(scene::DMF_FLIP_ALPHA_TEXTURES, true);
3318 you can also set material transparent reference value by setting:
3319 SceneManager->getParameters()->setParameter(scene::DMF_ALPHA_CHANNEL_REF, 0.01);
3320 you can use every value beetween 0 and 1, but to respect DeleD rapresentation
3321 0.01 is OK, just a note, if you set 0, it's just like you set 0.5, this means
3322 that each pixel found corresponding to a position in alpha map that has a value<127
3323 won't be drawn.
3324
3325- Fixed a small bug in the line breaking algorithm.
3326
3327- Fixed a bug which caused the engine to display strange artifact pixels when drawing 2D images
3328 like text in screens which odd resolutions.
3329
3330- Slightly changed the interface of createDevice and createDeviceEx(): the version parameter
3331 now is a char* instead of wchar_t*. Also, IrrlichtDevice::getVersion() now returns char*
3332 instead of wchar_t*.
3333
3334- Fixed some parts in the source to make Irrlicht compile in Linux 64.
3335
3336- Renamed the EDT_DIRECTX8, EDT_DIRECTX9, _IRR_COMPILE_WITH_DIRECTX_8_ and
3337 _IRR_COMPILE_WITH_DIRECTX_8_ enumeration literals to EDT_DIRECT3D8, EDT_DIRECT3D9,
3338 _IRR_COMPILE_WITH_DIRECT3D_8_ and _IRR_COMPILE_WITH_DIRECT3D_9_. You might need to
3339 update your code and compilation settings with these new names.
3340
3341- Added the remaining '..' directory in the linux version of the file list
3342
3343- Updated to a faster version of the TerrainSceneNode by Spintz. Much thanks again!
3344
3345- Fixed a bug causing billboards to be displayed upside down.
3346
3347- The D3D drivers now won't crash anymore when they get feeded with nullpointers as shader constants.
3348
3349- Irrlicht now identifies the Linux platform it runs on and returns a more detailed string
3350 when calling getOperationSystemVersion().
3351
3352- Fixed some bugs in several collision test methods thanks to Spintz.
3353
3354- Updated font tool
3355
3356- Made the list::iterator constructor which took a sklistnode as parameter private,
3357 to make Irrlicht compatible with the Errlicht interface.
3358
3359-------------------------------------------------------------------------------------
3360Changes in version 0.12.0 (24 August 2005)
3361
3362- It is now possible to have multiple scene managers. Use ISceneManager::createNewSceneManager()
3363 to create a new one. This can be used to easily draw and/or store two independent scenes at
3364 the same time.
3365
3366- Irrlicht now supports GLSL, the OpenGL Shading Language, which means Irrlicht now
3367 supports 14 shading modes/languages: ARB Vertex Programs, ARB Pixel Programs, HLSL,
3368 GLSL 100, GLSL 110VS1.1, VS2.0, VS3.0, PS1.1, PS1.2, PS1.3, PS1.4, PS2.0, PS3.0.
3369 Lots of thanks go to William Finlayson for implementing this and making available his code
3370 to be used in Irrlicht.
3371
3372- Added support for pixel shader 3.0 and vertex shader 3.0.
3373
3374- Irrlicht now supports detail maps, use EMT_DETAIL_MAP for this. The new terrain scene node
3375 tutorial shows how to use detail maps.
3376
3377- Again some changes have been made in Irrlicht.NET. For example it is now a little bit more memory
3378 friendly, I removed several bugs and made the terrain scene node, realtime shadows and key codes
3379 available.
3380 In addition, I extended the .net example application a lot, just try it out.
3381
3382- I've worked around a heavy bug in the microsoft compiler which caused lots of bugs in Irrlicht.NET.
3383 They are all fixed now. See http://support.microsoft.com/default.aspx?kbid=823071 for details.
3384
3385- The timer of the engine has been enhanced a lot, which maybe needs a little change in your
3386 project if you are upgrading from an older version of Irrlicht. It is now possible
3387 to set the speed of the timer, a new time value, and to start and stop it. Also, all
3388 calls to getTime() will now return the same value within the same drawing frame.
3389 The timer will only advance when ITimer::tick() is called. IrrlichtDevice::run() will
3390 call this method automaticly, but if you aren't using this method, and you are wondering
3391 why your scene is not animating anymore, just call Device->getTimer()->tick() before
3392 drawing your scene. If you need the system time, not the new virtual time,
3393 use ITimer::getRealTime().
3394
3395- The material EMT_TRANSPARENT_ALPHA_CHANNEL now is using a configurable alpha ref value.
3396 The default value is 127, which means people who are using this material for drawing
3397 things like grass, trees etc will get nice results automaticly when changing to 0.12.0.
3398 To change to a different alpha ref value, just change SMaterial::MaterialTypeParam value.
3399 See EMT_TRANSPARENT_ALPHA_CHANNEL for details.
3400 Also, this fixes two bugs:
3401 - A bug causing the D3D versions not looking like the OpenGL version.
3402 - A second bug which caused the texture to look like disappearing when looking at from far away.
3403
3404- Upgraded to a new dmf loader version by Salvatore Russo which is able to use a texture path
3405 and material directories. Set DMF_USE_MATERIALS_DIRS and DMF_TEXTURE_PATH using the
3406 ISceneManager::getParameters() method.
3407
3408- It is now possible to set a separate scale for the second texture coordinate set in the
3409 terrain scene node when calling ITerrainSceneNode::scaleTexture(). This is useful when using
3410 detail maps on the terrain.
3411
3412- Added a new material flag named EMF_NORMALIZE_NORMALS. You can enable this if you need
3413 to scale a dynamic lighted model. Usually, its normals will get scaled too then and it
3414 will get darker. If you enable the EMF_NORMALIZE_NORMALS flag, the normals will be
3415 normalized again.
3416
3417- When loading Milkshape .ms3d files, Irrlicht also loads materials and tries to apply the textures.
3418 Thanks to atomice for this patch.
3419
3420- The ISceneManager::addCameraSceneNodeFPS() has a new parameter named 'noVerticalMovement' with which
3421 it is possible to disable vertical movement of the FPS camera and make the camera behave just like
3422 in most ego shooters today.
3423
3424- Made Irrlicht 64 bit compatible, removing some 32 bit only constructs. However, I wasn't able to
3425 test it out extensively. If you are compiling Irrlicht for a 64 bit windows environment and get
3426 a linker problem, try playerdark's solution:
3427 "The linker settings are so that no machine is specified in the drop down field, instead,
3428 the command line option /MACHINE:x86 is set manually which interferes with the 64 bit linker
3429 of course. Removing that from the 64 bit version (and replacing it with the drop down selection
3430 in the 32 bit version for that matter) fixed the linker problem."
3431
3432- There is now a IrrlichtDevice::postEventFromUser() method available, to make it possible to
3433 post key or mouse input events to the engine if you are using an own input library for
3434 example for doing joystick input.
3435
3436- The GUI Environment now has an own basic RTTI system, and all IGUIElement derived classes
3437 have a method named getType(). This is needed for the .NET wrapper but will be used
3438 later for serializing and deserializing.
3439 If you wrote your own GUIElements, you need to set the type for your element as first parameter
3440 in the constructor of IGUIElement. For own (=unknown) elements, simply use EGUIET_ELEMENT.
3441
3442- Thanks to William Finlayson, Irrlicht now also supports RTT (render to texture) when
3443 rendering using OpenGL.
3444
3445- Thanks to William Finlayson, the EMT_REFLECTION_2_LAYER is now implemented in the
3446 OpenGL version of Irrlicht, too.
3447
3448- There is now a mesh cache interface available. With this, is is possible to get access to
3449 all loaded meshes, and to remove them to free memory. You can get access to the cache
3450 using ISceneManager::getMeshCache(). Please note that the addMesh() method of ISceneManager
3451 now is now longer available, you can find it now in the IMeshCache interface.
3452
3453- The VideoDriver now has a method for clearing the zbuffer at any time: IVideoDriver::clearZBuffer().
3454 With this, it is for example easily possible to overlay two scenes.
3455
3456- Fixed a bug which caused Irrlicht to crash when loading grayscale jpeg files.
3457
3458- Somebody sent me an .x file (tank_human1_crashes_irrlicht.zip) which caused Irrlicht to crash.
3459 It seems I've lost that mail, but maybe you are reading this: It's fixed now. :)
3460
3461- Fixed a bug which caused the diffuse maps of lightmaps to disappear under certain circumstances
3462 in OpenGL.
3463
3464- Its now possible to make IGUIStaticText draw its background.
3465
3466- Removed the first two default parameters from
3467 IGPUProgrammingServices::addShaderMaterialFromFiles() to prevent SWIG
3468 to create non compilable wrapper code.
3469
3470- Fixed a small bug which caused the terrain scene node to be culled incorrectly.
3471
3472- Changed the names the driver return (now "OpenGL 1.5", "Direct3D 9.0" and "Direct3D 8.1")
3473
3474- Added a new macro _IRR_DEBUG_BREAK_IF which is now used instead of the _asm int 3 break points in
3475 debug mode.
3476
3477- Fixed a bug were the software renderer didn't clip 2d rectangles. This effect was visible for
3478 example when using list boxes, selecting an entry at the end an scrolling up so that it wasn't
3479 visible anymore.
3480
3481- There is now a new gui event available (named EGET_COMBO_BOX_CHANGED) which will be
3482 sent when the selected item in a combo box has been changed. Finally.
3483
3484- Fixed a Problem which caused an empty window to be created when a rendering device
3485 could not be initialized under special circumstances. Thanks to Sascha Plumhoff for
3486 the bug report.
3487
3488- Fixed a bug with the FileList in Linux, reported by DrAnonymous and fixed by William Finlayson.
3489
3490- Fixed some bad documentation bugs.
3491
3492- The XWindow handle is now exposed too, via IVideoDriver::getExposedVideoData().
3493
3494-------------------------------------------------------------------------------------
3495Changes in version 0.11.0 (08 July 2005)
3496
3497- Antialiasing is now supported by Irrlicht in the D3D8 and D3D9 renderer. To switch
3498 it on, use createDeviceEx() and set SIrrlichtCreationParameters::AntiAlias to true.
3499
3500- Irrlicht.NET can now run inside a pre created Windows.Form window.
3501
3502- I'm no longer providing a Visual Studio 7.0 project/solution file for the Irrlicht
3503 Engine sourcecode, only 7.1 and 6.0 are supported. If you are using Visual Studio 7.0,
3504 just open the .dsp file for Visual Studio 6.0, it will be converted automaticly.
3505
3506- Irrlicht.NET includes now all basic GUI Elements and can capture GUI events. There are
3507 still some features missing, but it is already enough to do simple things like showing
3508 message boxes, displaying images, getting input strings, etc.
3509
3510- Improved the .NET documentation a bit.
3511
3512- There is a full implemented ISceneCollisionManager now available in Irrlicht.NET.
3513
3514- The Linux OpenGL renderer now supports mip mapping.
3515
3516- It is now possible to compile Irrlicht as shared lib in Linux. To do this, go into the source
3517 folder and run 'make sharedlib'. This should create a libIrrlicht.so.0.11.0 file in
3518 lib/Linux. To install it in /usr/local/lib, you can run 'make install'.
3519
3520- The drawing of the GUI system has been refactored and a lot of redundant code has
3521 been removed.
3522
3523- The new method IVideoDriver::draw2DRectangle() is able to draw rectangles not only
3524 filled with a single color, but with a gradient from four colors. This is implemented
3525 in all drivers except the Software driver which still uses one color for this method.
3526
3527- It is now possible to customize the GUI system's skin a lot more: Simply implement your
3528 own IGUISkin interface and implement the draw..() methods.
3529
3530- There are now two build-in skins available: Windows Classic and Windows Metallic. The
3531 default skin is now Windows Metallic, if you want to change back to the old skin, use the
3532 following code:
3533 gui::IGUISkin* newskin = environment->createSkin(gui::EGST_WINDOWS_CLASSIC);
3534 environment->setSkin(newskin);
3535 newskin->drop();
3536
3537- Added improved keyboard input handling for the Linux version of Irrlicht, thanks to
3538 Fabien Coutant for the fix.
3539
3540- Fixed a bug in the Linux OpenGLDriver which caused to load a wrong OpenGL extension
3541 and made multitexturing look quite strange. Thanks to hybrid for spotting out that
3542 bug.
3543
3544- COLLADA file loading now works the same like the loading of other meshes: Just
3545 call ISceneManager::getMesh("yourfile") and display it using for example
3546 ISceneManager::addAnimatedMesh(yourLoadedMesh);
3547 To make it possible to create instances from meshes, lights and cameras in COLLADA
3548 files again as in irrlicht 0.10, just enable the collada instance creating mode:
3549 SceneManager->getParameters()->setParameter(COLLADA_CREATE_SCENE_INSTANCES, true);
3550
3551- Added lots of useful methods to the IStringParameters class. It is now possible to
3552 set not only strings but also boolean, integer and float values as parameters.
3553- Fixed a bug with the TRANSPARENT_ALPHA_CHANNEL materials in all renderers to make them
3554 work more as expected: They didn't write to the zbuffer. If you are using this
3555 material and you don't want the new setting, just set the ZWriteEnable flag in the
3556 SMaterial structure of your transparent material to false. Thanks to Fabien to
3557 point this out.
3558
3559- There are now some new defines making it possible to use system installed libs instead of
3560 the ones which come with Irrlicht: _IRR_USE_NON_SYSTEM_JPEG_LIB_,
3561 _IRR_USE_NON_SYSTEM_LIB_PNG_ and _IRR_USE_NON_SYSTEM_ZLIB_, which are defined by default
3562 in the file IrrCompileConfig.h
3563
3564- Renamed ISceneManager::getStringParameters() to ISceneManager::getParameters()
3565- Changed the define _IRR_D3D_SHADER_DEBUGGING to _IRR_D3D_NO_SHADER_DEBUGGING to be
3566 able to make it defined by default and to let it be included in the doxygen documentation.
3567
3568- The SceneManager now does not do any culling tests for cameras, lights and skyboxes.
3569
3570- Added a transformBoxEx() method to matrix4 which transforms a bounding box more accurate.
3571
3572- Small edit box copy & paste bug fixed thanks to Fish HF
3573
3574- Fixed a bug which caused the engine to read windows messages when embedded in
3575 a custom win32 control when called IrrlichtDevice::setResizeAble(). Thanks for
3576 Duncan Mac Leod to find that bug.
3577
3578- Fixed a bug in the HLSL renderer which caused Irrlicht to crash, if no vertex shader
3579 was specified. Thanks to mightypanda for reporting this.
3580
3581- Fixed a bug in the normal map generation thanks to jox. Parallax mapping and
3582 normalmapping now even look a lot better because of this. ;)
3583
3584- Updated to irrXML 1.1:
3585 - The XML parser is now also able to parse embedded text correctly when it is shorter than
3586 2 characters.
3587 - The XML parser now treats whitespace quite smart and doesn't report it when it is
3588 obviously used for formatting the xml file. (Text won't be reported when it only contains
3589 whitespace and is shorter than 3 characters)
3590 - The XML parser won't crash anymore when the xml file is malformed and an attribute has
3591 an opening but no closing attribute.
3592 - Removed a documentation which claimed that the xml parser doesn't work as the xml standard
3593 when replacing special characters, which wasn't true.
3594
3595-------------------------------------------------------------------------------------
3596Changes in version 0.10.0 (26 May 2005)
3597
3598- The engine is now able to use parallax mapping. It's implemented for D3D9, D3D8 and OpenGL.
3599 The perPixelLighing tutorial shows how to use it. Thanks go to Terry Welsh who wrote
3600 the 'Parallax Mapping with Offset Limiting'-paper on which the Irrlicht implementation
3601 is based and who allowed me to use his texture for use in the example.
3602
3603- Added render to texture support. Currently, only the D3D9, D3D8 and the software renderer
3604 are able to use this feature. There is a new example, showing how to render scenes into
3605 a texture.
3606
3607- Irrlicht now can load .png textures. There is also a new compile configuration
3608 define to exclude the png loading option: _IRR_COMPILE_WITH_LIBPNG_. Thanks to
3609 rt who originally wrote the png loader and who allowed me to use and modify his code
3610 and place it under the Irrlicht Engine license.
3611
3612- Added support for COLLADA files. COLLADA is an open Digital Asset Exchange Schema for the
3613 interactive 3D industry. There are exporters and importers for this format available
3614 for most of the big 3d packages at http://collada.org. Irrlicht can import COLLADA files
3615 by using the ISceneManager::getMesh() method. As COLLADA need not contain only one single mesh
3616 but multiple meshes and a whole scene setup with lights, cameras and mesh instances,
3617 this loader sets up a scene as described by the COLLADA file instead of loading
3618 and returning one mesh. The returned mesh is just a dummy object. However, if the
3619 COLLADA file does not include any <instance> tags, only meshes will be loaded by the
3620 engine and no scene nodes should be created. Meshes included in
3621 the scene will be added into the scene manager with the following naming scheme:
3622 path/to/file/file.dea#meshname. The loading of such meshes is logged.
3623 Currently, this loader is able to create meshes (made of only polygons), lights,
3624 and cameras. Materials and animations are currently not supported but this will
3625 change with future releases.
3626
3627- Added Delgine DeleD .dmf mesh loading support. I simply added Salvatore Russo's .dmf loader to
3628 Irrlicht, and changed some parts of it. Thanks to Salvatore for his work and for allowing
3629 me to use his code in Irrlicht and put it under Irrlicht's license.
3630
3631- Specular highlights are now finally usable the engine. To activate, simply set the shininess
3632 of a scene node to a value other than 0: sceneNode->getMaterial(0).Shininess = 20.0f;
3633 You can also change the color of the highlights using
3634 sceneNode->getMaterial(0).SpecularColor.set(255,255,255,255);. The specular color of the
3635 dynamic lights will influence the highlight color, too, but they are set to a useful
3636 value by default when creating the light. This feature is currently only available in
3637 the D3D drivers.
3638
3639- Added a new material type: EMT_TRANSPARENT_ALPHA_CHANNEL_REF. This draws a pixel of the
3640 material only when the alpha channel has a value greater than 128. It is ideal for drawing
3641 for example leafes of plants and does not use alpha blending, so it is a lot faster than
3642 EMT_TRANSPARENT_ALPHA_CHANNEL.
3643
3644- There is now a createDeviceEx() method with which it is possible to create an Irrlicht Engine
3645 device into an already existing window. This currently only works in Windows.
3646 This method will be extended in the future with other options.
3647
3648- Irrlicht.NET has been extended with ports of the SceneNodeAnimators, TriangleSelectors
3649 the FileSystem and Font drawing. Also the documentation of it has been improved a lot.
3650
3651- There are two new tutorials/examples available. One demonstrates how to use render to texture
3652 feature, the other one shows how to run Irrlicht inside a precreated Win32 window/widget.
3653 This means there are now 17 examples available in the SDK.
3654
3655- The software renderer now renders 3d geometry transparent when its material is
3656 somewhat transparent.
3657
3658- The XML Parser has been enhanced. Several small bugs have been fixed and there are some
3659 new features: The parser can now read ASCII, UTF-8, UTF-16 and UTF-32 (both little and
3660 big endian) files, and return the parsed string data in one selectable format from the
3661 same list. In addition, it is now completely independent from Irrlicht. If you wish to
3662 use the parser without the engine, take a look at the newly created project at
3663 http://irrxml.sourceforge.net.
3664
3665- Upgraded to DirectX Exporter Mod 1.3.1
3666
3667- Upgraded dev-cpp project file to Dev-C++ 4.9.9.2. Removed dependency to zlib and
3668 jpeglib for devcpp, the necessary .c files are now simply included in the project.
3669
3670- Renamed the VisualStudio and DevCpp sub directories in the SDK to Win32-gcc,
3671 Win32-VisualStudio.
3672
3673- Fixed a bug in irrXML causing it to replace xml characters wrongly sometimes.
3674
3675- The C++ decorations at createDevice() have been added again, because lots of people
3676 started to mix the gcc and the microsoft .DLL and got confused why the thing crashed
3677 at random positions.
3678
3679- Moved heapsink and heapsort into the core namespace.
3680
3681- Updated to My3D version 3.15
3682
3683- Fixed the wrongly drawn alpha channel material in OpenGL driver and a problem with the
3684 VertexAlpha material in the same driver.
3685
3686- Implemented multipass rendering in the OCTTree scene node now too. This means that octtrees can
3687 now contain transparent materials as well.
3688
3689- Improved string comparison speed, especially when comparing with pointer to char or w_char,
3690 no more temporary strings are being constructed now. In addition, there are some new
3691 string comparison methods in this class.
3692
3693- Added string::replace() method.
3694
3695- Added string::trim() method.
3696
3697- Addes string::erase() method.
3698
3699- Fixed a bug in array which caused data corruption if an element which already inside the
3700 the array was pushed_back. Thanks to vox for reporting this and to provide a solutin
3701
3702- Added ISceneManager::addMesh() method.
3703
3704- Added IMeshManipulator::recalculateNormals(IMeshBuffer*) method.
3705
3706- The file array.h has been renamed to irrArray.h
3707
3708- Due to a bug, Irrlicht 0.9 didn't cull the scene nodes anymore which resulted in a huge
3709 performance loss. This is fixed now.
3710
3711- After lots releases ignoring the 'make the fps camera smoother request', it is now
3712 finally integrated.
3713
3714- Removed audiere dependency and the mp3 file, reeducing SDK download size.
3715
3716- A bug was fixed causing the binding of the wrong fragment program sometimes in OpenGL.
3717
3718- Lots of internal filenames have been renamed. All CVideo* files have been renamed to
3719 fit the other name conventions, CD3D9Driver.h into CD3D9Driver.h for example.
3720
3721- The IMaterialRenderer interface now has the new method getRenderCapability() which
3722 returns if the material is able to be rendererd with all settings on current hardware.
3723
3724- Added IMeshManipulator::setVertexColors();
3725
3726- Added float color reading support in the 3DS loader.
3727
3728- video::EVDF_BILINEAR_FILER renamed to EVDF_BILINEAR_FILTER
3729
3730- core::equals function added.
3731
3732- fixed a small bug in fast_atof thanks to jox
3733
3734- Added a method ICamera::isOrthogonal() which is being used by
3735 ISceneCollisionManager::getRayFromScreenCoordinates(), thanks to a bug report and fix by
3736 jox in this thread: http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=6243
3737
3738- Added some fixes to the GUI environment to make the parent and child pointers be more
3739 consistent as suggested by jox in this thread: http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=6220
3740
3741- Fixed a bug which caused the ambient light not to be reset after a window resize in D3D8 and 9.
3742 Thanks to jox for this bug report and fix.
3743
3744- vector3df equals method added.
3745
3746- added SColorf::getInterpolated() method
3747
3748- Moved ITextSceneNode interface to include folder.
3749
3750- Fixed a small bug in the My3DLoader which failed sometimes finding the right textures.
3751
3752- Fixed bounding box problem with meshes without joints in .X file loader, thanks to
3753 jox. (http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=6669)
3754
3755- Fixed IFileSystem::getWorkingDirectory in Linux version.
3756 (http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=6678)
3757
3758-------------------------------------------------------------------------------------
3759Changes in version 0.9 (28 Mar 2005)
3760
3761- There is now a 100% working terrain renderer available. The old buggy and unfinished terrain
3762 scene node has been replaced by a new TerrainSceneNode which is based on Spintz's
3763 GeoMipMapSceneNode and Soconnes terrain renderer. Lots of thanks for their work on
3764 this and that they allowed it to be modified and integrated into Irrlicht.
3765
3766- It is now possible for a scene node to draw itself in multiple passes. This means it can
3767 register itself for multiple render passes (E_SCENE_NODE_RENDER_PASS) and during rendering
3768 it can query the current render pass using ISceneManager::getSceneNodeRenderPass(). With
3769 this, SceneNodes can contain solid and transparent materials at the same time and will be
3770 rendered in the correct order from now on.
3771 The IAnimatedMeshSceneNode and the IMeshSceneNode implement this feature, so it is now
3772 possible to create for example cars with transparent windows without the need of a separate
3773 scene node. Because of this change, all render time enumeration values have been renamed.
3774
3775- Irrlicht is now able to load OCT files directly. OCT files
3776 can be created with Paul Nette's Radiosity Processor from http://www.fluidstudios.com
3777 or exported from Blender with Murphy McCauley's exporter. This exporter can be found
3778 in the directory \exporters\OCTTools of the Irrlicht SDK or from his homepage
3779 http://www.constantthought.com/project/OCTTools. A lot of thanks go to Murphy McCauley
3780 for this work on this and his permission to include his OCTTools into Irrlicht.
3781
3782- Irrlicht is now able to load Cartography shop 4 (.csm) files directly. A lot of
3783 thanks go to Saurav Mohapatra for this work on this and his permission to adapt and
3784 include his IrrCSM library into Irrlicht. If you are using .csm files, please note that
3785 you'll have to set the path of the textures before loading meshes. You can do this using
3786 SceneManager->getStringParameters()->setParameter(scene::CSM_TEXTURE_PATH,
3787 "path/to/your/textures");. The original loader can be obtained from
3788 http://www.geocities.com/standard_template/index.html
3789
3790- Irrlicht is now able to load Pulsar LMTools (.lmts) files directly because it now
3791 integrates a modified version of Jonas Petersen's lmts loader in version 1.5 (from
3792 http://development.mindfloaters.de/). Lots of thanks go to him for creating this
3793 loader and giving his permission to add it to Irrlicht. If you are using this loader,
3794 please note that you can set the path of the textures before loading .lmts files.
3795 You can do this using SceneManager->getStringParameters()->setParameter(
3796 scene::LMTS_TEXTURE_PATH, "path/to/your/textures");
3797
3798- Irrlicht is now able to load my3D files directly. The My3DTools 3.12 loader by
3799 Zhuck Dimitry was (a bit modified and) integrated into the engine. Lots of thanks
3800 go to him for his work and for giving his permission to do that. Newer versions
3801 of this loader can be found at http://my3dproject.nm.ru. The exporters for this
3802 file format have also been added into the \exporters directory of the SDK.
3803
3804- To be able to replace built-in meshloaders with newer external versions without the
3805 need of recompiling the engine, now mesh loaders which are added to the engine using
3806 ISceneManager::addExternalMeshLoader() are prefered over built-in mesh loaders.
3807 Thanks to for his suggestion of this.
3808
3809- D3D8 and D3D9 support for dev-cpp has been improved. If you are using Dev-Cpp and
3810 a DirectX-Devpack for recompiling the engine, just add
3811 -DIRR_COMPILE_WITH_DX9_DEV_PACK to your compiler
3812 settings and something like -ld3dx9 -ld3dx8 to the linker settings and
3813 press 'compile'.
3814
3815- The SceneManager now contains an interface for storing and exchanging parameters.
3816 ISceneManager::getStringParameters() returns IStringParameters, which can be used for
3817 example by extensions like external mesh loaders to set and read independent parameters.
3818 This is also currently used by the newly built in CMS, LMTS and MY3D loader: It is possible to
3819 set a value 'CSM_TexturePath', 'LMTS_TexturePath' or 'MY3D_TexturePath' to let them know
3820 the path of the textures.
3821
3822- IAnimatedMeshSceneNode now has two new methods for being able to have more influcence
3823 on the animation playback: It is now possible to set the playback mode to looped or
3824 non looped with IAnimatedMeshSceneNode::setLoopMode() and it is possible to set
3825 a callback interface which will be called when animation playback has finished
3826 using IAnimatedMeshSceneNode::setAnimationEndCallback(). Thanks to Electron for his
3827 suggestion for this addition.
3828
3829- The software renderer has a new triangle renderer specialized on disabled zread and write.
3830 This means that skyboxes are now rendered in the correct order when using the software
3831 renderer.
3832
3833- Multitexturing and other extensions in Linux are now turned on by default. There is a new
3834 #define in the file IrrCompileConfig.h for disabling this again: LINUX_OPENGL_USE_EXTENSIONS
3835
3836- There is now a EET_USER_EVENT user event type for making it possible to send custom
3837 events through the system.
3838
3839- The setTarget()-method of the FPSCameraSceneNode now is finally correctly implemented.
3840
3841- Changing parents of scene nodes is now much safer. The parent member of a scene node now is
3842 set to 0 in all cases and should never point to invalid data when rearranging the scene node
3843 tree. In addition, there is now a getParent() method in the ISceneNode class.
3844
3845- Debug breakpoints using "_asm int 3" are now only being used when in debug mode and
3846 using Micosoft's compiler. Now more exotic compilers like BorlandC++ will like
3847 Irrlicht better because of this.
3848
3849- Updated zlib version to 1.2.2
3850
3851- An implementation of 3D triangle clipping in the software renderer has been started. It
3852 is not 100% ready, but it is a beginning. This means now for version 0.9, that there are
3853 not that much artifact triangles drawn anymore. But this means also that drawing is
3854 a lot faster and that triangles clipped at the border of the screen will disappear
3855 too fast. If anyone wants to finish the drawClippedIndexedTriangleListT() method
3856 in the CSoftwareDriver class, he is welcome :)
3857
3858- There is a new parameter in the IVideoDriver::createImageFromData() which causes the
3859 image to be able to own foreign memory.
3860
3861- A renderstate setting has been fixed which caused to disable mip maps on wrong geometry
3862 when there was other geometry which had no mip maps. At least this bug doesn't appear
3863 on my hardware any more, I hope this means the problem it is now fixed.
3864
3865- A bug in the D3D version of the stencil shadows has been fixed thanks to Murphy. Sometimes
3866 you could see a small shadow similar to the the real shadow in the scene. This should now
3867 be fixed.
3868
3869- Irrlicht can now draw non filled concyclic reqular 2d polyons like triangles, tetragons,
3870 pentagons, hexagons, heptagons, octagons, enneagons, decagons, hendecagons, dodecagon and
3871 triskaidecagons. And circles. Yes, I was a little bit bored. Christian Lins made a
3872 suggestion to add 2D circle drawing support to Irrlicht, and I did this, but also added
3873 support for drawing these figures using the same method. Check out
3874 IVideoDriver::draw2DPolygon().
3875
3876- Removed a memory leak when creating hlsl pixel shaders.
3877
3878- I've made varoius updates to the documentation and moved to doxygen 1.4
3879
3880- Fixed a bug in the xml reader which caused it to crash when reading empty xml files.
3881
3882- Removed the buggy bsp tree scene node from the engine.
3883
3884- Tweaked some settings with some GUI elements.
3885
3886- ISceneNode::getAbsolutePosition now should be way faster.
3887
3888- Applied a fix by William Finlayson to the opengl stencil shadow drawing code which
3889 fixes several bugs.
3890
3891- There is now a min_ and max_ template function available in the core namespace.
3892
3893- Added some bugfixes to MayaCameraSceneNode by jox. An even more improved version can
3894 be found at http://development.mindfloaters.de/Downloads.12.0.html.
3895
3896- core::array now has a push_front method.
3897
3898- core::array now has an insert method. (Thanks to jox)
3899
3900- IrrlichtDevice now has a getEventReceiver() method.
3901
3902- Fixed a mouse wheel - mouse coordinates bug thanks to a bug report and fix by jox.
3903
3904- Changed the first parameter in IGUIContextMenu::addItem(wchar_t* text, ...) to const.
3905 Thanks to jox.. again. :)
3906
3907- Fixed ignore path bug in zip file reader thanks to Pr3t3nd3r. It is now possible
3908 to use zip files with the complete path to the files from the archive.
3909
3910- Fixed matrix4::rotateVect method after a suggestion by several users. (I think Electron,
3911 Pr3t3nd3r, Jox) Thanks all :)
3912
3913- Fixed a bug in CGUIEditbox that enables you to write more characters than the max set
3914 limit, thanks to Rush for the bug report and fix.
3915
3916- Added getAngleTrig() method to vector2d as suggested by Pr3t3nd3r, thanks!
3917
3918- After a suggestion by schick, plane3d<T> now stores the normal vector first, and then
3919 the distance to the origin.
3920
3921- A bug was fixed which caused 2D elements to be drawn with a second texture set in OpenGL
3922 mode when 3D geometry with >1 textures has been rendered before. This effect has often
3923 been reported as darkened 2D gui in the forum.
3924
3925- A bug in IrrCompileConfig prevented users to be able to recompile irrlicht with D3D9
3926 with gcc. This is now fixed, thanks to Jedive.
3927
3928- The project setup for Dev-C++ is now nicer. Added lots of folders and cleaned up the
3929 whole setup a little bit with this.
3930
3931- Fixed a small bug in CGUIScrollbar reported by Klaus Niederkrueger.
3932
3933- The Checkbox rect is now clipped correctly, thanks to jox for that bug report.
3934
3935- The debug names of all scene nodes and GUI elements are now set correctly.
3936
3937- Applied a patch making it possible to compile Irrlicht without OpenGL in Linux.
3938
3939- core::rect::clipAgainst was fixed thanks to a bug report and correction by Jox.
3940
3941-------------------------------------------------------------------------------------
3942Changes in version 0.8 (19 Feb 2005)
3943
3944- Irrlicht now supports HLSL. This is possible using the new
3945 IGPUProgrammingServices::addHighLevelShaderMaterial() methods. Also, methods for setting high
3946 level shader constants have been added.
3947
3948- Irrlicht.NET now supports events and cursor control. This means now you can read mouse
3949 and keyboard input from .NET projects like C# and VB.net too.
3950
3951- There are three new built in materials for doing normal/bump mapping available:
3952 EMT_NORMAL_MAP_SOLID, EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR and
3953 EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA. If the hardware does not
3954 support these, the materials will fall back to their base materials. To be able to
3955 use these materials, there is the new vertex type 'S3DVertexTangents', the material
3956 does not work with any other vertex types. There are some new methods to create meshes
3957 with this vertex type (IMeshManipulator::createMeshWithTangents()).
3958
3959- A new example/tutorial (11.PerPixelLighting) shows how to use per pixel lighting
3960 in your applications.
3961
3962- The software renderer now works in Linux, too.
3963
3964- Irrlicht now has a built-in normal map generator. It creates on the fly 32 and 16 bit
3965 normal maps from height maps (IVideoDriver::makeNormalMapTexture). As most other things
3966 in Irrlicht, the generator does not depend on D3D, D3DX or OpenGL.
3967
3968- Added shader debugging capabilities to Irrlicht. If _IRR_D3D_SHADER_DEBUGGING is
3969 defined in IrrCompileConfig.h (commented out by default), it is now possible to
3970 debug all D3D9 shaders in VisualStudio. All shaders (which have been generated in memory
3971 or read from archives for example) will be emitted into a temporary file for this purpose.
3972 To debug your shaders, choose Debug->Direct3D->StartWithDirect3DDebugging in Visual Studio,
3973 and for every shader a file named 'irr_dbg_shader_%%.vsh' or 'irr_dbg_shader_%%.psh'
3974 will be created. Drag'n'drop the file you want to debug into visual studio. That's it.
3975 You can now set breakpoints and watch registers etc. This works both with ASM, HLSL,
3976 pixel and vertex shaders.
3977 Note that the engine will run in D3D REF for this, which is a lot slower than HAL.
3978
3979- Support for compressed .tga texture loading added. (Support from 0.4.1 was buggy)
3980 Thanks to neojzs for posting his improvement.
3981
3982- Support for 32 bit .bmp texture loading added.
3983
3984- Global particles are now possible. Use IParticleSystem::setParticlesAreGlobal()
3985 to switch between global and local particles. A demonstration of this can be seen in the
3986 new tutorial (11.SpecialFX2).
3987
3988- It is now possible to let IGUIImages draw themselves using the alpha channel of the texture
3989 they show. Use IGUIImage::setUseAlphaChannel() for this.
3990
3991- ITexture now has a method for rebuilding the mip map levels: regenerateMipMapLevels().
3992 This is useful for example after locking and modifying the texture.
3993
3994- Gravity acceleration speed in CollisionResponseAnimator was changed thanks to a suggestion
3995 by Morrog. The accelerationPerSecond value has been removed beacause of this, you
3996 can now control everything just with the gravity vector. Note that the gravity value
3997 must now be a little bit smaller to achieve the same effect as before.
3998
3999- Fixed a problem with several material renderers which weren't able to update their states
4000 at the right time sometimes. A new method OnRender() will be called every time the
4001 material is actually used.
4002
4003- Adjusted all tutorials to fit some interface changes.
4004
4005- Changed the opengl shader of tutorial 10 to fit the d3d shaders. The now look the same.
4006
4007- The MeshManipulator has a new method createMeshWithTangents() which creates a mesh
4008 with normals, tangents and binormals from any mesh.
4009
4010- Wrong 2D alpha channel renderstates have been set when using D3D9 and 8. This has been fixed now.
4011
4012- When loading 32 bit images with an alpha channel and storing them internally as 16 bit, the
4013 alpha channel got lost. This is now fixed, the remaining one bit alpha channel is now
4014 stored correctly.
4015
4016- There is a new overloaded IGUIEnvironment::addImage method, which creates an image directly with
4017 a texture as parameter, adjusting its size to the original size of the texture.
4018
4019- A small bug in rect<T>::isValid() has been fixed, thanks to jox.
4020
4021- Fixed a bug in D3D8, D3D9 and OpenGL, which caused Materials be set and unset with an unequal
4022 amount when mixing 3d with 2d grafics or stencil buffer shadows.
4023
4024- If you are recompiling the whole engine with Visual Studio 6 (which means
4025 Irrlicht.dll, NOT the application which is using Irrlicht), DirectX9 support is disabled
4026 now by default, because Microsoft stopped support for DX9 on VS6 in December
4027 2004. You can reenable this by uncommenting the new define at the bottom of
4028 IrrCompileConfig.h, if you have an old SDK for example.
4029
4030- The mixed fvf and vertex shader system in D3D8 caused a slight issue in Irrlicht ending up
4031 in really messed up render states sometimes. This is now fixed.
4032
4033- A major bug with the OpenGL renderer which occured on some OpenGL implementations
4034 has been removed thanks to a bugfix by Murphy and a great report and some investigations
4035 by ElectroDruid.
4036
4037- Sorting transparent scene nodes was broken in all previous versions of Irrlicht. This
4038 didn't attract a lot attention because most users used the ADD_COLOR transparencies for which
4039 the sorting is not relevant. Thanks to Morrog and mmm76, sorting now is right.
4040- After the application window is resized, getViewport() no longer returns viewport as the
4041 first time the window has been created.
4042
4043- The draw primitive functions are no longer wrongly checking the maximum primitive count with
4044 the vertex amount value. Thanks to Spintz for the bug report.
4045
4046- Template materials in X files just like exported in the panda exporter are now
4047 supported, thanks to JoeWright.
4048
4049- Changed the stringc typedef slightly to make it work with people not using
4050 namespace irr. Thanks to schick.
4051
4052- Refactored the MeshManipulator code, which in some cases now uses template methods for performing
4053 calculations on different vertex types.
4054
4055- Fixed an interface problem with newer versions of libJPEG.
4056 Thanks to Fabien Coutant and Simon Barner for some help and clues into the right direction.
4057 Was not able to add system specific zlib/jpeglib support due to issues on
4058 some strange systems/users and a lack of time, sorry.
4059
4060- Typo in plane3d and triangle3d: method isFrontFacting renamed to isFrontFacing.
4061
4062-------------------------------------------------------------------------------------
4063Changes in version 0.7.1: (26 Sep 2004)
4064
4065- Fixed some bugs which prevented the engine to compile with gcc 3.4.1.
4066
4067- Fixed a problem with the OpenGL driver, which caused the renderstates not to be reset correctly
4068 when drawing scene nodes with reflective materials.
4069
4070- Fixed error in Irrlicht's software mip map generation, which caused that some mipmap levels
4071 looked strange. This fix was found by jox, the hardcore bug fixer,
4072 so many thanks go to him. Again. :)
4073
4074- Disabled hardware mip map generation in D3D9 again, because it seems to cause problems on
4075 some hardware. I don't have any hardware where this problem occurs, but I hope this helps.
4076
4077- Fixed a small bug in fast_atof submitted in the forum by da_dude.
4078
4079- Fixed string operator + after a bug report by osre and a fix suggestion by jox.
4080
4081- IEventReceiver now has a virtual destructor for the people who needed it.
4082
4083- 3DS-Loader patched due to some suggestions of Daniel Azkona Coya.
4084
4085-------------------------------------------------------------------------------------
4086Changes in version 0.7: (11 Sep 2004)
4087
4088- The first version of Irrlicht.NET is included in this release. It is a managed C++
4089 wrapper .DLL which makes the most important features of the engine available for all
4090 .NET languages. The wrapper is incomplete, but it can already be used.
4091 You can find the documentation for this .DLL in the compiled help file doc\IrrlichtNET.chm.
4092 There are also two very basic examples available, which show how to use Irrlicht.NET
4093 from C# and VisualBasic.
4094
4095- Low level vertex and pixel shader programming is now possible. There are
4096 now some methods with wich you can write GPU programs in vertex/pixel shader assembler
4097 using Direct3D 8 and 9 and in ARB vertex and fragment program assembler for OpenGL.
4098 You can use the IGPUProgrammingServices interface which can be reached by
4099 IVideoDriver->getGPUProgrammingServices() for this. The new material types you can create
4100 with this can be combined with all other already existing material types.
4101 For example, it is possible to create a new material which uses a vertex shader to
4102 calculate texture coordinates and diffuse colors, and let this be rendered by the built in
4103 material video::EMT_TRANSPARENT_ADD_COLOR.
4104 Support for high level programming languages like GLSL or HLSL is planned for the
4105 following releases. Also note that you won't be able to use all techniques shaders offer with
4106 Irrlicht, due to its current high level abstraction of the 3D APIs. For example, the engine
4107 does not expose vertex streams or vertex buffers currently.
4108
4109- There is a new tutorial showing how to use shaders with the engine. In addition, all
4110 old tutorials have been rewritten and adapted. For example, the hello world
4111 tutorial now also shows how to set up visual studio .NET to use it with
4112 the engine.
4113
4114- Hardware mip map level generation of textures is now supported when using D3D9.
4115
4116- Internal pointers and data of the video drivers can now be exposed for experienced users with
4117 VideoDriver::getExposedVideoData(). For example, you can get a pointer to the IDirect3DDevice9
4118 interface and the HWND window handle, if the engine is running with D3D9.
4119
4120- The createDevice() function has a new additional parameter: bool vsync. With this, it is now
4121 possible to enable or disable the waiting for the vertical retrace period. This is implemented
4122 in D3D9, D3D8, and the Windows OpenGL driver only, the software driver will ignore this flag.
4123
4124- The engine now behaves like in the documentation: irr::createDevice() returns 0, if
4125 the desired driver could not be initialized.
4126
4127- There is a new SceneNode available: The ITextSceneNode is able to display 2D text at a
4128 position in 3D space. Use ISceneManager::addTextSceneNode() to create one.
4129
4130- Finally now all VideoDrivers have a draw2DLine() implementation, thanks to some additions sent in
4131 by Vash TheStampede.
4132
4133- Applied some changes to the compilation configuration, so that it should now
4134 be easier to use the engine with XBOX projects. Thanks to MattyBoy for sending
4135 in some clues for this.
4136
4137- Some improvements for the linux version of the engine: The NULL device is finally fully operational with Linux
4138 too, and also all examples and even the techdemo compile and run with this OS.
4139
4140- The default field of view in the cameras of the irrlicht engine was a little bit
4141 extreme, so I changed it now from core::PI / 3.5f to core::PI / 2.5f.
4142
4143- Added a new draw2DImage method for partially draw a 2d Texture, as sent in by zola with
4144 implementations for OpenGL, D3D8 and D3D9. Software implementation is missing.
4145
4146- The string class is now able to convert integer values into a string or append it as string
4147 to itself.
4148
4149- Added a getDriverType() method to the IVideoDriver interface.
4150
4151- Added a getTransform() method to the IVideoDriver interface.
4152
4153- The EMT_TRANSPARENT_ALPHA_CHANNEL material in OpenGL is now implemented.
4154
4155- The integrated XML Parser now works better with different text file formats. (ASCII, UFT-16,..)
4156
4157- IGUIEdit Box now feels more like a windows editbox, thanks to some changes by Jox
4158
4159- Added a new method to IVideoDriver: createImageFromData as suggested by Oliver Klems.
4160
4161- Fixed a the EMT_TRANSPARENT_ALPHA_CHANNEL problem in D3D8 and D3D9 due to a suggestion by Jox.
4162
4163- Added 3 methods created by zola to the quaternion class: fromAngleAxis(), toEuler() and
4164 operator*(vector3df&).
4165
4166- A bug in a matrix multiplication operator was fixed.
4167
4168- Changed visual studio project files to version 7.1, but provided 7.0 project files
4169 for people with that version.
4170
4171- Added SceneNodeAnimatorRotation rotation fix as posted by warui
4172
4173- Added normalization fix to vector2d and 3d. Warui suggested a fix like that in the forum.
4174 The one I made has the same result, but is a little bit faster.
4175
4176- Fixed some problems with the drawStencilShadow() method in the OpenGL implementation of the
4177 IVideoDriver interface after some suggestions by Nicholas Bray.
4178
4179- Added IGUIButton::setPressed() and isPressed().
4180
4181- Fixed checkPrimitiveCount() bug in NullDevice.
4182
4183- Applied jox's matrix4::getRotationDegrees() fix, many thanks for posting this!
4184
4185- Changed aabbox3d::getExtend() to getExtent().
4186
4187- Changed IXMLReader::isEmtpyElement() to isEmptyElement()
4188
4189- Fixed a bug in CSceneManager::getSceneNodeFromId() which caused the engine to crash sometimes.
4190
4191- Fixed a bug in CGUISkin::setSize reported by REAPER. This method never worked before.
4192
4193- Improved texture mapping and normals of the TestSceneNode, thanks go again to Jox.
4194
4195- ScrollBar is now posting mousewheel events, thanks go to REAPER to post this bug and a fix for it.
4196
4197- Added - operator to vector2d and vector3d, thanks to calimero
4198
4199- Fixed a bug in vector2d::getAngle() and vector2d::rotateBy() thanks to Jox.
4200
4201- Fixed a bug in quaternion::set(f32 x, f32 y, f32 z) thanks again to Jox.
4202
4203- Fixed a bug in list::insert_before and list::insert_after, reported by Haddock.
4204
4205- Fixed a bug in XML Parser which caused a seqfault on linux. Thanks for G.o.D reporting this problem.
4206
4207- EDriverType enumeration renamed to E_DRIVER_TYPE
4208
4209- SceneNodeRenderTime enumeration renamed to E_SCENE_NODE_RENDER_PASS
4210
4211-------------------------------------------------------------------------------------
4212Changes in version 0.6: (09 Mar 2004)
4213
4214- Irrlicht now includes its own XML parser. It provides forward-only, read-only
4215 access to a stream of non validated XML data. It can read everywhere Irrlicht can,
4216 also in compressed .zip-Files for example. Use IFileSystem::createXMLReader() to
4217 use it.
4218
4219- Like the new XMLReader, there is also a IXMLWriter available for making it easier
4220 to write xml files.
4221
4222- There is a new tutorial available in the SDK. It is for more advanced users, and
4223 shows how to create a 3d model viewer with the engine easily. It shows how to
4224 use menus, tabcontrols, edit-, message- and sky boxes.
4225 The resulting program can also be used as tool, to check if the engine
4226 loads exported 3d models correctly.
4227
4228- Again, there are some new GUI widgets available: A ComboBox, a ToolBar, a PushButton
4229 and an ImageButton. The last two are simply the old IGUIButton, but it is now able
4230 to display additional images and behave like a PushButton.
4231
4232- It is now possible to make the drawing window resizeable, if it is in windowed mode.
4233 Use IVideoDriver::setResizeAble(true) to do this.
4234
4235- The .x file reader and animation player now should work with 99% of all text .x files.
4236 This is achieved by most of the following bug fixes.
4237
4238- Fixed a huge bug in the .x file reader, which caused that negative coordinates were
4239 interpreted as positive ones sometimes. This caused that sometimes .x animations
4240 were played wrong.
4241
4242- Slerp interpolation of the quaternion class fixed. This means that also some bugs
4243 in the animation of .x files are removed now.
4244
4245- Added virtual joints to not weighted vertices to improve .x file animations.
4246
4247- The FileSystem is now 100% implemented. Finally it is now possible to write files
4248 too. There is a new Class IWriteFile and the corresponding
4249 IFileSystem::createAndWriteFile()
4250
4251- Added lots of text and sample code to the documentation. In most parts
4252 documentation should be clearer now.
4253
4254- The ISceneManager has a clear() method, which clears the whole scene, all scene nodes
4255 are removed.
4256
4257- All ISceneNodes now own a new method called removeAll(), which deletes all children
4258 of the node.
4259
4260- Fixed a bug which prevented the possibility to compile directx8 without
4261 having installed directx9.
4262
4263- Fixed a bug in 3d line dawing in D3D 8 and 9.
4264
4265- All video drivers now print out the gfx adapter type, vendor and driver version
4266 into the log strings.
4267
4268- The D3D9 device is now as fast as the D3D8 device.
4269
4270- The string class has an additional new constructor for creating a string from
4271 character data with a specific length.
4272
4273- Bug fixed in string class assignment operator which might cause a crash in very
4274 special circumstances.
4275
4276- Added a findNext() method to the string class.
4277
4278- The ISceneNode class now has a isDebugDataVisible() method.
4279
4280- Some lines were changed to make the source of the engine compatible to VS.NET 2003.
4281
4282- Some functionality of the IFileList and IFileSystem was missing in the Linux version
4283 of the engine. This caused the FileOpen-Dialog not to work. I fixed this problem.
4284
4285- The Middle and Right mouse button were swapped in the Linux version. This is now
4286 fixed.
4287
4288- Multitexturing should now work with most linux systems too, thanks to a bug
4289 report by Martin Piskernig.
4290
4291- The logger now has an additional log() method which accepts another combination
4292 of strings.
4293
4294- Fixed a bug which caused fonts to be displayed very transparent in OpenGL.
4295
4296- Removed one of the redundant overloaded IGUIEnvironment::updateAbsolutePosition()
4297 methods.
4298
4299- Fixed lots of clipping problems in all GUI Widgets.
4300
4301- core::rect has the new methods getCenter() and isValid().
4302
4303- Scrollbar buttons are now disabled if it is not possible to scroll.
4304
4305-------------------------------------------------------------------------------------
4306Changes in version 0.5: (17 Feb 2004)
4307
4308-------------------------------------
4309/ Highlights in short:
4310/ * DirectX 9 support
4311/ * .x file support in all render devices including opengl and software
4312/ * new materials like lightmaps with dynamic lighting
4313/ * fog
4314/ * stencil buffer shadows now also work in OpenGL device
4315/ * more gui widgets: tab controls, edit boxes, menus
4316/ * spline animation support
4317/ * mouse wheel support
4318/ * triangle fan drawing
4319/ * quaternions
4320/ * improved keyboard input control
4321/ * lots of bugfixes including improved quake 3 map support
4322-------------------------------------
4323
4324- DirectX 9 is now supported by Irrlicht. This does not mean that it replaces
4325 DirectX 8. The engine now supports both. You can now select between OpenGL,
4326 DirectX8, DirectX9, Software and the Null device.
4327
4328- The engine now is able to read and display .x files. Using
4329 Microsoft's excellent .x file exporter for Maya or MAX which comes
4330 with the DX8 and DX9 SDK, it is now possible to create content for
4331 the engine easily. Using .X files with Irrlicht is independent of D3D,
4332 they can be used with OpenGL and with Linux for example too.
4333 Currently only text file .x files are supported, and some animated .x
4334 files may be displayed not 100% correctly, because the animation player
4335 may still have some small bugs. It works perfectly with most .x files which
4336 come with the DX9-SDK. Some skinned mesh .x files which use
4337 quaternions for animating joints have some problems, there might be a
4338 bug somewhere. I commented the lines with a possible bug in CXAnimationPlayer.cpp.
4339
4340- The GUI Environment now supports edit boxes. They should support unicode input
4341 from every keyboard around the world, scrolling, copying and pasting (exchanging
4342 data with the clipboard directly), maximum character amount, marking and all
4343 shortcuts like ctrl+X, ctrl+V, ctrg+C, shift+Left, shift+Right, Home, End,
4344 and so on. Wow, I never programmed an edit box, its much more work than it
4345 seems to be.
4346
4347- Tabcontrols are now available in the GUI environment. It is also
4348 possible to create tabs without tabcontrols, to be able to create
4349 invisible gui elements for grouping other elements together.
4350
4351- Another new supported GUI Element are context menus. They support
4352 ordinary text menu items, separators and sub menus. In Addition,
4353 a standard menu as seen at the top of most windows can be
4354 created easily with them.
4355
4356- Rewrote all tutorials to fit the new API.
4357
4358- Spline animations are now supported thanks to a spline scene node animator
4359 written by Matthias Gall.
4360
4361- Taskswitching now works with Direct3D 8 and 9 devices in fullscreen mode.
4362
4363- Added Material types EMT_LIGHTMAP_LIGHTING, EMT_LIGHTMAP_LIGHTING_M2,
4364 EMT_LIGHTMAP_LIGHTING_M4 and EMT_LIGHTMAP_ADD.
4365
4366- The engine now supports drawing of trianglefans. To do this, use
4367 IVideoDriver::drawIndexedTriangleFan(). Mario Gruber sent in code for this,
4368 so lots of thanks go to him!
4369
4370- It is now possible to draw 3d objects with fog. Simply switch on the fog flag
4371 in the objects material. To change to way fog is drawn (per pixel/vertex, color,
4372 linear/expontential) use IVideoDriver::setFog();
4373
4374- With IrrlichtDevice::getOSOperator() a pointer to an interface is returned, with
4375 wich it is possible to do some operation system specific operations. Currently
4376 there are only 3 methods supported, but more will be added in the future.
4377
4378- Mouse wheel input is now supported.
4379
4380- The Key Event structure of SEvent now contains a Char entry, describing the
4381 corresponding character of the pressed key. Also two bools were added,
4382 specifying if shift or ctrl was pressed too.
4383
4384- The version of the Operating System is now printed out into the log at
4385 startup.
4386
4387- There is now a non-const getBoundingBox() method in IMeshBuffer and
4388 IMesh available.
4389
4390- IGUIElement now has a method getElementFromId(), which searches children
4391 (and its children if wanted) for an element with a specific id. If you
4392 want to search all items, just do
4393 IGUIEnvironment::getRootGUIElement::getElementFromId().
4394
4395- ISceneNode::updateAbsolutePosition() is now public
4396
4397- Small bug fixed in CMeshManipulator::scaleMesh().
4398
4399- The engine now supports Quaternions.
4400
4401- A bug was fixed causing the windows caption not to be displayed in
4402 Windows 95/98/ME.
4403
4404- IGUIEnvironment::getBuildInFont() was renamed to getBuiltInFont().
4405
4406- IGUIElement::bringToFront() is able to brint a child to the front.
4407 Windows for example are now using this new feature.
4408
4409- Changed the texture mapping of the test scene node a little bit based on
4410 code sent in by Dr Andros C Bragianos.
4411
4412- Added code to fix some bug in some ATI drivers. Thanks to ariaci for posting
4413 this code.
4414
4415- Stencil buffer shadows now also work with the OpenGL device, they worked only
4416 in D3D in earlier versions. Lots of thanks go to Philipp Dortmann, who
4417 sent in a modification to the opengl driver!
4418
4419- IGUIStaticText::setWordWarp() renamed to setWordWrap(),
4420 IGUIStaticText::enableOverrrideColor() renamed to enableOverrideColor()
4421 [thanks to saigumi]
4422
4423- A bug was fixed, causing that the window was not able to be closed with Alt+F4
4424 in Win95/98.
4425
4426- Optimized the Octree-Scene node a little bit for getting more rendering speed.
4427 Culling is now done with the real frustum, not the bounding box around it.
4428 Speed increase is about 5%, it's not much but ok.
4429
4430- Bug fixed in the Quake 3 .bsp file loader, which caused holes to appear in
4431 some maps.
4432
4433- Combination of 3D displaying and drawing GUI elements was improved, and the
4434 priority of input receiving of 3d cameras and gui elements swapped.
4435
4436- A bug in the static text was fixed, which caused it to draw itself outside
4437 of its clipping rectangle.
4438
4439- KeyFocus and MouseFocus methods in GUIEnvironment are now merged into one method.
4440
4441- The Clamptexturecoordinates flag in the material was removed.
4442
4443- IVideoDriver::draw3DLine in all devices was improved.
4444
4445- The devcpp-version of the binary DLL which comes with the SDK is now faster.
4446 I'll compile this version from now on always with optimization switched on.
4447
4448- Other, Minor New/Changed methods in public interfaces:
4449 * buildShadowMatrix in matrix4
4450 * getRotationDegrees in matrix4 (sent in by Chev)
4451 * rotateVect in matrix4
4452 * linear_search in array
4453 * recalculateBoundingBox in MeshManipulator
4454 * ISceneManager::addStaticText() now has a parameter for word wrapping
4455 * getCharacterFromPos() in IGUIFont
4456 * drawMeshBuffer() in IVideoDriver;
4457 * interpolate() in matrix4
4458 * getLast in array
4459
4460-------------------------------------------------------------------------------------
4461Changes in version 0.4.2: (13 Dec 2003)
4462
4463- The engine does no more use only 16 bit textures internaly. Now all
4464 other texture formats are supported too. This means higher precision
4465 and better quality images. In this context, the ISurface interface has
4466 been replaced by IImage, and the ISurfaceLoader by IImageLoader.
4467
4468- By changing the texture creation mode of the IVideoDriver, it is now
4469 possible to influence how textures are created: You can choose between
4470 'optimized for speed', 'optimized for quality' or simply set constant
4471 bit depth like 'always 32 bit'. Also, you can now enable and disable
4472 Mip map generation with these flags. Take a look at
4473 IVideoDriver::setTextureCreationFlag() for details.
4474
4475- There is now some support for outdoor or terrain rendering available.
4476 You can create a static mesh from a heightmap and a texture using
4477 ISceneManager::addTerrainMesh(). You can specify a huge texture if you
4478 like, even bigger as your hardware allows to render, because the texture
4479 will be splitted up if necessary.
4480 Another possibility for doing terrain rendering is the new Terrain Scene
4481 node. But it is only in a very early alpha stage, I disabled for example
4482 the use of different level of details.
4483
4484- It is now possible to load software images into memory from files on
4485 disk, without creating a hardware texture. You can do this by calling
4486 IVideoDriver::createImageFromFile(). This is very useful for example
4487 for loading heighmaps for terrain renderers.
4488
4489- The Quake 3 Map Loader now supports curved surfaces, thanks to by Dean P. Macri
4490 who sent in his code. (He also sent in lots of other cool stuff, which I will merge
4491 with the code of next releases, lots of thanks to him!)
4492
4493- It is now possible to control what text is printed out to the console and
4494 the debug window of Visual Studio. By getting a pointer to the ILogger
4495 interface, is is possible to adjust if Warning, Error or Informational
4496 texts should be printed out. In addition, now every text can be catched
4497 by the event receiver.
4498
4499- The engine is now capable of loading .PCX files. Only a few PCX formats
4500 are supported currently, but at least the common used formats
4501 of most textures of the quake 2 models. Thanks go to Dean P. Macri who
4502 sent in the code for the new PCXLoader!
4503
4504- A new Scene node is available, which simply does nothing. It is useful for doing
4505 advanced transformations or for structuring the scene graph.
4506
4507- The ISceneManager::addOctTreeSceneNode() now takes AnimatedMeshes as parameter.
4508 If this new method is called, the first frame in the animated mesh is taken as
4509 mesh to construct the octree. This means that you won't have to write
4510 addOctTreeSceneNode(yourMesh->getMesh(0)) anymore, but can use
4511 addOctTreeSceneNode(yourMesh), which is a little bit more intuitive.
4512
4513- The Driver type enumeration have been adapted to the Irrlicht
4514 naming conventions. For example instead of writing DT_OPENGL, now write
4515 EDT_OPENGL.
4516
4517- The ITexture interface has two new methods for getting the size of the
4518 texture: ITexture::getSize() and ITexture::getOriginalSize(). This replaces
4519 the old getDimension()-method and allows to disable bugs which are generated
4520 by the automatic scaling to optimal sizes of textures.
4521
4522- There are some new keycodes available: KEY_COMMA, KEY_PLUS, KEY_MINUS, KEY_PERIOD.
4523
4524- There are now 3 lightmap Material types: EMT_LIGHTMAP, EMT_LIGHTMAP_M2 and
4525 EMT_LIGHTMAP_M4, which are making the lightmaps 2 or 4 times brighter. If you used
4526 the Material EMT_LIGHTMAP in your code, you should replace it now with
4527 EMT_LIGHTMAP_M4.
4528
4529- The transformation enumeration names have been adapted to the irrlicht
4530 naming conventions. For example instead of writing TS_VIEW, now write
4531 ETS_VIEW.
4532
4533- Video driver feature enumeration names have been changed from
4534 EK3DVDF_... to EVDF_...
4535
4536- The GUIEnvironment now has a new method: getRootGUIElement(). With this it
4537 is possible now to add external created custom GUI Elements to the gui environment,
4538 without an existing internal GUI element as parent.
4539
4540- The setViewPort()-Method of the OpenGL-device now works, too. Nothing stands now
4541 in the way of creating splitscreen applications using the OpenGL device.
4542 Oliver Klems sent code for this, I slightly modified it. Thank you!
4543
4544- Corrected a bug, which made the EMT_REFLECTION_2_LAYER Material disappear on some
4545 hardware.
4546
4547- Sirshane sent in a bug fix: It is now possible to make the mouse cursor
4548 invisible in the Linux version of the engine. Thanx sirshane!
4549
4550- getFrameNr() of IAnimatedMeshSceneNode is now public.
4551
4552- Again a small bug in the 3ds file loader was fixed.
4553
4554- A small bug causing light positions being transformed in the OpenGL
4555 driver differently compared to D3D. Thanx to Matthias Gall for reporting
4556 this!
4557
4558- Typing error fixed: ISceneCollisionMananger::getRayFromScreenCoordiantes renamed to
4559 getRayFromScreenCoordinates.
4560
4561- Linux support with multitexturing and mipmap generation has been improved.
4562
4563- A bug was fixed wich caused the Engine not to run when compiled
4564 as dynamic library under linux. Thanks to Shane Parker who pointed out
4565 the problem.
4566
4567- A bug was fixed in position2d.h in the operator +=, and the list iterator now
4568 has per and postfix operators. Thanks to Isometric God for spotting this out.
4569
4570- A bug was fixed in the Metatriangleselector, causing it to detect only collisions
4571 with the last TriangleSelector in it.
4572
4573-------------------------------------------------------------------------------------
4574Changes in version 0.4.1: (18 Sep 2003)
4575
4576
4577- Input events are now processed faster than repaint and window events. This
4578 means that input commands now effect things directly, in earlier versions
4579 there could be a delay when there were low frames per second. Some people
4580 noticed this when moving with the fps camera in large levels: The camera
4581 sometimes stopped seconds after the button was released. This is now fixed.
4582
4583- A Message Box is now available in the GUI Environment. It looks like the
4584 windows message boxes and supports OK, Cancel, Yes and No buttons, which
4585 can be combined freely. Also, it shows multiline text and adjusts its size
4586 based on the amount of text it shows, so it should be very useful for displaying
4587 (debug) messages during runtime.
4588
4589- It is now possible to make all windows (message boxes, file open dialogs,
4590 simple windows) modal.
4591
4592- IGUIStaticText now supports multiline text via automatic word warp and manual
4593 line breaking with '\n'. You only need to switch it on with
4594 yourText->setWordWrap(true);
4595
4596- Non default MD2 animations are now supported. Which means simply that you can
4597 enumerate the names of all md2 animations and the AnimatedMeshSceneNode now supports
4598 a setMD2Animation() with a character string as parameter instead of a constant.
4599
4600- You do not need an event receiver anymore for sending user events to the active
4601 camera, this is now done autmaticly. In addition, it is now possible to
4602 set a new event receiver during runtime of the engine using IrrlichtDevice::
4603 setEventReceiver().
4604
4605- It is now possible to disable and enable the input receiver of a camera. This
4606 is useful for example for removing the users control of the camera. To do this,
4607 call camera->setInputReceiverEnabled(false);
4608
4609- The first person shooter camera now supports a keymap: You can define your own
4610 key mapping to control the camera when you create it with ISceneManager::
4611 addCameraSceneNodeFPS().
4612
4613- Thanks to Jon Pry, the engine now also loads compressed TGA texture files. Now only
4614 8 bit palette using TGAs are missing. :)
4615
4616- There are methods for converting 3d coordinates in 2d coordinates and the other
4617 way round. You can find them as two new methods of the ISceneCollisionManager:
4618 getRayFromScreenCoordiantes() and getScreenCoordinatesFrom3DPosition().
4619
4620- There are now access methods in IGUIWindow for getting pointers to the
4621 maximize, minimize and close buttons, to be able to remove them for
4622 example.
4623
4624- Before starting up the engine, a version check now is performed and a warning is
4625 written, if Irrlicht.DLL version and header version of your application do
4626 not match.
4627
4628- A bug with the skybox has been fixed: In OpenGL, it was possible to see the
4629 borders of the skybox. In addition, when a skybox was visible, there were
4630 errors in the texture coordinates of other meshes. This is all fixed now.
4631
4632- A bug has been fixed causing the engine to crash when removing gui childs
4633 which where created inside the .dll but are removed from outside.
4634
4635- A bug was fixed causing the engine to crash when drawing debug data of
4636 octtree scene nodes with geometry data with vertices with one texture
4637 coordiante.
4638
4639- Multitexturing now works with linux, too. Thanx to Jon Pry again, for showing
4640 me where the problem was.
4641
4642- The bug (reported by saigumi) preventing scene nodes attached to a camera
4643 from moving correctly is now fixed.
4644
4645- The "Climb-Walls" bug (reported first by Matthias Gall) is fixed. Gravity
4646 acceleration is now quadratic instead of linear.
4647
4648- A warning is now printed out, if more vertices are rendererd with one call
4649 than the hardware supports.
4650
4651- Other, Minor New/Changed methods in public interfaces:
4652 * get and setText() in IGUISkin
4653 * += operators are now available in the string class.
4654 * setRelativePosition() in IGUIElement
4655 * enumeration EKEY_CODES renamed to EKEY_CODE
4656 * getMaximalPrimitiveCount() in IVideoDriver
4657 * getAnimationCount() in IAnimatedMeshMD2
4658 * getAnimationName() in IAnimatedMeshMD2
4659
4660-------------------------------------------------------------------------------------
4661Changes in version 0.4: (04 Sep 2003)
4662
4663- Collision detection and reponse based on ellipsoids in now implemented.
4664 There is a new method available in the ISceneCollisionMananger, which returns
4665 a collision response point. In addition, a new SceneNodeAnimator is available,
4666 which causes a scene node, to which it is attached to, not to move through
4667 walls, to climb stairs and to be affected by gravity. This scene node animator
4668 can be attached to any scene node. For example adding it to the FPSCamera, it makes
4669 the user possible to walk through the 3d world as in first person shooters.
4670
4671- There is now a full featured Particle System included in the engine for
4672 creating fire, explosions, snow, smoke and so on.
4673 It is customizeable and extensible. There is a ParticleSystemScene node
4674 available in the SceneManager and some standard particle emitters and
4675 affectors are already implemented.
4676
4677- Realistic water: The engine now features an IWaterSurfaceScene node, which
4678 animates a static mesh with water waves. In combination with the new
4679 EMT_REFLECTION or EMT_TRANSPARENT_REFLECTION material type, you can easily
4680 create realistic animated water surfaces.
4681
4682- Triangle base picking is now possible using the ISceneCollisionMananager.
4683 If a collision happened, the intersection point and the triangle causing
4684 the intersection is returned.
4685
4686- Stencil shadows are now drawn using the ZFail method by default, but it is
4687 possible to choose ZPass, if wished. This means that the camera may now move
4688 inside the shadow volumes and no errors will occur. In addition a stencil
4689 shadow bug is now fixed: In 0.3 there where no shadows visible in the TechDemo.
4690
4691- The interface of ISceneNode has changed: There is no more a RelativeTransformation
4692 and AnimatedRelativeTransformation matrix. They have been replaced by 3 vectors:
4693 RelativeTranslation, RelativeRotation and RelativeScale, which can be accessed by
4694 the corresponing get() and set() methods. This simplifies the interface
4695 a lot. Also, the set/getRelativePosition was renamed to set/getPosition.
4696
4697- The new IAnimatedMeshMD2 interface now returns start, begin time and
4698 fps of every MD2 animation type. In this context, IAnimatedMeshSceneNode
4699 got a new method called setMD2Animation(), which accepts a single constant
4700 like EMAT_ATTACK, which starts and plays the fitting animation (attack
4701 animation in this case), simplifying the interface a lot.
4702
4703- Some scene nodes can now draw debug data like their bounding boxes.
4704 This feature is switched on for a single node by calling
4705 ISceneNode::setDebugDataVisible(true). Looks really interesting for
4706 animated scene nodes like particle systems or animated meshes.
4707
4708- There is now a IGUIInOutFader avaiable, which is able to fade in or
4709 out the whole screen or parts of it.
4710
4711- The new IVideoModeList is a list with all available video modes. It can
4712 be retrieved with IrrlichtDevice::getVideoModeList(). If you are confused
4713 now, because you think you have to create an Irrlicht Device with a video
4714 mode before being able to get the video mode list, let me tell you that
4715 there is no need to start up an Irrlicht Device with DT_DIRECTX8, DT_OPENGL or
4716 DT_SOFTWARE: For this (and for lots of other reasons) the null device,
4717 DT_NULL exists.
4718
4719- With the new IMeshManipulator interface accessible with
4720 ISceneManager::getMeshManipulator() it is possible to perform some basic
4721 operations on meshes: Flipping all surfaces, recalculating all normals,
4722 scaling the mesh, creating a new texture mapping and so on.
4723
4724- A new material for creating water surfaces or glass with reflections on it
4725 is available: EMT_REFLECTION_2_LAYER and EMT_TRANSPARENT_REFLECTION_2_LAYER.
4726 It has uses a reflection map, and an additional optional texture.
4727 The transparency of this material is set by the alpha color value in the vertices.
4728
4729- Another new material is EMT_SOLID_2_LAYER. It is a material with 2 textures,
4730 blended together with the alpha value of the vertex color. This material is
4731 currently only available in DirectX.
4732
4733- Trilinear Filtering is now supported by the engine.
4734 There is a new option in SMaterial: TrilinearFilter and EMF_TRILINEAR_FILTER.
4735
4736- The addChild() method of the IAnimatedMeshSceneNode for adding SceneNodes to
4737 joints of skeletal animated meshes was removed.
4738 Instead there is now a new method: getMS3DJointNode(). This returns a pointer
4739 to a child node, wich has the same transformation as the corrsesponding joint.
4740 In this way it is possible to do more advanced operations with joints and
4741 attaching scene nodes to joints. Also, the IAnimatedMeshMS3D interface now gives
4742 access to all joints. In this way, you can easily enumerate all names of all
4743 joints in the mesh.
4744
4745- Font and color of every IGUIStaticText can now be set separately, without
4746 modifying the IGUISkin.
4747
4748- There is now a ELEMENT_LEFT gui event, which all hovered elements receive when they
4749 are left.
4750
4751- All features of the FileOpenDialog are now working.
4752
4753- Debug informations are now printed out to the console window
4754 also on the win32 platform.
4755
4756- FPSCamera now supports setTarget(). Its not precise but working.
4757
4758- Textures of 3ds files are now loaded from the same directory in which the
4759 3ds file is. If the texture is not found there, the texture is tried to be
4760 loaded from the current working directory.
4761
4762- A small bug in the 3ds file loader has been fixed. There were 3ds files exported
4763 by anim8or, where the reading of the 3ds file never stopped.
4764
4765- It is now possible to configure the minimal amount of polygons contained
4766 in every node in an OctTree via addOctTreeSceneNode().
4767
4768- There is a new template class in the core namespace: triangle3d. With this,
4769 it is easy to find intersections between lines and triangles, find out if
4770 a point is within a triangle and so on.
4771
4772- A small bug in ISceneManager::addHillPlaneMesh() was fixed: Now the right tile
4773 amount is created.
4774
4775- There is a new SceneNode available: IDummyTransformationSceneNode. It exists
4776 for making it possible to insert matrix transformations anywhere into the
4777 scene graph.
4778
4779- Added a new SceneNode animator for deleting Scene nodes automaticly after some
4780 time. Create it with ISceneManager::createDeleteAnimator().
4781
4782- The techdemo now is interactive. After a short non-interactive flight over
4783 the quake 3 level, you are placed as player inside the level, may move around,
4784 shoot fire balls and take a look at some animated characters which are placed
4785 on the map.
4786
4787- I fixed a bug which caused the screen get black when choosing shadows and fullscreen
4788 on some special 3d adapters.
4789
4790- I fixed some bugs in the linux port: The timer returned an incorrect time, causing
4791 wrong animations everywhere and the releasing of keys and mouse buttons was not
4792 sent as event. In addition, I placed a copy of the zlib.a and jpeglib.a into the
4793 /lib/Linux directory and changed the Makefiles of the examples and the source
4794 of the engine for doing this automaticly in the future, so I hope there will be no
4795 problems with other versions of zlib and jpeglib anymore.
4796
4797- There are 2 new tutorials: One showing how to do collision detection and
4798 for special effects.
4799
4800- Other, Minor New/Changed methods in public interfaces:
4801 * getVersion() in IrrlichtDevice
4802 * getLengthSQ() in vector3d
4803 * getInterpolated() in vector3d
4804 * getInterpolated() in SColor
4805 * getAngle() in vector2d
4806 * getAngleWith() in vector2d
4807 * getPrimitiveCountDrawed() in IVideoDriver renamed to getPrimitiveCountDrawn()
4808 * getSceneNodeFromSceenCoordinates() renamed to getSceneNodeFromScreenCoordinates()
4809 * getMeshType() in IAnimatedMesh
4810 * getInterpolated() in aabbox
4811 * setMD2Animation() in IAnimatedMeshSceneNode
4812 * getFullFileName() in IFileList
4813 * addShadowVolumeSceneNode() in IAnimatedMeshSceneNode extended with zfail parameter
4814 * drawStencilShadowVolume() in IVideoDriver extended with zfail parameter
4815 * getDistanceFromSQ() in vector3d
4816 * subString() in string
4817 * findFirst() in string
4818 * findLast() in string
4819 * getTriangleSelector() in ISceneNode
4820 * setTriangleSelector() in ISceneNode
4821 * draw3DTriangle() in IVideoDriver
4822 * setShadowColor() in ISceneManager
4823 * getShadowColor() in ISceneManager
4824 * addToDeletionQueue() in ISceneManager
4825 * getSceneNodeFromId() in ISceneManager
4826
4827-------------------------------------------------------------------------------------
4828Changes in version 0.3: (18 Jul 2003)
4829
4830- Linux port: The Irrlicht Engine now compiles and runs on Linux. Currently only
4831 the OpenGL driver is available. The Software driver would be there too, if
4832 somebody could tell me a fast way to blit a A1R5G5B5 surface to the screen
4833 using X.
4834 All examples do compile and run, but there are some things missing:
4835 * It is not yet possible to make the mouse cursor invisibe.
4836 * The timer seems not to return the currect time.
4837 * Multitexturing does not work correctly on all gfx adapters.
4838
4839- Ms3D Animations: The engine is now able to play skeletal animations directy
4840 from Milkshape 3D (.ms3d) files. It is also possible to attach objects to
4841 parts of the animated mesh. For example a weapon to the left hand of
4842 the animated model.
4843
4844- Because the swprintf function in Windows32 does not match the ISO C standard,
4845 and it does in linux and all other platforms, there is now a define in Irrlicht.h,
4846 to make the code be the same on all platforms:
4847 #define swprintf _snwprintf
4848 This simply means that you need to add a parameter to your swprintf calls if
4849 you used this function in your win32 irrlicht engine projects. For example instead
4850 of writing
4851 wchar_t tmp[255];
4852 swprint(tmp, "FPS: %d", fps);
4853 you now write
4854 wchar_t tmp[255];
4855 swprint(tmp, 255, "FPS: %d", fps);
4856
4857- Automatic culling has changed a little bit: It is now done by the SceneManager.
4858 Scene nodes now only need to return a valid, non transformed bounding box to be
4859 culled automaticly. It is explaned in the CustomSceneNode Tutorial how this works.
4860
4861- It is now possible to use the engine easily for 2D graphics: There are now to new
4862 methods in the IVideoDriver, which create an 1bit alpha channel for textures
4863 using an color key. The methods are both named makeColorKeyTexture. There is a
4864 tutorial '2d graphics' which explains how this works.
4865
4866- The rect template class was removed and replaced by the rectEx class. There
4867 is now only one rectangle template available, called 'rect' for simplifying
4868 the interface.
4869
4870- The texture coordinate bug in Milkshape 3d models with lots of shared vertices
4871 was fixed.
4872
4873- Bugfix with GUI environment hovering invisible elements.
4874
4875- There are two new tutorials: One for 2d graphics, and one for user interface.
4876
4877- Tutorial changes:
4878 * All backslashes replaced by slashes in file names in
4879 all tutorials for linux compatibility.
4880 * RectEx replaces with rect in 1.HelloWorld
4881 * Added second parameter to swprintf in 2.Quake3Map
4882 * Added bounding box creation to 3.CustomSceneNode
4883 * Added second parameter to swprintf in 4.Movement
4884
4885- New/Changed methods in public interfaces:
4886 * getClosestPoint in line3d
4887 * getMatrixOfMeshPart in IAnimatedMesh
4888 * removeChild in ISceneNode now returns true or false
4889 * addChild in IAnimatedMeshSceneNode
4890 * setParent in ISceneNode
4891
4892-------------------------------------------------------------------------------------
4893Changes in version 0.2.5: (22 Jun 2003)
4894
4895- A new material type is available: EMT_TRANSPARENT_VERTEX_ALPHA, which
4896 realizes transparency based on the vertex alpha color. It currently is
4897 only implemented in the DirectX device.
4898
4899- There is now an ISceneCollisionManager available. Get it with
4900 getSceneCollisionManager() from the ISceneManager. It currently only implements
4901 picking, but more is coming soon.
4902
4903- Automatic Culling based on Bounding Boxes is implemented now. It can be switched on
4904 or off for every SceneNode seperately using ISceneNode::setAutomaticCulling().
4905 It is on by default.
4906
4907- It is now possible to remove loaded textures for freeing memory or reloading them.
4908 Use IVideoDriver::removeTexture() or removeAllTextures().
4909
4910- New drawing methods in the IVideoDriver interface:
4911 * Draw3dLine(), drawing a 3d line.
4912 * Draw3dBox(), which draws an axis aligned bounding box.
4913 * Draw2dLine(), currently only supported by the Software device.
4914
4915- MD2 bugfixes:
4916 * There was a small bug with texture coordinates.
4917 * Frames are now correctly interpolated when playing animations.
4918
4919- Bugfix in the 3ds file format loader: Single objects in the 3ds file with multiple
4920 materials attached are now loaded correctly.
4921
4922- list.h renamed to irrlist.h due to compatibility issues.
4923
4924- Now works with Dev-C++ 5 Beta 8. (4.9.8.0)
4925
4926- New/Changed methods in public interfaces:
4927 * 'getInverse' in matrix4.
4928 * 'transformBox' in matrix4.
4929 * 'repair' in aabbox.
4930 * 'intersectsWithLine' in aabbox.
4931 * 'getVector' in line3d.
4932 * 'getMiddle' in line3d.
4933 * 'normalize' method in vector3d and vector2d now returns reference to vector.
4934 * 'getTransformedBoundingBox' in ISceneNode.
4935 * 'getChildren' in ISceneNode
4936 * 'setRotation' in ISceneNode
4937 * 'addHillPlaneMesh' in ISceneManager now accepts a texture repeat count parameter.
4938
4939
4940-------------------------------------------------------------------------------------
4941Changes in version 0.2: (19 May 2003)
4942
4943- The engine is now able to load .3ds files, with their materials and textures.
4944
4945- There are some new SceneNodeAnimators: A fly straight animator and a texture animator.
4946
4947- Texture coordinates can now be set to clamp or wrap mode with
4948 a flag in the SMaterial struct.
4949
4950- Skyboxes are implemented.
4951
4952- Billboards now work 100% correctly.
4953
4954- The IAnimatedMeshSceneNode is now able to draw shadows of itself. To enable this, just call
4955 addShadowVolumeSceneNode(). Please note that shadows are currently just experimental,
4956 there are some bugs, and they only only in Direct3D mode.
4957
4958- A small bug in the view frustum and the octree fixed.
4959
4960- The default aspect ratio in all camera scene nodes was changed.
4961
4962- Some changes and extenstions to the core::matrix4, SViewFrustum, plane3d and
4963 aabbox were made. The plane3dex was removed, there is now only one plane implementation
4964 available. Implemented some ideas and suggestions by Mark Jeacocke. Thanx a lot!
4965
4966- The interface for adding dynamic lights has been enhanced. There are some new methods
4967 for handling dynamic light in the IVideoDriver interface. For example, it is now possible
4968 to change the ambient light.
4969
4970- There is a new parameter in the createDevice() function, which specifies if the
4971 stencil buffer should be activated. Also, now all parameters have default parameters.
4972
4973- There is now a timer object to get the current timer. It can be received using
4974 the getTimer() method from the IrrlichtDevice.
4975
4976- The first person shooter camera is now able to be moved by external using
4977 setRelativePosition() and the sceneNodeAnimators. In addition, it now supports
4978 multiple FPS cameras.
4979
4980- Mesh format loading extenstions are now possible. To extend the engine with a
4981 mesh format it currently does not support (e.g. .cob), just implement a
4982 IMeshLoader interface and add it to the engine calling
4983 ISceneManager::addExternalMeshLoader().
4984
4985- It is now possible to extend the Irrlicht Engine easily with new texture file format
4986 loaders. If there is an image file format the engine does not support (for example
4987 .gif files) the IImageLoader interface can be implemented to load .gif files
4988 and added to the engine via IVideoDriver::addExternalSurfaceLoader().
4989
4990-------------------------------------------------------------------------------------
4991Changes in version 0.1.5: (03 Apr 2003)
4992
4993- The zlib and libjpeg are now included in the SDK.
4994
4995- It is now possible to let the scene manager generate a hilly plane on the fly.
4996
4997- The Interface for handling dynamic lights was simplified.
4998
4999- The OpenGL 2D and 3D device is now full implemented.
5000
5001- There is now a way to access to root scene node from the scene manager, and so it
5002 is possible to add external created custom scene nodes to the scene.
5003
5004- There is a new Camera control scene node available in the engine: First Person Shooter
5005 Camera Control. Look with mouse movement, move and strafe with the cursor keys.
5006
5007- The engine now compiles with g++ and the Microsoft compilers, which enables it to
5008 develop applications for the engine with VisualC++6.0, VisualC++.NET and Dev-C++.
5009
5010- There is now a ICursorControl available in the engine, which is able to modify the
5011 mouse cursor: Get/Set the position of the cursor, make it invisible or visible.
5012
5013- video::Color was renamed to video::SColor to fit the Irrlicht Engine naming conventions
5014 and for g++ compatibility issues in the Vertices.
5015
5016-------------------------------------------------------------------------------------
5017Release notes of version 0.1: (14 Mar 2003)
5018
5019 This is an alpha version of the SDK. So please note that there are
5020 features missing in the engine and maybe also some bugs. The following
5021 list is a complete list of parts of this alpha SDK which do not work
5022 100% correct. All other parts which can be found in the documentation
5023 and accessed with the Irrlicht header files work and can already be
5024 used.
5025
5026- OpenGL Device
5027 The OpenGL Device is currently only able to load textures and draw basic
5028 3D primitives. No 2D functions, complex materials and dynamic light are
5029 implemented. Please use the DirectX8 or the Software Device instead.
5030 In the next release (0.2) the OpenGL device will be complete.
5031
5032- Software Device
5033 Dynamic lighting, multitexturing, 3d clipping and bilinear filtering are
5034 not implemented because the Software Device was intented to to only 2d
5035 functions, the primitive 3d functions are only an addition. Until the
5036 first non beta release (1.0) of the Engine, some more 3d functionality
5037 will be added.
5038
5039- BspTree
5040 The binary space partition scene node does not work correctly and has
5041 some bugs in it, which might lead to crashes. Please use the OctTree
5042 scene node instead. There is nearly no difference between the interface
5043 of them.
5044
5045- MeshViewerGUIElement
5046 The camera control of this element is currently disabled.
5047
5048- FileOpenDialog
5049 Not all functions are implemented.
5050
5051- Render to Texture support
5052 Is not implemented yet.
5053
5054- MS3D Skeletal Animation
5055 A loaded mesh is currently not animated and only drawn static.
5056
5057- Quake 3 maps
5058 No support for curved surfaces yet.
5059
5060- Linux Support
5061 The engine currently only runs with Windows platforms. A linux version
5062 will be available somewhere between the versions 0.2 and 0.5, it depends
5063 on the need of the users.
5064
5065-------------------------------------------------------------------------------------