std::string(name, name+20)));
}
+void
+ Morph::append(int index, float x, float y, float z)
+ {
+ indices.push_back(index);
+ pos_list.push_back(Vector3(x, y, z));
+ }
+
std::wstring
IO::getName()const
{
bool parseEnglishBoneList()
{
- for(size_t i=0; i<io_.bone_name_list.size(); ++i){
- std::string english=reader_.getString(50);
+ for(size_t i=0; i<io_.bone_display_name_list.size(); ++i){
+ text::copyStringAndFillZero(
+ io_.bone_display_name_list[i].english_name,
+ reader_.getString(50));
}
return true;
}
bool parseEnglishName()
{
- text::copyStringAndFillZero(io_.english_model_name,
+ text::copyStringAndFillZero(io_.english_name,
reader_.getString(20));
text::copyStringAndFillZero(io_.english_comment,
reader_.getString(256));
for(unsigned int i=0; i<count; ++i){
unsigned short bone=reader_.getUshort();
unsigned char disp=reader_.getUchar();
- io_.bone_list.push_back(std::make_pair(bone, disp));
+ io_.bone_display_list.push_back(std::make_pair(bone, disp));
}
return true;
}
{
unsigned int count=reader_.getUchar();
for(unsigned int i=0; i<count; ++i){
- io_.bone_name_list.push_back(reader_.getString(50));
+ io_.bone_display_name_list.push_back(BoneDisplayName());
+ text::copyStringAndFillZero(
+ io_.bone_display_name_list.back().name,
+ reader_.getString(50));
}
return true;
}
////////////////////////////////////////////////////////////
for(size_t i=0; i<bones.size(); ++i){
Bone &bone=bones[i];
+ bone.index=i;
if(bone.parent_index!=0xFFFF){
bone.parent=&bones[bone.parent_index];
bone.parent->children.push_back(&bone);
}
- if(bone.tail_index!=0xFFFF){
+ if(bone.tail_index!=0){
bone.tail=bones[bone.tail_index].pos;
}
}
// bone naem list
//std::cout << "bone name list" << std::endl;
- w.writeValue<BYTE>(bone_name_list.size());
- for(size_t i=0; i<bone_name_list.size(); ++i){
- char buf[50];
- sprintf(buf, "%s\r", bone_name_list[i].c_str());
- w.writeArray<char>(buf, 50);
+ w.writeValue<BYTE>(bone_display_name_list.size());
+ for(size_t i=0; i<bone_display_name_list.size(); ++i){
+ // 50bytes
+ w.writeArray<char>(bone_display_name_list[i].name, 50);
}
// bone list
//std::cout << "bone list" << std::endl;
- w.writeValue<DWORD>(bone_list.size());
- for(size_t i=0; i<bone_list.size(); ++i){
- w.writeValue<WORD>(bone_list[i].first);
- w.writeValue<BYTE>(bone_list[i].second);
+ w.writeValue<DWORD>(bone_display_list.size());
+ for(size_t i=0; i<bone_display_list.size(); ++i){
+ w.writeValue<WORD>(bone_display_list[i].first);
+ w.writeValue<BYTE>(bone_display_list[i].second);
}
+ ////////////////////////////////////////////////////////////
// extend
+ ////////////////////////////////////////////////////////////
+ w.writeValue<char>(0x01);
+
+ ////////////////////////////////////////////////////////////
+ // english names
+ ////////////////////////////////////////////////////////////
+ w.writeArray<char>(english_name, 20);
+ w.writeArray<char>(english_comment, 256);
+
+ for(size_t i=0; i<bones.size(); ++i){
+ w.writeArray<char>(bones[i].english_name, 20);
+ }
+
+ for(size_t i=1; i<morph_list.size(); ++i){
+ w.writeArray<char>(morph_list[i].english_name, 20);
+ }
+
+ for(size_t i=0; i<bone_display_name_list.size(); ++i){
+ w.writeArray<char>(bone_display_name_list[i].english_name, 50);
+ }
+
+ ////////////////////////////////////////////////////////////
+ // toon textures
+ ////////////////////////////////////////////////////////////
+ for(size_t i=0; i<10; ++i){
+ w.writeArray<char>(toon_textures[i].name, 100);
+ }
return true;
}