CObject* CEntitySerializer::LoadObject(const std::vector<unsigned char>& data, long mark) { if (!data.size() ) { return NULL; } assert(data.size() ) ; // load magic long magic; assert_input(data, mark, sizeof(long)); memcpy(&magic , (char*)&data[mark], sizeof(long)); if (magic == 2 ) { return LoadObjectTree(data, mark); } else { CMatrix m_Pos; std::string name; float globalScale; long m =mark + sizeof(long); assert_input(data, m, sizeof(CMatrix)); memcpy(&m_Pos, (char*) &data[m] , sizeof(CMatrix)); m+= sizeof(CMatrix); pop_string(data, name, m); m+= name.size() + sizeof(long); assert_input(data, m,sizeof(float)); memcpy(&globalScale , (char*)&data[m], sizeof(float)); m+=sizeof(float); CEntity * ent = LoadEntity(data, m, magic ==1); std::vector<CObject*> children; CMatrix mat; mat = mat.ConstructScaling(CVector(globalScale,globalScale,globalScale)); CObject* pObject = new CObject("", true, mat,children, ent); return pObject; } return NULL; }