Esempio n. 1
0
    void DiMeshSerializer::ImportMesh( DiDataStreamPtr& stream, DiMesh* pDest )
    {
        DI_SERIAL_LOG("Loading mesh : %s", stream->GetName().c_str());
        char sign[4];
        stream->Read(sign,4);

        if (CheckHead(sign))
        {
            uint16 version;
            stream->Read(&version,sizeof(uint16));

            DI_SERIAL_LOG("Mesh version: %d", version);

            if (version >= MODEL_SERIAL_VERSION_NUM)
            {
                DI_ERROR("Unknow mesh version.");
                return;
            }

            DiMeshSerializerImpl* impl = GetImplemention((DiMeshSerialVersion)version);
            if (impl)
            {
                impl->ImportMesh(stream,pDest);
            }

            DI_DELETE impl;
            return;
        }

        DI_ERROR("Invalid mesh file head.");
        return;
    }
Esempio n. 2
0
    void DiMotionSerializer::ImportMotion( DiDataStreamPtr& stream, DiMotion* pDest )
    {
        char sign[4];
        stream->Read(sign,4);

        if (sign[0] == 'D' &&
            sign[1] == 'i' &&
            sign[2] == 'M' &&
            sign[3] == 'o')
        {
            uint16 version;
            stream->Read(&version,sizeof(uint16));

            if (version >= MOTION_SERIAL_VERSION_NUM)
            {
                DI_ERROR("Invalid version number!");
                return;
            }

            DiMotionSerializerImpl* impl = GetImplemention((DiMotionSerialVersion)version);
            if (impl)
            {
                impl->ImportMotion(stream,pDest);
            }

            DI_DELETE impl;
            return;
        }

        DI_ERROR("Invalid head format!");
        return;
    }
Esempio n. 3
0
    void DiMeshSerializer::ExportMesh( const DiMeshPtr pMesh, DiDataStreamPtr stream )
    {
        static char head[4] = { 'D', 'e', 'm', 'i' };
        stream->Write(head, 4);

        uint16 version = MODEL_SERIAL_VERSION_NUM - 1;
        stream->Write(&version,sizeof(uint16));

        DiMeshSerializerImpl* impl = GetImplemention((DiMeshSerialVersion)version);
        if (impl)
        {
            impl->ExportMesh(pMesh.get(),stream);
        }

        DI_DELETE impl;
    }
Esempio n. 4
0
    void DiMotionSerializer::ExportMotion( const DiMotionPtr pMotion, DiDataStreamPtr stream )
    {
        char sign[4];
        sign[0] = 'D';
        sign[1] = 'i';
        sign[2] = 'M';
        sign[3] = 'o';
        stream->Write(sign,4);

        uint16 version = MOTION_SERIAL_VERSION_NUM - 1;
        stream->Write(&version,sizeof(uint16));

        DiMotionSerializerImpl* impl = GetImplemention((DiMotionSerialVersion)version);
        if (impl)
        {
            impl->ExportMotion(pMotion.get(),stream);
        }

        DI_DELETE impl;
    }