#pragma once

#include "IndexedGeometry.h"

namespace Aftr
{

   class IndexedGeometrySphereTriStrip : public IndexedGeometry
   {
   public:
      static IndexedGeometrySphereTriStrip* New( float radius = 1, unsigned int numCols = 4, unsigned int numRows = 4, bool useNormals = false, bool useTextures = false );
      virtual ~IndexedGeometrySphereTriStrip() {}

      /// Returns a pointer to a list containing all verticies within this model.
      /// This list is indexed by the corresponding CompositeIndexList.
      virtual const std::vector< Vector >& getCompositeVertexList() const override;

      /// Returns a pointer to a list containing all indicies into the corresponding
      /// CompositeVertexList.
      virtual const std::vector< unsigned int >& getCompositeIndexList() const override;

   protected:
      IndexedGeometrySphereTriStrip( float radius = 1, unsigned int numCols = 4, unsigned int numRows = 4, bool useNormals = false, bool useTextures = false );
      virtual void createVertices();
      virtual void createIndices();
      virtual void createTextureCoords();
      virtual void createNormals();
      float radius = 1.0f;
      unsigned int numCols;
      unsigned int numRows;

      std::vector<Vector> verts; //SLN TODO: POPulate and use this, right now composite list isn't sync'd
      std::vector<unsigned int> idx; //SLN TODO: POPulate and use this, right now composite list isn't sync'd
   };

}

