//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"));
        }
Beispiel #2
0
		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;
		}
Beispiel #3
0
        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);
        }
Beispiel #5
0
        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 { }
        }
Beispiel #6
0
        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);
        }