From d15c7f7b200c2e0253c9f230741e8e49b60715c5 Mon Sep 17 00:00:00 2001 From: Stuart Buchanan <stuart_d_buchanan@yahoo.co.uk> Date: Sun, 7 Mar 2021 19:29:39 +0000 Subject: [PATCH] WS30: LOD Range GUI for WS3.0 GUI changes to allow control of line feature rendering and provide a more intuitive UI for other WS3.0 parameters --- gui/dialogs/rendering.xml | 43 --- gui/dialogs/static-lod.xml | 570 +++++++++++++++++++++++++++++++------ 2 files changed, 489 insertions(+), 124 deletions(-) diff --git a/gui/dialogs/rendering.xml b/gui/dialogs/rendering.xml index 775db989d..cf23676d2 100644 --- a/gui/dialogs/rendering.xml +++ b/gui/dialogs/rendering.xml @@ -238,49 +238,6 @@ <stretch>true</stretch> </hrule> </group> - <group> - <layout>hbox</layout> - <halign>right</halign> - <text> - <enable> - <equals> - <property>/scenery/use-vpb</property> - <value>true</value> - </equals> - </enable> - <label>Elevation mesh LOD detail range</label> - </text> - <slider> - <name>elev-lod</name> - <enable> - <equals> - <property>/scenery/use-vpb</property> - <value>true</value> - </equals> - </enable> - <min>1.0</min> - <max>10.0</max> - <step>1.0</step> - <fraction>0.17</fraction> - <property>/scenery/elevation-mesh/lod-range-factor</property> - <binding> - <command>dialog-apply</command> - <object-name>elev-lod</object-name> - </binding> - </slider> - <text> - <label>1234567890</label> - <enable> - <equals> - <property>/scenery/use-vpb</property> - <value>true</value> - </equals> - </enable> - <format>%.1f</format> - <live>true</live> - <property>/scenery/elevation-mesh/lod-range-factor</property> - </text> - </group> <group> <layout>hbox</layout> diff --git a/gui/dialogs/static-lod.xml b/gui/dialogs/static-lod.xml index d68e6c857..380443ba4 100644 --- a/gui/dialogs/static-lod.xml +++ b/gui/dialogs/static-lod.xml @@ -6,8 +6,16 @@ <![CDATA[ var reload_props = [ + "/scenery/elevation-mesh/lod-range-factor", "/sim/rendering/static-lod/vegetation-lod-level", "/sim/rendering/static-lod/line-features-lod-level", + "/sim/rendering/static-lod/lod-level[0]/line-features-min-width", + "/sim/rendering/static-lod/lod-level[1]/line-features-min-width", + "/sim/rendering/static-lod/lod-level[2]/line-features-min-width", + "/sim/rendering/static-lod/lod-level[3]/line-features-min-width", + "/sim/rendering/static-lod/lod-level[4]/line-features-min-width", + "/sim/rendering/static-lod/lod-level[5]/line-features-min-width", + "/sim/rendering/static-lod/lod-level[6]/line-features-min-width", "/sim/rendering/static-lod/rough-delta", "/sim/rendering/static-lod/bare-delta"]; @@ -46,6 +54,12 @@ else setprop("/sim/gui/dialogs/static-lod/aimp-mp-mode", "Specify Ranges"); + # /scenery/elevation-mesh/lod-range-factor is a multiplier on the width of the + # LOD mesh. So an lod-range-factor=2 means that a given LoD mesh will be active + # at 2x the mesh width. L6 mesh is typically 2km. So we present to the user a + # km value and convert to a factor + setprop("/sim/gui/dialogs/static-lod/lod-range-km", getprop("/scenery/elevation-mesh/lod-range-factor") * 2); + update_enabling = func{ var mode = getprop("/sim/gui/dialogs/static-lod/aimp-mp-mode"); if (mode == "Low Detail only") { @@ -584,100 +598,494 @@ <group> <layout>hbox</layout> - <halign>center</halign> + <halign>left</halign> <text> - <label>WS3.0</label> + <label>World Scenery 3.0 (Experimental)</label> + </text> + <hrule> + <stretch>true</stretch> + </hrule> + </group> + + <group> + <layout>hbox</layout> + <halign>left</halign> + <text> + <label>WS3.0 uses 7 levels of detail, from 0 (least detailed) to 6 (most detailed).</label> + </text> + </group> + + <group> + <layout>hbox</layout> + <halign>left</halign> + <text> + <label>You can control at which level features are rendered and at what range level 6 is used.</label> </text> </group> <group> <layout>hbox</layout> <halign>center</halign> - <text> - <enable> - <equals> - <property>/scenery/use-vpb</property> - <value>true</value> - </equals> - </enable> - <label>Line Feature LOD Range</label> - </text> - <slider> - <name>line-lod</name> - <enable> - <equals> - <property>/scenery/use-vpb</property> - <value>true</value> - </equals> - </enable> - <min>1.0</min> - <max>8.0</max> - <step>1.0</step> - <fraction>0.17</fraction> - <property>/sim/rendering/static-lod/line-features-lod-level</property> - <binding> - <command>dialog-apply</command> - <object-name>line-lod</object-name> - </binding> - </slider> - <text> - <label>1234567890</label> - <enable> - <equals> - <property>/scenery/use-vpb</property> - <value>true</value> - </equals> - </enable> - <format>%d</format> - <live>true</live> - <property>/sim/rendering/static-lod/line-features-lod-level</property> - </text> + + <group> + <layout>table</layout> + <default-padding>4</default-padding> + <valign>center</valign> + <text> + <row>0</row> + <col>0</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <label>Detail range</label> + </text> + + <slider> + <name>elev-lod</name> + <row>0</row> + <col>1</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <min>1.0</min> + <max>10.0</max> + <step>1.0</step> + <fraction>0.17</fraction> + <property>/scenery/elevation-mesh/lod-range-factor</property> + <binding> + <command>dialog-apply</command> + <object-name>elev-lod</object-name> + </binding> + <binding> + <command>nasal</command> + <script> + # /scenery/elevation-mesh/lod-range-factor is a multiplier on the width of the + # LOD mesh. So an lod-range-factor=2 means that a given LoD mesh will be active + # at 2x the mesh width. L6 mesh is typically 2km. So we present to the user a + # km value and convert to a factor + setprop("/sim/gui/dialogs/static-lod/lod-range-km", getprop("/scenery/elevation-mesh/lod-range-factor") * 2); + </script> + </binding> + </slider> + <text> + <label>1234</label> + <row>0</row> + <col>2</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <format>%dkm</format> + <live>true</live> + <property>/sim/gui/dialogs/static-lod/lod-range-km</property> + </text> + + <text> + <row>1</row> + <col>0</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <label>Line Feature minimum LOD</label> + </text> + <slider> + <row>1</row> + <col>1</col> + <name>line-lod</name> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <min>0.0</min> + <max>6.0</max> + <step>1.0</step> + <fraction>0.17</fraction> + <property>/sim/rendering/static-lod/line-features-lod-level</property> + <binding> + <command>dialog-apply</command> + <object-name>line-lod</object-name> + </binding> + </slider> + <text> + <row>1</row> + <col>2</col> + <label>1</label> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <format>%d</format> + <live>true</live> + <property>/sim/rendering/static-lod/line-features-lod-level</property> + </text> + + <text> + <row>2</row> + <col>0</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <label>Vegetation minimum LOD</label> + </text> + <slider> + <row>2</row> + <col>1</col> + <name>veg-lod</name> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <min>0.0</min> + <max>6.0</max> + <step>1.0</step> + <fraction>0.17</fraction> + <property>/sim/rendering/static-lod/vegetation-lod-level</property> + <binding> + <command>dialog-apply</command> + <object-name>veg-lod</object-name> + </binding> + </slider> + <text> + <row>2</row> + <col>2</col> + <label>1</label> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <format>%d</format> + <live>true</live> + <property>/sim/rendering/static-lod/vegetation-lod-level</property> + </text> + </group> </group> + <hrule/> + <group> <layout>hbox</layout> <halign>center</halign> - <text> - <enable> - <equals> - <property>/scenery/use-vpb</property> - <value>true</value> - </equals> - </enable> - <label>Vegetation LOD Range</label> - </text> - <slider> - <name>veg-lod</name> - <enable> - <equals> - <property>/scenery/use-vpb</property> - <value>true</value> - </equals> - </enable> - <min>1.0</min> - <max>8.0</max> - <step>1.0</step> - <fraction>0.17</fraction> - <property>/sim/rendering/static-lod/vegetation-lod-level</property> - <binding> - <command>dialog-apply</command> - <object-name>veg-lod</object-name> - </binding> - </slider> - <text> - <label>1234567890</label> - <enable> - <equals> - <property>/scenery/use-vpb</property> - <value>true</value> - </equals> - </enable> - <format>%d</format> - <live>true</live> - <property>/sim/rendering/static-lod/vegetation-lod-level</property> - </text> - </group> + <group> + <layout>table</layout> + <default-padding>4</default-padding> + <valign>center</valign> + <text> + <row>0</row> + <col>0</col> + <label>LOD Level</label> + </text> + <text> + <row>0</row> + <col>1</col> + <colspan>2</colspan> + <label>Minimum Line Feature Width (m)</label> + </text> + <text> + <row>1</row> + <col>0</col> + <label>0</label> + </text> + <slider> + <row>1</row> + <col>1</col> + <name>line-width-lod0</name> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <min>1.0</min> + <max>50.0</max> + <step>1.0</step> + <fraction>0.17</fraction> + <property>/sim/rendering/static-lod/lod-level[0]/line-features-min-width</property> + <binding> + <command>dialog-apply</command> + <object-name>line-width-lod0</object-name> + </binding> + </slider> + <text> + <label>12</label> + <row>1</row> + <col>2</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <format>%d</format> + <live>true</live> + <property>/sim/rendering/static-lod/lod-level[0]/line-features-min-width</property> + </text> + + <text> + <row>2</row> + <col>0</col> + <label>1</label> + </text> + <slider> + <row>2</row> + <col>1</col> + <name>line-width-lod1</name> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <min>1.0</min> + <max>50.0</max> + <step>1.0</step> + <fraction>0.17</fraction> + <property>/sim/rendering/static-lod/lod-level[1]/line-features-min-width</property> + <binding> + <command>dialog-apply</command> + <object-name>line-width-lod1</object-name> + </binding> + </slider> + <text> + <label>12</label> + <row>2</row> + <col>2</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <format>%d</format> + <live>true</live> + <property>/sim/rendering/static-lod/lod-level[1]/line-features-min-width</property> + </text> + + <text> + <row>3</row> + <col>0</col> + <label>2</label> + </text> + <slider> + <row>3</row> + <col>1</col> + <name>line-width-lod2</name> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <min>1.0</min> + <max>50.0</max> + <step>1.0</step> + <fraction>0.17</fraction> + <property>/sim/rendering/static-lod/lod-level[2]/line-features-min-width</property> + <binding> + <command>dialog-apply</command> + <object-name>line-width-lod2</object-name> + </binding> + </slider> + <text> + <label>12</label> + <row>3</row> + <col>2</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <format>%d</format> + <live>true</live> + <property>/sim/rendering/static-lod/lod-level[2]/line-features-min-width</property> + </text> + + <text> + <row>4</row> + <col>0</col> + <label>3</label> + </text> + <slider> + <row>4</row> + <col>1</col> + <name>line-width-lod3</name> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <min>1.0</min> + <max>50.0</max> + <step>1.0</step> + <fraction>0.17</fraction> + <property>/sim/rendering/static-lod/lod-level[3]/line-features-min-width</property> + <binding> + <command>dialog-apply</command> + <object-name>line-width-lod3</object-name> + </binding> + </slider> + <text> + <label>12</label> + <row>4</row> + <col>2</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <format>%d</format> + <live>true</live> + <property>/sim/rendering/static-lod/lod-level[3]/line-features-min-width</property> + </text> + + <text> + <row>5</row> + <col>0</col> + <label>4</label> + </text> + <slider> + <row>5</row> + <col>1</col> + <name>line-width-lod4</name> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <min>1.0</min> + <max>50.0</max> + <step>1.0</step> + <fraction>0.17</fraction> + <property>/sim/rendering/static-lod/lod-level[4]/line-features-min-width</property> + <binding> + <command>dialog-apply</command> + <object-name>line-width-lod4</object-name> + </binding> + </slider> + <text> + <label>12</label> + <row>5</row> + <col>2</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <format>%d</format> + <live>true</live> + <property>/sim/rendering/static-lod/lod-level[4]/line-features-min-width</property> + </text> + + <text> + <row>6</row> + <col>0</col> + <label>5</label> + </text> + <slider> + <row>6</row> + <col>1</col> + <name>line-width-lod5</name> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <min>1.0</min> + <max>50.0</max> + <step>1.0</step> + <fraction>0.17</fraction> + <property>/sim/rendering/static-lod/lod-level[5]/line-features-min-width</property> + <binding> + <command>dialog-apply</command> + <object-name>line-width-lod5</object-name> + </binding> + </slider> + <text> + <label>12</label> + <row>6</row> + <col>2</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <format>%d</format> + <live>true</live> + <property>/sim/rendering/static-lod/lod-level[5]/line-features-min-width</property> + </text> + + <text> + <row>7</row> + <col>0</col> + <label>6</label> + </text> + <slider> + <row>7</row> + <col>1</col> + <name>line-width-lod6</name> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <min>1.0</min> + <max>50.0</max> + <step>1.0</step> + <fraction>0.17</fraction> + <property>/sim/rendering/static-lod/lod-level[6]/line-features-min-width</property> + <binding> + <command>dialog-apply</command> + <object-name>line-width-lod6</object-name> + </binding> + </slider> + <text> + <label>12</label> + <row>7</row> + <col>2</col> + <enable> + <equals> + <property>/scenery/use-vpb</property> + <value>true</value> + </equals> + </enable> + <format>%d</format> + <live>true</live> + <property>/sim/rendering/static-lod/lod-level[6]/line-features-min-width</property> + </text> + </group> + + </group> + <hrule/> <group>