From ac11a0c06b0b63de395cf20d1c49bf6c987d6003 Mon Sep 17 00:00:00 2001 From: ejcoumans Date: Sat, 3 Jun 2006 02:13:59 +0000 Subject: [PATCH] Did a bit more Collada physics importing work. Also did a quick workaround to allow different camera UP. This demo stuff really needs to be cleaned up now! --- Demos/ColladaDemo/ColladaDemo.cpp | 219 ++- Demos/OpenGL/GL_ShapeDrawer.cpp | 23 +- Demos/OpenGL/GlutStuff.cpp | 28 +- .../FCDocument/FCDPhysicsSceneNode.cpp | 2 +- Extras/FCollada/FCDocument/FCDTransform.cpp | 142 +- Extras/FCollada/FCDocument/FCDTransform.h | 1218 ++++++++--------- Extras/FCollada/FUtils/FUXmlParser.cpp | 339 ++--- .../CcdPhysics/CcdPhysicsController.cpp | 7 +- .../CcdPhysics/CcdPhysicsController.h | 1 + msvc/8/appColladaDemo.vcproj | 4 +- msvc/8/wksbullet.sln | 615 +++++++-- 11 files changed, 1608 insertions(+), 990 deletions(-) diff --git a/Demos/ColladaDemo/ColladaDemo.cpp b/Demos/ColladaDemo/ColladaDemo.cpp index 809218797..3d6f59d32 100644 --- a/Demos/ColladaDemo/ColladaDemo.cpp +++ b/Demos/ColladaDemo/ColladaDemo.cpp @@ -27,7 +27,8 @@ subject to the following restrictions: #include "CollisionShapes/TriangleMeshShape.h" - +extern SimdVector3 gCameraUp; +extern int gForwardAxis; #include "CollisionShapes/Simplex1to4Shape.h" #include "CollisionShapes/EmptyShape.h" @@ -44,6 +45,9 @@ subject to the following restrictions: #include "GLDebugDrawer.h" +//either FCollada or Collada-dom +#define USE_FCOLLADA 1 +#ifdef USE_FCOLLADA //Collada Physics test //#define NO_LIBXML //need LIBXML, because FCDocument/FCDPhysicsRigidBody.h needs FUDaeWriter, through FCDPhysicsParameter.hpp @@ -67,11 +71,14 @@ subject to the following restrictions: #include "FCDocument/FCDPhysicsAnalyticalGeometry.h" -//aaa - - +#else +//Use Collada-dom + +#include "dae.h" +#include "dom/domCOLLADA.h" +#endif @@ -216,6 +223,8 @@ void CreatePhysicsObject(bool isDynamic, float mass, const SimdTransform& startT +#ifdef USE_FCOLLADA + bool ConvertColladaPhysicsToBulletPhysics(const FCDPhysicsSceneNode* inputNode) { @@ -281,7 +290,11 @@ bool ConvertColladaPhysicsToBulletPhysics(const FCDPhysicsSceneNode* inputNode) //right now as we would also have to migrate all the animation curves. - //FRTScaleList scaleTransforms; + SimdVector3 localScaling(1.f,1.f,1.f); + + + + SimdTransform accumulatedWorldTransform; accumulatedWorldTransform.setIdentity(); @@ -290,19 +303,33 @@ bool ConvertColladaPhysicsToBulletPhysics(const FCDPhysicsSceneNode* inputNode) for (uint32 i=0; iGetTransforms()[i])->ToMatrix(); - SimdVector3 pos(mat.GetTranslation().x,mat.GetTranslation().y,mat.GetTranslation().z); - SimdMatrix3x3 rotMat( - mat.m[0][0],mat.m[0][1],mat.m[0][2], - mat.m[1][0],mat.m[1][1],mat.m[1][2], - mat.m[2][0],mat.m[2][1],mat.m[2][2]); + if (targetNode->GetTransforms()[i]->GetType() == FCDTransform::SCALE) + { - rotMat = rotMat.transpose(); - SimdTransform trans(rotMat,pos); + FCDTScale* scaleTrans = (FCDTScale*)targetNode->GetTransforms()[i]; + const FMVector3& scaling = scaleTrans->GetScale(); + localScaling[0] = scaling.x; + localScaling[1] = scaling.y; + localScaling[2] = scaling.z; - //TODO: check pre or post multiply - accumulatedWorldTransform = accumulatedWorldTransform * trans; + } else + { + + FMMatrix44 mat = (targetNode->GetTransforms()[i])->ToMatrix(); + SimdVector3 pos(mat.GetTranslation().x,mat.GetTranslation().y,mat.GetTranslation().z); + + SimdMatrix3x3 rotMat( + mat.m[0][0],mat.m[0][1],mat.m[0][2], + mat.m[1][0],mat.m[1][1],mat.m[1][2], + mat.m[2][0],mat.m[2][1],mat.m[2][2]); + + rotMat = rotMat.transpose(); + SimdTransform trans(rotMat,pos); + + //TODO: check pre or post multiply + accumulatedWorldTransform = accumulatedWorldTransform * trans; + } } @@ -552,6 +579,7 @@ bool ConvertColladaPhysicsToBulletPhysics(const FCDPhysicsSceneNode* inputNode) } else { + printf("static not yet?\n"); //should be static triangle mesh! @@ -751,6 +779,9 @@ bool ConvertColladaPhysicsToBulletPhysics(const FCDPhysicsSceneNode* inputNode) printf("create Physics Object\n"); //void CreatePhysicsObject(bool isDynamic, float mass, const SimdTransform& startTransform,CollisionShape* shape) + collisionShape->setLocalScaling(localScaling); + ms[numObjects].m_localScaling = localScaling; + CreatePhysicsObject(isDynamic, mymass, accumulatedWorldTransform,collisionShape); @@ -768,7 +799,10 @@ bool ConvertColladaPhysicsToBulletPhysics(const FCDPhysicsSceneNode* inputNode) return true; } +#else +//Collada-dom +#endif @@ -780,6 +814,8 @@ GLDebugDrawer debugDrawer; int main(int argc,char** argv) { + gCameraUp = SimdVector3(0,0,1); + gForwardAxis = 1; ///Setup a Physics Simulation Environment CollisionDispatcher* dispatcher = new CollisionDispatcher(); @@ -792,6 +828,7 @@ int main(int argc,char** argv) physicsEnvironmentPtr->setGravity(0,-10,0); physicsEnvironmentPtr->setDebugDrawer(&debugDrawer); + /// Import Collada 1.4 Physics objects @@ -800,7 +837,7 @@ int main(int argc,char** argv) //char* filename = "friction.dae"; - +#ifdef USE_FCOLLADA FCDocument* document = new FCDocument(); FUStatus status = document->LoadFromFile(filename); @@ -818,7 +855,150 @@ int main(int argc,char** argv) printf("ConvertColladaPhysicsToBulletPhysics failed\n"); } } +#else + //Collada-dom + DAE *collada = new DAE; + + int res = collada->load(filename);//,docBuffer); + if (res != DAE_OK) + { + printf("DAE/Collada-dom: Couldn't load %s\n",filename); + } else + { + + domCOLLADA *dom = collada->getDom(filename); + if ( !dom ) + { + printf("COLLADA File loaded to the dom, but query for the dom assets failed \n" ); + printf("COLLADA Load Aborted! \n" ); + delete collada; + + } else + { + + //succesfully loaded file, now convert data + + if ( dom->getAsset()->getUp_axis() ) + { + domAsset::domUp_axis * up = dom->getAsset()->getUp_axis(); + switch( up->getValue() ) + { + case UPAXISTYPE_X_UP: + printf(" X is Up Data and Hiearchies must be converted!\n" ); + printf(" Conversion to X axis Up isn't currently supported!\n" ); + printf(" COLLADA_RT defaulting to Y Up \n" ); + break; + case UPAXISTYPE_Y_UP: + printf(" Y Axis is Up for this file \n" ); + printf(" COLLADA_RT set to Y Up \n" ); + + break; + case UPAXISTYPE_Z_UP: + printf(" Z Axis is Up for this file \n" ); + printf(" All Geometry and Hiearchies must be converted!\n" ); + break; + default: + + break; + } + } + + + + // Load all the geometry libraries + for ( int i = 0; i < dom->getLibrary_geometries_array().getCount(); i++) + { + domLibrary_geometriesRef libgeom = dom->getLibrary_geometries_array()[i]; + + printf(" CrtScene::Reading Geometry Library \n" ); + for ( int i = 0; i < libgeom->getGeometry_array().getCount(); i++) + { + //ReadGeometry( ); + domGeometryRef lib = libgeom->getGeometry_array()[i]; + + domMesh *meshElement = lib->getMesh(); + if (meshElement) + { + + + // Find out how many groups we need to allocate space for + int numTriangleGroups = (int)meshElement->getTriangles_array().getCount(); + int numPolygonGroups = (int)meshElement->getPolygons_array().getCount(); + int totalGroups = numTriangleGroups + numPolygonGroups; + if (totalGroups == 0) + { + printf("No Triangles or Polygons found int Geometry %s \n", lib->getId() ); + } else + { + printf("Found mesh geometry: numTriangleGroups:%i numPolygonGroups:%i\n",numTriangleGroups,numPolygonGroups); + } + + + } + domConvex_mesh *convexMeshElement = lib->getConvex_mesh(); + if (convexMeshElement) + { + printf("found convexmesh element\n"); + // Find out how many groups we need to allocate space for + int numTriangleGroups = (int)convexMeshElement->getTriangles_array().getCount(); + int numPolygonGroups = (int)convexMeshElement->getPolygons_array().getCount(); + int totalGroups = numTriangleGroups + numPolygonGroups; + if (totalGroups == 0) + { + printf("No Triangles or Polygons found in ConvexMesh Geometry %s \n", lib->getId() ); + }else + { + printf("Found convexmesh geometry: numTriangleGroups:%i numPolygonGroups:%i\n",numTriangleGroups,numPolygonGroups); + } + }//fi + }//for each geometry + + }//for all geometry libraries + + for ( int i = 0; i < dom->getLibrary_physics_scenes_array().getCount(); i++) + { + domLibrary_physics_scenesRef physicsScenesRef = dom->getLibrary_physics_scenes_array()[i]; + for (int s=0;sgetPhysics_scene_array().getCount();s++) + { + domPhysics_sceneRef physicsSceneRef = physicsScenesRef->getPhysics_scene_array()[s]; + + for (int m=0;mgetInstance_physics_model_array().getCount();m++) + { + domInstance_physics_modelRef modelRef = physicsSceneRef->getInstance_physics_model_array()[m]; + + for (int r=0;rgetInstance_rigid_body_array().getCount();r++) + { + domInstance_rigid_bodyRef rigidbodyRef = modelRef->getInstance_rigid_body_array()[r]; + domInstance_rigid_body::domTechnique_commonRef techniqueRef = rigidbodyRef->getTechnique_common(); + + if (techniqueRef) + { + float mass = techniqueRef->getMass()->getValue(); + bool isDynamics = techniqueRef->getDynamic()->getValue(); + printf("mass = %f, isDynamics %i\n",mass,isDynamics); + } + + } + + //we don't handle constraints just yet + for (int c=0;cgetInstance_rigid_constraint_array().getCount();i++) + { + + } + + } + + } + } + + } + + + + } + +#endif clientResetScene(); setCameraDistance(26.f); @@ -911,7 +1091,8 @@ void renderme() } char extraDebug[125]; - sprintf(extraDebug,"islId, Body=%i , %i",physObjects[i]->GetRigidBody()->m_islandTag1,physObjects[i]->GetRigidBody()->m_debugBodyId); + + sprintf(extraDebug,"islandId=%i, Body=%i, ShapeType=%s",physObjects[i]->GetRigidBody()->m_islandTag1,physObjects[i]->GetRigidBody()->m_debugBodyId,physObjects[i]->GetRigidBody()->GetCollisionShape()->GetName()); physObjects[i]->GetRigidBody()->GetCollisionShape()->SetExtraDebugInfo(extraDebug); GL_ShapeDrawer::DrawOpenGL(m,physObjects[i]->GetRigidBody()->GetCollisionShape(),wireColor,getDebugMode()); @@ -1136,6 +1317,7 @@ float gOldPickingDist = 0.f; RigidBody* pickedBody = 0;//for deactivation state + SimdVector3 GetRayTo(int x,int y) { float top = 1.f; @@ -1151,7 +1333,8 @@ SimdVector3 GetRayTo(int x,int y) rayForward*= farPlane; SimdVector3 rightOffset; - SimdVector3 vertical(0.f,1.f,0.f); + SimdVector3 vertical = gCameraUp; + SimdVector3 hor; hor = rayForward.cross(vertical); hor.normalize(); diff --git a/Demos/OpenGL/GL_ShapeDrawer.cpp b/Demos/OpenGL/GL_ShapeDrawer.cpp index c484e751a..411962c57 100644 --- a/Demos/OpenGL/GL_ShapeDrawer.cpp +++ b/Demos/OpenGL/GL_ShapeDrawer.cpp @@ -170,6 +170,8 @@ void GL_ShapeDrawer::DrawOpenGL(float* m, const CollisionShape* shape, const Sim } + + if (useWireframeFallback) { /// for polyhedral shapes @@ -195,16 +197,10 @@ void GL_ShapeDrawer::DrawOpenGL(float* m, const CollisionShape* shape, const Sim glEnd(); - - if (debugMode==IDebugDraw::DBG_DrawText) - { - BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),polyshape->GetName()); - } - if (debugMode==IDebugDraw::DBG_DrawFeaturesText) { BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),polyshape->GetExtraDebugInfo()); - + glColor3f(1.f, 1.f, 1.f); for (i=0;iGetNumVertices();i++) { @@ -230,6 +226,8 @@ void GL_ShapeDrawer::DrawOpenGL(float* m, const CollisionShape* shape, const Sim } } + + } } @@ -262,6 +260,17 @@ void GL_ShapeDrawer::DrawOpenGL(float* m, const CollisionShape* shape, const Sim } + glDisable(GL_DEPTH_BUFFER_BIT); + if (debugMode==IDebugDraw::DBG_DrawText) + { + BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),shape->GetName()); + } + + if (debugMode==IDebugDraw::DBG_DrawFeaturesText) + { + BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),shape->GetExtraDebugInfo()); + } + glEnable(GL_DEPTH_BUFFER_BIT); glPopMatrix(); glPopMatrix(); diff --git a/Demos/OpenGL/GlutStuff.cpp b/Demos/OpenGL/GlutStuff.cpp index db7761c98..130eb2a09 100644 --- a/Demos/OpenGL/GlutStuff.cpp +++ b/Demos/OpenGL/GlutStuff.cpp @@ -105,22 +105,40 @@ void toggleIdle() { } } +#include "SimdMatrix3x3.h" + +SimdVector3 gCameraUp(0,1,0); +int gForwardAxis = 2; void setCamera() { + glMatrixMode(GL_PROJECTION); glLoadIdentity(); float rele = ele * 0.01745329251994329547;// rads per deg float razi = azi * 0.01745329251994329547;// rads per deg - eye[0] = DISTANCE * sin(razi) * cos(rele); - eye[1] = DISTANCE * sin(rele); - eye[2] = DISTANCE * cos(razi) * cos(rele); - + + SimdQuaternion rot(gCameraUp,razi); + + + SimdVector3 eyePos(0,0,0); + eyePos[gForwardAxis] = -DISTANCE; + + SimdVector3 forward(eyePos[0],eyePos[1],eyePos[2]); + SimdVector3 right = gCameraUp.cross(forward); + SimdQuaternion roll(right,-rele); + + eyePos = SimdMatrix3x3(rot) * SimdMatrix3x3(roll) * eyePos; + + eye[0] = eyePos.getX(); + eye[1] = eyePos.getY(); + eye[2] = eyePos.getZ(); + glFrustum(-1.0, 1.0, -1.0, 1.0, 1.0, 100.0); gluLookAt(eye[0], eye[1], eye[2], center[0], center[1], center[2], - 0, 1, 0); + gCameraUp.getX(),gCameraUp.getY(),gCameraUp.getZ()); glMatrixMode(GL_MODELVIEW); } diff --git a/Extras/FCollada/FCDocument/FCDPhysicsSceneNode.cpp b/Extras/FCollada/FCDocument/FCDPhysicsSceneNode.cpp index 7267a4f64..3de8b7151 100644 --- a/Extras/FCollada/FCDocument/FCDPhysicsSceneNode.cpp +++ b/Extras/FCollada/FCDocument/FCDPhysicsSceneNode.cpp @@ -24,7 +24,7 @@ using namespace FUDaeWriter; FCDPhysicsSceneNode::FCDPhysicsSceneNode(FCDocument* document) : FCDEntity(document, "PhysicsSceneNode") { //FIXME: no default values are specified in the 1.4 spec! - gravity.x = 0.f; gravity.y = -9.8f; gravity.z = 0.f; + gravity.x = 0.f; gravity.y = 0.f; gravity.z = -9.8f; timestep = 1.f; } diff --git a/Extras/FCollada/FCDocument/FCDTransform.cpp b/Extras/FCollada/FCDocument/FCDTransform.cpp index 9e2da573f..4cf895346 100644 --- a/Extras/FCollada/FCDocument/FCDTransform.cpp +++ b/Extras/FCollada/FCDocument/FCDTransform.cpp @@ -52,13 +52,13 @@ FUStatus FCDTTranslation::LoadFromXML(xmlNode* node) } // Write the node to the COLLADA xml document -xmlNode* FCDTTranslation::WriteToXML(xmlNode* parentNode) const -{ - string content = FUStringConversion::ToString(translation); - xmlNode* transformNode = FUDaeWriter::AddChild(parentNode, DAE_TRANSLATE_ELEMENT, content); - GetDocument()->WriteAnimatedValueToXML(&translation.x, transformNode, "translation"); - return transformNode; -} +xmlNode* FCDTTranslation::WriteToXML(xmlNode* parentNode) const +{ + string content = FUStringConversion::ToString(translation); + xmlNode* transformNode = FUDaeWriter::AddChild(parentNode, DAE_TRANSLATE_ELEMENT, content); + GetDocument()->WriteAnimatedValueToXML(&translation.x, transformNode, "translation"); + return transformNode; +} FMMatrix44 FCDTTranslation::ToMatrix() const { @@ -111,14 +111,14 @@ FUStatus FCDTRotation::LoadFromXML(xmlNode* node) } // Write the node to the COLLADA xml document -xmlNode* FCDTRotation::WriteToXML(xmlNode* parent) const -{ - globalSBuilder.clear(); - FUStringConversion::ToString(globalSBuilder, axis); globalSBuilder += ' '; globalSBuilder += angle; - xmlNode* transformNode = FUDaeWriter::AddChild(parent, DAE_ROTATE_ELEMENT, globalSBuilder); - GetDocument()->WriteAnimatedValueToXML(&axis.x, transformNode, "rotation"); - return transformNode; -} +xmlNode* FCDTRotation::WriteToXML(xmlNode* parent) const +{ + globalSBuilder.clear(); + FUStringConversion::ToString(globalSBuilder, axis); globalSBuilder += ' '; globalSBuilder += angle; + xmlNode* transformNode = FUDaeWriter::AddChild(parent, DAE_ROTATE_ELEMENT, globalSBuilder); + GetDocument()->WriteAnimatedValueToXML(&axis.x, transformNode, "rotation"); + return transformNode; +} FMMatrix44 FCDTRotation::ToMatrix() const { @@ -174,12 +174,12 @@ FUStatus FCDTScale::LoadFromXML(xmlNode* node) } // Write the node to the COLLADA xml document -xmlNode* FCDTScale::WriteToXML(xmlNode* parentNode) const -{ - string content = FUStringConversion::ToString(scale); - xmlNode* transformNode = FUDaeWriter::AddChild(parentNode, DAE_SCALE_ELEMENT, content); - GetDocument()->WriteAnimatedValueToXML(&scale.x, transformNode, "scale"); - return transformNode; +xmlNode* FCDTScale::WriteToXML(xmlNode* parentNode) const +{ + string content = FUStringConversion::ToString(scale); + xmlNode* transformNode = FUDaeWriter::AddChild(parentNode, DAE_SCALE_ELEMENT, content); + GetDocument()->WriteAnimatedValueToXML(&scale.x, transformNode, "scale"); + return transformNode; } FMMatrix44 FCDTScale::ToMatrix() const @@ -225,12 +225,12 @@ FUStatus FCDTMatrix::LoadFromXML(xmlNode* node) } // Write the node to the COLLADA xml document -xmlNode* FCDTMatrix::WriteToXML(xmlNode* parentNode) const -{ - string content = FUStringConversion::ToString(transform); - xmlNode* transformNode = FUDaeWriter::AddChild(parentNode, DAE_MATRIX_ELEMENT, content); - GetDocument()->WriteAnimatedValueToXML(&transform[0][0], transformNode, "transform"); - return transformNode; +xmlNode* FCDTMatrix::WriteToXML(xmlNode* parentNode) const +{ + string content = FUStringConversion::ToString(transform); + xmlNode* transformNode = FUDaeWriter::AddChild(parentNode, DAE_MATRIX_ELEMENT, content); + GetDocument()->WriteAnimatedValueToXML(&transform[0][0], transformNode, "transform"); + return transformNode; } FCDAnimated* FCDTMatrix::GetAnimated() @@ -274,14 +274,14 @@ FUStatus FCDTLookAt::LoadFromXML(xmlNode* lookAtNode) } // Write the node to the COLLADA xml document -xmlNode* FCDTLookAt::WriteToXML(xmlNode* parentNode) const -{ - globalSBuilder.clear(); - FUStringConversion::ToString(globalSBuilder, position); globalSBuilder += ' '; - FUStringConversion::ToString(globalSBuilder, target); globalSBuilder += ' '; - FUStringConversion::ToString(globalSBuilder, up); - xmlNode* transformNode = FUDaeWriter::AddChild(parentNode, DAE_LOOKAT_ELEMENT, globalSBuilder); - return transformNode; +xmlNode* FCDTLookAt::WriteToXML(xmlNode* parentNode) const +{ + globalSBuilder.clear(); + FUStringConversion::ToString(globalSBuilder, position); globalSBuilder += ' '; + FUStringConversion::ToString(globalSBuilder, target); globalSBuilder += ' '; + FUStringConversion::ToString(globalSBuilder, up); + xmlNode* transformNode = FUDaeWriter::AddChild(parentNode, DAE_LOOKAT_ELEMENT, globalSBuilder); + return transformNode; } FMMatrix44 FCDTLookAt::ToMatrix() const @@ -346,15 +346,15 @@ FUStatus FCDTSkew::LoadFromXML(xmlNode* skewNode) } // Write the node to the COLLADA xml document -xmlNode* FCDTSkew::WriteToXML(xmlNode* parentNode) const -{ - globalSBuilder.clear(); - globalSBuilder.set(angle); globalSBuilder += ' '; - FUStringConversion::ToString(globalSBuilder, rotateAxis); globalSBuilder += ' '; - FUStringConversion::ToString(globalSBuilder, aroundAxis); - xmlNode* transformNode = FUDaeWriter::AddChild(parentNode, DAE_SKEW_ELEMENT, globalSBuilder); - GetDocument()->WriteAnimatedValueToXML(&angle, transformNode, "skew"); - return transformNode; +xmlNode* FCDTSkew::WriteToXML(xmlNode* parentNode) const +{ + globalSBuilder.clear(); + globalSBuilder.set(angle); globalSBuilder += ' '; + FUStringConversion::ToString(globalSBuilder, rotateAxis); globalSBuilder += ' '; + FUStringConversion::ToString(globalSBuilder, aroundAxis); + xmlNode* transformNode = FUDaeWriter::AddChild(parentNode, DAE_SKEW_ELEMENT, globalSBuilder); + GetDocument()->WriteAnimatedValueToXML(&angle, transformNode, "skew"); + return transformNode; } FMMatrix44 FCDTSkew::ToMatrix() const @@ -389,30 +389,30 @@ bool FCDTSkew::IsAnimated() const return GetDocument()->IsValueAnimated(&angle); } -// Creates a new COLLADA transform, given a transform type. -FCDTransform* FCDTFactory::CreateTransform(FCDocument* document, FCDSceneNode* parent, FCDTransform::Type type) -{ - switch (type) - { - case FCDTransform::TRANSLATION: return new FCDTTranslation(document, parent); - case FCDTransform::ROTATION: return new FCDTRotation(document, parent); - case FCDTransform::SCALE: return new FCDTScale(document, parent); - case FCDTransform::SKEW: return new FCDTSkew(document, parent); - case FCDTransform::MATRIX: return new FCDTMatrix(document, parent); - case FCDTransform::LOOKAT: return new FCDTLookAt(document, parent); - default: return NULL; - } -} - -// Imports a COLLADA transform, given an XML tree node. -FCDTransform* FCDTFactory::CreateTransform(FCDocument* document, FCDSceneNode* parent, xmlNode* node) -{ - FCDTransform* transform = NULL; - if (IsEquivalent(node->name, DAE_ROTATE_ELEMENT)) transform = new FCDTRotation(document, parent); - else if (IsEquivalent(node->name, DAE_TRANSLATE_ELEMENT)) transform = new FCDTTranslation(document, parent); - else if (IsEquivalent(node->name, DAE_SCALE_ELEMENT)) transform = new FCDTScale(document, parent); - else if (IsEquivalent(node->name, DAE_SKEW_ELEMENT)) transform = new FCDTSkew(document, parent); - else if (IsEquivalent(node->name, DAE_MATRIX_ELEMENT)) transform = new FCDTMatrix(document, parent); - else if (IsEquivalent(node->name, DAE_LOOKAT_ELEMENT)) transform = new FCDTLookAt(document, parent); - return transform; -} +// Creates a new COLLADA transform, given a transform type. +FCDTransform* FCDTFactory::CreateTransform(FCDocument* document, FCDSceneNode* parent, FCDTransform::Type type) +{ + switch (type) + { + case FCDTransform::TRANSLATION: return new FCDTTranslation(document, parent); + case FCDTransform::ROTATION: return new FCDTRotation(document, parent); + case FCDTransform::SCALE: return new FCDTScale(document, parent); + case FCDTransform::SKEW: return new FCDTSkew(document, parent); + case FCDTransform::MATRIX: return new FCDTMatrix(document, parent); + case FCDTransform::LOOKAT: return new FCDTLookAt(document, parent); + default: return NULL; + } +} + +// Imports a COLLADA transform, given an XML tree node. +FCDTransform* FCDTFactory::CreateTransform(FCDocument* document, FCDSceneNode* parent, xmlNode* node) +{ + FCDTransform* transform = NULL; + if (IsEquivalent(node->name, DAE_ROTATE_ELEMENT)) transform = new FCDTRotation(document, parent); + else if (IsEquivalent(node->name, DAE_TRANSLATE_ELEMENT)) transform = new FCDTTranslation(document, parent); + else if (IsEquivalent(node->name, DAE_SCALE_ELEMENT)) transform = new FCDTScale(document, parent); + else if (IsEquivalent(node->name, DAE_SKEW_ELEMENT)) transform = new FCDTSkew(document, parent); + else if (IsEquivalent(node->name, DAE_MATRIX_ELEMENT)) transform = new FCDTMatrix(document, parent); + else if (IsEquivalent(node->name, DAE_LOOKAT_ELEMENT)) transform = new FCDTLookAt(document, parent); + return transform; +} diff --git a/Extras/FCollada/FCDocument/FCDTransform.h b/Extras/FCollada/FCDocument/FCDTransform.h index e81935125..0e2aade66 100644 --- a/Extras/FCollada/FCDocument/FCDTransform.h +++ b/Extras/FCollada/FCDocument/FCDTransform.h @@ -1,660 +1,660 @@ -/* - Copyright (C) 2005-2006 Feeling Software Inc. - MIT License: http://www.opensource.org/licenses/mit-license.php -*/ -/* - Based on the FS Import classes: - Copyright (C) 2005-2006 Feeling Software Inc - Copyright (C) 2005-2006 Autodesk Media Entertainment - MIT License: http://www.opensource.org/licenses/mit-license.php -*/ - -/** - @file FCDTransform.h - This file contains the FCDTransform class and its up-classes: - FCDTTranslation, FCDTScale, FCDTRotation, FCDTMatrix, FCDTLookAt and FCDTSkew. -*/ - -#ifndef _FCD_TRANSFORM_H_ -#define _FCD_TRANSFORM_H_ - -class FCDocument; -class FCDSceneNode; - -#include "FCDocument/FCDObject.h" - -/** - A COLLADA transform. - - COLLADA supports six transformation types: translations(FCDTTranslation), - rotations(FCDTRotation), scales(FCDTScale), matrices(FCDTMatrix), - skews(FCDTSkew) and the 'look-at' transform(FCDTLookAt). - - @ingroup FCDocument -*/ -class FCOLLADA_EXPORT FCDTransform : public FCDObject -{ -public: - /** The COLLADA transform types. */ - enum Type - { - TRANSLATION, /**< A translation(FCDTTranslation). */ - ROTATION, /**< A rotation(FCDTRotation). */ - SCALE, /**< A non-uniform scale(FCDTScale). */ - MATRIX, /**< A matrix multiplication(FCDTMatrix). */ - LOOKAT, /**< A targeted, 'look-at' transformation(FCDTLookAt). */ - SKEW /**< A skew(FCDTSkew). */ - }; - -private: - FCDSceneNode* parent; - -public: - /** Constructor: do not use directly. - Instead, use the FCDSceneNode::AddTransform function. - @param document The COLLADA document that owns the transform. - @param _parent The visual scene node that contains the transform. - Set this pointer to NULL if this transform is not owned by a - visual scene node. */ - FCDTransform(FCDocument* document, FCDSceneNode* _parent) : FCDObject(document, "FCDTransform") { parent = _parent; } - - /** Destructor: do not use directly. - Instead, use the FCDSceneNode::ReleaseTransform function. */ - virtual ~FCDTransform() { parent = NULL; } - - /** Retrieves the visual scene node that contains this transformation. - @return The parent visual scene node. This pointer will be NULL - if the transformation is not contained by a visual scene node. */ - FCDSceneNode* GetParent() { return parent; } - const FCDSceneNode* GetParent() const { return parent; } /**< See above. */ - - /** Creates a copy of a transformation. - @param newParent The visual scene node that will contain the clone. - @return The cloned transformation. */ - virtual FCDTransform* Clone(FCDSceneNode* newParent) = 0; - - /** Retrieves the class type of the transformation. - The class type should be used to up-case the transformation pointer. - @return The class type. */ - virtual Type GetType() const = 0; - - /** Converts the transformation into a matrix. - Useful for visual scene nodes with a weird transformation stack. - @return A matrix equivalent of the transformation. */ - virtual FMMatrix44 ToMatrix() const = 0; - - /** Retrieves whether this transformation has an animation tied to its values. - @return Whether the transformation is animated. */ - virtual bool IsAnimated() const = 0; - - /** Retrieves the animated element for the transformation. - @return The animated element. This pointer will be NULL if the transformation - is not animated. */ - virtual FCDAnimated* GetAnimated() = 0; - - /** Retrieves whether a given transformation is the exact opposite of - this transformation. Executing two opposite transformations, one after the - other will not give any resulting transformation. This function is useful - to detect pivots within the transform stack. - @param UNUSED A second transformation. - @return Whether the two transformations are opposites. */ - virtual bool IsInverse(const FCDTransform* UNUSED(transform)) const { return false; } - +/* + Copyright (C) 2005-2006 Feeling Software Inc. + MIT License: http://www.opensource.org/licenses/mit-license.php +*/ +/* + Based on the FS Import classes: + Copyright (C) 2005-2006 Feeling Software Inc + Copyright (C) 2005-2006 Autodesk Media Entertainment + MIT License: http://www.opensource.org/licenses/mit-license.php +*/ + +/** + @file FCDTransform.h + This file contains the FCDTransform class and its up-classes: + FCDTTranslation, FCDTScale, FCDTRotation, FCDTMatrix, FCDTLookAt and FCDTSkew. +*/ + +#ifndef _FCD_TRANSFORM_H_ +#define _FCD_TRANSFORM_H_ + +class FCDocument; +class FCDSceneNode; + +#include "FCDocument/FCDObject.h" + +/** + A COLLADA transform. + + COLLADA supports six transformation types: translations(FCDTTranslation), + rotations(FCDTRotation), scales(FCDTScale), matrices(FCDTMatrix), + skews(FCDTSkew) and the 'look-at' transform(FCDTLookAt). + + @ingroup FCDocument +*/ +class FCOLLADA_EXPORT FCDTransform : public FCDObject +{ +public: + /** The COLLADA transform types. */ + enum Type + { + TRANSLATION, /**< A translation(FCDTTranslation). */ + ROTATION, /**< A rotation(FCDTRotation). */ + SCALE, /**< A non-uniform scale(FCDTScale). */ + MATRIX, /**< A matrix multiplication(FCDTMatrix). */ + LOOKAT, /**< A targeted, 'look-at' transformation(FCDTLookAt). */ + SKEW /**< A skew(FCDTSkew). */ + }; + +private: + FCDSceneNode* parent; + +public: + /** Constructor: do not use directly. + Instead, use the FCDSceneNode::AddTransform function. + @param document The COLLADA document that owns the transform. + @param _parent The visual scene node that contains the transform. + Set this pointer to NULL if this transform is not owned by a + visual scene node. */ + FCDTransform(FCDocument* document, FCDSceneNode* _parent) : FCDObject(document, "FCDTransform") { parent = _parent; } + + /** Destructor: do not use directly. + Instead, use the FCDSceneNode::ReleaseTransform function. */ + virtual ~FCDTransform() { parent = NULL; } + + /** Retrieves the visual scene node that contains this transformation. + @return The parent visual scene node. This pointer will be NULL + if the transformation is not contained by a visual scene node. */ + FCDSceneNode* GetParent() { return parent; } + const FCDSceneNode* GetParent() const { return parent; } /**< See above. */ + + /** Creates a copy of a transformation. + @param newParent The visual scene node that will contain the clone. + @return The cloned transformation. */ + virtual FCDTransform* Clone(FCDSceneNode* newParent) = 0; + + /** Retrieves the class type of the transformation. + The class type should be used to up-case the transformation pointer. + @return The class type. */ + virtual Type GetType() const = 0; + + /** Converts the transformation into a matrix. + Useful for visual scene nodes with a weird transformation stack. + @return A matrix equivalent of the transformation. */ + virtual FMMatrix44 ToMatrix() const = 0; + + /** Retrieves whether this transformation has an animation tied to its values. + @return Whether the transformation is animated. */ + virtual bool IsAnimated() const = 0; + + /** Retrieves the animated element for the transformation. + @return The animated element. This pointer will be NULL if the transformation + is not animated. */ + virtual FCDAnimated* GetAnimated() = 0; + + /** Retrieves whether a given transformation is the exact opposite of + this transformation. Executing two opposite transformations, one after the + other will not give any resulting transformation. This function is useful + to detect pivots within the transform stack. + @param UNUSED A second transformation. + @return Whether the two transformations are opposites. */ + virtual bool IsInverse(const FCDTransform* UNUSED(transform)) const { return false; } + /** [INTERNAL] Reads in the transformation from a given COLLADA XML tree node. @param transformNode The COLLADA XML tree node. @return The status of the import. If the status is not successful, it may be dangerous to extract information from the transformation.*/ - virtual FUStatus LoadFromXML(xmlNode* transformNode) = 0; + virtual FUStatus LoadFromXML(xmlNode* transformNode) = 0; /** [INTERNAL] Writes out the transformation to the given COLLADA XML tree node. @param parentNode The COLLADA XML parent node in which to insert the transformation. @return The created XML tree node. */ - virtual xmlNode* WriteToXML(xmlNode* parentNode) const = 0; -}; - -/** - A COLLADA translation. - A translation is a simple 3D displacement. - - @ingroup FCDocument -*/ -class FCOLLADA_EXPORT FCDTTranslation : public FCDTransform -{ -private: - FMVector3 translation; - -public: - /** Constructor: do not use directly. - Instead, use the FCDSceneNode::AddTransform function with - the TRANSLATION transformation type. - @param document The COLLADA document that owns the translation. - @param parent The visual scene node that contains the translation. - Set this pointer to NULL if the translation is not owned - by a visual scene node. */ - FCDTTranslation(FCDocument* document, FCDSceneNode* parent); - - /** Destructor: do not use directly. - Instead, use the FCDSceneNode::ReleaseTransform function. */ - virtual ~FCDTTranslation(); - - /** Retrieves the transformation class type for the translation. - @return The transformation class type: TRANSLATION. */ - virtual Type GetType() const { return TRANSLATION; } - - /** Retrieves the translation 3D displacement vector. - This displacement vector may be animated. - @return The displacement vector. */ - inline FMVector3& GetTranslation() { return translation; } - inline const FMVector3& GetTranslation() const { return translation; } /**< See above. */ - - /** Sets the translation 3D displacement vector. - @param _translation The displacement vector. */ - inline void SetTranslation(const FMVector3& _translation) { translation = _translation; } - - /** Sets the translation 3D displacement vector. - @param x The x-component displacement. - @param y The y-component displacement. - @param z The z-component displacement. */ - inline void SetTranslation(float x, float y, float z) { translation = FMVector3(x, y, z); } - - /** Converts the translation into a matrix. - @return A matrix equivalent of the translation. */ - virtual FMMatrix44 ToMatrix() const; - - /** Retrieves whether this translation is affected by an animation. - @return Whether the translation is animated. */ - virtual bool IsAnimated() const; - - /** Retrieves the animated element for the translation. - @see FCDAnimatedPoint3 - @return The animated element. This pointer will be NULL if the translation - is not animated. */ - virtual FCDAnimated* GetAnimated(); - - /** Retrieves whether a given transform is the exact opposite of - this translation. The opposite of a translation has a displacement - vector with all the components multiplied by -1. - @param transform A second transformation. - @return Whether the two transformations are opposites. */ - virtual bool IsInverse(const FCDTransform* transform) const; - - /** Creates a copy of the translation. - @param newParent The visual scene node that will contain the clone. - @return The cloned translation. */ - virtual FCDTransform* Clone(FCDSceneNode* newParent); - + virtual xmlNode* WriteToXML(xmlNode* parentNode) const = 0; +}; + +/** + A COLLADA translation. + A translation is a simple 3D displacement. + + @ingroup FCDocument +*/ +class FCOLLADA_EXPORT FCDTTranslation : public FCDTransform +{ +private: + FMVector3 translation; + +public: + /** Constructor: do not use directly. + Instead, use the FCDSceneNode::AddTransform function with + the TRANSLATION transformation type. + @param document The COLLADA document that owns the translation. + @param parent The visual scene node that contains the translation. + Set this pointer to NULL if the translation is not owned + by a visual scene node. */ + FCDTTranslation(FCDocument* document, FCDSceneNode* parent); + + /** Destructor: do not use directly. + Instead, use the FCDSceneNode::ReleaseTransform function. */ + virtual ~FCDTTranslation(); + + /** Retrieves the transformation class type for the translation. + @return The transformation class type: TRANSLATION. */ + virtual Type GetType() const { return TRANSLATION; } + + /** Retrieves the translation 3D displacement vector. + This displacement vector may be animated. + @return The displacement vector. */ + inline FMVector3& GetTranslation() { return translation; } + inline const FMVector3& GetTranslation() const { return translation; } /**< See above. */ + + /** Sets the translation 3D displacement vector. + @param _translation The displacement vector. */ + inline void SetTranslation(const FMVector3& _translation) { translation = _translation; } + + /** Sets the translation 3D displacement vector. + @param x The x-component displacement. + @param y The y-component displacement. + @param z The z-component displacement. */ + inline void SetTranslation(float x, float y, float z) { translation = FMVector3(x, y, z); } + + /** Converts the translation into a matrix. + @return A matrix equivalent of the translation. */ + virtual FMMatrix44 ToMatrix() const; + + /** Retrieves whether this translation is affected by an animation. + @return Whether the translation is animated. */ + virtual bool IsAnimated() const; + + /** Retrieves the animated element for the translation. + @see FCDAnimatedPoint3 + @return The animated element. This pointer will be NULL if the translation + is not animated. */ + virtual FCDAnimated* GetAnimated(); + + /** Retrieves whether a given transform is the exact opposite of + this translation. The opposite of a translation has a displacement + vector with all the components multiplied by -1. + @param transform A second transformation. + @return Whether the two transformations are opposites. */ + virtual bool IsInverse(const FCDTransform* transform) const; + + /** Creates a copy of the translation. + @param newParent The visual scene node that will contain the clone. + @return The cloned translation. */ + virtual FCDTransform* Clone(FCDSceneNode* newParent); + /** [INTERNAL] Reads in the translation from a given COLLADA XML tree node. @param translationNode The COLLADA XML tree node. @return The status of the import. If the status is not successful, it may be dangerous to extract information from the translation.*/ - virtual FUStatus LoadFromXML(xmlNode* translationNode); + virtual FUStatus LoadFromXML(xmlNode* translationNode); /** [INTERNAL] Writes out the translation to the given COLLADA XML tree node. @param parentNode The COLLADA XML parent node in which to insert the translation. @return The created XML tree node. */ - virtual xmlNode* WriteToXML(xmlNode* parentNode) const; -}; - -/** - A COLLADA non-uniform scale. - A non-uniform scale contains three scale factors. - @ingroup FCDocument -*/ -class FCOLLADA_EXPORT FCDTScale : public FCDTransform -{ -private: - FMVector3 scale; - -public: - /** Constructor: do not use directly. - Instead, use the FCDSceneNode::AddTransform function with - the SCALE transformation type. - @param document The COLLADA document that owns the non-uniform scale. - @param parent The visual scene node that contains the non-uniform scale. - Set this pointer to NULL if the non-uniform scale is not owned - by a visual scene node. */ - FCDTScale(FCDocument* document, FCDSceneNode* parent); - - /** Destructor: do not use directly. - Instead, use the FCDSceneNode::ReleaseTransform function. */ - virtual ~FCDTScale(); - - /** Retrieves the transformation class type for the non-uniform scale. - @return The class type: SCALE. */ - virtual Type GetType() const { return SCALE; } - - /** Retrieves the factors of the non-uniform scale. - These factors may be animated. - @return The scale factors. */ - FMVector3& GetScale() { return scale; } - const FMVector3& GetScale() const { return scale; } /**< See above. */ - - /** Sets the factors of the non-uniform scale. - @param _scale The scale factors. */ - inline void SetScale(const FMVector3& _scale) { scale = _scale; } - - /** Sets the factors of the non-uniform scale. - @param x The x-component scale factor. - @param y The y-component scale factor. - @param z The z-component scale factor. */ - inline void SetScale(float x, float y, float z) { scale = FMVector3(x, y, z); } - - /** Converts the non-uniform scale into a matrix. - @return A matrix equivalent of the non-uniform scale. */ - virtual FMMatrix44 ToMatrix() const; - - /** Retrieves whether the factors of the non-uniform scale are animated. - @return Whether the scale factors are animated. */ - virtual bool IsAnimated() const; - - /** Retrieves the animated element for the non-uniform scale factors. - @see FCDAnimatedPoint3 - @return The animated element. This pointer will be NULL if the - scale factors are not animated. */ - virtual FCDAnimated* GetAnimated(); - - /** Creates a copy of the non-uniform scale. - @param newParent The visual scene node that will contain the clone. - @return The cloned non-uniform scale. */ - virtual FCDTransform* Clone(FCDSceneNode* newParent); - + virtual xmlNode* WriteToXML(xmlNode* parentNode) const; +}; + +/** + A COLLADA non-uniform scale. + A non-uniform scale contains three scale factors. + @ingroup FCDocument +*/ +class FCOLLADA_EXPORT FCDTScale : public FCDTransform +{ +private: + FMVector3 scale; + +public: + /** Constructor: do not use directly. + Instead, use the FCDSceneNode::AddTransform function with + the SCALE transformation type. + @param document The COLLADA document that owns the non-uniform scale. + @param parent The visual scene node that contains the non-uniform scale. + Set this pointer to NULL if the non-uniform scale is not owned + by a visual scene node. */ + FCDTScale(FCDocument* document, FCDSceneNode* parent); + + /** Destructor: do not use directly. + Instead, use the FCDSceneNode::ReleaseTransform function. */ + virtual ~FCDTScale(); + + /** Retrieves the transformation class type for the non-uniform scale. + @return The class type: SCALE. */ + virtual Type GetType() const { return SCALE; } + + /** Retrieves the factors of the non-uniform scale. + These factors may be animated. + @return The scale factors. */ + FMVector3& GetScale() { return scale; } + const FMVector3& GetScale() const { return scale; } /**< See above. */ + + /** Sets the factors of the non-uniform scale. + @param _scale The scale factors. */ + inline void SetScale(const FMVector3& _scale) { scale = _scale; } + + /** Sets the factors of the non-uniform scale. + @param x The x-component scale factor. + @param y The y-component scale factor. + @param z The z-component scale factor. */ + inline void SetScale(float x, float y, float z) { scale = FMVector3(x, y, z); } + + /** Converts the non-uniform scale into a matrix. + @return A matrix equivalent of the non-uniform scale. */ + virtual FMMatrix44 ToMatrix() const; + + /** Retrieves whether the factors of the non-uniform scale are animated. + @return Whether the scale factors are animated. */ + virtual bool IsAnimated() const; + + /** Retrieves the animated element for the non-uniform scale factors. + @see FCDAnimatedPoint3 + @return The animated element. This pointer will be NULL if the + scale factors are not animated. */ + virtual FCDAnimated* GetAnimated(); + + /** Creates a copy of the non-uniform scale. + @param newParent The visual scene node that will contain the clone. + @return The cloned non-uniform scale. */ + virtual FCDTransform* Clone(FCDSceneNode* newParent); + /** [INTERNAL] Reads in the non-uniform scale from a given COLLADA XML tree node. @param scaleNode The COLLADA XML tree node. @return The status of the import. If the status is not successful, it may be dangerous to extract information from the transformation.*/ - virtual FUStatus LoadFromXML(xmlNode* scaleNode); - + virtual FUStatus LoadFromXML(xmlNode* scaleNode); + /** [INTERNAL] Writes out the non-uniform scale to the given COLLADA XML tree node. @param parentNode The COLLADA XML parent node in which to insert the transformation. @return The created XML tree node. */ - virtual xmlNode* WriteToXML(xmlNode* parentNode) const; -}; - -/** - A COLLADA angle-axis rotation. - This rotation defines an axis around which the 3D points - are rotated by a given angle. - @todo (clock-wise/counter-clock-wise?) - @ingroup FCDocument -*/ -class FCOLLADA_EXPORT FCDTRotation : public FCDTransform -{ -private: - float angle; - FMVector3 axis; - -public: - /** Constructor: do not use directly. - Instead, use the FCDSceneNode::AddTransform function with - the transformation type: ROTATION. - @param document The COLLADA document that owns the rotation. - @param parent The visual scene node that contains the rotation. - Set this pointer to NULL if the rotation is not owned - by a visual scene node. */ - FCDTRotation(FCDocument* document, FCDSceneNode* parent); - - /** Destructor: do not use directly. - Instead, use the FCDSceneNode::ReleaseTransform function. */ - virtual ~FCDTRotation(); - - /** Retrieves the transformation class type for the rotation. - @return The class type: ROTATION. */ - virtual Type GetType() const { return ROTATION; } - - /** Retrieves the rotation axis. - This 3D vector may be animated. - @return The rotation axis. */ - inline FMVector3& GetAxis() { return axis; } - inline const FMVector3& GetAxis() const { return axis; } /**< See above. */ - - /** Sets the rotation axis. - @param _axis The rotation axis. */ - inline void SetAxis(const FMVector3& _axis) { axis = _axis; } - - /** Sets the rotation axis. - @param x The x-component of the rotation axis. - @param y The y-component of the rotation axis. - @param z The z-component of the rotation axis. */ - inline void SetAxis(float x, float y, float z) { axis = FMVector3(x, y, z); } - - /** Retrieves the rotation angle. - This angle may be animated. - @return The rotation angle, in degrees. */ - inline float& GetAngle() { return angle; } - inline const float& GetAngle() const { return angle; } /**< See above. */ - - /** Sets the rotation angle. - @param a The rotation angle, in degrees. */ - inline void SetAngle(float a) { angle = a; } - - /** Sets the rotation components - @param _axis The rotation axis. - @param a The rotation angle, in degrees. */ - inline void SetRotation(const FMVector3& _axis, float a) { axis = _axis; angle = a; } - - /** Converts the rotation into a matrix. - @return A matrix equivalent of the rotation. */ - virtual FMMatrix44 ToMatrix() const; - - /** Retrieves whether the axis or the angle of the rotation are animated. - @return Whether the rotation is animated. */ - virtual bool IsAnimated() const; - - /** Retrieves the animated element for the angle-axis rotation. - @see FCDAnimatedAngleAxis - @return The animated element. This pointer will be NULL if the - rotation is not animated. */ - virtual FCDAnimated* GetAnimated(); - - /** Retrieves whether a given transform is the exact opposite of - this rotation. The opposite of an angle-axis rotation has the - same axis as this rotation but the angle is multiplied by -1. - @param transform A second transformation. - @return Whether the two rotation are opposites. */ - virtual bool IsInverse(const FCDTransform* transform) const; - - /** Creates a copy of the angle-axis rotation. - @param newParent The visual scene node that will contain the clone. - @return The cloned angle-axis rotation. */ - virtual FCDTransform* Clone(FCDSceneNode* newParent); - + virtual xmlNode* WriteToXML(xmlNode* parentNode) const; +}; + +/** + A COLLADA angle-axis rotation. + This rotation defines an axis around which the 3D points + are rotated by a given angle. + @todo (clock-wise/counter-clock-wise?) + @ingroup FCDocument +*/ +class FCOLLADA_EXPORT FCDTRotation : public FCDTransform +{ +private: + float angle; + FMVector3 axis; + +public: + /** Constructor: do not use directly. + Instead, use the FCDSceneNode::AddTransform function with + the transformation type: ROTATION. + @param document The COLLADA document that owns the rotation. + @param parent The visual scene node that contains the rotation. + Set this pointer to NULL if the rotation is not owned + by a visual scene node. */ + FCDTRotation(FCDocument* document, FCDSceneNode* parent); + + /** Destructor: do not use directly. + Instead, use the FCDSceneNode::ReleaseTransform function. */ + virtual ~FCDTRotation(); + + /** Retrieves the transformation class type for the rotation. + @return The class type: ROTATION. */ + virtual Type GetType() const { return ROTATION; } + + /** Retrieves the rotation axis. + This 3D vector may be animated. + @return The rotation axis. */ + inline FMVector3& GetAxis() { return axis; } + inline const FMVector3& GetAxis() const { return axis; } /**< See above. */ + + /** Sets the rotation axis. + @param _axis The rotation axis. */ + inline void SetAxis(const FMVector3& _axis) { axis = _axis; } + + /** Sets the rotation axis. + @param x The x-component of the rotation axis. + @param y The y-component of the rotation axis. + @param z The z-component of the rotation axis. */ + inline void SetAxis(float x, float y, float z) { axis = FMVector3(x, y, z); } + + /** Retrieves the rotation angle. + This angle may be animated. + @return The rotation angle, in degrees. */ + inline float& GetAngle() { return angle; } + inline const float& GetAngle() const { return angle; } /**< See above. */ + + /** Sets the rotation angle. + @param a The rotation angle, in degrees. */ + inline void SetAngle(float a) { angle = a; } + + /** Sets the rotation components + @param _axis The rotation axis. + @param a The rotation angle, in degrees. */ + inline void SetRotation(const FMVector3& _axis, float a) { axis = _axis; angle = a; } + + /** Converts the rotation into a matrix. + @return A matrix equivalent of the rotation. */ + virtual FMMatrix44 ToMatrix() const; + + /** Retrieves whether the axis or the angle of the rotation are animated. + @return Whether the rotation is animated. */ + virtual bool IsAnimated() const; + + /** Retrieves the animated element for the angle-axis rotation. + @see FCDAnimatedAngleAxis + @return The animated element. This pointer will be NULL if the + rotation is not animated. */ + virtual FCDAnimated* GetAnimated(); + + /** Retrieves whether a given transform is the exact opposite of + this rotation. The opposite of an angle-axis rotation has the + same axis as this rotation but the angle is multiplied by -1. + @param transform A second transformation. + @return Whether the two rotation are opposites. */ + virtual bool IsInverse(const FCDTransform* transform) const; + + /** Creates a copy of the angle-axis rotation. + @param newParent The visual scene node that will contain the clone. + @return The cloned angle-axis rotation. */ + virtual FCDTransform* Clone(FCDSceneNode* newParent); + /** [INTERNAL] Reads in the rotation from a given COLLADA XML tree node. @param rotationNode The COLLADA XML tree node. @return The status of the import. If the status is not successful, it may be dangerous to extract information from the rotation.*/ - virtual FUStatus LoadFromXML(xmlNode* rotationNode); - + virtual FUStatus LoadFromXML(xmlNode* rotationNode); + /** [INTERNAL] Writes out the rotation to the given COLLADA XML tree node. @param parentNode The COLLADA XML parent node in which to insert the rotation. @return The created XML tree node. */ - virtual xmlNode* WriteToXML(xmlNode* parentNode) const; -}; - -/** - A COLLADA matrix transformation. - This transformation contains a matrix that should be - multiplied to the local transformation matrix. - @ingroup FCDocument -*/ -class FCOLLADA_EXPORT FCDTMatrix : public FCDTransform -{ -private: - FMMatrix44 transform; - -public: - /** Constructor: do not use directly. - Instead, use the FCDSceneNode::AddTransform function with - the transformation type: MATRIX. - @param document The COLLADA document that owns the transformation. - @param parent The visual scene node that contains the transformation. */ - FCDTMatrix(FCDocument* document, FCDSceneNode* parent); - - /** Destructor: do not use directly. - Instead, use the FCDSceneNode::ReleaseTransform function. */ - virtual ~FCDTMatrix(); - - /** Retrieves the transformation class type for the transformation. - @return The class type: MATRIX. */ - virtual Type GetType() const { return MATRIX; } - - /** Retrieves the matrix for the transformation. - All 16 values of the matrix may be animated. - @return The transformation matrix. */ - FMMatrix44& GetTransform() { return transform; } - const FMMatrix44& GetTransform() const { return transform; } /**< See above. */ - - /** Sets the matrix for the transformation. - @param mx The transformation matrix. */ - inline void SetTransform(const FMMatrix44& mx) { transform = mx; } - - /** Converts the transformation into a matrix. - For matrix transformations, that's simply the transformation matrix. - @return The transformation matrix. */ - virtual FMMatrix44 ToMatrix() const { return transform; } - - /** Retrieves whether the transformation matrix is animated. - @return Whether the transformation matrix is animated. */ - virtual bool IsAnimated() const; - - /** Retrieves the animated element for the transformation matrix. - @see FCDAnimatedMatrix - @return The animated element. This pointer will be NULL if the - transformation matrix is not animated. */ - virtual FCDAnimated* GetAnimated(); - - /** Creates a copy of the matrix transformation. - @param newParent The visual scene node that will contain the clone. - @return The cloned matrix transformation. */ - virtual FCDTransform* Clone(FCDSceneNode* newParent); - + virtual xmlNode* WriteToXML(xmlNode* parentNode) const; +}; + +/** + A COLLADA matrix transformation. + This transformation contains a matrix that should be + multiplied to the local transformation matrix. + @ingroup FCDocument +*/ +class FCOLLADA_EXPORT FCDTMatrix : public FCDTransform +{ +private: + FMMatrix44 transform; + +public: + /** Constructor: do not use directly. + Instead, use the FCDSceneNode::AddTransform function with + the transformation type: MATRIX. + @param document The COLLADA document that owns the transformation. + @param parent The visual scene node that contains the transformation. */ + FCDTMatrix(FCDocument* document, FCDSceneNode* parent); + + /** Destructor: do not use directly. + Instead, use the FCDSceneNode::ReleaseTransform function. */ + virtual ~FCDTMatrix(); + + /** Retrieves the transformation class type for the transformation. + @return The class type: MATRIX. */ + virtual Type GetType() const { return MATRIX; } + + /** Retrieves the matrix for the transformation. + All 16 values of the matrix may be animated. + @return The transformation matrix. */ + FMMatrix44& GetTransform() { return transform; } + const FMMatrix44& GetTransform() const { return transform; } /**< See above. */ + + /** Sets the matrix for the transformation. + @param mx The transformation matrix. */ + inline void SetTransform(const FMMatrix44& mx) { transform = mx; } + + /** Converts the transformation into a matrix. + For matrix transformations, that's simply the transformation matrix. + @return The transformation matrix. */ + virtual FMMatrix44 ToMatrix() const { return transform; } + + /** Retrieves whether the transformation matrix is animated. + @return Whether the transformation matrix is animated. */ + virtual bool IsAnimated() const; + + /** Retrieves the animated element for the transformation matrix. + @see FCDAnimatedMatrix + @return The animated element. This pointer will be NULL if the + transformation matrix is not animated. */ + virtual FCDAnimated* GetAnimated(); + + /** Creates a copy of the matrix transformation. + @param newParent The visual scene node that will contain the clone. + @return The cloned matrix transformation. */ + virtual FCDTransform* Clone(FCDSceneNode* newParent); + /** [INTERNAL] Reads in the matrix transformation from a given COLLADA XML tree node. @param matrixNode The COLLADA XML tree node. @return The status of the import. If the status is not successful, it may be dangerous to extract information from the transformation.*/ - virtual FUStatus LoadFromXML(xmlNode* matrixNode); - + virtual FUStatus LoadFromXML(xmlNode* matrixNode); + /** [INTERNAL] Writes out the matrix transformation to the given COLLADA XML tree node. @param parentNode The COLLADA XML parent node in which to insert the transformation. @return The created XML tree node. */ - virtual xmlNode* WriteToXML(xmlNode* parentNode) const; -}; - -/** - A COLLADA 'look-at' transformation. - This transformation type fully defines a position - and an orientation with a 3D world by using three - 3D vectors: the viewer's position, the position - that the viewer is looking at, and the up-vector - for camera rolls. */ -class FCOLLADA_EXPORT FCDTLookAt : public FCDTransform -{ -private: - FMVector3 position; - FMVector3 target; - FMVector3 up; - -public: - /** Constructor: do not use directly. - Instead, use the FCDSceneNode::AddTransform function with - the transformation type: LOOKAT. - @param document The COLLADA document that owns the transformation. - @param parent The visual scene node that contains the transformation. */ - FCDTLookAt(FCDocument* document, FCDSceneNode* parent); - - /** Destructor: do not use directly. - Instead, use the FCDSceneNode::ReleaseTransform function. */ - virtual ~FCDTLookAt(); - - /** Retrieves the transformation class type for the transformation. - @return The class type: LOOKAT. */ - virtual Type GetType() const { return LOOKAT; } - - /** Retrieves the viewer's position. - @see FCDAnimatedPoint3 - @return The viewer's position. */ - FMVector3& GetPosition() { return position; } - const FMVector3& GetPosition() const { return position; } /**< See above. */ - - /** Sets the viewer's position. - @param pos The viewer's position. */ - inline void SetPosition(const FMVector3& pos) { position = pos; } - - /** Sets the viewer's position. - @param x The x-component of the position. - @param y The y-component of the position. - @param z The z-component of the position. */ - inline void SetPosition(float x, float y, float z) { position = FMVector3(x, y, z); } - - /** Retrieves the position that the viewer is looking at. - @see FCDAnimatedPoint3 - @return The viewer's target. */ - FMVector3& GetTarget() { return target; } - const FMVector3& GetTarget() const { return target; } /**< See above. */ - - /** Sets the position that the viewer is looking at. - @param _target The target position. */ - inline void SetTarget(const FMVector3& _target) { target = _target; } - - /** Sets the position that the viewer is looking at. - @param x The x-component of the target position. - @param y The y-component of the target position. - @param z The z-component of the target position. */ - inline void SetTarget(float x, float y, float z) { target = FMVector3(x, y, z); } - - /** Retrieves the viewer's up-vector. - @see FCDAnimatedPoint3 - @return The up-vector. */ - FMVector3& GetUp() { return up; } - const FMVector3& GetUp() const { return up; } /**< See above. */ - - /** Sets the viewer's up-vector. - @param _up The up-vector. */ - inline void SetUp(const FMVector3& _up) { up = _up; } - - /** Sets the viewer's up-vector. - @param x The x-component of the up-vector. - @param y The y-component of the up-vector. - @param z The z-component of the up-vector. */ - inline void SetUp(float x, float y, float z) { up = FMVector3(x, y, z); } - - /** Converts the transformation into a matrix. - @return The transformation matrix. */ - virtual FMMatrix44 ToMatrix() const; - - /** Retrieves whether the transformation is animated. - @return FCollada doesn't support animated 'look-at' transforms: false. */ - virtual bool IsAnimated() const; - - /** Retrieves the animated element for the transformation matrix. - @return FCollada doesn't support animated 'look-at' transforms: NULL. */ - virtual FCDAnimated* GetAnimated(); - - /** Creates a copy of the transformation. - @param newParent The visual scene node that will contain the clone. - @return The cloned 'look-at' transformation. */ - virtual FCDTransform* Clone(FCDSceneNode* newParent); - + virtual xmlNode* WriteToXML(xmlNode* parentNode) const; +}; + +/** + A COLLADA 'look-at' transformation. + This transformation type fully defines a position + and an orientation with a 3D world by using three + 3D vectors: the viewer's position, the position + that the viewer is looking at, and the up-vector + for camera rolls. */ +class FCOLLADA_EXPORT FCDTLookAt : public FCDTransform +{ +private: + FMVector3 position; + FMVector3 target; + FMVector3 up; + +public: + /** Constructor: do not use directly. + Instead, use the FCDSceneNode::AddTransform function with + the transformation type: LOOKAT. + @param document The COLLADA document that owns the transformation. + @param parent The visual scene node that contains the transformation. */ + FCDTLookAt(FCDocument* document, FCDSceneNode* parent); + + /** Destructor: do not use directly. + Instead, use the FCDSceneNode::ReleaseTransform function. */ + virtual ~FCDTLookAt(); + + /** Retrieves the transformation class type for the transformation. + @return The class type: LOOKAT. */ + virtual Type GetType() const { return LOOKAT; } + + /** Retrieves the viewer's position. + @see FCDAnimatedPoint3 + @return The viewer's position. */ + FMVector3& GetPosition() { return position; } + const FMVector3& GetPosition() const { return position; } /**< See above. */ + + /** Sets the viewer's position. + @param pos The viewer's position. */ + inline void SetPosition(const FMVector3& pos) { position = pos; } + + /** Sets the viewer's position. + @param x The x-component of the position. + @param y The y-component of the position. + @param z The z-component of the position. */ + inline void SetPosition(float x, float y, float z) { position = FMVector3(x, y, z); } + + /** Retrieves the position that the viewer is looking at. + @see FCDAnimatedPoint3 + @return The viewer's target. */ + FMVector3& GetTarget() { return target; } + const FMVector3& GetTarget() const { return target; } /**< See above. */ + + /** Sets the position that the viewer is looking at. + @param _target The target position. */ + inline void SetTarget(const FMVector3& _target) { target = _target; } + + /** Sets the position that the viewer is looking at. + @param x The x-component of the target position. + @param y The y-component of the target position. + @param z The z-component of the target position. */ + inline void SetTarget(float x, float y, float z) { target = FMVector3(x, y, z); } + + /** Retrieves the viewer's up-vector. + @see FCDAnimatedPoint3 + @return The up-vector. */ + FMVector3& GetUp() { return up; } + const FMVector3& GetUp() const { return up; } /**< See above. */ + + /** Sets the viewer's up-vector. + @param _up The up-vector. */ + inline void SetUp(const FMVector3& _up) { up = _up; } + + /** Sets the viewer's up-vector. + @param x The x-component of the up-vector. + @param y The y-component of the up-vector. + @param z The z-component of the up-vector. */ + inline void SetUp(float x, float y, float z) { up = FMVector3(x, y, z); } + + /** Converts the transformation into a matrix. + @return The transformation matrix. */ + virtual FMMatrix44 ToMatrix() const; + + /** Retrieves whether the transformation is animated. + @return FCollada doesn't support animated 'look-at' transforms: false. */ + virtual bool IsAnimated() const; + + /** Retrieves the animated element for the transformation matrix. + @return FCollada doesn't support animated 'look-at' transforms: NULL. */ + virtual FCDAnimated* GetAnimated(); + + /** Creates a copy of the transformation. + @param newParent The visual scene node that will contain the clone. + @return The cloned 'look-at' transformation. */ + virtual FCDTransform* Clone(FCDSceneNode* newParent); + /** [INTERNAL] Reads in the transformation from a given COLLADA XML tree node. @param lookAtNode The COLLADA XML tree node. @return The status of the import. If the status is not successful, it may be dangerous to extract information from the transformation.*/ - virtual FUStatus LoadFromXML(xmlNode* lookAtNode); - + virtual FUStatus LoadFromXML(xmlNode* lookAtNode); + /** [INTERNAL] Writes out the transformation to the given COLLADA XML tree node. @param parentNode The COLLADA XML parent node in which to insert the transformation. @return The created XML tree node. */ - virtual xmlNode* WriteToXML(xmlNode* parentNode) const; -}; - -/** - A COLLADA skew. - In COLLADA, the skew transformation follows the Renderman convention. - A skew is defined by two axis and one angle: the axis which is rotated, the axis around - which the rotation is done and the angle of the rotation. - @ingroup FCDocument -*/ -class FCOLLADA_EXPORT FCDTSkew : public FCDTransform -{ -private: - FMVector3 rotateAxis; - FMVector3 aroundAxis; - float angle; - -public: - /** Constructor: do not use directly. - Instead, use the FCDSceneNode::AddTransform function with - the transformation type: SKEW. - @param document The COLLADA document that owns the skew. - @param parent The visual scene node that contains the skew. */ - FCDTSkew(FCDocument* document, FCDSceneNode* parent); - - /** Destructor: do not use directly. - Instead, use the FCDSceneNode::ReleaseTransform function. */ - virtual ~FCDTSkew(); - - /** Retrieves the transformation class type for the transformation. - @return The class type: SKEW. */ - virtual Type GetType() const { return SKEW; } - - /** Retrieves the axis which is rotated. - @return The rotated axis. */ - const FMVector3& GetRotateAxis() const { return rotateAxis; } - - /** Sets the axis which is rotated. - @param axis The rotated axis. */ - inline void SetRotateAxis(const FMVector3& axis) { rotateAxis = axis; } - - /** Retrieves the axis around which the rotation is done. - @return The rotation axis. */ - const FMVector3& GetAroundAxis() const { return aroundAxis; } - - /** Sets the axis around which the rotation is done. - @param axis The rotation axis. */ - inline void SetAroundAxis(const FMVector3& axis) { aroundAxis = axis; } - - /** Retrieves the rotation angle. - @return The rotation angle. */ - const float& GetAngle() { return angle; } - - /** Sets the rotation angle. - @param _angle The rotation angle. */ - inline void SetAngle(float _angle) { angle = _angle; } - - /** Converts the skew into a matrix. - @return The transformation matrix. */ - virtual FMMatrix44 ToMatrix() const; - - /** Retrieves whether the transformation is animated. - @return FCollada doesn't support animated skews: false. */ - virtual bool IsAnimated() const; - - /** Retrieves the animated element for the skew. - @return FCollada doesn't support animated skews: NULL. */ - virtual FCDAnimated* GetAnimated(); - - /** Creates a copy of the skew. - @param newParent The visual scene node that will contain the clone. - @return The cloned skew. */ - virtual FCDTransform* Clone(FCDSceneNode* newParent); - + virtual xmlNode* WriteToXML(xmlNode* parentNode) const; +}; + +/** + A COLLADA skew. + In COLLADA, the skew transformation follows the Renderman convention. + A skew is defined by two axis and one angle: the axis which is rotated, the axis around + which the rotation is done and the angle of the rotation. + @ingroup FCDocument +*/ +class FCOLLADA_EXPORT FCDTSkew : public FCDTransform +{ +private: + FMVector3 rotateAxis; + FMVector3 aroundAxis; + float angle; + +public: + /** Constructor: do not use directly. + Instead, use the FCDSceneNode::AddTransform function with + the transformation type: SKEW. + @param document The COLLADA document that owns the skew. + @param parent The visual scene node that contains the skew. */ + FCDTSkew(FCDocument* document, FCDSceneNode* parent); + + /** Destructor: do not use directly. + Instead, use the FCDSceneNode::ReleaseTransform function. */ + virtual ~FCDTSkew(); + + /** Retrieves the transformation class type for the transformation. + @return The class type: SKEW. */ + virtual Type GetType() const { return SKEW; } + + /** Retrieves the axis which is rotated. + @return The rotated axis. */ + const FMVector3& GetRotateAxis() const { return rotateAxis; } + + /** Sets the axis which is rotated. + @param axis The rotated axis. */ + inline void SetRotateAxis(const FMVector3& axis) { rotateAxis = axis; } + + /** Retrieves the axis around which the rotation is done. + @return The rotation axis. */ + const FMVector3& GetAroundAxis() const { return aroundAxis; } + + /** Sets the axis around which the rotation is done. + @param axis The rotation axis. */ + inline void SetAroundAxis(const FMVector3& axis) { aroundAxis = axis; } + + /** Retrieves the rotation angle. + @return The rotation angle. */ + const float& GetAngle() { return angle; } + + /** Sets the rotation angle. + @param _angle The rotation angle. */ + inline void SetAngle(float _angle) { angle = _angle; } + + /** Converts the skew into a matrix. + @return The transformation matrix. */ + virtual FMMatrix44 ToMatrix() const; + + /** Retrieves whether the transformation is animated. + @return FCollada doesn't support animated skews: false. */ + virtual bool IsAnimated() const; + + /** Retrieves the animated element for the skew. + @return FCollada doesn't support animated skews: NULL. */ + virtual FCDAnimated* GetAnimated(); + + /** Creates a copy of the skew. + @param newParent The visual scene node that will contain the clone. + @return The cloned skew. */ + virtual FCDTransform* Clone(FCDSceneNode* newParent); + /** [INTERNAL] Reads in the skew from a given COLLADA XML tree node. @param skewNode The COLLADA XML tree node. @return The status of the import. If the status is not successful, it may be dangerous to extract information from the skew.*/ - virtual FUStatus LoadFromXML(xmlNode* skewNode); - + virtual FUStatus LoadFromXML(xmlNode* skewNode); + /** [INTERNAL] Writes out the skew to the given COLLADA XML tree node. @param parentNode The COLLADA XML parent node in which to insert the skew. @return The created XML tree node. */ - virtual xmlNode* WriteToXML(xmlNode* parentNode) const; -}; - -/** - [INTERNAL] A factory for COLLADA transforms. - Creates the correct transform object for a given transform type/XML tree node. - To create new transforms, use the FCDSceneNode::AddTransform function. -*/ -class FCOLLADA_EXPORT FCDTFactory -{ -private: - FCDTFactory() {} // Static class: do not instantiate. - -public: - /** Creates a new COLLADA transform, given a transform type. - @param document The COLLADA document that will own the new transform. - @param parent The visual scene node that will contain the transform. - @param type The type of transform object to create. - @return The new COLLADA transform. This pointer will be NULL - if the given type is invalid. */ - static FCDTransform* CreateTransform(FCDocument* document, FCDSceneNode* parent, FCDTransform::Type type); - - /** [INTERNAL] Imports a COLLADA transform, given an XML tree node. - @param document The COLLADA document that will own the new transform. - @param parent The visual scene node that will contain the transform. - @param node The XML tree node. - @return The imported COLLADA transform. This pointer will be NULL - if the XML tree node does not describe a COLLADA transform. */ - static FCDTransform* CreateTransform(FCDocument* document, FCDSceneNode* parent, xmlNode* node); -}; - -#endif // _FR_TRANSFORM_H_ + virtual xmlNode* WriteToXML(xmlNode* parentNode) const; +}; + +/** + [INTERNAL] A factory for COLLADA transforms. + Creates the correct transform object for a given transform type/XML tree node. + To create new transforms, use the FCDSceneNode::AddTransform function. +*/ +class FCOLLADA_EXPORT FCDTFactory +{ +private: + FCDTFactory() {} // Static class: do not instantiate. + +public: + /** Creates a new COLLADA transform, given a transform type. + @param document The COLLADA document that will own the new transform. + @param parent The visual scene node that will contain the transform. + @param type The type of transform object to create. + @return The new COLLADA transform. This pointer will be NULL + if the given type is invalid. */ + static FCDTransform* CreateTransform(FCDocument* document, FCDSceneNode* parent, FCDTransform::Type type); + + /** [INTERNAL] Imports a COLLADA transform, given an XML tree node. + @param document The COLLADA document that will own the new transform. + @param parent The visual scene node that will contain the transform. + @param node The XML tree node. + @return The imported COLLADA transform. This pointer will be NULL + if the XML tree node does not describe a COLLADA transform. */ + static FCDTransform* CreateTransform(FCDocument* document, FCDSceneNode* parent, xmlNode* node); +}; + +#endif // _FR_TRANSFORM_H_ diff --git a/Extras/FCollada/FUtils/FUXmlParser.cpp b/Extras/FCollada/FUtils/FUXmlParser.cpp index 45ecb74cf..ffd833ea6 100644 --- a/Extras/FCollada/FUtils/FUXmlParser.cpp +++ b/Extras/FCollada/FUtils/FUXmlParser.cpp @@ -8,171 +8,174 @@ Copyright (C) 2005-2006 Autodesk Media Entertainment MIT License: http://www.opensource.org/licenses/mit-license.php */ - -#include "StdAfx.h" -#include "FUtils/FUXmlParser.h" - -#define xmlT(a) (const xmlChar*) (a) - -namespace FUXmlParser -{ - // Returns the first child node of a given type - xmlNode* FindChildByType(xmlNode* parent, const char* type) - { - if (parent != NULL) - { - for (xmlNode* child = parent->children; child != NULL; child = child->next) - { - if (child->type == XML_ELEMENT_NODE) - { - if (IsEquivalent(child->name, type)) return child; - } - } - } - return NULL; - } - - // return the first child node of a given name - xmlNode* FindChildByName(xmlNode* parent, const char* name) - { - if (parent != NULL) - { - for (xmlNode* child = parent->children; child != NULL; child = child->next) - { - if (child->type == XML_ELEMENT_NODE) - { - string str_name = ReadNodeProperty(child, "name"); - if (str_name == name) return child; - } - } - } - return NULL; - } - - - // return the first child node of a given property value - xmlNode* FindChildByProperty(xmlNode* parent, const char* prop, const char* val ) - { - if (parent != NULL) - { - for (xmlNode* child = parent->children; child != NULL; child = child->next) - { - string str_pop = ReadNodeProperty(child, prop); - if (str_pop == val) return child; - - } - } - return NULL; - } - - // return the first node in list of a given property - xmlNode* FindNodeInListByProperty(xmlNodeList list, const char* property, const char* prop) - { - for (xmlNodeList::iterator it = list.begin(); it != list.end(); ++it) - { - xmlNode* element = *it; - string str_prop = ReadNodeProperty(element, property); - if (str_prop == prop) return element; - - } - return NULL; - } - - // Retrieves all the child nodes of a given type - void FindChildrenByType(xmlNode* parent, const char* type, xmlNodeList& nodes) - { - if (parent != NULL) - { - for (xmlNode* child = parent->children; child != NULL; child = child->next) - { - if (child->type == XML_ELEMENT_NODE) - { - if (IsEquivalent(child->name, type)) nodes.push_back(child); - } - } - } - } - - // Returns whether the given node has the given property - bool HasNodeProperty(xmlNode* node, const char* property) - { - xmlAttr* attribute = xmlHasProp(node, xmlT(property)); - return attribute != NULL; - } - - // Returns the string value of a node's property - string ReadNodeProperty(xmlNode* node, const char* property) - { - string ret; - if (node != NULL && property != NULL) - { - xmlChar* data = xmlGetProp(node, xmlT(property)); - if (data != NULL) ret = (const char*) data; - xmlFree(data); - } - - // Process the string for special characters - XmlToString(ret); - return ret; - } - - // Returns the CRC value of a node's property - FUCrc32::crc32 ReadNodePropertyCRC(xmlNode* node, const char* property) - { - FUCrc32::crc32 ret = 0; - if (node != NULL && property != NULL) - { - xmlChar* data = xmlGetProp(node, xmlT(property)); - if (data != NULL) ret = FUCrc32::CRC32((const char*) data); - xmlFree(data); - } - return ret; - } - - // Returns the text content directly attached to a node - const char* ReadNodeContentDirect(xmlNode* node) - { - if (node == NULL || node->children == NULL - || node->children->type != XML_TEXT_NODE || node->children->content == NULL) return ""; - return (const char*) node->children->content; - } - - // Returns the inner text content of a node - string ReadNodeContentFull(xmlNode* node) - { - string ret; - if (node != NULL) - { - xmlChar* content = xmlNodeGetContent(node); - ret = (const char*) content; - xmlFree(content); - } - return ret; - } - - // Convert a XML string to a text string: handles the '%' character - void XmlToString(string& s) - { - if (s.find('%') == string::npos) return; - - // Replace all the '%XX' characters by the equivalent hex value - const char* original = s.c_str(); - uint32 length = (uint32) s.length(); - char* copy = new char[length],* p = copy; - for (uint32 i = 0; i < length; ++i, ++p) - { - char c = original[i]; - if (c != '%' || i >= length - 2) *p = c; - else - { - char* dummy; - p[0] = original[i + 1]; p[1] = original[i + 2]; p[2] = 0; - uint32 v = strtoul(p, &dummy, 16); - *p = (char) v; - i += 2; - } - } - *p = 0; - s = copy; - } -}; + +#include "StdAfx.h" +#include "FUtils/FUXmlParser.h" + +#define xmlT(a) (const xmlChar*) (a) + +namespace FUXmlParser +{ + // Returns the first child node of a given type + xmlNode* FindChildByType(xmlNode* parent, const char* type) + { + if (parent != NULL) + { + for (xmlNode* child = parent->children; child != NULL; child = child->next) + { + if (child->type == XML_ELEMENT_NODE) + { + if (IsEquivalent(child->name, type)) return child; + } + } + } + return NULL; + } + + // return the first child node of a given name + xmlNode* FindChildByName(xmlNode* parent, const char* name) + { + if (parent != NULL) + { + for (xmlNode* child = parent->children; child != NULL; child = child->next) + { + if (child->type == XML_ELEMENT_NODE) + { + string str_name = ReadNodeProperty(child, "name"); + if (str_name == name) return child; + } + } + } + return NULL; + } + + + // return the first child node of a given property value + xmlNode* FindChildByProperty(xmlNode* parent, const char* prop, const char* val ) + { + if (parent != NULL) + { + for (xmlNode* child = parent->children; child != NULL; child = child->next) + { + string str_pop = ReadNodeProperty(child, prop); + if (str_pop == val) return child; + + } + } + return NULL; + } + + // return the first node in list of a given property + xmlNode* FindNodeInListByProperty(xmlNodeList list, const char* property, const char* prop) + { + for (xmlNodeList::iterator it = list.begin(); it != list.end(); ++it) + { + xmlNode* element = *it; + string str_prop = ReadNodeProperty(element, property); + if (str_prop == prop) return element; + + } + return NULL; + } + + // Retrieves all the child nodes of a given type + void FindChildrenByType(xmlNode* parent, const char* type, xmlNodeList& nodes) + { + if (parent != NULL) + { + for (xmlNode* child = parent->children; child != NULL; child = child->next) + { + if (child->type == XML_ELEMENT_NODE) + { + if (IsEquivalent(child->name, type)) nodes.push_back(child); + } + } + } + } + + // Returns whether the given node has the given property + bool HasNodeProperty(xmlNode* node, const char* property) + { + xmlAttr* attribute = xmlHasProp(node, xmlT(property)); + return attribute != NULL; + } + + // Returns the string value of a node's property + string ReadNodeProperty(xmlNode* node, const char* property) + { + string ret=""; + if (node != NULL && property != NULL) + { + xmlChar* data = xmlGetProp(node, xmlT(property)); + if (data != NULL) + { + ret = (const char*) data; + } + xmlFree(data); + } + + // Process the string for special characters + XmlToString(ret); + return ret; + } + + // Returns the CRC value of a node's property + FUCrc32::crc32 ReadNodePropertyCRC(xmlNode* node, const char* property) + { + FUCrc32::crc32 ret = 0; + if (node != NULL && property != NULL) + { + xmlChar* data = xmlGetProp(node, xmlT(property)); + if (data != NULL) ret = FUCrc32::CRC32((const char*) data); + xmlFree(data); + } + return ret; + } + + // Returns the text content directly attached to a node + const char* ReadNodeContentDirect(xmlNode* node) + { + if (node == NULL || node->children == NULL + || node->children->type != XML_TEXT_NODE || node->children->content == NULL) return ""; + return (const char*) node->children->content; + } + + // Returns the inner text content of a node + string ReadNodeContentFull(xmlNode* node) + { + string ret; + if (node != NULL) + { + xmlChar* content = xmlNodeGetContent(node); + ret = (const char*) content; + xmlFree(content); + } + return ret; + } + + // Convert a XML string to a text string: handles the '%' character + void XmlToString(string& s) + { + if (s.find('%') == string::npos) return; + + // Replace all the '%XX' characters by the equivalent hex value + const char* original = s.c_str(); + uint32 length = (uint32) s.length(); + char* copy = new char[length],* p = copy; + for (uint32 i = 0; i < length; ++i, ++p) + { + char c = original[i]; + if (c != '%' || i >= length - 2) *p = c; + else + { + char* dummy; + p[0] = original[i + 1]; p[1] = original[i + 2]; p[2] = 0; + uint32 v = strtoul(p, &dummy, 16); + *p = (char) v; + i += 2; + } + } + *p = 0; + s = copy; + } +}; diff --git a/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsController.cpp b/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsController.cpp index e9c156fb3..83bddc8ee 100644 --- a/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsController.cpp +++ b/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsController.cpp @@ -535,6 +535,7 @@ PHY_IPhysicsController* CcdPhysicsController::GetReplica() DefaultMotionState::DefaultMotionState() { m_worldTransform.setIdentity(); + m_localScaling.setValue(1.f,1.f,1.f); } @@ -552,9 +553,9 @@ void DefaultMotionState::getWorldPosition(float& posX,float& posY,float& posZ) void DefaultMotionState::getWorldScaling(float& scaleX,float& scaleY,float& scaleZ) { - scaleX = 1.; - scaleY = 1.; - scaleZ = 1.; + scaleX = m_localScaling.getX(); + scaleY = m_localScaling.getY(); + scaleZ = m_localScaling.getZ(); } void DefaultMotionState::getWorldOrientation(float& quatIma0,float& quatIma1,float& quatIma2,float& quatReal) diff --git a/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsController.h b/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsController.h index 056feba65..f82a4479f 100644 --- a/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsController.h +++ b/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsController.h @@ -208,6 +208,7 @@ class DefaultMotionState : public PHY_IMotionState virtual void calculateWorldTransformations(); SimdTransform m_worldTransform; + SimdVector3 m_localScaling; }; diff --git a/msvc/8/appColladaDemo.vcproj b/msvc/8/appColladaDemo.vcproj index 1240771c3..b116738ca 100644 --- a/msvc/8/appColladaDemo.vcproj +++ b/msvc/8/appColladaDemo.vcproj @@ -47,7 +47,7 @@ Name="VCCLCompilerTool" AdditionalOptions=" " Optimization="2" - AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics;..\..\Extras\FCollada;..\..\Extras\FCollada\LibXML\include" + AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics;..\..\Extras\FCollada;..\..\Extras\FCollada\LibXML\include;..\..\Extras\COLLADA_DOM\include;..\..\Extras\COLLADA_DOM\include\1.4" PreprocessorDefinitions="NDEBUG;_CONSOLE;WIN32" StringPooling="true" ExceptionHandling="0" @@ -152,7 +152,7 @@ Name="VCCLCompilerTool" AdditionalOptions=" " Optimization="0" - AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics;..\..\Extras\FCollada;..\..\Extras\FCollada\LibXML\include" + AdditionalIncludeDirectories=".;..\..;..\..\Bullet;..\..\BulletDynamics;..\..\LinearMath;..\..\Extras\PhysicsInterface\Common;..\..\Extras\ConvexDecomposition;..\..\Glut;..\..\Demos\OpenGL;..\..\Extras\PhysicsInterface\CcdPhysics;..\..\Extras\FCollada;..\..\Extras\FCollada\LibXML\include;..\..\Extras\COLLADA_DOM\include;..\..\Extras\COLLADA_DOM\include\1.4" PreprocessorDefinitions="_DEBUG;_CONSOLE;WIN32" MinimalRebuild="true" ExceptionHandling="0" diff --git a/msvc/8/wksbullet.sln b/msvc/8/wksbullet.sln index 4b6c38b5b..862c16b09 100644 --- a/msvc/8/wksbullet.sln +++ b/msvc/8/wksbullet.sln @@ -2,189 +2,194 @@ Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appBasicSample", "appBasicSample.vcproj", "{A584DCA6-74CD-02E3-E473-0D9990CD9A84}" ProjectSection(ProjectDependencies) = postProject - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appCcdPhysicsDemo", "appCcdPhysicsDemo.vcproj", "{7284F809-AF30-6315-88C6-86F1C0798760}" ProjectSection(ProjectDependencies) = postProject - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appColladaDemo", "appColladaDemo.vcproj", "{D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}" ProjectSection(ProjectDependencies) = postProject {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC} = {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC} - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {5160A878-73A5-41CA-B8D5-C3D560DD1D58} = {5160A878-73A5-41CA-B8D5-C3D560DD1D58} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} - {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} - {3D872CA6-782B-46C9-A336-1B18C0A4FBD5} = {3D872CA6-782B-46C9-A336-1B18C0A4FBD5} - {FF956BB3-F377-43A8-AB31-633299BDF6C6} = {FF956BB3-F377-43A8-AB31-633299BDF6C6} + {46DC0A36-30B8-4004-94AD-96C607F3983A} = {46DC0A36-30B8-4004-94AD-96C607F3983A} + {63985384-2FBF-4796-96F1-F0AE163BAFC9} = {63985384-2FBF-4796-96F1-F0AE163BAFC9} + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C} = {EEAD895E-87CF-4A0A-AAC6-951D96977E2C} {D7F466F4-2AEA-4648-BE09-024C887BC157} = {D7F466F4-2AEA-4648-BE09-024C887BC157} + {FF956BB3-F377-43A8-AB31-633299BDF6C6} = {FF956BB3-F377-43A8-AB31-633299BDF6C6} + {3D872CA6-782B-46C9-A336-1B18C0A4FBD5} = {3D872CA6-782B-46C9-A336-1B18C0A4FBD5} + {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {5160A878-73A5-41CA-B8D5-C3D560DD1D58} = {5160A878-73A5-41CA-B8D5-C3D560DD1D58} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} + {B70CBA1A-414C-4872-8DAF-31934BCAB568} = {B70CBA1A-414C-4872-8DAF-31934BCAB568} + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E} = {4A974C64-D51F-4D0F-85B8-0C876EF29F2E} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appCollisionDemo", "appCollisionDemo.vcproj", "{E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}" ProjectSection(ProjectDependencies) = postProject - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appCollisionInterfaceDemo", "appCollisionInterfaceDemo.vcproj", "{F38629D2-EEB2-1A09-FB82-52B8A8DE759B}" ProjectSection(ProjectDependencies) = postProject - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appConcaveDemo", "appConcaveDemo.vcproj", "{B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}" ProjectSection(ProjectDependencies) = postProject - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appConstraintDemo", "appConstraintDemo.vcproj", "{DAA547D0-0166-C085-0F93-B88CAB800F97}" ProjectSection(ProjectDependencies) = postProject - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appContinuousConvexCollision", "appContinuousConvexCollision.vcproj", "{801CB6D4-A45C-C9D2-B176-9711A74B9164}" ProjectSection(ProjectDependencies) = postProject - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appConvexDecompositionDemo", "appConvexDecompositionDemo.vcproj", "{69C821C7-1E18-D894-068D-C55E063F4859}" ProjectSection(ProjectDependencies) = postProject - {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} + {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appEPAPenDepthDemo", "appEPAPenDepthDemo.vcproj", "{1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}" ProjectSection(ProjectDependencies) = postProject - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appGjkConvexCastDemo", "appGjkConvexCastDemo.vcproj", "{780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}" ProjectSection(ProjectDependencies) = postProject - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appRaytracer", "appRaytracer.vcproj", "{60F71B6A-F888-C449-EF49-268BB9F7C963}" ProjectSection(ProjectDependencies) = postProject - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appSimplexDemo", "appSimplexDemo.vcproj", "{60A1DC9D-F837-3923-E9DE-A7925394A578}" ProjectSection(ProjectDependencies) = postProject - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpall_bullet", "grpall_bullet.vcproj", "{6210A080-01C0-6D67-F1DB-669393175402}" ProjectSection(ProjectDependencies) = postProject - {7284F809-AF30-6315-88C6-86F1C0798760} = {7284F809-AF30-6315-88C6-86F1C0798760} - {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} - {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9} = {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9} - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {60F71B6A-F888-C449-EF49-268BB9F7C963} = {60F71B6A-F888-C449-EF49-268BB9F7C963} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} - {60A1DC9D-F837-3923-E9DE-A7925394A578} = {60A1DC9D-F837-3923-E9DE-A7925394A578} - {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} - {A584DCA6-74CD-02E3-E473-0D9990CD9A84} = {A584DCA6-74CD-02E3-E473-0D9990CD9A84} - {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1} = {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1} - {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3} = {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3} - {69C821C7-1E18-D894-068D-C55E063F4859} = {69C821C7-1E18-D894-068D-C55E063F4859} - {DAA547D0-0166-C085-0F93-B88CAB800F97} = {DAA547D0-0166-C085-0F93-B88CAB800F97} - {F38629D2-EEB2-1A09-FB82-52B8A8DE759B} = {F38629D2-EEB2-1A09-FB82-52B8A8DE759B} - {801CB6D4-A45C-C9D2-B176-9711A74B9164} = {801CB6D4-A45C-C9D2-B176-9711A74B9164} - {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF} = {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF} {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3} = {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3} + {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF} = {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF} + {801CB6D4-A45C-C9D2-B176-9711A74B9164} = {801CB6D4-A45C-C9D2-B176-9711A74B9164} + {F38629D2-EEB2-1A09-FB82-52B8A8DE759B} = {F38629D2-EEB2-1A09-FB82-52B8A8DE759B} + {DAA547D0-0166-C085-0F93-B88CAB800F97} = {DAA547D0-0166-C085-0F93-B88CAB800F97} + {69C821C7-1E18-D894-068D-C55E063F4859} = {69C821C7-1E18-D894-068D-C55E063F4859} + {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3} = {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3} + {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1} = {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1} + {A584DCA6-74CD-02E3-E473-0D9990CD9A84} = {A584DCA6-74CD-02E3-E473-0D9990CD9A84} + {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {60A1DC9D-F837-3923-E9DE-A7925394A578} = {60A1DC9D-F837-3923-E9DE-A7925394A578} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {60F71B6A-F888-C449-EF49-268BB9F7C963} = {60F71B6A-F888-C449-EF49-268BB9F7C963} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} + {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9} = {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9} + {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} + {7284F809-AF30-6315-88C6-86F1C0798760} = {7284F809-AF30-6315-88C6-86F1C0798760} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpapps_bullet", "grpapps_bullet.vcproj", "{9E59B16D-0924-409C-1611-DF2207A0053F}" ProjectSection(ProjectDependencies) = postProject - {7284F809-AF30-6315-88C6-86F1C0798760} = {7284F809-AF30-6315-88C6-86F1C0798760} - {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9} = {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9} - {60F71B6A-F888-C449-EF49-268BB9F7C963} = {60F71B6A-F888-C449-EF49-268BB9F7C963} - {60A1DC9D-F837-3923-E9DE-A7925394A578} = {60A1DC9D-F837-3923-E9DE-A7925394A578} - {A584DCA6-74CD-02E3-E473-0D9990CD9A84} = {A584DCA6-74CD-02E3-E473-0D9990CD9A84} - {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1} = {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1} - {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3} = {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3} - {69C821C7-1E18-D894-068D-C55E063F4859} = {69C821C7-1E18-D894-068D-C55E063F4859} - {DAA547D0-0166-C085-0F93-B88CAB800F97} = {DAA547D0-0166-C085-0F93-B88CAB800F97} - {F38629D2-EEB2-1A09-FB82-52B8A8DE759B} = {F38629D2-EEB2-1A09-FB82-52B8A8DE759B} - {801CB6D4-A45C-C9D2-B176-9711A74B9164} = {801CB6D4-A45C-C9D2-B176-9711A74B9164} - {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF} = {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF} {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3} = {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3} + {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF} = {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF} + {801CB6D4-A45C-C9D2-B176-9711A74B9164} = {801CB6D4-A45C-C9D2-B176-9711A74B9164} + {F38629D2-EEB2-1A09-FB82-52B8A8DE759B} = {F38629D2-EEB2-1A09-FB82-52B8A8DE759B} + {DAA547D0-0166-C085-0F93-B88CAB800F97} = {DAA547D0-0166-C085-0F93-B88CAB800F97} + {69C821C7-1E18-D894-068D-C55E063F4859} = {69C821C7-1E18-D894-068D-C55E063F4859} + {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3} = {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3} + {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1} = {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1} + {A584DCA6-74CD-02E3-E473-0D9990CD9A84} = {A584DCA6-74CD-02E3-E473-0D9990CD9A84} + {60A1DC9D-F837-3923-E9DE-A7925394A578} = {60A1DC9D-F837-3923-E9DE-A7925394A578} + {60F71B6A-F888-C449-EF49-268BB9F7C963} = {60F71B6A-F888-C449-EF49-268BB9F7C963} + {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9} = {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9} + {7284F809-AF30-6315-88C6-86F1C0798760} = {7284F809-AF30-6315-88C6-86F1C0798760} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grplibs_bullet", "grplibs_bullet.vcproj", "{DFAF0062-4CD7-9AB8-0683-A6026B326F56}" ProjectSection(ProjectDependencies) = postProject - {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} - {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} - {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} - {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} - {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} - {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} = {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A} + {61BD1097-CF2E-B296-DAA9-73A6FE135319} = {61BD1097-CF2E-B296-DAA9-73A6FE135319} + {7C428E76-9271-6284-20F0-9B38ED6931E3} = {7C428E76-9271-6284-20F0-9B38ED6931E3} + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} = {90F5975E-550B-EEC8-9A8A-B8581D3FCF97} + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} = {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E} + {85BCCE3E-992B-B6D7-28F6-CF0A12680822} = {85BCCE3E-992B-B6D7-28F6-CF0A12680822} + {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} = {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet", "libbullet.vcproj", "{90F5975E-550B-EEC8-9A8A-B8581D3FCF97}" @@ -211,6 +216,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FUtils_vc8", "..\..\Extras\ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibXML_vc8", "..\..\Extras\FCollada\LibXML\LibXML_vc8.vcproj", "{D7F466F4-2AEA-4648-BE09-024C887BC157}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dom1", "..\..\Extras\COLLADA_DOM\src\1.4\dom\dom1.4_vc8.vcproj", "{EEAD895E-87CF-4A0A-AAC6-951D96977E2C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dae_vc8", "..\..\Extras\COLLADA_DOM\src\dae\dae_vc8.vcproj", "{B70CBA1A-414C-4872-8DAF-31934BCAB568}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "STLDatabase_vc8", "..\..\Extras\COLLADA_DOM\src\modules\STLDatabase\STLDatabase_vc8.vcproj", "{63985384-2FBF-4796-96F1-F0AE163BAFC9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LIBXMLPlugin_vc8", "..\..\Extras\COLLADA_DOM\src\modules\LIBXMLPlugin\LIBXMLPlugin_vc8.vcproj", "{4A974C64-D51F-4D0F-85B8-0C876EF29F2E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stdErrPlugin_vc8", "..\..\Extras\COLLADA_DOM\src\modules\stdErrPlugin\stdErrPlugin_vc8.vcproj", "{46DC0A36-30B8-4004-94AD-96C607F3983A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug DLL|Win32 = Debug DLL|Win32 @@ -218,12 +233,16 @@ Global Debug Unicode DLL|Win32 = Debug Unicode DLL|Win32 Debug Unicode MTD|Win32 = Debug Unicode MTD|Win32 Debug Unicode|Win32 = Debug Unicode|Win32 + Debug(1.3)|Win32 = Debug(1.3)|Win32 + Debug(1.4)|Win32 = Debug(1.4)|Win32 Debug|Win32 = Debug|Win32 Release DLL|Win32 = Release DLL|Win32 Release MTD|Win32 = Release MTD|Win32 Release Unicode DLL|Win32 = Release Unicode DLL|Win32 Release Unicode MTD|Win32 = Release Unicode MTD|Win32 Release Unicode|Win32 = Release Unicode|Win32 + Release(1.3)|Win32 = Release(1.3)|Win32 + Release(1.4)|Win32 = Release(1.4)|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution @@ -237,6 +256,10 @@ Global {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Debug|Win32.ActiveCfg = Debug|Win32 {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Debug|Win32.Build.0 = Debug|Win32 {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -249,6 +272,10 @@ Global {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Release Unicode|Win32.ActiveCfg = Release|Win32 {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Release Unicode|Win32.Build.0 = Release|Win32 + {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Release(1.3)|Win32.Build.0 = Release|Win32 + {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Release(1.4)|Win32.Build.0 = Release|Win32 {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Release|Win32.ActiveCfg = Release|Win32 {A584DCA6-74CD-02E3-E473-0D9990CD9A84}.Release|Win32.Build.0 = Release|Win32 {7284F809-AF30-6315-88C6-86F1C0798760}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -261,6 +288,10 @@ Global {7284F809-AF30-6315-88C6-86F1C0798760}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {7284F809-AF30-6315-88C6-86F1C0798760}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {7284F809-AF30-6315-88C6-86F1C0798760}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {7284F809-AF30-6315-88C6-86F1C0798760}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {7284F809-AF30-6315-88C6-86F1C0798760}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {7284F809-AF30-6315-88C6-86F1C0798760}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {7284F809-AF30-6315-88C6-86F1C0798760}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {7284F809-AF30-6315-88C6-86F1C0798760}.Debug|Win32.ActiveCfg = Debug|Win32 {7284F809-AF30-6315-88C6-86F1C0798760}.Debug|Win32.Build.0 = Debug|Win32 {7284F809-AF30-6315-88C6-86F1C0798760}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -273,6 +304,10 @@ Global {7284F809-AF30-6315-88C6-86F1C0798760}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {7284F809-AF30-6315-88C6-86F1C0798760}.Release Unicode|Win32.ActiveCfg = Release|Win32 {7284F809-AF30-6315-88C6-86F1C0798760}.Release Unicode|Win32.Build.0 = Release|Win32 + {7284F809-AF30-6315-88C6-86F1C0798760}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {7284F809-AF30-6315-88C6-86F1C0798760}.Release(1.3)|Win32.Build.0 = Release|Win32 + {7284F809-AF30-6315-88C6-86F1C0798760}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {7284F809-AF30-6315-88C6-86F1C0798760}.Release(1.4)|Win32.Build.0 = Release|Win32 {7284F809-AF30-6315-88C6-86F1C0798760}.Release|Win32.ActiveCfg = Release|Win32 {7284F809-AF30-6315-88C6-86F1C0798760}.Release|Win32.Build.0 = Release|Win32 {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -285,6 +320,10 @@ Global {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Debug|Win32.ActiveCfg = Debug|Win32 {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Debug|Win32.Build.0 = Debug|Win32 {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -297,6 +336,10 @@ Global {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Release Unicode|Win32.ActiveCfg = Release|Win32 {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Release Unicode|Win32.Build.0 = Release|Win32 + {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Release(1.3)|Win32.Build.0 = Release|Win32 + {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Release(1.4)|Win32.Build.0 = Release|Win32 {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Release|Win32.ActiveCfg = Release|Win32 {D7BF5DDA-C097-9E8B-5EC1-40DE45FB46BF}.Release|Win32.Build.0 = Release|Win32 {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -309,6 +352,10 @@ Global {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Debug|Win32.ActiveCfg = Debug|Win32 {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Debug|Win32.Build.0 = Debug|Win32 {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -321,6 +368,10 @@ Global {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Release Unicode|Win32.ActiveCfg = Release|Win32 {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Release Unicode|Win32.Build.0 = Release|Win32 + {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Release(1.3)|Win32.Build.0 = Release|Win32 + {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Release(1.4)|Win32.Build.0 = Release|Win32 {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Release|Win32.ActiveCfg = Release|Win32 {E70DB92E-C1F5-AE72-F9E2-DB9B4B3DBEC9}.Release|Win32.Build.0 = Release|Win32 {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -333,6 +384,10 @@ Global {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Debug|Win32.ActiveCfg = Debug|Win32 {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Debug|Win32.Build.0 = Debug|Win32 {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -345,6 +400,10 @@ Global {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Release Unicode|Win32.ActiveCfg = Release|Win32 {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Release Unicode|Win32.Build.0 = Release|Win32 + {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Release(1.3)|Win32.Build.0 = Release|Win32 + {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Release(1.4)|Win32.Build.0 = Release|Win32 {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Release|Win32.ActiveCfg = Release|Win32 {F38629D2-EEB2-1A09-FB82-52B8A8DE759B}.Release|Win32.Build.0 = Release|Win32 {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -357,6 +416,10 @@ Global {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Debug|Win32.ActiveCfg = Debug|Win32 {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Debug|Win32.Build.0 = Debug|Win32 {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -369,6 +432,10 @@ Global {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Release Unicode|Win32.ActiveCfg = Release|Win32 {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Release Unicode|Win32.Build.0 = Release|Win32 + {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Release(1.3)|Win32.Build.0 = Release|Win32 + {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Release(1.4)|Win32.Build.0 = Release|Win32 {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Release|Win32.ActiveCfg = Release|Win32 {B94C19C6-F6E7-2F60-56E2-E0BA681B74B3}.Release|Win32.Build.0 = Release|Win32 {DAA547D0-0166-C085-0F93-B88CAB800F97}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -381,6 +448,10 @@ Global {DAA547D0-0166-C085-0F93-B88CAB800F97}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {DAA547D0-0166-C085-0F93-B88CAB800F97}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {DAA547D0-0166-C085-0F93-B88CAB800F97}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {DAA547D0-0166-C085-0F93-B88CAB800F97}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {DAA547D0-0166-C085-0F93-B88CAB800F97}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {DAA547D0-0166-C085-0F93-B88CAB800F97}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {DAA547D0-0166-C085-0F93-B88CAB800F97}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {DAA547D0-0166-C085-0F93-B88CAB800F97}.Debug|Win32.ActiveCfg = Debug|Win32 {DAA547D0-0166-C085-0F93-B88CAB800F97}.Debug|Win32.Build.0 = Debug|Win32 {DAA547D0-0166-C085-0F93-B88CAB800F97}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -393,6 +464,10 @@ Global {DAA547D0-0166-C085-0F93-B88CAB800F97}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {DAA547D0-0166-C085-0F93-B88CAB800F97}.Release Unicode|Win32.ActiveCfg = Release|Win32 {DAA547D0-0166-C085-0F93-B88CAB800F97}.Release Unicode|Win32.Build.0 = Release|Win32 + {DAA547D0-0166-C085-0F93-B88CAB800F97}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {DAA547D0-0166-C085-0F93-B88CAB800F97}.Release(1.3)|Win32.Build.0 = Release|Win32 + {DAA547D0-0166-C085-0F93-B88CAB800F97}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {DAA547D0-0166-C085-0F93-B88CAB800F97}.Release(1.4)|Win32.Build.0 = Release|Win32 {DAA547D0-0166-C085-0F93-B88CAB800F97}.Release|Win32.ActiveCfg = Release|Win32 {DAA547D0-0166-C085-0F93-B88CAB800F97}.Release|Win32.Build.0 = Release|Win32 {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -405,6 +480,10 @@ Global {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Debug|Win32.ActiveCfg = Debug|Win32 {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Debug|Win32.Build.0 = Debug|Win32 {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -417,6 +496,10 @@ Global {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Release Unicode|Win32.ActiveCfg = Release|Win32 {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Release Unicode|Win32.Build.0 = Release|Win32 + {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Release(1.3)|Win32.Build.0 = Release|Win32 + {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Release(1.4)|Win32.Build.0 = Release|Win32 {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Release|Win32.ActiveCfg = Release|Win32 {801CB6D4-A45C-C9D2-B176-9711A74B9164}.Release|Win32.Build.0 = Release|Win32 {69C821C7-1E18-D894-068D-C55E063F4859}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -429,6 +512,10 @@ Global {69C821C7-1E18-D894-068D-C55E063F4859}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {69C821C7-1E18-D894-068D-C55E063F4859}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {69C821C7-1E18-D894-068D-C55E063F4859}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {69C821C7-1E18-D894-068D-C55E063F4859}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {69C821C7-1E18-D894-068D-C55E063F4859}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {69C821C7-1E18-D894-068D-C55E063F4859}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {69C821C7-1E18-D894-068D-C55E063F4859}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {69C821C7-1E18-D894-068D-C55E063F4859}.Debug|Win32.ActiveCfg = Debug|Win32 {69C821C7-1E18-D894-068D-C55E063F4859}.Debug|Win32.Build.0 = Debug|Win32 {69C821C7-1E18-D894-068D-C55E063F4859}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -441,6 +528,10 @@ Global {69C821C7-1E18-D894-068D-C55E063F4859}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {69C821C7-1E18-D894-068D-C55E063F4859}.Release Unicode|Win32.ActiveCfg = Release|Win32 {69C821C7-1E18-D894-068D-C55E063F4859}.Release Unicode|Win32.Build.0 = Release|Win32 + {69C821C7-1E18-D894-068D-C55E063F4859}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {69C821C7-1E18-D894-068D-C55E063F4859}.Release(1.3)|Win32.Build.0 = Release|Win32 + {69C821C7-1E18-D894-068D-C55E063F4859}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {69C821C7-1E18-D894-068D-C55E063F4859}.Release(1.4)|Win32.Build.0 = Release|Win32 {69C821C7-1E18-D894-068D-C55E063F4859}.Release|Win32.ActiveCfg = Release|Win32 {69C821C7-1E18-D894-068D-C55E063F4859}.Release|Win32.Build.0 = Release|Win32 {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -453,6 +544,10 @@ Global {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Debug|Win32.ActiveCfg = Debug|Win32 {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Debug|Win32.Build.0 = Debug|Win32 {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -465,6 +560,10 @@ Global {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Release Unicode|Win32.ActiveCfg = Release|Win32 {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Release Unicode|Win32.Build.0 = Release|Win32 + {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Release(1.3)|Win32.Build.0 = Release|Win32 + {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Release(1.4)|Win32.Build.0 = Release|Win32 {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Release|Win32.ActiveCfg = Release|Win32 {1125C7F3-9E0D-27B1-C97B-CDAB5CE161A3}.Release|Win32.Build.0 = Release|Win32 {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -477,6 +576,10 @@ Global {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Debug|Win32.ActiveCfg = Debug|Win32 {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Debug|Win32.Build.0 = Debug|Win32 {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -489,6 +592,10 @@ Global {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Release Unicode|Win32.ActiveCfg = Release|Win32 {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Release Unicode|Win32.Build.0 = Release|Win32 + {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Release(1.3)|Win32.Build.0 = Release|Win32 + {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Release(1.4)|Win32.Build.0 = Release|Win32 {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Release|Win32.ActiveCfg = Release|Win32 {780752A8-6322-5D3E-EF42-D0FD8BF9CEA1}.Release|Win32.Build.0 = Release|Win32 {60F71B6A-F888-C449-EF49-268BB9F7C963}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -501,6 +608,10 @@ Global {60F71B6A-F888-C449-EF49-268BB9F7C963}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {60F71B6A-F888-C449-EF49-268BB9F7C963}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {60F71B6A-F888-C449-EF49-268BB9F7C963}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {60F71B6A-F888-C449-EF49-268BB9F7C963}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {60F71B6A-F888-C449-EF49-268BB9F7C963}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {60F71B6A-F888-C449-EF49-268BB9F7C963}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {60F71B6A-F888-C449-EF49-268BB9F7C963}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {60F71B6A-F888-C449-EF49-268BB9F7C963}.Debug|Win32.ActiveCfg = Debug|Win32 {60F71B6A-F888-C449-EF49-268BB9F7C963}.Debug|Win32.Build.0 = Debug|Win32 {60F71B6A-F888-C449-EF49-268BB9F7C963}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -513,6 +624,10 @@ Global {60F71B6A-F888-C449-EF49-268BB9F7C963}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {60F71B6A-F888-C449-EF49-268BB9F7C963}.Release Unicode|Win32.ActiveCfg = Release|Win32 {60F71B6A-F888-C449-EF49-268BB9F7C963}.Release Unicode|Win32.Build.0 = Release|Win32 + {60F71B6A-F888-C449-EF49-268BB9F7C963}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {60F71B6A-F888-C449-EF49-268BB9F7C963}.Release(1.3)|Win32.Build.0 = Release|Win32 + {60F71B6A-F888-C449-EF49-268BB9F7C963}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {60F71B6A-F888-C449-EF49-268BB9F7C963}.Release(1.4)|Win32.Build.0 = Release|Win32 {60F71B6A-F888-C449-EF49-268BB9F7C963}.Release|Win32.ActiveCfg = Release|Win32 {60F71B6A-F888-C449-EF49-268BB9F7C963}.Release|Win32.Build.0 = Release|Win32 {60A1DC9D-F837-3923-E9DE-A7925394A578}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -525,6 +640,10 @@ Global {60A1DC9D-F837-3923-E9DE-A7925394A578}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {60A1DC9D-F837-3923-E9DE-A7925394A578}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {60A1DC9D-F837-3923-E9DE-A7925394A578}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {60A1DC9D-F837-3923-E9DE-A7925394A578}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {60A1DC9D-F837-3923-E9DE-A7925394A578}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {60A1DC9D-F837-3923-E9DE-A7925394A578}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {60A1DC9D-F837-3923-E9DE-A7925394A578}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {60A1DC9D-F837-3923-E9DE-A7925394A578}.Debug|Win32.ActiveCfg = Debug|Win32 {60A1DC9D-F837-3923-E9DE-A7925394A578}.Debug|Win32.Build.0 = Debug|Win32 {60A1DC9D-F837-3923-E9DE-A7925394A578}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -537,6 +656,10 @@ Global {60A1DC9D-F837-3923-E9DE-A7925394A578}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {60A1DC9D-F837-3923-E9DE-A7925394A578}.Release Unicode|Win32.ActiveCfg = Release|Win32 {60A1DC9D-F837-3923-E9DE-A7925394A578}.Release Unicode|Win32.Build.0 = Release|Win32 + {60A1DC9D-F837-3923-E9DE-A7925394A578}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {60A1DC9D-F837-3923-E9DE-A7925394A578}.Release(1.3)|Win32.Build.0 = Release|Win32 + {60A1DC9D-F837-3923-E9DE-A7925394A578}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {60A1DC9D-F837-3923-E9DE-A7925394A578}.Release(1.4)|Win32.Build.0 = Release|Win32 {60A1DC9D-F837-3923-E9DE-A7925394A578}.Release|Win32.ActiveCfg = Release|Win32 {60A1DC9D-F837-3923-E9DE-A7925394A578}.Release|Win32.Build.0 = Release|Win32 {6210A080-01C0-6D67-F1DB-669393175402}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -549,6 +672,10 @@ Global {6210A080-01C0-6D67-F1DB-669393175402}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {6210A080-01C0-6D67-F1DB-669393175402}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {6210A080-01C0-6D67-F1DB-669393175402}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {6210A080-01C0-6D67-F1DB-669393175402}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {6210A080-01C0-6D67-F1DB-669393175402}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {6210A080-01C0-6D67-F1DB-669393175402}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {6210A080-01C0-6D67-F1DB-669393175402}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {6210A080-01C0-6D67-F1DB-669393175402}.Debug|Win32.ActiveCfg = Debug|Win32 {6210A080-01C0-6D67-F1DB-669393175402}.Debug|Win32.Build.0 = Debug|Win32 {6210A080-01C0-6D67-F1DB-669393175402}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -561,6 +688,10 @@ Global {6210A080-01C0-6D67-F1DB-669393175402}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {6210A080-01C0-6D67-F1DB-669393175402}.Release Unicode|Win32.ActiveCfg = Release|Win32 {6210A080-01C0-6D67-F1DB-669393175402}.Release Unicode|Win32.Build.0 = Release|Win32 + {6210A080-01C0-6D67-F1DB-669393175402}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {6210A080-01C0-6D67-F1DB-669393175402}.Release(1.3)|Win32.Build.0 = Release|Win32 + {6210A080-01C0-6D67-F1DB-669393175402}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {6210A080-01C0-6D67-F1DB-669393175402}.Release(1.4)|Win32.Build.0 = Release|Win32 {6210A080-01C0-6D67-F1DB-669393175402}.Release|Win32.ActiveCfg = Release|Win32 {6210A080-01C0-6D67-F1DB-669393175402}.Release|Win32.Build.0 = Release|Win32 {9E59B16D-0924-409C-1611-DF2207A0053F}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -573,6 +704,10 @@ Global {9E59B16D-0924-409C-1611-DF2207A0053F}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {9E59B16D-0924-409C-1611-DF2207A0053F}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {9E59B16D-0924-409C-1611-DF2207A0053F}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {9E59B16D-0924-409C-1611-DF2207A0053F}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {9E59B16D-0924-409C-1611-DF2207A0053F}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {9E59B16D-0924-409C-1611-DF2207A0053F}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {9E59B16D-0924-409C-1611-DF2207A0053F}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {9E59B16D-0924-409C-1611-DF2207A0053F}.Debug|Win32.ActiveCfg = Debug|Win32 {9E59B16D-0924-409C-1611-DF2207A0053F}.Debug|Win32.Build.0 = Debug|Win32 {9E59B16D-0924-409C-1611-DF2207A0053F}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -585,6 +720,10 @@ Global {9E59B16D-0924-409C-1611-DF2207A0053F}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {9E59B16D-0924-409C-1611-DF2207A0053F}.Release Unicode|Win32.ActiveCfg = Release|Win32 {9E59B16D-0924-409C-1611-DF2207A0053F}.Release Unicode|Win32.Build.0 = Release|Win32 + {9E59B16D-0924-409C-1611-DF2207A0053F}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {9E59B16D-0924-409C-1611-DF2207A0053F}.Release(1.3)|Win32.Build.0 = Release|Win32 + {9E59B16D-0924-409C-1611-DF2207A0053F}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {9E59B16D-0924-409C-1611-DF2207A0053F}.Release(1.4)|Win32.Build.0 = Release|Win32 {9E59B16D-0924-409C-1611-DF2207A0053F}.Release|Win32.ActiveCfg = Release|Win32 {9E59B16D-0924-409C-1611-DF2207A0053F}.Release|Win32.Build.0 = Release|Win32 {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -597,6 +736,10 @@ Global {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Debug|Win32.ActiveCfg = Debug|Win32 {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Debug|Win32.Build.0 = Debug|Win32 {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -609,6 +752,10 @@ Global {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Release Unicode|Win32.ActiveCfg = Release|Win32 {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Release Unicode|Win32.Build.0 = Release|Win32 + {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Release(1.3)|Win32.Build.0 = Release|Win32 + {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Release(1.4)|Win32.Build.0 = Release|Win32 {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Release|Win32.ActiveCfg = Release|Win32 {DFAF0062-4CD7-9AB8-0683-A6026B326F56}.Release|Win32.Build.0 = Release|Win32 {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -621,6 +768,10 @@ Global {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Debug|Win32.ActiveCfg = Debug|Win32 {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Debug|Win32.Build.0 = Debug|Win32 {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -633,6 +784,10 @@ Global {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Release Unicode|Win32.ActiveCfg = Release|Win32 {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Release Unicode|Win32.Build.0 = Release|Win32 + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Release(1.3)|Win32.Build.0 = Release|Win32 + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Release(1.4)|Win32.Build.0 = Release|Win32 {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Release|Win32.ActiveCfg = Release|Win32 {90F5975E-550B-EEC8-9A8A-B8581D3FCF97}.Release|Win32.Build.0 = Release|Win32 {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -645,6 +800,10 @@ Global {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Debug|Win32.ActiveCfg = Debug|Win32 {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Debug|Win32.Build.0 = Debug|Win32 {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -657,6 +816,10 @@ Global {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Release Unicode|Win32.ActiveCfg = Release|Win32 {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Release Unicode|Win32.Build.0 = Release|Win32 + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Release(1.3)|Win32.Build.0 = Release|Win32 + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Release(1.4)|Win32.Build.0 = Release|Win32 {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Release|Win32.ActiveCfg = Release|Win32 {C63CFD5B-23E8-FB4F-79DB-E40F463B0C1E}.Release|Win32.Build.0 = Release|Win32 {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -669,6 +832,10 @@ Global {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Debug|Win32.ActiveCfg = Debug|Win32 {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Debug|Win32.Build.0 = Debug|Win32 {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -681,6 +848,10 @@ Global {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Release Unicode|Win32.ActiveCfg = Release|Win32 {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Release Unicode|Win32.Build.0 = Release|Win32 + {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Release(1.3)|Win32.Build.0 = Release|Win32 + {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Release(1.4)|Win32.Build.0 = Release|Win32 {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Release|Win32.ActiveCfg = Release|Win32 {61BD1097-CF2E-B296-DAA9-73A6FE135319}.Release|Win32.Build.0 = Release|Win32 {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -693,6 +864,10 @@ Global {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Debug|Win32.ActiveCfg = Debug|Win32 {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Debug|Win32.Build.0 = Debug|Win32 {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -705,6 +880,10 @@ Global {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Release Unicode|Win32.ActiveCfg = Release|Win32 {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Release Unicode|Win32.Build.0 = Release|Win32 + {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Release(1.3)|Win32.Build.0 = Release|Win32 + {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Release(1.4)|Win32.Build.0 = Release|Win32 {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Release|Win32.ActiveCfg = Release|Win32 {7D6E339F-9C2C-31DA-FDB0-5EE50973CF2A}.Release|Win32.Build.0 = Release|Win32 {7C428E76-9271-6284-20F0-9B38ED6931E3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -717,6 +896,10 @@ Global {7C428E76-9271-6284-20F0-9B38ED6931E3}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {7C428E76-9271-6284-20F0-9B38ED6931E3}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {7C428E76-9271-6284-20F0-9B38ED6931E3}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {7C428E76-9271-6284-20F0-9B38ED6931E3}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {7C428E76-9271-6284-20F0-9B38ED6931E3}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {7C428E76-9271-6284-20F0-9B38ED6931E3}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {7C428E76-9271-6284-20F0-9B38ED6931E3}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {7C428E76-9271-6284-20F0-9B38ED6931E3}.Debug|Win32.ActiveCfg = Debug|Win32 {7C428E76-9271-6284-20F0-9B38ED6931E3}.Debug|Win32.Build.0 = Debug|Win32 {7C428E76-9271-6284-20F0-9B38ED6931E3}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -729,6 +912,10 @@ Global {7C428E76-9271-6284-20F0-9B38ED6931E3}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {7C428E76-9271-6284-20F0-9B38ED6931E3}.Release Unicode|Win32.ActiveCfg = Release|Win32 {7C428E76-9271-6284-20F0-9B38ED6931E3}.Release Unicode|Win32.Build.0 = Release|Win32 + {7C428E76-9271-6284-20F0-9B38ED6931E3}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {7C428E76-9271-6284-20F0-9B38ED6931E3}.Release(1.3)|Win32.Build.0 = Release|Win32 + {7C428E76-9271-6284-20F0-9B38ED6931E3}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {7C428E76-9271-6284-20F0-9B38ED6931E3}.Release(1.4)|Win32.Build.0 = Release|Win32 {7C428E76-9271-6284-20F0-9B38ED6931E3}.Release|Win32.ActiveCfg = Release|Win32 {7C428E76-9271-6284-20F0-9B38ED6931E3}.Release|Win32.Build.0 = Release|Win32 {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -741,6 +928,10 @@ Global {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Debug|Win32.ActiveCfg = Debug|Win32 {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Debug|Win32.Build.0 = Debug|Win32 {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -753,6 +944,10 @@ Global {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Release Unicode|Win32.ActiveCfg = Release|Win32 {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Release Unicode|Win32.Build.0 = Release|Win32 + {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Release(1.3)|Win32.Build.0 = Release|Win32 + {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Release(1.4)|Win32.Build.0 = Release|Win32 {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Release|Win32.ActiveCfg = Release|Win32 {85BCCE3E-992B-B6D7-28F6-CF0A12680822}.Release|Win32.Build.0 = Release|Win32 {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Debug DLL|Win32.ActiveCfg = Debug|Win32 @@ -765,6 +960,10 @@ Global {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Debug Unicode MTD|Win32.Build.0 = Debug|Win32 {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Debug Unicode|Win32.ActiveCfg = Debug|Win32 {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Debug Unicode|Win32.Build.0 = Debug|Win32 + {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Debug(1.3)|Win32.ActiveCfg = Debug|Win32 + {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Debug(1.3)|Win32.Build.0 = Debug|Win32 + {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Debug(1.4)|Win32.ActiveCfg = Debug|Win32 + {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Debug(1.4)|Win32.Build.0 = Debug|Win32 {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Debug|Win32.ActiveCfg = Debug|Win32 {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Debug|Win32.Build.0 = Debug|Win32 {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Release DLL|Win32.ActiveCfg = Release|Win32 @@ -777,6 +976,10 @@ Global {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Release Unicode MTD|Win32.Build.0 = Release|Win32 {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Release Unicode|Win32.ActiveCfg = Release|Win32 {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Release Unicode|Win32.Build.0 = Release|Win32 + {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Release(1.3)|Win32.ActiveCfg = Release|Win32 + {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Release(1.3)|Win32.Build.0 = Release|Win32 + {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Release(1.4)|Win32.ActiveCfg = Release|Win32 + {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Release(1.4)|Win32.Build.0 = Release|Win32 {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Release|Win32.ActiveCfg = Release|Win32 {8050F819-5B5B-1504-BC6D-7F2B4C6C85F3}.Release|Win32.Build.0 = Release|Win32 {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 @@ -789,6 +992,10 @@ Global {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Debug Unicode MTD|Win32.Build.0 = Debug Unicode MTD|Win32 {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Debug Unicode|Win32.ActiveCfg = Debug Unicode|Win32 {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Debug Unicode|Win32.Build.0 = Debug Unicode|Win32 + {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Debug(1.3)|Win32.ActiveCfg = Debug Unicode MTD|Win32 + {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Debug(1.3)|Win32.Build.0 = Debug Unicode MTD|Win32 + {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Debug(1.4)|Win32.ActiveCfg = Debug Unicode MTD|Win32 + {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Debug(1.4)|Win32.Build.0 = Debug Unicode MTD|Win32 {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Debug|Win32.ActiveCfg = Debug|Win32 {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Debug|Win32.Build.0 = Debug|Win32 {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 @@ -801,6 +1008,10 @@ Global {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Release Unicode MTD|Win32.Build.0 = Release Unicode MTD|Win32 {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Release Unicode|Win32.ActiveCfg = Release Unicode|Win32 {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Release Unicode|Win32.Build.0 = Release Unicode|Win32 + {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Release(1.3)|Win32.ActiveCfg = Release Unicode MTD|Win32 + {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Release(1.3)|Win32.Build.0 = Release Unicode MTD|Win32 + {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Release(1.4)|Win32.ActiveCfg = Release Unicode MTD|Win32 + {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Release(1.4)|Win32.Build.0 = Release Unicode MTD|Win32 {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Release|Win32.ActiveCfg = Release|Win32 {FF956BB3-F377-43A8-AB31-633299BDF6C6}.Release|Win32.Build.0 = Release|Win32 {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 @@ -813,6 +1024,10 @@ Global {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Debug Unicode MTD|Win32.Build.0 = Debug Unicode MTD|Win32 {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Debug Unicode|Win32.ActiveCfg = Debug Unicode|Win32 {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Debug Unicode|Win32.Build.0 = Debug Unicode|Win32 + {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Debug(1.3)|Win32.ActiveCfg = Debug Unicode MTD|Win32 + {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Debug(1.3)|Win32.Build.0 = Debug Unicode MTD|Win32 + {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Debug(1.4)|Win32.ActiveCfg = Debug Unicode MTD|Win32 + {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Debug(1.4)|Win32.Build.0 = Debug Unicode MTD|Win32 {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Debug|Win32.ActiveCfg = Debug|Win32 {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Debug|Win32.Build.0 = Debug|Win32 {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 @@ -825,6 +1040,10 @@ Global {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Release Unicode MTD|Win32.Build.0 = Release Unicode MTD|Win32 {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Release Unicode|Win32.ActiveCfg = Release Unicode|Win32 {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Release Unicode|Win32.Build.0 = Release Unicode|Win32 + {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Release(1.3)|Win32.ActiveCfg = Release Unicode MTD|Win32 + {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Release(1.3)|Win32.Build.0 = Release Unicode MTD|Win32 + {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Release(1.4)|Win32.ActiveCfg = Release Unicode MTD|Win32 + {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Release(1.4)|Win32.Build.0 = Release Unicode MTD|Win32 {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Release|Win32.ActiveCfg = Release|Win32 {5160A878-73A5-41CA-B8D5-C3D560DD1D58}.Release|Win32.Build.0 = Release|Win32 {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 @@ -837,6 +1056,10 @@ Global {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Debug Unicode MTD|Win32.Build.0 = Debug Unicode MTD|Win32 {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Debug Unicode|Win32.ActiveCfg = Debug Unicode|Win32 {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Debug Unicode|Win32.Build.0 = Debug Unicode|Win32 + {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Debug(1.3)|Win32.ActiveCfg = Debug Unicode MTD|Win32 + {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Debug(1.3)|Win32.Build.0 = Debug Unicode MTD|Win32 + {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Debug(1.4)|Win32.ActiveCfg = Debug Unicode MTD|Win32 + {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Debug(1.4)|Win32.Build.0 = Debug Unicode MTD|Win32 {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Debug|Win32.ActiveCfg = Debug|Win32 {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Debug|Win32.Build.0 = Debug|Win32 {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 @@ -849,6 +1072,10 @@ Global {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Release Unicode MTD|Win32.Build.0 = Release Unicode MTD|Win32 {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Release Unicode|Win32.ActiveCfg = Release Unicode|Win32 {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Release Unicode|Win32.Build.0 = Release Unicode|Win32 + {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Release(1.3)|Win32.ActiveCfg = Release Unicode MTD|Win32 + {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Release(1.3)|Win32.Build.0 = Release Unicode MTD|Win32 + {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Release(1.4)|Win32.ActiveCfg = Release Unicode MTD|Win32 + {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Release(1.4)|Win32.Build.0 = Release Unicode MTD|Win32 {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Release|Win32.ActiveCfg = Release|Win32 {38BB0C01-CF6E-44D7-8AE1-5F92D38DB1DC}.Release|Win32.Build.0 = Release|Win32 {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 @@ -861,6 +1088,10 @@ Global {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Debug Unicode MTD|Win32.Build.0 = Debug Unicode MTD|Win32 {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Debug Unicode|Win32.ActiveCfg = Debug Unicode|Win32 {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Debug Unicode|Win32.Build.0 = Debug Unicode|Win32 + {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Debug(1.3)|Win32.ActiveCfg = Debug Unicode MTD|Win32 + {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Debug(1.3)|Win32.Build.0 = Debug Unicode MTD|Win32 + {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Debug(1.4)|Win32.ActiveCfg = Debug Unicode MTD|Win32 + {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Debug(1.4)|Win32.Build.0 = Debug Unicode MTD|Win32 {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Debug|Win32.ActiveCfg = Debug|Win32 {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Debug|Win32.Build.0 = Debug|Win32 {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 @@ -873,6 +1104,10 @@ Global {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Release Unicode MTD|Win32.Build.0 = Release Unicode MTD|Win32 {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Release Unicode|Win32.ActiveCfg = Release Unicode|Win32 {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Release Unicode|Win32.Build.0 = Release Unicode|Win32 + {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Release(1.3)|Win32.ActiveCfg = Release Unicode MTD|Win32 + {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Release(1.3)|Win32.Build.0 = Release Unicode MTD|Win32 + {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Release(1.4)|Win32.ActiveCfg = Release Unicode MTD|Win32 + {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Release(1.4)|Win32.Build.0 = Release Unicode MTD|Win32 {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Release|Win32.ActiveCfg = Release|Win32 {3D872CA6-782B-46C9-A336-1B18C0A4FBD5}.Release|Win32.Build.0 = Release|Win32 {D7F466F4-2AEA-4648-BE09-024C887BC157}.Debug DLL|Win32.ActiveCfg = Debug DLL|Win32 @@ -885,6 +1120,10 @@ Global {D7F466F4-2AEA-4648-BE09-024C887BC157}.Debug Unicode MTD|Win32.Build.0 = Debug MTD|Win32 {D7F466F4-2AEA-4648-BE09-024C887BC157}.Debug Unicode|Win32.ActiveCfg = Debug MTD|Win32 {D7F466F4-2AEA-4648-BE09-024C887BC157}.Debug Unicode|Win32.Build.0 = Debug MTD|Win32 + {D7F466F4-2AEA-4648-BE09-024C887BC157}.Debug(1.3)|Win32.ActiveCfg = Debug MTD|Win32 + {D7F466F4-2AEA-4648-BE09-024C887BC157}.Debug(1.3)|Win32.Build.0 = Debug MTD|Win32 + {D7F466F4-2AEA-4648-BE09-024C887BC157}.Debug(1.4)|Win32.ActiveCfg = Debug MTD|Win32 + {D7F466F4-2AEA-4648-BE09-024C887BC157}.Debug(1.4)|Win32.Build.0 = Debug MTD|Win32 {D7F466F4-2AEA-4648-BE09-024C887BC157}.Debug|Win32.ActiveCfg = Debug|Win32 {D7F466F4-2AEA-4648-BE09-024C887BC157}.Debug|Win32.Build.0 = Debug|Win32 {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release DLL|Win32.ActiveCfg = Release DLL|Win32 @@ -897,8 +1136,172 @@ Global {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release Unicode MTD|Win32.Build.0 = Release MTD|Win32 {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release Unicode|Win32.ActiveCfg = Release MTD|Win32 {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release Unicode|Win32.Build.0 = Release MTD|Win32 + {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release(1.3)|Win32.ActiveCfg = Release MTD|Win32 + {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release(1.3)|Win32.Build.0 = Release MTD|Win32 + {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release(1.4)|Win32.ActiveCfg = Release MTD|Win32 + {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release(1.4)|Win32.Build.0 = Release MTD|Win32 {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release|Win32.ActiveCfg = Release|Win32 {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release|Win32.Build.0 = Release|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug DLL|Win32.ActiveCfg = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug DLL|Win32.Build.0 = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug MTD|Win32.ActiveCfg = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug MTD|Win32.Build.0 = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug Unicode DLL|Win32.ActiveCfg = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug Unicode DLL|Win32.Build.0 = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug Unicode MTD|Win32.ActiveCfg = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug Unicode MTD|Win32.Build.0 = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug Unicode|Win32.ActiveCfg = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug Unicode|Win32.Build.0 = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug(1.3)|Win32.ActiveCfg = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug(1.3)|Win32.Build.0 = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug(1.4)|Win32.ActiveCfg = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug(1.4)|Win32.Build.0 = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug|Win32.ActiveCfg = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Debug|Win32.Build.0 = Debug(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release DLL|Win32.ActiveCfg = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release DLL|Win32.Build.0 = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release MTD|Win32.ActiveCfg = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release MTD|Win32.Build.0 = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release Unicode DLL|Win32.ActiveCfg = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release Unicode DLL|Win32.Build.0 = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release Unicode MTD|Win32.ActiveCfg = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release Unicode MTD|Win32.Build.0 = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release Unicode|Win32.ActiveCfg = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release Unicode|Win32.Build.0 = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release(1.3)|Win32.ActiveCfg = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release(1.3)|Win32.Build.0 = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release(1.4)|Win32.ActiveCfg = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release(1.4)|Win32.Build.0 = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release|Win32.ActiveCfg = Release(1.4)|Win32 + {EEAD895E-87CF-4A0A-AAC6-951D96977E2C}.Release|Win32.Build.0 = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug DLL|Win32.ActiveCfg = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug DLL|Win32.Build.0 = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug MTD|Win32.ActiveCfg = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug MTD|Win32.Build.0 = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug Unicode DLL|Win32.ActiveCfg = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug Unicode DLL|Win32.Build.0 = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug Unicode MTD|Win32.ActiveCfg = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug Unicode MTD|Win32.Build.0 = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug Unicode|Win32.ActiveCfg = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug Unicode|Win32.Build.0 = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug(1.3)|Win32.ActiveCfg = Debug(1.3)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug(1.3)|Win32.Build.0 = Debug(1.3)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug(1.4)|Win32.ActiveCfg = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug(1.4)|Win32.Build.0 = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug|Win32.ActiveCfg = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Debug|Win32.Build.0 = Debug(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release DLL|Win32.ActiveCfg = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release DLL|Win32.Build.0 = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release MTD|Win32.ActiveCfg = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release MTD|Win32.Build.0 = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release Unicode DLL|Win32.ActiveCfg = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release Unicode DLL|Win32.Build.0 = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release Unicode MTD|Win32.ActiveCfg = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release Unicode MTD|Win32.Build.0 = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release Unicode|Win32.ActiveCfg = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release Unicode|Win32.Build.0 = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release(1.3)|Win32.ActiveCfg = Release(1.3)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release(1.3)|Win32.Build.0 = Release(1.3)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release(1.4)|Win32.ActiveCfg = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release(1.4)|Win32.Build.0 = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release|Win32.ActiveCfg = Release(1.4)|Win32 + {B70CBA1A-414C-4872-8DAF-31934BCAB568}.Release|Win32.Build.0 = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug DLL|Win32.ActiveCfg = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug DLL|Win32.Build.0 = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug MTD|Win32.ActiveCfg = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug MTD|Win32.Build.0 = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug Unicode DLL|Win32.ActiveCfg = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug Unicode DLL|Win32.Build.0 = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug Unicode MTD|Win32.ActiveCfg = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug Unicode MTD|Win32.Build.0 = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug Unicode|Win32.ActiveCfg = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug Unicode|Win32.Build.0 = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug(1.3)|Win32.ActiveCfg = Debug(1.3)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug(1.3)|Win32.Build.0 = Debug(1.3)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug(1.4)|Win32.ActiveCfg = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug(1.4)|Win32.Build.0 = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug|Win32.ActiveCfg = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Debug|Win32.Build.0 = Debug(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release DLL|Win32.ActiveCfg = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release DLL|Win32.Build.0 = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release MTD|Win32.ActiveCfg = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release MTD|Win32.Build.0 = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release Unicode DLL|Win32.ActiveCfg = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release Unicode DLL|Win32.Build.0 = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release Unicode MTD|Win32.ActiveCfg = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release Unicode MTD|Win32.Build.0 = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release Unicode|Win32.ActiveCfg = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release Unicode|Win32.Build.0 = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release(1.3)|Win32.ActiveCfg = Release(1.3)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release(1.3)|Win32.Build.0 = Release(1.3)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release(1.4)|Win32.ActiveCfg = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release(1.4)|Win32.Build.0 = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release|Win32.ActiveCfg = Release(1.4)|Win32 + {63985384-2FBF-4796-96F1-F0AE163BAFC9}.Release|Win32.Build.0 = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug DLL|Win32.ActiveCfg = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug DLL|Win32.Build.0 = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug MTD|Win32.ActiveCfg = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug MTD|Win32.Build.0 = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug Unicode DLL|Win32.ActiveCfg = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug Unicode DLL|Win32.Build.0 = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug Unicode MTD|Win32.ActiveCfg = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug Unicode MTD|Win32.Build.0 = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug Unicode|Win32.ActiveCfg = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug Unicode|Win32.Build.0 = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug(1.3)|Win32.ActiveCfg = Debug(1.3)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug(1.3)|Win32.Build.0 = Debug(1.3)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug(1.4)|Win32.ActiveCfg = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug(1.4)|Win32.Build.0 = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug|Win32.ActiveCfg = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Debug|Win32.Build.0 = Debug(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release DLL|Win32.ActiveCfg = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release DLL|Win32.Build.0 = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release MTD|Win32.ActiveCfg = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release MTD|Win32.Build.0 = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release Unicode DLL|Win32.ActiveCfg = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release Unicode DLL|Win32.Build.0 = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release Unicode MTD|Win32.ActiveCfg = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release Unicode MTD|Win32.Build.0 = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release Unicode|Win32.ActiveCfg = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release Unicode|Win32.Build.0 = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release(1.3)|Win32.ActiveCfg = Release(1.3)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release(1.3)|Win32.Build.0 = Release(1.3)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release(1.4)|Win32.ActiveCfg = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release(1.4)|Win32.Build.0 = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release|Win32.ActiveCfg = Release(1.4)|Win32 + {4A974C64-D51F-4D0F-85B8-0C876EF29F2E}.Release|Win32.Build.0 = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug DLL|Win32.ActiveCfg = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug DLL|Win32.Build.0 = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug MTD|Win32.ActiveCfg = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug MTD|Win32.Build.0 = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug Unicode DLL|Win32.ActiveCfg = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug Unicode DLL|Win32.Build.0 = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug Unicode MTD|Win32.ActiveCfg = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug Unicode MTD|Win32.Build.0 = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug Unicode|Win32.ActiveCfg = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug Unicode|Win32.Build.0 = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug(1.3)|Win32.ActiveCfg = Debug(1.3)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug(1.3)|Win32.Build.0 = Debug(1.3)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug(1.4)|Win32.ActiveCfg = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug(1.4)|Win32.Build.0 = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug|Win32.ActiveCfg = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Debug|Win32.Build.0 = Debug(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release DLL|Win32.ActiveCfg = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release DLL|Win32.Build.0 = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release MTD|Win32.ActiveCfg = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release MTD|Win32.Build.0 = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release Unicode DLL|Win32.ActiveCfg = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release Unicode DLL|Win32.Build.0 = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release Unicode MTD|Win32.ActiveCfg = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release Unicode MTD|Win32.Build.0 = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release Unicode|Win32.ActiveCfg = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release Unicode|Win32.Build.0 = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release(1.3)|Win32.ActiveCfg = Release(1.3)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release(1.3)|Win32.Build.0 = Release(1.3)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release(1.4)|Win32.ActiveCfg = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release(1.4)|Win32.Build.0 = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release|Win32.ActiveCfg = Release(1.4)|Win32 + {46DC0A36-30B8-4004-94AD-96C607F3983A}.Release|Win32.Build.0 = Release(1.4)|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE