]> git.tdb.fi Git - libs/gl.git/commitdiff
Add an element offset to PrimitiveBuilder
authorMikko Rasa <tdb@tdb.fi>
Fri, 8 Apr 2011 22:56:45 +0000 (22:56 +0000)
committerMikko Rasa <tdb@tdb.fi>
Fri, 8 Apr 2011 22:56:45 +0000 (22:56 +0000)
source/geometrybuilder.cpp
source/meshbuilder.cpp
source/meshbuilder.h
source/primitivebuilder.cpp
source/primitivebuilder.h

index 6ed52ed2e85244f470efd495c3ace6cd719f1024..327e8fcf8a3b56b4daa35b8bf20727bc6f7c6ad6 100644 (file)
@@ -49,6 +49,7 @@ void GeometryBuilder::adjust_texture_scale(float &u_scale, float &v_scale, float
 void GeometryBuilder::build(Mesh &mesh) const
 {
        MeshBuilder builder(mesh);
+       builder.auto_offset();
        build(builder);
 }
 
index b238ae63b9a76a608d968bb5b36e44af0cf62445..6f90f67de40cd9940dd381727b9a592b0876582b 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of libmspgl
-Copyright © 2007  Mikko Rasa, Mikkosoft Productions
+Copyright © 2008, 2010-2011  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
 
@@ -17,6 +17,11 @@ MeshBuilder::MeshBuilder(Mesh &m):
        batch(0)
 { }
 
+void MeshBuilder::auto_offset()
+{
+       offset(mesh.get_vertices().size());
+}
+
 void MeshBuilder::begin_()
 {
        batch = new Batch(type);
index c8354b9e0d3f3f5b6dd5fdeb3f7d77f7d3cdf989..6118c6869f4fd0f6dd1d95149088380527007046 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of libmspgl
-Copyright © 2007  Mikko Rasa, Mikkosoft Productions
+Copyright © 2008, 2011  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
 
@@ -24,6 +24,7 @@ private:
 
 public:
        MeshBuilder(Mesh &);
+       void auto_offset();
 private:
        virtual void begin_();
        virtual void end_();
index 42e9d39cbb71c5bf1f56eaf53975bdd140fd607d..61bde9b96f8862881deb00e0719564dae1b08549 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of libmspgl
-Copyright © 2008, 2010  Mikko Rasa, Mikkosoft Productions
+Copyright © 2008, 2010-2011  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
 
@@ -13,7 +13,8 @@ namespace GL {
 PrimitiveBuilder::PrimitiveBuilder(VertexArray &a):
        array(a),
        vab(array),
-       in_batch(false)
+       in_batch(false),
+       offs(0)
 { }
 
 void PrimitiveBuilder::begin(PrimitiveType t)
@@ -37,13 +38,20 @@ void PrimitiveBuilder::end()
        end_();
 }
 
+void PrimitiveBuilder::offset(unsigned o)
+{
+       if(o>array.size())
+               throw InvalidParameterValue("Element offset out of range");
+       offs = o;
+}
+
 void PrimitiveBuilder::element(unsigned i)
 {
        if(!in_batch)
                throw InvalidState("Element specification not between begin() and end()");
-       if(i>=array.size())
+       if(offs+i>=array.size())
                throw InvalidParameterValue("Element index out of range");
-       element_(i);
+       element_(offs+i);
 }
 
 PrimitiveType PrimitiveBuilder::get_type() const
index a4e34a67a76be15d9786ee1efd15309dac28266f..b8b90f44f081391e08f1378cd8517cf800a7231c 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of libmspgl
-Copyright © 2007  Mikko Rasa, Mikkosoft Productions
+Copyright © 2008, 2010-2011  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
 
@@ -30,11 +30,13 @@ protected:
        VertexArrayBuilder vab;
        PrimitiveType type;
        bool in_batch;
+       unsigned offs;
 
        PrimitiveBuilder(VertexArray &);
 public:
        void begin(PrimitiveType);
        void end();
+       void offset(unsigned);
        void element(unsigned);
        PrimitiveType get_type() const;
 protected: