89 lines
2.1 KiB
C++
89 lines
2.1 KiB
C++
|
#include <vcg/traced_vector.h>
|
||
|
#include <vcg/simple_temporary_data.h>
|
||
|
|
||
|
|
||
|
#include<vcg/space/point3.h>
|
||
|
#include<vcg/space/color4.h>
|
||
|
using namespace vcg;
|
||
|
#include <vcg/simplex/vertexplus/base.h>
|
||
|
#include<vcg/math/base.h>
|
||
|
|
||
|
|
||
|
class EdgeProto{};
|
||
|
class Vertex0 : public VertexSimp1< Vertex0,EdgeProto,vcg::vert::Coord3fOpt>{};
|
||
|
|
||
|
typedef TVector<Vertex0> TVect;
|
||
|
int main(){
|
||
|
int i;
|
||
|
|
||
|
// partial test for CORE DATA ***********
|
||
|
// put some vertex in a vector
|
||
|
TVector<Vertex0> c1;
|
||
|
|
||
|
for( i = 0; i < 10; i++)
|
||
|
c1.push_back(Vertex0());
|
||
|
|
||
|
c1.EnableAttribute<Vertex0::CoordType>();
|
||
|
|
||
|
// put some more vertex inthe vector
|
||
|
for( i= 0; i < 10; i++)
|
||
|
c1.push_back(Vertex0());
|
||
|
|
||
|
c1[2].P()=Point3f(1.0,2,3);
|
||
|
Point3f p = c1[2].P();
|
||
|
|
||
|
// drop the attributes
|
||
|
c1.DisableAttribute<Vertex0::CoordType>();
|
||
|
// *****************************************
|
||
|
|
||
|
|
||
|
// USER DATA
|
||
|
// si puo' fare in 2 modi: Se il container e'di tipo TVector (traced vector)
|
||
|
// si puo'usare
|
||
|
//(1) c.NewTempData<TIPO_ATTRIBUTO>(); che si occupa di resizare
|
||
|
// i container di dati temporanei (cioe' riflette tutte le push_back,reserve,resize
|
||
|
// eventualemnte fatte sul vettore). NewTempoData resituisce una handle per accedere
|
||
|
// al dato.
|
||
|
|
||
|
// (2) si usa SimpleTempData che e' come uno tranne che non supporta automaticamente
|
||
|
// le variazioni di dimensione
|
||
|
// del vettore (si puo' fare a mano pero')...s
|
||
|
|
||
|
// partial test for USER DATA ***********
|
||
|
// modo (1)
|
||
|
|
||
|
for( i = 0; i < 10; i++)
|
||
|
c1.push_back(Vertex0());
|
||
|
|
||
|
CATEntry<TVect,EntryCATMulti<TVect> >::Insert(c1); // questa riga sparira'
|
||
|
|
||
|
TempData<TVect,int> handle = c1.NewTempData<int>();
|
||
|
handle[&c1[3]] = 71;
|
||
|
// put some more vertex inthe vector
|
||
|
for( i = 0; i < 10; i++)
|
||
|
c1.push_back(Vertex0());
|
||
|
int h = handle[&c1[3]];
|
||
|
c1.DeleteTempData(handle);
|
||
|
// *****************************************
|
||
|
|
||
|
|
||
|
// partial test for USER DATA ***********
|
||
|
// modo (2)
|
||
|
|
||
|
std::vector<Vertex0> c;
|
||
|
for( i = 0; i < 10; i++)
|
||
|
c.push_back(Vertex0());
|
||
|
|
||
|
SimpleTempData<std::vector<Vertex0>,int> tmp(c);
|
||
|
tmp.Start();
|
||
|
tmp[&c[1]] = 22;
|
||
|
int hh = tmp[&c[1]];
|
||
|
tmp.Stop();
|
||
|
// **************************************
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|