further merged from 1.5 branch to trunk, all changes from 1815 to 1819.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@1821 dfc29bdd-3216-0410-991c-e03cc46cb475
master
hybrid 2008-11-24 17:34:27 +00:00
parent b548cee8fc
commit f778a1eb7f
9 changed files with 109 additions and 29 deletions

View File

@ -1,27 +1,95 @@
Changes in version 1.5 (... 2008)
Changes in version 1.5 (...12.2008)
- Terrain heightmap and texture were flipped in order to draw them as expected (looking onto the terrain from high above will just look like the actual texture/heightmap).
- Significant internal change to the way that FPS camera jump speed and collision response animator gravity interact. The behaviour is now much more realistic, but it will require you to adjust your jump speed and gravity.
- Skybox won't be culled anymore by nearplane or farplane.
- BBoxes of animated meshes (skinned meshes) are updated again.
- Lost devices (as found with D3D) are properly handled now. So the screen can be resized or minimized without crashing the app.
- Renamed IGUIElement::setRelativePosition(const core::rect<f32>& r) to IGUIElement::setRelativePositionProportional(), as it has radically different functionality from setRelativePosition(const core::rect<s32>& r)
- Added IGUIElement::setRelativePosition(const core::position2di & position) to set a new position while retaining the existing height and width.
- Many Collada fixes. z_up coords are supported now, texture coords are properly loaded. Transparency is supported.
- Camera scene node rotation and target can now be bound together so that changing one automatically changes the other (as the FPS camera has always done). See ICameraSceneNode::bindTargetAndRotation()
- Removed the extra libpng files for OSX. OSX now also uses the default libpng.
- Enhanced PCX support with some more color formats and write support.
- Fixed LMTS problems with extra data in files.
- Removed VS6 .dsw / .dsp project files - VS6 is no longer supported.
- Particles can be scaled during animations. Particle scaling needs to happen in the emitter now, instead of in the Particle system scene node. Deprecation methods will guide the user.
- ISceneNode::setParent and addChild now updates node SceneManager pointers if the node was from another SceneManager.
- Basic support for joystick input events on Windows, Linux, SDL and OSX. Tested with wired Logitech and Thrustmaster wired controllers and XBox 360 wireless controller ( http://tattiebogle.net/index.php/ProjectRoot/Xbox360Controller/OsxDriver )
- Fixed scaled octree nodes being incorrectly frustum culled.
- FSAA under OpenGL and Win32 added. Now all hw drivers and platforms should support it.
- Unlimited RTT fix for D3D systems. Depth buffers are now shared if possible, otherwise a new depth buffer is generated. In order to save VidMem one should create RTTs starting with the largest one.
- Avoid RTTs with nonFBO-support under OpenGL which are larger than the screen. Since we rely on rendering into textures in this case we need to clamp the size by the screensize.
- Fixes for getAbsoluteFilename under Linux in order to return a filename instead of en empty string in case the file doesn't exist.
- Use absolute path names when creating / finding textures.
- Font tool implementation for Linux with xft, by Neil Burlock.
- Support for normals and UV coords from DeclData in .x files.
- Modified line2d<T>::intersectWith() to cover more cases.
- Added IVideoDriver::drawPixel().
- Moved the window pointer from endScene to beginScene, as this is required for OpenGL support of external window pointers.
- Fix for terrain culling.
- Added minimize button to win32 window (if resizable)
- Major API change: RTTs are now created via addRenderTargetTexture instead of createRenderTargetTexture, which allows to retrieve them from the texture cache, but also changes the way of removing the RTTs, and especially one must not drop the pointer anymore.
- WindowsCE-Bugfix
- disableFeature can be used to override feature support of the video driver.
- draw2DImage can now also handle RTTs under OpenGL (which were flipped before).
- Ogre mesh format fixes for proper texture support.
- Added .obj mesh writer.
- Some core::string constructors made explicit to avoid unintended conversions. Just add core::stringc() or core::stringw() around the old code to avoid warnings.
- IdentityMatrix is now a properly defined global, with external visibility on all platforms.
- Bugfix for context releases with glx 1.3 on error.
- Removed constraints for sizes of the terrain scene node.
- Support for 32bit indices in a special MeshBuffer class.
- isBetweenPoints return true now even for the begin and end points, i.e. line segments are now including their start and end.
- Fix XML reader creation for non-existing files and invalid callbacks.
- Changed interpretation of MaterialTypeParam==0 in transparent materials. Now it's consistent with all other values, but one has to set the value to 0.5 to get the old behavior (slightly faster rendering, but no smooth borders)
- Replaced transformBox by transformBoxEx in some internal methods to avoid major malfunction of the transformations.
- Fix use of zip file inside zip files.
- Avoid loading textures which are not used by the mesh in b3d loader.
- Added scaleTCoords methods to MeshManipulator

View File

@ -6,7 +6,7 @@
#define __IRR_COMPILE_CONFIG_H_INCLUDED__
//! Irrlicht SDK Version
#define IRRLICHT_SDK_VERSION "1.4.2"
#define IRRLICHT_SDK_VERSION "1.5.beta"
#include <stdio.h> // TODO: Although included elsewhere this is required at least for mingw
@ -301,7 +301,7 @@ precision will be lower but speed higher. currently X86 only
#endif
// Some cleanup and standard stuff
#ifdef _IRR_WINDOWS_API_
// To build Irrlicht as a static library, you must define _IRR_STATIC_LIB_ in both the

View File

@ -142,7 +142,7 @@
#include "SMeshBufferTangents.h"
#include "SViewFrustum.h"
/*! \mainpage Irrlicht Engine 1.4.2 API documentation
/*! \mainpage Irrlicht Engine 1.5.beta API documentation
*
* <div align="center"><img src="logobig.png" ></div>
*

View File

@ -613,7 +613,7 @@ public:
ret.pointB.Y = Count > 4 ? ValueF[4] : 0.0f;
ret.pointB.Z = Count > 5 ? ValueF[5] : 0.0f;
ret.pointC.X = Count > 6 ? ValueF[6] : 0.0f;
ret.pointC.X = Count > 7 ? ValueF[7] : 0.0f;
ret.pointC.Y = Count > 7 ? ValueF[7] : 0.0f;
ret.pointC.Z = Count > 8 ? ValueF[8] : 0.0f;
}
else
@ -625,7 +625,7 @@ public:
ret.pointB.Y = Count > 4 ? (f32)ValueI[4] : 0.0f;
ret.pointB.Z = Count > 5 ? (f32)ValueI[5] : 0.0f;
ret.pointC.X = Count > 6 ? (f32)ValueI[6] : 0.0f;
ret.pointC.X = Count > 7 ? (f32)ValueI[7] : 0.0f;
ret.pointC.Y = Count > 7 ? (f32)ValueI[7] : 0.0f;
ret.pointC.Z = Count > 8 ? (f32)ValueI[8] : 0.0f;
}

View File

@ -2750,10 +2750,8 @@ void CD3D9Driver::checkDepthBuffer(ITexture* tex)
!queryFeature(EVDF_TEXTURE_NPOT),
!queryFeature(EVDF_TEXTURE_NSQUARE), true);
SDepthSurface* depth=0;
core::dimension2di destSize=DepthBuffers[0]->Size;
if ((destSize.Width>=optSize.Width) && (destSize.Height>=optSize.Height))
depth=DepthBuffers[0];
for (u32 i=1; i<DepthBuffers.size(); ++i)
core::dimension2di destSize=(0x7fffffff, 0x7fffffff);
for (u32 i=0; i<DepthBuffers.size(); ++i)
{
if ((DepthBuffers[i]->Size.Width>=optSize.Width) &&
(DepthBuffers[i]->Size.Height>=optSize.Height))

View File

@ -188,9 +188,6 @@ const c8* CFileSystem::getWorkingDirectory()
//! Changes the current Working Directory to the given string.
//! The string is operating system dependent. Under Windows it will look
//! like this: "drive:\directory\sudirectory\"
//! \return Returns true if successful, otherwise false.
bool CFileSystem::changeWorkingDirectoryTo(const c8* newDirectory)
{
bool success=false;
@ -211,15 +208,29 @@ core::stringc CFileSystem::getAbsolutePath(const core::stringc& filename) const
#ifdef _IRR_WINDOWS_API_
#if !defined ( _WIN32_WCE )
c8 fpath[_MAX_PATH];
p = _fullpath( fpath, filename.c_str(), _MAX_PATH);
c8 fpath[_MAX_PATH];
p = _fullpath( fpath, filename.c_str(), _MAX_PATH);
#endif
#elif (defined(_IRR_POSIX_API_) || defined(_IRR_OSX_PLATFORM_))
c8 fpath[4096];
fpath[0]=0;
p = realpath(filename.c_str(), fpath);
if (!p)
return filename;
{
// content in fpath is undefined at this point
if ('0'==fpath[0]) // seems like fpath wasn't altered
{
// at least remove a ./ prefix
if ('.'==filename[0] && '/'==filename[1])
return filename.subString(2, filename.size()-2);
else
return filename;
}
else
return core::stringc(fpath);
}
#endif
return core::stringc(p);

View File

@ -22,10 +22,10 @@ CSceneNodeAnimatorCollisionResponse::CSceneNodeAnimatorCollisionResponse(
const core::vector3df& ellipsoidTranslation,
f32 slidingSpeed)
: Radius(ellipsoidRadius), Gravity(gravityPerSecond), Translation(ellipsoidTranslation),
World(world), Object(object), SceneManager(scenemanager), FallingVelocity(0.f),
SlidingSpeed(slidingSpeed), Falling(false), IsCamera(false), AnimateCameraTarget(true)
World(world), Object(object), SceneManager(scenemanager), LastTime(0),
SlidingSpeed(slidingSpeed), Falling(false), IsCamera(false),
AnimateCameraTarget(true)
{
#ifdef _DEBUG
setDebugName("CSceneNodeAnimatorCollisionResponse");
#endif
@ -37,7 +37,6 @@ CSceneNodeAnimatorCollisionResponse::CSceneNodeAnimatorCollisionResponse(
}
//! destructor
CSceneNodeAnimatorCollisionResponse::~CSceneNodeAnimatorCollisionResponse()
{
@ -64,6 +63,7 @@ void CSceneNodeAnimatorCollisionResponse::setEllipsoidRadius(
Radius = radius;
}
//! Returns the radius of the ellipsoid with wich the collision detection and
//! response is done.
core::vector3df CSceneNodeAnimatorCollisionResponse::getEllipsoidRadius() const
@ -85,6 +85,7 @@ core::vector3df CSceneNodeAnimatorCollisionResponse::getGravity() const
return Gravity;
}
//! 'Jump' the animator, by adding a jump speed opposite to its gravity
void CSceneNodeAnimatorCollisionResponse::jump(f32 jumpSpeed)
{
@ -100,7 +101,6 @@ void CSceneNodeAnimatorCollisionResponse::setEllipsoidTranslation(const core::ve
}
//! Returns the translation of the ellipsoid for collision detection.
core::vector3df CSceneNodeAnimatorCollisionResponse::getEllipsoidTranslation() const
{
@ -126,7 +126,6 @@ void CSceneNodeAnimatorCollisionResponse::setWorld(ITriangleSelector* newWorld)
}
//! Returns the current triangle selector containing all triangles for
//! collision detection.
ITriangleSelector* CSceneNodeAnimatorCollisionResponse::getWorld() const
@ -135,7 +134,6 @@ ITriangleSelector* CSceneNodeAnimatorCollisionResponse::getWorld() const
}
void CSceneNodeAnimatorCollisionResponse::animateNode(ISceneNode* node, u32 timeMs)
{
if (node != Object)
@ -196,6 +194,7 @@ void CSceneNodeAnimatorCollisionResponse::animateNode(ISceneNode* node, u32 time
LastPosition = Object->getPosition();
}
void CSceneNodeAnimatorCollisionResponse::setNode(ISceneNode* node)
{
Object = node;
@ -209,6 +208,7 @@ void CSceneNodeAnimatorCollisionResponse::setNode(ISceneNode* node)
LastTime = os::Timer::getTime();
}
//! Writes attributes of the scene node animator.
void CSceneNodeAnimatorCollisionResponse::serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options) const
{
@ -218,6 +218,7 @@ void CSceneNodeAnimatorCollisionResponse::serializeAttributes(io::IAttributes* o
out->addBool("AnimateCameraTarget", AnimateCameraTarget);
}
//! Reads attributes of the scene node animator.
void CSceneNodeAnimatorCollisionResponse::deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options)
{
@ -227,6 +228,7 @@ void CSceneNodeAnimatorCollisionResponse::deserializeAttributes(io::IAttributes*
AnimateCameraTarget = in->getAttributeAsBool("AnimateCameraTarget");
}
ISceneNodeAnimator* CSceneNodeAnimatorCollisionResponse::createClone(ISceneNode* node, ISceneManager* newManager)
{
if (!newManager) newManager = SceneManager;
@ -238,6 +240,7 @@ ISceneNodeAnimator* CSceneNodeAnimatorCollisionResponse::createClone(ISceneNode*
return newAnimator;
}
} // end namespace scene
} // end namespace irr

View File

@ -93,11 +93,13 @@ namespace scene
void setNode(ISceneNode* node);
core::vector3df LastPosition;
core::vector3df Radius;
core::vector3df Gravity;
core::vector3df FallingVelocity; // In the direction of Gravity.
core::vector3df Translation;
core::vector3df FallingVelocity; // In the direction of Gravity.
core::vector3df LastPosition;
core::triangle3df RefTriangle;
ITriangleSelector* World;
ISceneNode* Object;
@ -107,8 +109,6 @@ namespace scene
bool Falling;
bool IsCamera;
bool AnimateCameraTarget;
core::triangle3df RefTriangle;
};
} // end namespace scene

View File

@ -1,5 +1,5 @@
VERSION = 1.4.2
# Irrlicht Engine 1.4.2
VERSION = 1.5.beta
# Irrlicht Engine 1.5.beta
# Makefile for Linux
#
# To use, just run: