306 lines
4.6 KiB
C++
306 lines
4.6 KiB
C++
|
#include "waxloader.h"
|
||
|
void Wax::loadconfig(char*s)
|
||
|
{
|
||
|
char *s2;
|
||
|
int i;
|
||
|
char *buf;
|
||
|
s=strstr(s,"root");
|
||
|
s=strstr(s,"\"");
|
||
|
s+=1;
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,","));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
bcx=atof(buf);
|
||
|
bcx/=255.0f;
|
||
|
delete buf;
|
||
|
s+=(i+1);
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,","));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
bcy=atof(buf);
|
||
|
bcy/=255.0f;
|
||
|
delete buf;
|
||
|
s+=(i+1);
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,"\""));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
bcz=atof(buf);
|
||
|
bcz/=255.0f;
|
||
|
delete buf;
|
||
|
|
||
|
|
||
|
s=strstr(s,"angle");
|
||
|
s=strstr(s,"\"");
|
||
|
s+=1;
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,","));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
anglex=atof(buf);
|
||
|
delete buf;
|
||
|
|
||
|
s+=(i+1);
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,"\""));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
angley=atof(buf);
|
||
|
delete buf;
|
||
|
|
||
|
s=strstr(s,"radius");
|
||
|
s=strstr(s,"\"");
|
||
|
s+=1;
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,"\""));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
radius=atof(buf);
|
||
|
delete buf;
|
||
|
}
|
||
|
|
||
|
void Wax::loadprim(char*&s,Prim& p)
|
||
|
{
|
||
|
char *s2;
|
||
|
int i;
|
||
|
char *buf;
|
||
|
s=strstr(s,"object");
|
||
|
s=strstr(s,"\"");
|
||
|
s+=1;
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,"\""));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
p=*new Prim(buf);
|
||
|
delete buf;
|
||
|
s+=i;
|
||
|
s=strstr(s,"location");
|
||
|
s=strstr(s,"\"");
|
||
|
s+=1;
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,","));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.lx=atof(buf);
|
||
|
delete buf;
|
||
|
s+=(i+1);
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,","));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.ly=atof(buf);
|
||
|
delete buf;
|
||
|
s+=(i+1);
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,"\""));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.lz=atof(buf);
|
||
|
delete buf;
|
||
|
|
||
|
|
||
|
|
||
|
s+=i;
|
||
|
s=strstr(s,"rotation");
|
||
|
s=strstr(s,"\"");
|
||
|
s+=1;
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,","));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.rx=atof(buf);
|
||
|
delete buf;
|
||
|
s+=(i+1);
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,","));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.ry=atof(buf);
|
||
|
delete buf;
|
||
|
s+=(i+1);
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,"\""));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.rz=atof(buf);
|
||
|
delete buf;
|
||
|
|
||
|
s+=i;
|
||
|
s=strstr(s,"scale");
|
||
|
s=strstr(s,"\"");
|
||
|
s+=1;
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,","));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.sx=atof(buf);
|
||
|
delete buf;
|
||
|
s+=(i+1);
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,","));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.sy=atof(buf);
|
||
|
delete buf;
|
||
|
s+=(i+1);
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,"\""));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.sz=atof(buf);
|
||
|
delete buf;
|
||
|
|
||
|
|
||
|
s+=i;
|
||
|
s=strstr(s,"color");
|
||
|
s=strstr(s,"\"");
|
||
|
s+=1;
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,","));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.cx=atof(buf);
|
||
|
p.cx/=255.0f;
|
||
|
delete buf;
|
||
|
s+=(i+1);
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,","));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.cy=atof(buf);
|
||
|
p.cy/=255.0f;
|
||
|
delete buf;
|
||
|
s+=(i+1);
|
||
|
s2=s;
|
||
|
s2=(strstr(s2,"\""));
|
||
|
i=s2-s;
|
||
|
buf = new char[i];
|
||
|
for(int c=0; c<i; c++)
|
||
|
{
|
||
|
buf[c]=*(s+c);
|
||
|
}
|
||
|
|
||
|
p.cz=atof(buf);
|
||
|
p.cz/=255.0f;
|
||
|
delete buf;
|
||
|
s+=i;
|
||
|
}
|
||
|
Wax::Wax(char* path)
|
||
|
{
|
||
|
FILE* f = fopen( path, "rb" );
|
||
|
long len=0;
|
||
|
char* string;
|
||
|
fseek(f,0,SEEK_END);
|
||
|
len = ftell(f);
|
||
|
fclose(f);
|
||
|
f = fopen( path, "rb" );
|
||
|
string = new char[len];
|
||
|
fread(string,1,len,f);
|
||
|
fclose(f);
|
||
|
count=0;
|
||
|
char *s=string;
|
||
|
loadconfig(s);
|
||
|
while((s=strstr(s,(char*)"<object"))!=NULL)
|
||
|
{
|
||
|
count++;
|
||
|
*s+=strlen((char*)"<object");
|
||
|
}
|
||
|
s=string;
|
||
|
p=new Prim[count];
|
||
|
for(int i=0; i<count; i++)
|
||
|
{
|
||
|
loadprim(s,p[i]);
|
||
|
}
|
||
|
}
|