public static MaterialFile ReadMaterialFile(string path) { MaterialFile mtl = new MaterialFile(); string[] lines = File.ReadAllLines(path); mtl.newmtl = new List <string> (); mtl.mapKd = new List <string> (); char[] charsToTrim = { ' ', '\t' }; foreach (string line in lines) { string str = line.Trim(charsToTrim); if (str == "" || str.StartsWith("#")) { continue; } string[] token = str.Split(' '); switch (token [0]) { case ("newmtl"): mtl.newmtl.Add(token [1]); break; case ("map_Kd"): mtl.mapKd.Add(token [1]); break; } } return(mtl); }
public static MaterialFile ReadMaterialFile(string path) { MaterialFile mtl = new MaterialFile(); string[] lines = File.ReadAllLines(path); mtl.newmtl = new List <string> (); mtl.mapKd = new List <string> (); foreach (string line in lines) { if (line == "" || line.StartsWith("#")) { continue; } string[] token = line.Split(' '); switch (token [0]) { case ("newmtl"): mtl.newmtl.Add(token [1]); break; case ("map_Kd"): mtl.mapKd.Add(token [1]); break; } } return(mtl); }
public ActionResult DownloadMaterialFile(int fileId) { MaterialFile indirilecekFile = db.MaterialFiles.Find(fileId); byte[] fileBytes = (byte[])indirilecekFile.MaterialFileContents; return(File(fileBytes, indirilecekFile.MaterialFileContentType, indirilecekFile.MaterialFileName)); }
public ActionResult DeleteMaterialFileFromIndex(int fileId, int materailCategoryId) { MaterialFile secilenFile = db.MaterialFiles.FirstOrDefault(s => s.MaterialFileID == fileId); db.MaterialFiles.Remove(secilenFile); db.SaveChanges(); return(RedirectToAction("Index", new { ID = materailCategoryId })); }
public ActionResult DeleteMaterialFile(int fileId, int materailId) { MaterialFile secilenFile = db.MaterialFiles.FirstOrDefault(s => s.MaterialFileID == fileId); db.MaterialFiles.Remove(secilenFile); db.SaveChanges(); return(RedirectToAction("Edit", new { id = materailId })); }
public async Task <ActionResult <MaterialFile> > Create([FromQuery] CreateRequest request, [FromForm] IFormFile file) { if (!await _authManager.HasSitePermissionsAsync(request.SiteId, MenuUtils.SitePermissions.MaterialFile)) { return(Unauthorized()); } var site = await _siteRepository.GetAsync(request.SiteId); if (file == null) { return(this.Error(Constants.ErrorUpload)); } var fileName = Path.GetFileName(file.FileName); var fileType = PathUtils.GetExtension(fileName); if (!_pathManager.IsFileExtensionAllowed(site, fileType)) { return(this.Error(Constants.ErrorFileExtensionAllowed)); } if (!_pathManager.IsFileSizeAllowed(site, file.Length)) { return(this.Error(Constants.ErrorFileSizeAllowed)); } var materialFileName = PathUtils.GetMaterialFileName(fileName); var virtualDirectoryPath = PathUtils.GetMaterialVirtualDirectoryPath(UploadType.File); var directoryPath = PathUtils.Combine(_settingsManager.WebRootPath, virtualDirectoryPath); var filePath = PathUtils.Combine(directoryPath, materialFileName); await _pathManager.UploadAsync(file, filePath); var material = new MaterialFile { GroupId = request.GroupId, Title = PathUtils.RemoveExtension(fileName), FileType = fileType.ToUpper().Replace(".", string.Empty), Url = PageUtils.Combine(virtualDirectoryPath, materialFileName) }; await _materialFileRepository.InsertAsync(material); return(material); }
public JsonResult UpdateFile(MaterialFile obj, IFormFile fileUpload) { var msg = new JMessage() { Error = false, Title = "" }; try { if (fileUpload != null) { var upload = _upload.UploadFile(fileUpload, Path.Combine(_hostingEnvironment.WebRootPath, "uploads\\files")); if (upload.Error) { msg.Error = true; msg.Title = String.Format(CommonUtil.ResourceValue("MLP_MSG_FILE"), CommonUtil.ResourceValue("MLP_MSG_FILE_SERVER_FAIL")); } else { var getItem = _context.MaterialFiles.FirstOrDefault(x => x.Id == obj.Id); getItem.Name = obj.Name; getItem.Soure = "/uploads/files/" + upload.Object.ToString(); _context.MaterialFiles.Update(getItem); _context.SaveChanges(); msg.Title = String.Format(CommonUtil.ResourceValue("MLP_MSG_FILE_UPDATE"), CommonUtil.ResourceValue("MLP_MSG_FILE_SUCCESS")); } } else { var getItem = _context.MaterialFiles.FirstOrDefault(x => x.Id == obj.Id); getItem.Name = obj.Name; _context.MaterialFiles.Update(getItem); _context.SaveChanges(); msg.Title = String.Format(CommonUtil.ResourceValue("MLP_MSG_FILE_UPDATE"), CommonUtil.ResourceValue("MLP_MSG_FILE_SUCCESS")); } } catch (Exception ex) { msg.Title = String.Format(CommonUtil.ResourceValue("MLP_MSG_FILE_UPDATE"), CommonUtil.ResourceValue("MLP_MSG_FILE_FAIL")); msg.Error = true; } return(Json(msg)); }
public JsonResult InsertFile(MaterialFile obj, IFormFile fileUpload) { var msg = new JMessage() { Error = false, Title = "" }; try { var upload = _upload.UploadFile(fileUpload, Path.Combine(_hostingEnvironment.WebRootPath, "uploads\\files")); if (upload.Error) { msg.Error = true; msg.Title = String.Format(CommonUtil.ResourceValue("MLP_MSG_FILE"), CommonUtil.ResourceValue("MLP_MSG_FILE_SERVER_FAIL")); } else { var file = new MaterialFile { Name = obj.Name, Fomart = Path.GetExtension(fileUpload.FileName), CreatedBy = ESEIM.AppContext.UserName, CreatedTime = DateTime.Now, ProductCode = obj.ProductCode, Soure = "/uploads/files/" + upload.Object.ToString(), }; _context.MaterialFiles.Add(file); _context.SaveChanges(); msg.Title = String.Format(CommonUtil.ResourceValue("MLP_MSG_FILE"), CommonUtil.ResourceValue("MLP_MSG_FILE_SUCCESS")); } } catch (Exception ex) { msg.Title = String.Format(CommonUtil.ResourceValue("MLP_MSG_FILE"), CommonUtil.ResourceValue("MLP_MSG_FILE_FAIL")); msg.Error = true; } return(Json(msg)); }
public void Load(System.IO.Stream stream) { CanSave = false; using (var reader = new FileReader(stream)) { while (!reader.EndOfStream) { ChunkHeader chunk = new ChunkHeader(); chunk.Position = reader.Position; chunk.Identifier = reader.ReadUInt32(); uint unk = reader.ReadUInt32(); chunk.ChunkSize = reader.ReadUInt32(); chunk.ChunkId = reader.ReadUInt32(); chunk.NextFilePtr = reader.ReadUInt32(); chunk.FileSize = reader.ReadUInt32(); uint unk2 = reader.ReadUInt32(); uint unk3 = reader.ReadUInt32(); Chunks.Add(chunk); var Identifer = chunk.Identifier.Reverse(); switch (Identifer) { case ChunkTextureFile: if (chunk.ChunkSize > 0x88) { reader.Seek(chunk.Position + 0x88, System.IO.SeekOrigin.Begin); chunk.FileName = reader.ReadString(Syroot.BinaryData.BinaryStringFormat.ZeroTerminated); } break; case ChunkMetaInfo: break; case ChunkAnimInfo: if (chunk.ChunkSize > 0xB0) { // reader.Seek(chunk.Position + 0xB0, System.IO.SeekOrigin.Begin); // chunk.FileName = reader.ReadString(Syroot.BinaryData.BinaryStringFormat.ZeroTerminated); } break; case ChunkAnimData: AnimationFile animFile = new AnimationFile(); animFile.Read(reader); chunk.ChunkData = animFile; break; case ChunkSkeletonData: SkeletonFile skelFile = new SkeletonFile(); skelFile.Read(reader); chunk.ChunkData = skelFile; break; case ChunkModelData: ModelFile modelFile = new ModelFile(); modelFile.Read(reader); chunk.ChunkData = modelFile; break; case ChunkMaterialData: MaterialFile matFile = new MaterialFile(); matFile.Read(reader); chunk.ChunkData = matFile; break; } reader.Seek(chunk.Position + chunk.ChunkSize, System.IO.SeekOrigin.Begin); } ReadGPUFile(FilePath); } }
private void ReadGPUFile(string FileName) { string path = FileName.Replace("cpu", "gpu"); if (!System.IO.File.Exists(path)) { return; } int offset = 0; //Read the data based on CPU chunk info using (var reader = new FileReader(path)) { for (int i = 0; i < Chunks.Count; i++) { if (Chunks[i].FileSize != 0 || Chunks[i].FileName != string.Empty || Chunks[i].ChunkData != null) { long pos = reader.Position; var identifer = Chunks[i].Identifier.Reverse(); var fileInfo = new FileInfo(); //Get CPU chunk data if (Chunks[i].ChunkData != null) { if (Chunks[i].ChunkData is AnimationFile) { AnimationFile animFile = (AnimationFile)Chunks[i].ChunkData; fileInfo.FileName = animFile.FileName; fileInfo.FileData = animFile.Data; } if (Chunks[i].ChunkData is SkeletonFile) { SkeletonFile animFile = (SkeletonFile)Chunks[i].ChunkData; fileInfo.FileName = animFile.FileName; fileInfo.FileData = animFile.Data; } if (Chunks[i].ChunkData is MaterialFile) { MaterialFile animFile = (MaterialFile)Chunks[i].ChunkData; fileInfo.FileName = animFile.FileName; fileInfo.FileData = animFile.Data; } if (Chunks[i].ChunkData is MaterialFile) { MaterialFile animFile = (MaterialFile)Chunks[i].ChunkData; fileInfo.FileName = animFile.FileName; fileInfo.FileData = animFile.Data; } if (Chunks[i].ChunkData is ModelFile) { ModelFile modelFile = (ModelFile)Chunks[i].ChunkData; fileInfo.FileName = modelFile.FileName; byte[] BufferData = new byte[0]; if (Chunks[i].FileSize != 0) { BufferData = reader.ReadBytes((int)Chunks[i].FileSize); } fileInfo.FileData = Utils.CombineByteArray(modelFile.Data, modelFile.Data2, BufferData); //Don't advance the stream unless the chunk has a pointer if (Chunks[i].NextFilePtr != 0) { reader.Seek(pos + Chunks[i].NextFilePtr, System.IO.SeekOrigin.Begin); } } } else //Else get the data from GPU { if (Chunks[i].FileName != string.Empty) { fileInfo.FileName = $"{Chunks[i].FileName}"; } else { fileInfo.FileName = $"{i} {Chunks[i].ChunkId} {identifer.ToString("X")}"; } if (Chunks[i].FileSize != 0) { fileInfo.FileData = reader.ReadBytes((int)Chunks[i].FileSize); } else { fileInfo.FileData = new byte[0]; } } files.Add(fileInfo); //Don't advance the stream unless the chunk has a pointer if (Chunks[i].NextFilePtr != 0) { reader.Seek(pos + Chunks[i].NextFilePtr, System.IO.SeekOrigin.Begin); } } } } }
public static void Main(string[] args) { bool includeDefaultValues = false; bool showHelp = false; var options = new OptionSet() { { "d|defaults", "include default values when exporting", v => includeDefaultValues = v != null }, { "h|help", "show this message and exit", v => showHelp = v != null }, }; List <string> extras; try { extras = options.Parse(args); } catch (OptionException e) { Console.Write("{0}: ", GetExecutableName()); Console.WriteLine(e.Message); Console.WriteLine("Try `{0} --help' for more information.", GetExecutableName()); return; } if (extras.Count < 1 || extras.Count > 2 || showHelp == true) { Console.WriteLine("Usage: {0} [OPTIONS]+ input_bgsm [output_json]", GetExecutableName()); Console.WriteLine(" {0} [OPTIONS]+ input_json [output_bgsm]", GetExecutableName()); Console.WriteLine(); Console.WriteLine("Options:"); options.WriteOptionDescriptions(Console.Out); return; } string inputPath = Path.GetFullPath(extras[0]); using (var input = File.OpenRead(inputPath)) { var b = input.ReadValueU8(); if (b != '{') { input.Position = 0; var material = new MaterialFile(); material.Deserialize(input); if (input.Position != input.Length) { throw new FormatException(); } var outputPath = extras.Count > 1 ? Path.GetFullPath(extras[1]) : Path.ChangeExtension(inputPath, ".json"); using (var output = File.Create(outputPath)) using (var writer = new StreamWriter(output)) using (var jsonWriter = new JsonTextWriter(writer)) { jsonWriter.Indentation = 2; jsonWriter.IndentChar = ' '; jsonWriter.Formatting = Formatting.Indented; var settings = new JsonSerializerSettings(); settings.DefaultValueHandling = includeDefaultValues == false ? DefaultValueHandling.Ignore : DefaultValueHandling.Include; var serializer = JsonSerializer.Create(settings); // TODO(rick): make it output base, then descendant (instead of descendant, then base) serializer.Serialize(jsonWriter, material); } } else { var outputPath = extras.Count > 1 ? Path.GetFullPath(extras[1]) : Path.ChangeExtension(inputPath, ".bgsm"); throw new NotImplementedException(); } } }
public async Task <ActionResult <List <SubmitResult> > > Submit([FromBody] SubmitRequest request) { var site = await _siteRepository.GetAsync(request.SiteId); if (site == null) { return(this.Error("无法确定内容对应的站点")); } var result = new List <SubmitResult>(); foreach (var filePath in request.FilePaths) { if (string.IsNullOrEmpty(filePath)) { continue; } var fileName = PathUtils.GetFileName(filePath); var virtualUrl = await _pathManager.GetVirtualUrlByPhysicalPathAsync(site, filePath); var fileUrl = await _pathManager.ParseSiteUrlAsync(site, virtualUrl, true); if (request.IsLibrary) { var materialFileName = PathUtils.GetMaterialFileName(fileName); var virtualDirectoryPath = PathUtils.GetMaterialVirtualDirectoryPath(UploadType.Image); var directoryPath = _pathManager.ParsePath(virtualDirectoryPath); var materialFilePath = PathUtils.Combine(directoryPath, materialFileName); DirectoryUtils.CreateDirectoryIfNotExists(materialFilePath); FileUtils.CopyFile(filePath, materialFilePath, true); var file = new MaterialFile { Title = fileName, Url = PageUtils.Combine(virtualDirectoryPath, materialFileName) }; await _materialFileRepository.InsertAsync(file); } result.Add(new SubmitResult { FileUrl = fileUrl, FileVirtualUrl = virtualUrl }); } var options = TranslateUtils.JsonDeserialize(site.Get <string>(nameof(LayerFileUploadController)), new Options { IsChangeFileName = true, IsLibrary = true }); options.IsChangeFileName = request.IsChangeFileName; options.IsLibrary = request.IsLibrary; site.Set(nameof(LayerFileUploadController), TranslateUtils.JsonSerialize(options)); await _siteRepository.UpdateAsync(site); return(result); }
public void Load(System.IO.Stream stream) { CanSave = false; using (var reader = new FileReader(stream)) { reader.SetByteOrder(true); Text = FileName; while (!reader.EndOfStream) { ChunkHeader chunk = new ChunkHeader(); chunk.Position = reader.Position; chunk.Identifier = reader.ReadUInt32(); uint unk = reader.ReadUInt32(); chunk.ChunkSize = reader.ReadUInt32(); chunk.ChunkId = reader.ReadUInt32(); chunk.NextFilePtr = reader.ReadUInt32(); chunk.FileSize = reader.ReadUInt32(); uint unk2 = reader.ReadUInt32(); uint unk3 = reader.ReadUInt32(); Chunks.Add(chunk); var Identifer = chunk.Identifier.Reverse(); switch (Identifer) { case ChunkTextureFile: SWUTexture texture = new SWUTexture(); reader.SeekBegin(chunk.Position + 72); texture.ImageKey = "texture"; texture.SelectedImageKey = "texture"; texture.ReadChunk(reader); chunk.ChunkData = texture; if (chunk.ChunkSize > 244) { reader.Seek(chunk.Position + 244, System.IO.SeekOrigin.Begin); chunk.FileName = reader.ReadString(Syroot.BinaryData.BinaryStringFormat.ZeroTerminated); texture.Text = chunk.FileName; } Nodes.Add(texture); break; case ChunkMetaInfo: break; case ChunkAnimInfo: if (chunk.ChunkSize > 0xB0) { reader.Seek(chunk.Position + 0xB0, System.IO.SeekOrigin.Begin); chunk.FileName = reader.ReadString(Syroot.BinaryData.BinaryStringFormat.ZeroTerminated); } break; case ChunkAnimData: AnimationFile animFile = new AnimationFile(); animFile.Read(reader); chunk.ChunkData = animFile; break; case ChunkSkeletonData: SkeletonFile skelFile = new SkeletonFile(); skelFile.Read(reader); chunk.ChunkData = skelFile; break; case ChunkModelData: ModelFile modelFile = new ModelFile(); modelFile.Read(reader); chunk.ChunkData = modelFile; break; case ChunkMaterialData: MaterialFile matFile = new MaterialFile(); matFile.Read(reader); chunk.ChunkData = matFile; break; } reader.Seek(chunk.Position + chunk.ChunkSize, System.IO.SeekOrigin.Begin); } ReadGPUFile(FilePath); } TreeHelper.CreateFileDirectory(this); }
public async Task <bool> UpdateAsync(MaterialFile file) { return(await _repository.UpdateAsync(file, Q .CachingRemove(CacheKey) )); }
public async Task <int> InsertAsync(MaterialFile file) { return(await _repository.InsertAsync(file, Q .CachingRemove(CacheKey) )); }
public ActionResult Edit(Material material, IEnumerable <HttpPostedFileBase> files, FormCollection formcollection) { if (ModelState.IsValid) { Material secilenMaterial = db.Materials.SingleOrDefault(s => s.MaterialID == material.MaterialID); secilenMaterial.Description = material.Description; secilenMaterial.ComponentModel = material.ComponentModel; secilenMaterial.CorporateAccount = material.CorporateAccount; secilenMaterial.CorporateAccountID = material.CorporateAccountID; secilenMaterial.Location = secilenMaterial.Location; secilenMaterial.LocationID = material.LocationID; secilenMaterial.MaterialCategory = material.MaterialCategory; secilenMaterial.MaterialCategoryID = secilenMaterial.MaterialCategoryID; secilenMaterial.MaterialCodeNum = material.MaterialCodeNum; secilenMaterial.MaterialFiles = material.MaterialFiles; secilenMaterial.MaterialGroup = material.MaterialGroup; secilenMaterial.MaterialGroupID = material.MaterialGroupID; secilenMaterial.MaterialType = material.MaterialType; secilenMaterial.MaterialTypeID = material.MaterialTypeID; secilenMaterial.Note = material.Note; secilenMaterial.ParentMaterial = material.ParentMaterial; secilenMaterial.ParentMaterialID = material.ParentMaterialID; secilenMaterial.RackLocation = material.RackLocation; secilenMaterial.ValidationState = material.ValidationState; secilenMaterial.ValidationStateID = material.ValidationStateID; //db.SaveChanges(); #region MaterialKlasorleriniKaydet if (files != null) { foreach (var file in files) { if (file != null) { string filename = null; string fileType = null; byte[] fileContents = null; fileContents = new byte[file.ContentLength]; file.InputStream.Read(fileContents, 0, file.ContentLength); fileType = file.ContentType; filename = file.FileName; MaterialFile materialFile = new MaterialFile(); materialFile.MaterialFileName = filename; materialFile.MaterialFileContentType = fileType; materialFile.MaterialFileSize = fileContents != null ? fileContents.Length : 0; materialFile.MaterialFileContents = fileContents; materialFile.MaterialID = material.MaterialID; materialFile.MaterialFileDescription = formcollection["EklenenDosyaAciklama"].ToString(); db.MaterialFiles.Add(materialFile); //MaterialFile materialFile = new MaterialFile(); //materialFile.MaterialFileName = file.FileName; //materialFile.MaterialFileContentType = file.ContentType; //materialFile.MaterialFileSize = file.ContentLength; //materialFile.MaterialFileContents = new byte[file.ContentLength]; //file.InputStream.Read(materialFile.MaterialFileContents, 0, materialFile.MaterialFileSize); //materialFile.MaterialID = material.MaterialID; //db.MaterialFiles.Add(materialFile); //db.SaveChanges(); } } } #endregion //db.Entry(material).State = EntityState.Modified; db.SaveChanges(); string materialCategoryID = material.MaterialCategoryID.ToString(); return(RedirectToAction("Index", new { ID = materialCategoryID })); } ViewBag.LocationID = new SelectList(db.Locations, "LocationID", "Description", material.LocationID); ViewBag.CorporateAccountID = new SelectList(db.CorporateAccounts, "CorporateAccountID", "Title", material.CorporateAccountID); ViewBag.ParentMaterialID = new SelectList(db.Materials, "MaterialID", "Description", material.ParentMaterialID); ViewBag.MaterialCategoryID = new SelectList(db.MaterialCategories, "MaterialCategoryID", "Description", material.MaterialCategoryID); ViewBag.MaterialGroupID = new SelectList(db.MaterialGroups, "MaterialGroupID", "Description", material.MaterialGroupID); ViewBag.MaterialTypeID = new SelectList(db.MaterialTypes, "MaterialTypeID", "Description", material.MaterialTypeID); ViewBag.ValidationStateID = new SelectList(db.ValidationStates, "ValidationStateID", "Description", material.ValidationStateID); return(View(material)); }