This commit is contained in:
Youssef Assem
2019-12-18 23:09:56 +02:00
parent 733343b18b
commit bab419d197
12 changed files with 3504 additions and 0 deletions
+187
View File
@@ -0,0 +1,187 @@
#include "data.h"
Float_Array::Float_Array(tinyxml2::XMLElement* xml)
{
xml->QueryIntAttribute("count", (int*)&m_Count);
const char* ch;
xml->QueryStringAttribute("count", &ch);
std::string s(ch);
m_ID = s;
std::stringstream str(xml->GetText());
m_Floats = new float[m_Count];
for (int i = 0; i < m_Count; i++)
{
str >> m_Floats[i];
}
float f = m_Floats[55358];
}
Name_Array::Name_Array(tinyxml2::XMLElement* xml)
{
xml->QueryIntAttribute("count", (int*)&m_Count);
const char* ch;
xml->QueryStringAttribute("count", &ch);
std::string s(ch);
m_ID = s;
std::stringstream str(xml->GetText());
for (int i = 0; i < m_Count; i++)
{
str >> m_Names[i];
}
}
Param::Param(tinyxml2::XMLElement* xml)
{
const char* ch;
xml->QueryStringAttribute("name", &ch);
std::string s(ch);
m_Name = s;
const char* ch1;
xml->QueryStringAttribute("type", &ch1);
std::string s1(ch1);
m_Type = s1;
}
Accessor::Accessor(tinyxml2::XMLElement* xml)
{
const char* ch;
xml->QueryStringAttribute("source", &ch);
std::string s(ch);
m_Source = s;
xml->QueryIntAttribute("count", (int*)&m_Count);
xml->QueryIntAttribute("stride", (int*)&m_Stride);
for (tinyxml2::XMLElement* child = xml->FirstChildElement("param"); child != NULL; child = child->NextSiblingElement("param"))
{
Param p(child);
m_Params.push_back(p);
}
}
Technique_Common::Technique_Common(tinyxml2::XMLElement* xml)
{
m_Accessor = Accessor(xml->FirstChildElement("accessor"));
}
Source::Source(tinyxml2::XMLElement* xml)
{
const char* ch;
xml->QueryStringAttribute("id", &ch);
std::string s(ch);
m_ID = s;
tinyxml2::XMLElement* fa = xml->FirstChildElement("float_array");
if (fa != NULL)
{
m_Float_Array = Float_Array(fa);
}
tinyxml2::XMLElement* na = xml->FirstChildElement("Name_array");
if (na != NULL)
{
m_Name_Array = Name_Array(na);
}
m_TechniqueCommon = Technique_Common(xml->FirstChildElement("technique_common"));
}
Input::Input(tinyxml2::XMLElement* xml)
{
const char* ch;
xml->QueryStringAttribute("semantic", &ch);
std::string s(ch);
m_Semantic = s;
const char* ch1;
xml->QueryStringAttribute("source", &ch1);
std::string s1(ch1);
m_Source = s1;
if (xml->FindAttribute("offset"))
{
const char* ch2;
xml->QueryStringAttribute("offset", &ch2);
std::string s2(ch2);
m_Offset = s2;
}
if (xml->FindAttribute("set"))
{
const char* ch3;
xml->QueryStringAttribute("set", &ch3);
std::string s3(ch3);
m_Set = s3;
}
}
Vertices::Vertices(tinyxml2::XMLElement* xml)
{
const char* ch;
xml->QueryStringAttribute("id", &ch);
std::string s(ch);
m_ID = s;
for (tinyxml2::XMLElement* child = xml->FirstChildElement("input"); child != NULL; child = child->NextSiblingElement("input"))
{
Input in(child);
m_Inputs.push_back(in);
}
}
P::P(tinyxml2::XMLElement* xml, unsigned int count)
{
m_Count = count;
std::stringstream str(xml->GetText());
m_Indices = new unsigned short[count * 9];
for (int i = 0; i < count * 9; i++)
{
str >> m_Indices[i];
}
}
Triangles::Triangles(tinyxml2::XMLElement* xml)
{
xml->QueryIntAttribute("count", (int*)&m_Count);
const char* ch;
xml->QueryStringAttribute("count", &ch);
std::string s(ch);
m_Material = s;
for (tinyxml2::XMLElement* child = xml->FirstChildElement("input"); child != NULL; child = child->NextSiblingElement("input"))
{
Input in(child);
m_Inputs.push_back(in);
}
tinyxml2::XMLElement* mp = xml->FirstChildElement("p");
if (mp != NULL)
{
m_P = P(mp, m_Count);
}
}
Mesh::Mesh(tinyxml2::XMLElement* xml)
{
for (tinyxml2::XMLElement* child = xml->FirstChildElement("source"); child != NULL; child = child->NextSiblingElement("source"))
{
Source sc(child);
m_Sources.push_back(sc);
}
m_Vertices = Vertices(xml->FirstChildElement("vertices"));
for (tinyxml2::XMLElement* child = xml->FirstChildElement("triangles"); child != NULL; child = child->NextSiblingElement("triangles"))
{
Triangles tr(child);
m_Triangles.push_back(tr);
}
}