diff --git a/Desktop/Desktop.csproj b/Desktop/Desktop.csproj
new file mode 100644
index 0000000..cc6917b
--- /dev/null
+++ b/Desktop/Desktop.csproj
@@ -0,0 +1,202 @@
+
+
+
+
+ Debug
+ AnyCPU
+ 8.0.30703
+ 2.0
+ {046C631B-DF60-496E-B2ED-C7BBFBF2F059}
+ WinExe
+ Properties
+ Desktop
+ Venus Particle Editor
+ 512
+ DesktopGL
+ v4.5.2
+
+
+
+ true
+ bin\$(MonoGamePlatform)\$(Platform)\$(Configuration)\
+ DEBUG;TRACE;LINUX
+ full
+ AnyCPU
+ prompt
+ false
+ 4
+
+
+ bin\$(MonoGamePlatform)\$(Platform)\$(Configuration)\
+ TRACE;LINUX
+ true
+ pdbonly
+ AnyCPU
+ prompt
+ false
+ 4
+
+
+ venus.ico
+
+
+ app.manifest
+
+
+
+ GlobalFields.cs
+
+
+ JsonHelper.cs
+
+
+ KeyboardHelper.cs
+
+
+ LoggerHelper.cs
+
+
+ MainScreen.cs
+
+
+ Modifiers\CircleContainer.cs
+
+
+ Modifiers\ColourInterpolator2.cs
+
+
+ Modifiers\Drag.cs
+
+
+ Modifiers\HueInterpolator2.cs
+
+
+ Modifiers\LinearGravity.cs
+
+
+ Modifiers\OpacityFastFade.cs
+
+
+ Modifiers\OpacityInterpolator2.cs
+
+
+ Modifiers\OpacityInterpolator3.cs
+
+
+ Modifiers\RectContainer.cs
+
+
+ Modifiers\RectLoopContainer.cs
+
+
+ Modifiers\Rotation.cs
+
+
+ Modifiers\ScaleInterpolator2.cs
+
+
+ Modifiers\VelocityColour.cs
+
+
+ Modifiers\VelocityColourInfinite.cs
+
+
+ Modifiers\VelocityHue.cs
+
+
+ Modifiers\Vortex.cs
+
+
+
+
+
+
+ ..\libs\DataTypes.dll
+
+
+ ..\libs\GeonBit.UI.dll
+
+
+ False
+ ..\libs\MonoGame.Framework.dll
+
+
+ ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+
+
+
+
+
+
+ ..\libs\VenusParticleEngine.dll
+
+
+
+
+
+
+
+
+ x86\SDL2.dll
+ PreserveNewest
+
+
+ x64\SDL2.dll
+ PreserveNewest
+
+
+ x86\soft_oal.dll
+ PreserveNewest
+
+
+ x64\soft_oal.dll
+ PreserveNewest
+
+
+ x86\libSDL2-2.0.so.0
+ PreserveNewest
+
+
+ x64\libSDL2-2.0.so.0
+ PreserveNewest
+
+
+ x86\libopenal.so.1
+ PreserveNewest
+
+
+ x64\libopenal.so.1
+ PreserveNewest
+
+
+ libSDL2-2.0.0.dylib
+ PreserveNewest
+
+
+ libopenal.1.dylib
+ PreserveNewest
+
+
+ MonoGame.Framework.dll.config
+ PreserveNewest
+
+
+ Content\Content.mgcb
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Desktop/Icon.bmp b/Desktop/Icon.bmp
new file mode 100644
index 0000000..2b48165
Binary files /dev/null and b/Desktop/Icon.bmp differ
diff --git a/Desktop/Icon.ico b/Desktop/Icon.ico
new file mode 100644
index 0000000..7d9dec1
Binary files /dev/null and b/Desktop/Icon.ico differ
diff --git a/Desktop/Program.cs b/Desktop/Program.cs
new file mode 100644
index 0000000..9f5d42e
--- /dev/null
+++ b/Desktop/Program.cs
@@ -0,0 +1,20 @@
+using System;
+
+namespace VenusParticleEditor
+{
+ ///
+ /// The main class.
+ ///
+ public static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ using (var game = new MainScreen())
+ game.Run();
+ }
+ }
+}
diff --git a/Desktop/Properties/AssemblyInfo.cs b/Desktop/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..020ed33
--- /dev/null
+++ b/Desktop/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Venus Particle Editor")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyCopyright("mmbelkiman 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("1ef469eb-eaca-4fb0-9668-b471f6d0ae9a")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Desktop/app.config b/Desktop/app.config
new file mode 100644
index 0000000..ff99501
--- /dev/null
+++ b/Desktop/app.config
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Desktop/app.manifest b/Desktop/app.manifest
new file mode 100644
index 0000000..b734e78
--- /dev/null
+++ b/Desktop/app.manifest
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true/pm
+
+
+
+
diff --git a/Desktop/packages.config b/Desktop/packages.config
new file mode 100644
index 0000000..07e3593
--- /dev/null
+++ b/Desktop/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Desktop/venus.ico b/Desktop/venus.ico
new file mode 100644
index 0000000..3c376a9
Binary files /dev/null and b/Desktop/venus.ico differ
diff --git a/README.md b/README.md
index 144e786..3ad7a78 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,27 @@
-# Venus-Particle-Editor
-Particle editor to Monogame, based in Mercury Particle Engine
+![](https://img.itch.zone/aW1nLzE4NTQ4ODYucG5n/original/xRVobf.png)
+
+This is a sourcode to Particle Editor for [MonoGame](https://github.com/mono/MonoGame).
+This editor use [Venus Particle Engine](https://github.com/mmbelkiman/Venus-Particle-Engine)
+
+![](https://media.giphy.com/media/7A4F1Riiterh0X0YAU/giphy.gif)
+
+# Download executable
+[![Itch.io](https://jessemillar.com/available-on-itchio-badge/badge-bw.png)](https://mmbelkiman.itch.io/venus-particle-editor)
+
+# Depedencies
+ - [Newtonsoft.Json 11.0.2](https://github.com/JamesNK/Newtonsoft.Json/tree/11.0.2)
+ - Monogame 3.7 or higher
+ - [GeonBitUI 3.4](https://github.com/RonenNess/GeonBit.UI)
+
+# Load Json at your project
+Please, look at the [Venus Particle Engine](https://github.com/mmbelkiman/Venus-Particle-Engine) demo
+
+## Commands
+ - F9 move particle
+ - F10 change background
+ - F11 full screen mode
+ - F12 show/hide log
+
+[![kofi](https://az743702.vo.msecnd.net/cdn/kofi2.png)](https://ko-fi.com/B0B2KE8I)
+
+Icon made by Smashicons from www.flaticon.com
\ No newline at end of file
diff --git a/Venus Particle Editor.sln b/Venus Particle Editor.sln
new file mode 100644
index 0000000..3657a5a
--- /dev/null
+++ b/Venus Particle Editor.sln
@@ -0,0 +1,30 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28010.2016
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Venus Particle Editor", "Venus Particle Editor\Venus Particle Editor.shproj", "{A0CDBD0E-3A41-42B7-9425-A838BC2C7383}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Desktop", "Desktop\Desktop.csproj", "{046C631B-DF60-496E-B2ED-C7BBFBF2F059}"
+EndProject
+Global
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ Venus Particle Editor\Venus_Particle_Editor.projitems*{a0cdbd0e-3a41-42b7-9425-a838bc2c7383}*SharedItemsImports = 13
+ EndGlobalSection
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {046C631B-DF60-496E-B2ED-C7BBFBF2F059}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {046C631B-DF60-496E-B2ED-C7BBFBF2F059}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {046C631B-DF60-496E-B2ED-C7BBFBF2F059}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {046C631B-DF60-496E-B2ED-C7BBFBF2F059}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {6DB7DD82-83C3-465D-BBA4-519320CCB724}
+ EndGlobalSection
+EndGlobal
diff --git a/Venus Particle Editor/Content/Content.mgcb b/Venus Particle Editor/Content/Content.mgcb
new file mode 100644
index 0000000..14a5779
--- /dev/null
+++ b/Venus Particle Editor/Content/Content.mgcb
@@ -0,0 +1,1610 @@
+
+#----------------------------- Global Properties ----------------------------#
+
+/outputDir:bin/$(Platform)
+/intermediateDir:obj/$(Platform)
+/platform:DesktopGL
+/config:
+/profile:Reach
+/compress:False
+
+#-------------------------------- References --------------------------------#
+
+/reference:..\..\libs\DataTypes.dll
+
+#---------------------------------- Content ---------------------------------#
+
+#begin GeonBit.UI/themes/hd/effects/disabled.fx
+/importer:EffectImporter
+/processor:EffectProcessor
+/processorParam:DebugMode=Auto
+/build:GeonBit.UI/themes/hd/effects/disabled.fx
+
+#begin GeonBit.UI/themes/hd/effects/silhouette.fx
+/importer:EffectImporter
+/processor:EffectProcessor
+/processorParam:DebugMode=Auto
+/build:GeonBit.UI/themes/hd/effects/silhouette.fx
+
+#begin GeonBit.UI/themes/hd/fonts/Bold.spritefont
+/importer:FontDescriptionImporter
+/processor:FontDescriptionProcessor
+/processorParam:PremultiplyAlpha=True
+/processorParam:TextureFormat=Compressed
+/build:GeonBit.UI/themes/hd/fonts/Bold.spritefont
+
+#begin GeonBit.UI/themes/hd/fonts/Italic.spritefont
+/importer:FontDescriptionImporter
+/processor:FontDescriptionProcessor
+/processorParam:PremultiplyAlpha=True
+/processorParam:TextureFormat=Compressed
+/build:GeonBit.UI/themes/hd/fonts/Italic.spritefont
+
+#begin GeonBit.UI/themes/hd/fonts/Regular.spritefont
+/importer:FontDescriptionImporter
+/processor:FontDescriptionProcessor
+/processorParam:PremultiplyAlpha=True
+/processorParam:TextureFormat=Compressed
+/build:GeonBit.UI/themes/hd/fonts/Regular.spritefont
+
+#begin GeonBit.UI/themes/hd/fonts/RobotoMono-Bold.ttf
+/copy:GeonBit.UI/themes/hd/fonts/RobotoMono-Bold.ttf
+
+#begin GeonBit.UI/themes/hd/fonts/RobotoMono-Italic.ttf
+/copy:GeonBit.UI/themes/hd/fonts/RobotoMono-Italic.ttf
+
+#begin GeonBit.UI/themes/hd/fonts/RobotoMono-Regular.ttf
+/copy:GeonBit.UI/themes/hd/fonts/RobotoMono-Regular.ttf
+
+#begin GeonBit.UI/themes/hd/styles/Button-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Button-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/Button-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Button-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/Button-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Button-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/ButtonParagraph-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ButtonParagraph-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/ButtonParagraph-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ButtonParagraph-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/ButtonParagraph-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ButtonParagraph-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/CheckBox-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/CheckBox-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/CheckBox-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/CheckBox-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/CheckBox-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/CheckBox-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/CheckBoxParagraph-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/CheckBoxParagraph-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/CheckBoxParagraph-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/CheckBoxParagraph-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/CheckBoxParagraph-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/CheckBoxParagraph-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/ColoredRectangle-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ColoredRectangle-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/ColoredRectangle-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ColoredRectangle-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/ColoredRectangle-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ColoredRectangle-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/DropDown-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/DropDown-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/DropDown-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/DropDown-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/DropDown-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/DropDown-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/DropDownParagraph-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/DropDownParagraph-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/DropDownParagraph-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/DropDownParagraph-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/DropDownParagraph-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/DropDownParagraph-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/Entity-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Entity-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/Entity-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Entity-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/Entity-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Entity-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/example.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/example.xml
+
+#begin GeonBit.UI/themes/hd/styles/Header-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Header-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/Header-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Header-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/Header-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Header-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/HorizontalLine-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/HorizontalLine-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/HorizontalLine-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/HorizontalLine-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/HorizontalLine-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/HorizontalLine-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/Icon-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Icon-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/Icon-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Icon-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/Icon-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Icon-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/Image-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Image-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/Image-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Image-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/Image-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Image-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/Label-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Label-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/Label-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Label-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/Label-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Label-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/Panel-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Panel-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/Panel-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Panel-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/Panel-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Panel-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/PanelTabsButton-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/PanelTabsButton-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/PanelTabsButton-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/PanelTabsButton-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/PanelTabsButton-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/PanelTabsButton-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/Paragraph-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Paragraph-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/Paragraph-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Paragraph-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/Paragraph-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Paragraph-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/ProgressBar-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ProgressBar-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/ProgressBarFill-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ProgressBarFill-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/ProgressBarFill-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ProgressBarFill-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/ProgressBarFill-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ProgressBarFill-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/ProgressBar-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ProgressBar-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/ProgressBar-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/ProgressBar-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/RadioButton-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/RadioButton-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/RadioButton-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/RadioButton-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/RadioButton-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/RadioButton-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/RadioButtonParagraph-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/RadioButtonParagraph-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/RadioButtonParagraph-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/RadioButtonParagraph-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/RadioButtonParagraph-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/RadioButtonParagraph-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/SelectList-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/SelectList-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/SelectList-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/SelectList-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/SelectList-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/SelectList-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/SelectListParagraph-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/SelectListParagraph-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/SelectListParagraph-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/SelectListParagraph-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/SelectListParagraph-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/SelectListParagraph-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/Slider-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Slider-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/Slider-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Slider-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/Slider-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/Slider-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/TextInput-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/TextInput-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/TextInput-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/TextInput-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/TextInput-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/TextInput-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/TextInputParagraph-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/TextInputParagraph-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/TextInputParagraph-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/TextInputParagraph-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/TextInputParagraph-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/TextInputParagraph-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/TextInputPlaceholder-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/TextInputPlaceholder-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/TextInputPlaceholder-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/TextInputPlaceholder-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/TextInputPlaceholder-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/TextInputPlaceholder-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/styles/VerticalScrollbar-Default.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/VerticalScrollbar-Default.xml
+
+#begin GeonBit.UI/themes/hd/styles/VerticalScrollbar-MouseDown.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/VerticalScrollbar-MouseDown.xml
+
+#begin GeonBit.UI/themes/hd/styles/VerticalScrollbar-MouseHover.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/styles/VerticalScrollbar-MouseHover.xml
+
+#begin GeonBit.UI/themes/hd/textures/arrow_down.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/arrow_down.png
+
+#begin GeonBit.UI/themes/hd/textures/arrow_up.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/arrow_up.png
+
+#begin GeonBit.UI/themes/hd/textures/button_alternative.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/button_alternative.png
+
+#begin GeonBit.UI/themes/hd/textures/button_alternative_down.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/button_alternative_down.png
+
+#begin GeonBit.UI/themes/hd/textures/button_alternative_hover.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/button_alternative_hover.png
+
+#begin GeonBit.UI/themes/hd/textures/button_alternative_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/button_alternative_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/button_default.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/button_default.png
+
+#begin GeonBit.UI/themes/hd/textures/button_default_down.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/button_default_down.png
+
+#begin GeonBit.UI/themes/hd/textures/button_default_hover.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/button_default_hover.png
+
+#begin GeonBit.UI/themes/hd/textures/button_default_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/button_default_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/button_fancy.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/button_fancy.png
+
+#begin GeonBit.UI/themes/hd/textures/button_fancy_down.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/button_fancy_down.png
+
+#begin GeonBit.UI/themes/hd/textures/button_fancy_hover.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/button_fancy_hover.png
+
+#begin GeonBit.UI/themes/hd/textures/button_fancy_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/button_fancy_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/checkbox.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/checkbox.png
+
+#begin GeonBit.UI/themes/hd/textures/checkbox_down.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/checkbox_down.png
+
+#begin GeonBit.UI/themes/hd/textures/checkbox_hover.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/checkbox_hover.png
+
+#begin GeonBit.UI/themes/hd/textures/cursor_default.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/cursor_default.png
+
+#begin GeonBit.UI/themes/hd/textures/cursor_default_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/cursor_default_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/cursor_ibeam.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/cursor_ibeam.png
+
+#begin GeonBit.UI/themes/hd/textures/cursor_ibeam_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/cursor_ibeam_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/cursor_pointer.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/cursor_pointer.png
+
+#begin GeonBit.UI/themes/hd/textures/cursor_pointer_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/cursor_pointer_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/horizontal_line.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/horizontal_line.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Apple.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Apple.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Armor.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Armor.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Axe.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Axe.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/background.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/background.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/BloodySword.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/BloodySword.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Bone.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Bone.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Book.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Book.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Cubes.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Cubes.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Diamond.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Diamond.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Explanation.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Explanation.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Feather.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Feather.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/FloppyDisk.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/FloppyDisk.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/GoldCoins.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/GoldCoins.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/GoldShard.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/GoldShard.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Heart.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Heart.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Helmet.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Helmet.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Key.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Key.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/MagicBook.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/MagicBook.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/MagicWand.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/MagicWand.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Map.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Map.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/None.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/None.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/OrbBlue.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/OrbBlue.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/OrbGreen.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/OrbGreen.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/OrbRed.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/OrbRed.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Pistol.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Pistol.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/PotionBlue.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/PotionBlue.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/PotionCyan.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/PotionCyan.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/PotionGreen.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/PotionGreen.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/PotionPurple.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/PotionPurple.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/PotionRed.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/PotionRed.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/PotionYellow.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/PotionYellow.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Ring.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Ring.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/RingGold.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/RingGold.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/RingGoldRuby.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/RingGoldRuby.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/RingRuby.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/RingRuby.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/RubyBlue.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/RubyBlue.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/RubyGreen.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/RubyGreen.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/RubyPink.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/RubyPink.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/RubyPurple.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/RubyPurple.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/RubyRed.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/RubyRed.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Sack.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Sack.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Scroll.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Scroll.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Shield.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Shield.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/ShieldAndSword.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/ShieldAndSword.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Shovel.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Shovel.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/SilverShard.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/SilverShard.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Skull.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Skull.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Sword.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Sword.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/Trap.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/Trap.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/ZoomIn.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/ZoomIn.png
+
+#begin GeonBit.UI/themes/hd/textures/icons/ZoomOut.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:GeonBit.UI/themes/hd/textures/icons/ZoomOut.png
+
+#begin GeonBit.UI/themes/hd/textures/panel_default.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/panel_default.png
+
+#begin GeonBit.UI/themes/hd/textures/panel_default_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/panel_default_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/panel_fancy.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/panel_fancy.png
+
+#begin GeonBit.UI/themes/hd/textures/panel_fancy_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/panel_fancy_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/panel_golden.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/panel_golden.png
+
+#begin GeonBit.UI/themes/hd/textures/panel_golden_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/panel_golden_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/panel_listbackground.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/panel_listbackground.png
+
+#begin GeonBit.UI/themes/hd/textures/panel_listbackground_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/panel_listbackground_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/panel_simple.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/panel_simple.png
+
+#begin GeonBit.UI/themes/hd/textures/panel_simple_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/panel_simple_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/progressbar.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/progressbar.png
+
+#begin GeonBit.UI/themes/hd/textures/progressbar_fill.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/progressbar_fill.png
+
+#begin GeonBit.UI/themes/hd/textures/progressbar_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/progressbar_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/radio.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/radio.png
+
+#begin GeonBit.UI/themes/hd/textures/radio_down.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/radio_down.png
+
+#begin GeonBit.UI/themes/hd/textures/radio_hover.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/radio_hover.png
+
+#begin GeonBit.UI/themes/hd/textures/scrollbar.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/scrollbar.png
+
+#begin GeonBit.UI/themes/hd/textures/scrollbar_mark.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/scrollbar_mark.png
+
+#begin GeonBit.UI/themes/hd/textures/scrollbar_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/scrollbar_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/slider_default.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/slider_default.png
+
+#begin GeonBit.UI/themes/hd/textures/slider_default_mark.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/slider_default_mark.png
+
+#begin GeonBit.UI/themes/hd/textures/slider_default_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/slider_default_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/slider_fancy.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/slider_fancy.png
+
+#begin GeonBit.UI/themes/hd/textures/slider_fancy_mark.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/slider_fancy_mark.png
+
+#begin GeonBit.UI/themes/hd/textures/slider_fancy_md.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/textures/slider_fancy_md.xml
+
+#begin GeonBit.UI/themes/hd/textures/white_texture.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color16Bit
+/build:GeonBit.UI/themes/hd/textures/white_texture.png
+
+#begin GeonBit.UI/themes/hd/ThemeData.xml
+/importer:XmlImporter
+/processor:PassThroughProcessor
+/build:GeonBit.UI/themes/hd/ThemeData.xml
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/ThemeData.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/ThemeData.xml
new file mode 100644
index 0000000..0a9e5bd
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/ThemeData.xml
@@ -0,0 +1,22 @@
+
+
+
+ Hd
+ Ronen Ness
+ A higher-res, old-school style UI theme GeonBit.UI comes with by default.
+ This theme is mostly based on Michele Bucelli ("Buch") works.
+Sources can be found here:
+
+- http://opengameart.org/content/golden-ui
+- http://opengameart.org/content/roguelikerpg-icons
+- http://opengameart.org/content/roguelikerpg-items
+- http://opengameart.org/content/arabian-icons
+- http://opengameart.org/content/2d-static-spritesicons
+- http://opengameart.org/content/30-ability-icons
+- http://opengameart.org/content/whispers-of-avalon-item-icons
+
+ 1.0.0
+
+ MIT
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/effects/disabled.fx b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/effects/disabled.fx
new file mode 100644
index 0000000..6774d71
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/effects/disabled.fx
@@ -0,0 +1,38 @@
+#if OPENGL
+ #define SV_POSITION POSITION
+ #define VS_SHADERMODEL vs_3_0
+ #define PS_SHADERMODEL ps_3_0
+#else
+ #define VS_SHADERMODEL vs_4_0_level_9_1
+ #define PS_SHADERMODEL ps_4_0_level_9_1
+#endif
+
+Texture2D SpriteTexture;
+
+sampler2D SpriteTextureSampler = sampler_state
+{
+ Texture = ;
+};
+
+struct VertexShaderOutput
+{
+ float4 Position : SV_POSITION;
+ float4 Color : COLOR0;
+ float2 TextureCoordinates : TEXCOORD0;
+};
+
+float4 MainPS(VertexShaderOutput input) : COLOR
+{
+ float4 color = tex2D(SpriteTextureSampler,input.TextureCoordinates) * input.Color;
+ float value = (color.r + color.g + color.b) / 3;
+ color.r = color.g = color.b = value;
+ return color;
+}
+
+technique SpriteDrawing
+{
+ pass P0
+ {
+ PixelShader = compile PS_SHADERMODEL MainPS();
+ }
+};
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/effects/silhouette.fx b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/effects/silhouette.fx
new file mode 100644
index 0000000..0bd81f3
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/effects/silhouette.fx
@@ -0,0 +1,39 @@
+#if OPENGL
+ #define SV_POSITION POSITION
+ #define VS_SHADERMODEL vs_3_0
+ #define PS_SHADERMODEL ps_3_0
+#else
+ #define VS_SHADERMODEL vs_4_0_level_9_1
+ #define PS_SHADERMODEL ps_4_0_level_9_1
+#endif
+
+Texture2D SpriteTexture;
+
+sampler2D SpriteTextureSampler = sampler_state
+{
+ Texture = ;
+};
+
+struct VertexShaderOutput
+{
+ float4 Position : SV_POSITION;
+ float4 Color : COLOR0;
+ float2 TextureCoordinates : TEXCOORD0;
+};
+
+float4 MainPS(VertexShaderOutput input) : COLOR
+{
+ float4 color = tex2D(SpriteTextureSampler,input.TextureCoordinates) * input.Color;
+ color.r = 1 * color.a * input.Color.r;
+ color.g = 1 * color.a * input.Color.g;
+ color.b = 1 * color.a * input.Color.b;
+ return color;
+}
+
+technique SpriteDrawing
+{
+ pass P0
+ {
+ PixelShader = compile PS_SHADERMODEL MainPS();
+ }
+};
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/Bold.spritefont b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/Bold.spritefont
new file mode 100644
index 0000000..b0bfeca
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/Bold.spritefont
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ RobotoMono-Bold
+
+
+ 14
+
+
+ 0
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/Italic.spritefont b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/Italic.spritefont
new file mode 100644
index 0000000..eb5ba96
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/Italic.spritefont
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ RobotoMono-Italic
+
+
+ 14
+
+
+ 0
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/Regular.spritefont b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/Regular.spritefont
new file mode 100644
index 0000000..f172f10
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/Regular.spritefont
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ RobotoMono-Regular
+
+
+ 14
+
+
+ 0
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ ~
+
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/RobotoMono-Bold.ttf b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/RobotoMono-Bold.ttf
new file mode 100644
index 0000000..07ef607
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/RobotoMono-Bold.ttf differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/RobotoMono-Italic.ttf b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/RobotoMono-Italic.ttf
new file mode 100644
index 0000000..ef92c37
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/RobotoMono-Italic.ttf differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/RobotoMono-Regular.ttf b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/RobotoMono-Regular.ttf
new file mode 100644
index 0000000..b158a33
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/fonts/RobotoMono-Regular.ttf differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Button-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Button-Default.xml
new file mode 100644
index 0000000..2baf4a1
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Button-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 60
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Button-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Button-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Button-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Button-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Button-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Button-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ButtonParagraph-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ButtonParagraph-Default.xml
new file mode 100644
index 0000000..d9c6cbc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ButtonParagraph-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ButtonParagraph-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ButtonParagraph-MouseDown.xml
new file mode 100644
index 0000000..8ef401a
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ButtonParagraph-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ FFAAAAAA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ButtonParagraph-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ButtonParagraph-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ButtonParagraph-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBox-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBox-Default.xml
new file mode 100644
index 0000000..cedb146
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBox-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 40
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBox-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBox-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBox-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBox-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBox-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBox-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBoxParagraph-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBoxParagraph-Default.xml
new file mode 100644
index 0000000..d9c6cbc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBoxParagraph-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBoxParagraph-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBoxParagraph-MouseDown.xml
new file mode 100644
index 0000000..c50f02f
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBoxParagraph-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ FFFFFF00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBoxParagraph-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBoxParagraph-MouseHover.xml
new file mode 100644
index 0000000..c50f02f
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/CheckBoxParagraph-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ FFFFFF00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ColoredRectangle-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ColoredRectangle-Default.xml
new file mode 100644
index 0000000..e0beb18
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ColoredRectangle-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ FFFFFFFF
+ FF000000
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ColoredRectangle-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ColoredRectangle-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ColoredRectangle-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ColoredRectangle-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ColoredRectangle-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ColoredRectangle-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDown-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDown-Default.xml
new file mode 100644
index 0000000..1399eb9
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDown-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 220
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDown-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDown-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDown-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDown-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDown-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDown-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownParagraph-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownParagraph-Default.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownParagraph-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownParagraph-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownParagraph-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownParagraph-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownParagraph-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownParagraph-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownParagraph-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-Default.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/DropDownSelectedParagraph-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Entity-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Entity-Default.xml
new file mode 100644
index 0000000..e05e24c
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Entity-Default.xml
@@ -0,0 +1,19 @@
+
+
+
+ 1
+ FFFFFFFF
+ 00000000
+ 0
+ false
+ Regular
+ 00000000
+ 00000000
+ 0 0
+ 26 26
+ 0 0
+ 0 8
+ 1
+ 0 0
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Entity-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Entity-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Entity-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Entity-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Entity-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Entity-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Header-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Header-Default.xml
new file mode 100644
index 0000000..3ba2c61
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Header-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 1.2
+ FFFFFF00
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Header-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Header-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Header-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Header-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Header-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Header-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/HorizontalLine-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/HorizontalLine-Default.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/HorizontalLine-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/HorizontalLine-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/HorizontalLine-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/HorizontalLine-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/HorizontalLine-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/HorizontalLine-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/HorizontalLine-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Icon-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Icon-Default.xml
new file mode 100644
index 0000000..74c72ff
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Icon-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+ 50 50
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Icon-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Icon-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Icon-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Icon-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Icon-MouseHover.xml
new file mode 100644
index 0000000..8ff04a1
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Icon-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+ 1.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Image-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Image-Default.xml
new file mode 100644
index 0000000..1beedd1
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Image-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 1
+ FFFFFFFF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Image-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Image-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Image-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Image-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Image-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Image-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Label-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Label-Default.xml
new file mode 100644
index 0000000..db3ad89
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Label-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 0.8
+ FFCCCCCC
+ FF000000
+ 2
+ false
+ Regular
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Label-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Label-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Label-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Label-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Label-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Label-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Panel-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Panel-Default.xml
new file mode 100644
index 0000000..52d5b24
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Panel-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 2
+ FFFFFFFF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Panel-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Panel-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Panel-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Panel-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Panel-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Panel-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButton-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButton-Default.xml
new file mode 100644
index 0000000..6ef020c
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButton-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButton-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButton-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButton-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButton-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButton-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButton-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-Default.xml
new file mode 100644
index 0000000..d9c6cbc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-MouseDown.xml
new file mode 100644
index 0000000..8ef401a
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ FFAAAAAA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/PanelTabsButtonParagraph-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Paragraph-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Paragraph-Default.xml
new file mode 100644
index 0000000..7c53712
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Paragraph-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 1
+ FFFFFFFF
+ FF000000
+ 2
+ false
+ Regular
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Paragraph-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Paragraph-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Paragraph-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Paragraph-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Paragraph-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Paragraph-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBar-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBar-Default.xml
new file mode 100644
index 0000000..14ec90b
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBar-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 52
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBar-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBar-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBar-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBar-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBar-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBar-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBarFill-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBarFill-Default.xml
new file mode 100644
index 0000000..115fb41
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBarFill-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ FF84CC40
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBarFill-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBarFill-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBarFill-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBarFill-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBarFill-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/ProgressBarFill-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButton-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButton-Default.xml
new file mode 100644
index 0000000..eb36dcc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButton-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 50
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButton-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButton-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButton-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButton-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButton-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButton-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButtonParagraph-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButtonParagraph-Default.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButtonParagraph-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButtonParagraph-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButtonParagraph-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButtonParagraph-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButtonParagraph-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButtonParagraph-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/RadioButtonParagraph-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectList-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectList-Default.xml
new file mode 100644
index 0000000..f0a2f8e
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectList-Default.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+ 64000000
+
+
+ 30 22
+
+
+
+ 0 220
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectList-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectList-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectList-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectList-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectList-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectList-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectListParagraph-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectListParagraph-Default.xml
new file mode 100644
index 0000000..7c53712
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectListParagraph-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 1
+ FFFFFFFF
+ FF000000
+ 2
+ false
+ Regular
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectListParagraph-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectListParagraph-MouseDown.xml
new file mode 100644
index 0000000..c50f02f
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectListParagraph-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ FFFFFF00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectListParagraph-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectListParagraph-MouseHover.xml
new file mode 100644
index 0000000..c50f02f
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/SelectListParagraph-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ FFFFFF00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Slider-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Slider-Default.xml
new file mode 100644
index 0000000..bb0c9ac
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Slider-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 30
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Slider-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Slider-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Slider-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Slider-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Slider-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/Slider-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInput-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInput-Default.xml
new file mode 100644
index 0000000..cbae23d
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInput-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0 65
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInput-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInput-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInput-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInput-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInput-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInput-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputParagraph-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputParagraph-Default.xml
new file mode 100644
index 0000000..d9c6cbc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputParagraph-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputParagraph-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputParagraph-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputParagraph-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputParagraph-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputParagraph-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputParagraph-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputPlaceholder-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputPlaceholder-Default.xml
new file mode 100644
index 0000000..c675854
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputPlaceholder-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+ 1
+ FF969696
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputPlaceholder-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputPlaceholder-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputPlaceholder-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputPlaceholder-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputPlaceholder-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/TextInputPlaceholder-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/VerticalScrollbar-Default.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/VerticalScrollbar-Default.xml
new file mode 100644
index 0000000..b06b406
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/VerticalScrollbar-Default.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30 0
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/VerticalScrollbar-MouseDown.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/VerticalScrollbar-MouseDown.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/VerticalScrollbar-MouseDown.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/VerticalScrollbar-MouseHover.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/VerticalScrollbar-MouseHover.xml
new file mode 100644
index 0000000..b9c80cc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/VerticalScrollbar-MouseHover.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/example.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/example.xml
new file mode 100644
index 0000000..eda93f2
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/styles/example.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+ 1
+
+ FFFFFFFF
+
+ FF000000
+
+ 2
+
+ false
+
+ Regular
+
+ 00000000
+
+ 00000000
+
+ 0 0
+
+ 10 10
+
+ 0 0
+
+ 0 0
+
+ 1
+
+ 50 50
+
+
\ No newline at end of file
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/arrow_down.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/arrow_down.png
new file mode 100644
index 0000000..4dd07bb
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/arrow_down.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/arrow_up.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/arrow_up.png
new file mode 100644
index 0000000..65a3b01
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/arrow_up.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative.png
new file mode 100644
index 0000000..b2f6aa1
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative_down.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative_down.png
new file mode 100644
index 0000000..48e47dd
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative_down.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative_hover.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative_hover.png
new file mode 100644
index 0000000..74e018d
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative_hover.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative_md.xml
new file mode 100644
index 0000000..be50e84
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_alternative_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.2
+ 0
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default.png
new file mode 100644
index 0000000..37dc988
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default_down.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default_down.png
new file mode 100644
index 0000000..268dd99
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default_down.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default_hover.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default_hover.png
new file mode 100644
index 0000000..18d81c2
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default_hover.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default_md.xml
new file mode 100644
index 0000000..50107f4
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_default_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.2
+ 0.35
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy.png
new file mode 100644
index 0000000..7fa0dd8
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy_down.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy_down.png
new file mode 100644
index 0000000..8c3f37a
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy_down.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy_hover.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy_hover.png
new file mode 100644
index 0000000..a0f439a
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy_hover.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy_md.xml
new file mode 100644
index 0000000..46b65bc
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/button_fancy_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.35
+ 0.0
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/checkbox.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/checkbox.png
new file mode 100644
index 0000000..8bafc50
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/checkbox.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/checkbox_down.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/checkbox_down.png
new file mode 100644
index 0000000..1a77817
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/checkbox_down.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/checkbox_hover.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/checkbox_hover.png
new file mode 100644
index 0000000..be740d6
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/checkbox_hover.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_default.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_default.png
new file mode 100644
index 0000000..0bc4377
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_default.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_default_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_default_md.xml
new file mode 100644
index 0000000..e779d69
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_default_md.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+ 0
+ 0
+ 40
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_ibeam.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_ibeam.png
new file mode 100644
index 0000000..2027785
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_ibeam.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_ibeam_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_ibeam_md.xml
new file mode 100644
index 0000000..10d5e52
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_ibeam_md.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+ 0
+ -8
+ 40
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_pointer.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_pointer.png
new file mode 100644
index 0000000..e62b106
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_pointer.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_pointer_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_pointer_md.xml
new file mode 100644
index 0000000..82abccb
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/cursor_pointer_md.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+ -4
+ 0
+ 50
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/horizontal_line.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/horizontal_line.png
new file mode 100644
index 0000000..5ae5bd1
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/horizontal_line.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Apple.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Apple.png
new file mode 100644
index 0000000..9069cc5
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Apple.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Armor.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Armor.png
new file mode 100644
index 0000000..e8cff60
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Armor.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Axe.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Axe.png
new file mode 100644
index 0000000..05748e2
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Axe.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/BloodySword.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/BloodySword.png
new file mode 100644
index 0000000..abf9eed
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/BloodySword.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Bone.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Bone.png
new file mode 100644
index 0000000..869d817
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Bone.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Book.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Book.png
new file mode 100644
index 0000000..3da1b01
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Book.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Cubes.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Cubes.png
new file mode 100644
index 0000000..1e10123
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Cubes.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Diamond.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Diamond.png
new file mode 100644
index 0000000..20d46ab
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Diamond.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Explanation.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Explanation.png
new file mode 100644
index 0000000..0927841
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Explanation.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Feather.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Feather.png
new file mode 100644
index 0000000..1ec35ae
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Feather.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/FloppyDisk.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/FloppyDisk.png
new file mode 100644
index 0000000..60f8520
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/FloppyDisk.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/GoldCoins.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/GoldCoins.png
new file mode 100644
index 0000000..596e556
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/GoldCoins.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/GoldShard.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/GoldShard.png
new file mode 100644
index 0000000..9d77a5c
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/GoldShard.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Heart.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Heart.png
new file mode 100644
index 0000000..fa0bb39
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Heart.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Helmet.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Helmet.png
new file mode 100644
index 0000000..965cb60
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Helmet.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Key.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Key.png
new file mode 100644
index 0000000..887a299
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Key.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/MagicBook.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/MagicBook.png
new file mode 100644
index 0000000..48ca3d4
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/MagicBook.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/MagicWand.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/MagicWand.png
new file mode 100644
index 0000000..dbc92f4
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/MagicWand.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Map.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Map.png
new file mode 100644
index 0000000..b79bf46
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Map.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/None.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/None.png
new file mode 100644
index 0000000..82fa43a
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/None.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/OrbBlue.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/OrbBlue.png
new file mode 100644
index 0000000..6262527
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/OrbBlue.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/OrbGreen.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/OrbGreen.png
new file mode 100644
index 0000000..0cd0fc2
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/OrbGreen.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/OrbRed.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/OrbRed.png
new file mode 100644
index 0000000..0efaaea
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/OrbRed.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Pistol.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Pistol.png
new file mode 100644
index 0000000..117de9b
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Pistol.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionBlue.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionBlue.png
new file mode 100644
index 0000000..ed177e9
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionBlue.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionCyan.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionCyan.png
new file mode 100644
index 0000000..1e7597a
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionCyan.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionGreen.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionGreen.png
new file mode 100644
index 0000000..d4233d0
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionGreen.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionPurple.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionPurple.png
new file mode 100644
index 0000000..fa36c2b
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionPurple.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionRed.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionRed.png
new file mode 100644
index 0000000..776d63e
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionRed.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionYellow.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionYellow.png
new file mode 100644
index 0000000..da55f89
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/PotionYellow.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Ring.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Ring.png
new file mode 100644
index 0000000..abe924c
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Ring.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RingGold.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RingGold.png
new file mode 100644
index 0000000..1e64111
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RingGold.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RingGoldRuby.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RingGoldRuby.png
new file mode 100644
index 0000000..e303fd1
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RingGoldRuby.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RingRuby.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RingRuby.png
new file mode 100644
index 0000000..03cd193
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RingRuby.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyBlue.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyBlue.png
new file mode 100644
index 0000000..69646a3
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyBlue.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyGreen.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyGreen.png
new file mode 100644
index 0000000..b14be2e
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyGreen.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyPink.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyPink.png
new file mode 100644
index 0000000..2d6abc5
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyPink.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyPurple.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyPurple.png
new file mode 100644
index 0000000..066b638
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyPurple.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyRed.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyRed.png
new file mode 100644
index 0000000..c3336c6
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/RubyRed.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Sack.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Sack.png
new file mode 100644
index 0000000..6dbe355
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Sack.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Scroll.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Scroll.png
new file mode 100644
index 0000000..1047714
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Scroll.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Shield.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Shield.png
new file mode 100644
index 0000000..5cd2772
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Shield.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/ShieldAndSword.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/ShieldAndSword.png
new file mode 100644
index 0000000..181b7a1
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/ShieldAndSword.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Shovel.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Shovel.png
new file mode 100644
index 0000000..2443a72
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Shovel.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/SilverShard.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/SilverShard.png
new file mode 100644
index 0000000..3e534e3
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/SilverShard.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Skull.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Skull.png
new file mode 100644
index 0000000..2d83478
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Skull.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Sword.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Sword.png
new file mode 100644
index 0000000..140c9c1
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Sword.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Trap.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Trap.png
new file mode 100644
index 0000000..2033a1c
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/Trap.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/ZoomIn.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/ZoomIn.png
new file mode 100644
index 0000000..817178b
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/ZoomIn.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/ZoomOut.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/ZoomOut.png
new file mode 100644
index 0000000..c6faffb
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/ZoomOut.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/background.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/background.png
new file mode 100644
index 0000000..82b18be
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/icons/background.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_default.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_default.png
new file mode 100644
index 0000000..8bc26d9
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_default.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_default_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_default_md.xml
new file mode 100644
index 0000000..7fa94b7
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_default_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.2
+ 0.2
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_fancy.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_fancy.png
new file mode 100644
index 0000000..d9eedd6
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_fancy.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_fancy_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_fancy_md.xml
new file mode 100644
index 0000000..2b3fc1f
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_fancy_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.2
+ 0.2
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_golden.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_golden.png
new file mode 100644
index 0000000..3057704
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_golden.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_golden_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_golden_md.xml
new file mode 100644
index 0000000..2b3fc1f
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_golden_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.2
+ 0.2
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_listbackground.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_listbackground.png
new file mode 100644
index 0000000..02ac7de
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_listbackground.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_listbackground_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_listbackground_md.xml
new file mode 100644
index 0000000..2b3fc1f
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_listbackground_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.2
+ 0.2
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_simple.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_simple.png
new file mode 100644
index 0000000..1430cc7
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_simple.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_simple_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_simple_md.xml
new file mode 100644
index 0000000..2b3fc1f
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/panel_simple_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.2
+ 0.2
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/progressbar.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/progressbar.png
new file mode 100644
index 0000000..5750692
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/progressbar.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/progressbar_fill.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/progressbar_fill.png
new file mode 100644
index 0000000..79b0d81
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/progressbar_fill.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/progressbar_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/progressbar_md.xml
new file mode 100644
index 0000000..cea6983
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/progressbar_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.1375
+ 0.0
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/radio.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/radio.png
new file mode 100644
index 0000000..5fe5420
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/radio.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/radio_down.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/radio_down.png
new file mode 100644
index 0000000..85b9a83
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/radio_down.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/radio_hover.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/radio_hover.png
new file mode 100644
index 0000000..2e0f36f
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/radio_hover.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/scrollbar.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/scrollbar.png
new file mode 100644
index 0000000..3a98a60
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/scrollbar.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/scrollbar_mark.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/scrollbar_mark.png
new file mode 100644
index 0000000..fef0a10
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/scrollbar_mark.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/scrollbar_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/scrollbar_md.xml
new file mode 100644
index 0000000..44688b9
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/scrollbar_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.0
+ 0.3
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_default.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_default.png
new file mode 100644
index 0000000..84846e3
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_default.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_default_mark.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_default_mark.png
new file mode 100644
index 0000000..23c0e81
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_default_mark.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_default_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_default_md.xml
new file mode 100644
index 0000000..d27d99d
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_default_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.03
+ 0.0
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_fancy.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_fancy.png
new file mode 100644
index 0000000..11a06e5
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_fancy.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_fancy_mark.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_fancy_mark.png
new file mode 100644
index 0000000..9be39ae
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_fancy_mark.png differ
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_fancy_md.xml b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_fancy_md.xml
new file mode 100644
index 0000000..cd4cc37
--- /dev/null
+++ b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/slider_fancy_md.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+ 0.28
+ 0.0
+
+
+
diff --git a/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/white_texture.png b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/white_texture.png
new file mode 100644
index 0000000..a782975
Binary files /dev/null and b/Venus Particle Editor/Content/GeonBit.UI/themes/hd/textures/white_texture.png differ
diff --git a/Venus Particle Editor/GlobalFields.cs b/Venus Particle Editor/GlobalFields.cs
new file mode 100644
index 0000000..69a2a24
--- /dev/null
+++ b/Venus Particle Editor/GlobalFields.cs
@@ -0,0 +1,19 @@
+using Microsoft.Xna.Framework;
+
+namespace VenusParticleEditor
+{
+ class GlobalFields
+ {
+ // public static Vector2 PANEL_EDITOR_SIZE = new Vector2(600, 504);
+
+ public static Vector2 PANEL_EDITOR_SIZE = new Vector2(0.6f, 0.71f);
+ public static Vector2 PANEL_EDITOR_SIZE_FULLSCREEN = new Vector2(0.4f, 0.71f);
+
+
+ public static Vector2 PANEL_EDITOR_INSIDE_SIZE = new Vector2(-1f, -1f);
+ public static string SOFTWARE_VERSION = "1.0.0";
+ public static string GEONBITUI_VERION = "3.4.0.0";
+ public static int APP_WIDTH = 1000;
+ public static int APP_HEIGHT = 720;
+ }
+}
diff --git a/Venus Particle Editor/JsonHelper.cs b/Venus Particle Editor/JsonHelper.cs
new file mode 100644
index 0000000..57ffb9c
--- /dev/null
+++ b/Venus Particle Editor/JsonHelper.cs
@@ -0,0 +1,26 @@
+using Newtonsoft.Json;
+using System.IO;
+
+namespace VenusParticleEditor
+{
+ public class JsonHelper
+ {
+ public static void WriteToJsonFile(string filePath, T objectToWrite, bool append = false) where T : new()
+ {
+ TextWriter writer = null;
+ try
+ {
+ var settings = new JsonSerializerSettings();
+
+ var contentsToWriteToFile = JsonConvert.SerializeObject(objectToWrite);
+ writer = new StreamWriter(filePath, append);
+ writer.Write(contentsToWriteToFile);
+ }
+ finally
+ {
+ if (writer != null)
+ writer.Close();
+ }
+ }
+ }
+}
diff --git a/Venus Particle Editor/KeyboardHelper.cs b/Venus Particle Editor/KeyboardHelper.cs
new file mode 100644
index 0000000..33c854b
--- /dev/null
+++ b/Venus Particle Editor/KeyboardHelper.cs
@@ -0,0 +1,69 @@
+#region Using Statements
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Input;
+using System;
+using System.Reflection;
+#endregion
+
+namespace VenusParticleEditor
+{
+ public class KeyboardHelper
+ {
+ public bool Enabled = true;
+
+ ///
+ /// Constructs a new input state.
+ ///
+ public KeyboardHelper()
+ {
+ KeyboardState = new KeyboardState();
+ PreviousKeyboardState = new KeyboardState();
+ }
+
+ public KeyboardState KeyboardState { get; private set; }
+ public KeyboardState PreviousKeyboardState { get; private set; }
+
+ ///
+ /// Reads the latest state of the keyboard and gamepad.
+ ///
+ public void Update(GameTime gameTime)
+ {
+ if (!Enabled) { return; }
+
+ PreviousKeyboardState = KeyboardState;
+ KeyboardState = Keyboard.GetState();
+ }
+
+ public Keys[] GetPressedKeys()
+ {
+ if (!Enabled) { return new Keys[0]; }
+
+ return KeyboardState.GetPressedKeys();
+ }
+
+ public bool IsKeyDown(Keys key)
+ {
+ if (!Enabled) { return false; }
+ Console.WriteLine(key + " " + KeyboardState.IsKeyDown(key) + Keyboard.GetState().IsKeyDown(key));
+
+ return KeyboardState.IsKeyDown(key);
+ }
+
+ ///
+ /// Helper for checking if a key was newly pressed during this update.
+ ///
+ public bool IsNewKeyPress(Keys key)
+ {
+ if (!Enabled) { return false; }
+
+ return KeyboardState.IsKeyDown(key) && PreviousKeyboardState.IsKeyUp(key);
+ }
+
+ public bool IsNewKeyRelease(Keys key)
+ {
+ if (!Enabled) { return false; }
+
+ return PreviousKeyboardState.IsKeyDown(key) && KeyboardState.IsKeyUp(key);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Venus Particle Editor/LoggerHelper.cs b/Venus Particle Editor/LoggerHelper.cs
new file mode 100644
index 0000000..7d23f54
--- /dev/null
+++ b/Venus Particle Editor/LoggerHelper.cs
@@ -0,0 +1,95 @@
+using GeonBit.UI.Entities;
+using Microsoft.Xna.Framework;
+using System;
+
+namespace VenusParticleEditor
+{
+ public class LoggerHelper
+ {
+ public enum CONSOLE_TYPE_MESSAGE { ERROR, WARNING, INFO }
+
+ private readonly int PANEL_HEIGHT = 180;
+
+ private RichParagraph _paragraphConsole;
+ private Panel _panelConsole;
+ private string _consoleTextBackup = "";
+ private bool _active = true;
+
+ public bool Active
+ {
+ set
+ {
+ _active = value;
+ _panelConsole.Visible = _active;
+ }
+
+ get
+ {
+ return _active;
+ }
+ }
+ public Panel PanelConsole
+ {
+ get { return _panelConsole; }
+ }
+
+ public LoggerHelper()
+ {
+ _panelConsole = new Panel(new Vector2(0.7f, PANEL_HEIGHT), PanelSkin.Simple, Anchor.BottomLeft)
+ {
+ Padding = Vector2.Zero,
+ PanelOverflowBehavior = PanelOverflowBehavior.VerticalScroll
+ };
+ _panelConsole.Scrollbar.AdjustMaxAutomatically = true;
+
+ _paragraphConsole = new RichParagraph("teste", scale: 0.97f);
+ _panelConsole.AddChild(_paragraphConsole);
+ }
+
+ public void Error(string text)
+ {
+ WriteConsole(text, CONSOLE_TYPE_MESSAGE.ERROR);
+ }
+
+ public void Warning(string text)
+ {
+ WriteConsole(text, CONSOLE_TYPE_MESSAGE.WARNING);
+ }
+
+ public void Info(string text)
+ {
+ WriteConsole(text, CONSOLE_TYPE_MESSAGE.INFO);
+ }
+
+ public void WriteConsole(string text, CONSOLE_TYPE_MESSAGE typeMessage)
+ {
+ Console.WriteLine(typeMessage.ToString() + " " + text);
+
+ string prefix = "";
+ string posfix = "\n";
+ switch (typeMessage)
+ {
+ case CONSOLE_TYPE_MESSAGE.INFO:
+ prefix = "{{BLUE}} - ";
+ break;
+ case CONSOLE_TYPE_MESSAGE.WARNING:
+ prefix = "{{ORANGE}} - ";
+ break;
+ case CONSOLE_TYPE_MESSAGE.ERROR:
+ prefix = "{{RED}} - ";
+ break;
+ }
+
+ if (typeMessage == CONSOLE_TYPE_MESSAGE.ERROR)
+ {
+ _consoleTextBackup += prefix + text + "{{DEFAULT}}" + posfix;
+ }
+ else
+ {
+ _consoleTextBackup += prefix + "{{DEFAULT}}" + text + posfix;
+ }
+
+ _paragraphConsole.Text = _consoleTextBackup;
+ }
+ }
+}
diff --git a/Venus Particle Editor/MainScreen.cs b/Venus Particle Editor/MainScreen.cs
new file mode 100644
index 0000000..7f70ef5
--- /dev/null
+++ b/Venus Particle Editor/MainScreen.cs
@@ -0,0 +1,1605 @@
+#region Using Statements
+using System;
+using GeonBit.UI;
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+using System.IO;
+using System.Windows.Forms;
+using System.Collections.Generic;
+using System.Reflection;
+using VenusParticleEngine.Core;
+using VenusParticleEditor.Modifiers;
+using VenusParticleEngine.Core.Profiles;
+using static VenusParticleEngine.Core.Profiles.Profile;
+#endregion
+
+/***
+ * Venus Particle Editor
+ * 1.0.0.0 feb/2019
+ * Marcelo Belkiman @mmbelkiman
+ * Icon made by Smashicons from www.flaticon.com
+ * */
+namespace VenusParticleEditor
+{
+ public class MainScreen : Game
+ {
+ #region ============= Enum
+ private enum EnumEmitterProfiles { BoxProfile, BoxFillProfile, BoxUniformProfile, CircleProfile, LineProfile, PointProfile, RingProfile, SprayProfile };
+ private enum EnumEmitterCircleRadiation { In, Out, None };
+ private enum EnumEmitterAxis { Up, Down, Left, Right };
+ private enum EnumEmitterBlendMode { Add, Alpha, Subtract };
+ private enum EnumExecutionStrategy { Parallel, Serial };
+ #endregion
+
+ #region ============= Fields final
+ private readonly string EMITTER_PRINCIPAL_NAME = "principal";
+ private readonly float FONT_SCALE = 1f;
+ private readonly int TOP_PANEL_HEIGHT = 65;
+ #endregion
+
+ #region ============= Fields
+ private GraphicsDeviceManager _graphics;
+ private ParticleEffect _particleEffect;
+ private KeyboardHelper _keyboardHelper;
+ private LoggerHelper _logger;
+ private SpriteBatch _spriteBatch;
+ private Color _currentClearColor = Color.CornflowerBlue;
+
+ private string _currentEmitter;
+ private bool _queueActionExport = false;
+ private bool _queueActionLoad = false;
+ private bool _moveCursorMode = false;
+
+ private Modifiers.CircleContainer _modifierCircleContainer;
+ private Modifiers.ColourInterpolator2 _modifierColourInterpolator2;
+ private Modifiers.Drag _modifierDrag;
+ private Modifiers.HueInterpolator2 _modifierHueInterpolator2;
+ private Modifiers.LinearGravity _modifierLinearGravity;
+ private Modifiers.OpacityFastFade _modifierOpacityFastFade;
+ private Modifiers.OpacityInterpolator2 _modifierOpacityInterpolator2;
+ private Modifiers.OpacityInterpolator3 _modifierOpacityInterpolator3;
+ private Modifiers.RectContainer _modifierRectContainer;
+ private Modifiers.RectLoopContainer _modifierRectLoopContainer;
+ private Modifiers.Rotation _modifierRotation;
+ private Modifiers.ScaleInterpolator2 _modifierScaleInterpolator2;
+ private Modifiers.VelocityColour _modifierVelocityColour;
+ private Modifiers.VelocityColourInfinite _modifierVelocityColourInfinite;
+ private Modifiers.VelocityHue _modifierVelocityHue;
+ private Modifiers.Vortex _modifierVortex;
+
+ private GeonBit.UI.Entities.Panel _texturePanelImage;
+ private GeonBit.UI.Entities.Panel _panelEditor;
+ private GeonBit.UI.Entities.RadioButton _textureRadioSquare;
+ private GeonBit.UI.Entities.RadioButton _textureRadioImage;
+ private GeonBit.UI.Entities.Button _buttonRemoveEmitter;
+ private Paragraph _parametersParagraphColorH;
+ private Paragraph _parametersParagraphColorS;
+ private Paragraph _parametersParagraphColorL;
+ private Paragraph _parametersParagraphOpacity;
+ private Paragraph _paragraphImageName;
+ private Slider _parametersSliderColorH;
+ private Slider _parametersSliderColorS;
+ private Slider _parametersSliderColorL;
+ private Slider _parametersSliderOpacity;
+ private DropDown _dropdownEmitter;
+ private DropDown _dropdownProfile;
+ private DropDown _dropdownProfileCircleRadiation;
+ private DropDown _dropdownProfileAxis;
+ private DropDown _dropdownBlendMode;
+ private DropDown _dropdownExecutionStrategy;
+ private TextInput _inputCapacity;
+ private TextInput _inputTimeMilleseconds;
+ private TextInput _inputProfileWidth;
+ private TextInput _inputProfileHeight;
+ private TextInput _inputProfileRadius;
+ private TextInput _inputProfileLength;
+ private TextInput _inputProfileSpread;
+ private TextInput _inputScale;
+ private TextInput _inputQuantity;
+ private TextInput _inputReclaimFrequency;
+ private TextInput _inputOffsetX;
+ private TextInput _inputOffsetY;
+ private TextInput _inputSpeedMin;
+ private TextInput _inputSpeedMax;
+ private TextInput _inputRotationMin;
+ private TextInput _inputRotationMax;
+ private TextInput _inputMassMin;
+ private TextInput _inputMassMax;
+ #endregion
+
+ #region ============= Constructor
+ public MainScreen()
+ {
+ _graphics = new GraphicsDeviceManager(this)
+ {
+ PreferredBackBufferWidth = GlobalFields.APP_WIDTH,
+ PreferredBackBufferHeight = GlobalFields.APP_HEIGHT,
+ // PreferMultiSampling = true,
+ SynchronizeWithVerticalRetrace = true,
+ IsFullScreen = false,
+ HardwareModeSwitch = false,
+ SupportedOrientations = DisplayOrientation.LandscapeRight,
+ };
+ Content.RootDirectory = "Content";
+ }
+ #endregion
+
+ #region ============= Superclass methods
+ protected override void Initialize()
+ {
+ UserInterface.Initialize(Content, BuiltinThemes.hd);
+ UserInterface.Active.UseRenderTarget = true;
+ UserInterface.Active.IncludeCursorInRenderTarget = false;
+
+ _particleEffect = new ParticleEffect();
+ _keyboardHelper = new KeyboardHelper();
+ _logger = new LoggerHelper();
+ _spriteBatch = new SpriteBatch(GraphicsDevice);
+
+ InitializeUI();
+ AddEmitter(EMITTER_PRINCIPAL_NAME);
+
+ base.Initialize();
+
+ _logger.Info("Venus Particle Editor Ver: " + GlobalFields.SOFTWARE_VERSION);
+ _logger.Warning("by: marcelo belkiman @mmbelkiman");
+ _logger.Info("Geon Bit UI ver: " + GlobalFields.GEONBITUI_VERION);
+ _logger.Info("Newtonsoft.Json ver: " + Assembly.LoadFrom("Newtonsoft.Json.dll").GetName().Version);
+ _logger.Info("Monogame ver: " + Assembly.LoadFrom("Monogame.Framework.dll").GetName().Version);
+ _logger.Info("Venus Particle engine ver: " + Assembly.LoadFrom("VenusParticleEngine.dll").GetName().Version);
+ _logger.Info("F9 move particle"
+ + " / F10 change background"
+ + "/ F11 full screen mode"
+ + "/ F12 show/hide log");
+ }
+
+ protected override void Draw(GameTime gameTime)
+ {
+ try
+ {
+ UserInterface.Active.Draw(_spriteBatch);
+ GraphicsDevice.Clear(_currentClearColor);
+ UserInterface.Active.DrawMainRenderTarget(_spriteBatch);
+ }
+ catch (Exception e)
+ {
+ GraphicsDevice.Clear(_currentClearColor);
+ UserInterface.Active.Dispose();
+ _logger.Error(e.Message);
+ }
+
+ _spriteBatch.Begin(blendState: BlendState.AlphaBlend);
+ _spriteBatch.Draw(_particleEffect);
+ _spriteBatch.End();
+
+ base.Draw(gameTime);
+ }
+
+ protected override void Update(GameTime gameTime)
+ {
+ if (_queueActionExport)
+ Export();
+
+ if (_queueActionLoad)
+ Load();
+
+ if (_moveCursorMode)
+ { _particleEffect.Trigger(new Vector(Mouse.GetState().X, Mouse.GetState().Y)); }
+ else
+ { _particleEffect.Trigger(new Vector(150, 400)); }
+
+ UserInterface.Active.Update(gameTime);
+
+ _keyboardHelper.Update(gameTime);
+
+ if (!_particleEffect.Emitters.ContainsKey(_currentEmitter)) return;
+
+ _modifierCircleContainer.Update();
+ _modifierColourInterpolator2.Update();
+ _modifierDrag.Update();
+ _modifierHueInterpolator2.Update();
+ _modifierLinearGravity.Update();
+ _modifierOpacityFastFade.Update();
+ _modifierOpacityInterpolator2.Update();
+ _modifierOpacityInterpolator3.Update();
+ _modifierRectContainer.Update();
+ _modifierRectLoopContainer.Update();
+ _modifierRotation.Update();
+ _modifierScaleInterpolator2.Update();
+ _modifierVelocityColour.Update();
+ _modifierVelocityColourInfinite.Update();
+ _modifierVelocityHue.Update();
+ _modifierVortex.Update();
+
+ if (_textureRadioImage.Checked)
+ { _texturePanelImage.Visible = true; }
+ else
+ { _texturePanelImage.Visible = false; }
+
+ _particleEffect.Update((float)gameTime.ElapsedGameTime.TotalSeconds);
+
+ UpdateCapacity();
+ UpdateTimeMilleseconds();
+ UpdateProfile();
+ UpdateBlendMode();
+ UpdateReclaimFrequency();
+ UpdateExecutionStrategy();
+ UpdateOffset();
+ UpdateColor();
+ UpdateOpacity();
+ UpdateQuantity();
+ UpdateSpeed();
+ UpdateScale();
+ UpdateRotation();
+ UpdateMass();
+
+ UpdateKeyboard();
+
+ base.Update(gameTime);
+ }
+ #endregion
+
+ private void CreateTopMenu()
+ {
+ // create top panel
+ GeonBit.UI.Entities.Panel topPanel = new GeonBit.UI.Entities.Panel(new Vector2(0, TOP_PANEL_HEIGHT + 2), PanelSkin.Simple, Anchor.TopCenter);
+ topPanel.Padding = Vector2.Zero;
+ UserInterface.Active.AddEntity(topPanel);
+
+ // add export button
+ GeonBit.UI.Entities.Button buttonExport = new GeonBit.UI.Entities.Button("Export", ButtonSkin.Default, Anchor.AutoInline, new Vector2(170, TOP_PANEL_HEIGHT))
+ {
+ OnClick = (Entity btn) => { this.Export(); }
+ };
+ topPanel.AddChild(buttonExport);
+
+ // add Load button
+ GeonBit.UI.Entities.Button buttonLoad = new GeonBit.UI.Entities.Button("Load", ButtonSkin.Default, Anchor.AutoInline, new Vector2(170, TOP_PANEL_HEIGHT))
+ {
+ OnClick = (Entity btn) => { this.Load(); }
+ };
+ topPanel.AddChild(buttonLoad);
+
+ // add Load button
+ GeonBit.UI.Entities.Button buttonMove = new GeonBit.UI.Entities.Button("Move", ButtonSkin.Default, Anchor.AutoInline, new Vector2(170, TOP_PANEL_HEIGHT))
+ {
+ OnClick = (Entity btn) =>
+ {
+ _moveCursorMode = !_moveCursorMode;
+ }
+ };
+ topPanel.AddChild(buttonMove);
+
+ // add title and text
+ var welcomeText = new RichParagraph("{{ORANGE}} Venus {{DEFAULT}}Particle Editor", Anchor.TopLeft, new Vector2(180, TOP_PANEL_HEIGHT), offset: new Vector2(50, 90));
+ UserInterface.Active.AddEntity(welcomeText);
+
+ //Dropdown Emitter
+ _dropdownEmitter = new DropDown(new Vector2(290, -1), anchor: Anchor.TopRight, offset: new Vector2(170, 0))
+ {
+ DefaultText = "Click to change",
+ OnValueChange = (entity) =>
+ {
+ //Add new Emitter
+ if (_dropdownEmitter.SelectedIndex == _dropdownEmitter.Count - 1)
+ {
+ var textInput = new TextInput(false)
+ {
+ PlaceholderText = "Name"
+ };
+ GeonBit.UI.Utils.MessageBox.ShowMsgBox(
+ "Reffer", "Please insert name to new entitiy",
+ new GeonBit.UI.Utils.MessageBox.MsgBoxOption[] {
+ new GeonBit.UI.Utils.MessageBox.MsgBoxOption("ADD", () =>
+ {
+ if (string.IsNullOrEmpty(textInput.Value))
+ {
+ textInput.Value = (_dropdownEmitter.Count + 1).ToString();
+ }
+
+ AddEmitter(textInput.Value);
+ _buttonRemoveEmitter.Enabled = true;
+
+ return true;
+ }),
+ }, new Entity[] { textInput });
+ }
+ else
+ {
+ if (_dropdownEmitter.SelectedValue != null)
+ _currentEmitter = _dropdownEmitter.SelectedValue;
+ RefreshEmitter();
+ }
+ }
+ };
+
+ _dropdownEmitter.AddItem("Add new");
+ UserInterface.Active.AddEntity(_dropdownEmitter);
+
+ _buttonRemoveEmitter = new GeonBit.UI.Entities.Button("Remove", ButtonSkin.Default, Anchor.TopRight, new Vector2(170, TOP_PANEL_HEIGHT), offset: new Vector2(0, 0))
+ {
+ Enabled = false,
+ OnClick = (Entity btn) =>
+ {
+ if (_dropdownEmitter.SelectedIndex >= 0)
+ {
+ _logger.Info("remove emitter => " + _dropdownEmitter.SelectedValue + " at pos " + _dropdownEmitter.SelectedIndex);
+ _particleEffect.Emitters.Remove(_dropdownEmitter.SelectedValue);
+
+ _dropdownEmitter.RemoveItem(_dropdownEmitter.SelectedIndex);
+ _dropdownEmitter.SelectedIndex = -1;
+
+ if (_dropdownEmitter.Count == 2)
+ {
+ _buttonRemoveEmitter.Enabled = false;
+ }
+
+ }
+ }
+ };
+ UserInterface.Active.AddEntity(_buttonRemoveEmitter);
+ }
+
+ private void InitializeUI()
+ {
+ CreateTopMenu();
+
+ // Add console panel
+ var Name = new RichParagraph("by: Marcelo Belkiman @mmbelkiman", Anchor.BottomLeft);
+ UserInterface.Active.AddEntity(Name);
+ UserInterface.Active.AddEntity(_logger.PanelConsole);
+
+ // add exit button
+ GeonBit.UI.Entities.Button exitBtn = new GeonBit.UI.Entities.Button("Exit", anchor: Anchor.BottomRight, size: new Vector2(200, -1))
+ {
+ OnClick = (Entity entity) => { Exit(); }
+ };
+ UserInterface.Active.AddEntity(exitBtn);
+
+ // Panel:
+ {
+ _panelEditor = new GeonBit.UI.Entities.Panel(GlobalFields.PANEL_EDITOR_SIZE, PanelSkin.Fancy, Anchor.CenterRight, offset: new Vector2(0, -40));
+ UserInterface.Active.AddEntity(_panelEditor);
+
+ // create panel tabs
+ PanelTabs tabs = new PanelTabs
+ {
+ BackgroundSkin = PanelSkin.Default
+ };
+ _panelEditor.AddChild(tabs);
+
+ // add panel
+ {
+ _textureRadioImage = new GeonBit.UI.Entities.RadioButton("Image", Anchor.AutoInline, new Vector2(0.5f, -1f))
+ {
+ OnClick = (Entity btn) => { this.LoadImage(); }
+ };
+ }
+ {
+ _textureRadioSquare = new GeonBit.UI.Entities.RadioButton("Square", Anchor.AutoInline, new Vector2(0.5f, -1f), isChecked: true)
+ {
+ OnClick = (Entity btn) => { this.EmitterToSquare(); }
+ };
+ }
+
+ // add first panel
+ {
+ TabData tab = tabs.AddTab("Emitter");
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new RichParagraph("{{GOLD}} Type"));
+
+ tab.panel.AddChild(_textureRadioSquare);
+ tab.panel.AddChild(_textureRadioImage);
+ }
+
+ {
+ _texturePanelImage = new GeonBit.UI.Entities.Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 100), anchor: Anchor.AutoInline, skin: PanelSkin.Simple, offset: new Vector2(0, 0));
+ _paragraphImageName = new Paragraph("name:", Anchor.AutoInline, scale: FONT_SCALE);
+ _texturePanelImage.AddChild(_paragraphImageName);
+ tab.panel.AddChild(_texturePanelImage);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new Paragraph("Capacity", Anchor.AutoInline, new Vector2(0.3f, -1), scale: FONT_SCALE));
+ _inputCapacity = new TextInput(false, new Vector2(0.7f, -1f), anchor: Anchor.AutoInline);
+ _inputCapacity.Validators.Add(new TextValidatorNumbersOnly(false, 0));
+ _inputCapacity.Value = "0";
+ _inputCapacity.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputCapacity);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new Paragraph("Time Milliseconds", Anchor.AutoInline, new Vector2(0.3f, -1), scale: FONT_SCALE));
+ _inputTimeMilleseconds = new TextInput(false, new Vector2(0.7f, -1f), anchor: Anchor.AutoInline);
+ _inputTimeMilleseconds.Validators.Add(new TextValidatorNumbersOnly(false, 0));
+ _inputTimeMilleseconds.Value = "1000";
+ _inputTimeMilleseconds.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputTimeMilleseconds);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new Paragraph("Profile", Anchor.AutoInline, new Vector2(0.3f, -1), scale: FONT_SCALE));
+
+ _dropdownProfile = new DropDown(new Vector2(0.7f, -1), anchor: Anchor.AutoInline)
+ {
+ DefaultText = "Click to change",
+ OnValueChange = (entity) =>
+ {
+ UpdateProfile();
+ RefreshEmitterProfile();
+ }
+ };
+ _dropdownProfile.AddItem(EnumEmitterProfiles.BoxProfile.ToString());
+ _dropdownProfile.AddItem(EnumEmitterProfiles.BoxFillProfile.ToString());
+ _dropdownProfile.AddItem(EnumEmitterProfiles.BoxUniformProfile.ToString());
+ _dropdownProfile.AddItem(EnumEmitterProfiles.CircleProfile.ToString());
+ _dropdownProfile.AddItem(EnumEmitterProfiles.LineProfile.ToString());
+ _dropdownProfile.AddItem(EnumEmitterProfiles.PointProfile.ToString());
+ _dropdownProfile.AddItem(EnumEmitterProfiles.RingProfile.ToString());
+ _dropdownProfile.AddItem(EnumEmitterProfiles.SprayProfile.ToString());
+ tab.panel.AddChild(_dropdownProfile);
+
+ tab.panel.AddChild(new Paragraph("Width", Anchor.AutoInline, new Vector2(0.2f, -1), scale: FONT_SCALE));
+ _inputProfileWidth = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputProfileWidth.Validators.Add(new TextValidatorNumbersOnly(false, 0));
+ _inputProfileWidth.Value = "1";
+ _inputProfileWidth.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputProfileWidth);
+
+ tab.panel.AddChild(new Paragraph("Height", Anchor.AutoInline, new Vector2(0.2f, -1), scale: FONT_SCALE));
+ _inputProfileHeight = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputProfileHeight.Validators.Add(new TextValidatorNumbersOnly(false, 0));
+ _inputProfileHeight.Value = "1";
+ _inputProfileHeight.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputProfileHeight);
+
+ tab.panel.AddChild(new Paragraph("radius", Anchor.AutoInline, new Vector2(0.5f, -1), scale: FONT_SCALE));
+ _inputProfileRadius = new TextInput(false, new Vector2(0.5f, -1f), anchor: Anchor.AutoInline);
+ _inputProfileRadius.Validators.Add(new TextValidatorNumbersOnly(false, 0));
+ _inputProfileRadius.Value = "1";
+ _inputProfileRadius.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputProfileRadius);
+
+ tab.panel.AddChild(new Paragraph("CircleRadiation", Anchor.AutoInline, new Vector2(0.5f, -1), scale: FONT_SCALE));
+ _dropdownProfileCircleRadiation = new DropDown(new Vector2(0.5f, -1), anchor: Anchor.AutoInline)
+ {
+ DefaultText = "Click to change",
+ OnValueChange = (entity) =>
+ {
+ UpdateProfile();
+ RefreshEmitterProfile();
+ }
+ };
+ _dropdownProfileCircleRadiation.AddItem(EnumEmitterCircleRadiation.In.ToString());
+ _dropdownProfileCircleRadiation.AddItem(EnumEmitterCircleRadiation.Out.ToString());
+ _dropdownProfileCircleRadiation.AddItem(EnumEmitterCircleRadiation.None.ToString());
+ tab.panel.AddChild(_dropdownProfileCircleRadiation);
+
+ tab.panel.AddChild(new Paragraph("Axis", Anchor.AutoInline, new Vector2(0.5f, -1), scale: FONT_SCALE));
+ _dropdownProfileAxis = new DropDown(new Vector2(0.5f, -1), anchor: Anchor.AutoInline)
+ {
+ DefaultText = "Click to change",
+ OnValueChange = (entity) =>
+ {
+ UpdateProfile();
+ RefreshEmitterProfile();
+ }
+ };
+ _dropdownProfileAxis.AddItem(EnumEmitterAxis.Up.ToString());
+ _dropdownProfileAxis.AddItem(EnumEmitterAxis.Down.ToString());
+ _dropdownProfileAxis.AddItem(EnumEmitterAxis.Left.ToString());
+ _dropdownProfileAxis.AddItem(EnumEmitterAxis.Right.ToString());
+ tab.panel.AddChild(_dropdownProfileAxis);
+
+ tab.panel.AddChild(new Paragraph("Length", Anchor.AutoInline, new Vector2(0.5f, -1), scale: FONT_SCALE));
+ _inputProfileLength = new TextInput(false, new Vector2(0.5f, -1f), anchor: Anchor.AutoInline);
+ _inputProfileLength.Validators.Add(new TextValidatorNumbersOnly(false, 0));
+ _inputProfileLength.Value = "1";
+ _inputProfileLength.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputProfileLength);
+
+ tab.panel.AddChild(new Paragraph("Spread", Anchor.AutoInline, new Vector2(0.5f, -1), scale: FONT_SCALE));
+ _inputProfileSpread = new TextInput(false, new Vector2(0.5f, -1f), anchor: Anchor.AutoInline);
+ _inputProfileSpread.Validators.Add(new TextValidatorNumbersOnly(false, 0));
+ _inputProfileSpread.Value = "1";
+ _inputProfileSpread.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputProfileSpread);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new Paragraph("Blend Mode", Anchor.AutoInline, new Vector2(0.5f, -1), scale: FONT_SCALE));
+ _dropdownBlendMode = new DropDown(new Vector2(0.5f, -1), anchor: Anchor.AutoInline)
+ {
+ DefaultText = "Click to change",
+ OnValueChange = (entity) =>
+ {
+ UpdateBlendMode();
+ }
+ };
+ _dropdownBlendMode.AddItem(EnumEmitterBlendMode.Add.ToString());
+ _dropdownBlendMode.AddItem(EnumEmitterBlendMode.Alpha.ToString());
+ _dropdownBlendMode.AddItem(EnumEmitterBlendMode.Subtract.ToString());
+ tab.panel.AddChild(_dropdownBlendMode);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new Paragraph("Reclaim Frequency", Anchor.AutoInline, new Vector2(0.5f, -1), scale: FONT_SCALE));
+ _inputReclaimFrequency = new TextInput(false, new Vector2(0.5f, -1f), anchor: Anchor.AutoInline);
+ _inputReclaimFrequency.Validators.Add(new TextValidatorNumbersOnly(false, 0));
+ _inputReclaimFrequency.Value = "1";
+ _inputReclaimFrequency.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputReclaimFrequency);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new Paragraph("Execution Strategy", Anchor.AutoInline, new Vector2(0.5f, -1), scale: FONT_SCALE));
+ _dropdownExecutionStrategy = new DropDown(new Vector2(0.5f, -1), anchor: Anchor.AutoInline)
+ {
+ DefaultText = "Click to change",
+ OnValueChange = (entity) =>
+ {
+ UpdateExecutionStrategy();
+ }
+ };
+ _dropdownExecutionStrategy.AddItem(EnumExecutionStrategy.Parallel.ToString());
+ _dropdownExecutionStrategy.AddItem(EnumExecutionStrategy.Serial.ToString());
+ tab.panel.AddChild(_dropdownExecutionStrategy);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new RichParagraph("{{GOLD}} Offset"));
+
+ tab.panel.AddChild(new Paragraph("X", Anchor.AutoInline, new Vector2(0.1f, -1), scale: FONT_SCALE));
+ _inputOffsetX = new TextInput(false, new Vector2(0.4f, -1f), anchor: Anchor.AutoInline);
+ _inputOffsetX.Validators.Add(new TextValidatorNumbersOnly(allowDecimal: true));
+ _inputOffsetX.Value = "1";
+ _inputOffsetX.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputOffsetX);
+
+ tab.panel.AddChild(new Paragraph("Y", Anchor.AutoInline, new Vector2(0.1f, -1), scale: FONT_SCALE));
+ _inputOffsetY = new TextInput(false, new Vector2(0.4f, -1f), anchor: Anchor.AutoInline);
+ _inputOffsetY.Validators.Add(new TextValidatorNumbersOnly(allowDecimal: true));
+ _inputOffsetY.Value = "1";
+ _inputOffsetY.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputOffsetY);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new RichParagraph("{{GOLD}} Color HSL"));
+
+ _parametersSliderColorH = new Slider(0, 360, SliderSkin.Default);
+ _parametersParagraphColorH = new Paragraph("HUE", scale: FONT_SCALE);
+ tab.panel.AddChild(_parametersParagraphColorH);
+ tab.panel.AddChild(_parametersSliderColorH);
+
+ _parametersSliderColorS = new Slider(0, 100, SliderSkin.Default);
+ _parametersParagraphColorS = new Paragraph("Saturation", scale: FONT_SCALE);
+ tab.panel.AddChild(_parametersParagraphColorS);
+ tab.panel.AddChild(_parametersSliderColorS);
+
+ _parametersSliderColorL = new Slider(0, 100, SliderSkin.Default);
+ _parametersParagraphColorL = new Paragraph("Lightness", scale: FONT_SCALE);
+ tab.panel.AddChild(_parametersParagraphColorL);
+ tab.panel.AddChild(_parametersSliderColorL);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _parametersSliderOpacity = new Slider(0, 100, SliderSkin.Default);
+ _parametersParagraphOpacity = new Paragraph("Opacity", scale: FONT_SCALE);
+ tab.panel.AddChild(_parametersParagraphOpacity);
+ tab.panel.AddChild(_parametersSliderOpacity);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new Paragraph("Quantity", Anchor.AutoInline, new Vector2(0.3f, -1), scale: FONT_SCALE));
+ _inputQuantity = new TextInput(false, new Vector2(0.7f, -1f), anchor: Anchor.AutoInline);
+ _inputQuantity.Validators.Add(new TextValidatorNumbersOnly(false, 0));
+ _inputQuantity.Value = "1";
+ _inputQuantity.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputQuantity);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new RichParagraph("{{GOLD}} Speed"));
+
+ tab.panel.AddChild(new Paragraph("Min", Anchor.AutoInline, new Vector2(0.2f, -1), scale: FONT_SCALE));
+ _inputSpeedMin = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputSpeedMin.Validators.Add(new TextValidatorNumbersOnly(true, 0));
+ _inputSpeedMin.Value = "1";
+ _inputSpeedMin.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputSpeedMin);
+
+ tab.panel.AddChild(new Paragraph("Max", Anchor.AutoInline, new Vector2(0.2f, -1), scale: FONT_SCALE));
+ _inputSpeedMax = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputSpeedMax.Validators.Add(new TextValidatorNumbersOnly(true, 0));
+ _inputSpeedMax.Value = "1";
+ _inputSpeedMax.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputSpeedMax);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new Paragraph("Scale", Anchor.AutoInline, new Vector2(0.3f, -1), scale: FONT_SCALE));
+ _inputScale = new TextInput(false, new Vector2(0.7f, -1f), anchor: Anchor.AutoInline);
+ _inputScale.Validators.Add(new TextValidatorNumbersOnly(true, 0));
+ _inputScale.Value = "1";
+ _inputScale.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputScale);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new RichParagraph("{{GOLD}} Rotation"));
+
+ tab.panel.AddChild(new Paragraph("Min", Anchor.AutoInline, new Vector2(0.2f, -1), scale: FONT_SCALE));
+ _inputRotationMin = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputRotationMin.Validators.Add(new TextValidatorNumbersOnly(allowDecimal: true));
+ _inputRotationMin.Value = "1";
+ _inputRotationMin.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputRotationMin);
+
+ tab.panel.AddChild(new Paragraph("Max", Anchor.AutoInline, new Vector2(0.2f, -1), scale: FONT_SCALE));
+ _inputRotationMax = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputRotationMax.Validators.Add(new TextValidatorNumbersOnly(allowDecimal: true));
+ _inputRotationMax.Value = "1";
+ _inputRotationMax.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputRotationMax);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ tab.panel.AddChild(new RichParagraph("{{GOLD}} Mass"));
+
+ tab.panel.AddChild(new Paragraph("Min", Anchor.AutoInline, new Vector2(0.2f, -1), scale: FONT_SCALE));
+ _inputMassMin = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputMassMin.Validators.Add(new TextValidatorNumbersOnly(true));
+ _inputMassMin.Value = "1";
+ _inputMassMin.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputMassMin);
+
+ tab.panel.AddChild(new Paragraph("Max", Anchor.AutoInline, new Vector2(0.2f, -1), scale: FONT_SCALE));
+ _inputMassMax = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputMassMax.Validators.Add(new TextValidatorNumbersOnly(true));
+ _inputMassMax.Value = "1";
+ _inputMassMax.ValueWhenEmpty = "1";
+ tab.panel.AddChild(_inputMassMax);
+ }
+
+ tab.panel.PanelOverflowBehavior = PanelOverflowBehavior.VerticalScroll;
+ tab.panel.Scrollbar.AdjustMaxAutomatically = true;
+ }
+
+ // add Modifiers panel
+ {
+ TabData tab = tabs.AddTab("Modifiers");
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierCircleContainer = new Modifiers.CircleContainer();
+ tab.panel.AddChild(_modifierCircleContainer.Panel);
+ }
+
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierColourInterpolator2 = new Modifiers.ColourInterpolator2();
+ tab.panel.AddChild(_modifierColourInterpolator2.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierDrag = new Drag();
+ tab.panel.AddChild(_modifierDrag.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierHueInterpolator2 = new Modifiers.HueInterpolator2();
+ tab.panel.AddChild(_modifierHueInterpolator2.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierLinearGravity = new Modifiers.LinearGravity();
+ tab.panel.AddChild(_modifierLinearGravity.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierOpacityFastFade = new Modifiers.OpacityFastFade();
+ tab.panel.AddChild(_modifierOpacityFastFade.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierOpacityInterpolator2 = new Modifiers.OpacityInterpolator2();
+ tab.panel.AddChild(_modifierOpacityInterpolator2.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierOpacityInterpolator3 = new Modifiers.OpacityInterpolator3();
+ tab.panel.AddChild(_modifierOpacityInterpolator3.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierRectContainer = new Modifiers.RectContainer();
+ tab.panel.AddChild(_modifierRectContainer.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierRectLoopContainer = new Modifiers.RectLoopContainer();
+ tab.panel.AddChild(_modifierRectLoopContainer.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierRotation = new Modifiers.Rotation();
+ tab.panel.AddChild(_modifierRotation.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierScaleInterpolator2 = new Modifiers.ScaleInterpolator2();
+ tab.panel.AddChild(_modifierScaleInterpolator2.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierVelocityColour = new Modifiers.VelocityColour();
+ tab.panel.AddChild(_modifierVelocityColour.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierVelocityColourInfinite = new Modifiers.VelocityColourInfinite();
+ tab.panel.AddChild(_modifierVelocityColourInfinite.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierVelocityHue = new Modifiers.VelocityHue();
+ tab.panel.AddChild(_modifierVelocityHue.Panel);
+ }
+
+ tab.panel.AddChild(new HorizontalLine());
+ {
+ _modifierVortex = new Modifiers.Vortex();
+ tab.panel.AddChild(_modifierVortex.Panel);
+ }
+
+ tab.panel.PanelOverflowBehavior = PanelOverflowBehavior.VerticalScroll;
+ tab.panel.Scrollbar.AdjustMaxAutomatically = true;
+ }
+ }
+ }
+
+ private void Export()
+ {
+ if (_graphics.IsFullScreen)
+ {
+ ToggleFullscreen();
+ _queueActionExport = true;
+ return;
+ }
+
+ _queueActionExport = false;
+ SaveFileDialog fileDialog = new SaveFileDialog
+ {
+ Title = "Save Particle",
+ Filter = "Particle (*.ptc;)|*.ptc;"
+ };
+
+ if (fileDialog.ShowDialog() == DialogResult.OK)
+ {
+ try
+ {
+ JsonHelper.WriteToJsonFile(fileDialog.FileName, _particleEffect);
+ _logger.Info("EXPORT: " + fileDialog.FileName);
+ }
+ catch (Exception e)
+ {
+ _logger.Error("EXPORT: " + e.Message);
+ }
+
+ foreach (KeyValuePair keyValue in _particleEffect.Emitters)
+ {
+ try
+ {
+ if (keyValue.Value.Texture.Name != null && !keyValue.Value.Texture.Name.Equals(""))
+ {
+
+ if (System.IO.File.Exists(Path.GetDirectoryName(fileDialog.FileName) + "\\" + Path.GetFileName(keyValue.Value.Texture.Name)))
+ {
+ _logger.Warning("EXPORT IGNORE IMG " + Path.GetDirectoryName(fileDialog.FileName) + "\\" + Path.GetFileName(keyValue.Value.Texture.Name));
+ }
+ else
+ {
+ File.Copy(
+ keyValue.Value.Texture.Name,
+ Path.GetDirectoryName(fileDialog.FileName) + "\\" + Path.GetFileName(keyValue.Value.Texture.Name),
+ true);
+
+ _logger.Info("EXPORT IMG " + Path.GetDirectoryName(fileDialog.FileName) + "\\" + Path.GetFileName(keyValue.Value.Texture.Name));
+ }
+ }
+ }
+ catch (DirectoryNotFoundException dirNotFound)
+ {
+ _logger.Error(dirNotFound.Message);
+ }
+ catch (IOException ioEx)
+ {
+ _logger.Error(ioEx.Message);
+ }
+ }
+ }
+ }
+
+ private void EmitterToSquare()
+ {
+ Texture2D Texture = new Texture2D(GraphicsDevice, 1, 1);
+
+ _particleEffect.Emitters[_currentEmitter].Texture = Texture;
+ _particleEffect.Emitters[_currentEmitter].Texture.SetData(new[] { Color.White });
+ }
+
+ private void LoadImage()
+ {
+ OpenFileDialog fileDialog = new OpenFileDialog();
+
+ fileDialog.Title = "Load Image";
+ fileDialog.Filter = "PNG (*.png;)|*.png;" +
+ "|jpg (*.jpg;)|*.jpg;" +
+ "|XNB (*.xnb;)|*.xnb;" +
+ "|All Files (*.*)|*.*";
+
+ if (fileDialog.ShowDialog() == DialogResult.OK)
+ {
+ if (fileDialog.FileName.Contains(".xnb"))
+ {
+ LoadImageXNB(fileDialog.FileName);
+ }
+ else
+ {
+ LoadImageNormal(fileDialog.FileName);
+ }
+
+ if (_particleEffect.Emitters[_currentEmitter].Texture.Width > _particleEffect.Emitters[_currentEmitter].Texture.Height)
+ {
+ _inputScale.Value = _particleEffect.Emitters[_currentEmitter].Texture.Width.ToString();
+ }
+ else
+ {
+ _inputScale.Value = _particleEffect.Emitters[_currentEmitter].Texture.Height.ToString();
+ }
+ _paragraphImageName.Text = "name:" + Path.GetFileName(fileDialog.FileName);
+ }
+ else
+ {
+ _textureRadioImage.Checked = false;
+ _textureRadioSquare.Checked = true;
+ }
+ }
+
+ private void LoadImageNormal(string fileName)
+ {
+ FileStream fileStream = new FileStream(fileName, FileMode.Open);
+ Texture2D spriteAtlas = Texture2D.FromStream(GraphicsDevice, fileStream);
+ spriteAtlas.Name = fileName;
+ fileStream.Dispose();
+ _particleEffect.Emitters[_currentEmitter].Texture = spriteAtlas;
+ _particleEffect.Emitters[_currentEmitter].Texture.Name = fileName;
+ _parametersSliderColorL.Value = 100;
+ }
+
+ private void LoadImageXNB(string fileName)
+ {
+ _particleEffect.Emitters[_currentEmitter].Texture = Content.Load(fileName.Replace(".xnb", ""));
+ }
+
+ private void Load()
+ {
+ if (_graphics.IsFullScreen)
+ {
+ ToggleFullscreen();
+ _queueActionLoad = true;
+ return;
+ }
+
+ _queueActionLoad = false;
+
+ OpenFileDialog fileDialog = new OpenFileDialog
+ {
+ Title = "Load particle",
+ Filter = "Particle (*.ptc;)|*.ptc;" +
+ "|All Files (*.*)|*.*"
+ };
+
+ if (fileDialog.ShowDialog() == DialogResult.OK)
+ {
+ //Remove all items from dropdown
+ _dropdownEmitter.SelectedIndex = -1;
+ int countDropdown = _dropdownEmitter.Count;
+ for (int i = 0; i < countDropdown; i++)
+ {
+ _dropdownEmitter.RemoveItem(0);
+ }
+
+ ParticleEffect pe = ParticleEffect.ReadFromJsonFile(fileDialog.FileName, GraphicsDevice, Content);
+
+ //Add new items at dropdown
+ foreach (var item in pe.Emitters)
+ {
+ _dropdownEmitter.AddItem(item.Key);
+ }
+ _dropdownEmitter.AddItem("Add new");
+ _dropdownEmitter.SelectedIndex = 0;
+ _currentEmitter = _dropdownEmitter.SelectedValue;
+
+ if (_dropdownEmitter.Count > 2)
+ {
+ _buttonRemoveEmitter.Enabled = true;
+ }
+ else
+ {
+ _buttonRemoveEmitter.Enabled = false;
+ }
+
+ foreach (var item in pe.Emitters)
+ {
+ if (string.IsNullOrEmpty(item.Value.TexturePath))
+ {
+ item.Value.Texture = new Texture2D(GraphicsDevice, 1, 1);
+ item.Value.Texture.SetData(new[] { Color.White });
+ }
+ }
+
+ _particleEffect = pe;
+
+ _inputProfileHeight.Value = _particleEffect.Emitters[_currentEmitter].Profile.Height.ToString();
+ _inputProfileWidth.Value = _particleEffect.Emitters[_currentEmitter].Profile.Width.ToString();
+ _inputProfileLength.Value = _particleEffect.Emitters[_currentEmitter].Profile.Length.ToString();
+ _inputProfileSpread.Value = _particleEffect.Emitters[_currentEmitter].Profile.Spread.ToString();
+ _inputProfileRadius.Value = _particleEffect.Emitters[_currentEmitter].Profile.Radius.ToString();
+
+ RefreshEmitter();
+
+ if (_particleEffect.Emitters[_currentEmitter].TexturePath.Equals(""))
+ {
+ _textureRadioSquare.Checked = true;
+ }
+ else
+ {
+ _textureRadioImage.Checked = true;
+ _paragraphImageName.Text = "name:" + Path.GetFileName(_particleEffect.Emitters[_currentEmitter].TexturePath);
+ }
+
+ _logger.Info("LOAD " + Path.GetDirectoryName(fileDialog.FileName));
+ }
+ }
+
+ private void AddEmitter(string Name)
+ {
+ _particleEffect.Emitters.Add(Name,
+ new Emitter(100, TimeSpan.FromMilliseconds(1000f), Profile.Point())
+ {
+ Texture = new Texture2D(GraphicsDevice, 1, 1),
+ BlendMode = BlendMode.Alpha,
+ ReclaimFrequency = 1f,
+ ForceLoop = true,
+ ModifierExecutionStrategy = ModifierExecutionStrategy.Serial(),
+ Offset = Vector.Zero,
+ Parameters = new ReleaseParameters
+ {
+ Colour = new Colour(0, .5f, .5f),
+ Opacity = 1f,
+ Quantity = 1,
+ Speed = 1.1f,
+ Scale = 10f,
+ Rotation = 0f,
+ Mass = 1.1f
+ },
+ SpriteEffects = SpriteEffects.None,
+ LayerDepth = 0
+ });
+
+ _particleEffect.Emitters[Name].Texture.SetData(new[] { Color.White });
+
+ _dropdownEmitter.RemoveItem("Add new");
+ _dropdownEmitter.AddItem(Name);
+ _dropdownEmitter.AddItem("Add new");
+ _dropdownEmitter.SelectedIndex = _dropdownEmitter.Count - 2;
+ _currentEmitter = _dropdownEmitter.SelectedValue;
+
+ _textureRadioSquare.Checked = true;
+ _textureRadioImage.Checked = false;
+
+ if (!Name.Equals(EMITTER_PRINCIPAL_NAME))
+ _logger.Info("add emitter => " + Name + " at pos " + (_particleEffect.Emitters.Count - 1));
+ }
+
+ private void UpdateKeyboard()
+ {
+ if (_keyboardHelper.IsNewKeyRelease(Microsoft.Xna.Framework.Input.Keys.F9))
+ {
+ _moveCursorMode = !_moveCursorMode;
+ }
+
+ if (_keyboardHelper.IsNewKeyRelease(Microsoft.Xna.Framework.Input.Keys.F10))
+ {
+ if (_currentClearColor == Color.White)
+ {
+ _currentClearColor = Color.CornflowerBlue;
+ return;
+ }
+ if (_currentClearColor == Color.Black)
+ _currentClearColor = Color.White;
+ if (_currentClearColor == Color.CornflowerBlue)
+ _currentClearColor = Color.Black;
+ }
+
+ if (_keyboardHelper.IsNewKeyRelease(Microsoft.Xna.Framework.Input.Keys.F11))
+ {
+ ToggleFullscreen();
+ }
+
+ if (_keyboardHelper.IsNewKeyRelease(Microsoft.Xna.Framework.Input.Keys.F12))
+ {
+ _logger.Active = !_logger.Active;
+ }
+ }
+
+ private void ToggleFullscreen()
+ {
+ _graphics.IsFullScreen = !_graphics.IsFullScreen;
+ if (_graphics.IsFullScreen)
+ {
+ _panelEditor.Size = GlobalFields.PANEL_EDITOR_SIZE_FULLSCREEN;
+ }
+ else
+ {
+ _panelEditor.Size = GlobalFields.PANEL_EDITOR_SIZE;
+ }
+
+ _graphics.ApplyChanges();
+ }
+
+ private void UpdateBlendMode()
+ {
+ if (_particleEffect.Emitters[_currentEmitter].BlendMode.ToString() != _dropdownBlendMode.SelectedValue)
+ {
+ switch (_dropdownBlendMode.SelectedValue)
+ {
+ case nameof(EnumEmitterBlendMode.Add):
+ _particleEffect.Emitters[_currentEmitter].BlendMode = BlendMode.Add;
+ break;
+ case nameof(EnumEmitterBlendMode.Alpha):
+ _particleEffect.Emitters[_currentEmitter].BlendMode = BlendMode.Alpha;
+ break;
+ case nameof(EnumEmitterBlendMode.Subtract):
+ _particleEffect.Emitters[_currentEmitter].BlendMode = BlendMode.Subtract;
+ break;
+ }
+ }
+ }
+
+ private void UpdateExecutionStrategy()
+ {
+ if (_particleEffect.Emitters[_currentEmitter].ModifierExecutionStrategy.ToString() != _dropdownExecutionStrategy.SelectedValue)
+ {
+ switch (_dropdownExecutionStrategy.SelectedValue)
+ {
+ case nameof(EnumExecutionStrategy.Parallel):
+ _particleEffect.Emitters[_currentEmitter].ModifierExecutionStrategy = ModifierExecutionStrategy.Parallel();
+ break;
+ case nameof(EnumExecutionStrategy.Serial):
+ _particleEffect.Emitters[_currentEmitter].ModifierExecutionStrategy = ModifierExecutionStrategy.Serial();
+ break;
+ }
+ }
+ }
+
+ private void UpdateOffset()
+ {
+ Vector newOffset = Vector.Zero;
+
+ if (_inputOffsetX.Value != null && !_inputOffsetX.Value.Equals("") && !_inputOffsetX.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].Offset.X != float.Parse(_inputOffsetX.Value.Replace(".", ",")))
+ newOffset.X = float.Parse(_inputOffsetX.Value.Replace(".", ","));
+
+ if (_inputOffsetY.Value != null && !_inputOffsetY.Value.Equals("") && !_inputOffsetY.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].Offset.Y != float.Parse(_inputOffsetY.Value.Replace(".", ",")))
+ newOffset.Y = float.Parse(_inputOffsetY.Value.Replace(".", ","));
+
+ if (newOffset.X != _particleEffect.Emitters[_currentEmitter].Offset.X
+ || newOffset.Y != _particleEffect.Emitters[_currentEmitter].Offset.Y)
+ {
+ _particleEffect.Emitters[_currentEmitter].Offset = newOffset;
+ }
+ }
+
+ private void UpdateProfile()
+ {
+ string name = _particleEffect.Emitters[_currentEmitter].Profile.ToString();
+
+ switch (_dropdownProfile.SelectedValue)
+ {
+ case nameof(EnumEmitterProfiles.BoxFillProfile):
+ if (name.Equals(_dropdownProfile.SelectedValue))
+ {
+ if (_inputProfileWidth.Value != null && !_inputProfileWidth.Value.Equals("") && !_inputProfileWidth.Value.Equals("-")
+ && ((BoxFillProfile)_particleEffect.Emitters[_currentEmitter].Profile).Width != float.Parse(_inputProfileWidth.Value.Replace(".", ",")))
+ { ((BoxFillProfile)_particleEffect.Emitters[_currentEmitter].Profile).Width = float.Parse(_inputProfileWidth.Value.Replace(".", ",")); }
+
+ if (_inputProfileHeight.Value != null && !_inputProfileHeight.Value.Equals("") && !_inputProfileHeight.Value.Equals("-")
+ && ((BoxFillProfile)_particleEffect.Emitters[_currentEmitter].Profile).Height != float.Parse(_inputProfileHeight.Value.Replace(".", ",")))
+ { ((BoxFillProfile)_particleEffect.Emitters[_currentEmitter].Profile).Height = float.Parse(_inputProfileHeight.Value.Replace(".", ",")); }
+ }
+ else
+ _particleEffect.Emitters[_currentEmitter].Profile = Profile.BoxFill(
+ _particleEffect.Emitters[_currentEmitter].Profile.Width, _particleEffect.Emitters[_currentEmitter].Profile.Height);
+ break;
+ case nameof(EnumEmitterProfiles.BoxProfile):
+ if (name.Equals(_dropdownProfile.SelectedValue))
+ {
+ if (_inputProfileWidth.Value != null && !_inputProfileWidth.Value.Equals("") && !_inputProfileWidth.Value.Equals("-")
+ && ((BoxProfile)_particleEffect.Emitters[_currentEmitter].Profile).Width != float.Parse(_inputProfileWidth.Value.Replace(".", ",")))
+ { ((BoxProfile)_particleEffect.Emitters[_currentEmitter].Profile).Width = float.Parse(_inputProfileWidth.Value.Replace(".", ",")); }
+
+ if (_inputProfileHeight.Value != null && !_inputProfileHeight.Value.Equals("") && !_inputProfileHeight.Value.Equals("-")
+ && ((BoxProfile)_particleEffect.Emitters[_currentEmitter].Profile).Height != float.Parse(_inputProfileHeight.Value.Replace(".", ",")))
+ { ((BoxProfile)_particleEffect.Emitters[_currentEmitter].Profile).Height = float.Parse(_inputProfileHeight.Value.Replace(".", ",")); }
+ }
+ else
+ _particleEffect.Emitters[_currentEmitter].Profile = Profile.Box(100, 100);
+ break;
+ case nameof(EnumEmitterProfiles.BoxUniformProfile):
+ if (name.Equals(_dropdownProfile.SelectedValue))
+ {
+ if (_inputProfileWidth.Value != null && !_inputProfileWidth.Value.Equals("") && !_inputProfileWidth.Value.Equals("-")
+ && ((BoxUniformProfile)_particleEffect.Emitters[_currentEmitter].Profile).Width != float.Parse(_inputProfileWidth.Value.Replace(".", ",")))
+ { ((BoxUniformProfile)_particleEffect.Emitters[_currentEmitter].Profile).Width = float.Parse(_inputProfileWidth.Value.Replace(".", ",")); }
+
+ if (_inputProfileHeight.Value != null && !_inputProfileHeight.Value.Equals("") && !_inputProfileHeight.Value.Equals("-")
+ && ((BoxUniformProfile)_particleEffect.Emitters[_currentEmitter].Profile).Height != float.Parse(_inputProfileHeight.Value.Replace(".", ",")))
+ { ((BoxUniformProfile)_particleEffect.Emitters[_currentEmitter].Profile).Height = float.Parse(_inputProfileHeight.Value.Replace(".", ",")); }
+ }
+ else
+ _particleEffect.Emitters[_currentEmitter].Profile = Profile.BoxUniform(100, 100);
+ break;
+ case nameof(EnumEmitterProfiles.CircleProfile):
+ if (name.Equals(_dropdownProfile.SelectedValue))
+ {
+ if (_inputProfileRadius.Value != null && !_inputProfileRadius.Value.Equals("") && !_inputProfileRadius.Value.Equals("-")
+ && ((CircleProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radius != float.Parse(_inputProfileRadius.Value.Replace(".", ",")))
+ {
+ ((CircleProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radius = float.Parse(_inputProfileRadius.Value.Replace(".", ","));
+ }
+
+ if (((CircleProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radiate.ToString() != _dropdownProfileCircleRadiation.SelectedValue)
+ {
+ switch (_dropdownProfileCircleRadiation.SelectedValue)
+ {
+ case nameof(EnumEmitterCircleRadiation.In):
+ ((CircleProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radiate = CircleProfile.CircleRadiation.In;
+ break;
+ case nameof(EnumEmitterCircleRadiation.Out):
+ ((CircleProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radiate = CircleProfile.CircleRadiation.Out;
+ break;
+ case nameof(EnumEmitterCircleRadiation.None):
+ ((CircleProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radiate = CircleProfile.CircleRadiation.None;
+ break;
+ }
+ }
+ }
+ else
+ _particleEffect.Emitters[_currentEmitter].Profile = Profile.Circle(_particleEffect.Emitters[_currentEmitter].Profile.Radius, _particleEffect.Emitters[_currentEmitter].Profile.Radiate);
+ break;
+ case nameof(EnumEmitterProfiles.LineProfile):
+ if (name.Equals(_dropdownProfile.SelectedValue))
+ {
+ if (_inputProfileLength.Value != null && !_inputProfileLength.Value.Equals("") && !_inputProfileLength.Value.Equals("-")
+ && ((LineProfile)_particleEffect.Emitters[_currentEmitter].Profile).Length != float.Parse(_inputProfileLength.Value.Replace(".", ",")))
+ {
+ ((LineProfile)_particleEffect.Emitters[_currentEmitter].Profile).Length = float.Parse(_inputProfileLength.Value.Replace(".", ","));
+ }
+
+ switch (_dropdownProfileAxis.SelectedValue)
+ {
+ case nameof(EnumEmitterAxis.Up):
+ if (((LineProfile)_particleEffect.Emitters[_currentEmitter].Profile).Axis != Axis.Up)
+ {
+ ((LineProfile)_particleEffect.Emitters[_currentEmitter].Profile).Axis = Axis.Up;
+ }
+ break;
+ case nameof(EnumEmitterAxis.Down):
+ if (((LineProfile)_particleEffect.Emitters[_currentEmitter].Profile).Axis != Axis.Down)
+ {
+ ((LineProfile)_particleEffect.Emitters[_currentEmitter].Profile).Axis = Axis.Down;
+ }
+ break;
+ case nameof(EnumEmitterAxis.Left):
+ if (((LineProfile)_particleEffect.Emitters[_currentEmitter].Profile).Axis != Axis.Left)
+ {
+ ((LineProfile)_particleEffect.Emitters[_currentEmitter].Profile).Axis = Axis.Left;
+ }
+ break;
+ case nameof(EnumEmitterAxis.Right):
+ if (((LineProfile)_particleEffect.Emitters[_currentEmitter].Profile).Axis != Axis.Right)
+ {
+ ((LineProfile)_particleEffect.Emitters[_currentEmitter].Profile).Axis = Axis.Right;
+ }
+ break;
+ }
+ }
+ else
+ {
+ _particleEffect.Emitters[_currentEmitter].Profile = Profile.Line(Axis.Down, 100);
+ }
+ break;
+ case nameof(EnumEmitterProfiles.PointProfile):
+ _particleEffect.Emitters[_currentEmitter].Profile = Profile.Point();
+ break;
+ case nameof(EnumEmitterProfiles.RingProfile):
+ if (name.Equals(_dropdownProfile.SelectedValue))
+ {
+ if (_inputProfileRadius.Value != null && !_inputProfileRadius.Value.Equals("") && !_inputProfileRadius.Value.Equals("-")
+ && ((RingProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radius != float.Parse(_inputProfileRadius.Value.Replace(".", ",")))
+ {
+ ((RingProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radius = float.Parse(_inputProfileRadius.Value.Replace(".", ","));
+ }
+
+ if (((RingProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radiate.ToString() != _dropdownProfileCircleRadiation.SelectedValue)
+ {
+ switch (_dropdownProfileCircleRadiation.SelectedValue)
+ {
+ case nameof(EnumEmitterCircleRadiation.In):
+ ((RingProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radiate = CircleProfile.CircleRadiation.In;
+ break;
+ case nameof(EnumEmitterCircleRadiation.Out):
+ ((RingProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radiate = CircleProfile.CircleRadiation.Out;
+ break;
+ case nameof(EnumEmitterCircleRadiation.None):
+ ((RingProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radiate = CircleProfile.CircleRadiation.None;
+ break;
+ }
+ }
+ }
+ else
+ {
+ _particleEffect.Emitters[_currentEmitter].Profile = Profile.Ring(100, CircleRadiation.In);
+ }
+ break;
+ case nameof(EnumEmitterProfiles.SprayProfile):
+ if (name.Equals(_dropdownProfile.SelectedValue))
+ {
+ if (_inputProfileSpread.Value != null && !_inputProfileSpread.Value.Equals("") && !_inputProfileSpread.Value.Equals("-")
+ && ((SprayProfile)_particleEffect.Emitters[_currentEmitter].Profile).Spread != float.Parse(_inputProfileSpread.Value.Replace(".", ",")))
+ {
+ ((SprayProfile)_particleEffect.Emitters[_currentEmitter].Profile).Spread = float.Parse(_inputProfileSpread.Value.Replace(".", ","));
+ }
+
+ switch (_dropdownProfileAxis.SelectedValue)
+ {
+ case nameof(EnumEmitterAxis.Up):
+ if (((SprayProfile)_particleEffect.Emitters[_currentEmitter].Profile).Direction != Axis.Up)
+ {
+ ((SprayProfile)_particleEffect.Emitters[_currentEmitter].Profile).Direction = Axis.Up;
+ }
+ break;
+ case nameof(EnumEmitterAxis.Down):
+ if (((SprayProfile)_particleEffect.Emitters[_currentEmitter].Profile).Direction != Axis.Down)
+ {
+ ((SprayProfile)_particleEffect.Emitters[_currentEmitter].Profile).Direction = Axis.Down;
+ }
+ break;
+ case nameof(EnumEmitterAxis.Left):
+ if (((SprayProfile)_particleEffect.Emitters[_currentEmitter].Profile).Direction != Axis.Left)
+ {
+ ((SprayProfile)_particleEffect.Emitters[_currentEmitter].Profile).Direction = Axis.Left;
+ }
+ break;
+ case nameof(EnumEmitterAxis.Right):
+ if (((SprayProfile)_particleEffect.Emitters[_currentEmitter].Profile).Direction != Axis.Right)
+ {
+ ((SprayProfile)_particleEffect.Emitters[_currentEmitter].Profile).Direction = Axis.Right;
+ }
+ break;
+ }
+ }
+ else
+ {
+ _particleEffect.Emitters[_currentEmitter].Profile = Profile.Spray(Axis.Down, 100);
+ }
+ break;
+ }
+ }
+
+ private void UpdateReclaimFrequency()
+ {
+ if (_inputReclaimFrequency.Value != null && !_inputReclaimFrequency.Value.Equals("") && !_inputReclaimFrequency.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].ReclaimFrequency != float.Parse(_inputReclaimFrequency.Value.Replace(".", ",")))
+ _particleEffect.Emitters[_currentEmitter].ReclaimFrequency = float.Parse(_inputReclaimFrequency.Value.Replace(".", ","));
+ }
+
+ private void UpdateTimeMilleseconds()
+ {
+ if (_inputTimeMilleseconds.Value != null && !_inputTimeMilleseconds.Value.Equals("") && !_inputTimeMilleseconds.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].Term.TotalMilliseconds != int.Parse(_inputTimeMilleseconds.Value))
+ _particleEffect.Emitters[_currentEmitter].Term = TimeSpan.FromMilliseconds(double.Parse(_inputTimeMilleseconds.Value));
+ }
+
+ private void UpdateCapacity()
+ {
+ if (_inputCapacity.Value != null && !_inputCapacity.Value.Equals("") && !_inputCapacity.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].Capacity != int.Parse(_inputCapacity.Value))
+ _particleEffect.Emitters[_currentEmitter].Capacity = int.Parse(_inputCapacity.Value);
+ }
+
+ private void UpdateColor()
+ {
+ _parametersParagraphColorH.Text = "HUE " + _parametersSliderColorH.Value;
+ _parametersParagraphColorS.Text = "Saturation " + _parametersSliderColorS.Value + "%";
+ _parametersParagraphColorL.Text = "Lightness " + _parametersSliderColorL.Value + "%";
+
+ _particleEffect.Emitters[_currentEmitter].Parameters.Colour = new VenusParticleEngine.Core.Colour(
+ _parametersSliderColorH.Value,
+ (float)_parametersSliderColorS.Value / 100,
+ (float)_parametersSliderColorL.Value / 100);
+ }
+
+ private void UpdateOpacity()
+ {
+ _parametersParagraphOpacity.Text = "Opacity " + _parametersSliderOpacity.Value + "%";
+ _particleEffect.Emitters[_currentEmitter].Parameters.Opacity = (float)_parametersSliderOpacity.Value / 100;
+ }
+
+ private void UpdateQuantity()
+ {
+ if (_inputQuantity.Value != null && !_inputQuantity.Value.Equals("") && !_inputQuantity.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].Parameters.Quantity != int.Parse(_inputQuantity.Value))
+ {
+ _particleEffect.Emitters[_currentEmitter].Parameters.Quantity = int.Parse(_inputQuantity.Value);
+ }
+
+ }
+
+ private void UpdateSpeed()
+ {
+ float min = _particleEffect.Emitters[_currentEmitter].Parameters.Speed.Min;
+ float max = _particleEffect.Emitters[_currentEmitter].Parameters.Speed.Max;
+
+ if (_inputSpeedMin.Value != null && !_inputSpeedMin.Value.Equals("") && !_inputSpeedMin.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].Parameters.Speed.Min != float.Parse(_inputSpeedMin.Value.Replace(".", ",")))
+ {
+ min = float.Parse(_inputSpeedMin.Value.Replace(".", ","));
+ }
+
+ if (_inputSpeedMax.Value != null && !_inputSpeedMax.Value.Equals("") && !_inputSpeedMax.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].Parameters.Speed.Max != float.Parse(_inputSpeedMax.Value.Replace(".", ",")))
+ {
+ max = float.Parse(_inputSpeedMax.Value.Replace(".", ","));
+ }
+
+ _particleEffect.Emitters[_currentEmitter].Parameters.Speed = new RangeF(min, max);
+ }
+
+ private void UpdateScale()
+ {
+ if (_inputScale.Value != null && !_inputScale.Value.Equals("") && !_inputScale.Value.Equals("-"))
+ _particleEffect.Emitters[_currentEmitter].Parameters.Scale = float.Parse(_inputScale.Value.Replace(".", ","));
+ }
+
+ private void UpdateRotation()
+ {
+ float min = _particleEffect.Emitters[_currentEmitter].Parameters.Rotation.Min;
+ float max = _particleEffect.Emitters[_currentEmitter].Parameters.Rotation.Max;
+
+ if (_inputRotationMin.Value != null && !_inputRotationMin.Value.Equals("") && !_inputRotationMin.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].Parameters.Rotation.Min != float.Parse(_inputRotationMin.Value.Replace(".", ",")))
+ {
+ min = float.Parse(_inputRotationMin.Value.Replace(".", ","));
+ }
+
+ if (_inputRotationMax.Value != null && !_inputRotationMax.Value.Equals("") && !_inputRotationMax.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].Parameters.Rotation.Max != float.Parse(_inputRotationMax.Value.Replace(".", ",")))
+ {
+ max = float.Parse(_inputRotationMax.Value.Replace(".", ","));
+ }
+
+ _particleEffect.Emitters[_currentEmitter].Parameters.Rotation = new RangeF(min, max);
+ }
+
+ private void UpdateMass()
+ {
+ float min = _particleEffect.Emitters[_currentEmitter].Parameters.Mass.Min;
+ float max = _particleEffect.Emitters[_currentEmitter].Parameters.Mass.Max;
+
+ if (_inputMassMin.Value != null && !_inputMassMin.Value.Equals("") && !_inputMassMin.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].Parameters.Rotation.Min != float.Parse(_inputMassMin.Value.Replace(".", ",")))
+ {
+ min = float.Parse(_inputMassMin.Value.Replace(".", ","));
+ }
+
+ if (_inputMassMax.Value != null && !_inputMassMax.Value.Equals("") && !_inputMassMax.Value.Equals("-")
+ && _particleEffect.Emitters[_currentEmitter].Parameters.Rotation.Max != float.Parse(_inputMassMax.Value.Replace(".", ",")))
+ {
+ max = float.Parse(_inputMassMax.Value.Replace(".", ","));
+ }
+
+ _particleEffect.Emitters[_currentEmitter].Parameters.Mass = new RangeF(min, max);
+ }
+
+ private void UpdateDropdownProfileAxisFromParticle()
+ {
+ if ((_particleEffect.Emitters[_currentEmitter].Profile).Axis == Axis.Up)
+ {
+ _dropdownProfileAxis.SelectedValue = "Up";
+ }
+ else if ((_particleEffect.Emitters[_currentEmitter].Profile).Axis == Axis.Down)
+ {
+ _dropdownProfileAxis.SelectedValue = "Down";
+ }
+ else if ((_particleEffect.Emitters[_currentEmitter].Profile).Axis == Axis.Left)
+ {
+ _dropdownProfileAxis.SelectedValue = "Left";
+ }
+ else if ((_particleEffect.Emitters[_currentEmitter].Profile).Axis == Axis.Right)
+ {
+ _dropdownProfileAxis.SelectedValue = "Right";
+ }
+ }
+ private void UpdateDropdownProfileDirectionFromParticle()
+ {
+ if ((_particleEffect.Emitters[_currentEmitter].Profile).Direction == Axis.Up)
+ {
+ _dropdownProfileAxis.SelectedValue = "Up";
+ }
+ else if ((_particleEffect.Emitters[_currentEmitter].Profile).Direction == Axis.Down)
+ {
+ _dropdownProfileAxis.SelectedValue = "Down";
+ }
+ else if ((_particleEffect.Emitters[_currentEmitter].Profile).Direction == Axis.Left)
+ {
+ _dropdownProfileAxis.SelectedValue = "Left";
+ }
+ else if ((_particleEffect.Emitters[_currentEmitter].Profile).Direction == Axis.Right)
+ {
+ _dropdownProfileAxis.SelectedValue = "Right";
+ }
+ }
+
+ private void RefreshEmitterProfile()
+ {
+ _inputProfileWidth.Enabled = false;
+ _inputProfileHeight.Enabled = false;
+ _inputProfileRadius.Enabled = false;
+ _dropdownProfileCircleRadiation.Enabled = false;
+ _dropdownProfileAxis.Enabled = false;
+ _inputProfileLength.Enabled = false;
+ _inputProfileSpread.Enabled = false;
+
+ switch (_dropdownProfile.SelectedValue)
+ {
+ case nameof(EnumEmitterProfiles.BoxProfile):
+ _inputProfileWidth.Enabled = true;
+ _inputProfileHeight.Enabled = true;
+
+ _inputProfileHeight.Value = ((BoxProfile)_particleEffect.Emitters[_currentEmitter].Profile).Height.ToString();
+ _inputProfileWidth.Value = ((BoxProfile)_particleEffect.Emitters[_currentEmitter].Profile).Width.ToString();
+ break;
+ case nameof(EnumEmitterProfiles.BoxFillProfile):
+ _inputProfileWidth.Enabled = true;
+ _inputProfileHeight.Enabled = true;
+
+ _inputProfileHeight.Value = ((BoxFillProfile)_particleEffect.Emitters[_currentEmitter].Profile).Height.ToString();
+ _inputProfileWidth.Value = ((BoxFillProfile)_particleEffect.Emitters[_currentEmitter].Profile).Width.ToString();
+ break;
+ case nameof(EnumEmitterProfiles.BoxUniformProfile):
+ _inputProfileWidth.Enabled = true;
+ _inputProfileHeight.Enabled = true;
+
+ _inputProfileHeight.Value = ((BoxUniformProfile)_particleEffect.Emitters[_currentEmitter].Profile).Height.ToString();
+ _inputProfileWidth.Value = ((BoxUniformProfile)_particleEffect.Emitters[_currentEmitter].Profile).Width.ToString();
+ break;
+ case nameof(EnumEmitterProfiles.CircleProfile):
+ _inputProfileRadius.Enabled = true;
+ _dropdownProfileCircleRadiation.Enabled = true;
+ _inputProfileRadius.Value = ((CircleProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radius.ToString();
+ _dropdownProfileCircleRadiation.SelectedValue = ((CircleProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radiate.ToString();
+ break;
+ case nameof(EnumEmitterProfiles.LineProfile):
+ _dropdownProfileAxis.Enabled = true;
+ _inputProfileLength.Enabled = true;
+
+ _inputProfileLength.Value = ((LineProfile)_particleEffect.Emitters[_currentEmitter].Profile).Length.ToString();
+
+ UpdateDropdownProfileAxisFromParticle();
+ break;
+ case nameof(EnumEmitterProfiles.PointProfile):
+ break;
+ case nameof(EnumEmitterProfiles.RingProfile):
+ _inputProfileRadius.Enabled = true;
+ _dropdownProfileCircleRadiation.Enabled = true;
+
+ _inputProfileRadius.Value = ((RingProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radius.ToString();
+ _dropdownProfileCircleRadiation.SelectedValue = ((RingProfile)_particleEffect.Emitters[_currentEmitter].Profile).Radiate.ToString();
+ break;
+ case nameof(EnumEmitterProfiles.SprayProfile):
+ _dropdownProfileAxis.Enabled = true;
+ _inputProfileSpread.Enabled = true;
+
+ _inputProfileSpread.Value = ((SprayProfile)_particleEffect.Emitters[_currentEmitter].Profile).Spread.ToString();
+
+ UpdateDropdownProfileDirectionFromParticle();
+ break;
+ }
+ }
+
+ private void RefreshEmitter()
+ {
+ if (_particleEffect.Emitters.Count < 1 || _currentEmitter == null) return;
+ if (!_particleEffect.Emitters.ContainsKey(_currentEmitter)) return;
+
+ _parametersSliderColorH.Value = (int)_particleEffect.Emitters[_currentEmitter].Parameters.Colour.Min.H;
+ _parametersSliderColorS.Value = ((int)(_particleEffect.Emitters[_currentEmitter].Parameters.Colour.Min.S * 100));
+ _parametersSliderColorL.Value = ((int)(_particleEffect.Emitters[_currentEmitter].Parameters.Colour.Min.L * 100));
+ _parametersSliderOpacity.Value = ((int)(_particleEffect.Emitters[_currentEmitter].Parameters.Opacity.Min * 100));
+
+ _inputCapacity.Value = _particleEffect.Emitters[_currentEmitter].Capacity.ToString();
+ _inputTimeMilleseconds.Value = _particleEffect.Emitters[_currentEmitter].Term.TotalMilliseconds.ToString();
+ _dropdownProfile.SelectedValue = _particleEffect.Emitters[_currentEmitter].Profile.ToString();
+ RefreshEmitterProfile();
+ _dropdownBlendMode.SelectedValue = _particleEffect.Emitters[_currentEmitter].BlendMode.ToString();
+ _inputReclaimFrequency.Value = _particleEffect.Emitters[_currentEmitter].ReclaimFrequency.ToString();
+ _dropdownExecutionStrategy.SelectedValue = _particleEffect.Emitters[_currentEmitter].ModifierExecutionStrategy.ToString();
+ _inputOffsetX.Value = _particleEffect.Emitters[_currentEmitter].Offset.X.ToString();
+ _inputOffsetY.Value = _particleEffect.Emitters[_currentEmitter].Offset.Y.ToString();
+ _inputQuantity.Value = _particleEffect.Emitters[_currentEmitter].Parameters.Quantity.Min.ToString();
+ _inputSpeedMin.Value = _particleEffect.Emitters[_currentEmitter].Parameters.Speed.Min.ToString();
+ _inputSpeedMax.Value = _particleEffect.Emitters[_currentEmitter].Parameters.Speed.Max.ToString();
+ _inputScale.Value = _particleEffect.Emitters[_currentEmitter].Parameters.Scale.Min.ToString();
+ _inputRotationMin.Value = _particleEffect.Emitters[_currentEmitter].Parameters.Rotation.Min.ToString();
+ _inputRotationMax.Value = _particleEffect.Emitters[_currentEmitter].Parameters.Rotation.Max.ToString();
+ _inputMassMin.Value = _particleEffect.Emitters[_currentEmitter].Parameters.Mass.Min.ToString();
+ _inputMassMax.Value = _particleEffect.Emitters[_currentEmitter].Parameters.Mass.Max.ToString();
+
+ _modifierCircleContainer.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierColourInterpolator2.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierDrag.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierHueInterpolator2.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierLinearGravity.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierOpacityFastFade.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierOpacityInterpolator2.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierOpacityInterpolator3.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierRectContainer.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierRectLoopContainer.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierRectLoopContainer.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierRotation.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierScaleInterpolator2.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierVelocityColour.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierVelocityColourInfinite.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierVelocityHue.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ _modifierVortex.Refresh(_particleEffect.Emitters[_currentEmitter].Modifiers);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Venus Particle Editor/Modifiers/CircleContainer.cs b/Venus Particle Editor/Modifiers/CircleContainer.cs
new file mode 100644
index 0000000..0fb641a
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/CircleContainer.cs
@@ -0,0 +1,132 @@
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using VenusParticleEngine.Core.Modifiers.Container;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class CircleContainer
+ {
+ private CheckBox _checkboxActive;
+ private string _key = "CircleContainerModifier";
+ private Panel _panelMaster;
+ private Panel _panelInside;
+ private Vector2 _masterSize = new Vector2(-1f, 450);
+ private Vector2 _masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private Paragraph _paragraphRadius;
+ private TextInput _inputRadius;
+
+ private CheckBox _checkboxInside;
+
+ private Paragraph _paragraphRestitutionCoefficient;
+ private TextInput _inputRestitutionCoefficient;
+
+ public Panel Panel
+ {
+ get { return _panelMaster; }
+ }
+
+ public CircleContainer()
+ {
+ _panelMaster = new Panel(_masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ _panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 330), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ _checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+
+ _panelMaster.AddChild(new RichParagraph("{{GOLD}} Circle Container"));
+ _panelMaster.AddChild(_checkboxActive);
+ _panelMaster.AddChild(_panelInside);
+
+ _paragraphRadius = new Paragraph("Radius");
+ _inputRadius = new TextInput(false, new Vector2(-1, -1f), anchor: Anchor.AutoInline);
+ _inputRadius.Validators.Add(new TextValidatorNumbersOnly(allowDecimal: true));
+ _inputRadius.Value = "0.1";
+ _inputRadius.ValueWhenEmpty = "0.1";
+ _panelInside.AddChild(_paragraphRadius);
+ _panelInside.AddChild(_inputRadius);
+
+ _checkboxInside = new CheckBox("Inside", isChecked: false);
+ _panelInside.AddChild(_checkboxInside);
+
+ _paragraphRestitutionCoefficient = new Paragraph("Restitution Coefficient");
+ _inputRestitutionCoefficient = new TextInput(false, new Vector2(-1, -1f), anchor: Anchor.AutoInline);
+ _inputRestitutionCoefficient.Validators.Add(new TextValidatorNumbersOnly(allowDecimal: true));
+ _inputRestitutionCoefficient.Value = "0.1";
+ _inputRestitutionCoefficient.ValueWhenEmpty = "0.1";
+ _panelInside.AddChild(_paragraphRestitutionCoefficient);
+ _panelInside.AddChild(_inputRestitutionCoefficient);
+
+ _panelInside.Visible = false;
+ _panelMaster.Size = _masterSizeMinimized;
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(_key))
+ {
+ _inputRadius.Value = ((VenusParticleEngine.Core.Modifiers.Container.CircleContainerModifier)_modifiers[_key]).Radius.ToString().Replace(",", ".");
+
+ _checkboxInside.Checked = ((VenusParticleEngine.Core.Modifiers.Container.CircleContainerModifier)_modifiers[_key]).Inside;
+
+ _inputRestitutionCoefficient.Value = ((VenusParticleEngine.Core.Modifiers.Container.CircleContainerModifier)_modifiers[_key]).RestitutionCoefficient.ToString().Replace(",", ".");
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (_checkboxActive.Checked)
+ {
+ _modifiers.Add(_key, new VenusParticleEngine.Core.Modifiers.Container.CircleContainerModifier());
+ }
+ else
+ {
+ _modifiers.Remove(_key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(_key))
+ {
+ _panelInside.Visible = true;
+ _panelMaster.Size = _masterSize;
+ _checkboxActive.Checked = true;
+ }
+ else
+ {
+ _panelInside.Visible = false;
+ _panelMaster.Size = _masterSizeMinimized;
+ _checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(_key))
+ {
+ UpdateModifier(_modifiers[_key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ CircleContainerModifier currentModifier = (CircleContainerModifier)modifier;
+
+ if (_inputRadius.Value != null && !_inputRadius.Value.Equals("") && !_inputRadius.Value.Equals("-"))
+ currentModifier.Radius = float.Parse(_inputRadius.Value.Replace(".", ","));
+
+ currentModifier.Inside = _checkboxInside.Checked;
+
+ if (_inputRestitutionCoefficient.Value != null && !_inputRestitutionCoefficient.Value.Equals("") && !_inputRestitutionCoefficient.Value.Equals("-"))
+ currentModifier.RestitutionCoefficient = float.Parse(_inputRestitutionCoefficient.Value.Replace(".", ","));
+
+ _modifiers[_key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/ColourInterpolator2.cs b/Venus Particle Editor/Modifiers/ColourInterpolator2.cs
new file mode 100644
index 0000000..4cccb14
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/ColourInterpolator2.cs
@@ -0,0 +1,154 @@
+using GeonBit.UI.Entities;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class ColourInterpolator2
+ {
+ private CheckBox checkboxActive;
+ private string key = "ColourInterpolator2";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 750);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private Paragraph colour1H;
+ private Slider sliderColour1H;
+ private Paragraph colour1S;
+ private Slider sliderColour1S;
+ private Paragraph colour1L;
+ private Slider sliderColour1L;
+
+ private Paragraph colour2H;
+ private Slider sliderColour2H;
+ private Paragraph colour2S;
+ private Slider sliderColour2S;
+ private Paragraph colour2L;
+ private Slider sliderColour2L;
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public ColourInterpolator2()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 600), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} Colour Interpolator 2"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+
+ panelInside.AddChild(new Paragraph("Color 1", Anchor.AutoInline, new Vector2(0, -1)));
+ colour1H = new Paragraph("Hue");
+ sliderColour1H = new Slider(0, 360, SliderSkin.Default);
+ panelInside.AddChild(colour1H);
+ panelInside.AddChild(sliderColour1H);
+
+ colour1S = new Paragraph("Saturation");
+ sliderColour1S = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour1S);
+ panelInside.AddChild(sliderColour1S);
+
+ colour1L = new Paragraph("Lightness");
+ sliderColour1L = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour1L);
+ panelInside.AddChild(sliderColour1L);
+
+ panelInside.AddChild(new Paragraph("Color 2", Anchor.AutoInline, new Vector2(0, -1)));
+ colour2H = new Paragraph("Hue");
+ sliderColour2H = new Slider(0, 360, SliderSkin.Default);
+ sliderColour2H.Value = 50;
+ panelInside.AddChild(colour2H);
+ panelInside.AddChild(sliderColour2H);
+
+ colour2S = new Paragraph("Saturation");
+ sliderColour2S = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour2S);
+ panelInside.AddChild(sliderColour2S);
+
+ colour2L = new Paragraph("Lightness");
+ sliderColour2L = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour2L);
+ panelInside.AddChild(sliderColour2L);
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ sliderColour1H.Value = (int)((VenusParticleEngine.Core.Modifiers.ColourInterpolator2)_modifiers[key]).InitialColour.H;
+ sliderColour1S.Value = ((int)(((VenusParticleEngine.Core.Modifiers.ColourInterpolator2)_modifiers[key]).InitialColour.S * 100));
+ sliderColour1L.Value = ((int)(((VenusParticleEngine.Core.Modifiers.ColourInterpolator2)_modifiers[key]).InitialColour.L * 100));
+
+ sliderColour2H.Value = (int)((VenusParticleEngine.Core.Modifiers.ColourInterpolator2)_modifiers[key]).FinalColour.H;
+ sliderColour2S.Value = ((int)(((VenusParticleEngine.Core.Modifiers.ColourInterpolator2)_modifiers[key]).FinalColour.S * 100));
+ sliderColour2L.Value = ((int)(((VenusParticleEngine.Core.Modifiers.ColourInterpolator2)_modifiers[key]).FinalColour.L * 100));
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.ColourInterpolator2());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ VenusParticleEngine.Core.Modifiers.ColourInterpolator2 currentModifier = (VenusParticleEngine.Core.Modifiers.ColourInterpolator2)modifier;
+
+ colour1H.Text = "HUE " + sliderColour1H.Value;
+ colour1S.Text = "Saturation " + sliderColour1S.Value + "%";
+ colour1L.Text = "Lightness " + sliderColour1L.Value + "%";
+ colour2H.Text = "HUE " + sliderColour2H.Value;
+ colour2S.Text = "Saturation " + sliderColour2S.Value + "%";
+ colour2L.Text = "Lightness " + sliderColour2L.Value + "%";
+
+ currentModifier.InitialColour = new VenusParticleEngine.Core.Colour(sliderColour1H.Value, (float)sliderColour1S.Value / 100, (float)sliderColour1L.Value / 100);
+ currentModifier.FinalColour = new VenusParticleEngine.Core.Colour(sliderColour2H.Value, (float)sliderColour2S.Value / 100, (float)sliderColour2L.Value / 100);
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/Drag.cs b/Venus Particle Editor/Modifiers/Drag.cs
new file mode 100644
index 0000000..6950783
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/Drag.cs
@@ -0,0 +1,116 @@
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class Drag
+ {
+ private CheckBox checkboxActive;
+ private string key = "Drag";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 400);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private TextInput dragCoefficient;
+ private TextInput density;
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public Drag()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 250), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} Drag"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ panelInside.AddChild(new Paragraph("Drag Coefficient", Anchor.AutoInline, new Vector2(0.5f, -1)));
+ dragCoefficient = new TextInput(false, new Vector2(0.5f, -1f), anchor: Anchor.AutoInline);
+ dragCoefficient.Validators.Add(new TextValidatorNumbersOnly(true, 0));
+ dragCoefficient.Value = "1.5";
+ dragCoefficient.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(dragCoefficient);
+
+ panelInside.AddChild(new Paragraph("Density", Anchor.AutoInline, new Vector2(0.5f, -1)));
+ density = new TextInput(false, new Vector2(0.5f, -1f), anchor: Anchor.AutoInline);
+ density.Validators.Add(new TextValidatorNumbersOnly(true, 0));
+ density.Value = "80.1";
+ density.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(density);
+
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ dragCoefficient.Value = ((DragModifier)_modifiers[key]).DragCoefficient.ToString();
+ density.Value = ((DragModifier)_modifiers[key]).Density.ToString();
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new DragModifier());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ DragModifier currentModifier = (DragModifier)modifier;
+
+ if (dragCoefficient.Value != null && !dragCoefficient.Value.Equals("") && !dragCoefficient.Value.Equals("-"))
+ currentModifier.DragCoefficient = float.Parse(dragCoefficient.Value.Replace(".",","));
+
+ if (density.Value != null && !density.Value.Equals("") && !density.Value.Equals("-"))
+ currentModifier.Density = float.Parse(density.Value.Replace(".", ","));
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/HueInterpolator2.cs b/Venus Particle Editor/Modifiers/HueInterpolator2.cs
new file mode 100644
index 0000000..0e5c24f
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/HueInterpolator2.cs
@@ -0,0 +1,118 @@
+using GeonBit.UI.Entities;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class HueInterpolator2
+ {
+ private CheckBox checkboxActive;
+ private string key = "HueInterpolator2";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 400);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private Paragraph colour1H;
+ private Slider sliderColour1H;
+
+ private Paragraph colour2H;
+ private Slider sliderColour2H;
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public HueInterpolator2()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 250), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} HUE Interpolator 2"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+
+ panelInside.AddChild(new Paragraph("Color 1", Anchor.AutoInline, new Vector2(0, -1)));
+ colour1H = new Paragraph("Hue");
+ sliderColour1H = new Slider(0, 360, SliderSkin.Default);
+ panelInside.AddChild(colour1H);
+ panelInside.AddChild(sliderColour1H);
+
+ panelInside.AddChild(new Paragraph("Color 2", Anchor.AutoInline, new Vector2(0, -1)));
+ colour2H = new Paragraph("Hue");
+ sliderColour2H = new Slider(0, 360, SliderSkin.Default);
+ sliderColour2H.Value = 50;
+ panelInside.AddChild(colour2H);
+ panelInside.AddChild(sliderColour2H);
+
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ sliderColour1H.Value = (int)((VenusParticleEngine.Core.Modifiers.HueInterpolator2)_modifiers[key]).InitialHue;
+ sliderColour2H.Value = (int)((VenusParticleEngine.Core.Modifiers.HueInterpolator2)_modifiers[key]).FinalHue;
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.HueInterpolator2());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ VenusParticleEngine.Core.Modifiers.HueInterpolator2 currentModifier = (VenusParticleEngine.Core.Modifiers.HueInterpolator2)modifier;
+
+ colour1H.Text = "HUE " + sliderColour1H.Value;
+ colour2H.Text = "HUE " + sliderColour2H.Value;
+
+ currentModifier.InitialHue = sliderColour1H.Value;
+ currentModifier.FinalHue = sliderColour2H.Value;
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/LinearGravity.cs b/Venus Particle Editor/Modifiers/LinearGravity.cs
new file mode 100644
index 0000000..83528ad
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/LinearGravity.cs
@@ -0,0 +1,126 @@
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class LinearGravity
+ {
+ private CheckBox checkboxActive;
+ private string key = "LinearGravity";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 400);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private TextInput directionX;
+ private TextInput directionY;
+ private TextInput strength;
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public LinearGravity()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 250), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} Linear Gravity"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ panelInside.AddChild(new Paragraph("Direction", Anchor.AutoInline, new Vector2(.9f, -1)));
+
+ panelInside.AddChild(new Paragraph("X", Anchor.AutoInline, new Vector2(0.2f, -1)));
+ directionX = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ directionX.Validators.Add(new TextValidatorNumbersOnly(true));
+ directionX.Value = "0.1";
+ directionX.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(directionX);
+
+ panelInside.AddChild(new Paragraph("Y", Anchor.AutoInline, new Vector2(0.2f, -1)));
+ directionY = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ directionY.Validators.Add(new TextValidatorNumbersOnly(true));
+ directionY.Value = "0.1";
+ directionY.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(directionY);
+
+ panelInside.AddChild(new Paragraph("Strength", Anchor.AutoInline, new Vector2(.9f, -1)));
+ strength = new TextInput(false, new Vector2(0.9f, -1f), anchor: Anchor.AutoInline);
+ strength.Validators.Add(new TextValidatorNumbersOnly(true));
+ strength.Value = "100";
+ strength.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(strength);
+
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.LinearGravityModifier());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ LinearGravityModifier currentModifier = (LinearGravityModifier)modifier;
+
+ if (directionX.Value != null && !directionX.Value.Equals("") && !directionX.Value.Equals("-")
+ && directionY.Value != null && !directionY.Value.Equals("") && !directionY.Value.Equals("-"))
+ currentModifier.Direction = new Axis(float.Parse(directionX.Value.Replace(".", ",")), float.Parse(directionY.Value.Replace(".", ",")));
+
+ if (strength.Value != null && !strength.Value.Equals("") && !strength.Value.Equals("-"))
+ currentModifier.Strength = float.Parse(strength.Value.Replace(".", ","));
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/OpacityFastFade.cs b/Venus Particle Editor/Modifiers/OpacityFastFade.cs
new file mode 100644
index 0000000..512a5f3
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/OpacityFastFade.cs
@@ -0,0 +1,90 @@
+using GeonBit.UI.Entities;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class OpacityFastFade
+ {
+ private CheckBox checkboxActive;
+ private string key = "OpacityFastFade";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 100);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public OpacityFastFade()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 100), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} Opacity Fast Fade"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.OpacityFastFadeModifier());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ // panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ // panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ OpacityFastFadeModifier currentModifier = (OpacityFastFadeModifier)modifier;
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/OpacityInterpolator2.cs b/Venus Particle Editor/Modifiers/OpacityInterpolator2.cs
new file mode 100644
index 0000000..18eba63
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/OpacityInterpolator2.cs
@@ -0,0 +1,113 @@
+using GeonBit.UI.Entities;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class OpacityInterpolator2
+ {
+ private CheckBox checkboxActive;
+ private string key = "OpacityInterpolator2";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 400);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private Paragraph paragraphInitial;
+ private Slider sliderInitial;
+ private Paragraph paragraphFinal;
+ private Slider sliderFinal;
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public OpacityInterpolator2()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 250), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} Opacity Interpolator 2"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+
+ paragraphInitial = new Paragraph("Initial 0%");
+ sliderInitial = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(paragraphInitial);
+ panelInside.AddChild(sliderInitial);
+
+ paragraphFinal = new Paragraph("Final 0%");
+ sliderFinal = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(paragraphFinal);
+ panelInside.AddChild(sliderFinal);
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ sliderInitial.Value = ((int)(((VenusParticleEngine.Core.Modifiers.OpacityInterpolator2)_modifiers[key]).InitialOpacity * 100));
+ sliderFinal.Value = ((int)(((VenusParticleEngine.Core.Modifiers.OpacityInterpolator2)_modifiers[key]).FinalOpacity * 100));
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.OpacityInterpolator2());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ VenusParticleEngine.Core.Modifiers.OpacityInterpolator2 currentModifier = (VenusParticleEngine.Core.Modifiers.OpacityInterpolator2)modifier;
+
+ currentModifier.InitialOpacity = (float)sliderInitial.Value / 100;
+ currentModifier.FinalOpacity = (float)sliderFinal.Value / 100;
+
+ paragraphInitial.Text = "Initial " +sliderInitial.Value.ToString() +"%";
+ paragraphFinal.Text = "Final " + sliderFinal.Value.ToString() +"%";
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/OpacityInterpolator3.cs b/Venus Particle Editor/Modifiers/OpacityInterpolator3.cs
new file mode 100644
index 0000000..077648d
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/OpacityInterpolator3.cs
@@ -0,0 +1,123 @@
+using GeonBit.UI.Entities;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class OpacityInterpolator3
+ {
+ private CheckBox checkboxActive;
+ private string key = "OpacityInterpolator3";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 400);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private Paragraph paragraphInitial;
+ private Slider sliderInitial;
+ private Paragraph paragraphMedium;
+ private Slider sliderMedium;
+ private Paragraph paragraphFinal;
+ private Slider sliderFinal;
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public OpacityInterpolator3()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 250), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} Opacity Interpolator 3"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+
+ paragraphInitial = new Paragraph("Initial 0%");
+ sliderInitial = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(paragraphInitial);
+ panelInside.AddChild(sliderInitial);
+
+ paragraphMedium = new Paragraph("Medium 0%");
+ sliderMedium = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(paragraphMedium);
+ panelInside.AddChild(sliderMedium);
+
+ paragraphFinal = new Paragraph("Final 0%");
+ sliderFinal = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(paragraphFinal);
+ panelInside.AddChild(sliderFinal);
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ sliderInitial.Value = ((int)(((VenusParticleEngine.Core.Modifiers.OpacityInterpolator3)_modifiers[key]).InitialOpacity * 100));
+ sliderMedium.Value = ((int)(((VenusParticleEngine.Core.Modifiers.OpacityInterpolator3)_modifiers[key]).MediumOpacity * 100));
+ sliderFinal.Value = ((int)(((VenusParticleEngine.Core.Modifiers.OpacityInterpolator3)_modifiers[key]).FinalOpacity * 100));
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.OpacityInterpolator3());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ VenusParticleEngine.Core.Modifiers.OpacityInterpolator3 currentModifier = (VenusParticleEngine.Core.Modifiers.OpacityInterpolator3)modifier;
+
+ currentModifier.InitialOpacity = (float)sliderInitial.Value / 100;
+ currentModifier.MediumOpacity = (float)sliderMedium.Value / 100;
+ currentModifier.FinalOpacity = (float)sliderFinal.Value / 100;
+
+ paragraphInitial.Text = "Initial " +sliderInitial.Value.ToString() +"%";
+ paragraphMedium.Text = "Medium " + sliderMedium.Value.ToString() +"%";
+ paragraphFinal.Text = "Final " + sliderFinal.Value.ToString() +"%";
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/RectContainer.cs b/Venus Particle Editor/Modifiers/RectContainer.cs
new file mode 100644
index 0000000..ab77453
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/RectContainer.cs
@@ -0,0 +1,137 @@
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using VenusParticleEngine.Core.Modifiers.Container;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class RectContainer
+ {
+ private CheckBox _checkboxActive;
+ private string _key = "RectContainerModifier";
+ private Panel _panelMaster;
+ private Panel _panelInside;
+ private Vector2 _masterSize = new Vector2(-1, 450);
+ private Vector2 _masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private Paragraph _paragraphWidth;
+ private TextInput _inputWidth;
+ private Paragraph _paragraphHeight;
+ private TextInput _inputHeight;
+
+ private Paragraph _paragraphRestitutionCoefficient;
+ private TextInput _inputRestitutionCoefficient;
+
+ public Panel Panel
+ {
+ get { return _panelMaster; }
+ }
+
+ public RectContainer()
+ {
+ _panelMaster = new Panel(_masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ _panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 330), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ _checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+
+ _panelMaster.AddChild(new RichParagraph("{{GOLD}} Rect Container"));
+ _panelMaster.AddChild(_checkboxActive);
+ _panelMaster.AddChild(_panelInside);
+
+ _paragraphWidth = new Paragraph("Width", size: new Vector2(0.5f, -1), anchor: Anchor.AutoInline);
+ _inputWidth = new TextInput(false, new Vector2(0.5f, -1f), anchor: Anchor.AutoInline);
+ _inputWidth.Validators.Add(new TextValidatorNumbersOnly(allowDecimal: false));
+ _inputWidth.Value = "1";
+ _inputWidth.ValueWhenEmpty = "1";
+ _panelInside.AddChild(_paragraphWidth);
+ _panelInside.AddChild(_inputWidth);
+
+ _paragraphHeight = new Paragraph("Height", size: new Vector2(0.5f, -1), anchor: Anchor.AutoInline);
+ _inputHeight = new TextInput(false, new Vector2(0.5f, -1f), anchor: Anchor.AutoInline);
+ _inputHeight.Validators.Add(new TextValidatorNumbersOnly(allowDecimal: false));
+ _inputHeight.Value = "1";
+ _inputHeight.ValueWhenEmpty = "1";
+ _panelInside.AddChild(_paragraphHeight);
+ _panelInside.AddChild(_inputHeight);
+
+ _paragraphRestitutionCoefficient = new Paragraph("Restitution Coefficient");
+ _inputRestitutionCoefficient = new TextInput(false, new Vector2(-1, -1f), anchor: Anchor.AutoInline);
+ _inputRestitutionCoefficient.Validators.Add(new TextValidatorNumbersOnly(allowDecimal: true));
+ _inputRestitutionCoefficient.Value = "0.1";
+ _inputRestitutionCoefficient.ValueWhenEmpty = "0.1";
+ _panelInside.AddChild(_paragraphRestitutionCoefficient);
+ _panelInside.AddChild(_inputRestitutionCoefficient);
+
+ _panelInside.Visible = false;
+ _panelMaster.Size = _masterSizeMinimized;
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(_key))
+ {
+ _inputWidth.Value = ((VenusParticleEngine.Core.Modifiers.Container.RectContainerModifier)_modifiers[_key]).Width.ToString().Replace(",", ".");
+ _inputHeight.Value = ((VenusParticleEngine.Core.Modifiers.Container.RectContainerModifier)_modifiers[_key]).Height.ToString().Replace(",", ".");
+
+ _inputRestitutionCoefficient.Value = ((VenusParticleEngine.Core.Modifiers.Container.RectContainerModifier)_modifiers[_key]).RestitutionCoefficient.ToString().Replace(",", ".");
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (_checkboxActive.Checked)
+ {
+ _modifiers.Add(_key, new VenusParticleEngine.Core.Modifiers.Container.RectContainerModifier());
+ }
+ else
+ {
+ _modifiers.Remove(_key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(_key))
+ {
+ _panelInside.Visible = true;
+ _panelMaster.Size = _masterSize;
+ _checkboxActive.Checked = true;
+ }
+ else
+ {
+ _panelInside.Visible = false;
+ _panelMaster.Size = _masterSizeMinimized;
+ _checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(_key))
+ {
+ UpdateModifier(_modifiers[_key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ RectContainerModifier currentModifier = (RectContainerModifier)modifier;
+
+ if (_inputWidth.Value != null && !_inputWidth.Value.Equals("") && !_inputWidth.Value.Equals("-"))
+ currentModifier.Width = int.Parse(_inputWidth.Value.Replace(".", ","));
+
+ if (_inputHeight.Value != null && !_inputHeight.Value.Equals("") && !_inputHeight.Value.Equals("-"))
+ currentModifier.Height = int.Parse(_inputHeight.Value.Replace(".", ","));
+
+ if (_inputRestitutionCoefficient.Value != null && !_inputRestitutionCoefficient.Value.Equals("") && !_inputRestitutionCoefficient.Value.Equals("-"))
+ currentModifier.RestitutionCoefficient = float.Parse(_inputRestitutionCoefficient.Value.Replace(".", ","));
+
+ _modifiers[_key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/RectLoopContainer.cs b/Venus Particle Editor/Modifiers/RectLoopContainer.cs
new file mode 100644
index 0000000..0531fae
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/RectLoopContainer.cs
@@ -0,0 +1,121 @@
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using VenusParticleEngine.Core.Modifiers.Container;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class RectLoopContainer
+ {
+ private CheckBox _checkboxActive;
+ private string _key = "RectLoopContainerModifier";
+ private Panel _panelMaster;
+ private Panel _panelInside;
+ private Vector2 _masterSize = new Vector2(-1, 330);
+ private Vector2 _masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private Paragraph _paragraphWidth;
+ private TextInput _inputWidth;
+ private Paragraph _paragraphHeight;
+ private TextInput _inputHeight;
+
+ public Panel Panel
+ {
+ get { return _panelMaster; }
+ }
+
+ public RectLoopContainer()
+ {
+ _panelMaster = new Panel(_masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ _panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 210), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ _checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+
+ _panelMaster.AddChild(new RichParagraph("{{GOLD}} Rect Loop Container"));
+ _panelMaster.AddChild(_checkboxActive);
+ _panelMaster.AddChild(_panelInside);
+
+ _paragraphWidth = new Paragraph("Width", size: new Vector2(0.5f, -1), anchor: Anchor.AutoInline);
+ _inputWidth = new TextInput(false, new Vector2(0.5f, -1f), anchor: Anchor.AutoInline);
+ _inputWidth.Validators.Add(new TextValidatorNumbersOnly(allowDecimal: false));
+ _inputWidth.Value = "1";
+ _inputWidth.ValueWhenEmpty = "1";
+ _panelInside.AddChild(_paragraphWidth);
+ _panelInside.AddChild(_inputWidth);
+
+ _paragraphHeight = new Paragraph("Height", size: new Vector2(0.5f, -1), anchor: Anchor.AutoInline);
+ _inputHeight = new TextInput(false, new Vector2(0.5f, -1f), anchor: Anchor.AutoInline);
+ _inputHeight.Validators.Add(new TextValidatorNumbersOnly(allowDecimal: false));
+ _inputHeight.Value = "1";
+ _inputHeight.ValueWhenEmpty = "1";
+ _panelInside.AddChild(_paragraphHeight);
+ _panelInside.AddChild(_inputHeight);
+
+ _panelInside.Visible = false;
+ _panelMaster.Size = _masterSizeMinimized;
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(_key))
+ {
+ _inputWidth.Value = ((VenusParticleEngine.Core.Modifiers.Container.RectLoopContainerModifier)_modifiers[_key]).Width.ToString().Replace(",", ".");
+ _inputHeight.Value = ((VenusParticleEngine.Core.Modifiers.Container.RectLoopContainerModifier)_modifiers[_key]).Height.ToString().Replace(",", ".");
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (_checkboxActive.Checked)
+ {
+ _modifiers.Add(_key, new VenusParticleEngine.Core.Modifiers.Container.RectLoopContainerModifier());
+ }
+ else
+ {
+ _modifiers.Remove(_key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(_key))
+ {
+ _panelInside.Visible = true;
+ _panelMaster.Size = _masterSize;
+ _checkboxActive.Checked = true;
+ }
+ else
+ {
+ _panelInside.Visible = false;
+ _panelMaster.Size = _masterSizeMinimized;
+ _checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(_key))
+ {
+ UpdateModifier(_modifiers[_key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ RectLoopContainerModifier currentModifier = (RectLoopContainerModifier)modifier;
+
+ if (_inputWidth.Value != null && !_inputWidth.Value.Equals("") && !_inputWidth.Value.Equals("-"))
+ currentModifier.Width = int.Parse(_inputWidth.Value.Replace(".", ","));
+
+ if (_inputHeight.Value != null && !_inputHeight.Value.Equals("") && !_inputHeight.Value.Equals("-"))
+ currentModifier.Height = int.Parse(_inputHeight.Value.Replace(".", ","));
+
+ _modifiers[_key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/Rotation.cs b/Venus Particle Editor/Modifiers/Rotation.cs
new file mode 100644
index 0000000..644546e
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/Rotation.cs
@@ -0,0 +1,104 @@
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class Rotation
+ {
+ private CheckBox checkboxActive;
+ private string key = "Rotation";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 400);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private TextInput _inputRotationRate;
+
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public Rotation()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 250), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} Rotation"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ _inputRotationRate = new TextInput(false, new Vector2(0.5f, -1f), anchor: Anchor.AutoInline);
+ _inputRotationRate.Validators.Add(new TextValidatorNumbersOnly(true, 0));
+ _inputRotationRate.Value = "0.1";
+ _inputRotationRate.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(_inputRotationRate);
+
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ _inputRotationRate.Value = ((RotationModifier)_modifiers[key]).RotationRate.ToString();
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.RotationModifier());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ RotationModifier currentModifier = (RotationModifier)modifier;
+
+ if (_inputRotationRate.Value != null && !_inputRotationRate.Value.Equals("") && !_inputRotationRate.Value.Equals("-"))
+ currentModifier.RotationRate = float.Parse(_inputRotationRate.Value.Replace(".", ","));
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/ScaleInterpolator2.cs b/Venus Particle Editor/Modifiers/ScaleInterpolator2.cs
new file mode 100644
index 0000000..6a32b5b
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/ScaleInterpolator2.cs
@@ -0,0 +1,148 @@
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class ScaleInterpolator2
+ {
+ private CheckBox checkboxActive;
+ private string key = "ScaleInterpolator2";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 400);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private TextInput _inputInitialX;
+ private TextInput _inputInitialY;
+ private TextInput _inputFinalX;
+ private TextInput _inputFinalY;
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public ScaleInterpolator2()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 250), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} Scale Interpolator 2"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+
+ panelInside.AddChild(new Paragraph("Initial", Anchor.AutoInline, new Vector2(0, -1)));
+ panelInside.AddChild(new Paragraph("X", Anchor.AutoInline, new Vector2(0.2f, -1)));
+ _inputInitialX = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputInitialX.Validators.Add(new TextValidatorNumbersOnly(true, 0));
+ _inputInitialX.Value = "1";
+ _inputInitialX.ValueWhenEmpty = "1";
+ panelInside.AddChild(_inputInitialX);
+
+ panelInside.AddChild(new Paragraph("Y", Anchor.AutoInline, new Vector2(0.2f, -1)));
+ _inputInitialY = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputInitialY.Validators.Add(new TextValidatorNumbersOnly(true, 0));
+ _inputInitialY.Value = "1";
+ _inputInitialY.ValueWhenEmpty = "1";
+ panelInside.AddChild(_inputInitialY);
+
+ panelInside.AddChild(new Paragraph("Final", Anchor.AutoInline, new Vector2(0, -1)));
+ panelInside.AddChild(new Paragraph("X", Anchor.AutoInline, new Vector2(0.2f, -1)));
+ _inputFinalX = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputFinalX.Validators.Add(new TextValidatorNumbersOnly(true, 0));
+ _inputFinalX.Value = "1.5";
+ _inputFinalX.ValueWhenEmpty = "1";
+ panelInside.AddChild(_inputFinalX);
+
+ panelInside.AddChild(new Paragraph("Y", Anchor.AutoInline, new Vector2(0.2f, -1)));
+ _inputFinalY = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ _inputFinalY.Validators.Add(new TextValidatorNumbersOnly(true, 0));
+ _inputFinalY.Value = "1.5";
+ _inputFinalY.ValueWhenEmpty = "1";
+ panelInside.AddChild(_inputFinalY);
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ _inputInitialX.Value = ((VenusParticleEngine.Core.Modifiers.ScaleInterpolator2)_modifiers[key]).InitialScale.X.ToString().Replace(",", ".");
+ _inputInitialY.Value = ((VenusParticleEngine.Core.Modifiers.ScaleInterpolator2)_modifiers[key]).InitialScale.Y.ToString().Replace(",", ".");
+
+ _inputFinalX.Value = ((VenusParticleEngine.Core.Modifiers.ScaleInterpolator2)_modifiers[key]).FinalScale.X.ToString().Replace(",",".");
+ _inputFinalY.Value = ((VenusParticleEngine.Core.Modifiers.ScaleInterpolator2)_modifiers[key]).FinalScale.Y.ToString().Replace(",", ".");
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.ScaleInterpolator2());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ VenusParticleEngine.Core.Modifiers.ScaleInterpolator2 currentModifier = (VenusParticleEngine.Core.Modifiers.ScaleInterpolator2)modifier;
+
+ Vector initial = new Vector(0, 0);
+ Vector final = new Vector(0, 0);
+
+ if (_inputInitialX.Value != null && !_inputInitialX.Value.Equals("") && !_inputInitialX.Value.Equals("-"))
+ initial.X = float.Parse(_inputInitialX.Value.Replace(".", ","));
+
+ if (_inputInitialY.Value != null && !_inputInitialY.Value.Equals("") && !_inputInitialY.Value.Equals("-"))
+ initial.Y = float.Parse(_inputInitialY.Value.Replace(".", ","));
+
+ if (_inputFinalX.Value != null && !_inputFinalX.Value.Equals("") && !_inputFinalX.Value.Equals("-"))
+ final.X = float.Parse(_inputFinalX.Value.Replace(".", ","));
+
+ if (_inputFinalY.Value != null && !_inputFinalY.Value.Equals("") && !_inputFinalY.Value.Equals("-"))
+ final.Y = float.Parse(_inputFinalY.Value.Replace(".", ","));
+
+ currentModifier.InitialScale = initial;
+ currentModifier.FinalScale = final;
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/VelocityColour.cs b/Venus Particle Editor/Modifiers/VelocityColour.cs
new file mode 100644
index 0000000..230d2e6
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/VelocityColour.cs
@@ -0,0 +1,169 @@
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class VelocityColour
+ {
+ private CheckBox checkboxActive;
+ private string key = "VelocityColour";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 790);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private Paragraph colour1H;
+ private Slider sliderColour1H;
+ private Paragraph colour1S;
+ private Slider sliderColour1S;
+ private Paragraph colour1L;
+ private Slider sliderColour1L;
+
+ private Paragraph colour2H;
+ private Slider sliderColour2H;
+ private Paragraph colour2S;
+ private Slider sliderColour2S;
+ private Paragraph colour2L;
+ private Slider sliderColour2L;
+ private TextInput _inputVelocityThreshold;
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public VelocityColour()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 680), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} Velocity Colour"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ panelInside.AddChild(new Paragraph("Color Stationary", Anchor.AutoInline, new Vector2(0, -1)));
+ colour1H = new Paragraph("Hue");
+ sliderColour1H = new Slider(0, 360, SliderSkin.Default);
+ panelInside.AddChild(colour1H);
+ panelInside.AddChild(sliderColour1H);
+
+ colour1S = new Paragraph("Saturation");
+ sliderColour1S = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour1S);
+ panelInside.AddChild(sliderColour1S);
+
+ colour1L = new Paragraph("Lightness");
+ sliderColour1L = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour1L);
+ panelInside.AddChild(sliderColour1L);
+
+ panelInside.AddChild(new Paragraph("Color Velocity", Anchor.AutoInline, new Vector2(0, -1)));
+ colour2H = new Paragraph("Hue");
+ sliderColour2H = new Slider(0, 360, SliderSkin.Default);
+ sliderColour2H.Value = 50;
+ panelInside.AddChild(colour2H);
+ panelInside.AddChild(sliderColour2H);
+
+ colour2S = new Paragraph("Saturation");
+ sliderColour2S = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour2S);
+ panelInside.AddChild(sliderColour2S);
+
+ colour2L = new Paragraph("Lightness");
+ sliderColour2L = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour2L);
+ panelInside.AddChild(sliderColour2L);
+
+ panelInside.AddChild(new Paragraph("Velocity Threshold", Anchor.AutoInline, new Vector2(0f, -1)));
+ _inputVelocityThreshold = new TextInput(false, new Vector2(0.9f, -1f), anchor: Anchor.AutoInline);
+ _inputVelocityThreshold.Validators.Add(new TextValidatorNumbersOnly(true));
+ _inputVelocityThreshold.Value = "10";
+ _inputVelocityThreshold.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(_inputVelocityThreshold);
+
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ sliderColour1H.Value = (int)((VelocityColourModifier)_modifiers[key]).StationaryColour.H;
+ sliderColour1S.Value = (int)(((VelocityColourModifier)_modifiers[key]).StationaryColour.S * 100);
+ sliderColour1L.Value = (int)(((VelocityColourModifier)_modifiers[key]).StationaryColour.L * 100);
+
+ sliderColour2H.Value = (int)((VelocityColourModifier)_modifiers[key]).VelocityColour.H;
+ sliderColour2S.Value = (int)(((VelocityColourModifier)_modifiers[key]).VelocityColour.S * 100);
+ sliderColour2L.Value = (int)(((VelocityColourModifier)_modifiers[key]).VelocityColour.L * 100);
+
+ _inputVelocityThreshold.Value = ((VelocityColourModifier)_modifiers[key]).VelocityThreshold.ToString();
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.VelocityColourModifier());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ VelocityColourModifier currentModifier = (VelocityColourModifier)modifier;
+
+ colour1H.Text = "HUE " + sliderColour1H.Value;
+ colour1S.Text = "Saturation " + sliderColour1S.Value + "%";
+ colour1L.Text = "Lightness " + sliderColour1L.Value + "%";
+ colour2H.Text = "HUE " + sliderColour2H.Value;
+ colour2S.Text = "Saturation " + sliderColour2S.Value + "%";
+ colour2L.Text = "Lightness " + sliderColour2L.Value + "%";
+
+ currentModifier.StationaryColour = new VenusParticleEngine.Core.Colour(sliderColour1H.Value, (float)sliderColour1S.Value / 100, (float)sliderColour1L.Value / 100);
+ currentModifier.VelocityColour = new VenusParticleEngine.Core.Colour(sliderColour2H.Value, (float)sliderColour2S.Value / 100, (float)sliderColour2L.Value / 100);
+
+ if (_inputVelocityThreshold.Value != null && !_inputVelocityThreshold.Value.Equals("") && !_inputVelocityThreshold.Value.Equals("-"))
+ currentModifier.VelocityThreshold = float.Parse(_inputVelocityThreshold.Value.Replace(".", ","));
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/VelocityColourInfinite.cs b/Venus Particle Editor/Modifiers/VelocityColourInfinite.cs
new file mode 100644
index 0000000..7779ac0
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/VelocityColourInfinite.cs
@@ -0,0 +1,167 @@
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class VelocityColourInfinite
+ {
+ private CheckBox checkboxActive;
+ private string key = "VelocityColourInfinite";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 790);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private Paragraph colour1H;
+ private Slider sliderColour1H;
+ private Paragraph colour1S;
+ private Slider sliderColour1S;
+ private Paragraph colour1L;
+ private Slider sliderColour1L;
+
+ private Paragraph colour2H;
+ private Slider sliderColour2H;
+ private Paragraph colour2S;
+ private Slider sliderColour2S;
+ private Paragraph colour2L;
+ private Slider sliderColour2L;
+ private TextInput _inputVelocityChangeColor;
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public VelocityColourInfinite()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 680), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} Velocity Color Infinite"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ panelInside.AddChild(new Paragraph("Color initial", Anchor.AutoInline, new Vector2(0, -1)));
+ colour1H = new Paragraph("Hue");
+ sliderColour1H = new Slider(0, 360, SliderSkin.Default);
+ panelInside.AddChild(colour1H);
+ panelInside.AddChild(sliderColour1H);
+
+ colour1S = new Paragraph("Saturation");
+ sliderColour1S = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour1S);
+ panelInside.AddChild(sliderColour1S);
+
+ colour1L = new Paragraph("Lightness");
+ sliderColour1L = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour1L);
+ panelInside.AddChild(sliderColour1L);
+
+ panelInside.AddChild(new Paragraph("Color final", Anchor.AutoInline, new Vector2(0, -1)));
+ colour2H = new Paragraph("Hue");
+ sliderColour2H = new Slider(0, 360, SliderSkin.Default);
+ sliderColour2H.Value = 50;
+ panelInside.AddChild(colour2H);
+ panelInside.AddChild(sliderColour2H);
+
+ colour2S = new Paragraph("Saturation");
+ sliderColour2S = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour2S);
+ panelInside.AddChild(sliderColour2S);
+
+ colour2L = new Paragraph("Lightness");
+ sliderColour2L = new Slider(0, 100, SliderSkin.Default);
+ panelInside.AddChild(colour2L);
+ panelInside.AddChild(sliderColour2L);
+
+ panelInside.AddChild(new Paragraph("Velocity Change Color", Anchor.AutoInline, new Vector2(0f, -1)));
+ _inputVelocityChangeColor = new TextInput(false, new Vector2(0.9f, -1f), anchor: Anchor.AutoInline);
+ _inputVelocityChangeColor.Validators.Add(new TextValidatorNumbersOnly(true));
+ _inputVelocityChangeColor.Value = "10";
+ _inputVelocityChangeColor.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(_inputVelocityChangeColor);
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ sliderColour1H.Value = (int)((VelocityColourInfiniteModifier)_modifiers[key]).Colour1.H;
+ sliderColour1S.Value = (int)(((VelocityColourInfiniteModifier)_modifiers[key]).Colour1.S * 100);
+ sliderColour1L.Value = (int)(((VelocityColourInfiniteModifier)_modifiers[key]).Colour1.L * 100);
+
+ sliderColour2H.Value = (int)((VelocityColourInfiniteModifier)_modifiers[key]).Colour2.H;
+ sliderColour2S.Value = (int)(((VelocityColourInfiniteModifier)_modifiers[key]).Colour2.S * 100);
+ sliderColour2L.Value = (int)(((VelocityColourInfiniteModifier)_modifiers[key]).Colour2.L * 100);
+
+ _inputVelocityChangeColor.Value = ((VelocityColourInfiniteModifier)_modifiers[key]).VelocityChangeColor.ToString();
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.VelocityColourInfiniteModifier());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ VelocityColourInfiniteModifier currentModifier = (VelocityColourInfiniteModifier)modifier;
+
+ colour1H.Text = "HUE " + sliderColour1H.Value;
+ colour1S.Text = "Saturation " + sliderColour1S.Value + "%";
+ colour1L.Text = "Lightness " + sliderColour1L.Value + "%";
+ colour2H.Text = "HUE " + sliderColour2H.Value;
+ colour2S.Text = "Saturation " + sliderColour2S.Value + "%";
+ colour2L.Text = "Lightness " + sliderColour2L.Value + "%";
+
+ currentModifier.Colour1 = new VenusParticleEngine.Core.Colour(sliderColour1H.Value, (float)sliderColour1S.Value/100, (float)sliderColour1L.Value/100);
+ currentModifier.Colour2 = new VenusParticleEngine.Core.Colour(sliderColour2H.Value, (float)sliderColour2S.Value/100, (float)sliderColour2L.Value/100);
+
+ if (_inputVelocityChangeColor.Value != null && !_inputVelocityChangeColor.Value.Equals("") && !_inputVelocityChangeColor.Value.Equals("-"))
+ currentModifier.VelocityChangeColor = float.Parse(_inputVelocityChangeColor.Value.Replace(".", ","));
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/VelocityHue.cs b/Venus Particle Editor/Modifiers/VelocityHue.cs
new file mode 100644
index 0000000..6ad7197
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/VelocityHue.cs
@@ -0,0 +1,128 @@
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class VelocityHue
+ {
+ private CheckBox checkboxActive;
+ private string key = "VelocityHue";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 500);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private TextInput stationaryHue;
+ private TextInput velocityHue;
+ private TextInput velocityThreshold;
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public VelocityHue()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 380), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} VelocityHue"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ panelInside.AddChild(new Paragraph("Stationary Hue", Anchor.AutoInline, new Vector2(.9f, -1)));
+ stationaryHue = new TextInput(false, new Vector2(0.9f, -1f), anchor: Anchor.AutoInline);
+ stationaryHue.Validators.Add(new TextValidatorNumbersOnly(true));
+ stationaryHue.Value = "1";
+ stationaryHue.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(stationaryHue);
+
+ panelInside.AddChild(new Paragraph("Velocity Hue", Anchor.AutoInline, new Vector2(.9f, -1)));
+ velocityHue = new TextInput(false, new Vector2(0.9f, -1f), anchor: Anchor.AutoInline);
+ velocityHue.Validators.Add(new TextValidatorNumbersOnly(true, 0));
+ velocityHue.Value = "1000";
+ velocityHue.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(velocityHue);
+
+ panelInside.AddChild(new Paragraph("Velocity Threshold", Anchor.AutoInline, new Vector2(.9f, -1)));
+ velocityThreshold = new TextInput(false, new Vector2(0.9f, -1f), anchor: Anchor.AutoInline);
+ velocityThreshold.Validators.Add(new TextValidatorNumbersOnly(true));
+ velocityThreshold.Value = "300";
+ velocityThreshold.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(velocityThreshold);
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ stationaryHue.Value = ((VelocityHueModifier)_modifiers[key]).StationaryHue.ToString();
+ velocityHue.Value = ((VelocityHueModifier)_modifiers[key]).VelocityHue.ToString();
+ velocityThreshold.Value = ((VelocityHueModifier)_modifiers[key]).VelocityThreshold.ToString();
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.VelocityHueModifier());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ VelocityHueModifier currentModifier = (VelocityHueModifier)modifier;
+
+ if (stationaryHue.Value != null && !stationaryHue.Value.Equals("") && !stationaryHue.Value.Equals("-"))
+ currentModifier.StationaryHue = float.Parse(stationaryHue.Value.Replace(".", ","));
+
+ if (velocityHue.Value != null && !velocityHue.Value.Equals("") && !velocityHue.Value.Equals("-"))
+ currentModifier.VelocityHue = float.Parse(velocityHue.Value.Replace(".", ","));
+
+ if (velocityThreshold.Value != null && !velocityThreshold.Value.Equals("") && !velocityThreshold.Value.Equals("-"))
+ currentModifier.VelocityThreshold = float.Parse(velocityThreshold.Value.Replace(".", ","));
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Modifiers/Vortex.cs b/Venus Particle Editor/Modifiers/Vortex.cs
new file mode 100644
index 0000000..a212245
--- /dev/null
+++ b/Venus Particle Editor/Modifiers/Vortex.cs
@@ -0,0 +1,140 @@
+using GeonBit.UI.Entities;
+using GeonBit.UI.Entities.TextValidators;
+using Microsoft.Xna.Framework;
+using VenusParticleEngine.Core;
+using VenusParticleEngine.Core.Modifiers;
+using System.Collections.Generic;
+
+namespace VenusParticleEditor.Modifiers
+{
+ class Vortex
+ {
+ private CheckBox checkboxActive;
+ private string key = "Vortex";
+ private Panel panelMaster;
+ private Panel panelInside;
+ private Vector2 masterSize = new Vector2(-1, 500);
+ private Vector2 masterSizeMinimized = new Vector2(-1, 100);
+ private Dictionary _modifiers;
+
+ private TextInput positionX;
+ private TextInput positionY;
+ private TextInput mass;
+ private TextInput maxSpeed { get; set; }
+
+ public Panel Panel
+ {
+ get { return panelMaster; }
+ }
+
+ public Vortex()
+ {
+ panelMaster = new Panel(masterSize, PanelSkin.None, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ panelInside = new Panel(new Vector2(GlobalFields.PANEL_EDITOR_INSIDE_SIZE.X, 380), PanelSkin.Simple, anchor: Anchor.AutoInline, offset: new Vector2(0, 0));
+ checkboxActive = new CheckBox("Active", isChecked: false)
+ {
+ OnClick = (Entity btn) => { OnClickCheckboxActive(); }
+ };
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+
+ panelMaster.AddChild(new RichParagraph("{{GOLD}} Vortex"));
+ panelMaster.AddChild(checkboxActive);
+ panelMaster.AddChild(panelInside);
+
+ panelInside.AddChild(new Paragraph("Position", Anchor.AutoInline, new Vector2(.9f, -1)));
+
+ panelInside.AddChild(new Paragraph("X", Anchor.AutoInline, new Vector2(0.2f, -1)));
+ positionX = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ positionX.Validators.Add(new TextValidatorNumbersOnly(true));
+ positionX.Value = "50";
+ positionX.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(positionX);
+
+ panelInside.AddChild(new Paragraph("Y", Anchor.AutoInline, new Vector2(0.2f, -1)));
+ positionY = new TextInput(false, new Vector2(0.3f, -1f), anchor: Anchor.AutoInline);
+ positionY.Validators.Add(new TextValidatorNumbersOnly(true));
+ positionY.Value = "50";
+ positionY.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(positionY);
+
+ panelInside.AddChild(new Paragraph("Mass", Anchor.AutoInline, new Vector2(.9f, -1)));
+ mass = new TextInput(false, new Vector2(0.9f, -1f), anchor: Anchor.AutoInline);
+ mass.Validators.Add(new TextValidatorNumbersOnly(true));
+ mass.Value = "10";
+ mass.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(mass);
+
+ panelInside.AddChild(new Paragraph("Max Speed", Anchor.AutoInline, new Vector2(.9f, -1)));
+ maxSpeed = new TextInput(false, new Vector2(0.9f, -1f), anchor: Anchor.AutoInline);
+ maxSpeed.Validators.Add(new TextValidatorNumbersOnly(true));
+ maxSpeed.Value = "10";
+ maxSpeed.ValueWhenEmpty = "0.1";
+ panelInside.AddChild(maxSpeed);
+ }
+
+ public void Refresh(Dictionary modifiers)
+ {
+ _modifiers = modifiers;
+ if (_modifiers != null && _modifiers.ContainsKey(key))
+ {
+ positionX.Value = ((VortexModifier)_modifiers[key]).Position.X.ToString();
+ positionY.Value = ((VortexModifier)_modifiers[key]).Position.Y.ToString();
+ mass.Value = ((VortexModifier)_modifiers[key]).Mass.ToString();
+ maxSpeed.Value = ((VortexModifier)_modifiers[key]).MaxSpeed.ToString();
+ }
+ }
+
+ private void OnClickCheckboxActive()
+ {
+ if (checkboxActive.Checked)
+ {
+ _modifiers.Add(key, new VenusParticleEngine.Core.Modifiers.VortexModifier());
+ }
+ else
+ {
+ _modifiers.Remove(key);
+ }
+ }
+
+ public void Update()
+ {
+ if (_modifiers == null) { return; }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ panelInside.Visible = true;
+ panelMaster.Size = masterSize;
+ checkboxActive.Checked = true;
+ }
+ else
+ {
+ panelInside.Visible = false;
+ panelMaster.Size = masterSizeMinimized;
+ checkboxActive.Checked = false;
+ }
+
+ if (_modifiers.ContainsKey(key))
+ {
+ UpdateModifier(_modifiers[key]);
+ }
+ }
+
+ private void UpdateModifier(IModifier modifier)
+ {
+ VortexModifier currentModifier = (VortexModifier)modifier;
+
+ if (positionX.Value != null && !positionX.Value.Equals("") && !positionX.Value.Equals("-")
+ && positionY.Value != null && !positionY.Value.Equals("") && !positionY.Value.Equals("-"))
+ currentModifier.Position = new Vector(float.Parse(positionX.Value.Replace(".", ",")), float.Parse(positionY.Value.Replace(".", ",")));
+
+ if (mass.Value != null && !mass.Value.Equals("") && !mass.Value.Equals("-"))
+ currentModifier.Mass = float.Parse(mass.Value.Replace(".", ","));
+
+ if (maxSpeed.Value != null && !maxSpeed.Value.Equals("") && !maxSpeed.Value.Equals("-"))
+ currentModifier.MaxSpeed = float.Parse(maxSpeed.Value.Replace(".", ","));
+
+ _modifiers[key] = currentModifier;
+ }
+ }
+}
diff --git a/Venus Particle Editor/Venus Particle Editor.shproj b/Venus Particle Editor/Venus Particle Editor.shproj
new file mode 100644
index 0000000..506415e
--- /dev/null
+++ b/Venus Particle Editor/Venus Particle Editor.shproj
@@ -0,0 +1,12 @@
+
+
+
+ a0cdbd0e-3a41-42b7-9425-a838bc2c7383
+
+
+
+
+
+
+
+
diff --git a/Venus Particle Editor/Venus_Particle_Editor.projitems b/Venus Particle Editor/Venus_Particle_Editor.projitems
new file mode 100644
index 0000000..95dbb5b
--- /dev/null
+++ b/Venus Particle Editor/Venus_Particle_Editor.projitems
@@ -0,0 +1,40 @@
+
+
+
+ $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
+ true
+ 368db2e4-c0b7-4851-9879-ec082c5ceb76
+
+
+ Venus_Particle_Editor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/DataTypes.dll b/libs/DataTypes.dll
new file mode 100644
index 0000000..891f1ff
Binary files /dev/null and b/libs/DataTypes.dll differ
diff --git a/libs/GeonBit.UI.dll b/libs/GeonBit.UI.dll
new file mode 100644
index 0000000..800a843
Binary files /dev/null and b/libs/GeonBit.UI.dll differ
diff --git a/libs/MonoGame.Framework.dll b/libs/MonoGame.Framework.dll
new file mode 100644
index 0000000..bc48da2
Binary files /dev/null and b/libs/MonoGame.Framework.dll differ
diff --git a/libs/Newtonsoft.Json.dll b/libs/Newtonsoft.Json.dll
new file mode 100644
index 0000000..8069902
Binary files /dev/null and b/libs/Newtonsoft.Json.dll differ
diff --git a/libs/System.Windows.Forms.dll b/libs/System.Windows.Forms.dll
new file mode 100644
index 0000000..e12aaab
Binary files /dev/null and b/libs/System.Windows.Forms.dll differ
diff --git a/libs/VenusParticleEngine.dll b/libs/VenusParticleEngine.dll
new file mode 100644
index 0000000..e98614d
Binary files /dev/null and b/libs/VenusParticleEngine.dll differ
diff --git a/libs/freetype29win_x64.dll b/libs/freetype29win_x64.dll
new file mode 100644
index 0000000..da8c390
Binary files /dev/null and b/libs/freetype29win_x64.dll differ
diff --git a/venus.ico b/venus.ico
new file mode 100644
index 0000000..3c376a9
Binary files /dev/null and b/venus.ico differ