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