#include <windows.h>
#include <stdio.h>
#include <string>
//階層メッシュクラス
class HIERARCHY{
public:
bool Load_Hierarchy(char* FileName); //階層メッシュ読み込み
bool Load_Frame(FILE& fp,int& hierarchy); //フレーム読み込み
HIERARCHY();
HIERARCHY(char* FileName);
};
HIERARCHY::HIERARCHY(){
}
HIERARCHY::HIERARCHY(char* FileName){
Load_Hierarchy(FileName);
}
//フレーム読み込み
bool HIERARCHY::Load_Frame(FILE& fp,int& hierarchy){
int current=hierarchy;
char key[255];
while(!feof(&fp))
{
//キーワード 読み込み
ZeroMemory(key,sizeof(key));
fscanf_s(&fp,"%s ",key,sizeof(key));
if(strcmp(key,"{")==0){
hierarchy++;
}
if(strcmp(key,"}")==0){
hierarchy--;
if(hierarchy==current-1)return true;//呼び出された階層に戻ったらreturnする
}
if(strcmp(key,"Frame")==0){
fscanf_s(&fp,"%s ",key,sizeof(key));
for(int i=0;i<hierarchy;i++)printf("\t");
printf("Frame:%s\n",key);
Load_Frame(fp,hierarchy);//再帰呼び出し
}
}
return true;
}
//階層メッシュ読み込み
bool HIERARCHY::Load_Hierarchy(char* FileName){
//Xファイルを開いて内容を読み込む
int hierarchy=0;
FILE* fp=NULL;
fopen_s(&fp,FileName,"rt");
//読み込み
fseek(fp,SEEK_SET,0);
while(!feof(fp))
{
Load_Frame(*fp,hierarchy);
}
fclose(fp);
return true;
}
HIERARCHY* X_MODEL;
void main()
{
X_MODEL = new HIERARCHY("sample.x");
getchar();
}
|