-
Notifications
You must be signed in to change notification settings - Fork 4
/
changes.txt
5672 lines (3856 loc) · 291 KB
/
changes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
--------------------------
Changes in ogl-es (not yet released - will be merged with trunk at some point)
- COGLES2Driver: fix swapped color screenshots. Thanks @sfan5 for patch (https://github.com/minetest/irrlicht/commit/05c109a1d52db8293d8721337853043924feedae)
- Add support for (experimental) WebGL1 driver for emscripten (still work in process)
- Add support for emscripten. Thanks @labsin for the patch.
- Add IVideoDriver::getAmbientLight function so shaders can access global ambient light easier
- Merge material changes for COGLES1MaterialRenderer_LIGHTMAP and COpenGLMaterialRenderer_TRANSPARENT_ALPHA_CHANNEL which had been done in OGL in trunk (r2740) to ensure materials look the same on all platforms.
- Added support for PVR textures. Loader offer support for compressed DXT1-5, PVRTC/PVRTC-II, ETC1/ETC2 texture formats.
--------------------------
Changes in 1.9 (not yet released)
- New ETCF_ALLOW_MEMORY_COPY texture creation flag makes having an extra texture copy for OpenGL textures optional.
This is now disabled by default. It saves a lot memory, but the cost is that lock() calls get slower.
So enable it for textures which you need to read a lot on CPU (like for example font textures).
- CGUIEditBox::setText now resets cursorpos and text markers
- Add parameter to setViewPort which allows disabling clipping of the area. Will only work in OpenGL.
Thanks @Andrey01 for mentioning a use-case for this: https://irrlicht.sourceforge.io/forum/viewtopic.php?t=53020
- Empty meshes and meshbuffers now have invalid bounding-boxes.
Meshes no longer add invalid meshbuffer bounding boxes when recalculating their bounding box.
Fixes bugs that empty meshbuffers could increase the bounding box sometimes and that SMesh could ignore meshbuffers with a single point.
- Avoid unnecessary string copies in GUI code when drawing fonts (accidentally introduced in Irrlicht 1.6).
- IGUIScrollBar has now getters for the scrollbar buttons and the options to disable background drawing
- Improved scrollbar handling in CGUITreeView (stepsizes, reacting to keys)
- Add IGUITreeView::getNextNode (traverse full tree), getPrevNode, getLastSelectTriggerEvent (to get mouse-keys) and scrollTo.
- Bugfix: CGUITreeView no longer dropping EGET_TREEVIEW_NODE_SELECT events when moving mouse while clicking
- CGUITreeView now shows expand icon (+/-) for sub-nodes with correct text-color
- Bugfix: CGUITreeView now aligns scrollbars correct so they work on resize
- obj/mtl loader no longer messes up bump textures when the name starts with a number
- CImageLoaderBMP now supports loading 1-bit images with palette data
- Hardware meshbuffers are now deleted when they hold the last reference to a meshbuffer
- Variable order inside SMaterial and SMaterialLayer changed for better packing
- line3d::getClosestPoint can now chose between using line or line segment
- MY3D loader deprecated and disabled by default as MY3D tools can't be found on the web anymore. Also could always be used as external loader.
- createCylinderMesh, createArrowMesh and createConeMesh in GeometryCreator tessellation numbers now for full instead of semi-circle.
Double your tessellation numbers to get same results as in 1.8
Sorry had to break as old solution didn't allow for odd numbers. Also was documented otherwise, so was a bug.
- Change in UV's for top/bottom center vertex in CGeometryCreator::createCylinderMesh
- Add some default UV's in CGeometryCreator::createConeMesh
- Bugfix: CTriangleSelector::getTriangles with bounding-box parameter no longer ignores an additionally passed matrix transformation in the box check
- Fix: CGUITabControl now catching EMIE_LMOUSE_PRESSED_DOWN
- Add options for transparency node sorting algorithm.
- CImageWriterPNG now also supports the writeImageToFile param to allow setting compressing level. 0 stays default, 1-10 for range increasing compression level.
- Add io::IUserData which can be set in SMaterial to make it easier passing additional material values to shaders
- Add lens shift support for the camera and the perspective projection functions
- TGA loader no longer reduces 24&32 bit TGA's with palettes to 16 bit. Thanks @erlehmann for report: https://irrlicht.sourceforge.io/forum/viewtopic.php?t=52925
- Fix compile error with OS X 10.10 SDK, bug #463. Thanks @Ryan Schmidt for report and patch.
- Optimize quaternion::rotationFromTo. Thanks @Robert Eisele for patch and proof (https://raw.org/proof/quaternion-from-two-vectors)
- Shader material example shows now how to pass material values.
In 1.8 we could still use gl_FrontMaterial, but that is no longer supported in shaders
- Get IMeshBuffer::append functions working for a few more cases and adapt interface so one can prevent the BoundingBox update.
- Bugfix: SMaterialLayer::operator!= no longer returns true when comparing a layer without texture matrix with one with a set identity texture matrix. Those are the same.
- SMaterialLayer no longer releases allocated TextureMatrix memory before destructor unless explicitly requested.
This can avoid constantly allocation/releasing memory in the active driver material when setting materials.
Note that it does not copy the TextureMatrix memory when it's unused. This is still optimized.
- Add IMeshSceneNode::setNodeRegistration to allow registering MeshSceneNodes to the SceneManager per buffer instead of per node
- Add SMaterialLayer::hasSetTextureMatrix and SMaterialLayer::resetTextureMatrix
- Add IShaderConstantSetCallBack::OnCreate to allow earlier access to IMaterialRendererServices
- CIrrDeviceWin32::yield() now uses Sleep(0) instead of Sleep(1).
We had Sleep(1) to allow yielding to all processes back in Windows XP time.
But a) This caused Windows apps to sleep for 15ms usually and b) behavior for Sleep(0) was changed after Window XP to do what we want it to do.
- Add ICursorControl::getReferenceRect
- Fix: Listbox no longer sending EGET_LISTBOX_SELECTED_AGAIN instead of EGET_LISTBOX_CHANGED when pressed mouse was moved over item before releasing the mouse button
- Listbox items can now change individual background colors
- Fix some bitfield sizes in SMaterial which were chosen too small for enums (PolygonOffsetDirection, ZWriteEnable, BlendOperation)
- Add ISceneNode::UpdateAbsolutePosBehavior variable to allow nodes to ignore the scale/rotation parts of their parents transformation.
- Add IGUISpinBox functions getValueFor and getOldValue
- Bugfix: IGUIElement::getNextElement now passing includeInvisible and includeDisabled flags recursively instead of disabling those for children.
This fixes problems that elements sometimes didn't get a tab order because some parent was invisible and so tab'ing for them failed completely.
Also setTabOrder(-1) now also checks for disabled elements for the same reason (disabled parent causing children to not get a tab-order).
- Fix MouseButtonStates for mouse events in CIrrDeviceSDL when middle or right button are released.
- CGUIContextMenu no longer marks EMIE_MOUSE_MOVED as handled
- core::array::linear_search and linear_reverse_search can now work with any types as long as corresponding operator== is implemented.
- Add checks for sane image sizes in some image loaders (so far: bmp, jpg, tga, png).
Thanks @sfan5 for the original patch (got modified a bit): https://github.com/minetest/irrlicht/commit/dbd39120e7ed8c0c97e48e2df62347627f3c1d42
- Add IImage::checkDataSizeLimit and make IImage getDataSizeFromFormat return size_t so image loaders can check if sizes are sane.
- Fix crash with large jpg files. Based somewhat on a patch in Minetest from sfan5 https://github.com/minetest/irrlicht/commit/594de9915346a87f67cd94e28c7933993efb5d3b
- COSOperator::getSystemMemory now returns some value on OSX (thought same for total and available).
Thanks @sfan5 for patch https://irrlicht.sourceforge.io/forum/viewtopic.php?f=2&t=52819 and https://github.com/minetest/irrlicht/commit/e469c54f76f6d24f92389b4e8a27b9cce7152888
- Fix CVertexBuffer::setType switching types for non-empty arrays. Before we had some bad casts which could result in random initializing of some vertex data.
- IVertexBuffer interface changes: pointer() now returns void*. Adding a const version of getData(). Some set functions have now overload for all vertex types.
- S3DVertex now always initializes color to 0xffffff. That was previously the only uninitialized variable in there. Also both derived classes have now a constructor taking a const S3DVertex&.
- Fix deserialization in CGUITable. Use now getAttributeAsStringW instead of getAttributeAsString.
Thanks @chronologicaldot for report and patch: https://irrlicht.sourceforge.io/forum/viewtopic.php?f=7&t=52821
- IIndexBuffer interface changes: Adding a const version of getData(). Some set functions now copy by value instead of per reference, which shouldn't be slower for this and is safer to use.
- Fix CIndexBuffer::setType going from 16 to 32 bit. This had some casts which simply could mess up the results.
- Fix OSX nor resizing properly. Thanks @torleif, Jordach and sfan5 for patch and report: https://irrlicht.sourceforge.io/forum/viewtopic.php?f=2&t=52819
- X meshloader fixes bug with uninitialized normals. Thanks @sfan5 for patch: https://irrlicht.sourceforge.io/forum/viewtopic.php?f=2&t=52819
- stl meshloader now faster, especially with text format
- CMemoryReadFile::seek CMemoryWriteFile::seek and no longer allowed to go _before_ start.
Thanks @sfan5 for patch: https://irrlicht.sourceforge.io/forum/viewtopic.php?f=2&t=52819
- stl meshloader can now load 32 bit buffers.
Thanks @Foaly for the patch: https://irrlicht.sourceforge.io/forum/viewtopic.php?f=9&t=51441
- Add IMeshBufffer::clone function to create buffer copies. CMeshManipulator::createMeshCopy uses that now and works now with all types of meshbuffers.
- obj writer can now write 32 bit buffers
- obj meshloader can now load 32 bit buffers when setIndexTypeHint is set correspondingly
It's 16 bit meshes use now also an IDynamicMeshbuffer instead of an SMeshBuffer.
Thanks @Wol101 for original patch proposal: https://irrlicht.sourceforge.io/forum/viewtopic.php?f=9&t=51441
- Add IMeshLoader::setIndexTypeHint and getIndexTypeHint to allow setting hints for the loaders if users prefer 16 or 32 bit meshbuffers.
Default is now to use optimal meshbuffer depending on number of vertices (if the loader supports it).
- Add IMeshBuffer::getType to allow finding out which class type a meshbuffer has (similar to ISceneNode::getType).
- Add IGUIImage::flip to flip/mirror images
- IBillboardSceneNode got functions to access meshbuffers. So uv-coordinates can now be modified directly (previously only possible via texture matrix).
- vector3d scalar operator/ and operator/= no longer multiply by the inverse but use the expected division.
Costs some speed, but fixes floating point troubles caused by this optimization (like x/x no longer being 1.0).
- Bugfix: XML reader dropped last character in strings if there was a special character replacement for the second-last character.
- Avoid allocating more than 16k on stack in OCT loader. Also avoid potential heap overwrites in there.
- obj file loader now allows using mtl files with spaces in the filename.
Note that this means it no longer handles obj files which have multiple mtl files behind the mtllib command.
But Irrlicht ignored all but the first name anyway and this way of handling mtllib commands seems to be more common.
- Many defines changed because they were using names which are reserved identifiers in c++.
Mostly it's about replacing __IRRxxx or _IRRxxx identifiers by versions without underscores
Sometimes underscores at end also got removed.
There is a header file irrLegacyDefines.h which can be included to allow having the old defines back.
Thanks @Markus Elfring for reporting this (bug #427)
- Add equals and set_data functions to core::array for easier working with blocks of data.
- SIrrlichtCreationParameters::IgnoreInput set to false works again on X11.
Thanks @ Victor Gaydov for report + patch + very good test cases! (bug #401)
This had been broken since Irrlicht 1.6
- Add steer parameter to CSceneNodeAnimatorFollowSpline which allows rotating node toward direction of movement.
Thanks @ Bate for the patch (patch #175)
- Add a workaround for XWarpPointer bug that causes mouse to jump when users have set a Coordinate Transformation Matrix for their mouse on X11.
This was mentioned in bug #450 by vikaig.
The fix needs compiling with _IRR_LINUX_X11_XINPUT2_ enabled (so far disabled by default)
- Add IGeometryCreator::createTorusMesh to create donuts.
- Don't try loading broken image files twice with same loader anymore.
- Make CImageLoaderJPG thread safe. Thanks @ Edoardo Lolletti for report and patch (patch #324)
- Add ETCF_SUPPORT_VERTEXT_TEXTURE flag which can be used to enable vertex texture sampling support in Direct3D 9.
Note that this was enabled for a long time in 1.9 svn, but is now disabled by default.
- CGUIListBox now serializes the state of "Selected". Feature wish by chronologicaldot (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=2&t=52719)
- Bugfix: Changing focus with tab-keys now also work when elements are inside a modal screen.
- COBJMeshFileLoader using a bit more exact color conversion for 0-1 to 0-255 range (same now as SColorf::toSColor uses).
- Speedup for COBJMeshWriter
- Add blinkMode parameter to IGUIEnvironment::addModalScreen, so blinking can be suppressed
- Speedup: Avoid string copy in CXMLReaderImpl::getAttributeByName
- Fix bug in rect::clipAgainst that had caused rects completely outside to the left-top of the rect to be clipped against ending up with both corners outside.
It still worked for UI in most cases as the resulting rectangle still had an area of 0.
- Add getAlign functions to IGUIElement
- Add optional multitouch support to X11 (but disabled in IrrCompileConfig by default). Thanks @TheBrokenRail for a patch proposal based on example code from esjeon (patch #322).
- Slightly changed close window handling on X11 (optimized and avoids problems on some shells). Thanks @TheBrokenRail for a patch (was part of patch #322).
- Add getActiveColor functions to IGUIStaticText and IGUIButton (get currently used color).
- Add IGUIEnvironment::addToDeletionQueue to allow save removal of gui elements while iterating over them (like the same named function in ISceneManager).
- IGUIEnvironment::drawAll has now a parameter to allow disabling automatic resize to screensize. Makes it easier to use partial screens with full alignment support.
- No longer try to set WM_QUIT when using an external Window on Win32.
Thx @Marko Mahnic for the patch (https://sourceforge.net/p/irrlicht/bugs/449)
- ply meshloader now also supports textures with uv-labels named texture_u/texture_v.
Thx @acy for bugreport and test-model (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=4&t=52646)
- Fix potential reading/writing 1 byte behind it's own buffer in PLY loader.
Thanks @wolfgang for report and patch (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52627&p=305573#p305573)
- ICursorControl::isVisible is now always returning the flag set in setVisible.
This changes the behaviour on Win32 somewhat when Windows returned a CURSOR_SUPPRESSED state (touch-screen input).
Previously we set IsVisible it to false when CURSOR_SUPPRESSED was set.
Also we handle the CURSOR_SUPPRESSED state slightly different now and still try to hide cursors once when requested.
- Improvements to B3D writer for speed, readability and handling of low framerate animations.
Thanks @JLouisB for the patch (For more info, see: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=2&t=50067&start=15)
- Add another render pass ESNRP_GUI which is drawn last and is p.E. useful for rendering gui nodes in the scenemanager.
- BurningVideo: 0.52
- 10 year anniversary update
- Lighting model reworked. moved to eyespace like openGL. [Specular Highlights, Fog, Sphere/Reflection Map]
- increased internal s4DVertex to support 4 Textures and 4 Colors [switchable]
- Textures are handled as sRGB during Mipmap Generation. More accurate, less visual disruption
- 2D is drawn as 3D like hardware drivers. [switchable]. enables viewport scaling, material2D, scissor
- Texture Spatial Resolution Limiting working. [lower memory consumption,SOFTWARE_DRIVER_2_TEXTURE_MAXSIZE]
- NormalMap for 1 Light accurate. still all lights are accumulated
- SuperTuxKart 8.0.1 playable
- Internal Backbuffer Scaling and Interlacing
- Known Problems
- Depthbuffer range not equal to Hardware Drivers. Problems with Orthographic Stencil Shadows
- Triangle MipMap Selection. Wrong for TextureAtlas and Billboards
- Fix CPLYMeshFileLoader checking for wrong vertex count when switching between 16/32 bit. Thanks @randomMesh for reporting.
- Fix bug that AnimatedMeshSceneNode ignored ReadOnlyMaterials flag when checking materials for transparent render passes.
- Unify checks if materials should use transparent render pass with new IVideoDriver::needsTransparentRenderPass function.
- Material.ZWriteEnable is now of type E_ZWRITE instead of bool. This allows now setting materials to always "on" independent of material type and transparency.
This breaks compiling. To have old values replace false with EZW_OFF and true with EWZ_AUTO.
- Materials EMT_REFLECTION_2_LAYER and EMT_TRANSPARENT_REFLECTION_2_LAYER on OpenGL are now same as in D3D9. Before GL used a sphere-map for those instead of reflection.
- Bugfix: CGUIToolBar automatic placement no longer outside of screen when there are modal screens when creating it.
Or when there are other window elements going over full window-size.
Thanks to Stephen Lynx for the bugreport and to Sérgio Augusto Vianna for writing a test case with a bug example.
Changes: a) Never move the toolbar below it's parents lower border. b) No longer check all element-types, but only try to be below other toolbars or menus.
- Add a normalType parameter to IGeometryCreator::createCylinderMesh
- Add a normalsUpdate parameter to IMeshManipulator::transform to allow updating the normals with the inverse-transpose of the transformation matrix.
- Bugfix: quaternion::slerp now uses lerpN instead of lerp to keep result normalized.
- Add function quaternion::lerpN which is like lerp but normalizes the result.
- Add function ISceneManager::createShadowVolumeSceneNode to allow custom ISceneNode's to use shadows.
- CGUITabControl serialization changed to allow using custom tabs (before only CGUITab could be serialized).
There was a lot of rewriting involved, including some minor interface changes (IGUITab* can now be added directly for example).
See http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52344 for a thread about this.
Thanks @chronologicaldot for bringing this up, writing a patch proposal and even writing test.
- CGUITabControl no longer eats EMIE_LMOUSE_PRESSED_DOWN (doesn't seem to need it, was just done for a planned feature which is not implemented yet).
- Removing a tab in CGUITabControl will now also remove the tab-element. Fixes problems like tabs still being around & visible when you removed the active tab.
- Add example 28.CubeMapping.
Based originally on EnvCubeMap example from irrSpintz engine.
Including a cubemap texture from Emil Persson, aka Humus from http://www.humus.name
- IGeometryCreator::createCubeMesh has a new parameter to allow creating different types of cube meshes.
Added a new cube-mesh with meshbuffers per side.
Also single buffer cube-mesh now normalizes it's normals.
- Bugfix: CBillboardTextSceneNode no longer disregards IsVisible flag
- FPS-camera rotation now smoother.
First bug was that it would sometimes skip back because it worked with wrong values for the screen-center position.
Second (and bigger) bug was that it ignored all cursor-movement which happened between device->run() and the point where
the animator did run. Tiny side-effect your camera will now rotate generally faster.
- Fix ms3d loader to work on big endian systems which need floats to be aligned in memory. Thanks @ kas1e, Corto and Salas for the patch (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52538).
- Bugfix: COBJMeshFileLoder no longer overwrites transparency value with 1.0 when it's set before the diffuse color value in the mtl file. Thanks @Boshen for bugreport (#445).
- Bugfix: OpenGL no longer antialiasing stencil buffer when driver has antialiasing disabled.
- Add IShadowVolumeSceneNode::setOptimization to allow disabling optimizations for meshes were contour shadows fail.
- Stencil shadows work now also with directional light
- Add example 27.PostProcessing written by Boshen Guan
- Drivers can now try to create textures from images in more exotic color formats (like floating point formats). It depends on the driver how much that works (so far mainly OpenGL can handle it somewhat).
- Fix OpenGL to no longer switch colors red and blue in 24-bit RGB format. But warnings added to documentation to avoid 24-bit textures as they are generally just trouble.
- No longer try to convert ECF_R5G6B5 to ECF_A1R5G5B5 on OpenGL (just made texture-loading seem to fail).
- Add parameter SIrrlichtCreationParameters.WindowResizable. Mainly to work around troubles with SDL+OpenGL on some platforms where resizing later can be tricky/impossible.
- Add operator[] to vector2d and vector3d
- Bugfix: IrrlichtDevice::isWindowMinimized no longer returns true when it's maximized on Windows.
- Ignore degenerated faces in obj file loader when they would generate triangles where 2 vertices use identical indices.
- Add CMatrix4::transformVec4 to transform vectors with 4 elements (thx @ devsh)
- Add ITexture::getOriginalColorFormat to access color format of images used to create a texture
- Add IMemoryReadFile interface which allows direct access to memory block used as file.
- Add IReadFile::getType() interface to all users to find out what kind of class implements that interface.
- .dae/Collada reader/writer now handle whitespace in texture-filenames with escape characters (handle them as xs:anyURI).
- Add function string::insert.
- EditBox now still allows overwriting characters when the text-length is at max.
- Bugfix: CMatrix4::transformPlane was calculating the wrong plane-normal before.
- SViewFrustum::recalculateBoundingBox no longer includes camera position in the bounding-box. Only using frustum corners now. Thx @DevSH for bugreport & patch.
- Camera uses now OGL projection matrices with OpenGL driver. Fixes wrong near-plane values with OpenGL (showed too much before).
- Add a flag to most CMatrix4::buildProjectionMatrix functions to allow creating OpenGL projection matrices (target range of -w to w instead of 0 to w).
- Bugfix: CCameraSceneNode resets the IsOrthogonal flag to false now when it recalculates a projection matrix.
- SViewFrustum::setFrom and SViewFrustum constructor now use a parameter to allow to set the correct near clipping plane when the projection matrix doesn't use a target depth range of 0 to z, but for example -z to z. So OGL projections matrices can now also use it.
- Remove code to read boundingbox element in Collada reader as it's not in Collada specification.
- .dae/Collada reader now converts from Collada's right-handed to Irrlicht's left handed coordinate system (switching z to -z)
- Add irr::string::eraseTrailingFloatZeros to kick out trailing 0's for strings generated from floats.
- .dae/Collada writer now converts from Irrlicht's left-handed to Collada's right-handed coordinate system (switching z to -z)
- Switch Collada writer to utf8 xml's.
- Add IXMLWriterUTF8
- IColladaMeshWriter::writeScene got an additional flag to decide if root should be written.
- _IRR_MATERIAL_MAX_TEXTURES_ now set to 8 by default. So we can use now 8 textures per material without recompiling the engine.
Additionally there's a new global variable irr::video::MATERIAL_MAX_TEXTURES_USED which can be set to lower numbers to avoid most of the costs coming with this for people not needing more textures.
But using more textures via _IRR_MATERIAL_MAX_TEXTURES_ also has become less calculation intensive than it was in the past, so in release builds the difference is hardly noticeable.
- Serialization fixes for materials in irr format (in IVideoDriver::createAttributesFromMaterial/fillMaterialStructureFromAttributes).
- Add serialization for ToolTip to IGUIElement. Thanks @chronologicaldot for patch (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=2&t=52374)
- Try recovering lost device in D3D9 for 3 seconds when device reset fails after resizing Window.
- Add typedefs like value_type and size_type to array, list and map like std containers have. Thanks @SLC for idea (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=1&t=52363)
- Remove unused enum E_LOST_RESOURCE
- CGUIComboBox uses now EGDS_SCROLLBAR_SIZE instead of EGDS_WINDOW_BUTTON_WIDTH for the width of the listbox button to allow changing that without changing window topbar height.
Thanks @LunaRebirth for reporting. (Forum: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=1&t=52297&p=303682#p303682)
- CGUIListbox, CGUITreeView and CGUITable now resize scrollbars when EGDS_SCROLLBAR_SIZE in the skin changes without having to re-create the elements.
This also fixes the problem that drawing looked wrong when this value got changed after the elements were created.
Thanks @LunaRebirth for reporting. (Forum: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=1&t=52297&p=303682#p303682)
- Scrollbar buttons can no longer get larger than half the ScrollBar element to avoid them overlapping.
- Add IVideoDriver::swapMaterialRenderers to allow swapping the renderer used to render a certain material.
- IMeshManipulator functions createMeshWith1TCoords, createMeshWith2TCoords and createMeshWithTangents no longer weld vertices while converting meshes. Use IMeshManipulator::createMeshWelded if you need that welding.
- Add ITerrainSceneNode::setFixedBorderLOD to handle connecting terrain nodes without gaps. Thanks @diho for the bugreport, testcase and a patch proposal (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=9&t=51220).
- PLY loader now works with files which use "st" instead of "uv" for texture coordinates (like generated from Blender or Assimp). Thanks @JLouisB for patch (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=9&t=52261).
- STL writer does now also write binary files when EMWF_WRITE_BINARY flag is used. Based on patch from JLouisB (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=9&t=52261).
(EMWF_WRITE_COMPRESSED also still works for downward compatibility)
- Improved PLY exporter. Thanks for Patch from JLouisB. (Forum: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=9&t=52261):
- Support for UV and vertex colors.
- Support for binary PLY files export with the EMWF_WRITE_BINARY flag
- Fix for the meshes with 32 bits index
- Fix wrong colors on big endian platforms with burnings renders. Thx @kas1e for reporting and @curaga for the patch (#318). Forum bug discussion at http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52177.
- Fix bug #440 where OpenGL driver enabled second texture for single-texture materials when setMaterial was called twice. Thx@ "number Zero" for bugreport and test-case.
- Irrlicht icon now loaded with LR_DEFAULTSIZE to better support larger icon requests. Thx@ luthyr for report and bugfix.
- Cursor on X11 behaves now like on Win32 and doesn't try to clip positions to the window
- IImage::copyToWithAlpha has a new parameter to allow combining alpha value instead of replacing them. This uses new blitters called BLITTER_TEXTURE_COMBINE_ALPHA. Thx @chronologicaldot for providing this patch and @burningreggae for his feedback.
- Add _IRR_COMPILE_WITH_PARTICLES_ to control compilation of particle system
- Add IGUIImage::setDrawBackground to allow disabling background drawing even when no texture is set.
- Fix: IGUIContextMenu now raises sub-menu when they would otherwise be displayed below bottom-border of root gui element.
- Prevent initializing/quitting SDL several times when using more than one Irrlicht device.
- Reduce log-messages for "loaded texture" and "loaded mesh" from ELL_INFORMATION to ELL_DEBUG.
- Add IGUIButton::setOverrideColor to allow overriding text-color (same function as statictexts and editboxes have).
- Add functions IGUIButton::getClickShiftState and IGUIButton::getClickControlState to get shift/ctrl key-state when a button was clicked. Thanks @StarSonata for patch.
- Add function ISceneManager::clearAllRegisteredNodesForRendering.
- Add function IVideoDriver::queryTextureFormat to allow checking if a driver supports textures with a specific color format.
- ISceneManager::getMesh can now creates meshes with alternative cache-names.
- Lets the BSP loader find textures inserted with relative paths. Thx@ curaga for patch
- Slightly simplified ALLOC_STRATEGY_DOUBLE in arrays
- Add alternative BoundingBox calculation for BillboardSceneNode which can take in a camera node. Thx @Seven and @JacKDuRdEn for bugreports.
- FPS camera now supports keyboard rotation.
- Base FPS-camera movement on last position of mouse instead of always center (works better on platforms where cursor-placement is not allowed)
- Octrees with other vertex types than EVT_2TCOORDS can now also use VBO's.
- Add IOctreeSceneNode interface to control polygon clipping checks for octree scene nodes.
- Add support for different geometric primitives to meshbuffers. Thanks @gerdb for patch proposal (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=45999)
- change SEvent::SUserEvent.UserData1 and SEvent::SUserEvent.UserData1 from s32 to size_t to avoid cutting numbers on some 64-bit platforms (SDL and Windows)
- Improve speed of draw3DBox (OpenGL and D3D9). Thanks @zerochen for patch (https://sourceforge.net/p/irrlicht/patches/256)
- Support more keys on OSX "[]\". Thanks @neoascetic for patch (#313).
- Fix IBillboardTextSceneNode::setTextColor which did nothing in the past. It now maps to setColor instead.
- Add access functions to IBillboardTextSceneNode (getText, getFont).
- Add access functions to ITextSceneNode (getText, getTextColor, setFont, getFont).
- Try harder to move Window to custom WindowPosition set in SIrrlichtCreationParameters on X11. Thx@ Hernan Ezequiel Di Giorgi for the patch (#304).
- Fix bug in virtual filessystem which prevented createFileList from working. Thx @Cube for reporting a problem.
- ITriangleSelector now can also return meshbuffer collision information.
- core::string::split now adds delimiter to token before delimiter when keepSeparators is true. That way we never end up with 2 tokens for an original string with a single character.
- Bugfix: SMesh::recalculateBoundingBox() does now ignore empty boundingboxes of meshbuffers instead of adding them.
- IIrrXMLReader::getAttributeValueAsInt and IIrrXMLReader::getAttributeValueAsFloat can now return a custom default-value when the attribute is not found.
- core::string::split now handles ignoreEmptyTokens=false correct. Thanks @manni63 for bugreport: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=51551&p=299375#p299375
- Bugfix: Previously when some material had a texture matrix and another didn't those materials were still considered identical. Which had prevented correct switching between materials with and without texture matrices.
- IWriteFile::write now returning size_t (like fwrite in c-lib). Also sizeToWrite parameter changed from u32 to size_t.
- IReadFile::read now returning size_t (like fread in c-lib). Also sizeToRead parameter changed from u32 to size_t.
- add clear function to strings.
- Collision manager now using const camera pointers.
- Several fixes for SceneNodeAnimatorCollisionResponse, based on http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=33098&p=290746
Thanks to all people who reported and to JLouisB and kinkreet for the patches:
- Gravity is now fps independent
- Values of gravity now like documented (wasn't 1 unit = 1m before, had been 1m = current frames per second, so maybe 100 units = 1m).
Note that jump-values for fps-camera must also change when adapting gravity!
Several examples got adapted for new ranges.
- Pausing timer now pauses animator. Also doesn't reset values anymore with pauses.
- Clones no longer have 1000 times the gravity of original animator.
- Should now be fps independent
- Speedup CTriangleSelector (mainly for animated meshes)
- CTriangleSelector now supports 32-bit meshbuffers. Thanks @Wol101 for reporting and patch-proposal.
- Fix: CTriangleSelector no longer resets it's boundingbox to 0,0,0 (was wrong when a meshbuffer was not around 0)
- Fix: Collada writer now uses wrap_p for third texture wrap value instead of invalid wrap_w (thx @Yoran for bugreport)
- Several getter functions in IAttributes made const (thx @Erik Schultheis for the patch)
- Fix: CTriangleSelector no longer ignores meshbuffer transformations from skinned meshes (thx @AlexAzazel for report and test-model).
- Randomizer now returns range 0..randMax as documented and no longer 1..randMax as it did before. randMax got reduced by 1.
Note: You will generally get different numbers than before! If you need the exact old calculations, please check the corresponding sources in Irrlicht 1.8 in os.cpp/.h
- Resetting Randomizer with 0 or no longer breaks it (will be set to 1). Same for other numbers for which it wasn't defined.
- Add SMaterialLayer::TextureWrapW for cubemap texture wrap mode at W axis.
- Add cubemap texture support for D3D9 and OpenGL drivers.
- Do no longer re-calculate md2 frames when they don't change (thx @npc for reporting)
- Add multibyteToWString wrapper functions around mbstowcs which work with Irrlicht string class.
- Fix: addFileArchive now grab()'s the archive when you pass one in by pointer.
- Fix: Prevent division by 0 in CGUIScrollBar::setPos
- Fix: Add missing serialization to CSceneNodeAnimatorCameraFPS and CSceneNodeAnimatorCameraMaya
- Fix: File-open dialog now restores the original locale after modifying it internally
- Fix first calculation of the camerascenenode boundingsphere.
- Fix bug with ignored opening brace in .X files with DeclData section. Thx @Alin for bugreport and patch.
- Fix problem with OpenGL textures cache.
- Add clear buffer flags and marked some methods used for clear buffers as deprecated.
- Fix skinned meshes not playing their last frame. Also clarified animation documentation to describe current behavior more exactly.
- Add IWriteFile::flush interface (thx @ JLouisB for the patch).
- CLightSceneNode::updateAbsolutePosition does now light recalculations. This is to fix using animators with lights.
- Fix Collada export for objects with rotations around more than 1 axis.
- Add ISceneNodeAnimatorCameraMaya::setTargetMinDistance and getTargetMinDistance.
- Add override font to IGUITreeView
- CGUIComboBox now updates selection-list when font changes while it's open (thx @ rubixcuber for bugreport)
- CAnimatedMeshSceneNode::setMesh does now set the animation speed again to that of the mesh (had been changed in 1.7, but not for obvious reasons)
- .x meshloader regards now AnimTicksPerSecond (thx @qian for a test-model and bugreport)
- Interface getMeshType moved from IAnimatedMesh up to IMesh.
- Add b3d mesh-writer. Static writer written by Hendu, support for animated meshes added by JLouisB, testing and bugfixes by CuteAlien.
- Node-collision functions of SceneCollisionManager like getSceneNodeFromScreenCoordinatesBB will now ignore collisions against empty boundingboxes.
- Cameras return again an empty boundingbox (at 0,0,0) instead of returning the frustum boundingbox (was changed in very old Irrlicht version).
You can access the frustum boundingbox through the frustum itself.
This means cameras no longer show up in the node-collision of the SceneCollisionManager (showing up there because of their frustum bounding-box was too confusing).
- Fix problem in IrrlichtDevice::setResizable on X11 that caused window titlebars to hide occasionally under the taskbar in some systems (Ubuntu, Mint).
- Added new IRenderTarget interface.
- Replace the swprintf and snprintf defines by swprintf_irr and snprintf_irr to avoid conflicts with the standard libraries (and other libraries).
- XBox support removed as it would need DX8 (this was about the original XBox).
- Support for Direct3D 8 removed after svn revision 5052 due to lack of maintenance.
- _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX removed. This was a bugfix for VS2003 (in combination with .NET) which we haven't supported in a while.
- VS 2005 support removed after svn revision 5048.
- WinCE 6 supported removed after svn revision 5046.
- NVidia CG support removed after svn revision 5045 due to lack of maintenance. NVidia has also stopped supporting this.
- TA burningvideo:
enabled triangle fan again so that skybox works.[need more testmeshes if other trianglefan than skybox doesn't work]
correct vc2013 project files for x64,static lib
correct alphablend vs add [was broken]
- Add a new core::rect constructor which takes a dimension parameter and set's left-top to 0.
- mtl (obj) format reader and write now regards texture scaling and translation. (thx @thanhle for noticing and patch proposal).
- Added Visual Studio 2013 project files.
- Added new color formats: ECF_R8, ECF_R8G8, ECF_D16, ECF_D32, ECF_D24S8.
- Can now enable/disable background drawing for IGUITable.
- Bugfix: Cloning CBillboardSceneNode now copies colors and sizes.
- EditBox works now with numpad on X11
- Added helper functions for converting between wchar and utf-8. Patch provided by Hendu.
- Added sphere frustum culling support. Patch provided by Hendu.
- Fixed issues with setViewPort method under OpenGL. (reported by anontypist)
- Fixed several selection, highlighting and clipping bugs in CGUITreeview (thx @ AReichl for the patch + test)
- Removed DllMain from the static windows build (thx @ AReichl for reporting)
- Fixed maximize/minimize under Linux by supporting NETWM hints. Patch provided by hendu.
- ISceneNode::deserializeAttributes uses now old values for parameters which are not in the attributes (thx @entity for noticing).
- Add interface for easier access to scrollbars for IGUIListBox, IGUITreeView and IGUITable
- Fix serializing colors as strings. Was previously mixing up strings with number-arrays and hex color values. Now using hex color values always, but also fixed the the handling when it get's number-array strings.
- Fix IAttributes::setAttribute implementation for textures (did do nothing before).
- Added support for separate blending in OpenGL and D3D9 drivers.
- Added pack_textureBlendFuncSeparate and unpack_textureBlendFuncSeparate functions, which allow to use separate blending functions in OpenGL.
- Added BlendFactor field to SMaterial which allow user to set blending factor per SMaterial set call without use EMT_ONETEXTURE_BLEND type.
- Fixed issue with blending operation set to EBO_NONE and some transparent material types.
- Add a code profiler (stop-watch style)
- Add IGUITable::getItemHeight to access item (row) height
- Add override font to IGUITable
- IGUITable can now disable the active column.
- IGUIElement::getElementFromPoint now virtual
- Fixed issue with wrongly enabled Z-writing for transparent shader materials. Thanks Hendu for this fix.
- Allow more control over particle behavior. This also changed the default behavior.
- ISceneNodeAnimators can now be disabled and paused.
- Maya camera no longer get's stuck in "rotating" state when a mouse-up event is lost (thx @ JLouisB for reporting).
- Focus behavior of IGUIEnvironment now controllable (right-click focus, mouse-over focus). Disabled elements no longer get the focus unless users enforce it.
- Buttons can now now have 7 more image-states, 1 more sprite-state and the sprites are now scaleable.
- Spritebanks can now draw scaled sprites and are a little easier to use.
- Improved i18n key input for X11 (languages like cyrillic work now).
- Fix bug that ListBox would not allow to 'tab' to the next element (thx @ FlavourBoat for reporting)
- IGUIEnvironment::getNextElement now public (was only in CGUIEnvironment before).
- Add an overwrite mode to editbox. Patch provided by Adam(aka kingadami).
- Add IGUIImages::setDrawBounds/getDrawBounds to allow coding stuff like progress bars.
- Add IGUIImages::setSourceRect/getSourceRect to allow using only parts of an image (can also be used to mirror and scroll them).
- Dev-Cpp project file removed (wasn't really supported for some time already)
- Collada dae-loader now set's the vertex colors (thx @sf17k for report and test-models)
- IAttributes interface changed. Parameters are now passed by const-ref instead of per value.
- Fix c::b project obj folder names. Some static builds had used the shared folders (thx @ gerdb for reporting)
- Add ITexture::getSource which can be used to check where the last IVideoDriver::getTexture call found the texture.
- Add IMeshTextureLoader interface and replace texture-loading algorithms in most meshloaders.
- CGUICheckBox no longer gives up focus on EMIE_LMOUSE_LEFT_UP (thx @Demre and @REDDemon for reporting)
- Bugfix: IGUIElement::addChild now prevents setting an element as it's own child.
- GUI editor improvements (prevent crash, improve UI)
- Add IrrlichtDevice::setWindowSize.
- Bugfix: getFont for xml-fonts now also works for fonts inside archives (thx @Neirdan for bugreport)
- Added function irr::core::mergeFilename
- Add ISceneNodeAnimator::setStartTime/getStartTime to allow resetting movement animators.
- Improve speed for finalizing skinned meshes (removal of unnecessary frames after loading) (thx @ichtyander for the testmodel)
- Collada loader now instantiates camera nodes which had been ignore so far (thx @NemoStein for the test .dae)
- line2d::intersectWith has a new parameter to allow ignoring intersections with coincident lines
- vector2d::equals now has an tolerance parameter for passing the epsilon (like vector3d had). Note that this changes the default
behavior of vector2d::equals as well as functions using it like the operators for ==, !=, <, >, <=, >= when using vector2d with f64
as the tolerance is increased in that case (for f32 and integer values it shouldn't make any difference).
- Material renderers which offers blending feature (eg. EMT_TRANSPARENT_ALPHA_CHANNEL, EMT_ONETEXTURE_BLEND etc.) require SMaterial::BlendOperation set to other value than EBO_NONE.
- Removed support for built-in T&L variables in ASM/GLSL shaders (variables related to vertices eg. gl_MultiTexCoord0 are still supported). This change allow us to reduce CPU overhead in shader material renderers.
- IGUIEnvironment::hasFocus has now a parameter checkSubElements as subelements are usually seen as part of an element. Default unfortunately must be false due to backward compatibility.
- Add IGUIElement::isTrulyVisible which works like ISceneNode::isTrulyVisible and checks for parent visibility as well.
- Improved DDS loader and added support for DXTn (DXT1-5) compressed textures in OpenGL and Direct3D9 drivers.
- Add function ISceneNode::getTransformedBoundingBoxEdges.
- Improve automatic compiling under Solaris (proposed by curaga)
- Add in IGUICheckBox: setDrawBackground, isDrawBackgroundEnabled, setDrawBorder, isDrawBorderEnabled
- IGUISpinBox now passes on the EGET_BUTTON_CLICKED, EGET_EDITBOX_CHANGED and EGET_EDITBOX_ENTER events from it's sub-elements.
- IGUISpinBox no longer validates values after each character type but only on KEY_ENTER and when losing focus. New behavior can be set with IGUISpinBox::setValidateOn
- IAttributes::getAttributeAs functions now can have a customizable default-parameter to return when attributeName is not found
- Added ECFN_DISABLED value (it works like ECFN_NEVER worked before) and changed ECFN_NEVER behaviour
(it works like its equivalent value in OpenGL/Direct3D).
- Removed boolean interface from IShaderConstantSetCallBack, please use integer interface instead of them.
- Add a LeakHunter class which can be enabled with compile-flag _IRR_COMPILE_WITH_LEAK_HUNTER_ to find leaking IReferenceCounted objects.
- Add _IRR_COMPILE_WITH_XML_ define to allow compiling Irrlicht without xml (patch written by curaga)
- Add functions to set/get cursor character and blinktime to IGUIEditBox
- Collada exporter calculates values for orthographic camera now on export
- Collada exporter now exports the camera up-vector correctly.
- Add IColladaMeshWriter::findGeometryNameForNode
- Add getters IGUIButton::isDrawBorderEnabled and IGUIButton::isDrawBackgroundEnabled
- changed CSkyBoxSceneNode to drawIndexedTriangleList instead of drawIndexedTriangleFan (because software renderers don't have fans.. and i needed the demo functionable)
- added x64 to vs2008 project ( buildAllExamples_v9 ) [paths: obj64, win64-visualstudio]
- burningvideo: getMaxTextureSize adjusted [ changed meaning of SOFTWARE_DRIVER_2_TEXTURE_MAXSIZE
- burningvideo: mipmaplevel adjusted ( not that bad bokeh...(sometimes) )
--------------------------
Changes in 1.8.6
- CXMeshFileLoader: fix buffer overreads with text format. Thanks @sfan5 for report and patch.
Patch (commit 6f4f7c4 to Minetest): https://github.com/minetest/irrlicht/commit/6f4f7c4d75c9d563e98d3936ed8bc6e248dc14a8
- Fix CB3DMeshFileLoader::readString. Prevent adding a character beyond file-end. Thanks @sfan5 for report and patch.
Original patch (commit 103ab16 to Minetest): https://github.com/minetest/irrlicht/commit/103ab16679a42cb1bfa4cc4e6316195ec2d139b6
- CB3DMeshFileLoader: add some bounds checks. Thanks @sfan5 for report and patch.
Original patch (commit 64688f4 to Minetest): https://github.com/minetest/irrlicht/commit/64688f449099246ec27eb013f58d72a0abb1c6e6
- TGA loader: Fix number overflow causing crashes. Thanks @sfan5 for fuzzing test.
- TGA loader: Fix several buffer overflows. Thanks @erlehmann for report and @sfan5 for fuzzing test: https://github.com/minetest/irrlicht/issues/236
- COBJMeshFilerLoder: prevent buffer overruns from loading files passing negative indices. Thanks @sfan5 fore report and patch.
Patch (commit 827710f to Minetest): https://github.com/minetest/irrlicht/commit/827710f74a615f53b2a1b0c539c58c2b6124f883
- COBJMeshFilerLoder: fix buffer overruns when loading empty face lines. Thanks @sfan5 fore report and patch.
Patch (commit 80e1609 to Minetest): https://github.com/minetest/irrlicht/commit/80e160935d3c2677344b0968c2690f63083a98dd (partially applied)
- CObjMeshFileLoader: Backport fixes from trunk to avoid unnecessary memory allocations (speedup)
- CObjMeshFileLoader: Backport fixes from trunk to avoid some buffer overruns
- CImageLoaderBMP: Fix handling 4 bit RLE encoding. Thanks @sfan5 finding first bug and reporting (had some more)
- CImageLoaderBMP: add bound checks to RLE decompression. Thanks @sfan5 for report and patch
Patch (commit 4506d23 to Minetest): https://github.com/minetest/irrlicht/commit/4506d23dc3fa48332b5ca6c05633aebdbac673be
- CImageLoaderBMP: check bitmap data against required size. Thanks @sfan5 for report and patch
Report: https://irrlicht.sourceforge.io/forum/viewtopic.php?p=307195
Patch (commit 028cb8d to Minetest): https://github.com/minetest/irrlicht/commit/028cb8dbed8266264a5804108191f56e238db1bc
- Fix OSX 10.9X build problem related to NSApplication setDelegate calls getting casted to wrong class (Bug #462 and also fixing older Bug #297)
Thanks @Ryan Schmidt for bug report and patch.
- Backport: Fix compiling for Apple silicon (Bugs #452 and #461). Thanks @Ryan Schmidt for bug report and updated patch.
- Fix compiling on OSX with case-sensitive filesystems: IrrFramework-Info.plist now always starting with upper-case.
Thanks @Ryan Schmidt for bug report and patch.
- Fix: The build-in libpng now uses same zlib headers as rest of Irrlicht.
This fixes OSX compiling (which didn't have zlib in include path and used system header for this one instead).
Thanks @Ryan Schmidt for bug report.
- Backport parts of COpenGLCommon.h to ensure that COpenGLExtensionHandler, COpenGLShaderMaterialRenderer and COpenGLTexture all use identical GL extension settings
- Backport removing register keywords (deprecated by c++17)
- Backport bugfix from trunk to make CUserPointerAttribute::setString work on 64-bit systems.
- Remove unnecessary implemented assignment operator in quaternion, irrMap, SViewFrustum, line2d and IQ3Shader which cause warnings with -Wdeprecated in newer gcc
- Avoid warning about stringop-overflow in string<T>::subString when compiling in release with newer gcc
- Update library zlib to 1.2.11 (from 1.2.8)
- Update library bzip2 to 1.0.8 (from 1.0.6)
- Security: Fix buffer overflow caused by malformed md2 files. Thanks @procfs for reporting (https://irrlicht.sourceforge.io/forum/viewtopic.php?f=7&t=52785)
- Makefile now only adds CFLAGS instead of overwriting them.
- Several spelling fixes (Patch #455). Thanks @J. Puydt
--------------------------
Changes in 1.8.5 (1st November 2021, svn [r6263])
- Fix some aes compile warnings on gcc about fall-throughs.
- No longer include sys/sysctl.h on other platforms than OSX. Fixes compile errors in COSOperator on newer Linux systems.
- Update script to generate tutorial.html's in example folders. Add missing ones. Update existing ones. Thanks @Guillian J for noticing those were outdated.
- Update libpng to 1.6.37 (from 1.6.23)
- Fix CIrrDeviceSDL::getVideoModeList which didn't return video modes before. Thx @kas1e for report and patch.
- CIrrDeviceMacOSX now sets the SEvent.MouseInput Shift and Control values on mouse events like the other devices. Thanks @ Zero King for patch (#321)
- isWindowFocused in IrrDeviceSDL device now returns the input focus like the other devices. Before it was returning a mouse-over-window state.
- Prevent SDL device from dropping OpenGL resources on Win32 when setResizable was called with OpenGL driver. Thanks @ kas1e for reporting (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52083&start=0)
And thanks to http://www.bytehazard.com/articles/sdlres.html for the workaround.
- Fix isWindowActive when using SDL device. Before it was only active when the mouse was over the window. Thanks @ kas1e for reporting (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52083&start=0)
- Fix SViewFrustum::clipLine. Was before clipping at wrong points (inverse places along lines).
- Fix compilation on OSX and prevent capturing mouse cursor when Window is not on top (Patch #319)
Thanks at Artem Shoobovych for bugreport and patch (https://sourceforge.net/p/irrlicht/patches/319/)
- Fix serialization of OverrideTextColorEnabled flag in CGUITab. Thanks @ chronologicaldot for reporting (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52344&p=303891#p303891)
- CFileSystem::getAbsolutePath no longer wrongly converts an empty filename to "/" on unix platforms.
This fixes the bug that CFileSystem::createAndOpenFile("") returned a (strange behaving) non-null file pointer.
Additional check also added in createAndOpenFile to early out on empty names.
- Fix bug in cursor positions when compiled with newer Windows SDK's (v110 in VS2012) and running on Systems >= Windows Vista in windowed mode.
Thanks @Mustapha Tachouct for the bugreport and patch proposal. Also thanks @BakeMyCake for an earlier report.
- IOSOperator::getSystemMemory() no longer returns incorrect values with >2GB. Thanks @Eduline - human development for report and patch.
- Increase KEY_KEY_CODES_COUNT to fix problem with laptop keyboards which return the keycode 0xff for the function key. Thx @Klokancz for bugreport and patch.
- Fix bug when calling activateJoysticks on windows several times. It had appened joystick information instead of replacing it, thereby increasing joystick number on each call.
Only happened compiling with _IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_ (which is the default). Linux and SDL implementation not affected.
Thx @Andrea Demetrio for the bugreport.
- Fix bug in fast_atof when reading floating point numbers with more than 16 digits past the dot. Those produced completely wrong results (sometimes even causing INF numbers).
This bug also did cause many meshloaders to have problems with certain meshes (basically all text-based formats are affected).
- Accuracy of fast_atof is back to older Irrlicht versions (fixes test warnings, usually not a noticable problem).
- Fix crash in eventhandling when calling remove() on a contextmenu while it has focus.
- CImageLoaderJPG::isALoadableFileFormat uses a test which allows to load more jpg formats (for example uncompressed jpg's). Thx @Yaron Cohen-Tal for report, test-image and his help with the patch.
--------------------------
Changes in 1.8.4 (9th July 2016, svn r5321)
- Tests on Unix now have a short pause between switching drivers to avoid certain X11 errors.
- Fix CEnumAttribute::getInt() which could crash (thx @ luthyr for reporting)
- No longer try to run tests for drivers not supported on a platform
- Update lights and renderTargetTexture tests to work with Windows 10 (can't have so tiny Windows anymore).
- Deprecate CMatrix4::transformBox as the result is no longer a boundingbox. Use CMatrix4::transformBoxEx instead (which has been available for a long time).
- Fix CSceneCollisionManager::getPickedNodeBB which could sometimes miss collisions.
- Add -U__STRICT_ANSI__ option to c::b project files to allow compiling with -std=c++11 and add an error when trying to compile with Irrlicht with __STRICT_ANSI__
- Update libpng to 1.6.23
- Update zlib to 1.2.8
- Fix some compile warnings in aes which got handled as errors by some c++11 compilers.
- Get rid of some misleading-indentation warnings in gcc6
- Fix serialization of the InputReceiverEnabled flag in CCameraSceneNode
- Fix pasting text from X11 applications to Irrlicht. Thanks @est31 for the patch.
- Tests give now a warning when stabilizing screenshots failed. Also trying more often now (a hack as taking screenshots otherwise fails often in windowed mode on some systems).
--------------------------
Changes in 1.8.3 (13.9.2015)
- Fix the fix for compiling on GCC5 (thanks to est31 for report and patch)
--------------------------
Changes in 1.8.2 (30.8.2015)
- Add VS2013 project files
- Fix compiling with IRR_LINUX_XCURSOR_
- Fix compiling with NO_IRR_COMPILE_WITH_LIBJPEG_ (thx to anontypist for report and patch).
- Fix compiling on GCC5 on MinGW (thanks to Slipxy for finding the bug and to osense for reporting it).
- Fix loading of .X and .B3D models with non-normalized quaternion rotations (thanks to JLouisB for a test-model).
- Fix compiling on Free BSD (thanks to leper for reporting and patch)
- Fix bug with multiple SetPixelFormat calls. (reported and fixed by anontypist)
- Fix bug related to memory release in PNG image loader. Thanks elephoenix for it.
- Fix crash in CGUIListBox when users pressed end key folled by any other key in an empty, focused list box (thanks at porcus for report and patch).
- Fix use of enabling defines for wal2 (halflife) image loader. Thanks to hendu for noticing.
- Fix userClipPlane test by inserting the stabilizeScreenBackground call
- Demo enables antialiasing now correct (thanks to Mel for noticing).
- Update glext.h (bug #429)
- Example 22 no longer select a random texture after loading a new texture (thanks at mongoose7 for reporting).
- Fix bug in IGUISkin serialization which messed up serialization of the button-pressed offsets (thanks at Midnight for reporting).
- IGUIStaticText::getTextHeight returns now the correct height for texts with newlines even WordWrap is not set.
- Crashfix for CGUIEditBox. CGUIEditBox::setMultiLine must break text when changed or other functions like getTextDimension can crash afterward for strings with newline characters.
- CGUIEditBox and the GUI-Editor now convert pasted text correctly using mbstowcs.
- C::B project files work again on newer Linux-distributions which have cleaned up their dev-lib dependencies.
- Makefile for the new IrrFontTool links now correctly to libfontconfig
--------------------------
Changes in 1.8.1 (17.11.2013)
- Improved OpenGL performance under OSX (Thanks devonsoft for reporting).
- Fixed OSX compilation issues.
- [KNOWN BUG] Software driver doesn't work properly under OSX 10.9.
- For speed improvement the following attributes accessible by ISceneManager::getParameters() are no longer updated in release:
"culled", "calls", "drawn_solid", "drawn_transparent", "drawn_transparent_effect".
They can be enabled by compiling Irrlicht with the define _IRR_SCENEMANAGER_DEBUG.
Thanks @hendu for reporting, see http://irrlicht.sourceforge.net/forum/viewtopic.php?f=2&t=48211 for the discussion.
- Fix compile problem with CIrrDeviceSDL on VS2008 (and maybe other systems). Thanks @HellFlip for reporting.
- Fix quaternion::rotationFromTo() (Thanks @takamoto for reporting)
- Fix iszero for s64 (Thanks @chronologicaldot for reporting)
- Fix crash in SoftwareDriver2 when Material was EMT_DETAIL_MAP but texture[1] was not set (Thanks for fix by chronologicaldot)
- Fix buffer overrun in x-loader (Thanks for fix by Otaka)
- Fix cursor visibility update problem under Windows 8 (Thanks @luthyr for reporting)
- Fix irredit links in loadScene/saveScene docs.
- Fix issue in CAnimatedMeshSceneNode::clone which caused a crash. (reported and fixed by luthyr)
- Fix compiling errors for c++ builder (thx @Greatwolf for many patches and @cfanderek for reminding)
- Initialized IColladaMeshWriter::GeometryWriting which was uninitialized.
- Fix linker trouble with irr::core::equalsByUl when compiling Irrlicht as managed code (thx @ Memorial76 for a report + testcase)
- Fix crashes in CCubeSceneNode::clone and CSphereSceneNode::clone (reported by marsupial)
- Fix the clipping in the listbox drawing which was only showing the right line of the sunken pane (reported by Mloren and Abraxas).
- Initialize slider in example 05 correct (reported by Zerochen)
- Fix crash in CMeshSceneNode::clone when the mesh had no shadow (reported by christianclavet, bug-fix found by Nadro)
--------------------------
Changes in 1.8 (7.11.2012)
- Let sphere mesh use full opaque color, just as all the other ones do
- 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)
- 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.
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).
- matrix4::setRotationAxisRadians added
- user clipplanes fixed
- Skip rendering of lines, points, and polygons, as these lead to crashes 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.
- Add mipmap generation for makeColorKeyTexture
- Add another saveScene overload which allows to pass in a user-created XMLWriter. Patch suggested by eversilver.
- quaternion conversions to and from matrix4 no longer invert rotations.
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.
Then on all compile-errors when you pass the matrix to the quaternion you can replace the matrix with the transposed matrix.
For all errors you get on getMatrix() you can use quaternion::getMatrix_transposed instead.
- CGUIEnvironment::loadGui - loading a gui into a target-element no longer messes up when the gui-file contained guienvironment serialization.
- Colladawriter now exports materials per node when those are used in Irrlicht
- Colladawriter now writing matrices for node transformations as old solution did not work with CDummyTransformationSceneNode's.
- Colladawriter no longer create an extra node for the scenemanager as <visual_scene> has that job in Collada.
- Colladwriter no longer makes all Scenenodes children of ambient-light as that can be parallel on the same layer instead.
- Colladareader now creates the ambient-light correct instead of creating a point-light for it.
- 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.
- Add IAnimatedMeshSceneNode::getLoopMode (asked for by JLouisB)
- CSceneNodeAnimatorCameraFPS now resets the key-input when it was disabled (thx @ gerdb for reporting and patch-proposal)
- Properly destroy OpenGL resources on linux (thx @curaga for the patch)
- Fix display bugs in the attribute-panel of the GUIEditor. Fixes bug 3517314 (thx @Darkcoder for reporting).
- Allow caching cursor position on X11 to work around slow XQueryPointer calls (thx @Hendu for reporting+patch proposal)
- 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).
- Fix string::replace which failed replacing substrings at the end when the replacement was longer
- Struct packing works now with gcc 4.7 changes on MinGW (thx @Sudi for reporting).
- Struct packing uses now same solution throughout (by including headers in corresponding places)
- User can now set characters used for decimal point in fast_atof for localisation.
- Add parameter useAlphaChannel to second IGUIEnvironment::addImage function.
- Get rid of unnecessary warning "Could not load sprite bank because the file does not exist" for "#defaultfont".
- Fix MRT disabling. Bug found and fixed by hendu.
- core:::array::reallocate returning now immediately when it has nothing to do. Should reduce a lot of memory thrashing on irrArrays.
- Start mesh animations at first OnAnimate , before start-frame was rather random. Thx @Auria for reporting and patch proposal.
- renderTargetTexture now working with ECF_R5G6B5
- add -fPic in c::b linux fast math shared build.
- Fix by Auria for starting the animated meshes only at first OnAnimate instead of at random times and animation frames.
- 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.
- triangle3d::isPointInsideFast now using some epsilon to catch all points on the borders.
- triangle3d::getIntersectionOfPlaneWithLine calculates now with higher precision for more exact results.
- 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.
- new function equalsByUlp to test for spacing between floating point numbers.
- speedup for collada writing.
- speedup for xml-writing.
- 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.
- fixed issues with a D3D driver and Aero effects.
- Fix font-drawing in CGUIButton to use EGDF_BUTTON again (thx @DJLinux for reporting).
- 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
- CFileSystem::removeFileArchive now checking for normalized path
- Fix zip's with passwords on 64-bit systems (thx @ Dr. Gladman for writing the bugfix)
- replace asserts in tests with macro assert_log to allow running all tests through on problems.
- added IGUIElement::setName and IGUIElement::getName (similar to ISceneNode)
- irr::s64 support
- line2d::getClosestPoint can now also get the closest point on the line additional to only checking for closest point on the line-segment.
- avoid division by zero in line2d::getClosestPoint when start- and endpoint are identical
- Support for sw drivers under OSX
- Fix font-loading which got broken by fixed xml-loading. Thanks @ pc0de for finding and providing a test and patch.
- Don't crash draw2DSpriteBatch when it get's no textures.
- Add support for int passing in setShaderConstant
- Support for better collada texture wrapping support on loading.
- 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.
- 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).
- CXMLReader initializes IsEmptyElement now.
- line2d::intersectWith and and line2d::getClosestPoint work now also with integers.
- line2d::intersectWith and and line2d::getClosestPoint work now also with integers.
- 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.
- Add Nadro's initial Cg support. Example 10 is enhanced to allow also Cg shaders.
- Add mipmap support from FBO extension, patch by Nadro.
- Add vertex optimization algorithm submitted by curaga
- rename texureBlend functions to textureBlend
- Add threshold for slerp calculation, switching between linear and slerp at this point.
- Fix for bug 3401933 - vertex color interpolation with shadow volumes in the scene
- Fixed bug in button sprites reported by RdR
- Fixed button state sprite animations for pressed, focused and hovered.
- Added serialization for terrain smooth factor, patch by RdR
- Implemented more button states for sprite banks, patch submitted by RdR
- Add IGUIEnvironment::getHovered to get the element most recently known to be under the mouse cursor
- Add FPS settings for animated meshes, which allows to push animation speed from files to Irrlicht animation system
- Maya camera updates
- Add support for bsp brush entities. Written by Hendu.
- weighted normals recalculation fixed
- Billboard improvements
- API docs updates
- triangle selector improvements
- OSX improvements by Auria
- Add new methods for adding and removing file archives based on ifilearchive pointers.
- Add getBackgroundColor, isDrawBackgroundEnabled and isDrawBorderEnabled to IGUIStaticText (thx 4 patch from Nalin).
- Reduction of multiple skinning the same mesh and frame in one render cycle
- Added ISceneNodeAnimatorCameraFPS::getKeyMap and a new ISceneNodeAnimatorCameraFPS::setKeyMap.
- 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).
- 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.
- Fix LZMA decompression
- Ply normal fixes
- HW buffers only support rendering with both vertex and index buffers
- Enables VBOs for water node
- Octree support for non-standard vertex meshes
- Fix rotationFromTo
- Added ConstIterator
- Fix for getScreenCoordinatesFrom3DPosition to use proper RTT sizes
- Add IGUIComboBox::setMaxSelectionRows and IGUIComboBox::getMaxSelectionRows
- Scenemanager switches from type ESNT_UNKNOWN to type ESNT_SCENE_MANAGER.
- Add getActiveFont to all elements which have setOverrideFont for cleaner code
- Add getOverrideFont to all elements which have setOverrideFont to have a consistent interface
- IGUIEditBox: added missing serialization for Border
- IGUIEditBox: remove bug that added spaces to the end of each line
- IGUIEditBox: fix crash that happened when wordwrapping was enabled, spaces were entered beyond the border and then cursor-key was pressed.
- IGUIEditBox::setDrawBackground added.
- CGUISkin::draw3DSunkenPane no longer ignores fillBackGround in non-flat mode. Also borderlines are no longer drawn overlapping to avoid ugly corners.
- CDummyTransformationSceneNode::clone() added.
- IParticleSystemSceneNode::doParticleSystem now public to allow rendering outside scenegraph.
- getRelativeFilenames updates and fixes
- 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.
- Added IGUITabControl::insertTab, IGUITabControl::removeTab, IGUITabControl::clear and IGUITabControl::getTabAt
- Add 32bit support to some mesh manipulator methods
- Fix mipmap locking under OpenGL
- Improvement of screenshot function to support more color formats and targets
- getAngle fix to avoid NaNs
- Available gfx memory output in log messages
- Improved 2d render settings and caching
- Initial support for sRGB render functions
- Improved terrain scene node rendering
- Paletted png image support fixed
- Gamma settings in image loaders improved
- Support for relative filenames in serialization
- Access to selectors inside meta selectors implemented
- DirectInput joystick support
- Support for scaling with draw2dimage with burnings video
- More gl extensions have correctly initialised return values
- Some fixes for quaternion to euler function
- Properly return nullptr if RTT creation fails on low levels
- Added IGUIListBox::getItemAt
- Add more image formats tried to load by q3 level loader
- Add fast_atof improvements from assimp, also strtoul10 method
- Add blend equation function for MRTs
- Add new material fields for blend operation and polygon offset (depth bias).
- Reorder texture stage assignments
- Improved VSync handling
- Fix Ogre loader for materials with more than one texture
- Fix createMeshCopy material handling
- Framework target for OSX project added
- Terrain scene node fixes
- Fix HSL color class
- Fix color selection GUI element
- Transparency issues in particle system fixed
- Particle sphere emitter rand values fixed
- Support Unicode SHY dynamic hyphen in word wrap
- Fix OBJ reader sometimes running over EOF
- Added IGUITable::getColumnWidth
- Billboard text animates in OnAnimate now
- Fix mountpoint reader to properly sync file names and firectories
- 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.
- Added support for right-to-left (RTL) text, supplied by Auria from STK
- Added ISceneManager::createSceneNodeAnimator to create animators by name
- The Makefile now creates a symlink from the soname to the binary name during install. Binary compatibility is only confirmed between same minor releases.
- Added SMF mesh loader, loads meshes from 3D World Studio. Originally written by Joseph Ellis
- 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.
- Added getters to retrieve mesh, scene and archive loaders.
- Added ISceneLoader interface and .irr loader. Users can now add their own scene loaders to the scene manager and use them by calling loadScene.
- Renamed IGUIElement::bringToBack to sendToBack, like in Windows
- Send EGET_ELEMENT_CLOSED event when context menus should be closed (thx @ Mloren for reporting).
- Added treeview to GUI editor, provided by Armen
- Added root type for GUI environment
- zip archive fixes: Fix directory tags in file list. Fix loading of stream zip files which have file sizes only in the central directory.
- Fixed panel scrollbars in GUI editor, reported by Armen
- Fix b3d loading of files with mixed mesh/bone sections.
- 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.
- 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.
- 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).
- Add method to make a filename relative to a given directory.
- Fix setMesh to correctly update the joints cache.
- Fix setting transition time of skinned meshes back to 0.
- Add some getters to IGUIImage: getImage, getColor
- Fix OpenGL FBODepthTexture to create less overhead
- Fix MRT disabling under OpenGL
- 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.
- Speedup deleting of particles
- Add function IParticleSystemSceneNode::clearParticles
- Fix RTT render states under OpenGL
- Fix AntiAliasing setup under Windows/OpenGL in case no AA is available
- Fix transformation matrices when RTT used
- 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.
- More checks for Stencilbuffer
- Improve render state resets
- Fix MRT handling
- Fix file search
- Add flag and method to disable clipping of the text to the gui element rectangle in GUI static text.
- 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.
- Add function IGUIEnvironment::removeFont (TODO: Does not remove the texture from cache so far)
- Fixed mem leak in mountfilesystem
- Update to libjpeg 8b, zlib 1.2.5, bzip2 1.0.6, libpng 1.4.4 and lzma from 9.20 SDK
- 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)
- Fix blend states for MRTs
- 64bit targets for MSVC added
- The following functions will now use a "ISceneNode *" instead of a "const ISceneNode *":
ITriangleSelector::getSceneNodeForTriangle, ISceneNodeAnimatorCollisionResponse::getCollisionNode, ISceneCollisionManager::getCollisionPoint and ISceneCollisionManager::getCollisionResultPosition.
As collision functions often are followed by changing node positions users where so far forced to using const_casts (found by Greenya).
- Add vector3d::getAs3Values (patch provided by slavik262)
- Add function to SViewFrustum to get corners of the near plane (patch provided by Matt Kline, aka slavik262)
- ParticleFadeOutAffector::setFadeOutTime can no longer be set to invalid values
- ParticleFadeOutAffector uses now throughout u32 for fadeOutTime (found by greenya)
- Add missing access function CParticleSystemSceneNode::getAffectors() (seen by B@z)
- Add missing setters/getters for particle emitters (seen by B@z)
- Compile-defines can now be disabled from Makefiles/Projectfiles instead of having to change IrrCompileConfig.h each time.
- IGUITabControl::setActiveTab should only take IGUITab* and not IGUIElement* (thx to greenya for finding)
- Add new skin-colors: EGDC_GRAY_WINDOW_SYMBOL, EGDC_EDITABLE, EGDC_GRAY_EDITABLE, EGDC_FOCUSED_EDITABLE
- Disabled state is now extended to sub-elements
- Make disabled state for several elements more visible