private static void LoadObjectModel( Model model, ISource source, Matrix44 transform )
        {
            //	Load the skin file for the current part
            IDictionary< string, ITexture2d > textureTable = LoadSkin( source, DefaultSkinFile( source, ModelPart.Weapon ) );

            //	Load the MD3 associated with the current part
            ModelMesh partMesh = LoadMd3( source, model, ModelPart.Weapon, transform, source, textureTable );
            model.SetPartMesh( ModelPart.Weapon, partMesh );
            model.SetRootMesh( partMesh );
        }
        private static void LoadNestedModel( Model model, ISource source, Matrix44 transform )
        {
            //	Run through all the parts
            for ( int partIndex = 0; partIndex < ( int )ModelPart.NumParts; ++partIndex )
            {
                ModelPart curPart = ( ModelPart )partIndex;

                if ( curPart == ModelPart.Weapon )
                {
                    //	The weapon does not have a related mesh, so just ignore...
                    continue;
                }
                //	Load the skin file for the current part
                IDictionary< string, ITexture2d > surfaceTextureTable = LoadSkin( source, DefaultSkinFile( source, curPart ) );

                //	Load the MD3 associated with the current part
                ModelMesh partMesh = LoadMd3( source, model, curPart, transform, MeshFile( source, curPart ), surfaceTextureTable );
                model.SetPartMesh( curPart, partMesh );
            }

            model.SetRootMesh( model.GetPartMesh( ModelPart.Lower ) );
            NestMesh( model, ModelPart.Lower, ModelPart.Upper, "tag_torso" );
            NestMesh( model, ModelPart.Upper, ModelPart.Head, "tag_head" );
            NestMesh( model, ModelPart.Upper, ModelPart.Weapon, "tag_weapon" );
        }