public static bool UpdateAsset(Object asset, out string error, out string successMessage) { error = ""; successMessage = ""; if (asset is MeshAsset) { MeshAsset mesh = asset as MeshAsset; var result = ImportMesh.import(mesh.SourceFilename, mesh.ImportedFilename); if (string.IsNullOrEmpty(result)) { successMessage = "Successfully updated mesh: " + mesh.Name; mesh.LastUpdated = DateTime.Now; AssetMetadata.createMeshMetadata(mesh); return(true); } } else if (asset is TextureAsset) { TextureAsset texture = asset as TextureAsset; var result = ImportTexture.import(texture.Format, texture.ChannelMappings, texture.ImportedFilename); if (string.IsNullOrEmpty(result)) { successMessage = "Successfully updated texture: " + texture.Name; texture.LastUpdated = DateTime.Now; AssetMetadata.createTextureMetadata(texture); return(true); } else { error = "ERROR: Updating texture: " + texture.Name + " failed!" + Environment.NewLine + result; } } else if (asset is ShaderAsset) { ShaderAsset shader = asset as ShaderAsset; var result = ImportShader.import(shader.SourceFilename, shader.ImportedFilename); if (string.IsNullOrEmpty(result)) { successMessage = "Successfully updated shader: " + shader.Name; shader.LastUpdated = DateTime.Now; AssetMetadata.createShaderMetadata(shader); return(true); } else { error = "ERROR: Updating shader: " + shader.Name + " failed!" + Environment.NewLine + result; } } else if (asset is MaterialAsset) { MaterialAsset material = asset as MaterialAsset; var result = MaterialImporter.Import(material); if (result) { successMessage = "Successfully updated material: " + material.Name; material.LastUpdated = DateTime.Now; AssetMetadata.createMaterialMetadata(material); return(true); } else { error = "ERROR: Updating material: " + material.Name + " failed!" + Environment.NewLine; } } else if (asset is StateGroupAsset) { var stateGroup = asset as StateGroupAsset; var result = StateGroupImporter.Import(stateGroup); if (result) { successMessage = "Successfully updated state group: " + stateGroup.Name; stateGroup.LastUpdated = DateTime.Now; AssetMetadata.createStateGroupMetadata(stateGroup); return(true); } else { error = "ERROR: Updating state group: " + stateGroup.Name + " failed!" + Environment.NewLine + result; } } return(false); }
private void Save(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(asset.Name) || string.IsNullOrEmpty(asset.Description)) { MessageBox.Show("Name/Description can't be empty!"); return; } if (VertexGeometry.IsChecked == true) { if (asset.VertexShader == null || asset.GeometryShader == null) { MessageBox.Show("Vertex/Geometry shader needs to be selected"); return; } } else if (VertexGeometryPixel.IsChecked == true) { if (asset.VertexShader == null || asset.GeometryShader == null || asset.PixelShader == null) { MessageBox.Show("Vertex/Geometry/Pixel shader needs to be selected"); return; } } else if (VertexPixel.IsChecked == true) { if (asset.VertexShader == null || asset.PixelShader == null) { MessageBox.Show("Vertex/Pixel shader needs to be selected"); return; } } foreach (var texture in asset.TextureBindings) { if (texture.Binding == null) { MessageBox.Show("Must specify texture binding, its currently blank"); return; } } foreach (var sampler in asset.Samplers) { if (sampler.Name == "UNNAMED" || string.IsNullOrEmpty(sampler.Name)) { MessageBox.Show("a sampler wasn't given a name, please go back and name it"); return; } } var stateGroupPath = Path.Combine(Properties.Settings.Default.ImportedAssetsPath, "StateGroups"); var outputName = Path.Combine(stateGroupPath, Path.ChangeExtension(asset.Name, "stgp")); if (!Directory.Exists(stateGroupPath)) { Directory.CreateDirectory(stateGroupPath); } asset.ImportedFilename = Path.GetFullPath(outputName); if (!InEditMode) { if (File.Exists(asset.ImportedFilename)) { MessageBox.Show("An imported state group with the same name already exists, stopping"); return; } } StateGroupImporter.Import(asset); this.DialogResult = true; this.Close(); }