//public bool Contains( Vec3 point ) //{ // var scale = Transform.Value.Scale; // var radius = Math.Max( scale.X, Math.Max( scale.Y, scale.Z ) ) * 0.5; // return new Sphere( Transform.Value.Position, radius ).Contains( point ); //} //public virtual void GetOutputTextures( out Component_Texture texture, out Component_Texture textureIBL ) //{ // texture = null; // textureIBL = null; // //!!!!пока так // if( SourceType.Value == SourceTypeEnum.SpecifiedCubemap ) // { // texture = Cubemap; // textureIBL = CubemapIBL; // } //} //protected override void OnDisabled() //{ // CaptureTextureDispose(); // base.OnDisabled(); //} //void CaptureTextureUpdate() //{ // if( Mode.Value == ModeEnum.Capture ) // { // var resolution = Resolution.Value; // var hdr = HDR.Value; // var mipmaps = Mipmaps.Value; // if( captureTexture != null && captureTexture.Disposed ) // captureTexture = null; // if( captureTexture == null ) // { // var size = int.Parse( resolution.ToString().Replace( "_", "" ) ); // PixelFormat format = hdr ? PixelFormat.Float16RGBA : PixelFormat.A8R8G8B8; // var texture = ComponentUtility.CreateComponent<Component_Image>( null, true, false ); // captureTexture = texture; // texture.CreateType = Component_Image.TypeEnum.Cube; // texture.CreateSize = new Vector2I( size, size ); // texture.CreateMipmaps = mipmaps; // //texture.CreateMipmaps = true; // //texture.CreateArrayLayers = arrayLayers; // texture.CreateFormat = format; // texture.CreateUsage = Component_Image.Usages.RenderTarget; // texture.CreateFSAA = 0;// fsaaLevel; // texture.Enabled = true; // //!!!! // //int faces = type == Component_Image.TypeEnum.Cube ? 6 : arrayLayers; // //int numMips; // //if( mipmaps ) // //{ // // int max = size.MaxComponent(); // // float kInvLogNat2 = 1.4426950408889634073599246810019f; // // numMips = 1 + (int)( Math.Log( size.MaxComponent() ) * kInvLogNat2 ); // //} // //else // // numMips = 1; // for( int face = 0; face < 6; face++ ) // { // //!!!! // var mip = 0; // //for( int mip = 0; mip < numMips; mip++ ) // //{ // var renderTexture = CaptureTexture.Result.GetRenderTarget( mip, face ); // //!!!! // var viewport = renderTexture.AddViewport( true, false ); // //var viewport = renderTexture.AddViewport( false, false ); // viewport.Mode = Viewport.ModeEnum.ReflectionProbeCubemap; // viewport.AttachedScene = ParentScene; // //!!!!надо ли чистить что-то? лишние таржеты чтобы не висели // //} // //!!!!что-то еще? // } // //captureTextureNeedUpdate = true; // } // } // else // CaptureTextureDispose(); // //!!!!!как проверять ошибки создания текстур? везде так // //if( texture == null ) // //{ // // //!!!!! // // Log.Fatal( "ViewportRenderingPipeline: RenderTarget_Alloc: Unable to create texture." ); // // return null; // //} // //int faces = type == Component_Image.TypeEnum.Cube ? 6 : arrayLayers; // //int numMips; // //if( mipmaps ) // //{ // // int max = size.MaxComponent(); // // float kInvLogNat2 = 1.4426950408889634073599246810019f; // // numMips = 1 + (int)( Math.Log( size.MaxComponent() ) * kInvLogNat2 ); // //} // //else // // numMips = 1; // //for( int face = 0; face < faces; face++ ) // //{ // // for( int mip = 0; mip < numMips; mip++ ) // // { // // RenderTexture renderTexture = texture.Result.GetRenderTarget( mip, face ); // // var viewport = renderTexture.AddViewport( false, false ); // // viewport.RenderingPipelineCreate(); // // viewport.RenderingPipelineCreated.UseRenderTargets = false; // // } // // //!!!!что-то еще? // //} //} //void CaptureTextureDispose() //{ // captureTexture?.Dispose(); // captureTexture = null; //} //[Browsable( false )] //public Component_Image CaptureTexture //{ // get { return captureTexture; } //} string GetDestVirtualFileName() { string name = GetPathFromRoot(); foreach (char c in new string( Path.GetInvalidFileNameChars()) + new string( Path.GetInvalidPathChars())) { name = name.Replace(c.ToString(), "_"); } name = name.Replace(" ", "_"); return(PathUtility.Combine(ComponentUtility.GetOwnedFileNameOfComponent(this) + "_Files", name + ".hdr")); }
void SceneCreate( Component_Scene source ) { SceneDestroy(); var fileName = ComponentUtility.GetOwnedFileNameOfComponent( source ); if( !string.IsNullOrEmpty( fileName ) && VirtualFile.Exists( fileName ) ) createdScene = ResourceManager.LoadSeparateInstance<Component>( fileName, true, null ) as Component_Scene; if( createdScene != null ) SceneCreated?.Invoke( this ); createdSceneSource = source; }
public string GetIdentifier() { var result = Identifier.Value; if (string.IsNullOrEmpty(result)) { result = Title.Value.Replace(' ', '_'); var fileName = ComponentUtility.GetOwnedFileNameOfComponent(this); if (!string.IsNullOrEmpty(fileName)) { result += "_" + GetMD5(fileName + ":byfilename").ToLower().Substring(0, 12); } } return(result); }
GpuTexture LoadCubeTexture(string[] loadCubeMap6Files) { GpuTexture result = null; EngineThreading.ExecuteFromMainThreadWait(delegate(Component_Image _this) { var componentTextureVirtualFileName = ComponentUtility.GetOwnedFileNameOfComponent(this); if (string.IsNullOrEmpty(componentTextureVirtualFileName)) { componentTextureVirtualFileName = loadCubeMap6Files[0]; } result = GpuTexture.CreateCube(loadCubeMap6Files, componentTextureVirtualFileName, out var error2); if (result == null) { Log.Warning($"Unable to load texture \'{componentTextureVirtualFileName}\'. " + error2); } }, this); return(result); }
public static void SaveToFileAndUpdate() { try { var fileName = ComponentUtility.GetOwnedFileNameOfComponent(Get); var realPath = VirtualPathUtility.GetRealPathByVirtual(fileName); string error; if (ComponentUtility.SaveComponentToFile(Get, realPath, null, out error)) { //return true; } else { //Log.Error( error ); //return false; } //reload _SettingsComponentSetNull(); } catch { } }
public bool BuildArchive() //string writeToDirectory ) { var destFileName = Path.Combine(writeToDirectory, GetIdentifier() + "-" + GetVersion() + ".neoaxispackage"); //check file already exists if (File.Exists(destFileName)) { var text = $"The file with name \'{destFileName}\' is already exists. Overwrite?"; if (EditorMessageBox.ShowQuestion(text, EMessageBoxButtons.OKCancel) == EDialogResult.Cancel) { return(false); } } try { var sourceDirectory = Path.GetDirectoryName(VirtualPathUtility.GetRealPathByVirtual(ComponentUtility.GetOwnedFileNameOfComponent(this))); //make zip if (File.Exists(destFileName)) { File.Delete(destFileName); } //prepare Package.info var packageInfoTempFileName = Path.GetTempFileName(); { var block = new TextBlock(); block.SetAttribute("Identifier", GetIdentifier()); block.SetAttribute("Title", Title.Value); block.SetAttribute("Version", GetVersion()); //!!!! block.SetAttribute("Author", "Share CC Attribution"); block.SetAttribute("Description", ShortDescription); //"ShortDescription" block.SetAttribute("FullDescription", FullDescription.Value); string license = ""; switch (License.Value) { case LicenseEnum.MIT: license = "MIT"; break; case LicenseEnum.CCAttribution: license = "CC Attribution"; break; case LicenseEnum.FreeToUse: license = "Free To Use"; break; case LicenseEnum.PaidPerSeat: license = "Paid Per Seat"; break; } block.SetAttribute("License", license); if (License.Value == LicenseEnum.PaidPerSeat) { block.SetAttribute("Cost", Cost.Value.ToString()); } { var s = ""; foreach (CategoryEnum flag in GetFlags(Categories.Value)) { if (flag != 0) { if (s.Length != 0) { s += ", "; } s += TypeUtility.DisplayNameAddSpaces(flag.ToString()); } } block.SetAttribute("Categories", s); } block.SetAttribute("Tags", Tags.Value); //!!!! var openAfterInstall = sourceDirectory.Substring(VirtualFileSystem.Directories.Assets.Length + 1); block.SetAttribute("OpenAfterInstall", openAfterInstall); //MustRestart = True //AddCSharpFilesToProject = "Store\\Simple Level Generator" File.WriteAllText(packageInfoTempFileName, block.DumpToString()); } string[] files; using (var archive = ZipFile.Open(destFileName, ZipArchiveMode.Create)) { files = Directory.GetFiles(sourceDirectory, "*", SearchOption.AllDirectories); foreach (var file in files) { if (Path.GetExtension(file) == ".store") { continue; } var entryName = file.Substring(VirtualFileSystem.Directories.Project.Length + 1); //var entryName = file.Substring( sourceDirectory.Length + 1 ); archive.CreateEntryFromFile(file, entryName); } archive.CreateEntryFromFile(packageInfoTempFileName, "Package.info"); } if (File.Exists(packageInfoTempFileName)) { File.Delete(packageInfoTempFileName); } //write info json { var jsonFileName = destFileName + ".json"; var sw = new StringWriter(); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.Indented; writer.WriteStartObject(); writer.WritePropertyName("Author"); //!!!! //writer.WriteValue( "3" ); writer.WriteValue("Share CC Attribution"); writer.WritePropertyName("Identifier"); writer.WriteValue(GetIdentifier()); writer.WritePropertyName("Title"); writer.WriteValue(Title.Value); writer.WritePropertyName("License"); switch (License.Value) { case LicenseEnum.MIT: writer.WriteValue("MIT"); break; case LicenseEnum.CCAttribution: writer.WriteValue("CC Attribution"); break; case LicenseEnum.FreeToUse: writer.WriteValue("Free To Use"); break; case LicenseEnum.PaidPerSeat: writer.WriteValue("Paid Per Seat"); break; } //writer.WriteValue( License.Value.ToString() ); writer.WritePropertyName("Cost"); writer.WriteValue(Cost.Value.ToString()); writer.WritePropertyName("ShortDescription"); writer.WriteValue(ShortDescription.Value); writer.WritePropertyName("FullDescription"); writer.WriteValue(FullDescription.Value); { writer.WritePropertyName("Categories"); var s = ""; foreach (CategoryEnum flag in GetFlags(Categories.Value)) { if (flag != 0) { if (s.Length != 0) { s += ", "; } s += TypeUtility.DisplayNameAddSpaces(flag.ToString()); } } writer.WriteValue(s); //writer.WriteValue( Categories.Value.ToString() ); } writer.WritePropertyName("Tags"); writer.WriteValue(Tags.Value); writer.WritePropertyName("Version"); writer.WriteValue(GetVersion()); //writer.WriteEnd(); writer.WriteEndObject(); } File.WriteAllText(jsonFileName, sw.ToString()); } //try to create screenshots if (CreateScreenshots) { //find in the folder one import file (FBX, etc). make screenshot of 'Mesh' object inside the import file. var resourceType = ResourceManager.GetTypeByName("Import 3D"); var importExtensions = new ESet <string>(); foreach (var e in resourceType.FileExtensions) { importExtensions.AddWithCheckAlreadyContained("." + e); } var importVirtualFileNames = new List <string>(); foreach (var file in files) { var ext = Path.GetExtension(file); if (!string.IsNullOrEmpty(ext) && importExtensions.Contains(ext)) { var virtualFileName = VirtualPathUtility.GetVirtualPathByReal(file); if (!string.IsNullOrEmpty(virtualFileName)) { importVirtualFileNames.Add(virtualFileName); } } } if (importVirtualFileNames.Count == 1) { var import3D = ResourceManager.LoadResource <Component_Import3D>(importVirtualFileNames[0]); if (import3D != null) { var mesh = import3D.GetComponent <Component_Mesh>("Mesh"); if (mesh != null) { var generator = new MeshImageGenerator(); generator.Generate(mesh, destFileName + ".logo.png"); } } } } } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); return(false); } return(true); }