diff --git a/changes.txt b/changes.txt index 1bd5eeb9..47c4fad9 100644 --- a/changes.txt +++ b/changes.txt @@ -1,13 +1,54 @@ -Changes in 1.6 +Changes in 1.6 (??.??.2009) - - IOSOperator::getTextFromClipboard returns now const c8* instead of c8* + - 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: Use make_lower throughout for spritebank filenames (found and patched by Ion Dune) - - 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. @@ -48,12 +89,12 @@ Changes in 1.6 - 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 + - 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 + - Fixed problems with changing cursor visibility while mouse is pressed on windows - Allow control of background drawing in listbox @@ -61,9 +102,7 @@ Changes in 1.6 - Improved window serialization - - bugfix (2796207): menu acted (wrongly) on left-click down instead of left-click up. - - - Fixed problem with highlighting menus when mouse was outside sub-menu area. + - 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) @@ -75,7 +114,7 @@ Changes in 1.6 - allowing hiding modals - - replace many IsVisible checks with virtual isVisible() checks in IGUIElement + - replace many IsVisible checks with virtual isVisible() checks in IGUIElement - bugfix: reset selected row when clearing CGUITable @@ -89,571 +128,461 @@ Changes in 1.6 - prevent dropping objects accidentally in many set functions - - Reversed change in vector3d::normalize. + - 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=). + - 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=) -Changes in 1.6 TA - - implemented isALoadableFileFormat ( File *file ) for the Archive Loader -Changes in 1.6 TA - - PixelBlend16 and PixelBlend16_simd are working for the new rules. - - bugfix. CLightSceneNode didn't correctly update it's attributes - - Lighting Linear Attenuation. = 1.f / radius - - The Example loadirr files set the lightscene radius to 1000.f but - stays on the previous default attentuation with the older radius 100 -> 1.f / 100 - so the examples looks golden-brown. - - Now the radius is correctly!! set to the attenuation of 1.f/1000.f because the - file doesn't have special attenuation. and now it looks more yellow. - can anybody show me a correct screenshot for this file;-)? Niko? - - Or is this behavior the default lighting?. then it would be - a fixed constant linear attenuation of 0.01f;-). Please clearify - For now i didn't fixed it - - - I encountered this behavior because i ( burning video ) used the original radius - for calculations and so i've found that radius != 1.f / linearAttenuation but - in the LightSceneNode this formula was used.. confused;-) - + - implemented isALoadableFileFormat ( File *file ) for the Archive Loader - - vector template and equals tests - as working with the test suits i cleaned the template behavior (mixed types are - used in the templates) and added all missing special math function with their coressponding type - I also set the equal test for s32 to behave like the f32 routine. + - PixelBlend16 and PixelBlend16_simd are working for the new rules. - 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. - you can set it to zero a==b-> equals ( a, b, 0 ) but do it explicit like you have to - for floating compare. This is important when irrlicht is going to use special hardware - math acceleration on a per function base, like sse2, or the other way round fixpoint. - - - 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 Buring i took the opengl visual. always moving - + - bugfix. CLightSceneNode didn't correctly update it's attributes - - rename quake3 SEntity to IEntity to be confom with IShader - even IShader and IEntity are none pure virtual interfaces - like most irrlicht objects --------------------------------------------------------------- + - 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. -Changes in 1.6 TA - - fixed createMeshWith2TCoords - normals were missing during copy. - - addded - //! Creates a copy of the mesh, which will only consist of S3DVertex vertices. - IMesh* CMeshManipulator::createMeshWith1TCoords(IMesh* mesh) const + - 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 - - added io::IFileSystem* CSceneManager::getFileSystem() - for preparing to remove the (mostly) unnecessary double member variables - in many loaders + 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. - - added virtual const c8* ISceneManager::getAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type); - to the SceneManger Interface. just like getTypeName is public - - - 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 + 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 - - changed IFileSystem::registerFileArchive - remove the index of the hiarchy 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. This bug must be ages old... (typo) - detected during resizing the Matrices. removed obsolute Matrices - 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... - and renamed it to getTransform, like in the driver - and Matrices private - - - OpenGL: - Specular - - 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 + - rename quake3 SEntity to IEntity to be confom with IShader - - updated managed light example to use standard driver selection - - BurningsVideo - - LightModel reworked. - Point Light & Direction Light works for Diffuse Color as aspected - Specular and Fog still have problems ( needs new pixel shader ) - pushed burningsvideo to 0.42 for this major step + - fixed createMeshWith2TCoords, normals were missing during copy. - - removed obsolete matrix transformations - renamed E_TRANSFORMATION_STATE_2 to E_TRANSFORMATION_STATE_BURNING + - added + //! Creates a copy of the mesh, which will only consist of S3DVertex vertices. + IMesh* CMeshManipulator::createMeshWith1TCoords(IMesh* mesh) const - - - 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 or vector3d. - - added core::squareroot to irrmath.h - -> for having candidates for faster math in the same file - - added AllowZWriteOnTransparent from SceneManager to burningsvideo - Following SceneManger guideline - -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. - --------------------------------------------------------------- -Changes in version 1.6, TA + - 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 or vector3d. + + - 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. 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. + 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. - 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 ) + The FileNames are now stored as core::string. 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. - IFileArchive: - -ZipArchive - -PakArchive - -MountPoint (known as FolderFile) - - IFileSystem - - addArchiveLoader + Basically the FileSystem is divided into two regions. Native and Virtual. + Native means using the backend OS. + Virtual means only use currently attached IArchives. - - 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 + 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 - TODO: - - Big Big Testing!! - - many loaders use their own private filesearching - - there are a lot of helper function ( getAbsolutePath, getFileDir ) - which should be adapted to the virtual filesystem - - 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; + 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 - and calculating methods to DeviceStub. - implemented in Win32, TODO: other Devices - - - irrlicht.h - changed exported irrlicht.dll routines createDevice, createDeviceEx, IdentityMatrix - to extern "C" name mangling. - - for easier dynamically loading the irrlicht library and different versions + - 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 - TODO: - please test if the serialization works! - + removed the private (old?,wrong?) interface from the ParticleEffectors + to match the parent class irr::io::IAttributeExchangingObject::deserializeAttributes + - Generic - - vector3d& normalize() optimized - added reciprocal_squareroot for f64 - - - dimension2d - added operator dimension2d& operator=(const dimension2d& other) - to cast between different types - - vector2d bugfix operator+= + - vector3d& normalize() optimized + added reciprocal_squareroot for f64 - - C3DMeshLoader 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" + - dimension2d + added operator dimension2d& operator=(const dimension2d& other) + to cast between different types - - modified IRRLICHT_MATH to not support reciprocal stuff - but to use faster float-to-int conversion. - gcc troubles may they are. i'm using intel-compiler..;-) - - core::matrix4 - USE_MATRIX_TEST + - vector2d bugfix operator+= - i tried to optimize the identity-check ( in means of 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 tranlastion! ( 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.. + - C3DSMeshLoader renamed chunks const u16 to a enum + removing "variable declared but never used warning" - - added buildRotateFromTo - Builds a matrix that rotates from one vector to another - - - irr::array. changed allocating routine in push_back + - added a global const identity Material + changed all references *((video::SMaterial*)0) to point to IdentityMaterial + removed warning: "a NULL reference is not allowed" - okt, 2008. it's only allowed to alloc one element, if - default constructor has to be called. - - removes existing crashes. ( MD3 Mesh ) and possible others ones. - - A new list template should be made. - one with constructor/destructor calls ( safe_array ) and - one without. like the array since the beginning of irrlicht. - currently the array/string is extremly slow.. - - also a hint for the user has to be done, so that a struct T of - array must have a copy constructor of type T ( const T&other ). - - i needed hours to track that down... - - 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 + - modified IRRLICHT_MATH to not support reciprocal stuff + but to use faster float-to-int conversion. - - 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) + - 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 - + - 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. - - TODO: - - native XBOX Device + 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 + reworked a little. added the mobile example to the windows solution for + cross development. + added maximal 128x128 texture size for windows mobile ( memory issues ) - 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 +- Collision Speed Up - -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 + The Collision Speed Up greatly improves with many small static child-nodes + - added COctTreeTriangleSelector::getTriangles for 3dline from user Piraaate - - virtual void ISceneNode::updateAbsolutePosition() - - changed - inline CMatrix4 CMatrix4::operator*(const CMatrix4& m2) const + - modified createOctTreeTriangleSelector and createTriangleSelector + to allow node == 0, to be added to a meta selector - all two matrices have to be checked by isIdentity() - to let the isIdentity work always + - 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. - - changed inline bool CMatrix4::isIdentity() const + - add Variable FirstUpdate. if set to true ( on all changes ) + then position, lasttime, and falling are initialized - on full identityCheck-> - to look first on Translation, because this is the most challenging element - which will likely not to be identity.. - - - virtual core::matrix4 getRelativeTransformation() const + -added #define OCTTREE_USE_HARDWARE in Octree.h - 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::transformBoxEx(core::aabbox3d& box) const - added isIdentity() check + 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 CMatrix4::operator*(const CMatrix4& m2) const + + - changed inline bool CMatrix4::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::transformBoxEx(core::aabbox3d& 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.. - -- 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 SceneMaanager - - - 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 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.. - - a call to OnAnimate ( ) lastime < time or OnAnimate ( 0 ) will reset the - camera and fr. the collision animator to a new position - + - 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 - - -added to CIrrDeviceWin32 - TODO: - - Linux and SDL 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. - for example " " would not draw any space which is usually blank in most fonts - and saves rendering of ususally full blank alpha-sprites. - This saves a lot of rendering... - - 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: - Create a Window and inside a listbox with a scrollbar or - a windowed irrlicht application - - Click & hold Scrollbar Slider. move outside it's region. - Release Mouse. Go Back to Scrollbar.. it's moving always... - - it's generally missing the event PRESSED_MOVED, which - leads to problem when an element is dragging, has a focus, or position loose - and gets focus back again. ( think of a drunken mouse sliding left&right during tracking ) + - 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" " ); - so added the mouse Input Buttonstates on every mouse event - IrrDeviceWin32: - added event.MouseInput.ButtonStates = wParam & ( MK_LBUTTON | MK_RBUTTON | MK_MBUTTON ); - TODO: - Linux & SDL + - added MultiLine rendering + should avoid to us CStaticText breaking text in future - so now i can do this - case irr::EMIE_MOUSE_MOVED: - if ( !event.MouseInput.isLeftPressed () ) - { - Dragging = false; - } + - CGUIListBox + - changed Scrollbar LargeStepSize to ItemHeight + which easy enables to scroll line by line - - bug: - Scrollbar notifyListBox notify when the scrollbar is clicked. + - 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 - - changed timed event in draw to OnPostRender - - - added GUI Image List from Reinhard Ostermeier, modified to work - added GUI Tree View from Reinhard Ostermeier, modified to work - shown in the Quake3MapShader Example - TODO: Spritebanks - - - 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 + - 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 - + - 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 + - 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 - + -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 - + - 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 - + - 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 -- Direc3D9 - - fixed crash on RTT Textures DepthBuffer freed twice. - added deleteAllTextures to destuctor + - 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 + - removeallTextures. added setMaterial ( SMaterial() ) to clean pointers for freed textures - ISceneCollisionManager::getSceneNodeAndCollisionPointFromRay() allows selection by BB and triangle on a heirarchy of scene nodes. @@ -718,31 +647,97 @@ Changes in version 1.6, TA ------------------------------------- Changes in version 1.5.1 (??.?? 2009) + - Fix cursor problems found by buffer and by rvl2 as described in http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=34823&highlight= + + - 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. + + - Big endian issues in .x loader fixed. + + - HSLColor methods repaired. + + - copyToScaling fixed. + + - Fixed problem with highlighting menus when mouse was outside sub-menu area. + + - bugfix (2796207): menu acted (wrongly) on left-click down instead of left-click up. + + - bswap16 fallback macro fixed + + - getBaseName fixed to work correct with dots in filenames. + + - static method isDriverSupported allows for simple check of available drivers. + + - Some defines added to check for the Irrlicht version of the library. + + - Make sure all renderstates are properly initialized + + - Wrong size for main depth buffer fixed. + + - Fix 3ds shininess to the allowed range. + - Fix loading of Collada files from irrEdit 1.2 + - Remove texture pointers after texture clear. + + - WindowsCE pathnames fixed. + + - Some virtuals are now overridden as expected. + + - Incomplete FBOs are properly signalled now + - Update to libpng 1.2.35, fixed issues on 64bit machines with system's libpng. - - Remove texture pointers after texture clear. + - Fixed wrong grab/drop in setOverrideFont + + - Added draw2dRectOutline + + - rectf and recti added. - Fix ALPHA_CHANNEL_REF to a fixed check for alpha==127 as expected. - Fixed OSX device bug where screen size was not set in fullscreen mode. + - cursor setVisible changed to be called less often. + - OpenGL version calculation fixed. - OSX device now supports shift and ctrl keys. - - Fixed ambient light issues in bruningsvideo. + - Fixed ambient light issues in burningsvideo. - device reset for d3d fixed when using VBOs. + - Fix dimension2d += + - MD2 mesh loader: Now uses much less memory, reduced number of allocations when loading meshes. - OpenGL render state (texture wrongly cached) fixed. - Fixed animator removal. - - Fix terrain to use 32bit only when necessary, make terrain use hw buffers. Heightmap loading and height calculation fixed. + - Checnged collision checks for children of invisible elements to also be ignored (as they're actually invisible due to inheritance). + + - Fix terrain to use 32bit only when necessary, make terrain use hw buffers. Heightmap loading and height calculation fixed. Visibility and LOD calculations updated. - Some mem leaks fixed @@ -1570,8 +1565,8 @@ Changes in version 1.3 (15 Mar 2007) - Enable Irrlicht to change TextureAddress Mode (Clamping), for each layer separately - Added Texture matrices to SMaterial for all texture layers - Removed the anonymous union/struct access to textures and material flags. - Now, Texture1..4 is removed - use Textures[i] instead - The Flags[x] is replaced by setFlags(x, bool) resp. getFlags(x) + Now, Texture1..4 is removed - use Textures[i] instead + The Flags[x] is replaced by setFlags(x, bool) resp. getFlags(x) - The methods OnPreRender and OnPostRender of ISceneNode have been changed to OnRegisterSceneNode() and OnAnimate(). Also, they are now called at different @@ -1656,8 +1651,8 @@ Font improvements: - Burning Video (the second but only complete software renderer) - New Compile Config BURNINGVIDEO_RENDERER_ULTRA_FAST - New Compile Config BURNINGVIDEO_RENDERER_FAST - touching the 20fps border in the demo ( P4 mobile 2Ghz ). 15fps average. - ( Compile config Release Fast-FPU ) + touching the 20fps border in the demo ( P4 mobile 2Ghz ). 15fps average. + ( Compile config Release Fast-FPU ) - VertexCache for Tansformed & Light Vertices boost small drawPrimitive Calls ( 2DRectangle, Billboard ) and Real Index Triangles @@ -1665,11 +1660,11 @@ Font improvements: - Bilinear Dither - clipping test ( compare instead of generic plane normal ) - support for NOT using vertexcolor - #define SOFTWARE_DRIVER_2_USE_VERTEX_COLOR + #define SOFTWARE_DRIVER_2_USE_VERTEX_COLOR - added vertex to color to billboard. - shade top & shade down. - to support some static lighting effect on billboards + shade top & shade down. + to support some static lighting effect on billboards - Implemented line rendering for SoftwareDriver @@ -1683,7 +1678,7 @@ Font improvements: and a Key Map Entry. - added param to IIImageWriteFile::writeImage - control Parameter for the backend ( e.g. jpeg compression level ) + control Parameter for the backend ( e.g. jpeg compression level ) - addContextMenu: CGUIEnvironment::addContextMenu set the focus on the submenu. @@ -1760,7 +1755,7 @@ Font improvements: - Indexed Triangle List - initial support for quake3 Shaders and Entities - Shaders are parsed. When it's possible to resolve a 2 Texture Scheme it's taken - Shaders exist in namespace scene::quake3 + Shaders exist in namespace scene::quake3 - The Example Quake3Map shows how to continue applying the Q3Shaders with SceneNodes ( for example animmap converts to TextureAnimator.) TODO: use the Irrlicht Variable Syntax to remove redundant code.. @@ -1808,19 +1803,19 @@ Font improvements: better kerning would need a seperate coordinate set for each symbol. - changed MD2_FRAME_SHIFT to lower framerate - -> lower IPol - problems can occur if somebody uses hardcoded frame-numbers instead - of Animation name... + -> lower IPol + problems can occur if somebody uses hardcoded frame-numbers instead + of Animation name... - changed spelling "frustrum" to "frustum" - -> changed also SViewFrustrum.h to SViewFrustum.h + -> changed also SViewFrustrum.h to SViewFrustum.h - changed Parameter AutomaticCulling from bool to enum E_CULLING_TYPE - to support more than two culling modes. + to support more than two culling modes. - added Frustum culling ( it's a copy & paste from the octree ) - added initial bounding sphere - used for culling point lights.. + added Frustum culling ( it's a copy & paste from the octree ) + added initial bounding sphere + used for culling point lights.. - Added getSystemMemory and getProcessorSpeedMHz for Windows and Linux to the OSOperator, submitted by Vitek. @@ -1862,8 +1857,8 @@ Changes in version 1.2 (29 Nov 2006) - Color selection dialog added. - New GUI skin "Burning Skin". - it's a black & white skin. look elegant on true-color. - and looks ok on 1-Bit ( e.g. no vertex color in burnings video ) + it's a black & white skin. look elegant on true-color. + and looks ok on 1-Bit ( e.g. no vertex color in burnings video ) - GUIStatic text is correctly grayed out if disabled. @@ -1902,7 +1897,7 @@ Changes in version 1.2 (29 Nov 2006) - Scolor: replaced s16 color with u16 color, replaced s32 color with u32 color to get rid of unnecessary arithmetic shift -- Colorconverter: X8R8G8B8toA1R5G5B5, set Alpha High, minor: A1R5G5B5toA8R8G8B8 changed if (a) to conditional set +- Colorconverter: X8R8G8B8toA1R5G5B5, set Alpha High, minor: A1R5G5B5toA8R8G8B8 changed if (a) to conditional set - CImage: added boxfilter (weigthed average), (generic, slow) @@ -2038,7 +2033,7 @@ Changes in version 1.0 (19 Apr 2006) - It is now possible to draw temporarily to foreign windows, by specifying a window handle when calling IVideoDriver::endScene(). Note: This does not work in fullscreen mode and is not - implemented for all devices (only for D3D8, D3D9, Software1 and Software2, and only for Windows). + implemented for all devices (only for D3D8, D3D9, Software1 and Software2, and only for Windows). In addition, you can also specify the source rectangle to present. - Picking is now more accurate and also works with view ports and better with orthogonal cameras. @@ -2049,7 +2044,7 @@ Changes in version 1.0 (19 Apr 2006) from collision detection, picking or from serialization, etc. - Scene Nodes now have the possibility to return their type using - virtual ESCENE_NODE_TYPE getType(). + virtual ESCENE_NODE_TYPE getType(). - Improved support for orthogonal rendering: Skyboxes and billboards can be used with orthogonal cameras now, too. @@ -3305,16 +3300,16 @@ Changes in version 0.5: (17 Feb 2004) I'll compile this version from now on always with optimization switched on. - Other, Minor New/Changed methods in public interfaces: - * buildShadowMatrix in matrix4 - * getRotationDegrees in matrix4 (sent in by Chev) - * rotateVect in matrix4 - * linear_search in array - * recalculateBoundingBox in MeshManipulator - * ISceneManager::addStaticText() now has a parameter for word wrapping - * getCharacterFromPos() in IGUIFont - * drawMeshBuffer() in IVideoDriver; - * interpolate() in matrix4 - * getLast in array + * buildShadowMatrix in matrix4 + * getRotationDegrees in matrix4 (sent in by Chev) + * rotateVect in matrix4 + * linear_search in array + * recalculateBoundingBox in MeshManipulator + * ISceneManager::addStaticText() now has a parameter for word wrapping + * getCharacterFromPos() in IGUIFont + * drawMeshBuffer() in IVideoDriver; + * interpolate() in matrix4 + * getLast in array ------------------------------------------------------------------------------------- Changes in version 0.4.2: (13 Dec 2003) diff --git a/doc/upgrade-guide.txt b/doc/upgrade-guide.txt index 482065b5..fd5ccbef 100644 --- a/doc/upgrade-guide.txt +++ b/doc/upgrade-guide.txt @@ -1584,3 +1584,61 @@ Changed parameter type (interpolation factor must not be int) vector2d getInterpolated_quadratic(const vector2d& v2, const vector2d& v3, f64 d) const vector2d& interpolate(const vector2d& a, const vector2d& b, f64 d) +Changes for Version 1.5.1 +------------------------- +This release is a pure bugfixes release, with almost no visible API changes. All changes should be backward compatible (as it's just a minor release), but you have to recompile the app due to changes in the virtual method tables. + +dimension2d.h +Fixed a bug in the operator+=, added operator-= and changed comparison to equal() method. + dimension2d& operator-=(const dimension2d& other) + +IrrCompileConfig.h +Added defines to check for the Irrlicht version in the code. + IRRLICHT_VERSION_MAJOR + IRRLICHT_VERSION_MINOR + IRRLICHT_VERSION_REVISION + IRRLICHT_VERSION_SVN // only defined if you're using a version from SVN, i.e. not officially released one + +IrrlichtDevice.h +Added static method isDriverSupported which checks the driver support of the library + static bool isDriverSupported(video::E_DRIVER_TYPE driver) + +irrMath.h +Added iszero specialization for f64 + bool iszero(const f64 a, const f64 tolerance = ROUNDING_ERROR_64) + +irrXML.h +Added deleteCallback flag for cleanup of the ReadCallback. + IrrXMLReader* createIrrXMLReader(IFileReadCallBack* callback, bool deleteCallback = false); + IrrXMLReaderUTF16* createIrrXMLReaderUTF16(IFileReadCallBack* callback, bool deleteCallback = false); + IrrXMLReaderUTF32* createIrrXMLReaderUTF32(IFileReadCallBack* callback, bool deleteCallback = false); + +ISceneNode.h +Added getSceneManager to get the currently used scene manager of the node. + ISceneManager* getSceneManager(void) const + +IVideoDriver.h +Added default values for vType, pType, and iType + virtual void drawVertexPrimitiveList(const void* vertices, u32 vertexCount, const void* indexList, u32 primCount, + E_VERTEX_TYPE vType=EVT_STANDARD, scene::E_PRIMITIVE_TYPE pType=scene::EPT_TRIANGLES, E_INDEX_TYPE iType=EIT_16BIT) +Added method to draw 2d rectangle outline + void draw2DRectangleOutline(const core::recti& pos, SColor color=SColor(255,255,255,255)) + +matrix4.h +Added method to get transposedInverse + CMatrix4 transposedInverse(*this, EM4CONST_INVERSE_TRANSPOSED) + +rect.h +Added typedefs + typedef rect rectf; + typedef rect recti; + +SSharedMeshBuffer.h +Split hardware mapping hint into vertex and index part + E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const + E_HARDWARE_MAPPING getHardwareMappingHint_Index() const + void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX ) + +vector2d.h +Fix angle calculation for integer vectors + diff --git a/examples/01.HelloWorld/HelloWorld.cbp b/examples/01.HelloWorld/HelloWorld.cbp index 68d07e2d..b2793338 100644 --- a/examples/01.HelloWorld/HelloWorld.cbp +++ b/examples/01.HelloWorld/HelloWorld.cbp @@ -7,38 +7,47 @@