From 15e50959e6b914353a3517b49fe9eedfca249217 Mon Sep 17 00:00:00 2001 From: aramis_acg Date: Thu, 2 Feb 2012 22:50:24 +0000 Subject: [PATCH] - Ifc: enable double-precision arithmetics for the entire pipeline. This does fix bugs, but unfortunately not all if them. git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@1143 67173fc5-114c-0410-ac8e-9d2fd5bffc1f --- code/IFCLoader.cpp | 5 ++++- code/IFCUtil.cpp | 2 +- code/IFCUtil.h | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/code/IFCLoader.cpp b/code/IFCLoader.cpp index 472ae11ae..f5a903cf3 100644 --- a/code/IFCLoader.cpp +++ b/code/IFCLoader.cpp @@ -325,7 +325,10 @@ void SetCoordinateSpace(ConversionData& conv) void ResolveObjectPlacement(aiMatrix4x4& m, const IfcObjectPlacement& place, ConversionData& conv) { if (const IfcLocalPlacement* const local = place.ToPtr()){ - ConvertAxisPlacement(m, *local->RelativePlacement, conv); + IfcMatrix4 tmp; + ConvertAxisPlacement(tmp, *local->RelativePlacement, conv); + + m = static_cast(tmp); if (local->PlacementRelTo) { aiMatrix4x4 tmp; diff --git a/code/IFCUtil.cpp b/code/IFCUtil.cpp index e2ba99fe9..1da081d56 100644 --- a/code/IFCUtil.cpp +++ b/code/IFCUtil.cpp @@ -269,7 +269,7 @@ void ConvertColor(aiColor4D& out, const IfcColourRgb& in) void ConvertColor(aiColor4D& out, const IfcColourOrFactor& in,ConversionData& conv,const aiColor4D* base) { if (const EXPRESS::REAL* const r = in.ToPtr()) { - out.r = out.g = out.b = *r; + out.r = out.g = out.b = static_cast(*r); if(base) { out.r *= static_cast( base->r ); out.g *= static_cast( base->g ); diff --git a/code/IFCUtil.h b/code/IFCUtil.h index 14114f139..035d5768b 100644 --- a/code/IFCUtil.h +++ b/code/IFCUtil.h @@ -51,7 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { namespace IFC { - typedef float IfcFloat; + typedef double IfcFloat; // IfcFloat-precision math data types typedef aiVector2t IfcVector2;