コード例 #1
0
void BoundingFrustumReader::Read(ContentReader* reader)
{
    reader->Log.WriteLine("Bounding frustum matrix:");
    reader->Log.Indent();

    MatrixReader().Read(reader);

    reader->Log.Unindent();
}
コード例 #2
0
void ModelReader::Read(ContentReader* reader)
{
    // Read the bone names and transforms.
    uint32_t boneCount = reader->ReadUInt32();
    reader->Log.WriteLine("Bone count: %u", boneCount);

    for (uint32_t i = 0; i < boneCount; i++)
    {
        reader->Log.WriteLine("Bone %u:", i);
        reader->Log.Indent();

        reader->Log.WriteLine("Name:");
        reader->ReadObject();

        reader->Log.WriteLine("Transform:");
        reader->Log.Indent();
        MatrixReader().Read(reader);
        reader->Log.Unindent();

        reader->Log.Unindent();
    }

    // Read the bone hierarchy.
    for (uint32_t i = 0; i < boneCount; i++)
    {
        reader->Log.WriteLine("Bone %u hierarchy:", i);
        reader->Log.Indent();

        // Read the parent bone reference.
        reader->Log.Write("Parent: ");
        ReadBoneReference(reader, boneCount);

        // Read the child bone references.
        uint32_t childCount = reader->ReadUInt32();

        if (childCount)
        {
            reader->Log.WriteLine("Children:");
            reader->Log.Indent();

            for (uint32_t j = 0; j < childCount; j++)
            {
                ReadBoneReference(reader, boneCount);
            }

            reader->Log.Unindent();
        }

        reader->Log.Unindent();
    }

    // Read the mesh data.
    uint32_t meshCount = reader->ReadUInt32();
    reader->Log.WriteLine("Mesh count: %u", meshCount);

    for (uint32_t i = 0; i < meshCount; i++)
    {
        reader->Log.WriteLine("Mesh %u", i);
        reader->Log.Indent();

        reader->Log.WriteLine("Mesh name:");
        reader->ReadObject();

        reader->Log.Write("Mesh parent: ");
        ReadBoneReference(reader, boneCount);

        reader->Log.WriteLine("Mesh bounds:");
        reader->Log.Indent();
        BoundingSphereReader().Read(reader);
        reader->Log.Unindent();

        reader->Log.WriteLine("Mesh tag:");
        reader->ReadObject();

        // Read the mesh part data.
        uint32_t partCount = reader->ReadUInt32();
        reader->Log.WriteLine("Mesh part count: %u", partCount);

        for (uint32_t j = 0; j < partCount; j++)
        {
            reader->Log.WriteLine("Mesh part %u", j);
            reader->Log.Indent();

            reader->Log.WriteLine("Vertex offset: %d", reader->ReadInt32());
            reader->Log.WriteLine("Num vertices: %d", reader->ReadInt32());
            reader->Log.WriteLine("Start index: %d", reader->ReadInt32());
            reader->Log.WriteLine("Primitive count: %d", reader->ReadInt32());

            reader->Log.WriteLine("Mesh part tag:");
            reader->ReadObject();

            reader->Log.Write("Vertex buffer: ");
            reader->ReadSharedResource();

            reader->Log.Write("Index buffer: ");
            reader->ReadSharedResource();

            reader->Log.Write("Effect: ");
            reader->ReadSharedResource();
            
            reader->Log.Unindent();
        }

        reader->Log.Unindent();
    }

    // Read the final pieces of model data.
    reader->Log.Write("Model root: ");
    ReadBoneReference(reader, boneCount);

    reader->Log.WriteLine("Model tag:");
    reader->ReadObject();
}