Сочинил я класс. Работает.
А когда в другом классе создаю поле с этим классом но статическим оно валится при инициализации этого поля
tris_master universall_keeper::manager;
Уважаемые телепаты, почему? Час смотрел на код, вроде не должно.
struct tris{
int surf;
int tris_number;
int v0;
int v1;
int v2;
};
class tris_master{
public:
Handle mesh;
Handle* surf;
int tris_whole;
int tris_in;
tris* master;
///////////////////////////////////////////////////////
tris_master(){
//создаю трисы
tris_in=0;
mesh=xCreateMesh();
surf=new Handle[10];
for(int i=0;i<10;i++){
surf[i]=xCreateSurface(mesh);
for(int j=0;j<20000;j++){
xAddVertex(surf[i],0,0,0);
xAddVertex(surf[i],0,1,0);
xAddVertex(surf[i],1,0,0);
xAddTriangle(surf[i],j*3,j*3+1,j*3+2);
tris_whole++;}
}
tris_in=tris_whole-1;
//считаю трисы
int tris_quantity=0;
int number=xCountSurfaces(mesh);
for(int i=0;i<number;i++){
tris_quantity=tris_quantity+xCountTriangles(surf[i]);}
//сохраняю данные
master=new tris[tris_quantity];
int m=0;
for(int i=0;i<number;i++){
int tris_number=xCountTriangles(surf[i]);
for(int j=0;j<tris_number;j++){
master[m].surf=i;
master[m].tris_number=j;
master[m].v0=xTriangleVertex(surf[i],j,0);
master[m].v1=xTriangleVertex(surf[i],j,1);
master[m].v2=xTriangleVertex(surf[i],j,2);
m++;
}}
//collaspse all tris
for(int i=0;i<m;i++){
xVertexCoords(surf[master[i].surf],master[i].v0,0,0,0);
xVertexCoords(surf[master[i].surf],master[i].v1,0,0,0);
xVertexCoords(surf[master[i].surf],master[i].v2,0,0,0);
}
}
///////////////////////////////////////////////////////
tris give_tris(){
if(tris_in>=1){
tris result=master[tris_in];
tris_in--;
return result;
}
else{
tris result=master[0];
return result;
}
}
////////////////////////////////////////////////////////
void give_back_tris(tris tris_number){
tris_in++;
master[tris_in]=tris_number;
xVertexCoords(surf[tris_number.surf],tris_number.v0,0,0,0);
xVertexCoords(surf[tris_number.surf],tris_number.v1,0,0,0);
xVertexCoords(surf[tris_number.surf],tris_number.v2,0,0,0);
}
///////////////////////////////////////////////////////
tris locate_tris(float3 v0,float3 v1,float3 v2){
//взять треугольник
tris current_tris=give_tris();
//поставить треугольник
xVertexCoords(surf[current_tris.surf],current_tris.v0,v0.x,v0.y,v0.z);
xVertexCoords(surf[current_tris.surf],current_tris.v1,v1.x,v1.y,v1.z);
xVertexCoords(surf[current_tris.surf],current_tris.v2,v2.x,v2.y,v2.z);
//отдать данные
return current_tris;
}
};