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\obj\obj.cpp" />
|
||||
<ClCompile Include="src\sm\sm.cpp" />
|
||||
<ClCompile Include="src\util\files.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\assets\material.h" />
|
||||
|
@ -89,6 +90,7 @@
|
|||
<ClInclude Include="src\ms3d\ms3d.h" />
|
||||
<ClInclude Include="src\obj\obj.h" />
|
||||
<ClInclude Include="src\sm\sm.h" />
|
||||
<ClInclude Include="src\util\files.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "../util/files.h"
|
||||
|
||||
Ms3d::Ms3d()
|
||||
{
|
||||
m_numVertices = 0;
|
||||
|
@ -104,7 +106,7 @@ bool Ms3d::Load(const std::string &file)
|
|||
Ms3dMesh *mesh = &m_meshes[i];
|
||||
|
||||
fread(&mesh->editorFlags, 1, 1, fp);
|
||||
fread(&mesh->name, 32, 1, fp);
|
||||
ReadString(fp, mesh->name, 32);
|
||||
fread(&mesh->numTriangles, 2, 1, fp);
|
||||
mesh->triangles = new unsigned short[mesh->numTriangles];
|
||||
for (int j = 0; j < mesh->numTriangles; ++j)
|
||||
|
@ -122,7 +124,7 @@ bool Ms3d::Load(const std::string &file)
|
|||
{
|
||||
Ms3dMaterial *material = &m_materials[i];
|
||||
|
||||
fread(&material->name, 32, 1, fp);
|
||||
ReadString(fp, material->name, 32);
|
||||
for (int j = 0; j < 4; ++j)
|
||||
fread(&material->ambient[j], 4, 1, fp);
|
||||
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->transparency, 4, 1, fp);
|
||||
fread(&material->mode, 1, 1, fp);
|
||||
fread(&material->texture, 128, 1, fp);
|
||||
fread(&material->alpha, 128, 1, fp);
|
||||
ReadString(fp, material->texture, 128);
|
||||
ReadString(fp, material->alpha, 128);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -153,8 +155,8 @@ bool Ms3d::Load(const std::string &file)
|
|||
Ms3dJoint *joint = &m_joints[i];
|
||||
|
||||
fread(&joint->editorFlags, 1, 1, fp);
|
||||
fread(&joint->name, 32, 1, fp);
|
||||
fread(&joint->parentName, 32, 1, fp);
|
||||
ReadString(fp, joint->name, 32);
|
||||
ReadString(fp, joint->parentName, 32);
|
||||
fread(&joint->rotation.x, 4, 1, fp);
|
||||
fread(&joint->rotation.y, 4, 1, fp);
|
||||
fread(&joint->rotation.z, 4, 1, fp);
|
||||
|
|
|
@ -32,7 +32,7 @@ struct Ms3dTriangle
|
|||
struct Ms3dMesh
|
||||
{
|
||||
unsigned char editorFlags;
|
||||
char name[32];
|
||||
std::string name;
|
||||
unsigned short numTriangles;
|
||||
unsigned short *triangles;
|
||||
char materialIndex;
|
||||
|
@ -50,7 +50,7 @@ struct Ms3dMesh
|
|||
|
||||
struct Ms3dMaterial
|
||||
{
|
||||
char name[32];
|
||||
std::string name;
|
||||
float ambient[4];
|
||||
float diffuse[4];
|
||||
float specular[4];
|
||||
|
@ -58,8 +58,8 @@ struct Ms3dMaterial
|
|||
float shininess;
|
||||
float transparency;
|
||||
char mode;
|
||||
char texture[128];
|
||||
char alpha[128];
|
||||
std::string texture;
|
||||
std::string alpha;
|
||||
};
|
||||
|
||||
struct Ms3dKeyFrame
|
||||
|
@ -71,8 +71,8 @@ struct Ms3dKeyFrame
|
|||
struct Ms3dJoint
|
||||
{
|
||||
unsigned char editorFlags;
|
||||
char name[32];
|
||||
char parentName[32];
|
||||
std::string name;
|
||||
std::string parentName;
|
||||
Vector3 rotation;
|
||||
Vector3 position;
|
||||
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