Exemple #1
0
int SampleManager :: Load(const Settings& sets,const string& root) {
	if( ! sets.isValid() ) {
		ERROR("Obiekt opisujący sample jest nieważny");
		return -2;
	}

	Settings s, s1;
	int n, li_ret;
	string id, pid, file_name;
	PSam *pt;
	LSam *lt;
	int ioffset, ilen;

	//usuwamy wszystko
	_destroy();
	_reset();

	//ladujemy sample fizyczne
	if( root != "" )
		s = sets.Extract(root + ".Phisical");
	else
		s = sets.Extract(root + "Phisical");
	if( ! s.isValid() ) {
		ERROR("Blad pobierania danych na temat sampli fizycznych: " + s.ErrorMsg() );
		return -3;
	}
	INFO(s.Dump());

	//TODO - dorobic pobieranie ilosci wpisow o samplach
	n = 1;
	s1 = s.Extract("Phisical["+toString(n)+"]");
	while( s1.isValid() ) {
		INFO("sample<" + toString(n) + ">");
		INFO(s1.Dump());

		id = s1.GetValS("Phisical.ID");
		file_name = s1.GetValS("Phisical.FileName");
		INFO("plik: " + id + " : " + file_name);

		pt = new PSam();
		li_ret = pt->Load(file_name);
		if( li_ret < 0 ) {
			delete pt;
			ERROR("Error loading the sample file (filename=" + file_name + ") !" );
			return -4;
		}

		AddPSam(id,pt);
		INFO("Dodano sampel o id=" + id);

		n++;
		s1 = s.Extract("Phisical["+toString(n)+"]");
	}
	INFO("Blad: " + s1.ErrorMsg());

	//ladujemy sample logiczne
	if( root != "" )
		s = sets.Extract(root + ".Logical");
	else
		s = sets.Extract(root + "Logical");
	if( ! s.isValid() ) {
		ERROR("Blad pobierania danych na temat sampli logicznych: " + s.ErrorMsg() );
		return -4;
	}
	INFO(s.Dump());

	//TODO - dorobic pobieranie ilosci wpisow o tekturach
	n = 1;
	s1 = s.Extract("Logical["+toString(n)+"]");
	while( s1.isValid() ) {
		INFO("sampel<" + toString(n) + ">");
		INFO(s1.Dump());

		id = s1.GetValS("Logical.ID");
		pid = s1.GetValS("Logical.PID");
		ioffset = s1.GetValI("Logical.Offset");
		ilen = s1.GetValI("Logical.Length");

		pt = GetPSam(pid);
		if( 0 == pt ) {
			ERROR("Brak sampla fizycznego o ID=\"" + pid + "\". Sampel logiczny o ID=\"" + id + "\" nie może być utworzony !!!");
		} else {
			lt = new LSam();
			lt->Set(pt,ioffset,ilen);
			AddLSam(id,lt);
			INFO("Dodano sampel o id=" + id);
		}

		n++;
		s1 = s.Extract("Logical["+toString(n)+"]");
	}
	INFO("Blad: " + s1.ErrorMsg());


	INFO("Koniec sampli");

	return 1;
}
Exemple #2
0
int TextureManager :: Load(const Settings& sets,const string& root) {
	if( ! sets.isValid() ) {
		ERROR("Obiekt opisujący tekstury jest nieważny");
		return -2;
	}

	Settings s, s1;
	int n, li_ret;
	string id, pid, file_name;
	PTex *pt;
	LTex *lt;
	int ix1, ix2, iy1, iy2, ihsx, ihsy;
	double fhsx, fhsy;

	//usuwamy wszystko
	_destroy();
	_reset();

	//ladujemy tekstury fizyczne
	if( root != "" )
		s = sets.Extract(root + ".Phisical");
	else
		s = sets.Extract(root + "Phisical");
	if( ! s.isValid() ) {
		ERROR("Blad pobierania danych na temat tekstur fizycznych: " + s.ErrorMsg() );
		return -3;
	}
	INFO(s.Dump());

	//TODO - dorobic pobieranie ilosci wpisow o tekturach
	n = 1;
	s1 = s.Extract("Phisical["+toString(n)+"]");
	while( s1.isValid() ) {
		INFO("texture<" + toString(n) + ">");
		INFO(s1.Dump());

		id = s1.GetValS("Phisical.ID");
		file_name = s1.GetValS("Phisical.FileName");
		INFO("plik: " + id + " : " + file_name);

		pt = new PTex();
		li_ret = pt->Load(file_name);
		if( li_ret < 0 ) {
			delete pt;
			ERROR("Error loading the texture file (filename=" + file_name + ") !" );
			return -4;
		}

		AddPTex(id,pt);
		INFO("Dodano teksture o id=" + id );

		n++;
		s1 = s.Extract("Phisical["+toString(n)+"]");
	}
	INFO("Error: " + s1.ErrorMsg() );

	//ladujemy tekstury logiczne
	if( root != "" )
		s = sets.Extract(root + ".Logical");
	else
		s = sets.Extract(root + "Logical");
	if( ! s.isValid() ) {
		ERROR("Blad pobierania danych na temat tekstur logicznych: " + s.ErrorMsg() );
		return -4;
	}
	INFO( s.Dump() );

	//TODO - dorobic pobieranie ilosci wpisow o tekturach
	n = 1;
	s1 = s.Extract("Logical["+toString(n)+"]");
	while( s1.isValid() ) {
		INFO( "texture<" + toString(n) + ">" );
		INFO( s1.Dump() );

		id = s1.GetValS("Logical.ID");
		pid = s1.GetValS("Logical.PID");
		ix1 = s1.GetValI("Logical.Pos",0);
		iy1 = s1.GetValI("Logical.Pos",1);
		ix2 = s1.GetValI("Logical.Pos",2);
		iy2 = s1.GetValI("Logical.Pos",3);
		if( ix2 < 0 ) ix2 = ix1 - ix2;
		if( iy2 < 0 ) iy2 = iy1 - iy2;

		if( s1.IsValF("Logical.HotSpot") ) {
			fhsx = s1.GetValF("Logical.HotSpot",0);
			fhsy = s1.GetValF("Logical.HotSpot",1);
		} else {
			ihsx = s1.GetValI("Logical.HotSpot",0);
			ihsy = s1.GetValI("Logical.HotSpot",1);
			fhsx = ((GLfloat)(ihsx - ix1))/(ix2-ix1);
			fhsy = ((GLfloat)(ihsy - iy1))/(iy2-iy1);
		}


		pt = GetPTex(pid);
		if( 0 == pt ) {
			ERROR("Brak tekstury fizycznej o ID=\"" + pid + "\". Tekstura logiczna o ID=\"" + id + "\" nie może być utworzona !!!");
		} else {
			lt = new LTex();
			lt->Set(pt,ix1,iy1,ix2,iy2);
			lt->SetHotSpot( fhsx, fhsy );
			AddLTex(id,lt);
			INFO( "Dodano teksture o id=" + id );
		}

		n++;
		s1 = s.Extract("Logical["+toString(n)+"]");
	}
	INFO("Error: " + s1.ErrorMsg());

	INFO("End of textures");

	return 1;
}