Wild Magic 4.3 to 4.4 Update Log


//----------------------------------------------------------------------------
(4.0.3) LibFoundation/Mathematics/Wm4Math.h

MSVC70 does not like the forward declaration of the specialized templates for
FastInvSqrt.
//----------------------------------------------------------------------------
(4.0.3) LibApplications/Dx9Application/Wm4Dx9Application.cpp
(4.0.3) LibApplications/OpenGLApplication/Wm4WglApplication.cpp
(4.0.3) LibApplications/SoftApplication/Wm4WinSoftApplication.cpp

Removed the unused HDC from the WM_PAINT handler.  Replaced the
"while (true)" construct with an equivalent one not using a constant
expression.  Removed the unused formal parameters from Main.
//----------------------------------------------------------------------------
(4.0.2) LibApplications/Dx9Application/Wm4WindowApplication.inl
(4.0.2) LibApplications/OpenGLApplication/Wm4WindowApplication.inl
(4.0.2) LibApplications/SoftApplication/Wm4WindowApplication.inl

Removed unused formal parameters from OnMouseWheel.
//----------------------------------------------------------------------------
(4.0.1) LibRenderers/SoftRenderer/Wm4WinSoftRenderer.cpp

Removed unused formal parameters from LoadFont, UnloadFont, and SelectFont.
//----------------------------------------------------------------------------
(4.0.2) LibRenderers/OpenGLRenderer/Wm4OpenGLRenderer.cpp

Typecast the ~0 as GLuint to avoid an MSVC compiler warning.
//----------------------------------------------------------------------------
(4.3.1) LibRenderers/OpenGLRenderer/GTglExtensions.cpp

Added a pragma to disable the warnings about "conditional expression is
constant".  Removed the "return 0" statement from GTglCreateShaderObjectARB
(dead code), since the macro before it has the return statement.
//----------------------------------------------------------------------------
(4.3.1) LibRenderers/OpenGLRenderer/GTglPlugin.cpp

Removed an unused formal parameter in ReportNullFunction.
//----------------------------------------------------------------------------
(4.3.1) LibRenderers/OpenGLRenderer/GTwglExtensions.cpp

Added a pragma to disable the warnings about "conditional expression is
constant".
//----------------------------------------------------------------------------
(4.0.1) LibRenderers/Dx9Renderer/Wm4Dx9AlphaState.cpp

I initialized some variables that MSVC complains they are potentially
uninitialized, because it cannot determine that the code structure will
cause them to be initialized.
//----------------------------------------------------------------------------
(4.0.2) LibRenderers/Dx9Renderer/Wm4Dx9Renderer.cpp

Typecast the ~0 as DWORD to avoid an MSVC compiler warning.
//----------------------------------------------------------------------------
(4.0.1) LibRenderers/Dx9Renderer/Wm4Dx9ResourcesED.cpp

Removed unused formal variables from SetVProgramConstant and
SetPProgramConstant.
//----------------------------------------------------------------------------
(4.0.3) LibRenderers/Dx9Renderer/Wm4Dx9ResourcesLR.cpp

Removed two _DEBUG blocks.  Removed a local variable that was initialized
but never used in LoadTexture.  Also initialized iByteQuantity, since MSVC
complains it is potentially uninitialized, because it cannot determine that
the code structure will cause it to be initialized.
//----------------------------------------------------------------------------
(4.0.1) LibPhysics/Intersection/Wm4ExtremalQuery3.h
(4.0.1) LibPhysics/Intersection/Wm4ExtremalQuery3.cpp
(4.0.1) LibPhysics/Intersection/Wm4ExtremalQuery3BSP.h
(4.0.1) LibPhysics/Intersection/Wm4ExtremalQuery3BSP.cpp
(4.0.1) LibPhysics/Intersection/Wm4ExtremalQuery3PRJ.h
(4.0.1) LibPhysics/Intersection/Wm4ExtremalQuery3PRJ.cpp
(4.0.1) LibPhysics/Intersection/Wm4IntersectingIntervals.h
(4.0.1) LibPhysics/Intersection/Wm4IntersectingIntervals.cpp
(4.0.1) LibPhysics/Intersection/Wm4IntersectingRectangles.h
(4.0.1) LibPhysics/Intersection/Wm4IntersectingRectangles.cpp
(4.0.1) LibPhysics/Intersection/Wm4IntersectingBoxes.h
(4.0.1) LibPhysics/Intersection/Wm4IntersectingBoxes.cpp

Changed the "const reference" members to be "const pointer" members in order
to compile without warnings using Level 4 of MSVC8.  With the const
references, the compiler cannot generate implicitly the assignment operator or
copy constructor.
//----------------------------------------------------------------------------
(4.0.2) LibImagics/BinaryOperations/Wm4Binary2D.cpp
(4.0.3) LibImagics/RasterDrawing/Wm4RasterDrawing.cpp

Replaced "while (true)" with an equivalent loop structure to avoid warnings
from MSVC Level 4 about "loop uses constant expression".  In Wm4Binary2D,
I initialized some variables that MSVC complains they are potentially
uninitialized, because it cannot determine that the code structure will
cause them to be initialized.
//----------------------------------------------------------------------------
(4.0.1) LibGraphics/Terrain/Wm4ClodTerrainPage.cpp

Added a couple of typecasts of "int" to "unsigned short" to make it clear
that is what was intended.  I also replaced a line of code of the form
"A += B;", where A and B are "unsigned short", by "A = A + B;".  The MSVC8
compiler complained about the first form, claiming that there was an
implicit conversion from "int" to "unsigned short", potentially losing
precision.  I do not have a clue why it thinks there is such a conversion.
//----------------------------------------------------------------------------
(4.0.1) LibGraphics/Terrain/Wm4ClodTerrainBlock.cpp

Added a couple of typecasts of "int" to "unsigned short" to make it clear
that is what was intended.
//----------------------------------------------------------------------------
(4.0.2) LibGraphics/Terrain/Wm4Terrain.cpp
(4.0.3) LibGraphics/Terrain/Wm4ClodTerrain.cpp

The ReplacePage function has an input pkImageSuffix that is not used.  It used
to be, but apparently is no longer needed.
//----------------------------------------------------------------------------
(4.0.1) LibGraphics/SceneGraph/Wm4StandardMesh.cpp

The m_bInside member was not set to the input bInside.  It used to be, so
perhaps someone forgot to restore a change made for debugging.
//----------------------------------------------------------------------------
(4.0.1) LibGraphics/Mathematics/Wm4BoolBase.cpp

Removed the formal variable name "rkVector", because the constructor and
assignment operators do not use it.
//----------------------------------------------------------------------------
(4.0.1) LibGraphics/Effects/Wm4Effect.cpp
(4.0.1) LibGraphics/Effects/Wm4PlanarReflectionEffect.cpp

Removed the formal variable name "pkGlobalObject", because the Draw functions
did not use it.
//----------------------------------------------------------------------------
(4.0.1) LibGraphics/Controllers/Wm4KeyframeController.cpp

Initialized some variables that MSVC complains they are potentially
uninitialized, because it cannot determine that the code structure will
cause them to be initialized.
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/System/Wm4Memory.cpp

Added "(void)bIsArray" to avoid the compiler warning about an unused formal
parameter.  That parameter is used within conditionally compiled code.
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/Surfaces/Wm4QuadricSurface.cpp

Removed the variable name from the unused parameters in the second derivative
functions.
//----------------------------------------------------------------------------
(4.0.3) LibFoundation/ComputationalGeometry/Wm4TriangulateEC.h
(4.0.7) LibFoundation/ComputationalGeometry/Wm4TriangulateEC.cpp

Removed an unused formal parameter from the InitializeVertices function.
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/ComputationalGeometry/Wm4ConvexHull3.h
(4.0.1) LibFoundation/ComputationalGeometry/Wm4ConvexHull3.cpp

Removed an unused formal parameter from the Update function.
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/Intersection/Wm4IntrBox2Circle2.cpp

The Find function needed to compare the contact time to the maximum time
passed to the function.  If it exceeds the maximum, it must return "no
intersection".
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/ComputationalGeometry/Wm4TInteger.inl

MSVC8 Level 4 warnings complained about the cast "(short)0x0000FFFF", stating
that it truncated a constant.  The target of the assignment is a "short", so
I changed this to "-1".

GetLeadingBit and GetTrailingBit had a "return -1" that is unreachable code.
I had included that return, because MSVC used to complain about code such as
the following
    int MyAbs (int i)
    {
        if (i > 0)
        {
            return i;
        }
        else
        {
            return -i;
        }
    }
The complaint used to be that "not all paths return a value", apparently
believing it is possible to have a third return, which would be the last
line of the function.  Now MSVC complains if you _do_ put a return there!
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/Distance/Wm4DistVector3Plane3.cpp

The code for computing distance when the vector and plane are moving had
errors.  The plane was using the vector's velocity but needed to use its
own velocity.
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/Approximation/Wm4ApprCylinderFit3.cpp

An uninitialized variable is guaranteed to be initialized inside a loop, but
the compiler cannot determine this and warns that the variable may be
uninitialized during its first use.  Initialized the variable just to
eliminate the warning.
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/Curves/Wm4BSplineGeodesic.h
(4.0.1) LibFoundation/Curves/Wm4BSplineGeodesic.cpp

(4.0.1) LibFoundation/Distance/Wm4DistCircle3Circle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistLine2Line2.cpp
(4.0.1) LibFoundation/Distance/Wm4DistLine2Ray2.cpp
(4.0.1) LibFoundation/Distance/Wm4DistLine2Segment2.cpp
(4.0.1) LibFoundation/Distance/Wm4DistLine3Box3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistLine3Circle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistLine3Line3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistLine3Ray3.cpp
(4.0.2) LibFoundation/Distance/Wm4DistLine3Rectangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistLine3Segment3.cpp
(4.0.3) LibFoundation/Distance/Wm4DistLine3Triangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistRay2Ray2.cpp
(4.0.1) LibFoundation/Distance/Wm4DistRay2Segment2.cpp
(4.0.2) LibFoundation/Distance/Wm4DistRay3Box3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistRay3Ray3.cpp
(4.0.2) LibFoundation/Distance/Wm4DistRay3Rectangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistRay3Segment3.cpp
(4.0.2) LibFoundation/Distance/Wm4DistRay3Triangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistRectangle3Rectangle3.cpp
(4.0.2) LibFoundation/Distance/Wm4DistSegment2Segment2.cpp
(4.0.2) LibFoundation/Distance/Wm4DistSegment3Box3.cpp
(4.0.2) LibFoundation/Distance/Wm4DistSegment3Rectangle3.cpp
(4.0.2) LibFoundation/Distance/Wm4DistSegment3Segment3.cpp
(4.0.2) LibFoundation/Distance/Wm4DistSegment3Triangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistTriangle3Rectangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistTriangle3Triangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector2Box2.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector2Ellipse2.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector2Line2.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector2Quadratic2.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector2Ray2.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector2Segment2.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector3Box3.cpp
(4.0.2) LibFoundation/Distance/Wm4DistVector3Circle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector3Ellipsoid3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector3Frustum3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector3Line3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector3Plane3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector3Quadratic3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector3Ray3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector3Rectangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector3Segment3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector3Tetrahedron3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistVector3Triangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistCircle3Circle3.h
(4.0.1) LibFoundation/Distance/Wm4DistLine2Line2.h
(4.0.1) LibFoundation/Distance/Wm4DistLine2Ray2.h
(4.0.1) LibFoundation/Distance/Wm4DistLine2Segment2.h
(4.0.1) LibFoundation/Distance/Wm4DistLine3Box3.h
(4.0.1) LibFoundation/Distance/Wm4DistLine3Circle3.h
(4.0.1) LibFoundation/Distance/Wm4DistLine3Line3.h
(4.0.1) LibFoundation/Distance/Wm4DistLine3Ray3.h
(4.0.1) LibFoundation/Distance/Wm4DistLine3Rectangle3.h
(4.0.1) LibFoundation/Distance/Wm4DistLine3Segment3.h
(4.0.1) LibFoundation/Distance/Wm4DistLine3Triangle3.h
(4.0.1) LibFoundation/Distance/Wm4DistRay2Ray2.h
(4.0.1) LibFoundation/Distance/Wm4DistRay2Segment2.h
(4.0.1) LibFoundation/Distance/Wm4DistRay3Box3.h
(4.0.1) LibFoundation/Distance/Wm4DistRay3Ray3.h
(4.0.1) LibFoundation/Distance/Wm4DistRay3Rectangle3.h
(4.0.1) LibFoundation/Distance/Wm4DistRay3Segment3.h
(4.0.1) LibFoundation/Distance/Wm4DistRay3Triangle3.h
(4.0.1) LibFoundation/Distance/Wm4DistRectangle3Rectangle3.h
(4.0.1) LibFoundation/Distance/Wm4DistSegment2Segment2.h
(4.0.1) LibFoundation/Distance/Wm4DistSegment3Box3.h
(4.0.1) LibFoundation/Distance/Wm4DistSegment3Rectangle3.h
(4.0.1) LibFoundation/Distance/Wm4DistSegment3Segment3.h
(4.0.1) LibFoundation/Distance/Wm4DistSegment3Triangle3.h
(4.0.1) LibFoundation/Distance/Wm4DistTriangle3Rectangle3.h
(4.0.1) LibFoundation/Distance/Wm4DistTriangle3Triangle3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector2Box2.h
(4.0.1) LibFoundation/Distance/Wm4DistVector2Ellipse2.h
(4.0.1) LibFoundation/Distance/Wm4DistVector2Line2.h
(4.0.1) LibFoundation/Distance/Wm4DistVector2Quadratic2.h
(4.0.1) LibFoundation/Distance/Wm4DistVector2Ray2.h
(4.0.1) LibFoundation/Distance/Wm4DistVector2Segment2.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Box3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Circle3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Ellipsoid3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Frustum3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Line3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Plane3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Quadratic3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Ray3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Rectangle3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Segment3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Tetrahedron3.h
(4.0.1) LibFoundation/Distance/Wm4DistVector3Triangle3.h

(4.0.1) LibFoundation/Interpolation/Wm4IntpLinearNonuniform2.cpp
(4.0.1) LibFoundation/Interpolation/Wm4IntpLinearNonuniform3.cpp
(4.0.1) LibFoundation/Interpolation/Wm4IntpQdrNonuniform2.cpp
(4.0.1) LibFoundation/Interpolation/Wm4IntpLinearNonuniform2.h
(4.0.1) LibFoundation/Interpolation/Wm4IntpLinearNonuniform3.h
(4.0.1) LibFoundation/Interpolation/Wm4IntpQdrNonuniform2.h

(4.0.1) LibFoundation/Intersection/Wm4IntrArc2Arc2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrArc2Circle2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrBox2Box2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrBox2Circle2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrBox3Box3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrBox3Frustum3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrBox3Sphere3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrCapsule3Capsule3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrCircle2Circle2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrCircle3Plane3.cpp
(4.0.3) LibFoundation/Intersection/Wm4IntrEllipse2Ellipse2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLinComp2LinComp2.cpp
(4.0.2) LibFoundation/Intersection/Wm4IntrLinComp2Triangle2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine2Arc2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine2Box2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine2Circle2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Box3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Capsule3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Cone3.cpp
(4.0.2) LibFoundation/Intersection/Wm4IntrLine3Cylinder3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Ellipsoid3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Lozenge3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Plane3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Sphere3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Torus3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Triangle3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrLozenge3Lozenge3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Box3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Capsule3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Cylinder3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Ellipsoid3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Lozenge3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Plane3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Sphere3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Triangle3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrRay2Arc2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrRay2Box2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrRay2Circle2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Box3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Capsule3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Cylinder3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Ellipsoid3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Lozenge3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Plane3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Sphere3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Triangle3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment2Arc2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment2Box2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment2Circle2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Box3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Capsule3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Ellipsoid3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Lozenge3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Plane3.cpp
(4.0.3) LibFoundation/Intersection/Wm4IntrSegment3Sphere3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Triangle3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrSphere3Cone3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrSphere3Frustum3.cpp
(4.0.2) LibFoundation/Intersection/Wm4IntrSphere3Sphere3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrTetrahedron3Tetrahedron3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrTriangle2Triangle2.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrTriangle3Cone3.cpp
(4.0.4) LibFoundation/Intersection/Wm4IntrTriangle3Triangle3.cpp
(4.0.1) LibFoundation/Intersection/Wm4IntrArc2Arc2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrArc2Circle2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrBox2Box2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrBox2Circle2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrBox3Box3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrBox3Frustum3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrBox3Sphere3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrCapsule3Capsule3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrCircle2Circle2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrCircle3Plane3.h
(4.0.3) LibFoundation/Intersection/Wm4IntrEllipse2Ellipse2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLinComp2LinComp2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLinComp2Triangle2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine2Arc2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine2Box2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine2Circle2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Box3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Capsule3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Cone3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Cylinder3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Ellipsoid3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Lozenge3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Plane3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Sphere3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Torus3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Triangle3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrLozenge3Lozenge3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Box3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Capsule3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Cylinder3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Ellipsoid3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Lozenge3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Plane3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Sphere3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrPlane3Triangle3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrRay2Arc2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrRay2Box2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrRay2Circle2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Box3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Capsule3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Cylinder3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Ellipsoid3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Lozenge3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Plane3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Sphere3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrRay3Triangle3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment2Arc2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment2Box2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment2Circle2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Box3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Capsule3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Cylinder3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Ellipsoid3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Lozenge3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Plane3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Sphere3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Triangle3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSphere3Cone3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSphere3Frustum3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrSphere3Sphere3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrTetrahedron3Tetrahedron3.h
(4.0.1) LibFoundation/Intersection/Wm4IntrTriangle2Triangle2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrTriangle3Cone3.h
(4.0.4) LibFoundation/Intersection/Wm4IntrTriangle3Triangle3.h

Changed the "const reference" members to be "const pointer" members in order
to compile without warnings using Level 4 of MSVC8.  With the const
references, the compiler cannot generate implicitly the assignment operator or
copy constructor.
//----------------------------------------------------------------------------
(4.0.2) LibGraphics/Rendering/Wm4Camera.cpp

Sometimes I hit the "assert" about the camera vectors not forming an
orthonormal set (due to numerical round-off errors).  The assert has been
replaced by re-orthonormalization code.
//----------------------------------------------------------------------------
(4.0.1) LibRenderers/OpenGLRenderer/Wm4OpenGLResourcesED.cpp

Removed unnecessary calls to glActiveTexture and glClientActiveTexture.
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/Intersection/Wm4IntrLine3Cone3.cpp

An "assert(false)" occurred in the case when the line intersects the cone
twice, but on the single-sided cone "behind" the vertex.  The assert did not
belong there, since the conclusion that there are no intersections (on the
single-sided cone "in front" of the vertex) is correct.
//----------------------------------------------------------------------------
(4.0.2) LibFoundation/Distance/Wm4DistLine3Triangle3.cpp

In the block of the GetSquared function where the line is not parallel to
the triangle, two dot products were incorrectly computed (a cut-and-paste
error).  The problem showed up when the line intersects the triangle.
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/Distance/Wm4DistSegment3Triangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistSegment3Rectangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistSegment3Box3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistRay3Triangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistRay3Rectangle3.cpp
(4.0.1) LibFoundation/Distance/Wm4DistRay3Box3.cpp

The parameter of the segment/ray was accessed before the squared-distance
function was called.  The parameter is valid only after such a call.
//----------------------------------------------------------------------------
(4.0.4) LibFoundation/Mathematics/Wm4Matrix3.h
(4.0.4) LibFoundation/Mathematics/Wm4Matrix3.h

Added an implementation of the polar decomposition that uses the singular
value decomposition to compute it.  Change the comments on the SVD code to
say M = L*D*R^T, where L and R are orthogonal and D is diagonal with
nonnegative entries.
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/Surfaces/Wm4NURBSRectangle.cpp

The Get function needed to test the input pointers in various locations
before calling the GetD*() functions.
//----------------------------------------------------------------------------
(4.0.2) LibFoundation/Intersection/Wm4IntrEllipse2Ellipse2.h
(4.0.2) LibFoundation/Intersection/Wm4IntrEllipse2Ellipse2.cpp

Two problems.  First, the quartic root finder sometimes tends to report
roots when there are none.  This occurs when one of the ellipses is nearly
flat in one direction, leading to floating-point round-off errors that
cause the incorrect root reports (the graph of the quartic near a root is
theoretically a small positive number, but the round-off errors cause it to
be slightly negative, leading to roots).  Second, the intersection-point
selection mechanism used a hard-coded relative error threshold.  Instead of
this, a more sophisticated method is used to polish the roots.  This
approach identifies intersection points where the ellipses transversely
intersect, and then uses bisection to narrow in on the intersection point.
(Thanks to Steven Apsel for sending me a collection of examples for which
the previous code failed.)
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/Mathematics/Wm4Ellipse2.h
(4.0.1) LibFoundation/Mathematics/Wm4Ellipse2.inl
(4.0.1) LibFoundation/Mathematics/Wm4Ellipsoid3.h
(4.0.1) LibFoundation/Mathematics/Wm4Ellipsoid3.inl

Added Evaluate functions to compute (X-K)^*M*(X-K)-1.  Change Contains to be
a const function.  Added destructors and changed the data members from
protected to private.
//----------------------------------------------------------------------------
(4.0.3) LibFoundation/Intersection/Wm4IntrSegment3Sphere3.cpp

In Find(), the contact time was still computed incorrectly, needing to be
divided by the relative speed. Also, m_iQuantity needed to be set to 1. The
same changes for Find() had to be incorporated into Test().
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/Intersection/Wm4IntrEllipse2Ellipse2.h
(4.0.1) LibFoundation/Intersection/Wm4IntrEllipse2Ellipse2.cpp

The calculations of the norms for the quadratic equations were using the
wrong coefficients.
//----------------------------------------------------------------------------
(4.0.1) LibFoundation/Intersection/Wm4IntrSegment3Sphere3.cpp

The Find query for moving sphere and segment needed to use fTMax in the
computation of the direction vector for the segment traveled by the sphere
center. The computation of m_akPoint[0] was also incorrect. 
//----------------------------------------------------------------------------
(4.0.4) LibGraphics/Rendering/Wm4Renderer.cpp

The OnFrameChange function was setting const references to the Camera's
returned location and coordinate vectors.  Changed this to copy the returned
values to local variables.
//----------------------------------------------------------------------------
(4.0.1) LibApplications/Dx9Application/Wm4WindowApplication3.h
(4.0.1) LibApplications/Dx9Application/Wm4WindowApplication3.cpp
(4.0.2) LibApplications/Dx9Application/Wm4Dx9Application.cpp
(4.0.1) LibApplications/OpenGLApplication/Wm4WindowApplication3.h
(4.0.1) LibApplications/OpenGLApplication/Wm4WindowApplication3.cpp
(4.0.2) LibApplications/OpenGLApplication/Wm4WglApplication.cpp
(4.0.1) LibApplications/SoftApplication/Wm4WindowApplication3.h
(4.0.1) LibApplications/SoftApplication/Wm4WindowApplication3.cpp
(4.0.2) LibApplications/SoftApplication/Wm4WinSoftApplication.cpp

Added the ability to translate the camera left or right using the insert or
delete keys.
//----------------------------------------------------------------------------
(4.3.0) LibRenderers/OpenGLRenderer/GTglExtensions.h
(4.3.0) LibRenderers/OpenGLRenderer/GTglExtensions.cpp
(4.3.0) LibRenderers/OpenGLRenderer/GTglUtility.h
(4.3.0) LibRenderers/OpenGLRenderer/GTglPlugin.h
(4.3.0) LibRenderers/OpenGLRenderer/GTglPlugin.cpp
(4.3.0) LibRenderers/OpenGLRenderer/GTwglExtensions.h
(4.3.0) LibRenderers/OpenGLRenderer/GTwglExtensions.cpp
(4.3.0) LibRenderers/OpenGLRenderer/GTglxExtensions.h
(4.3.0) LibRenderers/OpenGLRenderer/GTglxExtensions.cpp
(4.3.0) LibRenderers/OpenGLRenderer/GTaglExtensions.cpp

Rewrote these to be compilable only by C++.  Added two plugins.  The plugin
ReportNullFunction is called when an attempt is made to call an OpenGL
function but the function pointer is null.  The plugin ReportOpenGLError is
called by each OpenGL function, testing the return value of glGetError and
writing it to a file when there is an error.
//----------------------------------------------------------------------------
