]> git.tdb.fi Git - libs/gl.git/blobdiff - source/vertexformat.cpp
Add Mesh and Batch classes
[libs/gl.git] / source / vertexformat.cpp
index 25c2b02313e43c3d5b14d64c4ed9136608551d6e..5c02f2ab3aec7180f2a40a4a12b225bbe8ae5c38 100644 (file)
@@ -24,42 +24,42 @@ std::istream &operator>>(std::istream &in, VertexFormat &f)
        in>>str;
 
        unsigned start=0;
-       unsigned comma;
        f=NODATA;
 
        while(1)
        {
-               comma=str.find(',', start);
-               if(str.compare(start, comma-start, "VERTEX2"))
-                       f=f,VERTEX2;
-               else if(str.compare(start, comma-start, "VERTEX3"))
-                       f=f,VERTEX3;
-               else if(str.compare(start, comma-start, "VERTEX4"))
-                       f=f,VERTEX4;
-               else if(str.compare(start, comma-start, "NORMAL3"))
-                       f=f,NORMAL3;
-               else if(str.compare(start, comma-start, "TEXCOORD1"))
-                       f=f,TEXCOORD1;
-               else if(str.compare(start, comma-start, "TEXCOORD2"))
-                       f=f,TEXCOORD2;
-               else if(str.compare(start, comma-start, "TEXCOORD3"))
-                       f=f,TEXCOORD3;
-               else if(str.compare(start, comma-start, "TEXCOORD4"))
-                       f=f,TEXCOORD4;
-               else if(str.compare(start, comma-start, "COLOR4_UBYTE"))
-                       f=f,COLOR4_UBYTE;
-               else if(str.compare(start, comma-start, "COLOR3_FLOAT"))
-                       f=f,COLOR3_FLOAT;
-               else if(str.compare(start, comma-start, "COLOR4_FLOAT"))
-                       f=f,COLOR4_FLOAT;
+               unsigned underscore=str.find('_', start);
+               if(!str.compare(start, underscore-start, "VERTEX2"))
+                       f=(f,VERTEX2);
+               else if(!str.compare(start, underscore-start, "VERTEX3"))
+                       f=(f,VERTEX3);
+               else if(!str.compare(start, underscore-start, "VERTEX4"))
+                       f=(f,VERTEX4);
+               else if(!str.compare(start, underscore-start, "NORMAL3"))
+                       f=(f,NORMAL3);
+               else if(!str.compare(start, underscore-start, "TEXCOORD1"))
+                       f=(f,TEXCOORD1);
+               else if(!str.compare(start, underscore-start, "TEXCOORD2"))
+                       f=(f,TEXCOORD2);
+               else if(!str.compare(start, underscore-start, "TEXCOORD3"))
+                       f=(f,TEXCOORD3);
+               else if(!str.compare(start, underscore-start, "TEXCOORD4"))
+                       f=(f,TEXCOORD4);
+               else if(!str.compare(start, underscore-start, "COLOR4UB"))
+                       f=(f,COLOR4_UBYTE);
+               else if(!str.compare(start, underscore-start, "COLOR3F"))
+                       f=(f,COLOR3_FLOAT);
+               else if(!str.compare(start, underscore-start, "COLOR4F"))
+                       f=(f,COLOR4_FLOAT);
                else
                {
                        in.setstate(std::ios_base::failbit);
                        break;
                }
-               start=comma+1;
-               if(comma==std::string::npos)
+
+               if(underscore==std::string::npos)
                        break;
+               start=underscore+1;
        }
 
        return in;