

Public Member Functions | |
| BinaryModelWriter (ostream &) | |
| virtual bool | write (const Model &) |
| ~BinaryModelWriter () | |
Private Member Functions | |
| void | writeGroup (const Mesh::PrimitiveGroup &) |
| void | writeMaterial (const Mesh::Material &) |
| void | writeMesh (const Mesh &) |
| void | writeVertexDescription (const Mesh::VertexDescription &) |
| void | writeVertices (const void *vertexData, uint32 nVertices, uint32 stride, const Mesh::VertexDescription &desc) |
Private Attributes | |
| ostream & | out |
|
|
Definition at line 1572 of file modelfile.cpp. 01572 : 01573 out(_out) 01574 { 01575 }
|
|
|
Definition at line 1578 of file modelfile.cpp. 01579 {
01580 }
|
|
|
Implements ModelWriter. Definition at line 1638 of file modelfile.cpp. References CEL_MODEL_HEADER_BINARY, out, writeMaterial(), and writeMesh(). 01639 {
01640 out << CEL_MODEL_HEADER_BINARY;
01641
01642 for (uint32 matIndex = 0; model.getMaterial(matIndex); matIndex++)
01643 writeMaterial(*model.getMaterial(matIndex));
01644
01645 for (uint32 meshIndex = 0; model.getMesh(meshIndex); meshIndex++)
01646 writeMesh(*model.getMesh(meshIndex));
01647
01648 return true;
01649 }
|
|
|
Definition at line 1653 of file modelfile.cpp. References out, writeInt16(), and writeUint(). Referenced by writeMesh(). 01654 {
01655 writeInt16(out, static_cast<int16>(group.prim));
01656 writeUint(out, group.materialIndex);
01657 writeUint(out, group.nIndices);
01658
01659 // Print the indices, twelve per line
01660 for (uint32 i = 0; i < group.nIndices; i++)
01661 writeUint(out, group.indices[i]);
01662 }
|
|
|
Definition at line 1750 of file modelfile.cpp. References CMOD_Diffuse, CMOD_Emissive, CMOD_EndMaterial, CMOD_Material, CMOD_Opacity, CMOD_Specular, CMOD_SpecularPower, CMOD_Texture, DefaultDiffuse(), DefaultEmissive(), DefaultOpacity, DefaultSpecular(), DefaultSpecularPower, ResourceManager< T >::getResourceInfo(), GetTextureManager(), InvalidResource, out, TextureInfo::source, writeInt16(), writeToken(), writeTypeColor(), writeTypeFloat1(), and writeTypeString(). Referenced by write(). 01751 {
01752 writeToken(out, CMOD_Material);
01753
01754 if (material.diffuse != DefaultDiffuse)
01755 {
01756 writeToken(out, CMOD_Diffuse);
01757 writeTypeColor(out, material.diffuse);
01758 }
01759
01760 if (material.emissive != DefaultEmissive)
01761 {
01762 writeToken(out, CMOD_Emissive);
01763 writeTypeColor(out, material.emissive);
01764 }
01765
01766 if (material.specular != DefaultSpecular)
01767 {
01768 writeToken(out, CMOD_Specular);
01769 writeTypeColor(out, material.specular);
01770 }
01771
01772 if (material.specularPower != DefaultSpecularPower)
01773 {
01774 writeToken(out, CMOD_SpecularPower);
01775 writeTypeFloat1(out, material.specularPower);
01776 }
01777
01778 if (material.opacity != DefaultOpacity)
01779 {
01780 writeToken(out, CMOD_Opacity);
01781 writeTypeFloat1(out, material.opacity);
01782 }
01783
01784 for (int i = 0; i < Mesh::TextureSemanticMax; i++)
01785 {
01786 if (material.maps[i] != InvalidResource)
01787 {
01788 const TextureInfo* texInfo = GetTextureManager()->getResourceInfo(material.maps[i]);
01789 if (texInfo != NULL)
01790 {
01791 writeToken(out, CMOD_Texture);
01792 writeInt16(out, (int16) i);
01793 writeTypeString(out, texInfo->source);
01794 }
01795 }
01796 }
01797 #if 0
01798 if (material.tex1 != InvalidResource)
01799 {
01800 const TextureInfo* texInfo = GetTextureManager()->getResourceInfo(material.tex1);
01801 if (texInfo != NULL)
01802 {
01803 writeToken(out, CMOD_Texture1);
01804 writeTypeString(out, texInfo->source);
01805 }
01806 }
01807 #endif
01808
01809 writeToken(out, CMOD_EndMaterial);
01810 }
|
|
|
Definition at line 1666 of file modelfile.cpp. References CMOD_EndMesh, CMOD_Mesh, out, writeGroup(), writeToken(), writeVertexDescription(), and writeVertices(). Referenced by write(). 01667 {
01668 writeToken(out, CMOD_Mesh);
01669
01670 writeVertexDescription(mesh.getVertexDescription());
01671
01672 writeVertices(mesh.getVertexData(),
01673 mesh.getVertexCount(),
01674 mesh.getVertexStride(),
01675 mesh.getVertexDescription());
01676
01677 for (uint32 groupIndex = 0; mesh.getGroup(groupIndex); groupIndex++)
01678 writeGroup(*mesh.getGroup(groupIndex));
01679
01680 writeToken(out, CMOD_EndMesh);
01681 }
|
|
|
Definition at line 1735 of file modelfile.cpp. References CMOD_EndVertexDesc, CMOD_VertexDesc, out, writeInt16(), and writeToken(). Referenced by writeMesh(). 01736 {
01737 writeToken(out, CMOD_VertexDesc);
01738
01739 for (uint32 attr = 0; attr < desc.nAttributes; attr++)
01740 {
01741 writeInt16(out, static_cast<int16>(desc.attributes[attr].semantic));
01742 writeInt16(out, static_cast<int16>(desc.attributes[attr].format));
01743 }
01744
01745 writeToken(out, CMOD_EndVertexDesc);
01746 }
|
|
||||||||||||||||||||
|
Definition at line 1685 of file modelfile.cpp. References CMOD_Vertices, out, writeFloat(), writeToken(), and writeUint(). Referenced by writeMesh(). 01689 {
01690 const char* vertex = reinterpret_cast<const char*>(vertexData);
01691
01692 writeToken(out, CMOD_Vertices);
01693 writeUint(out, nVertices);
01694
01695 for (uint32 i = 0; i < nVertices; i++, vertex += stride)
01696 {
01697 for (uint32 attr = 0; attr < desc.nAttributes; attr++)
01698 {
01699 const char* cdata = vertex + desc.attributes[attr].offset;
01700 const float* fdata = reinterpret_cast<const float*>(cdata);
01701
01702 switch (desc.attributes[attr].format)
01703 {
01704 case Mesh::Float1:
01705 writeFloat(out, fdata[0]);
01706 break;
01707 case Mesh::Float2:
01708 writeFloat(out, fdata[0]);
01709 writeFloat(out, fdata[1]);
01710 break;
01711 case Mesh::Float3:
01712 writeFloat(out, fdata[0]);
01713 writeFloat(out, fdata[1]);
01714 writeFloat(out, fdata[2]);
01715 break;
01716 case Mesh::Float4:
01717 writeFloat(out, fdata[0]);
01718 writeFloat(out, fdata[1]);
01719 writeFloat(out, fdata[2]);
01720 writeFloat(out, fdata[3]);
01721 break;
01722 case Mesh::UByte4:
01723 out.write(cdata, 4);
01724 break;
01725 default:
01726 assert(0);
01727 break;
01728 }
01729 }
01730 }
01731 }
|
|
|
Definition at line 175 of file modelfile.cpp. Referenced by write(), writeGroup(), writeMaterial(), writeMesh(), writeVertexDescription(), and writeVertices(). |
1.4.1