public static Transform Load(string ModelName)
    {
        Clear();

        string OpenPath = string.Concat(Configuration.GameFld, Configuration.Mod, ModelName);
        ModelObject = new GameObject(ModelName);

        if (!File.Exists(OpenPath + ".mdl"))
            return ModelObject.transform;

        CRead = new CustomReader(File.OpenRead(OpenPath + ".mdl"));
        MDL_Header = CRead.ReadType<studiohdr_t>();
        ParseMdlFile();

        CRead = new CustomReader(File.OpenRead(OpenPath + ".vvd"));
        VVD_Header = CRead.ReadType<vertexFileHeader_t>();
        ParseVvdFile();

        CRead = new CustomReader(File.OpenRead(OpenPath + ".dx90.vtx"));
        VTX_Header = CRead.ReadType<FileHeader_t>();
        ParseVtxFile();

		if (!Configuration.Models.ContainsKey(ModelObject.name))
			Configuration.Models.Add(ModelName, ModelObject.transform);

        CRead.Dispose();
        return ModelObject.transform;
    }
    public static Transform LoadMdl(string ModelName)
    {
        Clear();

        string OpenPath = string.Concat(WorldController.GamePath, WorldController.ModName, ModelName);

        ModelObject = new GameObject(ModelName);

        if (!File.Exists(OpenPath + ".mdl"))
        {
            return(ModelObject.transform);
        }

        // ----- BEGIN READ MDL, VVD, VTX ----- //

        CRead      = new CustomReader(new BinaryReader(File.OpenRead(OpenPath + ".mdl")));
        MDL_Header = CRead.ReadType <studiohdr_t>(0);
        ParseMdlFile();

        CRead      = new CustomReader(new BinaryReader(File.OpenRead(OpenPath + ".vvd")));
        VVD_Header = CRead.ReadType <vertexFileHeader_t>(0);
        ParseVvdFile();

        CRead      = new CustomReader(new BinaryReader(File.OpenRead(OpenPath + ".dx90.vtx")));
        VTX_Header = CRead.ReadType <FileHeader_t>(0);
        ParseVtxFile();

        // ----- END READ MDL, VVD, VTX ----- //

        return(ModelObject.transform);
    }
Exemple #3
0
    public vertexFileHeader_t ParseHeader()
    {
        header = new vertexFileHeader_t();

        header.id       = FileReader.readInt(stream);
        header.version  = FileReader.readInt(stream);  // MODEL_VERTEX_FILE_VERSION
        header.checksum = FileReader.readLong(stream); // same as studiohdr_t, ensures sync
        header.numLODs  = FileReader.readInt(stream);  // num of valid lods

        header.numLODVertices = new int[MAX_NUM_LODS]; // num verts for desired root lod (size is MAX_NUM_LODS = 8)
        for (int i = 0; i < header.numLODVertices.Length; i++)
        {
            header.numLODVertices[i] = FileReader.readInt(stream);
        }

        header.numFixups        = FileReader.readInt(stream); // num of vertexFileFixup_t
        header.fixupTableStart  = FileReader.readInt(stream); // offset from base to fixup table
        header.vertexDataStart  = FileReader.readInt(stream); // offset from base to vertex block
        header.tangentDataStart = FileReader.readInt(stream); // offset from base to tangent block

        return(header);
    }