forked from paupawsan/Irrlicht
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathchanges.txt
4247 lines (2832 loc) · 196 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
# cubeat-irrlicht is currently based on post 1.7 branch of mainstream irrlicht
(05.2010)
-----------------------------
Changes in 1.7.1 (17.02.2010)
- 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.
- Prevent that X11 selects larger resolutions in fullscreen even when perfect fits are available.
- Ignore setResizable also on X11 when we're fullscreen to avoid messing up the window mode.
- Work around a crash when pressing ESC after closing a Messagebox (found by Acki)
- Prevent borland compile warnings in SColorHSL::FromRGB and in SVertexColorThresholdManipulator (found by mdeininger)
- Improve Windows version detection rules (Patch from brferreira)
- Make it compile on Borland compilers (thx to mdeininger)
- Make sure that CAnimatedMeshSceneNode::clone calls the virtual updateAbsolutePosition for the new object
- Fix that clones got dropped too often when SceneNodes without parent got cloned (found by Ulf)
- Make sure TAB is still recognized on X11 when shift+tab is pressed. This does also fix going to the previous tabstop on X11.
- Send EGET_ELEMENT_LEFT also when there won't be a new hovered element
- Update docs for EGET_ELEMENT_LEFT and EGET_ELEMENT_HOVERED
- Fix tooltips: Remove them when the element is hidden or removed (thx to seven for finding)
- Fix tooltips: Make (more) sure they don't get confused by gui-subelements
- Fix tooltips: Get faster relaunch times working
- Fix tooltips: Make sure hovered element is never the tooltip itself
- Fix string::remove which got in an endless loop when remove was called with an empty string (found and fixed by Ulf)
- Correctly release the GLSL shaders
- Make sure we only release an X11 atom when it was actually created
- Fix aabbox collision test, which not only broke the collision test routines, but also frustum culling, octree tests, etc.
- Fix compilation problem under OSX due to wrong glProgramParameteri usage
- mem leak in OBJ loader fixed
- Removed some default parameters to reduce ambigious situations
---------------------------
Changes in 1.7 (03.02.2010)
- Implement minimize and deminimize under OSX.
- 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.
- Ogre mesh 32bit indices fixed.
- Fix tooltips for gui-elements with sub-element like IGUISpinBox (id: 2927079, found by ArakisTheKitsune)
- ITimer no longer stops when started twice
- wchar_t filesystem updates under Windows.
- Joystick POV fixed under Windows, ids fixed under OSX.
- Some updates to skinned mesh for better bones support and scaling animations.
- OSX supports external window id in creation parameters now.
- Fix bbox collision tests.
- Updates for win32 key handling
- new convenience method for flat plane creation.
- Sky dome and other meshes use VBOs by default now.
- Speed up b3d loading for files with many frames, material color flags and vertex color support enhanced.
- Add hasType to IGUIElement as a dynamic_cast substitute.
- Add another parameter to IGUISkin::draw3DWindowBackground to allow getting the client area without actually drawing
- Add function getClientRect to IGUIWindow for getting the draw-able area
- Fix bug that menus on IGUIWindows with titlebar got drawn too high (id: 2714400)
- Renamed OctTree to Octree
- Allow getting a ConstIterator from a non-const core:list
- Add swap functions to irrMath and to the core classes.
- Deprecate map::isEmpty() and replace it with map::empty() to make it similar to other base classes.
- Allow to set the logging level already in SIrrlichtCreationParameters.
- Add clearSystemMessages to devices (implemented only for Linux and Win32 so far).
- Support changing the render window from beginScene also with OpenGL driver.
- Add getMaterial2D which allows to alter the 2d render state settings, such as filtering, anti-aliasing, thickness, etc.
- Fix incorrect cursorpos for resizable windows on Windows Vista (found and patched by buffer)
- Change the beginScene window parameter from void* to SExposedVideoData&. This will allow to manage contexts for OpenGL at some point.
- Add bzip2 and LZMA decompression modes for zip loader.
- Add OBJ_TEXTURE_PATH and B3D_TEXTURE_PATH to SceneParameters to allow setting texture-paths for obj and b3d.
- Irrlicht keeps now filenames additionally to the internally used names, thereby fixing some problems with uppercase-filenames on Linux.
- Bugfix: Mousewheel no longer sends EMIE_MOUSE_WHEEL messages twice on Linux.
- Use latest jpeglib
- refactoring: E_ATTRIBUTE_TYPE and IAttribute have now own headers
- CStringWArrayAttribute speedup
- SceneNodeAnimatorFollowSpline can now loop and pingpong
- Meshviewer.example got some fast-scale buttons.
- 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.
- flattenFilename and getAbsolutePath fixed and properly added at several places.
- Added geometry shaders for OpenGL. A first version of the code was submitted by Matthew Kielan (devsh).
- Bugfix: irrArray should no longer crash when using other allocators.
- Add MaterialViewer example.
- Texture activation now back in setMaterial, which simplifies writing external material renderers (OpenGL only).
- Checkbox uses now disabled text color when disabled.
- Changed colors for window-title caption to keep them readable when not active.
- Draw sub-menus to left side if they would be outside main-window otherwise.
- Give ListBox better defaults for the ScrollBar stepsizes.
- Double and triple click events now for each mouse-button. Old events for that got removed.
- 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.
- Give access to texture mipmaps. You can provide custom mipmap textures upon generation, regeneration, and locking.
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).
- Separate TextureWrap mode into U and V fields
- Add mirror texture wrap modes
- windows show now active/inactive state
- remove unneeded drop/grab calls found by manik_sheeri
- fix rounding problem in IGUIElements which have EGUIA_SCALE alignments.
- MessageBox supports now automatic resizing and images.
Deprecated EGDS_MESSAGE_BOX_WIDTH and EGDS_MESSAGE_BOX_HEIGHT
- Let maya-cam animator react on a setTarget call to the camera which happened outside it's own control
- New contextmenue features:
automatic checking for checked flag.
close handling now customizable
serialization can handle incomplete xml's
setEventParent now in public interface
New function findItemWithCommandId
New function insertItem
- new vector3d::getSphericalCoordinateAngles method.
- new triangle3d::isTotalOutsideBox method.
- 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.
- createMeshWith1TCoords avoids vertex duplication
- getRotation now handles matrices with scaling as well
- Ogre format animations now supported.
- irrArray: Fixed issues with push_front and reallocation
Changed behavior for set_pointer and clear, when free_when_destroyed is false
- NPK (Nebula device archive) reader added, it's an uncompressed PAK-like format
- SSkinMeshBuffer::MoveTo* methods renamed to convertTo*
- Multiple Render Target (MRT) support added, including some enhanced blend features where supported
- Directory changing fixed for virtual file systems (Archives etc)
- Fix texture matrix init in scene manager and driver
- More draw2dimage support in software drivers
- Sphere node now properly chooses a good tesselation based on the parameters
- Active camera not registered twice anymore
- Parallax/normal map shader rotation bug under OpenGL fixed
- bump map handling for obj files fixed
- Fog serialization added
- New context menu features added
- Bounding Box updates for skinned meshes fixed
- The current FPS for an animated scene node can be queried now, added some variables to serialization
- Scrollbars fixed
- Fixed 2d vertex primitive method to correctly handle transparency
- Fullscreen handling has been enhanced for Windows, now proper resolution is restored on Alt-Tab etc.
- Cameras can now be added to the scene node without automatically activating them
Clone method added
- New video driver method getMaxTextureSize
- PAK archive reader fixed
- TRANSPARENT_ALPHA_CHANNEL_REF uses modulate to enable lighting
- LIGHTMAP_ADD now always uses add operator
- Some Unicode file system fixes
- destructor of irrString not virtual anymore, please don't derive from irrString
Some new methods added, for searching and splitting
Assignment operator optimized
- new lightness method for SColor
- draw3DTriangle now renders filled polygons, old behavior can be achieved by setting EMT_WIREFRAME
-----------------------------
Changes in 1.6.1 (13.01.2010)
- Fix pingpong for CSceneNodeAnimatorFlyStraight (found by gbox)
- Fix bug with IGUIEditBox where the cursor position is reset on text change.
- Make sure the window top-left corner on Windows is not negative on start so that Windows sytem-menu is always visible.
- 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.
- 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.
- Bugfix: Prevent a crash when getTypeName was called for the guienvironment. EGUIET_ELEMENT got changed for this.
- Bugfix: Horizontal centered font with linebreaks draw now all lines. For example multiline TextSceneNodes work again.
- Bugfix: spinbox can no longer get in an endless loop due to floating point rounding error (found by slavik262)
- !!API change!! Disabled AntiAliasing of Lines in material default
Please enable this manually per material when sure that it won't lead to SW rendering.
- IGUIComboBox: clicking on the statictext displaying the active selection does now close and open listbox correctly. (Bug found by Reiko)
- Scrollbuttons in IGUITabControl adapt now to tab-height.
- Fix texturing of cylinder mesh
- Fix modal dialog position (found by LoneBoco: http://sourceforge.net/tracker/?func=detail&aid=2900266&group_id=74339&atid=540676)
- Fix DMF loading
- Fixing left+right special keys (ctrl, shift, alt) on Win32 (thanks to pc0de for good patch-ideas).
- Make stringarrays for enums in IGUISkin a little safer
- Add support for keys KEY_PRINT, KEY_HOME (on numpad) and KEY_NUMLOCK on Linux.
- Fix material handling in createMeshWith1TCoords
- Fix another (OldValue == NewValue) before drop()/grap(), this time in CTextureAttribute::setTexture.
- Fix LIGHTMAP_LIGHTING for D3D drivers.
- AntiAliasing disabled for debug render elements.
- Bugfix: CGUIToolBar::addButton does no longer mess up when no image is set and does now actually work with the text.
- Fix ninja animation range which got messed up a little when b3d animations got fixed (thx gbox for finding)
---------------------------
Changes in 1.6 (23.09.2009)
- Added IFileSystem::createEmptyFileList, exposed IFileList::sort, addItem and added getID
- Fix MAKE_IRR_ID so it can be used from outside the irr namespace (Micha's patch)
- Renamed some methods in ISkinnedMesh to match the official Irrlicht naming scheme according to createXXX()
- Change debug data to draw using lines instead of arrows, which is much faster. Patch by pc0de
- Fix a bug with FPS camera animator causing stutters. Patch by FuzzYspo0N
- Fix scrolling controls in CGUITabControl
- Fix a bug when getting optimal texture size in D3D drivers, by Jetro Lauha (tonic)
- Added EGDS_TITLEBARTEXT_DISTANCE_X and EGDS_TITLEBARTEXT_DISTANCE_Y to GUI, submitted by FuzzYspo0N
- Fix for UFT8 filenames displayed in file dialog, patch by MadHyde.
- Added const method for array::binary_search, potentially slow as it doesn't sort the list!
- Add support for scaling button images.
- 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.
- 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.
- IFileSystem changes:
- Renamed the following functions-
IFileArchive::getArchiveType to getType
IFileSystem::registerFileArchive to addFileArchive
IFileSystem::unregisterFileArchive to removeFileArchive
IFileArchive::openFile to createAndOpenFile
- New enum, E_FILE_ARCHIVE_TYPE. getType on IArchiveLoader and IFileArchive now both return this.
- 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.
- Added TAR archive loader.
- The ZIP archive loader can now load gzip files, combined with the TAR loader this means Irrlicht now has native support for .tar.gz
Currently this must be done in two calls, for example:
fileSystem->addFileArchive("path/to/myArchive.tar.gz");
fileSystem->addFileArchive("myArchive.tar");
- Fix highlighting in IGUIEditBox where kerning pairs are used in the font. For example in future italic, OS or other custom fonts.
- IOSOperator::getTextFromClipboard returns now const c8* instead of c8*
- Support for copy&paste on linux (X11) added (fixing bug 2804014 found by Pan)
- bugfix for 2795321 found by egrath: Don't rely anymore on broken XkbSetDetectableAutoRepeat.
- bugfix: CMountPointReader::openFile no longer returns true for empty files. Corresponding test added.
- 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.
- ALT+F4 keypress now closes Windows SDL device
- Allow Direct3D drivers in SDL, patch by Halifax
- Added compiler error when attempting to compile with VC6.
- Use setWindowTextA in Windows device for WIN64 platform, posted by veegun
- ELL_ERROR log events are now created when shaders fail to compile or link, reported by Halan
- irrList now uses irrAllocator, fixed by Nox
- Added IGUIWindow::setDraggable and IGUIWindow::isDraggable, by Nox
- Added SGI RGB file reader by Gary Conway, for loading Silicon Graphics .rgb, .rgba, .sgi, .int and .inta textures
- Renamed setResizeAble to setResizable
- Added new device method minimizeWindow which minimizes the window (just as if the minimize button has been clicked).
- SkyDome is now serialized correctly
- Added PLY mesh reader and writer
- Ensure ListBox on combo box doesn't hang off the bottom of the GUI root, by Matthias Specht
- Made IGUIElements recalculate clipping rectangle after setNotClipped, reported by Aelis440
- Bug fix for the combo box where it showed white text instead of skin colour before being focused, fix posted by drewbacca
- EGDS_MESSAGE_BOX_HEIGHT is now honoured, bug reported by Spkka
- Fixed a bug in the edit box where events are sometimes sent to a null parent, reported by Sudi.
- Coordinate system fix for OpenGL in SDL device
- Added generic console device. You can now use Irrlicht to create and manipuate graphics on a shell where no graphics hardware
or windowing system is available. To enable it uncomment #define _IRR_USE_CONSOLE_DEVICE_ in IrrCompileConfig.h
- The console device can now present images from the software drivers and display them as ASCII art in the console
- By default it replaces the default font in the skin, to prevent fonts from being huge.
- Fixed problems with changing cursor visibility while mouse is pressed on windows
- Allow control of background drawing in listbox
- Allow control of drawing background and titlebar in windows
- Improved window serialization
- Add mouse events EMIE_MOUSE_DOUBLE_CLICK and EMIE_MOUSE_TRIPLE_CLICK (thx to Ulf for patch proposal)
- Set "ButtonStates" for mouse events also on Linux (was only for Windows formerly)
- Add Shift+Control states to mouse event
- bugfix (2003238): serialize modal screens
- allow stacking modal screens
- allowing hiding modals
- replace many IsVisible checks with virtual isVisible() checks in IGUIElement
- bugfix: reset selected row when clearing CGUITable
- adding events EGET_EDITBOX_CHANGED and EGET_EDITBOX_MARKING_CHANGED
- prevent editbox from recalculating its textbreaking each frame
- let spinbox react on each textchange without waiting for enter to prevent getting value changes without corresponding EGET_SPINBOX_CHANGED events.
- new test for zipreader
- prevent dropping objects accidentally in many set functions
- Reversed change in vector3d::normalize.
Works now again as documented and a corresponding test has been added.
Does fix bug 2770709 (https://sourceforge.net/tracker/?func=detail&aid=2770709&group_id=74339&atid=540676)
- Animations can now be paused by setting the fps to 0.
- Avoid fp-precision problem in getPickedNodeBB (see also http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=33838&highlight=).
This change might also fix the problem with picking nodes found by aanderse (http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=32890&highlight=)
- implemented isALoadableFileFormat ( File *file ) for the Archive Loader
- PixelBlend16 and PixelBlend16_simd are working for the new rules.
- bugfix. CLightSceneNode didn't correctly update it's attributes
- vector template and equals tests
also set the equal test for s32 to behave like the f32 routine.
The function equals always implements a weak test.
that means a tolerance MUST always be used if you use the equal function. default is 1.
- VideoDriver drawPixel
The HW renderes are using the alpha components for blending.
The Software Renderes and image loaders are using CImage::setPixel copy.
so setPixel is engaged to either blends or copy the pixel
default: false
- Burningvideo
added RenderMaterial EMT_SPHERE_MAP
pushed burningsvideo to 0.43
added RenderMaterial EMT_REFLECTION_2_LAYER
pushed burningsvideo to 0.44
set EMT_TRANSPARENT_ALPHA_CHANNEL_REF
to use AlphaRef 0.5 like Direct3D
One Note: in OpenGL there is know difference between sphere_map and reflection layer
both using GL_TEXTURE_GEN_MODE GL_SPHERE_MAP, whereas in d3d one time using camera_normal
on sphere and reflection on refletcion_layer.
The visual difference is that on sphere map the "image is not moving" when you rotate the
viewer. For Burning i took the opengl visual. always moving
- rename quake3 SEntity to IEntity to be confom with IShader
- fixed createMeshWith2TCoords, normals were missing during copy.
- added
//! Creates a copy of the mesh, which will only consist of S3DVertex vertices.
IMesh* CMeshManipulator::createMeshWith1TCoords(IMesh* mesh) const
- added io::IFileSystem* CSceneManager::getFileSystem()
- added virtual const c8* ISceneManager::getAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type);
- added CSceneNodeAnimatorFlyCircle::radiusEllipsoid.
if radiusEllipsoid == 0 the default circle animation is done
else radiusEllipsoid forms the b-axe of the ellipsoid.
-> gummiball bouncing
- added ISceneManager::createFlyStraightAnimator variable bool ping-pong
used in loop mode to device if start from beginning ( default ) or make ping-pong
-> straight bouncing
- changed IFileSystem::registerFileArchive
remove the index of the hierarchy and added a new interface method
//! move the hirarchy of the filesystem. moves sourceIndex relative up or down
virtual bool moveFileArchive( u32 sourceIndex, s32 relative ) = 0;
- bugfix and changes in SViewFrustum::SViewFrustum
wrong size of Matrices copy.
renamed E_TRANSFORMATION_STATE_2 to E_TRANSFORMATION_STATE_FRUSTUM
therefore also changed SViewFrustum::setTransformState to not tap
in the pitfall again of wrong memory...
- moved
//! EMT_ONETEXTURE_BLEND: has BlendFactor Alphablending
inline bool textureBlendFunc_hasAlpha ( E_BLEND_FACTOR factor ) const
from the material renderes ( 3x declared ) to SMaterial.h
- updated managed light example to use standard driver selection
- BurningsVideo
- LightModel reworked.
Point Light & Direction Light works for Diffuse Color as expected
Specular and Fog still have problems ( needs new pixel shader )
pushed burningsvideo to 0.42 for this major step
- removed obsolete matrix transformations
renamed E_TRANSFORMATION_STATE_2 to E_TRANSFORMATION_STATE_BURNING
- cleaned line3d.h vector3d.h template behavior.
many mixed f32/f64 implementations are here. i'm not sure if this should be
the default behavior to use f64 for example for 1.0/x value, because they
benefit from more precisions, but in my point of view the user is responsible
of choosing a vector3d<f32> or vector3d<f64>.
- added core::squareroot to irrmath.h
-> for having candidates for faster math in the same file
- added AllowZWriteOnTransparent from SceneManager to burningsvideo
-added hasAlpha() to ITexture
This info can be used for e.q to downgrade a transparent alpha channel blit
to add if the texture has no alpha channel.
- FileSystem 2.0 SUPER MASTER MAJOR API CHANGE !!!
The FileSystem is now build internally like for e.g. the image- and meshloaders.
There exists a known list of ArchiveLoaders, which know how to produce a Archive.
The Loaders and the Archives can be attached/detached on runtime.
The FileNames are now stored as core::string<c16>. where c16 is toggled between char/wchar
with the #define flag _IRR_WCHAR_FILESYSTEM, to supported unicode backends (default:off)
Replaced most (const c8* filename) to string references.
Basically the FileSystem is divided into two regions. Native and Virtual.
Native means using the backend OS.
Virtual means only use currently attached IArchives.
Browsing
each FileSystem has it's own workdirectory and it's own methods to
- create a FileTree
- add/remove files & directory ( to be done )
Hint: store a savegame in a zip archive...
basic browsing for all archives is implemented.
Example 21. Quake3Explorer shows this
TODO:
- a file filter should be implemented.
- The IArchive should have a function to create a filetree
for now CFileList is used.
Class Hierarchy:
IArchiveLoader: is able to produce a IFileArchive
- ZipLoader
- PakLoader
- MountPointReader ( formaly known as CUnzipReader )
IFileArchive:
-ZipArchive
-PakArchive
-MountPoint (known as FolderFile)
IFileSystem
- addArchiveLoader
- changed implementation of isALoadableFileExtension in all loaders
to have consistent behavior
- added a parameter to IFileList * createFileList
setFileListSystem
allows to query files in any of the game archives
standard behavior listtype = SYSTEM ( default)
- CLimitReadFile
added multiple file random-access support.
solved problems with mixed compressed & uncompressed files in a zip
- IrrlichtDevice
added:
virtual bool setGammaRamp( f32 red, f32 green, f32 blue, f32 brightness, f32 contrast ) = 0;
virtual bool getGammaRamp( f32 &red, f32 &green, f32 &blue ) = 0;
and calculating methods to DeviceStub.
implemented in Win32, SDL, Linux TODO: other Devices
- irrlicht.h
changed exported irrlicht.dll routines createDevice, createDeviceEx, IdentityMatrix
to extern "C" name mangling.
- ParticleSystem
removed the private (old?,wrong?) interface from the ParticleEffectors
to match the parent class irr::io::IAttributeExchangingObject::deserializeAttributes
- Generic
- vector3d<T>& normalize() optimized
added reciprocal_squareroot for f64
- dimension2d
added operator dimension2d<T>& operator=(const dimension2d<U>& other)
to cast between different types
- vector2d bugfix operator+=
- C3DSMeshLoader renamed chunks const u16 to a enum
removing "variable declared but never used warning"
- added a global const identity Material
changed all references *((video::SMaterial*)0) to point to IdentityMaterial
removed warning: "a NULL reference is not allowed"
- modified IRRLICHT_MATH to not support reciprocal stuff
but to use faster float-to-int conversion.
- core::matrix4
USE_MATRIX_TEST
i tried to optimize the identity-check ( w.r.t. performance)
i didn't succeed so well, so i made a define for the matrix isIdentity -check
for now it's sometimes faster to always calculate versus identity-check
but if there are a lot of scenenodes/ particles one can profit from the
fast_inverse matrix, when no scaling is used. further approvement could
be done on inverse for just translation! ( many static scenenodes are not rotated,
they are just placed somewhere in the world)
one thing to take in account is that sizeof(matrix) is 64 byte and
with the additional bool/u32 makes it 66 byte which is not really cache-friendly..
- added buildRotateFromTo
Builds a matrix that rotates from one vector to another
- irr::array. changed allocating routine in push_back
added a new method setAllocStrategy,
safe ( used + 1 ), double ( used * 2 + 1)
better default strategies will be implemented
- removed binary_search_const
i added it quite a long time ago, but it doesnt make real sense
a call to a sort method should happen always. i just wanted to safe
a few cycles..
- added binary_search_multi
searches for a multi-set ( more than 1 entry in the sorted array)
returns start and end-index
- changed some identity matrix settings to use core::IdentityMatrix
- added deletePathFromFilename to generic string functions in coreutil.h and
removed from CZipReader and CPakReader
- s32 deserializeAttributes used instead of virtual void deserializeAttributes in
ParticleSystem ( wrong virtual was used)
- strings & Locale
- started to add locale support
- added verify to string
- added some helper functions
- XBOX
i have access to a XBOX development machine now. I started to compile
for the XBOX. Question: Who did the previous implementation?. There
is no XBOX-Device inhere. maybe it's forbidden because of using the offical
Microsoft XDK. I will implement a native or sdl device based on opendk.
irrlicht compiles without errors on the xbox but can't be used.
- Windows Mobile
reworked a little. added the mobile example to the windows solution for
cross development.
added maximal 128x128 texture size for windows mobile ( memory issues )
- Collision Speed Up
The Collision Speed Up greatly improves with many small static child-nodes
- added COctTreeTriangleSelector::getTriangles for 3dline from user Piraaate
- modified createOctTreeTriangleSelector and createTriangleSelector
to allow node == 0, to be added to a meta selector
- CSceneNodeAnimatorCollisionResponse has the same problem as CSceneNodeAnimatorFPS
on first update:
Problem. you start setting the map. (setWorld). First update cames 4000 ms later.
The Animator applies the missing force... big problem...
changed to react on first update like camera.
- add Variable FirstUpdate. if set to true ( on all changes )
then position, lasttime, and falling are initialized
-added #define OCTTREE_USE_HARDWARE in Octree.h
if defined octtree uses internally a derived scene::MeshBuffer which has
the possibility to use the Hardware Vertex Buffer for static vertices and
dirty indices;-)
if defined OCTTREE_USE_HARDWARE octree uses internally a derived scene::CMeshBuffer
so it's not just a replacement inside the octree. It also in the OctTreeSceneNode.
#define OCTTREE_PARENTTEST is also used. It's skip testing on fully outside and takes everything on fully inside
- virtual void ISceneNode::updateAbsolutePosition()
- changed inline CMatrix4<T> CMatrix4<T>::operator*(const CMatrix4<T>& m2) const
- changed inline bool CMatrix4<T>::isIdentity() const
to look first on Translation, because this is the most challenging element
- virtual core::matrix4 getRelativeTransformation() const
Hierarchy on Identity-Check
1) ->getRelativeTransform -> 9 floating point checks to be passed as Identity
2) ->isIdentity () -> 16 floating point checks to be passed as Identity
- inline void CMatrix4<T>::transformBoxEx(core::aabbox3d<f32>& box) const
added isIdentity() check
- changed CSceneNodeAnimatorCollisionResponse
- added CSceneNodeAnimatorCollisionResponse::setGravity
needed to set the differents Forces for the Animator. for eq. water..
- added CSceneNodeAnimatorCollisionResponse::setAnimateTarget
- added CSceneNodeAnimatorCollisionResponse::getAnimateTarget
- changed CSceneNodeAnimatorCollisionResponse::animateNode to react on FirstUpdate
- TODO: set Gravity to Physically frame independent values..
current response uses an frame depdended acceleration vector.
~9.81 m/s^2 was achieved at around 50 fps with a setting of -0.03
may effect existing application..
- SceneNodes
- CSkyDomeSceneNode
moved radius ( default 1000 ) to constructor
added Normals
added DebugInfo
added Material.ZBuffer, added SceneManager
- CVolumeLightSceneNode:
changed default blending OneTextureBlendgl_src_color gl_src_alpha to
EMT_TRANSPARENT_ADD_COLOR ( gl_src_color gl_one )
which gives the same effect on non-transparent-materials.
Following the unspoken guide-line, lowest effect as default
- changed SceneNode Skydome from f64 to f32
- AnimatedMesh Debug Data:
mesh normals didn't rotate with the scenenode fixed ( matrix-multiplication order)
- Camera SceneNode setPosition
Camera now finally allow to change position and target and updates all
effected animators..
- Device:
added the current mousebutton state to the Mouse Event
so i need to get the current mouse state from the OS
- GUI
- CGUIFont:
- added virtual void setInvisibleCharacters( const wchar_t *s ) = 0;
define which characters should not be drawn ( send to driver) by the font.
default: setInvisibleCharacters ( L" " );
- added MultiLine rendering
should avoid to us CStaticText breaking text in future
- CGUIListBox
- changed Scrollbar LargeStepSize to ItemHeight
which easy enables to scroll line by line
- CGUIScrollBar
- bug: event lost when moving outside the window
- bug: Scrollbar notifyListBox notify when the scrollbar is clicked.
- changed timed event in draw to OnPostRender
- added GUI Image List from Reinhard Ostermeier, modified to work
- FileOpenDialog
changed the static text for the filename to an edit box.
- changed the interface for addEditBox to match with addStaticText
- changed the interface for addSpinBox to match with addEditBox
- added MouseWheel to Spinbox
- changed CGUITable CLICK_AREA from 3 to 12 to enable clicking on the visible marker
- CGUISpritebank
removed some crashes with empty Sprite banks
- IGUIScrollBar
added SetMin before min was always 0
changed ScrollWheel Direction on horizontal to move right on wheel up, left on wheel down
- IComboBox: added ItemData
- optimized IsVisible check in IGUIElement::draw
- Image Loaders
- added TGA file type 2 ( grayscale uncompressed )
- added TGA file type (1) 8 Bit indexed color uncompressed
ColorConverter:
- added convert_B8G8R8toA8R8G8B8
- added convert_B8G8R8A8toA8R8G8B8
- Media Files
- added missing shaders and textures to map-20kdm2.
Taken from free implementation
- ball.wav. adjusted DC-Offset, amplified to -4dB, trim cross-zero
- impact.wav clip-restoration, trim cross-zero
- added gun.md2, gun.pcx to media-files
- added new irrlicht logo irrlicht3.png
- OctTree
-added
#define OCTTREE_PARENTTEST ( default: disabled )
used to leave-out children test if the parent passed a complete frustum.
plus: leaves out children test
minus: all edges have to be checked
- added MeshBuffer Hardware Hint Vertex to octtree
- CQuake3ShaderSceneNode:
- removed function releaseMesh
Shader doesn't copy the original mesh anymore ( saving memory )
so therefore this (for others often misleading ) function was removed
- changed constructor to take a (shared) destination meshbuffer for rendering
reducing vertex-memory to a half
- don't copy the original vertices anymore
- added deformvertexes autosprite
- added deformvertexes move
- added support for RTCW and Raven BSPs ( qmap2 )
- added polygonoffset (TODO: not perfect)
- added added nomipmaps
- added rgbgen const
- added alphagen
- added MesBuffer Hardware Hint Vertex/Index to Quake3: static geometry, dynamic indices
- added Quake3Explorer examples
- added wave noise
- added tcmod transform
- added whiteimage
- added collision to Quake3Explorer
- renamed SMD3QuaterionTag* to SMD3QuaternionTag* ( typo )
- updated quake3:blendfunc
- added crouch to Quake3Explorer
(modifying the ellipsiodRadius of the camera animator )
added crouch to CSceneNodeAnimatorCameraFPS
still problems with stand up and collision
- Quake3MapLoader
modified memory allocation for faster loading
- Quake3LoadParam
added Parameter to the Mesh-Loader
- added
The still existing missing caulking of curved surfaces.
using round in the coordinates doesn't solve the problem.
but for the demo bsp mesh it solves the problem... (luck)
so for now it's switchable.
TJUNCTION_SOLVER_ROUND
default:off
- BurningVideo
- pushed BurningsVideo to 0.40
- added blendfunc gl_one_minus_dst_alpha gl_one
- added blendfunc gl_dst_color gl_zero
- added blendfunc gl_dst_color src_alpha
- modified AlphaChannel_Ref renderer to support alpha test lessequal
- addded 32 Bit Index Buffer
- added sourceRect/destRect check to 2D-Blitter ( slower, but resolves crash )
- added setTextureCreationFlag video::ETCF_ALLOW_NON_POWER_2
Burning checks this flag and when set, it bypasses the power2 size check,
which is necessary on 3D but can be avoided on 2D.
used on fonts automatically.
- added Support for Destination Alpha
- Direct3D8
- added 32 Bit Index Buffer
- compile for XBOX
- Direct3D9
- fixed crash on RTT Textures DepthBuffer freed twice.
added deleteAllTextures to destructor
- NullDriver
- removeallTextures. added setMaterial ( SMaterial() ) to clean pointers for freed textures
- ISceneCollisionManager::getSceneNodeAndCollisionPointFromRay() allows selection by BB and triangle on a heirarchy of scene nodes.
- Triangle selectors created from animated mesh scene nodes will update themselves as required to stay in sync with the node.
- IVideoDriver has methods to enumerate the available image loaders and writers.
- Octtree scene nodes are now IMeshSceneNodes rather than ISceneNodes, and so you can call getMesh() on them.
- 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.
- Added Mipmap LOD Bias attribute to MaterialLayer.
- Added ColorMask support to selectively disable color planes on rendering.
- Added support for all available depth test functions.
- Add an outNode to getCollisionPoint() that returns the scene node that was hit, as well as the triangle.
- Initial support for Alpha To Coverage, needs some more fixing until it works on all supported platforms.
- Added support for Anti-Aliasing modes per material
- Added an ICollisionCallback to ISceneNodeAnimatorCollisionResponse, to inform the application that a collision has occured. Thanks to garrittg for this.
- Added an startPosition parameter to createFlyCircleAnimator() to allow starting the animator at any position on the circle.
- 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>
- Added Doublebuffer flag to SIrrCreationParameters, for better finetuning
- Added Stereo-Framebuffer support for professional OpenGL cards
- Added IFileSystem::createMemoryWriteFile() to allow creation of an IWriteFile interface that uses an application supplied memory buffer.
- Added an IVideoDriver::writeImageToFile() overload that can take an IWriteFile interface.
- (Internal) Replaced CMemoryReadFile with CMemoryFile, that also implements an IWriteFile interface.
- 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.
- Added a method to flip the Y movement of the FPS camera.
- 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.
- AntiAlias parameter in SIrrCreationParameters is now an u8 value specifying the multisampling level (0 for disabled, 4,6,8, and others for anti-aliasing)
- D3D devices use DISCARD for windowed renderbuffers now, can be faster.
- Changed behaviour 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()).
- IVideoDriver::makeColorKeyTexture() bug fixed so that only alphas, not whole texel colors, are zeroed. An optional parameter allows using the old (buggy) behaviour for backwards compatibility.
- position2d is now a synonym for vector2d. position2d is therefore marked as deprecated, although it's unlikely to be removed.
- ISceneNodeAnimator now has a hasFinished() method.
- ISceneNodeAnimatorCollisionResponse exposes the target node. Setting the node again resets the last position, allowing the node to be teleported.
- Add a hitPosition out parameter to ISceneCollisionManager::getCollisionResultPosition() - this is a (small) API breaking change.
-------------------------------------
Changes in version 1.5.2 (16.12.2009)
- Properly check boundaries in getFont and setFont.
- Reinit values in the driver when scene manager is cleared.
- Normals handling fixed in createMeshWithTangents, existing normals are not always destroyed now.
- Fix terrain smoothing, bug found by loverlinfish
- SOLARIS recognition removed. Please specify the platform define manually. This allows for compilation under sparc/Linux and sparc/Solaris
- Some uninitialized variables fixed
- FreeBSD joystick support added (for Debian package)
- Fix cursor problems found by buffer and by rvl2 as described in http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=34823&highlight=
- OSX/XCode updates
- MS3D loader bug fixed
- Float parse bug fixed
-------------------------------------
Changes in version 1.5.1 (05.08.2009)
- Make sure a missing font does not corrupt the skin.
- Fix getAngle in vector2d as suggested by xray. This has only a minor impact on s32 vectors.
- bugfix: CGUIFont::getCharacterFromPos regards now kerning (found by Arras)
- Add support for range fog in some OpenGL versions.
- Fix for shadow volume removal, submitted by vitek.
- Avoid using X11 autorepeat to deal with broken X11 versions.
- Speculars are properly exported into mtl files now, instead of corrupting them.
- Binary type loading in attributes fixed.
- bugfix: Use make_lower throughout for spritebank filenames (found and patched by Ion Dune)
- STL loader fixed: Right-handedness corrected, normals and bboxes are correctly added now.
- bugfix: CUnZipReader::openFile no longer returns true for empty files. Corresponding test added.