Browse Source

Adding a button 'Reset Viewport' and checkbox 'Show Axes' for particle editor

Ivan K 10 years ago
parent
commit
f317df2961

+ 22 - 1
bin/Data/Scripts/Editor/EditorParticleEffect.as

@@ -7,11 +7,13 @@ bool inParticleEffectRefresh = false;
 View3D@ particleEffectPreview;
 Scene@ particlePreviewScene;
 Node@ particleEffectPreviewNode;
+Node@ particleEffectPreviewGizmoNode;
 Node@ particlePreviewCameraNode;
 Node@ particlePreviewLightNode;
 Light@ particlePreviewLight;
 ParticleEmitter@ particleEffectEmitter;
 float particleResetTimer;
+bool showParticlePreviewAxes = true;
 
 void CreateParticleEffectEditor()
 {
@@ -116,7 +118,24 @@ void CreateParticleEffectEditor()
     SubscribeToEvent(particleEffectWindow.GetChild("Scaled", true), "Toggled", "EditParticleEffectScaled");
     SubscribeToEvent(particleEffectWindow.GetChild("Sorted", true), "Toggled", "EditParticleEffectSorted");
     SubscribeToEvent(particleEffectWindow.GetChild("Relative", true), "Toggled", "EditParticleEffectRelative");
+    
+    SubscribeToEvent(particleEffectWindow.GetChild("ResetViewport", true), "Released", "ParticleEffectResetViewport");
+    SubscribeToEvent(particleEffectWindow.GetChild("ShowAxes", true), "Toggled", "ParticleEffectShowAxes");
+}
+
+void ParticleEffectResetViewport(StringHash eventType, VariantMap& eventData)
+{
+    particleEffectPreviewNode.rotation = Quaternion(0, 0, 0);
+    particleEffectPreviewNode.worldPosition = Vector3(0, 0, 0);
+    particleEffectPreview.QueueUpdate();
+}
 
+void ParticleEffectShowAxes(StringHash eventType, VariantMap& eventData)
+{
+    CheckBox@ element = eventData["Element"].GetPtr();
+    showParticlePreviewAxes = element.checked;
+    particleEffectPreviewGizmoNode.enabled = showParticlePreviewAxes;
+    particleEffectPreview.QueueUpdate();
 }
 
 void EditParticleEffectColorFrameNew(StringHash eventType, VariantMap& eventData)
@@ -814,7 +833,8 @@ void InitParticleEffectPreview()
 
     particleEffectPreviewNode = particlePreviewScene.CreateChild("PreviewEmitter");
     particleEffectPreviewNode.rotation = Quaternion(0, 0, 0);
-    StaticModel@ gizmo = particleEffectPreviewNode.CreateComponent("StaticModel");
+    particleEffectPreviewGizmoNode = particleEffectPreviewNode.CreateChild("Gizmo");
+    StaticModel@ gizmo = particleEffectPreviewGizmoNode.CreateComponent("StaticModel");
     gizmo.model = cache.GetResource("Model", "Models/Editor/Axes.mdl");
     gizmo.materials[0] = cache.GetResource("Material", "Materials/Editor/RedUnlit.xml");
     gizmo.materials[1] = cache.GetResource("Material", "Materials/Editor/GreenUnlit.xml");
@@ -1195,6 +1215,7 @@ void RefreshParticleEffectPreview()
 {
     if (particleEffectEmitter is null || editParticleEffect is null)
         return;
+    cast<CheckBox>(particleEffectWindow.GetChild("ShowAxes", true)).checked = showParticlePreviewAxes;
     particleEffectEmitter.effect = editParticleEffect;
     particleEffectEmitter.Reset();
     particleEffectPreview.QueueUpdate();

BIN
bin/Data/Textures/UI.png


+ 6 - 0
bin/Data/UI/DefaultStyle.xml

@@ -296,6 +296,12 @@
         <attribute name="Min Size" value="0 11" />
         <attribute name="Max Size" value="2147483647 11" />
     </element>
+    <element type="EditorVerticalDivider" style="BorderImage" auto="false">
+        <attribute name="Image Rect" value="144 64 155 80" />
+        <attribute name="Border" value="4 4 4 4" />
+        <attribute name="Min Size" value="11 0" />
+        <attribute name="Max Size" value="11 2147483647" />
+    </element>
     <element type="EditorDragSlider" style="BorderImage">
 	    <attribute name="Image Rect" value="240 64 256 80" />
     </element>

+ 42 - 3
bin/Data/UI/EditorParticleEffectWindow.xml

@@ -20,10 +20,49 @@
     <element type="BorderImage" style="EditorDivider" />
     <element>
         <attribute name="Layout Mode" value="Horizontal" />
-        <element type="View3D">
-            <attribute name="Name" value="ParticleEffectPreview" />
-            <attribute name="Use Derived Opacity" value="false" />
+        <element>
+            <attribute name="Layout Mode" value="Vertical" />
+            <element type="View3D">
+                <attribute name="Name" value="ParticleEffectPreview" />
+                <attribute name="Use Derived Opacity" value="false" />
+            </element>
+            <element type="BorderImage" style="EditorDivider" />
+            <element>
+                <attribute name="Layout Mode" value="Horizontal" />
+                <attribute name="Min Size" value="0 16" />
+                <attribute name="Max Size" value="2147483647 16" />
+                <attribute name="Layout Spacing" value="4" />
+                <element type="Button">
+                    <attribute name="Name" value="ResetViewport" />
+                    <attribute name="Layout Mode" value="Horizontal" />
+                    <attribute name="Layout Border" value="1 1 1 1" />
+                    <element type="Text">
+                        <attribute name="Text" value="Reset Viewport" />
+                        <attribute name="Text Alignment" value="Center" />
+                    </element>
+                </element>
+                <element type="BorderImage" style="EditorVerticalDivider" />
+                <element>
+                    <attribute name="Min Size" value="0 16" />
+                    <attribute name="Max Size" value="2147483647 16" />
+                    <attribute name="Layout Mode" value="Horizontal" />
+                    <attribute name="Layout Spacing" value="10" />
+                    <element type="Text" style="EditorAttributeText">
+                        <attribute name="Text" value="Show Axes" />
+                    </element>
+                    <element>
+                        <attribute name="Min Size" value="0 16" />
+                        <attribute name="Max Size" value="2147483647 16" />
+                        <attribute name="Layout Mode" value="Horizontal" />
+                        <attribute name="Layout Spacing" value="1" />
+                        <element type="CheckBox">
+                            <attribute name="Name" value="ShowAxes" />
+                        </element>
+                    </element>
+                </element>
+            </element>
         </element>
+        <element type="BorderImage" style="EditorVerticalDivider" />
         <element>
             <attribute name="Layout Mode" value="Vertical" />
             <element>