Blob Blame History Raw
# HG changeset patch
# User David Rogers <masterfalcon@ogre3d.org>
# Date 1387963977 21600
# Branch v1-9
# Node ID a24ac4afbbb9dc5ff49a61634af50da11ba8fb97
# Parent  de9ed8c143d87fc54ee9979db142d3410245fcf0
[OGRE-357] Resolve link errors due to incorrect template creation that is a allowed by some compilers but isn’t actually correct c++ usage.

diff --git a/OgreMain/include/OgreProgressiveMeshGenerator.h b/OgreMain/include/OgreProgressiveMeshGenerator.h
--- a/OgreMain/include/OgreProgressiveMeshGenerator.h
+++ b/OgreMain/include/OgreProgressiveMeshGenerator.h
@@ -34,6 +34,7 @@
 #include "OgreSmallVector.h"
 #include "OgreMesh.h"
 #include "OgreLodConfig.h"
+#include "OgreLogManager.h"
 
 namespace Ogre
 {
@@ -214,9 +215,44 @@
 	size_t calcLodVertexCount(const LodLevel& lodConfig);
 	void tuneContainerSize();
 	void addVertexData(VertexData* vertexData, bool useSharedVertexLookup);
-	template<typename IndexType>
-	void addIndexDataImpl(IndexType* iPos, const IndexType* iEnd, VertexLookupList& lookup, unsigned short submeshID);
 	void addIndexData(IndexData* indexData, bool useSharedVertexLookup, unsigned short submeshID);
+    template<typename IndexType>
+    void addIndexDataImpl(IndexType* iPos, const IndexType* iEnd,
+                                                    VertexLookupList& lookup,
+                                                    unsigned short submeshID)
+    {
+
+        // Loop through all triangles and connect them to the vertices.
+        for (; iPos < iEnd; iPos += 3) {
+            // It should never reallocate or every pointer will be invalid.
+            OgreAssert(mTriangleList.capacity() > mTriangleList.size(), "");
+            mTriangleList.push_back(PMTriangle());
+            PMTriangle* tri = &mTriangleList.back();
+            tri->isRemoved = false;
+            tri->submeshID = submeshID;
+            for (int i = 0; i < 3; i++) {
+                // Invalid index: Index is bigger then vertex buffer size.
+                OgreAssert(iPos[i] < lookup.size(), "");
+                tri->vertexID[i] = iPos[i];
+                tri->vertex[i] = lookup[iPos[i]];
+            }
+            if (tri->isMalformed()) {
+#if OGRE_DEBUG_MODE
+                stringstream str;
+                str << "In " << mMeshName << " malformed triangle found with ID: " << getTriangleID(tri) << ". " <<
+                std::endl;
+                printTriangle(tri, str);
+                str << "It will be excluded from LOD level calculations.";
+                LogManager::getSingleton().stream() << str.str();
+#endif
+                tri->isRemoved = true;
+                mIndexBufferInfoList[tri->submeshID].indexCount -= 3;
+                continue;
+            }
+            tri->computeNormal();
+            addTriangleToEdges(tri);
+        }
+    }
 
 	void computeCosts();
 	bool isBorderVertex(const PMVertex* vertex) const;
diff --git a/OgreMain/src/OgreProgressiveMeshGenerator.cpp b/OgreMain/src/OgreProgressiveMeshGenerator.cpp
--- a/OgreMain/src/OgreProgressiveMeshGenerator.cpp
+++ b/OgreMain/src/OgreProgressiveMeshGenerator.cpp
@@ -45,7 +45,6 @@
 #include "OgreSubMesh.h"
 #include "OgreMesh.h"
 #include "OgreLodStrategy.h"
-#include "OgreLogManager.h"
 #include "OgrePixelCountLodStrategy.h"
 
 namespace Ogre
@@ -219,43 +218,6 @@
 	}
 	vbuf->unlock();
 }
-template<typename IndexType>
-void ProgressiveMeshGenerator::addIndexDataImpl(IndexType* iPos, const IndexType* iEnd,
-                                                VertexLookupList& lookup,
-                                                unsigned short submeshID)
-{
-
-	// Loop through all triangles and connect them to the vertices.
-	for (; iPos < iEnd; iPos += 3) {
-		// It should never reallocate or every pointer will be invalid.
-		OgreAssert(mTriangleList.capacity() > mTriangleList.size(), "");
-		mTriangleList.push_back(PMTriangle());
-		PMTriangle* tri = &mTriangleList.back();
-		tri->isRemoved = false;
-		tri->submeshID = submeshID;
-		for (int i = 0; i < 3; i++) {
-			// Invalid index: Index is bigger then vertex buffer size.
-			OgreAssert(iPos[i] < lookup.size(), "");
-			tri->vertexID[i] = iPos[i];
-			tri->vertex[i] = lookup[iPos[i]];
-		}
-		if (tri->isMalformed()) {
-#if OGRE_DEBUG_MODE
-			stringstream str;
-			str << "In " << mMeshName << " malformed triangle found with ID: " << getTriangleID(tri) << ". " <<
-			std::endl;
-			printTriangle(tri, str);
-			str << "It will be excluded from LOD level calculations.";
-			LogManager::getSingleton().stream() << str.str();
-#endif
-			tri->isRemoved = true;
-			mIndexBufferInfoList[tri->submeshID].indexCount -= 3;
-			continue;
-		}
-		tri->computeNormal();
-		addTriangleToEdges(tri);
-	}
-}
 
 void ProgressiveMeshGenerator::addIndexData(IndexData* indexData, bool useSharedVertexLookup, unsigned short submeshID)
 {