You can subscribe to this list here.
| 2009 |
Jan
(14) |
Feb
(44) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|---|
|
From: <rob...@us...> - 2009-01-27 10:16:33
|
Revision: 325
http://colladamaya.svn.sourceforge.net/colladamaya/?rev=325&view=rev
Author: robertwuerfel
Date: 2009-01-27 10:16:27 +0000 (Tue, 27 Jan 2009)
Log Message:
-----------
Fix bug in exporter (ids of helper geometries for morph controllers)
Modified Paths:
--------------
branches/nextgen/COLLADAMax/src/COLLADAMaxGeometryExporter.cpp
branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLMeshLoader.cpp
Modified: branches/nextgen/COLLADAMax/src/COLLADAMaxGeometryExporter.cpp
===================================================================
--- branches/nextgen/COLLADAMax/src/COLLADAMaxGeometryExporter.cpp 2009-01-26 16:50:25 UTC (rev 324)
+++ branches/nextgen/COLLADAMax/src/COLLADAMaxGeometryExporter.cpp 2009-01-27 10:16:27 UTC (rev 325)
@@ -320,8 +320,8 @@
}
if ( mMorphControllerHelperGeometry )
- assert(false); // solve id problem in mDocumentExporter->insertExportedObject(ObjectIdentifier(object), mExportNode);
- //mId = ExportSceneGraph::getMorphControllerHelperId(*mMorphControllerHelperGeometry);
+ //assert(false); // solve id problem in mDocumentExporter->insertExportedObject(ObjectIdentifier(object), mExportNode);
+ mId = ExportSceneGraph::getMorphControllerHelperId(*mMorphControllerHelperGeometry);
else
mId = GeometriesExporter::getGeometryId(*mExportNode);
Modified: branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLMeshLoader.cpp
===================================================================
--- branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLMeshLoader.cpp 2009-01-26 16:50:25 UTC (rev 324)
+++ branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLMeshLoader.cpp 2009-01-27 10:16:27 UTC (rev 325)
@@ -641,7 +641,6 @@
mColorsIndexOffset = 0;
mUseColors = false;
}
-
}
else
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rob...@us...> - 2009-01-26 16:50:29
|
Revision: 324
http://colladamaya.svn.sourceforge.net/colladamaya/?rev=324&view=rev
Author: robertwuerfel
Date: 2009-01-26 16:50:25 +0000 (Mon, 26 Jan 2009)
Log Message:
-----------
complete import of library nodes in max
fix bug if one mesh has more than one normal source
Modified Paths:
--------------
branches/nextgen/COLLADAFramework/include/COLLADAFWNode.h
branches/nextgen/COLLADAFramework/include/COLLADAFWPrerequisites.h
branches/nextgen/COLLADAFramework/src/COLLADAFWNode.cpp
branches/nextgen/COLLADAMax/include/COLLADAMaxDocumentImporter.h
branches/nextgen/COLLADAMax/include/COLLADAMaxImporterBase.h
branches/nextgen/COLLADAMax/src/COLLADAMaxColladaImporter.cpp
branches/nextgen/COLLADAMax/src/COLLADAMaxImporterBase.cpp
branches/nextgen/COLLADAMax/src/COLLADAMaxLibraryNodesImporter.cpp
branches/nextgen/COLLADAMax/src/COLLADAMaxNodeImporter.cpp
branches/nextgen/COLLADASaxFrameworkLoader/include/COLLADASaxFWLMeshLoader.h
branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLMeshLoader.cpp
branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLNodeLoader.cpp
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWNode.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWNode.h 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWNode.h 2009-01-26 16:50:25 UTC (rev 324)
@@ -48,7 +48,9 @@
};
private:
-
+ /** The parent node.*/
+ Node* mParent;
+
/**
* The name attribute is the text string name of this element.
* Optional attribute.
@@ -134,16 +136,8 @@
@return The transformation matrix*/
COLLADABU::Math::Matrix4 getTransformationMatrix() const;
- /** Creates a clone of the node and returns a popinter to it.*/
- Node* clone() const { return new Node(*this); }
-
-// private:
- /** Disable default copy ctor. */
-// Node( const Node& pre );
- /** Disable default assignment operator. */
-// const Node& operator= ( const Node& pre );
-
-
+ /** Creates a clone of the node and returns a pointer to it.*/
+ Node* clone() const { return NEW Node(*this); }
};
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWPrerequisites.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWPrerequisites.h 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWPrerequisites.h 2009-01-26 16:50:25 UTC (rev 324)
@@ -18,4 +18,7 @@
typedef std::string String;
}
+#define NEW new
+
+
#endif //__COLLADAFW_PREREQUISITES_H__
Modified: branches/nextgen/COLLADAFramework/src/COLLADAFWNode.cpp
===================================================================
--- branches/nextgen/COLLADAFramework/src/COLLADAFWNode.cpp 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADAFramework/src/COLLADAFWNode.cpp 2009-01-26 16:50:25 UTC (rev 324)
@@ -32,23 +32,6 @@
//--------------------------------------------------------------------
Node::~Node()
{
-#if 0
- //delete all child nodes
- for ( size_t i = 0, count = mChildNodes.getCount(); i < count; ++i)
- delete mChildNodes[i];
-
- //delete all transformations
- for ( size_t i = 0, count = mTransformations.getCount(); i < count; ++i)
- delete mTransformations[i];
-
- //delete all instance geometries
- for ( size_t i = 0, count = mInstanceGeometries.getCount(); i < count; ++i)
- delete mInstanceGeometries[i];
-
- //delete all instance nodes
- for ( size_t i = 0, count = mInstanceNodes.getCount(); i < count; ++i)
- delete mInstanceNodes[i];
-#endif
}
//--------------------------------------------------------------------
Modified: branches/nextgen/COLLADAMax/include/COLLADAMaxDocumentImporter.h
===================================================================
--- branches/nextgen/COLLADAMax/include/COLLADAMaxDocumentImporter.h 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADAMax/include/COLLADAMaxDocumentImporter.h 2009-01-26 16:50:25 UTC (rev 324)
@@ -36,6 +36,7 @@
class Geometry;
class UniqueId;
class LibraryNodes;
+ class Node;
}
namespace COLLADAMax
@@ -61,6 +62,9 @@
/** List of library nodes.*/
typedef std::list<const COLLADAFW::LibraryNodes*> LibraryNodesList;
+ /** Maps Unique id to framework nodes.*/
+ typedef std::map<COLLADAFW::UniqueId, const COLLADAFW::Node*> UniqueIdFWNodeMap;
+
private:
/** Max interface.*/
Interface* mMaxInterface;
@@ -96,6 +100,12 @@
should be added to this map. .*/
ObjectINodeUniqueIdMap mObjectINodeUniqueIdMap;
+ /** Maps Unique ids of nodes that are in a library nodes but not already in the max scene graph to
+ the frame word node itself. Each frame work node, that is in a library nodes but not immediately added
+ to the max scene graph should be added to that map. When looking for referenced nodes check this map if
+ the referenced node is not already in the max scene graph.*/
+ UniqueIdFWNodeMap mUniqueIdFWNodeMap;
+
/** This vector contains all library nodes already received by the importer.*/
LibraryNodesList mLibraryNodesList;
@@ -165,6 +175,9 @@
/** Returns the object UniqueId Mapping.*/
ObjectINodeUniqueIdMap& getObjectINodeUniqueIdMap(){ return mObjectINodeUniqueIdMap; }
+ /** Returns the Unique id framework node map.*/
+ UniqueIdFWNodeMap& getUniqueIdFWNodeMap() { return mUniqueIdFWNodeMap; }
+
/** Returns the list of library nodes.*/
LibraryNodesList& getLibraryNodesList(){ return mLibraryNodesList; }
Modified: branches/nextgen/COLLADAMax/include/COLLADAMaxImporterBase.h
===================================================================
--- branches/nextgen/COLLADAMax/include/COLLADAMaxImporterBase.h 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADAMax/include/COLLADAMaxImporterBase.h 2009-01-26 16:50:25 UTC (rev 324)
@@ -30,6 +30,7 @@
{
class UniqueId;
class LibraryNodes;
+ class Node;
}
namespace COLLADAMax
@@ -76,11 +77,16 @@
not already been loaded this method should be called.*/
void addUniqueIdReferencingImpNodePair(const COLLADAFW::UniqueId& uniqueId, ImpNode* node);
+ /** Removes the UniqueId-Referencing INode pair from the UniqueIdReferencingINodeMap. Remove pairs
+ before you start resolving the reference.*/
+ void removeUniqueIdReferencingImpNodePair( const COLLADAFW::UniqueId& uniqueId, ImpNode* node );
+
/** Fills @a nodeList with all INodes that reference the object with UniqueId @a uniqueId.*/
void getObjectINodesByUniqueId( const COLLADAFW::UniqueId& uniqueId, INodeList& nodelist );
- /** Fills @a nodeList with all INodes that reference the node with UniqueId @a uniqueId.*/
- void getReferencingImpNodesByUniqueId( const COLLADAFW::UniqueId& uniqueId, ImpNodeList& nodelist );
+ /** Returns an INodes that reference the node with UniqueId @a uniqueId or zero if no such node is
+ in the map. */
+ ImpNode* getReferencingImpNodesByUniqueId( const COLLADAFW::UniqueId& uniqueId );
/** Adds an UniqueId-Object pair to the UniqueIdObjectMap. For every imported object this method should
be called to ensure that elements that are imported later and instance this object can set the object
@@ -96,6 +102,11 @@
unique id can be retrieved from the created INode. This is required for instance node handling.*/
void addObjectINodeUniqueIdPair( INode* object, const COLLADAFW::UniqueId& uniqueId );
+ /** Adds UniqueId frame work node pair to the UniqueIdFWNodeMap.
+ For every received node that is in a library nodes and not immediately imported into th max scene graph
+ this method should be called. This is required for instance node handling of nodes in a library nodes.*/
+ void addUniqueIdFWNodePair( const COLLADAFW::UniqueId& uniqueId, const COLLADAFW::Node* node );
+
/** Adds @a libraryNodes to the list of library nodes.*/
void addLibraryNodes( const COLLADAFW::LibraryNodes* libraryNodes );
@@ -111,6 +122,11 @@
@a object not been added using addObjectINodeUniqueIdPair, an invalid unique id is returned.*/
const COLLADAFW::UniqueId& getUniqueIdByObjectINode( INode* object );
+ /** Returns the frame work node with unique id @a uniqueId, if this node is in an already
+ received library nodes, null otherwise.*/
+ const COLLADAFW::Node* getFWNodeByUniqueId( const COLLADAFW::UniqueId& uniqueId );
+
+
private:
/** Disable default copy ctor. */
Modified: branches/nextgen/COLLADAMax/src/COLLADAMaxColladaImporter.cpp
===================================================================
--- branches/nextgen/COLLADAMax/src/COLLADAMaxColladaImporter.cpp 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADAMax/src/COLLADAMaxColladaImporter.cpp 2009-01-26 16:50:25 UTC (rev 324)
@@ -1,3 +1,20 @@
+/*
+Copyright (c) 2008 NetAllied Systems GmbH
+
+This file is part of COLLADAMax.
+
+Portions of the code are:
+Copyright (c) 2005-2007 Feeling Software Inc.
+Copyright (c) 2005-2007 Sony Computer Entertainment America
+
+Based on the 3dsMax COLLADASW Tools:
+Copyright (c) 2005-2006 Autodesk Media Entertainment
+
+Licensed under the MIT Open Source License,
+for details please see LICENSE file or the website
+http://www.opensource.org/licenses/mit-license.php
+*/
+
#include "COLLADAMaxStableHeaders.h"
#include "COLLADAMaxColladaImporter.h"
#include "COLLADAMaxColladaPlugin.h"
Modified: branches/nextgen/COLLADAMax/src/COLLADAMaxImporterBase.cpp
===================================================================
--- branches/nextgen/COLLADAMax/src/COLLADAMaxImporterBase.cpp 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADAMax/src/COLLADAMaxImporterBase.cpp 2009-01-26 16:50:25 UTC (rev 324)
@@ -66,6 +66,24 @@
}
//------------------------------
+ void ImporterBase::removeUniqueIdReferencingImpNodePair( const COLLADAFW::UniqueId& uniqueId, ImpNode* node )
+ {
+ DocumentImporter::UniqueIdImpNodeMultiMap& uniqueIdReferencingImpNodeMap = mDocumentImporter->getUniqueIdReferencingImpNodeMap();
+
+ DocumentImporter::UniqueIdImpNodeMultiMap::iterator rangeBegin = uniqueIdReferencingImpNodeMap.lower_bound(uniqueId);
+ DocumentImporter::UniqueIdImpNodeMultiMap::iterator rangeEnd = uniqueIdReferencingImpNodeMap.upper_bound(uniqueId);
+
+ for (DocumentImporter::UniqueIdImpNodeMultiMap::iterator it = rangeBegin; it != rangeEnd; ++it)
+ {
+ if ( it->second == node )
+ {
+ uniqueIdReferencingImpNodeMap.erase(it);
+ break;
+ }
+ }
+ }
+
+ //------------------------------
void ImporterBase::getObjectINodesByUniqueId( const COLLADAFW::UniqueId& uniqueId, COLLADAMax::INodeList& nodelist )
{
const DocumentImporter::UniqueIdINodeMultiMap& uniqueIdINodeMap = mDocumentImporter->getUniqueIdObjectINodeMap();
@@ -77,19 +95,19 @@
nodelist.push_back(it->second);
}
-
//------------------------------
- void ImporterBase::getReferencingImpNodesByUniqueId( const COLLADAFW::UniqueId& uniqueId, ImpNodeList& nodelist )
+ ImpNode* ImporterBase::getReferencingImpNodesByUniqueId( const COLLADAFW::UniqueId& uniqueId )
{
- const DocumentImporter::UniqueIdImpNodeMultiMap& uniqueIdINodeMap = mDocumentImporter->getUniqueIdReferencingImpNodeMap();
+ const DocumentImporter::UniqueIdImpNodeMultiMap& uniqueIdReferencingImpNodeMap = mDocumentImporter->getUniqueIdReferencingImpNodeMap();
- DocumentImporter::UniqueIdImpNodeMultiMap::const_iterator rangeBegin = uniqueIdINodeMap.lower_bound(uniqueId);
- DocumentImporter::UniqueIdImpNodeMultiMap::const_iterator rangeEnd = uniqueIdINodeMap.upper_bound(uniqueId);
-
- for (DocumentImporter::UniqueIdImpNodeMultiMap::const_iterator it = rangeBegin; it != rangeEnd; ++it)
- nodelist.push_back(it->second);
+ DocumentImporter::UniqueIdImpNodeMultiMap::const_iterator it = uniqueIdReferencingImpNodeMap.find(uniqueId);
+ if ( it == uniqueIdReferencingImpNodeMap.end() )
+ return 0;
+ else
+ return it->second;
}
+
//------------------------------
void ImporterBase::addUniqueIdObjectPair( const COLLADAFW::UniqueId& uniqueId, Object* object )
{
@@ -110,6 +128,12 @@
}
//------------------------------
+ void ImporterBase::addUniqueIdFWNodePair( const COLLADAFW::UniqueId& uniqueId, const COLLADAFW::Node* node )
+ {
+ mDocumentImporter->getUniqueIdFWNodeMap()[uniqueId] = node;
+ }
+
+ //------------------------------
void ImporterBase::addLibraryNodes( const COLLADAFW::LibraryNodes* libraryNodes )
{
mDocumentImporter->getLibraryNodesList().push_back(libraryNodes);
@@ -149,4 +173,16 @@
}
+ //------------------------------
+ const COLLADAFW::Node* ImporterBase::getFWNodeByUniqueId( const COLLADAFW::UniqueId& uniqueId )
+ {
+ const DocumentImporter::UniqueIdFWNodeMap& uniqueIdFWNodeMap = mDocumentImporter->getUniqueIdFWNodeMap();
+ DocumentImporter::UniqueIdFWNodeMap::const_iterator it = uniqueIdFWNodeMap.find(uniqueId);
+ if ( it == uniqueIdFWNodeMap.end() )
+ return 0;
+ else
+ return it->second;
+ }
+
+
} // namespace COLLADAMax
Modified: branches/nextgen/COLLADAMax/src/COLLADAMaxLibraryNodesImporter.cpp
===================================================================
--- branches/nextgen/COLLADAMax/src/COLLADAMaxLibraryNodesImporter.cpp 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADAMax/src/COLLADAMaxLibraryNodesImporter.cpp 2009-01-26 16:50:25 UTC (rev 324)
@@ -29,9 +29,9 @@
//------------------------------
LibraryNodesImporter::LibraryNodesImporter( DocumentImporter* documentImporter, const COLLADAFW::LibraryNodes* libraryNodes )
: NodeImporter(documentImporter)
- , mLibraryNodes(libraryNodes)
+ , mLibraryNodes( new COLLADAFW::LibraryNodes( *libraryNodes) )
{
-
+ addLibraryNodes( mLibraryNodes );
}
//------------------------------
@@ -44,25 +44,36 @@
{
const COLLADAFW::NodePointerArray& libraryRootNodes = mLibraryNodes->getNodes();
for ( size_t i = 0, count = libraryRootNodes.getCount(); i < count; ++i)
+ {
if ( !importLibraryNode( libraryRootNodes[i] ) )
return false;
+ }
return true;
}
+ //------------------------------
bool LibraryNodesImporter::importLibraryNode( const COLLADAFW::Node* node )
{
- ImpNodeList importNodeList;
- getReferencingImpNodesByUniqueId( node->getUniqueId(), importNodeList );
- if ( importNodeList.empty() )
+ const COLLADAFW::UniqueId& nodeUniqueId = node->getUniqueId();
+ ImpNode* referencingImpNode = getReferencingImpNodesByUniqueId(nodeUniqueId);
+ if ( !referencingImpNode )
{
-
+ addUniqueIdFWNodePair( nodeUniqueId, node );
+ const COLLADAFW::NodePointerArray& childNodes = node->getChildNodes();
+ for ( size_t i = 0, count = childNodes.getCount(); i < count; ++i)
+ if ( !importLibraryNode( childNodes[i] ) )
+ return false;
}
else
{
- for ( ImpNodeList::const_iterator it = importNodeList.begin(); it != importNodeList.end(); ++it)
- if ( !importNode( node, *it ) )
+ while ( referencingImpNode )
+ {
+ removeUniqueIdReferencingImpNodePair( nodeUniqueId, referencingImpNode);
+ if ( !importNode( node, referencingImpNode ) )
return false;
+ referencingImpNode = getReferencingImpNodesByUniqueId(nodeUniqueId);
+ }
}
return true;
Modified: branches/nextgen/COLLADAMax/src/COLLADAMaxNodeImporter.cpp
===================================================================
--- branches/nextgen/COLLADAMax/src/COLLADAMaxNodeImporter.cpp 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADAMax/src/COLLADAMaxNodeImporter.cpp 2009-01-26 16:50:25 UTC (rev 324)
@@ -77,6 +77,7 @@
{
bool singleGeometryInstance = node->getInstanceGeometries().getCount() == 1;
ImpNode* newImportNode = 0;
+ const COLLADAFW::UniqueId& nodeUniqueId = node->getUniqueId();
if ( !singleGeometryInstance )
{
@@ -100,7 +101,7 @@
importInstanceNodes(node->getInstanceNodes(), newImportNode);
/** Store the unique id of the created node, to resolve references, when ever necessary.*/
- addUniqueIdINodePair(node->getUniqueId(), newImportNode->GetINode());
+ addUniqueIdINodePair( nodeUniqueId, newImportNode->GetINode());
INode* childNode = newImportNode->GetINode();
INode* parentNode = parentImportNode->GetINode();
@@ -108,12 +109,13 @@
/* if there are nodes that reference the just created node, clone this node
and append it to the referencing node.*/
- ImpNodeList referencingImpNodeList;
- getReferencingImpNodesByUniqueId(node->getUniqueId(), referencingImpNodeList);
- for ( size_t i = 0, count = referencingImpNodeList.size(); i<count; ++i)
- recursivlyCloneINode( referencingImpNodeList[i], newImportNode->GetINode() );
+ ImpNode* referencingImpNode = 0;
+ while ( referencingImpNode = getReferencingImpNodesByUniqueId(nodeUniqueId) )
+ {
+ removeUniqueIdReferencingImpNodePair( nodeUniqueId, referencingImpNode);
+ recursivlyCloneINode( referencingImpNode, newImportNode->GetINode() );
+ }
-
return newImportNode;
}
@@ -183,13 +185,14 @@
}
const COLLADAFW::UniqueId& instanceGeometryUniqueId = instanceGeometry->getInstanciatedObjectId();
- // Store mapping between unique ids and nodes referencing the coresponing object.
+ // Store mapping between unique ids and nodes referencing the corresponding object.
// Used to clone nodes
addObjectINodeUniqueIdPair(newNode, instanceGeometryUniqueId);
// Used to resolve instancing of objects
addUniqueIdObjectINodePair(instanceGeometryUniqueId, newNode);
INode* parentNode = parentImportNode->GetINode();
parentNode->AttachChild(newNode, FALSE);
+
return newImportNode;
}
@@ -204,6 +207,7 @@
const COLLADAFW::UniqueId& uniqueId = instanceNode->getInstanciatedObjectId();
INode* instanciatedINode = getINodeByUniqueId(uniqueId);
+ // check if the referenced node is already in the max scene graph
if ( instanciatedINode )
{
if ( !recursivlyCloneINode(parentImportNode, instanciatedINode) )
@@ -211,9 +215,18 @@
}
else
{
- // If the referenced node has not been imported, store which node is referenced
- // to clone the nodes as the referenced nodes gets imported
- addUniqueIdReferencingImpNodePair(instanceNode->getInstanciatedObjectId(), parentImportNode );
+ const COLLADAFW::Node* instanciatedFWNode = getFWNodeByUniqueId( uniqueId );
+ // check if the referenced node is in one of the already received library nodes
+ if ( instanciatedFWNode )
+ {
+ importNode( instanciatedFWNode, parentImportNode );
+ }
+ else
+ {
+ // If the referenced node has not been imported, store which node is referenced
+ // to clone the nodes as the referenced nodes gets imported
+ addUniqueIdReferencingImpNodePair(instanceNode->getInstanciatedObjectId(), parentImportNode );
+ }
}
}
Modified: branches/nextgen/COLLADASaxFrameworkLoader/include/COLLADASaxFWLMeshLoader.h
===================================================================
--- branches/nextgen/COLLADASaxFrameworkLoader/include/COLLADASaxFWLMeshLoader.h 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADASaxFrameworkLoader/include/COLLADASaxFWLMeshLoader.h 2009-01-26 16:50:25 UTC (rev 324)
@@ -92,22 +92,18 @@
using the values above. (for collada polygons).*/
size_t mCurrentFaceCount;
- /**
- * Geometric primitives, which assemble values from the inputs into vertex attribute data.
- * Can be any combination of the following in any order:
- * <lines>, <linestrips>, <polygons>, <polylist>, <triangles>, <trifans>, and <tristrips>
- */
- //PolyBaseArray mPolyBaseElements;
-
-
// Variables for the offsets of the index input elements.
unsigned long long mPositionsOffset;
+ unsigned int mPositionsIndexOffset;
bool mUsePositions;
unsigned long long mNormalsOffset;
+ unsigned int mNormalsIndexOffset;
bool mUseNormals;
unsigned long long mColorsOffset;
+ unsigned int mColorsIndexOffset;
bool mUseColors;
unsigned long long mUVCoordsOffset;
+ unsigned int mUVCoordsIndexOffset;
bool mUseUVCoords;
public:
Modified: branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLMeshLoader.cpp
===================================================================
--- branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLMeshLoader.cpp 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLMeshLoader.cpp 2009-01-26 16:50:25 UTC (rev 324)
@@ -39,12 +39,16 @@
, mCurrentExpectedVertexCount(0)
, mCurrentFaceCount(0)
, mPositionsOffset (0)
+ , mPositionsIndexOffset(0)
, mUsePositions ( true )
, mNormalsOffset (0)
+ , mNormalsIndexOffset(0)
, mUseNormals ( false )
, mColorsOffset (0)
+ , mColorsIndexOffset(0)
, mUseColors (false)
, mUVCoordsOffset (0)
+ , mUVCoordsIndexOffset(0)
, mUseUVCoords ( false )
{
mMesh->setName(geometryName);
@@ -452,22 +456,22 @@
if ( mUsePositions && mCurrentOffset == mPositionsOffset )
{
COLLADAFW::UIntValuesArray& positionIndices = mCurrentMeshPrimitive->getPositionIndices ();
- positionIndices.append ( index );
+ positionIndices.append ( index + mPositionsIndexOffset );
}
if ( mUseNormals && mCurrentOffset == mNormalsOffset )
{
COLLADAFW::UIntValuesArray& normalIndices = mCurrentMeshPrimitive->getNormalIndices ();
- normalIndices.append ( index );
+ normalIndices.append ( index + mNormalsIndexOffset );
}
if ( mUseColors && mCurrentOffset == mColorsOffset )
{
COLLADAFW::UIntValuesArray& colorIndices = mCurrentMeshPrimitive->getColorIndices ();
- colorIndices.append ( index );
+ colorIndices.append ( index + mColorsIndexOffset );
}
if ( mUseUVCoords && mCurrentOffset == mUVCoordsOffset )
{
COLLADAFW::UIntValuesArray& uvCoordIndices = mCurrentMeshPrimitive->getUVCoordIndices ();
- uvCoordIndices.append ( index );
+ uvCoordIndices.append ( index + mUVCoordsIndexOffset );
}
// Reset the offset if we went through all offset values
@@ -590,6 +594,7 @@
// TODO error handling!
return false;
}
+ mPositionsIndexOffset = (unsigned int)sourceBase->getInitialIndex();
// Check for using normals
const InputShared* normalInput = mMeshPrimitiveInputs.getNormalInput ();
@@ -598,8 +603,24 @@
// Get the offset value, the initial index values and alloc the memory.
mNormalsOffset = normalInput->getOffset ();
sourceBase = getSourceById ( normalInput->getSource ().getFragment () );
- mUseNormals = true;
+ unsigned long long stride = sourceBase->getStride();
+ // only stride 3 makes sense for normals
+ if ( stride == 3 )
+ {
+ mNormalsIndexOffset = (unsigned int)(sourceBase->getInitialIndex() / stride);
+ mUseNormals = true;
+ }
+ else
+ {
+ mNormalsIndexOffset = 0;
+ mUseNormals = false;
+ }
}
+ else
+ {
+ mNormalsIndexOffset = 0;
+ mUseNormals = false;
+ }
// Check for using colors
const InputShared* colorInput = mMeshPrimitiveInputs.getColorInput ();
@@ -607,8 +628,26 @@
{
// Get the offset value and alloc the memory.
mColorsOffset = colorInput->getOffset ();
- mUseColors = true;
+ sourceBase = getSourceById ( colorInput->getSource ().getFragment () );
+ unsigned long long stride = sourceBase->getStride();
+ // only stride 3 or 4 makes sense for colors
+ if ( (stride == 3) || (stride == 4) )
+ {
+ mColorsIndexOffset = (unsigned int)(sourceBase->getInitialIndex()/stride );
+ mUseColors = true;
+ }
+ else
+ {
+ mColorsIndexOffset = 0;
+ mUseColors = false;
+ }
+
}
+ else
+ {
+ mColorsIndexOffset = 0;
+ mUseColors = false;
+ }
// Check for using uv coordinates
const InputShared* uVCoordInput = mMeshPrimitiveInputs.getUVCoordInput ();
@@ -616,8 +655,25 @@
{
// Get the offset value and alloc the memory.
mUVCoordsOffset = uVCoordInput->getOffset ();
- mUseUVCoords = true;
+ sourceBase = getSourceById ( uVCoordInput->getSource ().getFragment () );
+ unsigned long long stride = sourceBase->getStride();
+ // only stride 1, 2, 3 or 4 makes sense for uv coords
+ if ( (stride >= 1) || (stride <= 4) )
+ {
+ mUVCoordsIndexOffset = (unsigned int)(sourceBase->getInitialIndex()/stride);
+ mUseUVCoords = true;
+ }
+ else
+ {
+ mUVCoordsIndexOffset = 0;
+ mUseUVCoords = false;
+ }
}
+ else
+ {
+ mUVCoordsIndexOffset = 0;
+ mUseUVCoords = false;
+ }
return true;
}
@@ -956,13 +1012,13 @@
bool MeshLoader::end__polylist__input()
{
loadSourceElements(mMeshPrimitiveInputs);
- initializeOffsets();
return true;
}
//------------------------------
bool MeshLoader::begin__polylist__vcount()
{
+ initializeOffsets();
return true;
}
Modified: branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLNodeLoader.cpp
===================================================================
--- branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLNodeLoader.cpp 2009-01-26 09:17:28 UTC (rev 323)
+++ branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLNodeLoader.cpp 2009-01-26 16:50:25 UTC (rev 324)
@@ -50,6 +50,8 @@
if ( attributeData.name )
newNode->setName((const char*)attributeData.name);
+ else if ( attributeData.id )
+ newNode->setName((const char*)attributeData.id);
if ( mNodeStack.empty() )
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jud...@us...> - 2009-01-26 09:17:38
|
Revision: 323
http://colladamaya.svn.sourceforge.net/colladamaya/?rev=323&view=rev
Author: judithschenk
Date: 2009-01-26 09:17:28 +0000 (Mon, 26 Jan 2009)
Log Message:
-----------
Plug-in api version, plug-in version
Modified Paths:
--------------
branches/nextgen/COLLADAMaya/COLLADAMaya.sln
branches/nextgen/COLLADAMaya/include/COLLADAMayaDocumentImporter.h
branches/nextgen/COLLADAMaya/include/COLLADAMayaGeometryImporter.h
branches/nextgen/COLLADAMaya/include/COLLADAMayaSyntax.h
branches/nextgen/COLLADAMaya/include/COLLADAMayaVisualSceneImporter.h
branches/nextgen/COLLADAMaya/scripts/COLLADAMaya.vcproj
branches/nextgen/COLLADAMaya/src/COLLADAMayaDocumentImporter.cpp
branches/nextgen/COLLADAMaya/src/COLLADAMayaFileTranslator.cpp
branches/nextgen/COLLADAMaya/src/COLLADAMayaGeometryImporter.cpp
Modified: branches/nextgen/COLLADAMaya/COLLADAMaya.sln
===================================================================
--- branches/nextgen/COLLADAMaya/COLLADAMaya.sln 2009-01-26 09:10:45 UTC (rev 322)
+++ branches/nextgen/COLLADAMaya/COLLADAMaya.sln 2009-01-26 09:17:28 UTC (rev 323)
@@ -3,15 +3,18 @@
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "COLLADAMaya", "scripts\COLLADAMaya.vcproj", "{60331F1F-2334-42AF-80A8-A4A6E3299186}"
ProjectSection(ProjectDependencies) = postProject
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF} = {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39} = {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}
+ {EAB66F01-60B5-43C9-B78D-A8B0B545A20B} = {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A} = {8628A8F8-BD50-4463-9EE7-F9118CBA194A}
+ {D7F466F4-2AEA-4648-BE09-024C887BC157} = {D7F466F4-2AEA-4648-BE09-024C887BC157}
{2C3C4869-D684-4981-98E7-6D9798B72145} = {2C3C4869-D684-4981-98E7-6D9798B72145}
- {D7F466F4-2AEA-4648-BE09-024C887BC157} = {D7F466F4-2AEA-4648-BE09-024C887BC157}
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A} = {8628A8F8-BD50-4463-9EE7-F9118CBA194A}
- {EAB66F01-60B5-43C9-B78D-A8B0B545A20B} = {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39} = {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF} = {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "COLLADAStreamWriter", "..\COLLADAStreamWriter\scripts\COLLADAStreamWriter.vcproj", "{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}"
+ ProjectSection(ProjectDependencies) = postProject
+ {2C3C4869-D684-4981-98E7-6D9798B72145} = {2C3C4869-D684-4981-98E7-6D9798B72145}
+ EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "COLLADABaseUtils", "..\COLLADABaseUtils\scripts\COLLADABaseUtils.vcproj", "{2C3C4869-D684-4981-98E7-6D9798B72145}"
EndProject
@@ -22,12 +25,15 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "COLLADASaxFrameworkLoader", "..\COLLADASaxFrameworkLoader\scripts\COLLADASaxFrameworkLoader.vcproj", "{8628A8F8-BD50-4463-9EE7-F9118CBA194A}"
ProjectSection(ProjectDependencies) = postProject
+ {2C3C4869-D684-4981-98E7-6D9798B72145} = {2C3C4869-D684-4981-98E7-6D9798B72145}
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF} = {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39} = {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF} = {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}
- {2C3C4869-D684-4981-98E7-6D9798B72145} = {2C3C4869-D684-4981-98E7-6D9798B72145}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GeneratedSaxParser", "..\GeneratedSaxParser\scripts\GeneratedSaxParser.vcproj", "{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}"
+ ProjectSection(ProjectDependencies) = postProject
+ {D7F466F4-2AEA-4648-BE09-024C887BC157} = {D7F466F4-2AEA-4648-BE09-024C887BC157}
+ EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibXML", "..\Externals\LibXML\scripts\LibXML.vcproj", "{D7F466F4-2AEA-4648-BE09-024C887BC157}"
EndProject
Modified: branches/nextgen/COLLADAMaya/include/COLLADAMayaDocumentImporter.h
===================================================================
--- branches/nextgen/COLLADAMaya/include/COLLADAMayaDocumentImporter.h 2009-01-26 09:10:45 UTC (rev 322)
+++ branches/nextgen/COLLADAMaya/include/COLLADAMayaDocumentImporter.h 2009-01-26 09:17:28 UTC (rev 323)
@@ -114,6 +114,14 @@
@return The writer should return true, if writing succeeded, false otherwise.*/
virtual bool writeGeometry ( const COLLADAFW::Geometry* geometry );
+ /** When this method is called, the writer must handle all nodes contained in the
+ library nodes.
+ @return The writer should return true, if writing succeeded, false otherwise.*/
+ virtual bool writeLibraryNodes ( const COLLADAFW::LibraryNodes* libraryNodes )
+ {
+ return false;
+ }
+
private:
/** Imports the asset. */
Modified: branches/nextgen/COLLADAMaya/include/COLLADAMayaGeometryImporter.h
===================================================================
--- branches/nextgen/COLLADAMaya/include/COLLADAMayaGeometryImporter.h 2009-01-26 09:10:45 UTC (rev 322)
+++ branches/nextgen/COLLADAMaya/include/COLLADAMayaGeometryImporter.h 2009-01-26 09:17:28 UTC (rev 323)
@@ -70,6 +70,11 @@
*/
bool importMesh ( const COLLADAFW::Mesh* mesh );
+ /**
+ * Writes the geometry of the current mesh.
+ */
+ bool createMesh ( const COLLADAFW::Mesh* mesh, const String& parentNodeName );
+
/*
* Write the face informations into the maya file.
*/
@@ -82,6 +87,7 @@
* Write the face values of the given primitive element into the maya file.
*/
bool appendPolyFaces (
+ const COLLADAFW::Mesh* mesh,
const COLLADAFW::MeshPrimitive* primitiveElement,
const std::map<COLLADAFW::Edge,size_t>& edgeIndicesMap,
MayaDM::Mesh &meshNode );
@@ -107,7 +113,8 @@
* Returns a class which stores the x, y and z values of the vertex point
* at the given index position.
*/
- COLLADABU::Math::Vector3* getVertexPosition ( size_t vertexIndex );
+ COLLADABU::Math::Vector3* getVertexPosition (
+ const COLLADAFW::Mesh* mesh, const size_t vertexIndex );
/*
* Write the edges into the maya file.
Modified: branches/nextgen/COLLADAMaya/include/COLLADAMayaSyntax.h
===================================================================
--- branches/nextgen/COLLADAMaya/include/COLLADAMayaSyntax.h 2009-01-26 09:10:45 UTC (rev 322)
+++ branches/nextgen/COLLADAMaya/include/COLLADAMayaSyntax.h 2009-01-26 09:17:28 UTC (rev 323)
@@ -42,8 +42,7 @@
// COLLADA NetAllied Systems
static const char* TRANSLATOR_VENDOR = "NetAllied Systems GmbH";
- static const char* TRANSLATOR_VERSION = "0.8.0";
- static const char* TRANSLATOR_MAYA_API_VERSION = "2008";
+ static const char* TRANSLATOR_VERSION = "0.8.2";
static const char* USERNAME = "USERNAME";
static const char* USER = "USER";
Modified: branches/nextgen/COLLADAMaya/include/COLLADAMayaVisualSceneImporter.h
===================================================================
--- branches/nextgen/COLLADAMaya/include/COLLADAMayaVisualSceneImporter.h 2009-01-26 09:10:45 UTC (rev 322)
+++ branches/nextgen/COLLADAMaya/include/COLLADAMayaVisualSceneImporter.h 2009-01-26 09:17:28 UTC (rev 323)
@@ -127,13 +127,18 @@
*/
UniqueIdUniqueIdsMap& getGeometryNodesMap() { return mGeometryNodesMap; }
- /*
+ /**
* Save the transformation ids to the geometry ids.
*/
bool readGeometryInstances (
- MayaDM::Transform* transformNode,
- const COLLADAFW::Node* node );
+ const COLLADAFW::Node* node,
+ MayaDM::Transform* transformNode );
+ /**
+ * Handle the node instances.
+ */
+ bool readNodeInstances ( const COLLADAFW::Node* node );
+
/*
* Transform the input matrix and convert it in a double[4][4] matrix.
*/
@@ -145,8 +150,8 @@
* Imports the current transformations.
*/
bool importTransformations (
- MayaDM::Transform* transformNode,
- const COLLADAFW::Node* rootNode );
+ const COLLADAFW::Node* rootNode,
+ MayaDM::Transform* transformNode );
/**
* Returns true, if the transform values from the framework is conform to the maya
Modified: branches/nextgen/COLLADAMaya/scripts/COLLADAMaya.vcproj
===================================================================
--- branches/nextgen/COLLADAMaya/scripts/COLLADAMaya.vcproj 2009-01-26 09:10:45 UTC (rev 322)
+++ branches/nextgen/COLLADAMaya/scripts/COLLADAMaya.vcproj 2009-01-26 09:17:28 UTC (rev 323)
@@ -549,7 +549,7 @@
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories="..\include;"$(MAYA_PATH2008)\include";"$(MAYA_PATH2008)\devkit\plug-ins";"$(BOOST_ROOT)";..\..\COLLADABaseUtils\include;..\..\COLLADAStreamWriter\include;..\..\Externals\Cg\include;..\..\COLLADASaxFrameworkLoader\include;..\..\COLLADAFramework\include;..\..\Externals\MayaDataModel\include;..\..\GeneratedSaxParser\include;..\..\Externals\LibXML\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_AFXDLL;_MBCS;NT_PLUGIN;REQUIRE_IOSTREAM;CM_EXPORTS;GLUT_NO_LIB_PRAGMA;GLUT_NO_WARNING_DISABLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;$(NOINHERIT)"
+ PreprocessorDefinitions="CREATE_IMPORT_PLUGIN;WIN32;NDEBUG;_WINDOWS;_AFXDLL;_MBCS;NT_PLUGIN;REQUIRE_IOSTREAM;CM_EXPORTS;GLUT_NO_LIB_PRAGMA;GLUT_NO_WARNING_DISABLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;$(NOINHERIT)"
RuntimeLibrary="2"
RuntimeTypeInfo="true"
UsePrecompiledHeader="1"
@@ -867,6 +867,7 @@
>
<Tool
Name="VCPreBuildEventTool"
+ CommandLine=""
/>
<Tool
Name="VCCustomBuildTool"
@@ -884,7 +885,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\include;"$(MAYA_PATH2009)\include";"$(MAYA_PATH2009)\devkit\plug-ins";"$(BOOST_ROOT)";..\..\COLLADABaseUtils\include;..\..\COLLADAStreamWriter\include;..\..\Externals\Cg\include;..\..\COLLADASaxFrameworkLoader\include;..\..\COLLADAFramework\include;..\..\Externals\MayaDataModel\include;..\..\GeneratedSaxParser\include;..\..\Externals\LibXML\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_AFXDLL;_MBCS;NT_PLUGIN;REQUIRE_IOSTREAM;CM_EXPORTS;GLUT_NO_LIB_PRAGMA;GLUT_NO_WARNING_DISABLE;_CRT_NONSTDC_NO_DEPRECATE;$(NOINHERIT)"
+ PreprocessorDefinitions="CREATE_IMPORT_PLUGIN;WIN32;_DEBUG;_WINDOWS;_AFXDLL;_MBCS;NT_PLUGIN;REQUIRE_IOSTREAM;CM_EXPORTS;GLUT_NO_LIB_PRAGMA;GLUT_NO_WARNING_DISABLE;_CRT_NONSTDC_NO_DEPRECATE;$(NOINHERIT)"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
RuntimeTypeInfo="true"
@@ -1054,7 +1055,7 @@
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\include;"$(MAYA_PATH2009)\include";"$(MAYA_PATH2009)\devkit\plug-ins";..\..\COLLADAStreamWriter\include;"$(BOOST_ROOT)";..\..\Externals\Cg\include;..\..\COLLADABaseUtils\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_AFXDLL;_MBCS;NT_PLUGIN;REQUIRE_IOSTREAM;CM_EXPORTS;GLUT_NO_LIB_PRAGMA;GLUT_NO_WARNING_DISABLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;$(NOINHERIT)"
+ PreprocessorDefinitions="CREATE_IMPORT_PLUGIN;WIN32;NDEBUG;_WINDOWS;_AFXDLL;_MBCS;NT_PLUGIN;REQUIRE_IOSTREAM;CM_EXPORTS;GLUT_NO_LIB_PRAGMA;GLUT_NO_WARNING_DISABLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;$(NOINHERIT)"
RuntimeLibrary="2"
EnableFunctionLevelLinking="false"
RuntimeTypeInfo="true"
@@ -2043,6 +2044,7 @@
>
<Tool
Name="VCPreBuildEventTool"
+ CommandLine=""
/>
<Tool
Name="VCCustomBuildTool"
@@ -2229,7 +2231,7 @@
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories="..\include;"$(MAYA_PATH2009)\include";"$(MAYA_PATH2009)\devkit\plug-ins";"$(BOOST_ROOT)";..\..\COLLADABaseUtils\include;..\..\COLLADAStreamWriter\include;..\..\Externals\Cg\include;..\..\COLLADASaxFrameworkLoader\include;..\..\COLLADAFramework\include;..\..\Externals\MayaDataModel\include;..\..\GeneratedSaxParser\include;..\..\Externals\LibXML\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_AFXDLL;_MBCS;NT_PLUGIN;REQUIRE_IOSTREAM;CM_EXPORTS;GLUT_NO_LIB_PRAGMA;GLUT_NO_WARNING_DISABLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;$(NOINHERIT)"
+ PreprocessorDefinitions="CREATE_IMPORT_PLUGIN;WIN32;NDEBUG;_WINDOWS;_AFXDLL;_MBCS;NT_PLUGIN;REQUIRE_IOSTREAM;CM_EXPORTS;GLUT_NO_LIB_PRAGMA;GLUT_NO_WARNING_DISABLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;$(NOINHERIT)"
RuntimeLibrary="2"
RuntimeTypeInfo="true"
UsePrecompiledHeader="1"
@@ -2729,13 +2731,6 @@
/>
</FileConfiguration>
<FileConfiguration
- Name="DebugPlugin2009|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
Name="DebugPlugin2009|x64"
ExcludedFromBuild="true"
>
@@ -2924,13 +2919,6 @@
/>
</FileConfiguration>
<FileConfiguration
- Name="DebugPlugin2009|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
Name="DebugPlugin2009|x64"
ExcludedFromBuild="true"
>
@@ -3747,13 +3735,6 @@
RelativePath="..\src\COLLADAMayaVisualSceneImporter.cpp"
>
<FileConfiguration
- Name="DebugPlugin2008|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
Name="DebugPlugin2008|x64"
ExcludedFromBuild="true"
>
@@ -3762,13 +3743,6 @@
/>
</FileConfiguration>
<FileConfiguration
- Name="ReleasePlugin2008|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
Name="ReleasePlugin2008|x64"
ExcludedFromBuild="true"
>
@@ -3817,13 +3791,6 @@
/>
</FileConfiguration>
<FileConfiguration
- Name="DebugPlugin2009|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
Name="DebugPlugin2009|x64"
ExcludedFromBuild="true"
>
Modified: branches/nextgen/COLLADAMaya/src/COLLADAMayaDocumentImporter.cpp
===================================================================
--- branches/nextgen/COLLADAMaya/src/COLLADAMayaDocumentImporter.cpp 2009-01-26 09:10:45 UTC (rev 322)
+++ branches/nextgen/COLLADAMaya/src/COLLADAMayaDocumentImporter.cpp 2009-01-26 09:17:28 UTC (rev 323)
@@ -220,7 +220,7 @@
{
readColladaDocument ();
}
-
+
return retValue;
}
Modified: branches/nextgen/COLLADAMaya/src/COLLADAMayaFileTranslator.cpp
===================================================================
--- branches/nextgen/COLLADAMaya/src/COLLADAMayaFileTranslator.cpp 2009-01-26 09:10:45 UTC (rev 322)
+++ branches/nextgen/COLLADAMaya/src/COLLADAMayaFileTranslator.cpp 2009-01-26 09:17:28 UTC (rev 323)
@@ -23,11 +23,6 @@
#ifdef CREATE_IMPORT_PLUGIN
#include "COLLADAMayaDocumentImporter.h"
#include "COLLADAMayaImportOptions.h"
-
-//#include "COLLADADHException.h"
-
-// #include <DAE.h>
-// #include <dom/domElements.h>
#endif
#include "COLLADASWException.h"
@@ -77,10 +72,15 @@
// current directory. This can be changed, however, by calling:
//MGlobal::setErrorLogPathName("...");
+ int apiVersion = MGlobal::apiVersion ();
+ MString mayaVersion = MGlobal::mayaVersion ();
+ std::ostringstream stream;
+ stream << apiVersion;
+
MFnPlugin plugin ( obj,
COLLADAMaya::TRANSLATOR_VENDOR,
COLLADAMaya::TRANSLATOR_VERSION,
- COLLADAMaya::TRANSLATOR_MAYA_API_VERSION );
+ stream.str ().c_str () );
// --------------------------------------------------------------
// Register the import and the export file translator plug-ins.
Modified: branches/nextgen/COLLADAMaya/src/COLLADAMayaGeometryImporter.cpp
===================================================================
--- branches/nextgen/COLLADAMaya/src/COLLADAMayaGeometryImporter.cpp 2009-01-26 09:10:45 UTC (rev 322)
+++ branches/nextgen/COLLADAMaya/src/COLLADAMayaGeometryImporter.cpp 2009-01-26 09:17:28 UTC (rev 323)
@@ -80,11 +80,7 @@
String id = mesh->getId ();
String name = mesh->getName ();
- // Get the current maya ascii file to write the data.
- FILE* file = getDocumentImporter ()->getFile ();
-
// Get the transform node of the current mesh.
-// MayaDM::Transform transformNode ( file, "pCube1", "" );
const DocumentImporter* documentImporter = getDocumentImporter ();
const VisualSceneImporter* visualSceneImporter = documentImporter->getVisualSceneImporter ();
const UniqueIdToUniqueIdsMap& geometryNodesMap = visualSceneImporter->getGeometryNodesMap ();
@@ -98,62 +94,41 @@
return false;
}
+ // Get all visual scene nodes, which use this geometry
const std::set<const COLLADAFW::UniqueId>& nodesSet = ( *it ).second;
size_t numNodes = nodesSet.size ();
-
- std::set<const COLLADAFW::UniqueId>::const_iterator it2 = nodesSet.begin ();
- const COLLADAFW::UniqueId& nodeId = *it2;
-
- const UniqueIdNamesMap& nodeNamesMap = visualSceneImporter->getNodeNamesMap ();
-// String nodeName = nodeNamesMap [ nodeId ];
- UniqueIdNamesMap::const_iterator it3 = nodeNamesMap.find ( nodeId );
- if ( it3 == nodeNamesMap.end () )
+ std::set<const COLLADAFW::UniqueId>::const_iterator nodesIter = nodesSet.begin ();
+ while ( nodesIter != nodesSet.end () )
{
- std::cerr << "No name for the transform node!" << endl;
- assert ( "No name for the transform node!" );
- return false;
- }
- String nodeName = (*it3).second;
+ const COLLADAFW::UniqueId& nodeId = *nodesIter;
+
+ // Get the name of the current node.
+ const UniqueIdNamesMap& nodeNamesMap = visualSceneImporter->getNodeNamesMap ();
+// String nodeName = nodeNamesMap [ nodeId ];
+ UniqueIdNamesMap::const_iterator it3 = nodeNamesMap.find ( nodeId );
+ if ( it3 == nodeNamesMap.end () )
+ {
+ std::cerr << "No name for the transform node!" << endl;
+ assert ( "No name for the transform node!" );
+ return false;
+ }
+ String parentNodeName = (*it3).second;
- // Create the current mesh node.
- MayaDM::Mesh meshNode ( file, mesh->getName (), nodeName );
-
- // Write the vertex positions.
- // Just write the values, they will be referenced from the edges and the faces.
- if ( !writeVertexPositions ( mesh, meshNode ) ) return false;
+ // The first reference is a direct one, the others are instances.
+ if ( nodesIter == nodesSet.begin() )
+ {
+ // Create the current mesh node.
+ createMesh ( mesh, parentNodeName );
+ }
+ else
+ {
+// parent -shape -noConnections -relative -addObject "|pCube1|pCubeShape1" "pCube2";
+ // TODO
+// MayaDM::Parent parent;
- // Write the normals.
- if ( !writeNormals ( mesh, meshNode ) ) return false;
-
- // Write the uv corrdinates.
- writeUVCoords ( mesh, meshNode );
-
- // The vector of edge indices. We use it to write the list of edges into
- // the maya file. The vector is already sorted.
- std::vector<COLLADAFW::Edge> edgeIndices;
-
- // We store the edge indices also in a sorted map. The dublicate data holding
- // is reasonable, because we need the index of a given edge. The search of
- // values in a map is much faster than in a vector!
- std::map<COLLADAFW::Edge,size_t> edgeIndicesMap;
-
- // Implementation for multiple primitive elements.
- const COLLADAFW::MeshPrimitiveArray& primitiveElementsArray = mesh->getMeshPrimitives ();
- size_t count = primitiveElementsArray.getCount ();
- for ( size_t i=0; i<count; ++i )
- {
- COLLADAFW::MeshPrimitive* primitiveElement = primitiveElementsArray [ i ];
-
- // Determine the edge indices (unique edges, also for multiple primitive elements).
- primitiveElement->appendEdgeIndices ( edgeIndices, edgeIndicesMap );
+ }
}
- // Write the edge indices of all primitive elements into the maya file.
- writeEdges ( edgeIndices, meshNode );
-
- // Write the face informations of all primitive elements into the maya file.
- writeFaces ( mesh, edgeIndicesMap, meshNode );
-
return true;
}
@@ -397,7 +372,7 @@
COLLADAFW::MeshPrimitive* primitiveElement = primitiveElementsArray [ i ];
// Write the face informations into the maya file.
- if ( !appendPolyFaces ( primitiveElement, edgeIndicesMap, meshNode ) ) return false;
+ if ( !appendPolyFaces ( mesh, primitiveElement, edgeIndicesMap, meshNode ) ) return false;
}
// End the face element.
@@ -408,6 +383,7 @@
// --------------------------------------------
bool GeometryImporter::appendPolyFaces (
+ const COLLADAFW::Mesh* mesh,
const COLLADAFW::MeshPrimitive* primitiveElement,
const std::map<COLLADAFW::Edge,size_t>& edgeIndicesMap,
MayaDM::Mesh &meshNode )
@@ -474,7 +450,7 @@
polygonPoints.clear ();
}
// Store the vertex positions of the current start point.
- polygonPoints.push_back ( getVertexPosition ( edgeStartVtxIndex ) );
+ polygonPoints.push_back ( getVertexPosition ( mesh, edgeStartVtxIndex ) );
}
// Variable for the current edge index.
@@ -531,7 +507,7 @@
if ( edgeIndex < 3 )
{
// Store the vertex positions of the current start point.
- holePoints.push_back ( getVertexPosition ( edgeStartVtxIndex ) );
+ holePoints.push_back ( getVertexPosition ( mesh, edgeStartVtxIndex ) );
}
// The current edge index.
@@ -581,10 +557,12 @@
}
// --------------------------------------------
- COLLADABU::Math::Vector3* GeometryImporter::getVertexPosition ( size_t vertexIndex )
+ COLLADABU::Math::Vector3* GeometryImporter::getVertexPosition (
+ const COLLADAFW::Mesh* mesh ,
+ const size_t vertexIndex )
{
// Get the points of the current edge.
- const COLLADAFW::MeshPositions& meshPositions = mMesh->getPositions ();
+ const COLLADAFW::MeshPositions& meshPositions = mesh->getPositions ();
// Get the vertex position values of the start position of the current edge.
double dx, dy, dz;
@@ -697,4 +675,55 @@
polyFace.h.edgeIdValue[edgeIndex] = valueVec[edgeIndex];
}
}
+
+ // --------------------------------------------
+ bool GeometryImporter::createMesh (
+ const COLLADAFW::Mesh* mesh,
+ const String& parentNodeName )
+ {
+ // Get the current maya ascii file to write the data.
+ FILE* file = getDocumentImporter ()->getFile ();
+
+ // Create the current mesh node.
+ MayaDM::Mesh meshNode ( file, mesh->getName (), parentNodeName );
+ meshNode.getInMesh ();
+
+ // Write the vertex positions.
+ // Just write the values, they will be referenced from the edges and the faces.
+ if ( !writeVertexPositions ( mesh, meshNode ) ) return false;
+
+ // Write the normals.
+ if ( !writeNormals ( mesh, meshNode ) ) return false;
+
+ // Write the uv corrdinates.
+ writeUVCoords ( mesh, meshNode );
+
+ // The vector of edge indices. We use it to write the list of edges into
+ // the maya file. The vector is already sorted.
+ std::vector<COLLADAFW::Edge> edgeIndices;
+
+ // We store the edge indices also in a sorted map. The dublicate data holding
+ // is reasonable, because we need the index of a given edge. The search of
+ // values in a map is much faster than in a vector!
+ std::map<COLLADAFW::Edge,size_t> edgeIndicesMap;
+
+ // Implementation for multiple primitive elements.
+ const COLLADAFW::MeshPrimitiveArray& primitiveElementsArray = mesh->getMeshPrimitives ();
+ size_t count = primitiveElementsArray.getCount ();
+ for ( size_t i=0; i<count; ++i )
+ {
+ COLLADAFW::MeshPrimitive* primitiveElement = primitiveElementsArray [ i ];
+
+ // Determine the edge indices (unique edges, also for multiple primitive elements).
+ primitiveElement->appendEdgeIndices ( edgeIndices, edgeIndicesMap );
+ }
+
+ // Write the edge indices of all primitive elements into the maya file.
+ writeEdges ( edgeIndices, meshNode );
+
+ // Write the face informations of all primitive elements into the maya file.
+ writeFaces ( mesh, edgeIndicesMap, meshNode );
+
+ return true;
+ }
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jud...@us...> - 2009-01-26 09:10:56
|
Revision: 322
http://colladamaya.svn.sourceforge.net/colladamaya/?rev=322&view=rev
Author: judithschenk
Date: 2009-01-26 09:10:45 +0000 (Mon, 26 Jan 2009)
Log Message:
-----------
shear implemented
Modified Paths:
--------------
branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneImporter.cpp
Modified: branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneImporter.cpp
===================================================================
--- branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneImporter.cpp 2009-01-26 09:02:41 UTC (rev 321)
+++ branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneImporter.cpp 2009-01-26 09:10:45 UTC (rev 322)
@@ -55,9 +55,6 @@
{
COLLADAFW::Node* rootNode = rootNodes [i];
importNode ( rootNode );
-
-// // Set the node visible
-// DagHelper::setPlugValue( transformObject, ATTR_VISIBILITY, true );
}
return true;
@@ -77,13 +74,13 @@
mNodeNamesMap [ node->getUniqueId () ] = nodeName;
// Import the tranformations
- importTransformations ( transformNode, node );
+ importTransformations ( node, transformNode );
// Import instance geometry
- readGeometryInstances ( transformNode, node );
+ readGeometryInstances ( node, transformNode );
// TODO
-// readNodeInstances ( )
+ readNodeInstances ( node );
// Recursive call for all child elements.
const COLLADAFW::NodeArray& childNodes = node->getChildNodes ();
@@ -96,9 +93,25 @@
}
// -----------------------------------
+ bool VisualSceneImporter::readNodeInstances ( const COLLADAFW::Node* node )
+ {
+ const COLLADAFW::InstanceNodeArray& nodeInstances = node->getInstanceNodes ();
+ size_t numInstances = nodeInstances.getCount ();
+ for ( size_t i=0; i<numInstances; ++i )
+ {
+ const COLLADAFW::InstanceNode* nodeInstance = nodeInstances [i];
+ const COLLADAFW::UniqueId& uniqueId = nodeInstance->getInstanciatedObjectId ();
+ String name = nodeInstance->getName ();
+
+ }
+
+ return true;
+ }
+
+ // -----------------------------------
bool VisualSceneImporter::readGeometryInstances (
- MayaDM::Transform* transformNode,
- const COLLADAFW::Node* node )
+ const COLLADAFW::Node* node,
+ MayaDM::Transform* transformNode )
{
bool singleGeometryInstance = node->getInstanceGeometries().getCount() == 1;
@@ -122,8 +135,8 @@
// -----------------------------------
bool VisualSceneImporter::importTransformations (
- MayaDM::Transform* transformNode,
- const COLLADAFW::Node* rootNode )
+ const COLLADAFW::Node* rootNode,
+ MayaDM::Transform* transformNode )
{
// This is the order of the transforms:
//
@@ -455,8 +468,8 @@
{
float s = tanf ( COLLADABU::Math::Utils::degToRadF ( skew->getAngle () ) );
- COLLADABU::Math::Vector3& rotateAxis = skew->getRotateAxis();
- COLLADABU::Math::Vector3& translateAxis = skew->getRotateAxis();
+ const COLLADABU::Math::Vector3& rotateAxis = skew->getRotateAxis();
+ const COLLADABU::Math::Vector3& translateAxis = skew->getRotateAxis();
for ( int row = 0; row < 3; ++row )
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <rob...@us...> - 2009-01-26 09:02:49
|
Revision: 321
http://colladamaya.svn.sourceforge.net/colladamaya/?rev=321&view=rev
Author: robertwuerfel
Date: 2009-01-26 09:02:41 +0000 (Mon, 26 Jan 2009)
Log Message:
-----------
Ability to copy framework scenegraph elements
Import of library nodes into max ( still incomplete )
Modified Paths:
--------------
branches/nextgen/COLLADAFramework/include/COLLADAFWGeometry.h
branches/nextgen/COLLADAFramework/include/COLLADAFWInstanceGeometry.h
branches/nextgen/COLLADAFramework/include/COLLADAFWInstanceNode.h
branches/nextgen/COLLADAFramework/include/COLLADAFWLibraryNodes.h
branches/nextgen/COLLADAFramework/include/COLLADAFWLookat.h
branches/nextgen/COLLADAFramework/include/COLLADAFWMatrix.h
branches/nextgen/COLLADAFramework/include/COLLADAFWNode.h
branches/nextgen/COLLADAFramework/include/COLLADAFWObject.h
branches/nextgen/COLLADAFramework/include/COLLADAFWRotate.h
branches/nextgen/COLLADAFramework/include/COLLADAFWScale.h
branches/nextgen/COLLADAFramework/include/COLLADAFWSceneGraphInstance.h
branches/nextgen/COLLADAFramework/include/COLLADAFWSkew.h
branches/nextgen/COLLADAFramework/include/COLLADAFWTransformation.h
branches/nextgen/COLLADAFramework/include/COLLADAFWTranslate.h
branches/nextgen/COLLADAFramework/include/COLLADAFWVisualScene.h
branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj
branches/nextgen/COLLADAFramework/src/COLLADAFWNode.cpp
branches/nextgen/COLLADAFramework/src/COLLADAFWVisualScene.cpp
branches/nextgen/COLLADAMax/include/COLLADAMaxDocumentImporter.h
branches/nextgen/COLLADAMax/include/COLLADAMaxGeometryImporter.h
branches/nextgen/COLLADAMax/include/COLLADAMaxImporterBase.h
branches/nextgen/COLLADAMax/include/COLLADAMaxTypes.h
branches/nextgen/COLLADAMax/include/COLLADAMaxVisualSceneImporter.h
branches/nextgen/COLLADAMax/scripts/COLLADAMax.vcproj
branches/nextgen/COLLADAMax/src/COLLADAMaxDocumentImporter.cpp
branches/nextgen/COLLADAMax/src/COLLADAMaxImporterBase.cpp
branches/nextgen/COLLADAMax/src/COLLADAMaxVisualSceneImporter.cpp
Added Paths:
-----------
branches/nextgen/COLLADAFramework/include/COLLADAFWPointerArray.h
branches/nextgen/COLLADAMax/include/COLLADAMaxLibraryNodesImporter.h
branches/nextgen/COLLADAMax/include/COLLADAMaxNodeImporter.h
branches/nextgen/COLLADAMax/src/COLLADAMaxLibraryNodesImporter.cpp
branches/nextgen/COLLADAMax/src/COLLADAMaxNodeImporter.cpp
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWGeometry.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWGeometry.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWGeometry.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -88,7 +88,9 @@
/** Type of the geometric element. */
void setType ( const GeometryType Type ) { mType = Type; }
+ Geometry* clone() const { return new Geometry(*this); }
+
private:
/** Disable default copy ctor. */
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWInstanceGeometry.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWInstanceGeometry.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWInstanceGeometry.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -12,7 +12,7 @@
#define __COLLADAFW_INSTANCEGEOMETRY_H__
#include "COLLADAFWPrerequisites.h"
-#include "COLLADAFWArrayPrimitiveType.h"
+#include "COLLADAFWPointerArray.h"
#include "COLLADAFWUniqueId.h"
#include "COLLADAFWSceneGraphInstance.h"
@@ -33,14 +33,18 @@
virtual ~InstanceGeometry();
+ /** Clones the matrix.*/
+ InstanceGeometry* clone() const { return new InstanceGeometry(*this); }
+
private:
/** Disable default copy ctor. */
- InstanceGeometry( const InstanceGeometry& pre );
+// InstanceGeometry( const InstanceGeometry& pre );
/** Disable default assignment operator. */
- const InstanceGeometry& operator= ( const InstanceGeometry& pre );
+// const InstanceGeometry& operator= ( const InstanceGeometry& pre );
};
typedef ArrayPrimitiveType<InstanceGeometry*> InstanceGeometryArray;
+ typedef PointerArray<InstanceGeometry> InstanceGeometryPointerArray;
} // namespace COLLADAFW
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWInstanceNode.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWInstanceNode.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWInstanceNode.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -13,6 +13,7 @@
#include "COLLADAFWPrerequisites.h"
#include "COLLADAFWSceneGraphInstance.h"
+#include "COLLADAFWPointerArray.h"
namespace COLLADAFW
@@ -22,6 +23,7 @@
typedef SceneGraphInstance InstanceNode;
typedef ArrayPrimitiveType<InstanceNode*> InstanceNodeArray;
+ typedef PointerArray<InstanceNode> InstanceNodePointerArray;
} // namespace COLLADAFW
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWLibraryNodes.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWLibraryNodes.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWLibraryNodes.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -23,7 +23,7 @@
{
private:
/** The nodes contained in the library.*/
- NodeArray mNodes;
+ NodePointerArray mNodes;
public:
@@ -34,18 +34,18 @@
virtual ~LibraryNodes(){}
/** Returns the array containing all nodes of the library nodes.*/
- const NodeArray& getNodes() const { return mNodes; }
+ const NodePointerArray& getNodes() const { return mNodes; }
/** Returns the array containing all nodes of the library nodes.*/
- NodeArray& getNodes() { return mNodes; }
+ NodePointerArray& getNodes() { return mNodes; }
private:
/** Disable default copy ctor. */
- LibraryNodes( const LibraryNodes& pre );
+// LibraryNodes( const LibraryNodes& pre );
/** Disable default assignment operator. */
- const LibraryNodes& operator= ( const LibraryNodes& pre );
+// const LibraryNodes& operator= ( const LibraryNodes& pre );
};
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWLookat.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWLookat.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWLookat.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -53,21 +53,27 @@
/** The position of the viewer. Defines the translation. */
COLLADABU::Math::Vector3& getEyePosition () { return mEyePosition; }
+ const COLLADABU::Math::Vector3& getEyePosition () const { return mEyePosition; }
void setEyePosition ( COLLADABU::Math::Vector3& val ) { mEyePosition = val; }
/** The target of the viewer. Defines the pitch and the yaw of the transform. */
- COLLADABU::Math::Vector3& getInterestPosition () { return mInterestPosition; }
+ COLLADABU::Math::Vector3& getInterestPosition () { return mInterestPosition; }
+ const COLLADABU::Math::Vector3& getInterestPosition () const { return mInterestPosition; }
void setInterestPosition ( COLLADABU::Math::Vector3& val ) { mInterestPosition = val; }
/** The up-axis of the viewer. Defines the roll of the transform. */
COLLADABU::Math::Vector3& getUpPosition () { return mUpPosition; }
+ const COLLADABU::Math::Vector3& getUpPosition () const { return mUpPosition; }
void setUpPosition ( COLLADABU::Math::Vector3& val ) { mUpPosition = val; }
+ /** Clones the lookat.*/
+ virtual Lookat* clone() const { return new Lookat(*this); }
+
private:
/** Disable default copy ctor. */
- Lookat( const Lookat& pre );
+// Lookat( const Lookat& pre );
/** Disable default assignment operator. */
const Lookat& operator= ( const Lookat& pre );
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWMatrix.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWMatrix.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWMatrix.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -29,6 +29,8 @@
/** Constructor. Creates identity transformation.*/
Matrix();
+ virtual ~Matrix();
+
/** Constructor. Sets transformation to @a matrix.*/
Matrix(const COLLADABU::Math::Matrix4& matrix);
@@ -41,7 +43,8 @@
/** Sets the transformation to @a matrix.*/
void setMatrix(const COLLADABU::Math::Matrix4& matrix) { mMatrix = matrix; }
- virtual ~Matrix();
+ /** Clones the matrix.*/
+ Matrix* clone() const { return new Matrix(*this); }
};
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWNode.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWNode.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWNode.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -17,6 +17,7 @@
#include "COLLADAFWInstanceGeometry.h"
#include "COLLADAFWInstanceNode.h"
#include "COLLADAFWArrayPrimitiveType.h"
+#include "COLLADAFWPointerArray.h"
namespace COLLADABU
@@ -34,6 +35,7 @@
class Node;
typedef ArrayPrimitiveType<Node*> NodeArray;
+ typedef PointerArray<Node> NodePointerArray;
class Node : public ObjectTemplate<COLLADA_TYPE::NODE>
{
@@ -63,16 +65,16 @@
NodeType mType;
/** List of all transformations of the node. Array and contents will be delete in destructor.*/
- TransformationArray mTransformations;
+ TransformationPointerArray mTransformations;
/** List of all instance geometries of this node. Array and contents will be delete in destructor.*/
- InstanceGeometryArray mInstanceGeometries;
+ InstanceGeometryPointerArray mInstanceGeometries;
/** List of all instance nodes of this node. Array and contents will be delete in destructor.*/
- InstanceNodeArray mInstanceNodes;
+ InstanceNodePointerArray mInstanceNodes;
/** List of all child nodes. Array and contents will be delete in destructor.*/
- NodeArray mChildNodes;
+ NodePointerArray mChildNodes;
public:
/** Creates a node with object id @a objectId.*/
@@ -101,28 +103,28 @@
void setType ( const COLLADAFW::Node::NodeType Type ) { mType = Type; }
/** Get list of all transformations of the node.*/
- TransformationArray& getTransformations() { return mTransformations; }
+ TransformationPointerArray& getTransformations() { return mTransformations; }
/** Get list of all transformations of the node.*/
- const TransformationArray& getTransformations() const { return mTransformations; }
+ const TransformationPointerArray& getTransformations() const { return mTransformations; }
/** List of all instance geometries of this node.*/
- InstanceGeometryArray& getInstanceGeometries() { return mInstanceGeometries; }
+ InstanceGeometryPointerArray& getInstanceGeometries() { return mInstanceGeometries; }
/** List of all instance geometries of this node.*/
- const InstanceGeometryArray& getInstanceGeometries() const { return mInstanceGeometries; }
+ const InstanceGeometryPointerArray& getInstanceGeometries() const { return mInstanceGeometries; }
/** List of all instance nodes of this node.*/
- InstanceNodeArray& getInstanceNodes() { return mInstanceNodes; }
+ InstanceNodePointerArray& getInstanceNodes() { return mInstanceNodes; }
/** List of all instance nodes of this node.*/
- const InstanceNodeArray& getInstanceNodes() const { return mInstanceNodes; }
+ const InstanceNodePointerArray& getInstanceNodes() const { return mInstanceNodes; }
/** Get list of all child nodes.*/
- NodeArray& getChildNodes() { return mChildNodes; }
+ NodePointerArray& getChildNodes() { return mChildNodes; }
/** Get list of all child nodes.*/
- const NodeArray& getChildNodes() const { return mChildNodes; }
+ const NodePointerArray& getChildNodes() const { return mChildNodes; }
/** Calculates a baked matrix, representing all the transformations of the node.
@param transformationMatrix Will be set to the calculated transformation matrix.*/
@@ -132,11 +134,14 @@
@return The transformation matrix*/
COLLADABU::Math::Matrix4 getTransformationMatrix() const;
- private:
+ /** Creates a clone of the node and returns a popinter to it.*/
+ Node* clone() const { return new Node(*this); }
+
+// private:
/** Disable default copy ctor. */
- Node( const Node& pre );
+// Node( const Node& pre );
/** Disable default assignment operator. */
- const Node& operator= ( const Node& pre );
+// const Node& operator= ( const Node& pre );
};
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWObject.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWObject.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWObject.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -23,24 +23,24 @@
class Object
{
private:
- Object* mParent;
+// Object* mParent;
public:
virtual ~Object(){};
/** Returns the class id of the object.*/
virtual ClassId getClassId()=0;
- Object* getParent() { return mParent; }
+// Object* getParent() { return mParent; }
protected:
- Object(Object* parent) : mParent(parent){};
+ Object(Object* parent) /*: mParent(parent)*/{}
- void setParent(Object* parent) { mParent = parent; }
+// void setParent(Object* parent) { mParent = parent; }
private:
/** Disable default copy ctor. */
- Object( const Object& pre );
+// Object( const Object& pre );
/** Disable default assignment operator. */
const Object& operator= ( const Object& pre );
@@ -73,7 +73,7 @@
private:
/** Disable default copy ctor. */
- ObjectTemplate( const ObjectTemplate& pre );
+ // ObjectTemplate( const ObjectTemplate& pre );
/** Disable default assignment operator. */
const ObjectTemplate& operator= ( const ObjectTemplate& pre );
Added: branches/nextgen/COLLADAFramework/include/COLLADAFWPointerArray.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWPointerArray.h (rev 0)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWPointerArray.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -0,0 +1,90 @@
+/*
+ Copyright (c) 2008 NetAllied Systems GmbH
+
+ This file is part of COLLADAFramework.
+
+ Licensed under the MIT Open Source License,
+ for details please see LICENSE file or the website
+ http://www.opensource.org/licenses/mit-license.php
+*/
+
+#ifndef __COLLADAFW_POINTERARRAY_H__
+#define __COLLADAFW_POINTERARRAY_H__
+
+#include "COLLADAFWPrerequisites.h"
+#include "COLLADAFWArrayPrimitiveType.h"
+
+
+namespace COLLADAFW
+{
+
+ /**
+ This array stores pointers to objects of type @T
+ The memory will be allocated with malloc, freed with free and resized with realloc.
+ In contrast to the base template ArrayPrimitiveType it provides a copy constructor and
+ an assignment operator. Type T must have public copy constructor and assignment operator.
+ It must also implement a public member T* clone() that clones the object.
+ The array is always the owner the pointers.
+ */
+ template<class T>
+ class PointerArray : public ArrayPrimitiveType<T*>
+ {
+ private:
+
+ public:
+
+ /** Constructor. */
+ PointerArray() : ArrayPrimitiveType(OWNER){}
+
+ /** Destructor. */
+ virtual ~PointerArray()
+ {
+ deleteContents();
+ }
+
+ /** Disable default copy ctor. */
+ PointerArray( const PointerArray& pre )
+ : ArrayPrimitiveType(OWNER)
+ {
+ // clone the array contents
+ cloneContents(pre);
+ }
+
+ /** Disable default assignment operator. */
+ const PointerArray& operator= ( const PointerArray& pre )
+ {
+ if ( &pre != this )
+ {
+ // delete the old arrays contents
+ deleteContents();
+ // clone the array contents
+ cloneContents(pre);
+ }
+ return *this;
+ }
+
+ private:
+ /** Clones the contents of @a pre and stores the pointers to the objects in this array.*/
+ void cloneContents(const PointerArray& pre)
+ {
+ size_t newCount = pre.getCount();
+ reallocMemory(newCount);
+ for ( size_t i = 0; i < newCount; ++i)
+ (*this)[i] = pre[i]->clone();
+ mCount = newCount;
+ }
+
+ /** Deletes the contents of this array.*/
+ void deleteContents()
+ {
+ size_t oldCount = getCount();
+ for ( size_t i = 0; i < oldCount; ++i)
+ delete (*this)[i];
+ }
+
+
+ };
+
+} // namespace COLLADAFW
+
+#endif // __COLLADAFW_POINTERARRAY_H__
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWRotate.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWRotate.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWRotate.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -59,6 +59,9 @@
/** Sets the components of the rotation axis to @a x, @a y, @a z.*/
void setRotationAxis(double x, double y, double z) { mRotationAxis = COLLADABU::Math::Vector3(x, y, z); }
+ /** Clones the rotation.*/
+ Rotate* clone() const { return new Rotate(*this); }
+
};
} // namespace COLLADAFW
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWScale.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWScale.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWScale.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -48,6 +48,10 @@
/** Sets the components of the scale to @a x, @a y, @a z.*/
void setScale(double x, double y, double z) { mScaleVector = COLLADABU::Math::Vector3(x, y, z); }
+
+ /** Clones the scale.*/
+ Scale* clone() const { return new Scale(*this); }
+
};
} // namespace COLLADAFW
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWSceneGraphInstance.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWSceneGraphInstance.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWSceneGraphInstance.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -60,11 +60,13 @@
/** Returns the unique id of the instantiated object.*/
const UniqueId& getInstanciatedObjectId() const { return mInstanciatedObjectId; }
+ virtual SceneGraphInstance* clone() const { return new SceneGraphInstance(*this); }
+
private:
/** Disable default copy ctor. */
- SceneGraphInstance( const SceneGraphInstance& pre );
+// SceneGraphInstance( const SceneGraphInstance& pre );
/** Disable default assignment operator. */
- const SceneGraphInstance& operator= ( const SceneGraphInstance& pre );
+// const SceneGraphInstance& operator= ( const SceneGraphInstance& pre );
};
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWSkew.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWSkew.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWSkew.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -60,21 +60,26 @@
virtual ~Skew() {}
/** The axis which is rotated. */
- COLLADABU::Math::Vector3 getRotateAxis() const { return mRotateAxis; }
+ COLLADABU::Math::Vector3& getRotateAxis() { return mRotateAxis; }
+ const COLLADABU::Math::Vector3& getRotateAxis() const { return mRotateAxis; }
void setRotateAxis(COLLADABU::Math::Vector3 val) { mRotateAxis = val; }
/** The axis around which to rotate. */
- COLLADABU::Math::Vector3 getTranslateAxis() const { return mTranslateAxis; }
+ COLLADABU::Math::Vector3& getTranslateAxis() { return mTranslateAxis; }
+ const COLLADABU::Math::Vector3& getTranslateAxis() const { return mTranslateAxis; }
void setTranslateAxis(COLLADABU::Math::Vector3 val) { mTranslateAxis = val; }
/** The angle of rotation. */
float getAngle() const { return mAngle; }
void setAngle(float val) { mAngle = val; }
+ /** Clones the skew.*/
+ virtual Skew* clone() const { return new Skew(*this); }
+
private:
/** Disable default copy ctor. */
- Skew( const Skew& pre );
+ //Skew( const Skew& pre );
/** Disable default assignment operator. */
const Skew& operator= ( const Skew& pre );
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWTransformation.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWTransformation.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWTransformation.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -12,7 +12,7 @@
#define __COLLADAFW_TRANSFORMATIONBASE_H__
#include "COLLADAFWPrerequisites.h"
-#include "COLLADAFWArrayPrimitiveType.h"
+#include "COLLADAFWPointerArray.h"
@@ -50,6 +50,8 @@
/** Returns the sid of the transformation.*/
void setSid(const String& sid) { mSid = sid; }
+ virtual Transformation* clone() const = 0;
+
protected:
/** The only available constructor. Can only be used by the derived classes.
@param transformationType The type of the transformation.*/
@@ -58,12 +60,13 @@
private:
/** Disable default copy ctor. */
- Transformation( const Transformation& pre );
+// Transformation( const Transformation& pre );
/** Disable default assignment operator. */
const Transformation& operator= ( const Transformation& pre );
};
typedef ArrayPrimitiveType<Transformation*> TransformationArray;
+ typedef PointerArray<Transformation> TransformationPointerArray;
} // namespace COLLADAFW
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWTranslate.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWTranslate.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWTranslate.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -49,6 +49,9 @@
/** Sets the components of the translation to @a x, @a y, @a z.*/
void setTranslation(double x, double y, double z) { mTranslationVector = COLLADABU::Math::Vector3(x, y, z); }
+ /** Clones the translation.*/
+ Translate* clone() const { return new Translate(*this); }
+
};
} // namespace COLLADAFW
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWVisualScene.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWVisualScene.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWVisualScene.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -27,7 +27,7 @@
String mName;
/** All the root nodes of the visual scene.*/
- NodeArray mRootNodes;
+ NodePointerArray mRootNodes;
public:
VisualScene();
@@ -40,22 +40,22 @@
void setName(const String& name) { mName = name; }
/** Returns a reference to the root nodes of the visual scene. */
- NodeArray& getRootNodes() { return mRootNodes; }
+ NodePointerArray& getRootNodes() { return mRootNodes; }
/** Returns a reference to the root nodes of the visual scene.*/
- const NodeArray& getRootNodes() const { return mRootNodes; }
+ const NodePointerArray& getRootNodes() const { return mRootNodes; }
/** Returns a reference to the root nodes of the visual scene.*/
- void setRootNodes(const NodeArray& rootNodes) { mRootNodes = rootNodes; }
+// void setRootNodes(const NodeArray& rootNodes) { mRootNodes = rootNodes; }
protected:
private:
/** Disable default copy ctor. */
- VisualScene( const VisualScene& pre );
+// VisualScene( const VisualScene& pre );
/** Disable default assignment operator. */
- const VisualScene& operator= ( const VisualScene& pre );
+// const VisualScene& operator= ( const VisualScene& pre );
};
} // namespace COLLADAFW
Modified: branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj
===================================================================
--- branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj 2009-01-26 09:02:41 UTC (rev 321)
@@ -590,6 +590,10 @@
>
</File>
<File
+ RelativePath="..\include\COLLADAFWPointerArray.h"
+ >
+ </File>
+ <File
RelativePath="..\include\COLLADAFWPolygons.h"
>
</File>
Modified: branches/nextgen/COLLADAFramework/src/COLLADAFWNode.cpp
===================================================================
--- branches/nextgen/COLLADAFramework/src/COLLADAFWNode.cpp 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/src/COLLADAFWNode.cpp 2009-01-26 09:02:41 UTC (rev 321)
@@ -32,6 +32,7 @@
//--------------------------------------------------------------------
Node::~Node()
{
+#if 0
//delete all child nodes
for ( size_t i = 0, count = mChildNodes.getCount(); i < count; ++i)
delete mChildNodes[i];
@@ -47,6 +48,7 @@
//delete all instance nodes
for ( size_t i = 0, count = mInstanceNodes.getCount(); i < count; ++i)
delete mInstanceNodes[i];
+#endif
}
//--------------------------------------------------------------------
Modified: branches/nextgen/COLLADAFramework/src/COLLADAFWVisualScene.cpp
===================================================================
--- branches/nextgen/COLLADAFramework/src/COLLADAFWVisualScene.cpp 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAFramework/src/COLLADAFWVisualScene.cpp 2009-01-26 09:02:41 UTC (rev 321)
@@ -21,9 +21,11 @@
//--------------------------------------------------------------------
VisualScene::~VisualScene()
{
+#if 0
//delete all root node
for ( size_t i = 0, count = mRootNodes.getCount(); i < count; ++i)
delete mRootNodes[i];
+#endif
}
Modified: branches/nextgen/COLLADAMax/include/COLLADAMaxDocumentImporter.h
===================================================================
--- branches/nextgen/COLLADAMax/include/COLLADAMaxDocumentImporter.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAMax/include/COLLADAMaxDocumentImporter.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -21,16 +21,21 @@
#include "COLLADAMaxPrerequisites.h"
#include "COLLADAFWIWriter.h"
+#include <list>
+//#include "dummy.h"
+
class Interface;
class ImpInterface;
+class DummyObject;
namespace COLLADAFW
{
class VisualScene;
class Geometry;
class UniqueId;
+ class LibraryNodes;
}
namespace COLLADAMax
@@ -41,6 +46,9 @@
/** Maps Unique id to INodes.*/
typedef std::multimap<COLLADAFW::UniqueId, INode*> UniqueIdINodeMultiMap;
+ /** Maps Unique id to ImpNodes.*/
+ typedef std::multimap<COLLADAFW::UniqueId, ImpNode*> UniqueIdImpNodeMultiMap;
+
/** Maps Unique id to INodes.*/
typedef std::map<COLLADAFW::UniqueId, INode*> UniqueIdINodeMap;
@@ -50,6 +58,9 @@
/** Maps objects to Unique id to.*/
typedef std::map< INode*, COLLADAFW::UniqueId> ObjectINodeUniqueIdMap;
+ /** List of library nodes.*/
+ typedef std::list<const COLLADAFW::LibraryNodes*> LibraryNodesList;
+
private:
/** Max interface.*/
Interface* mMaxInterface;
@@ -59,6 +70,9 @@
/** File path of the COLLADA document to import.*/
NativeString mImportFilePath;
+
+ /** A dummy helper, that is used for nodes that do not have an object assigned to.*/
+ DummyObject* mDummyObject;
/** Maps the unique ids of objects (geometries, controllers,...) that are referenced by INodes to
these referencing INodes. This map is being filled while importing the visual scene. It is
@@ -76,12 +90,15 @@
/** Maps the unique ids of nodes that are instantiated to the created instantiating max INode. This
map is being filled while importing the visual scene. It is required when ever nodes are referenced,
before they have been imported.*/
- UniqueIdINodeMultiMap mUniqueIdReferencingINodeMap;
+ UniqueIdImpNodeMultiMap mUniqueIdReferencingImpNodeMap;
/** Maps each already imported object to its Unique id. When ever a new object is created it
should be added to this map. .*/
ObjectINodeUniqueIdMap mObjectINodeUniqueIdMap;
+ /** This vector contains all library nodes already received by the importer.*/
+ LibraryNodesList mLibraryNodesList;
+
public:
/** Constructor .
@param maxInterface The max interface.
@@ -130,23 +147,27 @@
/** Disable default assignment operator. */
const DocumentImporter& operator= ( const DocumentImporter& pre );
+ /** Returns the dummy object used for nodes that do not have an object assigned to.*/
+ DummyObject* getDummyObject(){ return mDummyObject; }
+
/** Returns the UniqueId Object INode Mapping.*/
UniqueIdINodeMultiMap& getUniqueIdObjectINodeMap(){ return mUniqueIdObjectINodeMap; }
/** Returns the UniqueId Referencing INode Mapping.*/
- UniqueIdINodeMultiMap& getUniqueIdReferencingINodeMap(){ return mUniqueIdReferencingINodeMap; }
+ UniqueIdImpNodeMultiMap& getUniqueIdReferencingImpNodeMap(){ return mUniqueIdReferencingImpNodeMap; }
/** Returns the UniqueId object Mapping.*/
UniqueIdObjectMap& getUniqueIdObjectMap(){ return mUniqueIdObjectMap; }
-
/** Returns the UniqueId INode Mapping.*/
UniqueIdINodeMap& getUniqueIdINodeMap(){ return mUniqueIdINodeMap; }
-
/** Returns the object UniqueId Mapping.*/
ObjectINodeUniqueIdMap& getObjectINodeUniqueIdMap(){ return mObjectINodeUniqueIdMap; }
+ /** Returns the list of library nodes.*/
+ LibraryNodesList& getLibraryNodesList(){ return mLibraryNodesList; }
+
friend class ImporterBase;
};
Modified: branches/nextgen/COLLADAMax/include/COLLADAMaxGeometryImporter.h
===================================================================
--- branches/nextgen/COLLADAMax/include/COLLADAMaxGeometryImporter.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAMax/include/COLLADAMaxGeometryImporter.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -31,7 +31,9 @@
namespace COLLADAMax
{
- /** TODO Documentation */
+ /** Imports a geometry into the max scene.
+ If the geometry is referenced by a node that has already been imported, the geometry
+ is attached to that nodes, otherwise the geometry does not belong to a node.*/
class GeometryImporter : public ImporterBase
{
private:
Modified: branches/nextgen/COLLADAMax/include/COLLADAMaxImporterBase.h
===================================================================
--- branches/nextgen/COLLADAMax/include/COLLADAMaxImporterBase.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAMax/include/COLLADAMaxImporterBase.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -24,10 +24,12 @@
class Interface;
class ImpInterface;
class INode;
+class DummyObject;
namespace COLLADAFW
{
class UniqueId;
+ class LibraryNodes;
}
namespace COLLADAMax
@@ -58,6 +60,9 @@
/** Returns the max import interface.*/
ImpInterface* getMaxImportInterface();
+ /** Returns the dummy object used for nodes that do not have an object assigned to.*/
+ DummyObject* getDummyObject();
+
/** Returns collada importer the importer belongs to.*/
DocumentImporter* getColladaImporter() { return mDocumentImporter; }
@@ -69,13 +74,13 @@
/** Adds an UniqueId-Referencing INode pair to the UniqueIdReferencingINodeMap. An Referencing INode
is an INode that references an INode. For nodes that reference an INode that has
not already been loaded this method should be called.*/
- void addUniqueIdReferencingINodePair(const COLLADAFW::UniqueId& uniqueId, INode* node);
+ void addUniqueIdReferencingImpNodePair(const COLLADAFW::UniqueId& uniqueId, ImpNode* node);
/** Fills @a nodeList with all INodes that reference the object with UniqueId @a uniqueId.*/
void getObjectINodesByUniqueId( const COLLADAFW::UniqueId& uniqueId, INodeList& nodelist );
/** Fills @a nodeList with all INodes that reference the node with UniqueId @a uniqueId.*/
- void getReferencingINodesByUniqueId( const COLLADAFW::UniqueId& uniqueId, INodeList& nodelist );
+ void getReferencingImpNodesByUniqueId( const COLLADAFW::UniqueId& uniqueId, ImpNodeList& nodelist );
/** Adds an UniqueId-Object pair to the UniqueIdObjectMap. For every imported object this method should
be called to ensure that elements that are imported later and instance this object can set the object
@@ -91,6 +96,9 @@
unique id can be retrieved from the created INode. This is required for instance node handling.*/
void addObjectINodeUniqueIdPair( INode* object, const COLLADAFW::UniqueId& uniqueId );
+ /** Adds @a libraryNodes to the list of library nodes.*/
+ void addLibraryNodes( const COLLADAFW::LibraryNodes* libraryNodes );
+
/** Returns the object that was created from the imported object with UniqueId @a uniqueId. If
@a uniqueId has not been added using addUniqueIdObjectPair, null is returned.*/
Object* getObjectByUniqueId( const COLLADAFW::UniqueId& uniqueId);
Added: branches/nextgen/COLLADAMax/include/COLLADAMaxLibraryNodesImporter.h
===================================================================
--- branches/nextgen/COLLADAMax/include/COLLADAMaxLibraryNodesImporter.h (rev 0)
+++ branches/nextgen/COLLADAMax/include/COLLADAMaxLibraryNodesImporter.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -0,0 +1,69 @@
+/*
+Copyright (c) 2008 NetAllied Systems GmbH
+
+This file is part of COLLADAMax.
+
+Portions of the code are:
+Copyright (c) 2005-2007 Feeling Software Inc.
+Copyright (c) 2005-2007 Sony Computer Entertainment America
+
+Based on the 3dsMax COLLADASW Tools:
+Copyright (c) 2005-2006 Autodesk Media Entertainment
+
+Licensed under the MIT Open Source License,
+for details please see LICENSE file or the website
+http://www.opensource.org/licenses/mit-license.php
+*/
+
+#ifndef __COLLADAMAX_LIBRARYNODESIMPORTER_H__
+#define __COLLADAMAX_LIBRARYNODESIMPORTER_H__
+
+#include "COLLADAMaxPrerequisites.h"
+#include "COLLADAMaxNodeImporter.h"
+
+namespace COLLADAFW
+{
+ class LibraryNodes;
+}
+
+namespace COLLADAMax
+{
+
+ /** Imports a library into the max scene.
+ Only nodes that are referenced by already imported nodes, will be added to the max scene.
+ All other nodes will be stored and integrated into the max scene by the VisualSceneLoader as soon
+ as the nodes get referenced a node.*/
+ class LibraryNodesImporter : public NodeImporter
+ {
+ private:
+
+ /** The LibraryNodes that should be imported.*/
+ const COLLADAFW::LibraryNodes* mLibraryNodes;
+
+ public:
+
+ /** Constructor. */
+ LibraryNodesImporter(DocumentImporter* documentImporter, const COLLADAFW::LibraryNodes* libraryNodes );
+
+ /** Destructor. */
+ virtual ~LibraryNodesImporter();
+
+ /** Performs the import of the geometry.
+ @return True on success, false otherwise.*/
+ bool import();
+
+ bool importLibraryNode( const COLLADAFW::Node* node);
+
+ private:
+
+ /** Disable default copy ctor. */
+ LibraryNodesImporter( const LibraryNodesImporter& pre );
+
+ /** Disable default assignment operator. */
+ const LibraryNodesImporter& operator= ( const LibraryNodesImporter& pre );
+
+ };
+
+} // namespace COLLADAMAX
+
+#endif // __COLLADAMAX_LIBRARYNODESIMPORTER_H__
Added: branches/nextgen/COLLADAMax/include/COLLADAMaxNodeImporter.h
===================================================================
--- branches/nextgen/COLLADAMax/include/COLLADAMaxNodeImporter.h (rev 0)
+++ branches/nextgen/COLLADAMax/include/COLLADAMaxNodeImporter.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -0,0 +1,87 @@
+/*
+Copyright (c) 2008 NetAllied Systems GmbH
+
+This file is part of COLLADAMax.
+
+Portions of the code are:
+Copyright (c) 2005-2007 Feeling Software Inc.
+Copyright (c) 2005-2007 Sony Computer Entertainment America
+
+Based on the 3dsMax COLLADASW Tools:
+Copyright (c) 2005-2006 Autodesk Media Entertainment
+
+Licensed under the MIT Open Source License,
+for details please see LICENSE file or the website
+http://www.opensource.org/licenses/mit-license.php
+*/
+
+#ifndef __COLLADAMAX_NODEIMPORTER_H__
+#define __COLLADAMAX_NODEIMPORTER_H__
+
+#include "COLLADAMaxPrerequisites.h"
+#include "COLLADAMaxImporterBase.h"
+
+#include "COLLADAFWNode.h"
+#include "Math/COLLADABUMathMatrix4.h"
+
+namespace COLLADAFW
+{
+};
+
+namespace COLLADAMax
+{
+
+ /** this class imports a visual scene into the max scene graph. */
+ class NodeImporter : public ImporterBase
+ {
+ public:
+
+ /** Constructor. */
+ NodeImporter(DocumentImporter* documentImporter);
+
+ /** Destructor. */
+ virtual ~NodeImporter();
+
+ public:
+ /** Converts a COLLADAFW Matrix4 into a max Matrix3.*/
+ static void Matrix4ToMaxMatrix3 ( Matrix3 & copy, const COLLADABU::Math::Matrix4& original );
+
+ protected:
+ void setNodeProperties( const COLLADAFW::Node* node, ImpNode* importNode);
+
+
+ /** Recursively imports @a node.*/
+ ImpNode* importNode( const COLLADAFW::Node* node, ImpNode* parentImportNode );
+
+ /** Imports all nodes in @a nodeArray and attaches them to @a parentImportNode.*/
+ bool importNodes(const COLLADAFW::NodePointerArray& nodeArray, ImpNode* parentImportNode);
+
+ /** Imports all the instance geometries in @a instanceGeometryArray and attaches them to @a parentImportNode.*/
+ bool importInstanceGeometries( const COLLADAFW::InstanceGeometryPointerArray& instanceGeometryArray, ImpNode* parentImportNode );
+
+ /** Imports the first instance geometry in @a node. It is assumed that @a node has at least one
+ instance geometry. A new INode is created, that references the instantiated geometry and has the
+ properties of @a node (name, transformation). The new INode is attached to @a parentImportNode.
+ Use this member, if a node has exactly one instance geometry.*/
+ ImpNode* importInstanceGeometrie( const COLLADAFW::Node* node, ImpNode* parentImportNode );
+
+ /** Imports all the instance nodes in @a instanceNodeArray and attaches them to @a parentImportNode.*/
+ bool importInstanceNodes( const COLLADAFW::InstanceNodePointerArray& instanceNodeArray, ImpNode* parentImportNode );
+
+ /** Recursively clones @a nodeToClone and attaches the cloned graph to @a parentImportNode. The cloned
+ nodes with reference the same object and transformation controller.*/
+ bool recursivlyCloneINode( ImpNode* parentImportNode, INode* nodeToClone );
+
+ private:
+
+ /** Disable default copy ctor. */
+ NodeImporter( const NodeImporter& pre );
+
+ /** Disable default assignment operator. */
+ const NodeImporter& operator= ( const NodeImporter& pre );
+
+ };
+
+} // namespace COLLADAMAX
+
+#endif // __COLLADAMAX_NODEIMPORTER_H__
Modified: branches/nextgen/COLLADAMax/include/COLLADAMaxTypes.h
===================================================================
--- branches/nextgen/COLLADAMax/include/COLLADAMaxTypes.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAMax/include/COLLADAMaxTypes.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -49,6 +49,9 @@
/** List of INodes*/
typedef std::vector<INode*> INodeList;
+ /** List of ImpNodes*/
+ typedef std::vector<ImpNode*> ImpNodeList;
+
typedef std::set<ExportNode*> ExportNodeSet;
typedef std::vector<float> FloatList;
Modified: branches/nextgen/COLLADAMax/include/COLLADAMaxVisualSceneImporter.h
===================================================================
--- branches/nextgen/COLLADAMax/include/COLLADAMaxVisualSceneImporter.h 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAMax/include/COLLADAMaxVisualSceneImporter.h 2009-01-26 09:02:41 UTC (rev 321)
@@ -19,7 +19,7 @@
#define __COLLADAMAX_VISUALSCENEIMPORTER_H__
#include "COLLADAMaxPrerequisites.h"
-#include "COLLADAMaxImporterBase.h"
+#include "COLLADAMaxNodeImporter.h"
#include "COLLADAFWNode.h"
#include "dummy.h"
@@ -29,20 +29,17 @@
class VisualScene;
};
-class Object;
namespace COLLADAMax
{
/** this class imports a visual scene into the max scene graph. */
- class VisualSceneImporter : public ImporterBase
+ class VisualSceneImporter : public NodeImporter
{
private:
/** The visual scene that should be imported.*/
const COLLADAFW::VisualScene* mVisualScene;
- /** A dummy helper, that is used for nodes that do not an object assigned to.*/
- DummyObject* mDummyObject;
public:
@@ -56,10 +53,6 @@
/** Destructor. */
virtual ~VisualSceneImporter();
- public:
- /** Converts a COLLADAFW Matrix4 into a max Matrix3.*/
- static void Matrix4ToMaxMatrix3 ( Matrix3 & copy, const COLLADABU::Math::Matrix4& original );
-
private:
/** Disable default copy ctor. */
@@ -67,32 +60,6 @@
/** Disable default assignment operator. */
const VisualSceneImporter& operator= ( const VisualSceneImporter& pre );
-
- void setNodeProperties( const COLLADAFW::Node* node, ImpNode* importNode);
-
-
- /** Recursively imports @a node.*/
- ImpNode* importNode(COLLADAFW::Node* node, ImpNode* parentImportNode );
-
- /** Imports all nodes in @a nodeArray and attaches them to @a parentImportNode.*/
- bool importNodes(const COLLADAFW::NodeArray& nodeArray, ImpNode* parentImportNode);
-
- /** Imports all the instance geometries in @a instanceGeometryArray and attaches them to @a parentImportNode.*/
- bool importInstanceGeometries( const COLLADAFW::InstanceGeometryArray& instanceGeometryArray, ImpNode* parentImportNode );
-
- /** Imports the first instance geometry in @a node. It is assumed that @a node has at least one
- instance geometry. A new INode is created, that references the instantiated geometry and has the
- properties of @a node (name, transformation). The new INode is attached to @a parentImportNode.
- Use this member, if a node has exactly one instance geometry.*/
- ImpNode* importInstanceGeometrie( const COLLADAFW::Node* node, ImpNode* parentImportNode );
-
- /** Imports all the instance nodes in @a instanceNodeArray and attaches them to @a parentImportNode.*/
- bool importInstanceNodes( const COLLADAFW::InstanceNodeArray& instanceNodeArray, ImpNode* parentImportNode );
-
- /** Recursively clones @a nodeToClone and attaches the cloned graph to @a parentImportNode. The cloned
- nodes with reference the same object and transformation controller.*/
- bool recursivlyCloneINode( INode* parentNode, INode* nodeToClone );
-
};
} // namespace COLLADAMAX
Modified: branches/nextgen/COLLADAMax/scripts/COLLADAMax.vcproj
===================================================================
--- branches/nextgen/COLLADAMax/scripts/COLLADAMax.vcproj 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAMax/scripts/COLLADAMax.vcproj 2009-01-26 09:02:41 UTC (rev 321)
@@ -2059,6 +2059,14 @@
>
</File>
<File
+ RelativePath="..\src\COLLADAMaxLibraryNodesImporter.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\src\COLLADAMaxNodeImporter.cpp"
+ >
+ </File>
+ <File
RelativePath="..\src\COLLADAMaxVisualSceneImporter.cpp"
>
</File>
@@ -2217,6 +2225,14 @@
>
</File>
<File
+ RelativePath="..\include\COLLADAMaxLibraryNodesImporter.h"
+ >
+ </File>
+ <File
+ RelativePath="..\include\COLLADAMaxNodeImporter.h"
+ >
+ </File>
+ <File
RelativePath="..\include\COLLADAMaxVisualSceneImporter.h"
>
</File>
Modified: branches/nextgen/COLLADAMax/src/COLLADAMaxDocumentImporter.cpp
===================================================================
--- branches/nextgen/COLLADAMax/src/COLLADAMaxDocumentImporter.cpp 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAMax/src/COLLADAMaxDocumentImporter.cpp 2009-01-26 09:02:41 UTC (rev 321)
@@ -18,8 +18,12 @@
#include "COLLADAMaxStableHeaders.h"
#include "COLLADAMaxDocumentImporter.h"
#include "COLLADAMaxVisualSceneImporter.h"
+#include "COLLADAMaxLibraryNodesImporter.h"
#include "COLLADAMaxGeometryImporter.h"
+#include "COLLADAFWLibraryNodes.h"
+#include "COLLADAFWLibraryNodes.h"
+
#include "COLLADASaxFWLLoader.h"
#include "COLLADAFWRoot.h"
@@ -27,15 +31,19 @@
{
//--------------------------------------------------------------------
DocumentImporter::DocumentImporter(Interface * maxInterface, ImpInterface* maxImportInterface, const NativeString &filepath)
- : mMaxInterface(maxInterface),
- mMaxImportInterface(maxImportInterface),
- mImportFilePath(filepath)
+ : mMaxInterface(maxInterface)
+ , mMaxImportInterface(maxImportInterface)
+ , mImportFilePath(filepath)
+ , mDummyObject((DummyObject*) getMaxImportInterface()->Create(HELPER_CLASS_ID, Class_ID(DUMMY_CLASS_ID, 0)))
{
}
//--------------------------------------------------------------------
DocumentImporter::~DocumentImporter()
{
+ // Delete all the stored library nodes
+ for ( LibraryNodesList::const_iterator it = mLibraryNodesList.begin(); it != mLibraryNodesList.end(); ++it)
+ delete *it;
}
@@ -58,7 +66,8 @@
//---------------------------------------------------------------
bool DocumentImporter::writeLibraryNodes( const COLLADAFW::LibraryNodes* libraryNodes )
{
- return true;
+ LibraryNodesImporter libraryNodesImporter(this, libraryNodes);
+ return libraryNodesImporter.import();
}
//---------------------------------------------------------------
Modified: branches/nextgen/COLLADAMax/src/COLLADAMaxImporterBase.cpp
===================================================================
--- branches/nextgen/COLLADAMax/src/COLLADAMaxImporterBase.cpp 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAMax/src/COLLADAMaxImporterBase.cpp 2009-01-26 09:02:41 UTC (rev 321)
@@ -48,15 +48,21 @@
}
//------------------------------
+ DummyObject* ImporterBase::getDummyObject()
+ {
+ return mDocumentImporter->getDummyObject();
+ }
+
+ //------------------------------
void ImporterBase::addUniqueIdObjectINodePair( const COLLADAFW::UniqueId& uniqueId, INode* node )
{
mDocumentImporter->getUniqueIdObjectINodeMap().insert(std::pair<COLLADAFW::UniqueId, INode*>(uniqueId, node) );
}
//------------------------------
- void ImporterBase::addUniqueIdReferencingINodePair( const COLLADAFW::UniqueId& uniqueId, INode* node )
+ void ImporterBase::addUniqueIdReferencingImpNodePair( const COLLADAFW::UniqueId& uniqueId, ImpNode* node )
{
- mDocumentImporter->getUniqueIdReferencingINodeMap().insert(std::pair<COLLADAFW::UniqueId, INode*>(uniqueId, node) );
+ mDocumentImporter->getUniqueIdReferencingImpNodeMap().insert(std::pair<COLLADAFW::UniqueId, ImpNode*>(uniqueId, node) );
}
//------------------------------
@@ -73,14 +79,14 @@
//------------------------------
- void ImporterBase::getReferencingINodesByUniqueId( const COLLADAFW::UniqueId& uniqueId, COLLADAMax::INodeList& nodelist )
+ void ImporterBase::getReferencingImpNodesByUniqueId( const COLLADAFW::UniqueId& uniqueId, ImpNodeList& nodelist )
{
- const DocumentImporter::UniqueIdINodeMultiMap& uniqueIdINodeMap = mDocumentImporter->getUniqueIdReferencingINodeMap();
+ const DocumentImporter::UniqueIdImpNodeMultiMap& uniqueIdINodeMap = mDocumentImporter->getUniqueIdReferencingImpNodeMap();
- DocumentImporter::UniqueIdINodeMultiMap::const_iterator rangeBegin = uniqueIdINodeMap.lower_bound(uniqueId);
- DocumentImporter::UniqueIdINodeMultiMap::const_iterator rangeEnd = uniqueIdINodeMap.upper_bound(uniqueId);
+ DocumentImporter::UniqueIdImpNodeMultiMap::const_iterator rangeBegin = uniqueIdINodeMap.lower_bound(uniqueId);
+ DocumentImporter::UniqueIdImpNodeMultiMap::const_iterator rangeEnd = uniqueIdINodeMap.upper_bound(uniqueId);
- for (DocumentImporter::UniqueIdINodeMultiMap::const_iterator it = rangeBegin; it != rangeEnd; ++it)
+ for (DocumentImporter::UniqueIdImpNodeMultiMap::const_iterator it = rangeBegin; it != rangeEnd; ++it)
nodelist.push_back(it->second);
}
@@ -104,6 +110,12 @@
}
//------------------------------
+ void ImporterBase::addLibraryNodes( const COLLADAFW::LibraryNodes* libraryNodes )
+ {
+ mDocumentImporter->getLibraryNodesList().push_back(libraryNodes);
+ }
+
+ //------------------------------
Object* ImporterBase::getObjectByUniqueId( const COLLADAFW::UniqueId& uniqueId )
{
const DocumentImporter::UniqueIdObjectMap& uniqueIdObjectMap = mDocumentImporter->getUniqueIdObjectMap();
Added: branches/nextgen/COLLADAMax/src/COLLADAMaxLibraryNodesImporter.cpp
===================================================================
--- branches/nextgen/COLLADAMax/src/COLLADAMaxLibraryNodesImporter.cpp (rev 0)
+++ branches/nextgen/COLLADAMax/src/COLLADAMaxLibraryNodesImporter.cpp 2009-01-26 09:02:41 UTC (rev 321)
@@ -0,0 +1,71 @@
+/*
+Copyright (c) 2008 NetAllied Systems GmbH
+
+This file is part of COLLADAMax.
+
+Portions of the code are:
+Copyright (c) 2005-2007 Feeling Software Inc.
+Copyright (c) 2005-2007 Sony Computer Entertainment America
+
+Based on the 3dsMax COLLADASW Tools:
+Copyright (c) 2005-2006 Autodesk Media Entertainment
+
+Licensed under the MIT Open Source License,
+for details please see LICENSE file or the website
+http://www.opensource.org/licenses/mit-license.php
+*/
+
+#include "COLLADAMaxStableHeaders.h"
+#include "COLLADAMaxLibraryNodesImporter.h"
+
+#include "COLLADAFWNode.h"
+#include "COLLADAFWLibraryNodes.h"
+
+
+namespace COLLADAMax
+{
+
+
+ //------------------------------
+ LibraryNodesImporter::LibraryNodesImporter( DocumentImporter* documentImporter, const COLLADAFW::LibraryNodes* libraryNodes )
+ : NodeImporter(documentImporter)
+ , mLibraryNodes(libraryNodes)
+ {
+
+ }
+
+ //------------------------------
+ LibraryNodesImporter::~LibraryNodesImporter()
+ {
+ }
+
+ //------------------------------
+ bool LibraryNodesImporter::import()
+ {
+ const COLLADAFW::NodePointerArray& libraryRootNodes = mLibraryNodes->getNodes();
+ for ( size_t i = 0, count = libraryRootNodes.getCount(); i < count; ++i)
+ if ( !importLibraryNode( libraryRootNodes[i] ) )
+ return false;
+
+ return true;
+ }
+
+ bool LibraryNodesImporter::importLibraryNode( const COLLADAFW::Node* node )
+ {
+ ImpNodeList importNodeList;
+ getReferencingImpNodesByUniqueId( node->getUniqueId(), importNodeList );
+ if ( importNodeList.empty() )
+ {
+
+ }
+ else
+ {
+ for ( ImpNodeList::const_iterator it = importNodeList.begin(); it != importNodeList.end(); ++it)
+ if ( !importNode( node, *it ) )
+ return false;
+ }
+
+ return true;
+ }
+
+} // namespace COLLADAMax
Added: branches/nextgen/COLLADAMax/src/COLLADAMaxNodeImporter.cpp
===================================================================
--- branches/nextgen/COLLADAMax/src/COLLADAMaxNodeImporter.cpp (rev 0)
+++ branches/nextgen/COLLADAMax/src/COLLADAMaxNodeImporter.cpp 2009-01-26 09:02:41 UTC (rev 321)
@@ -0,0 +1,253 @@
+/*
+Copyright (c) 2008 NetAllied Systems GmbH
+
+This file is part of COLLADAMax.
+
+Portions of the code are:
+Copyright (c) 2005-2007 Feeling Software Inc.
+Copyright (c) 2005-2007 Sony Computer Entertainment America
+
+Based on the 3dsMax COLLADASW Tools:
+Copyright (c) 2005-2006 Autodesk Media Entertainment
+
+Licensed under the MIT Open Source License,
+for details please see LICENSE file or the website
+http://www.opensource.org/licenses/mit-license.php
+*/
+
+#include "COLLADAMaxStableHeaders.h"
+#include "COLLADAMaxNodeImporter.h"
+
+#include "dummy.h"
+
+namespace COLLADAMax
+{
+
+ NodeImporter::NodeImporter( DocumentImporter* documentImporter )
+ : ImporterBase(documentImporter)
+ {}
+
+ //------------------------------
+ NodeImporter::~NodeImporter()
+ {
+ }
+
+
+ //---------------------------------------------------------------
+ void NodeImporter::Matrix4ToMaxMatrix3 ( Matrix3 & copy, const COLLADABU::Math::Matrix4& original )
+ {
+ Point4 column;
+ column[ 0 ] = (float)original.getElement(0,0);
+ column[ 1 ] = (float)original.getElement(0,1);
+ column[ 2 ] = (float)original.getElement(0,2);
+ column[ 3 ] = (float)original.getElement(0,3);
+ copy.SetColumn(0, column);
+
+ column[ 0 ] = (float)original.getElement(1,0);
+ column[ 1 ] = (float)original.getElement(1,1);
+ column[ 2 ] = (float)original.getElement(1,2);
+ column[ 3 ] = (float)original.getElement(1,3);
+ copy.SetColumn(1, column);
+
+ column[ 0 ] = (float)original.getElement(2,0);
+ column[ 1 ] = (float)original.getElement(2,1);
+ column[ 2 ] = (float)original.getElement(2,2);
+ column[ 3 ] = (float)original.getElement(2,3);
+ copy.SetColumn(2, column);
+ }
+
+ //------------------------------
+ void NodeImporter::setNodeProperties( const COLLADAFW::Node* node, ImpNode* importNode)
+ {
+ String newNodeName = node->getName();
+ if ( !newNodeName.empty() )
+ importNode->SetName(newNodeName.c_str());
+
+ // set transform
+ COLLADABU::Math::Matrix4 transformationMatrix;
+ node->getTransformationMatrix(transformationMatrix);
+ Matrix3 maxTransformationMatrix;
+ Matrix4ToMaxMatrix3(maxTransformationMatrix, transformationMatrix);
+ importNode->SetTransform(0, maxTransformationMatrix);
+
+ }
+
+ //------------------------------
+ ImpNode* NodeImporter::importNode( const COLLADAFW::Node* node, ImpNode* parentImportNode )
+ {
+ bool singleGeometryInstance = node->getInstanceGeometries().getCount() == 1;
+ ImpNode* newImportNode = 0;
+
+ if ( !singleGeometryInstance )
+ {
+ newImportNode = getMaxImportInterface()->CreateNode();
+
+ setNodeProperties(node, newImportNode);
+ getMaxImportInterface()->AddNodeToScene(newImportNode);
+
+ RefResult res = newImportNode->Reference(getDummyObject());
+
+ importInstanceGeometries(node->getInstanceGeometries(), newImportNode);
+ importNodes(node->getChildNodes(), newImportNode);
+ }
+ else
+ {
+ newImportNode = importInstanceGeometrie( node, parentImportNode );
+ importNodes(node->getChildNodes(), parentImportNode);
+ }
+
+ // Append all nodes that are referenced by this node.
+ importInstanceNodes(node->getInstanceNodes(), newImportNode);
+
+ /** Store the unique id of the created node, to resolve references, when ever necessary.*/
+ addUniqueIdINodePair(node->getUniqueId(), newImportNode->GetINode());
+
+ INode* childNode = newImportNode->GetINode();
+ INode* parentNode = parentImportNode->GetINode();
+ parentNode->AttachChild(childNode, FALSE);
+
+ /* if there are nodes that reference the just created node, clone this node
+ and append it to the referencing node.*/
+ ImpNodeList referencingImpNodeList;
+ getReferencingImpNodesByUniqueId(node->getUniqueId(), referencingImpNodeList);
+ for ( size_t i = 0, count = referencingImpNodeList.size(); i<count; ++i)
+ recursivlyCloneINode( referencingImpNodeList[i], newImportNode->GetINode() );
+
+
+ return newImportNode;
+ }
+
+ //------------------------------
+ bool NodeImporter::importNodes( const COLLADAFW::NodePointerArray& nodeArray, ImpNode* parentImportNode )
+ {
+ for ( size_t i = 0, count = nodeArray.getCount(); i < count; ++i)
+ {
+ ImpNode* newNode = importNode(nodeArray[i], parentImportNode);
+ }
+
+ return true;
+ }
+
+ //------------------------------
+ bool NodeImporter::importInstanceGeometries( const COLLADAFW::InstanceGeometryPointerArray& instanceGeometryArray, ImpNode* parentImportNode )
+ {
+ for ( size_t i = 0, count = instanceGeometryArray.getCount(); i < count; ++i)
+ {
+ COLLADAFW::InstanceGeometry* instanceGeometry = instanceGeometryArray[i];
+
+ ImpNode* newImportNode = getMaxImportInterface()->CreateNode();
+ INode* newNode = newImportNode->GetINode();
+ const COLLADAFW::UniqueId& uniqueId = instanceGeometry->getInstanciatedObjectId();
+
+ Object* object = getObjectByUniqueId(uniqueId);
+ if ( object )
+ {
+ newImportNode->Reference(object);
+ }
+ else
+ {
+ newImportNode->Reference( getDummyObject() );
+ }
+ const COLLADAFW::UniqueId& instanceGeometryUniqueId = instanceGeometry->getInstanciatedObjectId();
+ // Store mapping between unique ids and nodes referencing the corresponding object.
+ // Used to clone nodes
+ addObjectINodeUniqueIdPair(newNode, instanceGeometryUniqueId);
+ // Used to resolve instancing of objects
+ addUniqueIdObjectINodePair(instanceGeometryUniqueId, newNode);
+
+ INode* parentNode = parentImportNode->GetINode();
+ parentNode->AttachChild(newNode, FALSE);
+ }
+
+ return true;
+ }
+
+ //------------------------------
+ ImpNode* NodeImporter::importInstanceGeometrie( const COLLADAFW::Node* node, ImpNode* parentImportNode )
+ {
+ ImpNode* newImportNode = getMaxImportInterface()->CreateNode();
+ setNodeProperties(node, newImportNode);
+ INode* newNode = newImportNode->GetINode();
+
+ COLLADAFW::InstanceGeometry* instanceGeometry = node->getInstanceGeometries()[0];
+ const COLLADAFW::UniqueId& uniqueId = instanceGeometry->getInstanciatedObjectId();
+
+ Object* object = getObjectByUniqueId(uniqueId);
+ if ( object )
+ {
+ newImportNode->Reference(object);
+ }
+ else
+ {
+ newImportNode->Reference( getDummyObject() );
+ }
+
+ const COLLADAFW::UniqueId& instanceGeometryUniqueId = instanceGeometry->getInstanciatedObjectId();
+ // Store mapping between unique ids and nodes referencing the coresponing object.
+ // Used to clone nodes
+ addObjectINodeUniqueIdPair(newNode, instanceGeometryUniqueId);
+ // Used to resolve instancing of objects
+ addUniqueIdObjectINodePair(instanceGeometryUniqueId, newNode);
+ INode* parentNode = parentImportNode->GetINode();
+ parentNode->AttachChild(newNode, FALSE);
+ return newImportNode;
+ }
+
+
+ //------------------------------
+ bool NodeImporter::importInstanceNodes( const COLLADAFW::InstanceNodePointerArray& instanceNodeArray, ImpNode* parentImportNode )
+ {
+ for ( size_t i = 0, count = instanceNodeArray.getCount(); i < count; ++i)
+ {
+ COLLADAFW::InstanceNode* instanceNode = instanceNodeArray[i];
+
+ const COLLADAFW::UniqueId& uniqueId = instanceNode->getInstanciatedObjectId();
+
+ INode* instanciatedINode = getINodeByUniqueId(uniqueId);
+ if ( instanciatedINode )
+ {
+ if ( !recursivlyCloneINode(parentImportNode, instanciatedINode) )
+ return false;;
+ }
+ else
+ {
+ // If the referenced node has not been imported, store which node is referenced
+ // to clone the nodes as the referenced nodes gets imported
+ addUniqueIdReferencingImpNodePair(instanceNode->getInstanciatedObjectId(), parentImportNode );
+ }
+ }
+
+ return true;
+ }
+
+ //------------------------------
+ bool NodeImporter::recursivlyCloneINode( ImpNode* parentImportNode, INode* nodeToClone )
+ {
+ ImpNode* newImportNode = getMaxImportInterface()->CreateNode();
+ getMaxImportInterface()->AddNodeToScene(newImportNode);
+
+ INode* newNode = newImportNode->GetINode();
+
+ Object* object = nodeToClone->GetObjectRef();
+ newImportNode->Reference(object);
+ newNode->SetTMController(nodeToClone->GetTMController());
+ newImportNode->SetName(nodeToClone->GetName());
+
+ INode* parentNode = parentImportNode->GetINode();
+ parentNode->AttachChild(newNode, TRUE);
+
+ /* If the node to clone references an object, the cloned one must references the same object.*/
+ COLLADAFW::UniqueId id = getUniqueIdByObjectINode(nodeToClone);
+ if ( id.isValid() )
+ addUniqueIdObjectINodePair(id, newNode);
+
+ // Clone the children
+ for ( int i = 0, count = nodeToClone->NumberOfChildren(); i < count; ++i)
+ recursivlyCloneINode(newImportNode, nodeToClone->GetChildNode(i));
+
+ return true;
+ }
+
+
+
+} // namespace COLLADAMax
Modified: branches/nextgen/COLLADAMax/src/COLLADAMaxVisualSceneImporter.cpp
===================================================================
--- branches/nextgen/COLLADAMax/src/COLLADAMaxVisualSceneImporter.cpp 2009-01-26 08:51:30 UTC (rev 320)
+++ branches/nextgen/COLLADAMax/src/COLLADAMaxVisualSceneImporter.cpp 2009-01-26 09:02:41 UTC (rev 321)
@@ -20,10 +20,7 @@
#include "COLLADAFWVisualScene.h"
#include "COLLADAFWNode.h"
-#include "COLLADAFWInstanceGeometry.h"
-#include "Math/COLLADABUMathMatrix4.h"
-
#include <max.h>
@@ -32,7 +29,7 @@
VisualSceneImporter::VisualSceneImporter( DocumentImporter* documentImporter, const COLLADAFW::VisualScene* visualScene )
- : ImporterBase(documentImporter),
+ : NodeImp...
[truncated message content] |
|
From: <jud...@us...> - 2009-01-26 08:51:40
|
Revision: 320
http://colladamaya.svn.sourceforge.net/colladamaya/?rev=320&view=rev
Author: judithschenk
Date: 2009-01-26 08:51:30 +0000 (Mon, 26 Jan 2009)
Log Message:
-----------
shear implemented
Added Paths:
-----------
branches/nextgen/COLLADAFramework/include/COLLADAFWLookat.h
branches/nextgen/COLLADAFramework/include/COLLADAFWSkew.h
Added: branches/nextgen/COLLADAFramework/include/COLLADAFWLookat.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWLookat.h (rev 0)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWLookat.h 2009-01-26 08:51:30 UTC (rev 320)
@@ -0,0 +1,79 @@
+/*
+ Copyright (c) 2008 NetAllied Systems GmbH
+
+ This file is part of COLLADAFramework.
+
+ Licensed under the MIT Open Source License,
+ for details please see LICENSE file or the website
+ http://www.opensource.org/licenses/mit-license.php
+*/
+
+#ifndef __COLLADAFW_LOOKAT_H__
+#define __COLLADAFW_LOOKAT_H__
+
+#include "COLLADAFWPrerequisites.h"
+#include "COLLADAFWTransformation.h"
+
+
+namespace COLLADAFW
+{
+
+ /**
+ * The <lookat> element contains a float3x3, which is three
+ * mathematical vectors.
+ * Positioning and orienting a camera or object in the scene is often
+ * complicated when using a matrix. A lookat transform is an intuitive
+ * way to specify an eye position, interest point, and orientation.
+ * eyePosition The position of the object.
+ * interestPosition The position of the interest point.
+ * upPosition The direction that points up.
+ */
+ class Lookat : public Transformation
+ {
+ private:
+
+ /** The position of the viewer. Defines the translation. */
+ COLLADABU::Math::Vector3 mEyePosition;
+
+ /** The target of the viewer. Defines the pitch and the yaw of the transform. */
+ COLLADABU::Math::Vector3 mInterestPosition;
+
+ /** The up-axis of the viewer. Defines the roll of the transform. */
+ COLLADABU::Math::Vector3 mUpPosition;
+
+ public:
+
+ /** Constructor. */
+ Lookat()
+ : Transformation ( Transformation::LOOKAT )
+ {}
+
+ /** Destructor. */
+ virtual ~Lookat() {}
+
+ /** The position of the viewer. Defines the translation. */
+ COLLADABU::Math::Vector3& getEyePosition () { return mEyePosition; }
+ void setEyePosition ( COLLADABU::Math::Vector3& val ) { mEyePosition = val; }
+
+ /** The target of the viewer. Defines the pitch and the yaw of the transform. */
+ COLLADABU::Math::Vector3& getInterestPosition () { return mInterestPosition; }
+ void setInterestPosition ( COLLADABU::Math::Vector3& val ) { mInterestPosition = val; }
+
+ /** The up-axis of the viewer. Defines the roll of the transform. */
+ COLLADABU::Math::Vector3& getUpPosition () { return mUpPosition; }
+ void setUpPosition ( COLLADABU::Math::Vector3& val ) { mUpPosition = val; }
+
+
+ private:
+
+ /** Disable default copy ctor. */
+ Lookat( const Lookat& pre );
+
+ /** Disable default assignment operator. */
+ const Lookat& operator= ( const Lookat& pre );
+
+ };
+
+} // namespace COLLADAFW
+
+#endif // __COLLADAFW_LOOKAT_H__
Added: branches/nextgen/COLLADAFramework/include/COLLADAFWSkew.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWSkew.h (rev 0)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWSkew.h 2009-01-26 08:51:30 UTC (rev 320)
@@ -0,0 +1,86 @@
+/*
+ Copyright (c) 2008 NetAllied Systems GmbH
+
+ This file is part of COLLADAFramework.
+
+ Licensed under the MIT Open Source License,
+ for details please see LICENSE file or the website
+ http://www.opensource.org/licenses/mit-license.php
+*/
+
+#ifndef __COLLADAFW_SHEAR_H__
+#define __COLLADAFW_SHEAR_H__
+
+#include "COLLADAFWPrerequisites.h"
+#include "COLLADAFWTransformation.h"
+
+#include "Math/COLLADABUMathMatrix4.h"
+
+
+namespace COLLADAFW
+{
+
+ /**
+ Important assumptions on skew and shears:
+
+ 1) COLLADA uses the RenderMan standard:
+ [ 1+s*dx*ex s*dx*ey s*dx*ez 0 ]
+ [ s*dy*ex 1+s*dy*ey s*dy*ez 0 ]
+ [ s*dz*ex s*dz*ey 1+s*dz*ez 0 ]
+ [ 0 0 0 1 ]
+ where s = tan(skewAngle), if the axises are normalized
+
+ 2) COLLADA and Maya use different matrix row/column ordering.
+
+ 3) Maya uses the following shear transform:
+ [ 1 0 0 0 ]
+ [ xy 1 0 0 ]
+ [ xz yx 1 0 ]
+ [ 0 0 0 1 ]
+ */
+ class Skew : public Transformation
+ {
+ private:
+
+ /**< The axis which is rotated. */
+ COLLADABU::Math::Vector3 mRotateAxis;
+
+ /**< The axis around which to rotate. */
+ COLLADABU::Math::Vector3 mTranslateAxis;
+
+ /**< The angle of rotation. */
+ float mAngle;
+
+ public:
+
+ /** Constructor. */
+ Skew() : Transformation ( Transformation::SKEW ), mAngle (0) {}
+
+ /** Destructor. */
+ virtual ~Skew() {}
+
+ /** The axis which is rotated. */
+ COLLADABU::Math::Vector3 getRotateAxis() const { return mRotateAxis; }
+ void setRotateAxis(COLLADABU::Math::Vector3 val) { mRotateAxis = val; }
+
+ /** The axis around which to rotate. */
+ COLLADABU::Math::Vector3 getTranslateAxis() const { return mTranslateAxis; }
+ void setTranslateAxis(COLLADABU::Math::Vector3 val) { mTranslateAxis = val; }
+
+ /** The angle of rotation. */
+ float getAngle() const { return mAngle; }
+ void setAngle(float val) { mAngle = val; }
+
+ private:
+
+ /** Disable default copy ctor. */
+ Skew( const Skew& pre );
+
+ /** Disable default assignment operator. */
+ const Skew& operator= ( const Skew& pre );
+
+ };
+
+} // namespace COLLADAFW
+
+#endif // __COLLADAFW_SHEAR_H__
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jud...@us...> - 2009-01-23 13:32:24
|
Revision: 319
http://colladamaya.svn.sourceforge.net/colladamaya/?rev=319&view=rev
Author: judithschenk
Date: 2009-01-23 13:32:18 +0000 (Fri, 23 Jan 2009)
Log Message:
-----------
shear implemented
Modified Paths:
--------------
branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix4.h
branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj
branches/nextgen/COLLADAMaya/include/COLLADAMayaVisualSceneImporter.h
branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneExporter.cpp
branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneImporter.cpp
branches/nextgen/COLLADASaxFrameworkLoader/include/COLLADASaxFWLNodeLoader.h
branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLNodeLoader.cpp
Modified: branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix4.h
===================================================================
--- branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix4.h 2009-01-23 09:28:50 UTC (rev 318)
+++ branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix4.h 2009-01-23 13:32:18 UTC (rev 319)
@@ -79,7 +79,16 @@
m30, m31, m32, m33 );
}
+ inline Matrix4 ( const Real m[4][4] )
+ {
+ setAllElements(
+ m[0][0], m[0][1], m[0][2], m[0][3],
+ m[1][0], m[1][1], m[1][2], m[1][3],
+ m[2][0], m[2][1], m[2][2], m[2][3],
+ m[3][0], m[3][1], m[3][2], m[3][3] );
+ }
+
// matrix from delmia
inline Matrix4( double* dblMatrix )
: mState( UNKNOWN )
Modified: branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj
===================================================================
--- branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj 2009-01-23 09:28:50 UTC (rev 318)
+++ branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj 2009-01-23 13:32:18 UTC (rev 319)
@@ -510,6 +510,10 @@
>
</File>
<File
+ RelativePath="..\include\COLLADAFWLookat.h"
+ >
+ </File>
+ <File
RelativePath="..\include\COLLADAFWMaterial.h"
>
</File>
@@ -654,7 +658,7 @@
>
</File>
<File
- RelativePath="..\include\COLLADAFWShear.h"
+ RelativePath="..\include\COLLADAFWSkew.h"
>
</File>
<File
Modified: branches/nextgen/COLLADAMaya/include/COLLADAMayaVisualSceneImporter.h
===================================================================
--- branches/nextgen/COLLADAMaya/include/COLLADAMayaVisualSceneImporter.h 2009-01-23 09:28:50 UTC (rev 318)
+++ branches/nextgen/COLLADAMaya/include/COLLADAMayaVisualSceneImporter.h 2009-01-23 13:32:18 UTC (rev 319)
@@ -22,6 +22,7 @@
#include "MayaDMTransform.h"
#include "COLLADAFWVisualScene.h"
+#include "COLLADAFWSkew.h"
#include "Math/COLLADABUMathUtils.h"
#include "Math/COLLADABUMathMatrix4.h"
@@ -62,10 +63,10 @@
public:
MayaTransformation ()
: phase (0)
- , translate1 (3, 0)
- , translate2 (3, 0)
- , translate3 (3, 0)
- , scale (3, 1)
+ , translate1 ( 0,0,0 )
+ , translate2 ( 0,0,0 )
+ , translate3 ( 0,0,0 )
+ , scale ( 1,1,1 )
{}
virtual ~MayaTransformation () {}
@@ -75,11 +76,12 @@
static const size_t PHASE_SCALE = 4;
static const size_t PHASE_TRANS3 = 5;
- std::vector<double> translate1; // = 0,0,0
+ MVector translate1; // = 0,0,0
MQuaternion rotation; // = 1,0,0,0
- std::vector<double> translate2; // = 0,0,0
- std::vector<double> scale; // = 1,1,1
- std::vector<double> translate3; // = 0,0,0
+ MVector translate2; // = 0,0,0
+ MVector scale; // = 1,1,1
+ MVector translate3; // = 0,0,0
+ MVector skew;
// 5 phases
size_t phase;
@@ -146,6 +148,41 @@
MayaDM::Transform* transformNode,
const COLLADAFW::Node* rootNode );
+ /**
+ * Returns true, if the transform values from the framework is conform to the maya
+ * transformation and fills the maya transform values.
+ */
+ bool isValidMayaTransform (
+ const COLLADAFW::Node* rootNode,
+ MayaTransformation& mayaTransform );
+
+ /**
+ * Set the transform values.
+ */
+ void importDecomposedTransform (
+ const MayaTransformation &mayaTransform,
+ MayaDM::Transform* transformNode );
+
+ /**
+ * Imports the transform values from a transform matrix.
+ * Data loss: no animation possible!
+ */
+ void importMatrixTransform (
+ const COLLADAFW::Node* rootNode,
+ MayaDM::Transform* transformNode );
+
+ /**
+ * Creates a node or joint object.
+ */
+ MayaDM::Transform* createNode (
+ const COLLADAFW::Node* node,
+ const COLLADAFW::UniqueId* parentNodeId );
+
+ /**
+ * Converts the skew into a matrix.
+ */
+ void skewValuesToMayaMatrix ( const COLLADAFW::Skew* skew, MMatrix& matrix ) const;
+
};
}
Modified: branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneExporter.cpp
===================================================================
--- branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneExporter.cpp 2009-01-23 09:28:50 UTC (rev 318)
+++ branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneExporter.cpp 2009-01-23 13:32:18 UTC (rev 319)
@@ -756,7 +756,7 @@
// Compute center of interest.
double centerOfInterestDistance = camera.centerOfInterestPoint ( MSpace::kObject ).z;
- MVector front ( matrix[2][0], matrix[2][2], matrix[2][2] );
+ MVector front ( matrix[2][0], matrix[2][1], matrix[2][2] );
MVector centerOfInterest = eye + ( front * centerOfInterestDistance );
float interestPosition[3] = {
COLLADABU::Math::Utils::equalsZero( centerOfInterest.x ) ? 0.0f : (float) centerOfInterest.x,
Modified: branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneImporter.cpp
===================================================================
--- branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneImporter.cpp 2009-01-23 09:28:50 UTC (rev 318)
+++ branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneImporter.cpp 2009-01-23 13:32:18 UTC (rev 319)
@@ -26,6 +26,7 @@
#include "COLLADAFWRotate.h"
#include "COLLADAFWScale.h"
#include "COLLADAFWTranslate.h"
+#include "COLLADAFWLookat.h"
#include "Math/COLLADABUMathMatrix4.h"
@@ -63,6 +64,38 @@
}
// -----------------------------------
+ void VisualSceneImporter::importNode (
+ const COLLADAFW::Node* node,
+ const COLLADAFW::UniqueId* parentNodeId )
+ {
+ // Create the node object (joint or node)
+ MayaDM::Transform* transformNode = createNode ( node, parentNodeId );
+ String nodeName = node->getName ();
+ String nodeSid = node->getSid ();
+
+ // Set the node name in the list of names.
+ mNodeNamesMap [ node->getUniqueId () ] = nodeName;
+
+ // Import the tranformations
+ importTransformations ( transformNode, node );
+
+ // Import instance geometry
+ readGeometryInstances ( transformNode, node );
+
+ // TODO
+// readNodeInstances ( )
+
+ // Recursive call for all child elements.
+ const COLLADAFW::NodeArray& childNodes = node->getChildNodes ();
+ size_t numChildNodes = childNodes.getCount ();
+ for ( size_t i=0; i<numChildNodes; ++i )
+ {
+ COLLADAFW::Node* childNode = childNodes [i];
+ importNode ( childNode, &node->getUniqueId () );
+ }
+ }
+
+ // -----------------------------------
bool VisualSceneImporter::readGeometryInstances (
MayaDM::Transform* transformNode,
const COLLADAFW::Node* node )
@@ -92,9 +125,6 @@
MayaDM::Transform* transformNode,
const COLLADAFW::Node* rootNode )
{
- // Get the current maya ascii file to write the data.
- FILE* file = getDocumentImporter ()->getFile ();
-
// This is the order of the transforms:
//
// matrix = [SP-1 * S * SH * SP * ST] * [RP-1 * RA * R * JO * RP * RT] * T
@@ -113,177 +143,25 @@
// T* R* T* S* T*, if the order differs from, we have to transform with a matrix (but
// with matrix transformation is no animation possible).
MayaTransformation mayaTransform;
- bool validMayaTransform = true;
- const COLLADAFW::TransformationArray& transforms = rootNode->getTransformations ();
- size_t numTransforms = transforms.getCount ();
- for ( size_t i=0; i<numTransforms && validMayaTransform; ++i )
- {
- const COLLADAFW::Transformation* transform = transforms [i];
- COLLADAFW::Transformation::TransformationType transformType;
- transformType = transform->getTransformationType ();
-
- switch ( transformType )
- {
- case COLLADAFW::Transformation::LOOKAT:
- break;
- case COLLADAFW::Transformation::MATRIX:
- break;
- case COLLADAFW::Transformation::ROTATE:
- {
- if ( mayaTransform.phase <= MayaTransformation::PHASE_ROTATE )
- {
- // Set the actual phase to a rotate phase.
- mayaTransform.phase = MayaTransformation::PHASE_ROTATE;
-
- // Write the current rotation in a quaternion and
- // multiplicate with the existing rotation.
- COLLADAFW::Rotate* rotation = ( COLLADAFW::Rotate* )transform;
- double angle = rotation->getRotationAngle ();
- COLLADABU::Math::Vector3& axis = rotation->getRotationAxis ();
- MVector mayaAxis ( axis.x, axis.y, axis.z );
- MQuaternion quaternion ( COLLADABU::Math::Utils::degToRad(angle), mayaAxis );
-
- // The order of the multiplication is deciding!
- mayaTransform.rotation = quaternion * mayaTransform.rotation;
- }
- else validMayaTransform = false;
- }
- break;
- case COLLADAFW::Transformation::SCALE:
- if ( mayaTransform.phase <= MayaTransformation::PHASE_SCALE )
- {
- // Set the actual phase to a scale phase.
- mayaTransform.phase = MayaTransformation::PHASE_SCALE;
-
- // Write the current rotation in a quaternion and
- // multiplicate with the existing rotation.
- COLLADAFW::Scale* scale = ( COLLADAFW::Scale* )transform;
- COLLADABU::Math::Vector3& scaleVec = scale->getScale ();
- for ( size_t j=0; j<3; ++j )
- mayaTransform.scale[j] *= scaleVec[j];
- }
- else validMayaTransform = false;
- break;
- case COLLADAFW::Transformation::SKEW:
- break;
- case COLLADAFW::Transformation::TRANSLATE:
- {
- // Set the actual phase to a scale phase.
- if ( ( mayaTransform.phase != MayaTransformation::PHASE_TRANS1 ) &&
- ( mayaTransform.phase != MayaTransformation::PHASE_TRANS2 ) &&
- ( mayaTransform.phase != MayaTransformation::PHASE_TRANS3 ) )
- {
- mayaTransform.phase += 1;
- }
-
- // Write the current rotation in a quaternion and
- // multiplicate with the existing rotation.
- COLLADAFW::Translate* translate = ( COLLADAFW::Translate* )transform;
- COLLADABU::Math::Vector3 translation = translate->getTranslation ();
- if ( mayaTransform.phase == MayaTransformation::PHASE_TRANS1 )
- {
- for ( size_t j=0; j<3; ++j )
- mayaTransform.translate1[j] += translation [j];
- }
- else if ( mayaTransform.phase == MayaTransformation::PHASE_TRANS2 )
- {
- for ( size_t j=0; j<3; ++j )
- mayaTransform.translate2[j] += translation [j];
- }
- else if ( mayaTransform.phase == MayaTransformation::PHASE_TRANS3 )
- {
- for ( size_t j=0; j<3; ++j )
- mayaTransform.translate3[j] += translation [j];
- }
- }
- break;
- default:
- break;
- }
- }
-
+ bool validMayaTransform = isValidMayaTransform ( rootNode, mayaTransform );
if ( validMayaTransform )
{
- // Write the transformations directly into the maya file.
- std::vector<double> mayaTranslate3 = mayaTransform.translate3;
- MVector translate3 ( mayaTranslate3 [0], mayaTranslate3 [1], mayaTranslate3 [2] );
- MVector inverseScalePivot ( mayaTranslate3 [0], mayaTranslate3 [1], mayaTranslate3 [2] );
- MVector scalePivot = inverseScalePivot * (-1);
-
- std::vector<double> mayaTranslate2 = mayaTransform.translate2;
- MVector translate2 ( mayaTranslate2 [0], mayaTranslate2 [1], mayaTranslate2 [2] );
- MVector inverseRotatePivot = translate2 - translate3;
- MVector rotatePivot = inverseRotatePivot * (-1);
-
- std::vector<double> mayaTranslate1 = mayaTransform.translate1;
- MVector translate1 ( mayaTranslate1 [0], mayaTranslate1 [1], mayaTranslate1 [2] );
- MVector translate = translate1 - rotatePivot;
- MVector tester = translate1 + translate2 + translate3;
-
- MQuaternion mayaRotate = mayaTransform.rotation;
- MEulerRotation eulerRotation = mayaRotate.asEulerRotation ();
- MEulerRotation::RotationOrder order = eulerRotation.order;
- MVector rotation = eulerRotation.asVector ();
-
- std::vector<double> mayaScale = mayaTransform.scale;
- MVector scale ( mayaScale[0], mayaScale[1], mayaScale[2] );
-
- if ( translate != MVector (0, 0, 0) )
- transformNode->setTranslate ( MayaDM::double3 ( translate.x, translate.y, translate.z ) );
- if ( rotation != MVector (0, 0, 0) )
- transformNode->setRotate ( MayaDM::double3 ( COLLADABU::Math::Utils::radToDeg(rotation.x), COLLADABU::Math::Utils::radToDeg(rotation.y), COLLADABU::Math::Utils::radToDeg(rotation.z) ) );
- if ( scale != MVector (1, 1, 1) )
- transformNode->setScale ( MayaDM::double3 ( mayaScale[0], mayaScale[1], mayaScale[2] ) );
-
- // TODO Maya only knows skews around the x, y or z axis as shears, no free axes.
- // So we only import skews around the standard axes, others will be ignored.
-// if (IsEquivalent(t->GetRotateAxis(), FMVector3::XAxis) && IsEquivalent(t->GetAroundAxis(), FMVector3::YAxis)) wantedBucket = SKEW_XY;
-// else if (IsEquivalent(t->GetRotateAxis(), FMVector3::XAxis) && IsEquivalent(t->GetAroundAxis(), FMVector3::ZAxis)) wantedBucket = SKEW_XZ;
-// else if (IsEquivalent(t->GetRotateAxis(), FMVector3::YAxis) && IsEquivalent(t->GetAroundAxis(), FMVector3::ZAxis)) wantedBucket = SKEW_YZ;
-// transformNode->setShear ( MayaDM::double3 ( translate.x, translate.y, translate.z ) );
-
- if ( rotatePivot != MVector (0, 0, 0) )
- transformNode->setRotatePivot ( MayaDM::double3 ( rotatePivot.x, rotatePivot.y, rotatePivot.z ) );
- if ( scalePivot != MVector (0, 0, 0) )
- transformNode->setScalePivot ( MayaDM::double3 ( scalePivot.x, scalePivot.y, scalePivot.z ) );
-
- if ( order != MEulerRotation::kXYZ )
- transformNode->setRotateOrder ( order );
+ // Set the transform values.
+ importDecomposedTransform ( mayaTransform, transformNode );
}
else
{
// Set the transform matrix to the transform object
- COLLADABU::Math::Matrix4 transformMatrix;
- rootNode->getTransformationMatrix ( transformMatrix );
- double mtx[4][4];
- convertMatrix4ToTransposedDouble4x4 ( transformMatrix, mtx );
- MMatrix matrix ( mtx );
- MTransformationMatrix tm ( matrix );
-
- MStatus status;
- MVector transVec = tm.getTranslation ( MSpace::kTransform, &status );
- transformNode->setTranslate ( MayaDM::double3 ( transVec.x, transVec.y, transVec.z ));
-
- double rotation[3];
- MTransformationMatrix::RotationOrder order;
- tm.getRotation ( rotation, order, MSpace::kTransform );
- transformNode->setRotate ( MayaDM::double3 ( rotation[0], rotation[1], rotation[2] ) );
-
- double scale[3];
- tm.getScale ( scale, MSpace::kTransform );
- transformNode->setScale ( MayaDM::double3 ( scale[0], scale[1], scale[2] ) );
-
- double shear[3];
- tm.getShear ( shear, MSpace::kTransform );
- transformNode->setShear ( MayaDM::double3 ( shear[0], shear[1], shear[2] ) );
-
+ importMatrixTransform ( rootNode, transformNode );
}
return true;
}
// -----------------------------------
- void VisualSceneImporter::convertMatrix4ToTransposedDouble4x4( const COLLADABU::Math::Matrix4& inputMatrix, double outputMatrix[][4] )
+ void VisualSceneImporter::convertMatrix4ToTransposedDouble4x4 (
+ const COLLADABU::Math::Matrix4& inputMatrix,
+ double outputMatrix[][4] )
{
if (COLLADABU::Math::Utils::equalsZero(inputMatrix[0][0])) outputMatrix[0][0] = 0.0;
else outputMatrix[0][0] = inputMatrix[0][0];
@@ -319,14 +197,42 @@
}
// -----------------------------------
- void VisualSceneImporter::importNode (
+ void VisualSceneImporter::importMatrixTransform (
+ const COLLADAFW::Node* rootNode,
+ MayaDM::Transform* transformNode )
+ {
+ COLLADABU::Math::Matrix4 transformMatrix;
+ rootNode->getTransformationMatrix ( transformMatrix );
+ double mtx[4][4];
+ convertMatrix4ToTransposedDouble4x4 ( transformMatrix, mtx );
+ MMatrix matrix ( mtx );
+ MTransformationMatrix tm ( matrix );
+
+ MStatus status;
+ MVector transVec = tm.getTranslation ( MSpace::kTransform, &status );
+ transformNode->setTranslate ( MayaDM::double3 ( transVec.x, transVec.y, transVec.z ));
+
+ double rotation[3];
+ MTransformationMatrix::RotationOrder order;
+ tm.getRotation ( rotation, order, MSpace::kTransform );
+ transformNode->setRotate ( MayaDM::double3 ( rotation[0], rotation[1], rotation[2] ) );
+
+ double scale[3];
+ tm.getScale ( scale, MSpace::kTransform );
+ transformNode->setScale ( MayaDM::double3 ( scale[0], scale[1], scale[2] ) );
+
+ double shear[3];
+ tm.getShear ( shear, MSpace::kTransform );
+ transformNode->setShear ( MayaDM::double3 ( shear[0], shear[1], shear[2] ) );
+ }
+
+ // -----------------------------------
+ MayaDM::Transform* VisualSceneImporter::createNode (
const COLLADAFW::Node* node,
const COLLADAFW::UniqueId* parentNodeId )
{
String nodeName = node->getName ();
String nodeSid = node->getSid ();
-
- mNodeNamesMap [ node->getUniqueId () ] = nodeName;
// Get the current maya ascii file to write the data.
FILE* file = getDocumentImporter ()->getFile ();
@@ -365,19 +271,205 @@
throw new ColladaMayaException ( message );
}
- // Import the tranformations
- importTransformations ( transformNode, node );
+ return transformNode;
+ }
- // Import instance geometry
- readGeometryInstances ( transformNode, node );
+ // -----------------------------------
+ void VisualSceneImporter::importDecomposedTransform (
+ const MayaTransformation &mayaTransform,
+ MayaDM::Transform* transformNode )
+ {
+ // Write the transformations directly into the maya file.
+ MVector translate3 = mayaTransform.translate3;
+ MVector inverseScalePivot ( translate3 [0], translate3 [1], translate3 [2] );
+ MVector scalePivot = inverseScalePivot * (-1);
- // Recursive call for all child elements.
- const COLLADAFW::NodeArray& childNodes = node->getChildNodes ();
- size_t numChildNodes = childNodes.getCount ();
- for ( size_t i=0; i<numChildNodes; ++i )
+ MVector translate2 = mayaTransform.translate2;
+ MVector inverseRotatePivot = translate2 - translate3;
+ MVector rotatePivot = inverseRotatePivot * (-1);
+
+ MVector translate1 = mayaTransform.translate1;
+ MVector translate = translate1 - rotatePivot;
+ MVector tester = translate1 + translate2 + translate3;
+
+ MQuaternion mayaRotate = mayaTransform.rotation;
+ MEulerRotation eulerRotation = mayaRotate.asEulerRotation ();
+ MEulerRotation::RotationOrder order = eulerRotation.order;
+ MVector rotation = eulerRotation.asVector ();
+
+ MVector scale = mayaTransform.scale;
+ MVector skew = mayaTransform.skew;
+
+ if ( translate != MVector (0, 0, 0) )
+ transformNode->setTranslate ( MayaDM::double3 ( translate.x, translate.y, translate.z ) );
+ if ( rotation != MVector (0, 0, 0) )
+ transformNode->setRotate ( MayaDM::double3 ( COLLADABU::Math::Utils::radToDeg(rotation.x), COLLADABU::Math::Utils::radToDeg(rotation.y), COLLADABU::Math::Utils::radToDeg(rotation.z) ) );
+ if ( scale != MVector (1, 1, 1) )
+ transformNode->setScale ( MayaDM::double3 ( scale[0], scale[1], scale[2] ) );
+
+ if ( skew != MVector (0, 0, 0))
+ transformNode->setShear ( MayaDM::double3 ( skew.x, skew.y, skew.z ) );
+
+ if ( rotatePivot != MVector (0, 0, 0) )
+ transformNode->setRotatePivot ( MayaDM::double3 ( rotatePivot.x, rotatePivot.y, rotatePivot.z ) );
+ if ( scalePivot != MVector (0, 0, 0) )
+ transformNode->setScalePivot ( MayaDM::double3 ( scalePivot.x, scalePivot.y, scalePivot.z ) );
+
+ if ( order != MEulerRotation::kXYZ )
+ transformNode->setRotateOrder ( order );
+ }
+
+ // -----------------------------------
+ bool VisualSceneImporter::isValidMayaTransform (
+ const COLLADAFW::Node* rootNode,
+ MayaTransformation& mayaTransform )
+ {
+ bool validMayaTransform = true;
+
+ const COLLADAFW::TransformationArray& transforms = rootNode->getTransformations ();
+ size_t numTransforms = transforms.getCount ();
+ for ( size_t i=0; i<numTransforms && validMayaTransform; ++i )
{
- COLLADAFW::Node* childNode = childNodes [i];
- importNode ( childNode, &node->getUniqueId () );
+ const COLLADAFW::Transformation* transform = transforms [i];
+ COLLADAFW::Transformation::TransformationType transformType;
+ transformType = transform->getTransformationType ();
+
+ switch ( transformType )
+ {
+ case COLLADAFW::Transformation::LOOKAT:
+ // TODO
+ {
+ /**
+ * Positioning and orienting a camera or object in the scene is often
+ * complicated when using a matrix. A lookat transform is an intuitive
+ * way to specify an eye position, interest point, and orientation.
+ */
+ COLLADAFW::Lookat* lookat = ( COLLADAFW::Lookat* )transform;
+
+ /** The position of the object. */
+ COLLADABU::Math::Vector3& eyePosition = lookat->getEyePosition ();
+ /** The position of the interest point. */
+ COLLADABU::Math::Vector3& interestPosition = lookat->getInterestPosition ();
+ /** The direction that points up. */
+ COLLADABU::Math::Vector3& upPosition = lookat->getUpPosition ();
+
+ // TODO Do anything with this values!
+
+ assert ("Lookat not implemented!");
+ break;
+ }
+ case COLLADAFW::Transformation::MATRIX:
+ // Nothing to do, the matrix will be read automatically.
+ break;
+ case COLLADAFW::Transformation::ROTATE:
+ {
+ if ( mayaTransform.phase <= MayaTransformation::PHASE_ROTATE )
+ {
+ // Set the actual phase to a rotate phase.
+ mayaTransform.phase = MayaTransformation::PHASE_ROTATE;
+
+ // Write the current rotation in a quaternion and
+ // multiplicate with the existing rotation.
+ COLLADAFW::Rotate* rotation = ( COLLADAFW::Rotate* )transform;
+ double angle = rotation->getRotationAngle ();
+ COLLADABU::Math::Vector3& axis = rotation->getRotationAxis ();
+ MVector mayaAxis ( axis.x, axis.y, axis.z );
+ MQuaternion quaternion ( COLLADABU::Math::Utils::degToRad(angle), mayaAxis );
+
+ // The order of the multiplication is deciding!
+ mayaTransform.rotation = quaternion * mayaTransform.rotation;
+ }
+ else validMayaTransform = false;
+ }
+ break;
+ case COLLADAFW::Transformation::SCALE:
+ if ( mayaTransform.phase <= MayaTransformation::PHASE_SCALE )
+ {
+ // Set the actual phase to a scale phase.
+ mayaTransform.phase = MayaTransformation::PHASE_SCALE;
+
+ COLLADAFW::Scale* scale = ( COLLADAFW::Scale* )transform;
+ COLLADABU::Math::Vector3& scaleVec = scale->getScale ();
+ for ( unsigned int k=0; k<3; ++k )
+ mayaTransform.scale [k] = scaleVec [k];
+ }
+ else validMayaTransform = false;
+ break;
+ case COLLADAFW::Transformation::SKEW:
+ {
+ COLLADAFW::Skew* skew = ( COLLADAFW::Skew* )transform;
+
+ MMatrix matrix;
+ skewValuesToMayaMatrix ( skew, matrix );
+ MTransformationMatrix tm ( matrix );
+
+ double shear[3];
+ tm.getShear ( shear, MSpace::kTransform );
+
+ for ( unsigned int k=0; k<3; ++k )
+ mayaTransform.skew [k] = shear [k];
+ break;
+ }
+ case COLLADAFW::Transformation::TRANSLATE:
+ {
+ // Set the actual phase to a scale phase.
+ if ( ( mayaTransform.phase != MayaTransformation::PHASE_TRANS1 ) &&
+ ( mayaTransform.phase != MayaTransformation::PHASE_TRANS2 ) &&
+ ( mayaTransform.phase != MayaTransformation::PHASE_TRANS3 ) )
+ {
+ mayaTransform.phase += 1;
+ }
+
+ COLLADAFW::Translate* translate = ( COLLADAFW::Translate* )transform;
+ COLLADABU::Math::Vector3 translation = translate->getTranslation ();
+ if ( mayaTransform.phase == MayaTransformation::PHASE_TRANS1 )
+ {
+ for ( unsigned int j=0; j<3; ++j )
+ mayaTransform.translate1[j] += translation [j];
+ }
+ else if ( mayaTransform.phase == MayaTransformation::PHASE_TRANS2 )
+ {
+ for ( unsigned int j=0; j<3; ++j )
+ mayaTransform.translate2[j] += translation [j];
+ }
+ else if ( mayaTransform.phase == MayaTransformation::PHASE_TRANS3 )
+ {
+ for ( unsigned int j=0; j<3; ++j )
+ mayaTransform.translate3[j] += translation [j];
+ }
+ }
+ break;
+ default:
+ std::cerr << "Unknown transformation type!" << endl;
+ assert ( "Unknown transformation type!" );
+ break;
+ }
}
+
+ return validMayaTransform;
}
+
+ // -----------------------------------
+ void VisualSceneImporter::skewValuesToMayaMatrix (
+ const COLLADAFW::Skew* skew, MMatrix& matrix ) const
+ {
+ float s = tanf ( COLLADABU::Math::Utils::degToRadF ( skew->getAngle () ) );
+
+ COLLADABU::Math::Vector3& rotateAxis = skew->getRotateAxis();
+ COLLADABU::Math::Vector3& translateAxis = skew->getRotateAxis();
+
+ for ( int row = 0; row < 3; ++row )
+ {
+ for ( int col = 0; col < 3; ++col )
+ {
+ matrix[col][row] = ((row == col) ? 1.0f : 0.0f) + s * (float)rotateAxis [col] * (float)translateAxis [row];
+ }
+ }
+
+ matrix[0][3] = matrix[1][3] = matrix[2][3] = 0.0f;
+ matrix[3][0] = matrix[3][1] = matrix[3][2] = 0.0f;
+ matrix[3][3] = 1.0f;
+ }
+
+
}
\ No newline at end of file
Modified: branches/nextgen/COLLADASaxFrameworkLoader/include/COLLADASaxFWLNodeLoader.h
===================================================================
--- branches/nextgen/COLLADASaxFrameworkLoader/include/COLLADASaxFWLNodeLoader.h 2009-01-23 09:28:50 UTC (rev 318)
+++ branches/nextgen/COLLADASaxFrameworkLoader/include/COLLADASaxFWLNodeLoader.h 2009-01-23 13:32:18 UTC (rev 319)
@@ -125,6 +125,9 @@
/** Sax callback function for the float data of a scale element.*/
virtual bool data__scale( const double* data, size_t length );
+ virtual bool begin__skew( const skew__AttributeData& attributeData );
+ virtual bool end__skew();
+ virtual bool data__skew( const double* value, size_t length );
/** Sax callback function for the beginning of an instance geometry element.*/
virtual bool begin__node__instance_geometry( const node__instance_geometry__AttributeData& attributeData );
@@ -138,6 +141,11 @@
/** Sax callback function for the ending of an instance node element.*/
virtual bool end__instance_node();
+
+ virtual bool begin__lookat( const lookat__AttributeData& attributeData );
+ virtual bool end__lookat();
+ virtual bool data__lookat( const double* value, size_t length );
+
};
} // namespace COLLADASAXFWL
Modified: branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLNodeLoader.cpp
===================================================================
--- branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLNodeLoader.cpp 2009-01-23 09:28:50 UTC (rev 318)
+++ branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLNodeLoader.cpp 2009-01-23 13:32:18 UTC (rev 319)
@@ -14,6 +14,8 @@
#include "COLLADAFWTranslate.h"
#include "COLLADAFWRotate.h"
#include "COLLADAFWScale.h"
+#include "COLLADAFWSkew.h"
+#include "COLLADAFWLookat.h"
#include "COLLADAFWMatrix.h"
#include "COLLADAFWGeometry.h"
@@ -223,7 +225,58 @@
return true;
}
- //------------------------------
+ //------------------------------
+ bool NodeLoader::begin__skew ( const skew__AttributeData& attributeData )
+ {
+ return beginTransformation<COLLADAFW::Skew>();
+ }
+
+ //------------------------------
+ bool NodeLoader::end__skew ()
+ {
+ return endTransformation();
+ }
+
+ //------------------------------
+ bool NodeLoader::data__skew ( const double* data, size_t length )
+ {
+ COLLADAFW::Skew* skew = 0;
+
+ if (mCurrentTransformation->getTransformationType() == COLLADAFW::Transformation::SKEW)
+ skew = (COLLADAFW::Skew*)(mCurrentTransformation);
+
+ assert(skew);
+
+ double angle = skew->getAngle ();
+ COLLADABU::Math::Vector3& rotateAxis = skew->getRotateAxis ();
+ COLLADABU::Math::Vector3& aroundAxis = skew->getTranslateAxis ();
+
+ size_t i = 0;
+ if ( i < length && mTransformationNumbersReceived == 0 )
+ {
+ angle = data [mTransformationNumbersReceived++];
+ ++i;
+ }
+ if ( i < length && mTransformationNumbersReceived > 0 && mTransformationNumbersReceived < 4 )
+ {
+ for ( size_t j=0; j<3 && i<length; ++j, ++i )
+ {
+ rotateAxis[j] = data[i];
+ mTransformationNumbersReceived++;
+ }
+ }
+ if ( i < length && mTransformationNumbersReceived >= 4 )
+ {
+ for ( size_t j=0; j<3 && i<length; ++j, ++i )
+ {
+ aroundAxis[j] = data[i];
+ mTransformationNumbersReceived++;
+ }
+ }
+ return true;
+ }
+
+ //------------------------------
bool NodeLoader::begin__node__instance_geometry( const node__instance_geometry__AttributeData& attributeData )
{
COLLADAFW::Node* currentNode = mNodeStack.top();
@@ -263,5 +316,57 @@
return true;
}
+ //------------------------------
+ bool NodeLoader::begin__lookat ( const lookat__AttributeData& attributeData )
+ {
+ return beginTransformation<COLLADAFW::Lookat>();
+ }
+ //------------------------------
+ bool NodeLoader::end__lookat ()
+ {
+ return endTransformation();
+ }
+
+ //------------------------------
+ bool NodeLoader::data__lookat ( const double* data, size_t length )
+ {
+ COLLADAFW::Lookat* lookat = 0;
+
+ if (mCurrentTransformation->getTransformationType() == COLLADAFW::Transformation::LOOKAT)
+ lookat = (COLLADAFW::Lookat*)(mCurrentTransformation);
+
+ assert(lookat);
+
+ COLLADABU::Math::Vector3& eyePosition = lookat->getEyePosition ();
+ COLLADABU::Math::Vector3& interestPosition = lookat->getInterestPosition ();
+ COLLADABU::Math::Vector3& upPosition = lookat->getUpPosition ();
+
+ size_t i = 0;
+ if ( i < length && mTransformationNumbersReceived < 3 )
+ {
+ for ( size_t j=0; j<3 && i<length; ++j, ++i )
+ {
+ eyePosition[j] = data[i];
+ mTransformationNumbersReceived++;
+ }
+ }
+ if ( i < length && mTransformationNumbersReceived >= 3 && mTransformationNumbersReceived < 6 )
+ {
+ for ( size_t j=0; j<3 && i<length; ++j, ++i )
+ {
+ interestPosition[j] = data[i];
+ mTransformationNumbersReceived++;
+ }
+ }
+ if ( i < length && mTransformationNumbersReceived >= 6 )
+ {
+ for ( size_t j=0; j<3 && i<length; ++j, ++i )
+ {
+ upPosition[j] = data[i];
+ mTransformationNumbersReceived++;
+ }
+ }
+ return true;
+ }
} // namespace COLLADASaxFWL
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jud...@us...> - 2009-01-23 09:28:58
|
Revision: 318
http://colladamaya.svn.sourceforge.net/colladamaya/?rev=318&view=rev
Author: judithschenk
Date: 2009-01-23 09:28:50 +0000 (Fri, 23 Jan 2009)
Log Message:
-----------
maya: visual scene graph implemented
Modified Paths:
--------------
branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix3.h
branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix4.h
branches/nextgen/COLLADAFramework/include/COLLADAFWMesh.h
branches/nextgen/COLLADAFramework/include/COLLADAFWMeshPrimitive.h
branches/nextgen/COLLADAFramework/include/COLLADAFWMeshPrimitiveWithFaceVertexCount.h
branches/nextgen/COLLADAFramework/include/COLLADAFWScale.h
branches/nextgen/COLLADAFramework/include/COLLADAFWTransformation.h
branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj
branches/nextgen/COLLADAFramework/src/COLLADAFWMeshPrimitive.cpp
branches/nextgen/COLLADAFramework/src/COLLADAFWScale.cpp
branches/nextgen/COLLADAMaya/COLLADAMaya.sln
branches/nextgen/COLLADAMaya/include/COLLADAMayaBaseImporter.h
branches/nextgen/COLLADAMaya/include/COLLADAMayaDocumentImporter.h
branches/nextgen/COLLADAMaya/include/COLLADAMayaGeometryImporter.h
branches/nextgen/COLLADAMaya/include/COLLADAMayaMaterialImporter.h
branches/nextgen/COLLADAMaya/include/COLLADAMayaVisualSceneImporter.h
branches/nextgen/COLLADAMaya/scripts/COLLADAMaya.vcproj
branches/nextgen/COLLADAMaya/src/COLLADAMayaDocumentExporter.cpp
branches/nextgen/COLLADAMaya/src/COLLADAMayaDocumentImporter.cpp
branches/nextgen/COLLADAMaya/src/COLLADAMayaGeometryImporter.cpp
branches/nextgen/COLLADAMaya/src/COLLADAMayaVisualSceneImporter.cpp
branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLColladaParserAutoGenPrivate.cpp
branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLFileLoader.cpp
branches/nextgen/COLLADASaxFrameworkLoader/src/COLLADASaxFWLSourceArrayLoader.cpp
branches/nextgen/Externals/MayaDataModel/include/MayaDMAddMatrix.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMAnimClip.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMAnimCurve.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMAnnotationShape.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMAvgSurfacePoints.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMBlend.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMBlendDevice.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMBlendShape.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMBlendWeighted.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMCacheBlend.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMCacheFile.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMCharacter.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMCharacterMap.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMChooser.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMClipScheduler.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMCluster.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMControlPoint.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMCurveFromMeshEdge.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMCurveFromSubdivEdge.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMCurveFromSubdivFace.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMDagPose.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMDetachCurve.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMDetachSurface.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMDisplayLayerManager.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMExpression.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMFfd.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMFlow.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMFluidShape.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMFurFeedback.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMGeoConnector.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMGlobalStitch.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMHairConstraint.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMHairSystem.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMHardenPoint.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMHikHandle.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMInsertKnotCurve.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMInsertKnotSurface.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMJointCluster.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMLodGroup.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMLodThresholds.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMLoft.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMMesh.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMMultMatrix.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMNComponent.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMParticle.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPlusMinusAverage.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPointEmitter.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPolyAppend.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPolyAppendVertex.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPolyCrease.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPolyCreateFace.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPolyMoveVertex.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPolySplit.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPolyToSubdiv.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPolyTweak.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPolyTweakUV.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMPolyWedgeFace.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMReference.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMRenderLayer.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMRenderLayerManager.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMRigidBody.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMRigidSolver.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMRoundConstantRadius.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMSkinCluster.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMSmoothCurve.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMSmoothTangentSrf.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMSoftMod.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMSpring.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMStitchSrf.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMStroke.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMSubdTweak.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMSubdTweakUV.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMSubdiv.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMSubdivToPoly.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMTextureToGeom.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMTrim.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMTweak.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMTypes.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMUvChooser.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMWeightGeometryFilter.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMWire.h
branches/nextgen/Externals/MayaDataModel/include/MayaDMWrap.h
Added Paths:
-----------
branches/nextgen/COLLADAFramework/include/COLLADAFWShear.h
Removed Paths:
-------------
branches/nextgen/COLLADAMaya/build/
Modified: branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix3.h
===================================================================
--- branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix3.h 2009-01-22 16:15:03 UTC (rev 317)
+++ branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix3.h 2009-01-23 09:28:50 UTC (rev 318)
@@ -15,9 +15,6 @@
#include "COLLADABUMathVector3.h"
#include <memory>
-// NB All code adapted from Wild Magic 0.2 Matrix math (free source code)
-// http://www.magic-software.com
-
// NOTE. The (x,y,z) coordinate system is assumed to be right-handed.
// Coordinate axis rotation matrices are of the form
// RX = 1 0 0
Modified: branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix4.h
===================================================================
--- branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix4.h 2009-01-22 16:15:03 UTC (rev 317)
+++ branches/nextgen/COLLADABaseUtils/include/Math/COLLADABUMathMatrix4.h 2009-01-23 09:28:50 UTC (rev 318)
@@ -549,41 +549,6 @@
Matrix4 inverse() const;
void makeTransform( const Vector3& position, const Vector3& scale, const Quaternion& orientation );
- void convertToDouble4x4 ( double copy[][4] )
- {
- if (COLLADABU::Math::Utils::equalsZero((*this)[0][0])) copy[0][0] = 0.0;
- else copy[0][0] = (*this)[0][0];
- if (COLLADABU::Math::Utils::equalsZero((*this)[0][1])) copy[1][0] = 0.0;
- else copy[1][0] = (*this)[0][1];
- if (COLLADABU::Math::Utils::equalsZero((*this)[0][2])) copy[2][0] = 0.0;
- else copy[2][0] = (*this)[0][2];
- copy[3][0] = 0;
-
- if (COLLADABU::Math::Utils::equalsZero((*this)[1][0])) copy[0][1] = 0.0;
- else copy[0][1] = (*this)[1][0];
- if (COLLADABU::Math::Utils::equalsZero((*this)[1][1])) copy[1][1] = 0.0;
- else copy[1][1] = (*this)[1][1];
- if (COLLADABU::Math::Utils::equalsZero((*this)[1][2])) copy[2][1] = 0.0;
- else copy[2][1] = (*this)[1][2];
- copy[3][1] = 0;
-
- if (COLLADABU::Math::Utils::equalsZero((*this)[2][0])) copy[0][2] = 0.0;
- else copy[0][2] = (*this)[2][0];
- if (COLLADABU::Math::Utils::equalsZero((*this)[2][1])) copy[1][2] = 0.0;
- else copy[1][2] = (*this)[2][1];
- if (COLLADABU::Math::Utils::equalsZero((*this)[2][2])) copy[2][2] = 0.0;
- else copy[2][2] = (*this)[2][2];
- copy[3][2] = 0;
-
- if (COLLADABU::Math::Utils::equalsZero((*this)[3][0])) copy[0][3] = 0.0;
- else copy[0][3] = (*this)[3][0];
- if (COLLADABU::Math::Utils::equalsZero((*this)[3][1])) copy[1][3] = 0.0;
- else copy[1][3] = (*this)[3][1];
- if (COLLADABU::Math::Utils::equalsZero((*this)[3][2])) copy[2][3] = 0.0;
- else copy[2][3] = (*this)[3][2];
- copy[3][3] = 1;
- }
-
private:
enum State
{
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWMesh.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWMesh.h 2009-01-22 16:15:03 UTC (rev 317)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWMesh.h 2009-01-23 09:28:50 UTC (rev 318)
@@ -23,7 +23,6 @@
namespace COLLADAFW
{
-
/**
* Describes basic geometric meshes using vertex and primitive information.
* Meshes embody a general form of geometric description that primarily
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWMeshPrimitive.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWMeshPrimitive.h 2009-01-22 16:15:03 UTC (rev 317)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWMeshPrimitive.h 2009-01-23 09:28:50 UTC (rev 318)
@@ -230,7 +230,7 @@
*/
void appendEdgeIndices (
std::vector<Edge>& edgeIndices,
- std::map<Edge,int>& edgeIndicesMap );
+ std::map<Edge,size_t>& edgeIndicesMap );
/*
* Appends the data of an edge, if it is not already in the list.
@@ -238,12 +238,12 @@
void appendEdge(
const Edge& edge,
std::vector<Edge>& edgeIndices,
- std::map<Edge,int>& edgeIndicesMap );
+ std::map<Edge,size_t>& edgeIndicesMap );
/*
* Returns the vertex count of the face with the specified index.
*/
- const int getFaceVertexCount ( size_t faceIndex ) const;
+ const int getGroupedVerticesVertexCount ( const size_t faceIndex ) const;
};
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWMeshPrimitiveWithFaceVertexCount.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWMeshPrimitiveWithFaceVertexCount.h 2009-01-22 16:15:03 UTC (rev 317)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWMeshPrimitiveWithFaceVertexCount.h 2009-01-23 09:28:50 UTC (rev 318)
@@ -80,7 +80,7 @@
/*
* Returns the vertex count of the face on the specified index position.
*/
- const int getFaceVertexCount ( size_t faceIndex ) const
+ const int getGroupedVerticesVertexCount ( const size_t faceIndex ) const
{
if ( faceIndex >= mGroupedVerticesVertexCountArray.getCount () )
{
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWScale.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWScale.h 2009-01-22 16:15:03 UTC (rev 317)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWScale.h 2009-01-23 09:28:50 UTC (rev 318)
@@ -1,11 +1,11 @@
/*
-Copyright (c) 2008 NetAllied Systems GmbH
+ Copyright (c) 2008 NetAllied Systems GmbH
-This file is part of COLLADAFramework.
+ This file is part of COLLADAFramework.
-Licensed under the MIT Open Source License,
-for details please see LICENSE file or the website
-http://www.opensource.org/licenses/mit-license.php
+ Licensed under the MIT Open Source License,
+ for details please see LICENSE file or the website
+ http://www.opensource.org/licenses/mit-license.php
*/
#ifndef __COLLADAFW_SCALE_H__
Added: branches/nextgen/COLLADAFramework/include/COLLADAFWShear.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWShear.h (rev 0)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWShear.h 2009-01-23 09:28:50 UTC (rev 318)
@@ -0,0 +1,83 @@
+/*
+ Copyright (c) 2008 NetAllied Systems GmbH
+
+ This file is part of COLLADAFramework.
+
+ Licensed under the MIT Open Source License,
+ for details please see LICENSE file or the website
+ http://www.opensource.org/licenses/mit-license.php
+*/
+
+#ifndef __COLLADAFW_SHEAR_H__
+#define __COLLADAFW_SHEAR_H__
+
+#include "COLLADAFWPrerequisites.h"
+
+
+namespace COLLADAFW
+{
+
+ /**
+ Important assumptions on skew and shears:
+
+ 1) COLLADA uses the RenderMan standard:
+ [ 1+s*dx*ex s*dx*ey s*dx*ez 0 ]
+ [ s*dy*ex 1+s*dy*ey s*dy*ez 0 ]
+ [ s*dz*ex s*dz*ey 1+s*dz*ez 0 ]
+ [ 0 0 0 1 ]
+ where s = tan(skewAngle), if the axises are normalized
+
+ 2) COLLADA and Maya use different matrix row/column ordering.
+
+ 3) Maya uses the following shear transform:
+ [ 1 0 0 0 ]
+ [ xy 1 0 0 ]
+ [ xz yx 1 0 ]
+ [ 0 0 0 1 ]
+ */
+ class Shear
+ {
+ private:
+
+ /**< The axis which is rotated. */
+ COLLADABU::Math::Vector3 mRotateAxis;
+
+ /**< The axis around which to rotate. */
+ COLLADABU::Math::Vector3 mAroundAxis;
+
+ /**< The angle of rotation. */
+ float mAngle;
+
+ public:
+
+ /** Constructor. */
+ Shear() : mAngle (0) {}
+
+ /** Destructor. */
+ virtual ~Shear() {}
+
+ /**< The axis which is rotated. */
+ COLLADABU::Math::Vector3 getRotateAxis() const { return mRotateAxis; }
+ void setRotateAxis(COLLADABU::Math::Vector3 val) { mRotateAxis = val; }
+
+ /**< The axis around which to rotate. */
+ COLLADABU::Math::Vector3 getAroundAxis() const { return mAroundAxis; }
+ void setAroundAxis(COLLADABU::Math::Vector3 val) { mAroundAxis = val; }
+
+ /**< The angle of rotation. */
+ float getAngle() const { return mAngle; }
+ void setAngle(float val) { mAngle = val; }
+
+ private:
+
+ /** Disable default copy ctor. */
+ Shear( const Shear& pre );
+
+ /** Disable default assignment operator. */
+ const Shear& operator= ( const Shear& pre );
+
+ };
+
+} // namespace COLLADAFW
+
+#endif // __COLLADAFW_SHEAR_H__
Modified: branches/nextgen/COLLADAFramework/include/COLLADAFWTransformation.h
===================================================================
--- branches/nextgen/COLLADAFramework/include/COLLADAFWTransformation.h 2009-01-22 16:15:03 UTC (rev 317)
+++ branches/nextgen/COLLADAFramework/include/COLLADAFWTransformation.h 2009-01-23 09:28:50 UTC (rev 318)
@@ -1,11 +1,11 @@
/*
-Copyright (c) 2008 NetAllied Systems GmbH
+ Copyright (c) 2008 NetAllied Systems GmbH
-This file is part of COLLADAFramework.
+ This file is part of COLLADAFramework.
-Licensed under the MIT Open Source License,
-for details please see LICENSE file or the website
-http://www.opensource.org/licenses/mit-license.php
+ Licensed under the MIT Open Source License,
+ for details please see LICENSE file or the website
+ http://www.opensource.org/licenses/mit-license.php
*/
#ifndef __COLLADAFW_TRANSFORMATIONBASE_H__
Modified: branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj
===================================================================
--- branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj 2009-01-22 16:15:03 UTC (rev 317)
+++ branches/nextgen/COLLADAFramework/scripts/COLLADAFramework.vcproj 2009-01-23 09:28:50 UTC (rev 318)
@@ -350,6 +350,30 @@
<File
RelativePath="..\src\COLLADAFWPrecompiledHeaders.cpp"
>
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\src\COLLADAFWRenderState.cpp"
@@ -630,6 +654,10 @@
>
</File>
<File
+ RelativePath="..\include\COLLADAFWShear.h"
+ >
+ </File>
+ <File
RelativePath="..\include\COLLADAFWStableHeaders.h"
>
</File>
Modified: branches/nextgen/COLLADAFramework/src/COLLADAFWMeshPrimitive.cpp
===================================================================
--- branches/nextgen/COLLADAFramework/src/COLLADAFWMeshPrimitive.cpp 2009-01-22 16:15:03 UTC (rev 317)
+++ branches/nextgen/COLLADAFramework/src/COLLADAFWMeshPrimitive.cpp 2009-01-23 09:28:50 UTC (rev 318)
@@ -42,7 +42,7 @@
}
//-----------------------------
- const int MeshPrimitive::getFaceVertexCount( size_t faceIndex ) const
+ const int MeshPrimitive::getGroupedVerticesVertexCount( const size_t faceIndex ) const
{
switch ( mPrimitiveType )
{
@@ -60,7 +60,7 @@
break;
case POLYGONS:
case POLYLIST:
- return ((Polygons*)this)->getFaceVertexCount ( faceIndex );
+ return ((Polygons*)this)->getGroupedVerticesVertexCount ( faceIndex );
break;
default:
std::cerr << "Unknown primitive type: " << mPrimitiveType << std::endl;
@@ -71,7 +71,7 @@
//-----------------------------
void MeshPrimitive::appendEdgeIndices (
std::vector<Edge>& edgeIndices,
- std::map<Edge,int>& edgeIndicesMap )
+ std::map<Edge,size_t>& edgeIndicesMap )
{
// Get the number of grouped vertex elements (faces, holes, tristrips or trifans).
int groupedVertexElementsCount = 0;
@@ -82,7 +82,7 @@
case COLLADAFW::MeshPrimitive::TRIANGLES:
case COLLADAFW::MeshPrimitive::TRIANGLE_FANS:
case COLLADAFW::MeshPrimitive::TRIANGLE_STRIPS:
- groupedVertexElementsCount = this->getFaceCount ();
+ groupedVertexElementsCount = (int)this->getFaceCount ();
break;
case COLLADAFW::MeshPrimitive::POLYGONS:
case COLLADAFW::MeshPrimitive::POLYLIST:
@@ -90,7 +90,7 @@
COLLADAFW::Polygons* polygons = (COLLADAFW::Polygons*)this;
COLLADAFW::Polygons::VertexCountArray& vertexCountArray =
polygons->getGroupedVerticesVertexCountArray ();
- groupedVertexElementsCount = vertexCountArray.getCount ();
+ groupedVertexElementsCount = (int)vertexCountArray.getCount ();
}
break;
default:
@@ -111,17 +111,17 @@
size_t positionIndex=0;
// Iterate over the faces and get the edges.
- for ( size_t faceIndex=0; faceIndex<groupedVertexElementsCount-1; ++faceIndex )
+ for ( int faceIndex=0; faceIndex<groupedVertexElementsCount; ++faceIndex )
{
// The number of edges is always the same
// than the number of vertices in the current face.
- int numEdges = getFaceVertexCount ( faceIndex );
+ int numEdges = getGroupedVerticesVertexCount ( (size_t)faceIndex );
// Reverse for holes.
if ( numEdges < 0 ) numEdges *= -1;
// Go through the edges of the current face and determine the edge values.
- for ( size_t edgeIndex=0; edgeIndex<numEdges; ++edgeIndex )
+ for ( int edgeIndex=0; edgeIndex<numEdges; ++edgeIndex )
{
// Set the edge vertex index values into an edge object.
edgeStartVertexIndex = positionIndices[positionIndex];
@@ -144,10 +144,10 @@
void MeshPrimitive::appendEdge (
const Edge& edge,
std::vector<Edge>& edgeIndices,
- std::map<Edge,int>& edgeIndicesMap )
+ std::map<Edge,size_t>& edgeIndicesMap )
{
// Check if the current edge already exists in the map of edges.
- std::map<Edge,int>::iterator it = edgeIndicesMap.find ( edge );
+ std::map<Edge,size_t>::iterator it = edgeIndicesMap.find ( edge );
if ( it != edgeIndicesMap.end () ) return;
// Push the new edge into the map with it's index value.
Modified: branches/nextgen/COLLADAFramework/src/COLLADAFWScale.cpp
===================================================================
--- branches/nextgen/COLLADAFramework/src/COLLADAFWScale.cpp 2009-01-22 16:15:03 UTC (rev 317)
+++ branches/nextgen/COLLADAFramework/src/COLLADAFWScale.cpp 2009-01-23 09:28:50 UTC (rev 318)
@@ -1,11 +1,11 @@
/*
-Copyright (c) 2008 NetAllied Systems GmbH
+ Copyright (c) 2008 NetAllied Systems GmbH
-This file is part of COLLADAFramework.
+ This file is part of COLLADAFramework.
-Licensed under the MIT Open Source License,
-for details please see LICENSE file or the website
-http://www.opensource.org/licenses/mit-license.php
+ Licensed under the MIT Open Source License,
+ for details please see LICENSE file or the website
+ http://www.opensource.org/licenses/mit-license.php
*/
#include "COLLADAFWStableHeaders.h"
Modified: branches/nextgen/COLLADAMaya/COLLADAMaya.sln
===================================================================
--- branches/nextgen/COLLADAMaya/COLLADAMaya.sln 2009-01-22 16:15:03 UTC (rev 317)
+++ branches/nextgen/COLLADAMaya/COLLADAMaya.sln 2009-01-23 09:28:50 UTC (rev 318)
@@ -33,10 +33,10 @@
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
DebugConsole2008|Win32 = DebugConsole2008|Win32
DebugConsole2008|x64 = DebugConsole2008|x64
+ DebugConsole2009|Win32 = DebugConsole2009|Win32
+ DebugConsole2009|x64 = DebugConsole2009|x64
DebugPlugin2008|Win32 = DebugPlugin2008|Win32
DebugPlugin2008|x64 = DebugPlugin2008|x64
DebugPlugin2009|Win32 = DebugPlugin2009|Win32
@@ -47,10 +47,10 @@
DebugPlugin80|x64 = DebugPlugin80|x64
DebugPlugin85|Win32 = DebugPlugin85|Win32
DebugPlugin85|x64 = DebugPlugin85|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
ReleaseConsole2008|Win32 = ReleaseConsole2008|Win32
ReleaseConsole2008|x64 = ReleaseConsole2008|x64
+ ReleaseConsole2009|Win32 = ReleaseConsole2009|Win32
+ ReleaseConsole2009|x64 = ReleaseConsole2009|x64
ReleasePlugin2008|Win32 = ReleasePlugin2008|Win32
ReleasePlugin2008|x64 = ReleasePlugin2008|x64
ReleasePlugin2009|Win32 = ReleasePlugin2009|Win32
@@ -63,13 +63,14 @@
ReleasePlugin85|x64 = ReleasePlugin85|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {60331F1F-2334-42AF-80A8-A4A6E3299186}.Debug|Win32.ActiveCfg = DebugPlugin80|x64
- {60331F1F-2334-42AF-80A8-A4A6E3299186}.Debug|x64.ActiveCfg = DebugPlugin80|x64
- {60331F1F-2334-42AF-80A8-A4A6E3299186}.Debug|x64.Build.0 = DebugPlugin80|x64
{60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugConsole2008|Win32.ActiveCfg = DebugConsole2008|Win32
{60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugConsole2008|Win32.Build.0 = DebugConsole2008|Win32
{60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugConsole2008|x64.ActiveCfg = DebugConsole2008|x64
{60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugConsole2008|x64.Build.0 = DebugConsole2008|x64
+ {60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugConsole2009|Win32.ActiveCfg = DebugConsole2009|Win32
+ {60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugConsole2009|Win32.Build.0 = DebugConsole2009|Win32
+ {60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugConsole2009|x64.ActiveCfg = DebugConsole2008|x64
+ {60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugConsole2009|x64.Build.0 = DebugConsole2008|x64
{60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugPlugin2008|Win32.ActiveCfg = DebugPlugin2008|Win32
{60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugPlugin2008|Win32.Build.0 = DebugPlugin2008|Win32
{60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugPlugin2008|x64.ActiveCfg = DebugPlugin2008|x64
@@ -90,13 +91,14 @@
{60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugPlugin85|Win32.Build.0 = DebugPlugin85|Win32
{60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugPlugin85|x64.ActiveCfg = DebugPlugin85|x64
{60331F1F-2334-42AF-80A8-A4A6E3299186}.DebugPlugin85|x64.Build.0 = DebugPlugin85|x64
- {60331F1F-2334-42AF-80A8-A4A6E3299186}.Release|Win32.ActiveCfg = ReleasePlugin70|x64
- {60331F1F-2334-42AF-80A8-A4A6E3299186}.Release|x64.ActiveCfg = ReleasePlugin70|x64
- {60331F1F-2334-42AF-80A8-A4A6E3299186}.Release|x64.Build.0 = ReleasePlugin70|x64
{60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleaseConsole2008|Win32.ActiveCfg = ReleaseConsole2008|Win32
{60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleaseConsole2008|Win32.Build.0 = ReleaseConsole2008|Win32
{60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleaseConsole2008|x64.ActiveCfg = ReleaseConsole2008|x64
{60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleaseConsole2008|x64.Build.0 = ReleaseConsole2008|x64
+ {60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleaseConsole2009|Win32.ActiveCfg = ReleaseConsole2009|Win32
+ {60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleaseConsole2009|Win32.Build.0 = ReleaseConsole2009|Win32
+ {60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleaseConsole2009|x64.ActiveCfg = ReleaseConsole2008|x64
+ {60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleaseConsole2009|x64.Build.0 = ReleaseConsole2008|x64
{60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleasePlugin2008|Win32.ActiveCfg = ReleasePlugin2008|Win32
{60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleasePlugin2008|Win32.Build.0 = ReleasePlugin2008|Win32
{60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleasePlugin2008|x64.ActiveCfg = ReleasePlugin2008|x64
@@ -117,14 +119,14 @@
{60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleasePlugin85|Win32.Build.0 = ReleasePlugin85|Win32
{60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleasePlugin85|x64.ActiveCfg = ReleasePlugin85|x64
{60331F1F-2334-42AF-80A8-A4A6E3299186}.ReleasePlugin85|x64.Build.0 = ReleasePlugin85|x64
- {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.Debug|Win32.ActiveCfg = Debug|Win32
- {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.Debug|Win32.Build.0 = Debug|Win32
- {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.Debug|x64.ActiveCfg = Debug|x64
- {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.Debug|x64.Build.0 = Debug|x64
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugConsole2008|Win32.ActiveCfg = Debug fprintf_s|Win32
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugConsole2008|Win32.Build.0 = Debug fprintf_s|Win32
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugConsole2008|x64.ActiveCfg = Debug fprintf_s|x64
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugConsole2008|x64.Build.0 = Debug fprintf_s|x64
+ {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugConsole2009|Win32.ActiveCfg = Debug fprintf_s|Win32
+ {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugConsole2009|Win32.Build.0 = Debug fprintf_s|Win32
+ {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugConsole2009|x64.ActiveCfg = Debug fprintf_s|x64
+ {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugConsole2009|x64.Build.0 = Debug fprintf_s|x64
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugPlugin2008|Win32.ActiveCfg = Debug fprintf_s|Win32
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugPlugin2008|Win32.Build.0 = Debug fprintf_s|Win32
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugPlugin2008|x64.ActiveCfg = Debug fprintf_s|x64
@@ -145,14 +147,14 @@
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugPlugin85|Win32.Build.0 = Debug fprintf_s|Win32
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugPlugin85|x64.ActiveCfg = Debug fprintf_s|x64
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.DebugPlugin85|x64.Build.0 = Debug fprintf_s|x64
- {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.Release|Win32.ActiveCfg = Release|Win32
- {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.Release|Win32.Build.0 = Release|Win32
- {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.Release|x64.ActiveCfg = Release|x64
- {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.Release|x64.Build.0 = Release|x64
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleaseConsole2008|Win32.ActiveCfg = Release fprintf_s|Win32
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleaseConsole2008|Win32.Build.0 = Release fprintf_s|Win32
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleaseConsole2008|x64.ActiveCfg = Release fprintf_s|x64
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleaseConsole2008|x64.Build.0 = Release fprintf_s|x64
+ {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleaseConsole2009|Win32.ActiveCfg = Release fprintf_s|Win32
+ {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleaseConsole2009|Win32.Build.0 = Release fprintf_s|Win32
+ {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleaseConsole2009|x64.ActiveCfg = Release fprintf_s|x64
+ {EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleaseConsole2009|x64.Build.0 = Release fprintf_s|x64
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleasePlugin2008|Win32.ActiveCfg = Release fprintf_s|Win32
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleasePlugin2008|Win32.Build.0 = Release fprintf_s|Win32
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleasePlugin2008|x64.ActiveCfg = Release fprintf_s|x64
@@ -173,14 +175,14 @@
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleasePlugin85|Win32.Build.0 = Release fprintf_s|Win32
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleasePlugin85|x64.ActiveCfg = Release fprintf_s|x64
{EAB66F01-60B5-43C9-B78D-A8B0B545A20B}.ReleasePlugin85|x64.Build.0 = Release fprintf_s|x64
- {2C3C4869-D684-4981-98E7-6D9798B72145}.Debug|Win32.ActiveCfg = Debug|Win32
- {2C3C4869-D684-4981-98E7-6D9798B72145}.Debug|Win32.Build.0 = Debug|Win32
- {2C3C4869-D684-4981-98E7-6D9798B72145}.Debug|x64.ActiveCfg = Debug|x64
- {2C3C4869-D684-4981-98E7-6D9798B72145}.Debug|x64.Build.0 = Debug|x64
{2C3C4869-D684-4981-98E7-6D9798B72145}.DebugConsole2008|Win32.ActiveCfg = Debug|Win32
{2C3C4869-D684-4981-98E7-6D9798B72145}.DebugConsole2008|Win32.Build.0 = Debug|Win32
{2C3C4869-D684-4981-98E7-6D9798B72145}.DebugConsole2008|x64.ActiveCfg = Debug|x64
{2C3C4869-D684-4981-98E7-6D9798B72145}.DebugConsole2008|x64.Build.0 = Debug|x64
+ {2C3C4869-D684-4981-98E7-6D9798B72145}.DebugConsole2009|Win32.ActiveCfg = Debug|Win32
+ {2C3C4869-D684-4981-98E7-6D9798B72145}.DebugConsole2009|Win32.Build.0 = Debug|Win32
+ {2C3C4869-D684-4981-98E7-6D9798B72145}.DebugConsole2009|x64.ActiveCfg = Debug|x64
+ {2C3C4869-D684-4981-98E7-6D9798B72145}.DebugConsole2009|x64.Build.0 = Debug|x64
{2C3C4869-D684-4981-98E7-6D9798B72145}.DebugPlugin2008|Win32.ActiveCfg = Debug|Win32
{2C3C4869-D684-4981-98E7-6D9798B72145}.DebugPlugin2008|Win32.Build.0 = Debug|Win32
{2C3C4869-D684-4981-98E7-6D9798B72145}.DebugPlugin2008|x64.ActiveCfg = Debug|x64
@@ -201,14 +203,14 @@
{2C3C4869-D684-4981-98E7-6D9798B72145}.DebugPlugin85|Win32.Build.0 = Debug|Win32
{2C3C4869-D684-4981-98E7-6D9798B72145}.DebugPlugin85|x64.ActiveCfg = Debug|x64
{2C3C4869-D684-4981-98E7-6D9798B72145}.DebugPlugin85|x64.Build.0 = Debug|x64
- {2C3C4869-D684-4981-98E7-6D9798B72145}.Release|Win32.ActiveCfg = Release|Win32
- {2C3C4869-D684-4981-98E7-6D9798B72145}.Release|Win32.Build.0 = Release|Win32
- {2C3C4869-D684-4981-98E7-6D9798B72145}.Release|x64.ActiveCfg = Release|x64
- {2C3C4869-D684-4981-98E7-6D9798B72145}.Release|x64.Build.0 = Release|x64
{2C3C4869-D684-4981-98E7-6D9798B72145}.ReleaseConsole2008|Win32.ActiveCfg = Release|Win32
{2C3C4869-D684-4981-98E7-6D9798B72145}.ReleaseConsole2008|Win32.Build.0 = Release|Win32
{2C3C4869-D684-4981-98E7-6D9798B72145}.ReleaseConsole2008|x64.ActiveCfg = Release|x64
{2C3C4869-D684-4981-98E7-6D9798B72145}.ReleaseConsole2008|x64.Build.0 = Release|x64
+ {2C3C4869-D684-4981-98E7-6D9798B72145}.ReleaseConsole2009|Win32.ActiveCfg = Release|Win32
+ {2C3C4869-D684-4981-98E7-6D9798B72145}.ReleaseConsole2009|Win32.Build.0 = Release|Win32
+ {2C3C4869-D684-4981-98E7-6D9798B72145}.ReleaseConsole2009|x64.ActiveCfg = Release|x64
+ {2C3C4869-D684-4981-98E7-6D9798B72145}.ReleaseConsole2009|x64.Build.0 = Release|x64
{2C3C4869-D684-4981-98E7-6D9798B72145}.ReleasePlugin2008|Win32.ActiveCfg = Release|Win32
{2C3C4869-D684-4981-98E7-6D9798B72145}.ReleasePlugin2008|Win32.Build.0 = Release|Win32
{2C3C4869-D684-4981-98E7-6D9798B72145}.ReleasePlugin2008|x64.ActiveCfg = Release|x64
@@ -229,190 +231,228 @@
{2C3C4869-D684-4981-98E7-6D9798B72145}.ReleasePlugin85|Win32.Build.0 = Release|Win32
{2C3C4869-D684-4981-98E7-6D9798B72145}.ReleasePlugin85|x64.ActiveCfg = Release|x64
{2C3C4869-D684-4981-98E7-6D9798B72145}.ReleasePlugin85|x64.Build.0 = Release|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.Debug|Win32.ActiveCfg = Debug|Win32
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.Debug|Win32.Build.0 = Debug|Win32
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.Debug|x64.ActiveCfg = Debug|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.Debug|x64.Build.0 = Debug|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugConsole2008|Win32.ActiveCfg = Debug|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugConsole2008|Win32.Build.0 = Debug|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugConsole2008|x64.ActiveCfg = Debug|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugConsole2008|x64.Build.0 = Debug|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugConsole2009|Win32.ActiveCfg = Debug|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugConsole2009|Win32.Build.0 = Debug|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugConsole2009|x64.ActiveCfg = Debug|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugConsole2009|x64.Build.0 = Debug|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin2008|Win32.ActiveCfg = Debug|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin2008|Win32.Build.0 = Debug|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin2008|x64.ActiveCfg = Debug|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin2008|x64.Build.0 = Debug|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin2009|Win32.ActiveCfg = Debug|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin2009|Win32.ActiveCfg = Debug|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin2009|Win32.Build.0 = Debug|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin2009|x64.ActiveCfg = Debug|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin2009|x64.Build.0 = Debug|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin70|Win32.ActiveCfg = Debug|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin70|Win32.ActiveCfg = Debug|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin70|Win32.Build.0 = Debug|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin70|x64.ActiveCfg = Debug|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin70|x64.Build.0 = Debug|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin80|Win32.ActiveCfg = Debug|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin80|Win32.ActiveCfg = Debug|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin80|Win32.Build.0 = Debug|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin80|x64.ActiveCfg = Debug|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin80|x64.Build.0 = Debug|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin85|Win32.ActiveCfg = Debug|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin85|Win32.ActiveCfg = Debug|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin85|Win32.Build.0 = Debug|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin85|x64.ActiveCfg = Debug|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.DebugPlugin85|x64.Build.0 = Debug|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.Release|Win32.ActiveCfg = Release|Win32
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.Release|Win32.Build.0 = Release|Win32
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.Release|x64.ActiveCfg = Release|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.Release|x64.Build.0 = Release|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleaseConsole2008|Win32.ActiveCfg = Release|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleaseConsole2008|Win32.Build.0 = Release|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleaseConsole2008|x64.ActiveCfg = Release|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleaseConsole2008|x64.Build.0 = Release|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleaseConsole2009|Win32.ActiveCfg = Release|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleaseConsole2009|Win32.Build.0 = Release|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleaseConsole2009|x64.ActiveCfg = Release|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleaseConsole2009|x64.Build.0 = Release|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin2008|Win32.ActiveCfg = Release|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin2008|Win32.Build.0 = Release|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin2008|x64.ActiveCfg = Release|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin2008|x64.Build.0 = Release|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin2009|Win32.ActiveCfg = Release|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin2009|Win32.ActiveCfg = Release|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin2009|Win32.Build.0 = Release|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin2009|x64.ActiveCfg = Release|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin2009|x64.Build.0 = Release|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin70|Win32.ActiveCfg = Release|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin70|Win32.ActiveCfg = Release|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin70|Win32.Build.0 = Release|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin70|x64.ActiveCfg = Release|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin70|x64.Build.0 = Release|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin80|Win32.ActiveCfg = Release|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin80|Win32.ActiveCfg = Release|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin80|Win32.Build.0 = Release|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin80|x64.ActiveCfg = Release|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin80|x64.Build.0 = Release|x64
- {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin85|Win32.ActiveCfg = Release|x64
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin85|Win32.ActiveCfg = Release|Win32
+ {9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin85|Win32.Build.0 = Release|Win32
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin85|x64.ActiveCfg = Release|x64
{9F164B41-40E0-4EFA-A7C7-A89C12B4FB39}.ReleasePlugin85|x64.Build.0 = Release|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.Debug|Win32.ActiveCfg = Debug|Win32
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.Debug|Win32.Build.0 = Debug|Win32
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.Debug|x64.ActiveCfg = Debug|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.Debug|x64.Build.0 = Debug|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugConsole2008|Win32.ActiveCfg = Debug|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugConsole2008|Win32.Build.0 = Debug|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugConsole2008|x64.ActiveCfg = Debug|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugConsole2008|x64.Build.0 = Debug|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugConsole2009|Win32.ActiveCfg = Debug|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugConsole2009|Win32.Build.0 = Debug|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugConsole2009|x64.ActiveCfg = Debug|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugConsole2009|x64.Build.0 = Debug|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin2008|Win32.ActiveCfg = Debug|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin2008|Win32.Build.0 = Debug|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin2008|x64.ActiveCfg = Debug|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin2008|x64.Build.0 = Debug|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin2009|Win32.ActiveCfg = Debug|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin2009|Win32.ActiveCfg = Debug|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin2009|Win32.Build.0 = Debug|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin2009|x64.ActiveCfg = Debug|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin2009|x64.Build.0 = Debug|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin70|Win32.ActiveCfg = Debug|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin70|Win32.ActiveCfg = Debug|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin70|Win32.Build.0 = Debug|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin70|x64.ActiveCfg = Debug|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin70|x64.Build.0 = Debug|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin80|Win32.ActiveCfg = Debug|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin80|Win32.ActiveCfg = Debug|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin80|Win32.Build.0 = Debug|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin80|x64.ActiveCfg = Debug|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin80|x64.Build.0 = Debug|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin85|Win32.ActiveCfg = Debug|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin85|Win32.ActiveCfg = Debug|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin85|Win32.Build.0 = Debug|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin85|x64.ActiveCfg = Debug|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.DebugPlugin85|x64.Build.0 = Debug|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.Release|Win32.ActiveCfg = Release|Win32
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.Release|Win32.Build.0 = Release|Win32
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.Release|x64.ActiveCfg = Release|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.Release|x64.Build.0 = Release|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleaseConsole2008|Win32.ActiveCfg = Release|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleaseConsole2008|Win32.Build.0 = Release|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleaseConsole2008|x64.ActiveCfg = Release|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleaseConsole2008|x64.Build.0 = Release|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleaseConsole2009|Win32.ActiveCfg = Release|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleaseConsole2009|Win32.Build.0 = Release|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleaseConsole2009|x64.ActiveCfg = Release|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleaseConsole2009|x64.Build.0 = Release|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin2008|Win32.ActiveCfg = Release|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin2008|Win32.Build.0 = Release|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin2008|x64.ActiveCfg = Release|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin2008|x64.Build.0 = Release|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin2009|Win32.ActiveCfg = Release|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin2009|Win32.ActiveCfg = Release|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin2009|Win32.Build.0 = Release|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin2009|x64.ActiveCfg = Release|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin2009|x64.Build.0 = Release|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin70|Win32.ActiveCfg = Release|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin70|Win32.ActiveCfg = Release|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin70|Win32.Build.0 = Release|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin70|x64.ActiveCfg = Release|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin70|x64.Build.0 = Release|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin80|Win32.ActiveCfg = Release|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin80|Win32.ActiveCfg = Release|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin80|Win32.Build.0 = Release|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin80|x64.ActiveCfg = Release|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin80|x64.Build.0 = Release|x64
- {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin85|Win32.ActiveCfg = Release|x64
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin85|Win32.ActiveCfg = Release|Win32
+ {8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin85|Win32.Build.0 = Release|Win32
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin85|x64.ActiveCfg = Release|x64
{8628A8F8-BD50-4463-9EE7-F9118CBA194A}.ReleasePlugin85|x64.Build.0 = Release|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.Debug|Win32.ActiveCfg = Debug|Win32
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.Debug|Win32.Build.0 = Debug|Win32
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.Debug|x64.ActiveCfg = Debug|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.Debug|x64.Build.0 = Debug|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugConsole2008|Win32.ActiveCfg = Debug|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugConsole2008|Win32.Build.0 = Debug|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugConsole2008|x64.ActiveCfg = Debug|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugConsole2008|x64.Build.0 = Debug|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin2008|Win32.ActiveCfg = Debug|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugConsole2009|Win32.ActiveCfg = Debug|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugConsole2009|Win32.Build.0 = Debug|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugConsole2009|x64.ActiveCfg = Debug|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugConsole2009|x64.Build.0 = Debug|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin2008|Win32.ActiveCfg = Debug|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin2008|Win32.Build.0 = Debug|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin2008|x64.ActiveCfg = Debug|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin2008|x64.Build.0 = Debug|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin2009|Win32.ActiveCfg = Debug|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin2009|Win32.ActiveCfg = Debug|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin2009|Win32.Build.0 = Debug|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin2009|x64.ActiveCfg = Debug|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin2009|x64.Build.0 = Debug|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin70|Win32.ActiveCfg = Debug|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin70|Win32.ActiveCfg = Debug|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin70|Win32.Build.0 = Debug|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin70|x64.ActiveCfg = Debug|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin70|x64.Build.0 = Debug|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin80|Win32.ActiveCfg = Debug|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin80|Win32.ActiveCfg = Debug|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin80|Win32.Build.0 = Debug|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin80|x64.ActiveCfg = Debug|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin80|x64.Build.0 = Debug|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin85|Win32.ActiveCfg = Debug|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin85|Win32.ActiveCfg = Debug|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin85|Win32.Build.0 = Debug|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin85|x64.ActiveCfg = Debug|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.DebugPlugin85|x64.Build.0 = Debug|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.Release|Win32.ActiveCfg = Release|Win32
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.Release|Win32.Build.0 = Release|Win32
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.Release|x64.ActiveCfg = Release|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.Release|x64.Build.0 = Release|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleaseConsole2008|Win32.ActiveCfg = Release|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleaseConsole2008|Win32.ActiveCfg = Release|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleaseConsole2008|Win32.Build.0 = Release|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleaseConsole2008|x64.ActiveCfg = Release|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleaseConsole2008|x64.Build.0 = Release|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin2008|Win32.ActiveCfg = Release|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleaseConsole2009|Win32.ActiveCfg = Release|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleaseConsole2009|Win32.Build.0 = Release|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleaseConsole2009|x64.ActiveCfg = Release|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleaseConsole2009|x64.Build.0 = Release|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin2008|Win32.ActiveCfg = Release|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin2008|Win32.Build.0 = Release|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin2008|x64.ActiveCfg = Release|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin2008|x64.Build.0 = Release|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin2009|Win32.ActiveCfg = Release|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin2009|Win32.ActiveCfg = Release|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin2009|Win32.Build.0 = Release|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin2009|x64.ActiveCfg = Release|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin2009|x64.Build.0 = Release|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin70|Win32.ActiveCfg = Release|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin70|Win32.ActiveCfg = Release|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin70|Win32.Build.0 = Release|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin70|x64.ActiveCfg = Release|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin70|x64.Build.0 = Release|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin80|Win32.ActiveCfg = Release|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin80|Win32.ActiveCfg = Release|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin80|Win32.Build.0 = Release|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin80|x64.ActiveCfg = Release|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin80|x64.Build.0 = Release|x64
- {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin85|Win32.ActiveCfg = Release|x64
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin85|Win32.ActiveCfg = Release|Win32
+ {0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin85|Win32.Build.0 = Release|Win32
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin85|x64.ActiveCfg = Release|x64
{0B6C3FEA-0065-44D2-A69A-28F810A4F2AF}.ReleasePlugin85|x64.Build.0 = Release|x64
- {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}.Debug|x64.ActiveCfg = Debug|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.Debug|x64.Build.0 = Debug|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugConsole2008|Win32.ActiveCfg = Debug|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugConsole2008|Win32.Build.0 = Debug|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugConsole2008|x64.ActiveCfg = Debug|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugConsole2008|x64.Build.0 = Debug|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin2008|Win32.ActiveCfg = Debug|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugConsole2009|Win32.ActiveCfg = Debug|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugConsole2009|Win32.Build.0 = Debug|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugConsole2009|x64.ActiveCfg = Debug|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugConsole2009|x64.Build.0 = Debug|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin2008|Win32.ActiveCfg = Debug|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin2008|Win32.Build.0 = Debug|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin2008|x64.ActiveCfg = Debug|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin2008|x64.Build.0 = Debug|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin2009|Win32.ActiveCfg = Debug|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin2009|Win32.ActiveCfg = Debug|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin2009|Win32.Build.0 = Debug|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin2009|x64.ActiveCfg = Debug|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin2009|x64.Build.0 = Debug|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin70|Win32.ActiveCfg = Debug|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin70|Win32.ActiveCfg = Debug|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin70|Win32.Build.0 = Debug|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin70|x64.ActiveCfg = Debug|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin70|x64.Build.0 = Debug|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin80|Win32.ActiveCfg = Debug|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin80|Win32.ActiveCfg = Debug|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin80|Win32.Build.0 = Debug|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin80|x64.ActiveCfg = Debug|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin80|x64.Build.0 = Debug|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin85|Win32.ActiveCfg = Debug|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin85|Win32.ActiveCfg = Debug|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin85|Win32.Build.0 = Debug|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin85|x64.ActiveCfg = Debug|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.DebugPlugin85|x64.Build.0 = Debug|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release|Win32.ActiveCfg = Release|Win32
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release|Win32.Build.0 = Release|Win32
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release|x64.ActiveCfg = Release|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.Release|x64.Build.0 = Release|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleaseConsole2008|Win32.ActiveCfg = Release|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleaseConsole2008|Win32.ActiveCfg = Release|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleaseConsole2008|Win32.Build.0 = Release|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleaseConsole2008|x64.ActiveCfg = Release|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleaseConsole2008|x64.Build.0 = Release|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin2008|Win32.ActiveCfg = Release|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleaseConsole2009|Win32.ActiveCfg = Release|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleaseConsole2009|Win32.Build.0 = Release|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleaseConsole2009|x64.ActiveCfg = Release|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleaseConsole2009|x64.Build.0 = Release|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin2008|Win32.ActiveCfg = Release|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin2008|Win32.Build.0 = Release|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin2008|x64.ActiveCfg = Release|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin2008|x64.Build.0 = Release|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin2009|Win32.ActiveCfg = Release|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin2009|Win32.ActiveCfg = Release|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin2009|Win32.Build.0 = Release|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin2009|x64.ActiveCfg = Release|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin2009|x64.Build.0 = Release|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin70|Win32.ActiveCfg = Release|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin70|Win32.ActiveCfg = Release|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin70|Win32.Build.0 = Release|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin70|x64.ActiveCfg = Release|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin70|x64.Build.0 = Release|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin80|Win32.ActiveCfg = Release|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin80|Win32.ActiveCfg = Release|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin80|Win32.Build.0 = Release|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin80|x64.ActiveCfg = Release|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin80|x64.Build.0 = Release|x64
- {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin85|Win32.ActiveCfg = Release|x64
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin85|Win32.ActiveCfg = Release|Win32
+ {D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin85|Win32.Build.0 = Release|Win32
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin85|x64.ActiveCfg = Release|x64
{D7F466F4-2AEA-4648-BE09-024C887BC157}.ReleasePlugin85|x64.Build.0 = Release|x64
EndGlobalSection
Modified: branches/nextgen/COLLADAMaya/include/COLLADAMayaBaseImporter.h
===================================================================
--- branches/nextgen/COLLADAMaya/include/CO...
[truncated message content] |