ms3d strings are now read into std::string's instead of char arrays
This commit is contained in:
parent
5fc89c88f7
commit
37863a726a
|
@ -80,6 +80,7 @@
|
||||||
<ClCompile Include="src\ms3d\ms3d.cpp" />
|
<ClCompile Include="src\ms3d\ms3d.cpp" />
|
||||||
<ClCompile Include="src\obj\obj.cpp" />
|
<ClCompile Include="src\obj\obj.cpp" />
|
||||||
<ClCompile Include="src\sm\sm.cpp" />
|
<ClCompile Include="src\sm\sm.cpp" />
|
||||||
|
<ClCompile Include="src\util\files.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="src\assets\material.h" />
|
<ClInclude Include="src\assets\material.h" />
|
||||||
|
@ -89,6 +90,7 @@
|
||||||
<ClInclude Include="src\ms3d\ms3d.h" />
|
<ClInclude Include="src\ms3d\ms3d.h" />
|
||||||
<ClInclude Include="src\obj\obj.h" />
|
<ClInclude Include="src\obj\obj.h" />
|
||||||
<ClInclude Include="src\sm\sm.h" />
|
<ClInclude Include="src\sm\sm.h" />
|
||||||
|
<ClInclude Include="src\util\files.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "../util/files.h"
|
||||||
|
|
||||||
Ms3d::Ms3d()
|
Ms3d::Ms3d()
|
||||||
{
|
{
|
||||||
m_numVertices = 0;
|
m_numVertices = 0;
|
||||||
|
@ -104,7 +106,7 @@ bool Ms3d::Load(const std::string &file)
|
||||||
Ms3dMesh *mesh = &m_meshes[i];
|
Ms3dMesh *mesh = &m_meshes[i];
|
||||||
|
|
||||||
fread(&mesh->editorFlags, 1, 1, fp);
|
fread(&mesh->editorFlags, 1, 1, fp);
|
||||||
fread(&mesh->name, 32, 1, fp);
|
ReadString(fp, mesh->name, 32);
|
||||||
fread(&mesh->numTriangles, 2, 1, fp);
|
fread(&mesh->numTriangles, 2, 1, fp);
|
||||||
mesh->triangles = new unsigned short[mesh->numTriangles];
|
mesh->triangles = new unsigned short[mesh->numTriangles];
|
||||||
for (int j = 0; j < mesh->numTriangles; ++j)
|
for (int j = 0; j < mesh->numTriangles; ++j)
|
||||||
|
@ -122,7 +124,7 @@ bool Ms3d::Load(const std::string &file)
|
||||||
{
|
{
|
||||||
Ms3dMaterial *material = &m_materials[i];
|
Ms3dMaterial *material = &m_materials[i];
|
||||||
|
|
||||||
fread(&material->name, 32, 1, fp);
|
ReadString(fp, material->name, 32);
|
||||||
for (int j = 0; j < 4; ++j)
|
for (int j = 0; j < 4; ++j)
|
||||||
fread(&material->ambient[j], 4, 1, fp);
|
fread(&material->ambient[j], 4, 1, fp);
|
||||||
for (int j = 0; j < 4; ++j)
|
for (int j = 0; j < 4; ++j)
|
||||||
|
@ -134,8 +136,8 @@ bool Ms3d::Load(const std::string &file)
|
||||||
fread(&material->shininess, 4, 1, fp);
|
fread(&material->shininess, 4, 1, fp);
|
||||||
fread(&material->transparency, 4, 1, fp);
|
fread(&material->transparency, 4, 1, fp);
|
||||||
fread(&material->mode, 1, 1, fp);
|
fread(&material->mode, 1, 1, fp);
|
||||||
fread(&material->texture, 128, 1, fp);
|
ReadString(fp, material->texture, 128);
|
||||||
fread(&material->alpha, 128, 1, fp);
|
ReadString(fp, material->alpha, 128);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,8 +155,8 @@ bool Ms3d::Load(const std::string &file)
|
||||||
Ms3dJoint *joint = &m_joints[i];
|
Ms3dJoint *joint = &m_joints[i];
|
||||||
|
|
||||||
fread(&joint->editorFlags, 1, 1, fp);
|
fread(&joint->editorFlags, 1, 1, fp);
|
||||||
fread(&joint->name, 32, 1, fp);
|
ReadString(fp, joint->name, 32);
|
||||||
fread(&joint->parentName, 32, 1, fp);
|
ReadString(fp, joint->parentName, 32);
|
||||||
fread(&joint->rotation.x, 4, 1, fp);
|
fread(&joint->rotation.x, 4, 1, fp);
|
||||||
fread(&joint->rotation.y, 4, 1, fp);
|
fread(&joint->rotation.y, 4, 1, fp);
|
||||||
fread(&joint->rotation.z, 4, 1, fp);
|
fread(&joint->rotation.z, 4, 1, fp);
|
||||||
|
|
|
@ -32,7 +32,7 @@ struct Ms3dTriangle
|
||||||
struct Ms3dMesh
|
struct Ms3dMesh
|
||||||
{
|
{
|
||||||
unsigned char editorFlags;
|
unsigned char editorFlags;
|
||||||
char name[32];
|
std::string name;
|
||||||
unsigned short numTriangles;
|
unsigned short numTriangles;
|
||||||
unsigned short *triangles;
|
unsigned short *triangles;
|
||||||
char materialIndex;
|
char materialIndex;
|
||||||
|
@ -50,7 +50,7 @@ struct Ms3dMesh
|
||||||
|
|
||||||
struct Ms3dMaterial
|
struct Ms3dMaterial
|
||||||
{
|
{
|
||||||
char name[32];
|
std::string name;
|
||||||
float ambient[4];
|
float ambient[4];
|
||||||
float diffuse[4];
|
float diffuse[4];
|
||||||
float specular[4];
|
float specular[4];
|
||||||
|
@ -58,8 +58,8 @@ struct Ms3dMaterial
|
||||||
float shininess;
|
float shininess;
|
||||||
float transparency;
|
float transparency;
|
||||||
char mode;
|
char mode;
|
||||||
char texture[128];
|
std::string texture;
|
||||||
char alpha[128];
|
std::string alpha;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Ms3dKeyFrame
|
struct Ms3dKeyFrame
|
||||||
|
@ -71,8 +71,8 @@ struct Ms3dKeyFrame
|
||||||
struct Ms3dJoint
|
struct Ms3dJoint
|
||||||
{
|
{
|
||||||
unsigned char editorFlags;
|
unsigned char editorFlags;
|
||||||
char name[32];
|
std::string name;
|
||||||
char parentName[32];
|
std::string parentName;
|
||||||
Vector3 rotation;
|
Vector3 rotation;
|
||||||
Vector3 position;
|
Vector3 position;
|
||||||
unsigned short numRotationFrames;
|
unsigned short numRotationFrames;
|
||||||
|
|
25
MeshConverter/src/util/files.cpp
Normal file
25
MeshConverter/src/util/files.cpp
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#include "files.h"
|
||||||
|
|
||||||
|
void ReadString(FILE *fp, std::string &buffer, int fixedLength)
|
||||||
|
{
|
||||||
|
char c;
|
||||||
|
|
||||||
|
if (fixedLength > 0)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < fixedLength; ++i)
|
||||||
|
{
|
||||||
|
fread(&c, 1, 1, fp);
|
||||||
|
if (c != '\0')
|
||||||
|
buffer += c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
fread(&c, 1, 1, fp);
|
||||||
|
if (c != '\0')
|
||||||
|
buffer += c;
|
||||||
|
} while (c != '\0');
|
||||||
|
}
|
||||||
|
}
|
9
MeshConverter/src/util/files.h
Normal file
9
MeshConverter/src/util/files.h
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#ifndef __UTIL_FILES_H_INCLUDED__
|
||||||
|
#define __UTIL_FILES_H_INCLUDED__
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
void ReadString(FILE *fp, std::string &buffer, int fixedLength = 0);
|
||||||
|
|
||||||
|
#endif
|
Reference in a new issue