public static void SaveMaterial(ICLIFlags flags, string path, FindLogic.Combo.ComboInfo info, ulong material) { FindLogic.Combo.MaterialInfo materialInfo = info.Materials[material]; FindLogic.Combo.MaterialDataInfo materialDataInfo = info.MaterialDatas[materialInfo.MaterialData]; Model.OWMatWriter14 materialWriter = new Model.OWMatWriter14(); string textureDirectory = Path.Combine(path, "Textures"); if (info.SaveRuntimeData.Threads) { info.SaveRuntimeData.Tasks.Add(Task.Run(() => { SaveOWMaterialFile(path, materialInfo, materialWriter, info); })); } else { SaveOWMaterialFile(path, materialInfo, materialWriter, info); } foreach (KeyValuePair <ulong, ImageDefinition.ImageType> texture in materialDataInfo.Textures) { SaveTexture(flags, textureDirectory, info, texture.Key); } }
public static void SaveModelLook(ICLIFlags flags, string path, FindLogic.Combo.ComboInfo info, ulong modelLook) { Model.OWMatWriter14 materialWriter = new Model.OWMatWriter14(); FindLogic.Combo.ModelLookInfo modelLookInfo = info.ModelLooks[modelLook]; if (info.SaveRuntimeData.Threads) { info.SaveRuntimeData.Tasks.Add(Task.Run(() => { SaveOWMaterialModelLookFile(path, modelLookInfo, materialWriter, info); })); } else { SaveOWMaterialModelLookFile(path, modelLookInfo, materialWriter, info); } if (modelLookInfo.Materials == null) { return; } foreach (ulong modelLookMaterial in modelLookInfo.Materials) { SaveMaterial(flags, path, info, modelLookMaterial); } }
public static void SaveOWMaterialFile(string path, FindLogic.Combo.MaterialInfo materialInfo, Model.OWMatWriter14 materialWriter, FindLogic.Combo.ComboInfo info) { string materialPath = Path.Combine(path, "Materials", $"{materialInfo.GetNameIndex()}{materialWriter.Format}"); CreateDirectoryFromFile(materialPath); using (Stream materialOutputStream = File.OpenWrite(materialPath)) { materialOutputStream.SetLength(0); materialWriter.Write(materialOutputStream, info, materialInfo); } }