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); }
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); }