Static models don't require too much work :


struct BSP::File_StaticModel
{
char model[128];
vec3_t origin;
vec3_t angles;
float scale;
int32_t firstVertexData;
int32_t numVertexData;
};

void BSP::LoadStaticModelDefs(const GameLump* GameLump)
{
if (!GameLump->Length)
{
return;
}

if (GameLump->Length % sizeof(File_StaticModel))
{
return;
}

size_t NumStaticModels = GameLump->Length / sizeof(File_StaticModel);
if (NumStaticModels > 0)
{
staticModels.resize(NumStaticModels);

const File_StaticModel* In = (File_StaticModel *)GameLump->Buffer;
StaticModel* Out = staticModels.data();

for (size_t i = 0; i < NumStaticModels; In++, Out++, i++)
{
Out->visCount = 0;
Out->angles = In->angles;
Out->origin = In->origin;
Out->scale = In->scale;
Out->firstVertexData = In->firstVertexData;
Out->numVertexData = In->numVertexData;
Out->modelName = CanonicalModelName(In->model);
}
}
}


Once you got them, just generate them as if they were entities