aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra')
-rw-r--r--linden/indra/newview/app_settings/grass.xml14
-rw-r--r--linden/indra/newview/app_settings/settings.xml32
-rw-r--r--linden/indra/newview/app_settings/trees.xml32
-rw-r--r--linden/indra/newview/llfloatertools.cpp74
-rw-r--r--linden/indra/newview/llfloatertools.h4
-rw-r--r--linden/indra/newview/lltoolplacer.cpp18
-rw-r--r--linden/indra/newview/llvograss.cpp11
-rw-r--r--linden/indra/newview/llvograss.h3
-rw-r--r--linden/indra/newview/llvotree.cpp14
-rw-r--r--linden/indra/newview/llvotree.h3
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_tools.xml3
11 files changed, 172 insertions, 36 deletions
diff --git a/linden/indra/newview/app_settings/grass.xml b/linden/indra/newview/app_settings/grass.xml
index 4fc3b79..bdfa603 100644
--- a/linden/indra/newview/app_settings/grass.xml
+++ b/linden/indra/newview/app_settings/grass.xml
@@ -1,47 +1,47 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<grass_defs> 2<grass_defs>
3
3 <grass 4 <grass
4 name="Grass 0" 5 name="Grass - Medium"
5 species_id="0" 6 species_id="0"
6 texture_id="6c4727b8-ac79-ba44-3b81-f9aa887b47eb" 7 texture_id="6c4727b8-ac79-ba44-3b81-f9aa887b47eb"
7 blade_size_x="1.35" 8 blade_size_x="1.35"
8 blade_size_y="1.35" 9 blade_size_y="1.35"
9 /> 10 />
10 <grass 11 <grass
11 name="Grass 1" 12 name="Grass - Short 2"
12 species_id="1" 13 species_id="1"
13 texture_id="79504bf5-c3ec-0763-6563-d843de66d0a1" 14 texture_id="79504bf5-c3ec-0763-6563-d843de66d0a1"
14 blade_size_x="1.0" 15 blade_size_x="1.0"
15 blade_size_y="0.66" 16 blade_size_y="0.66"
16 /> 17 />
17 <grass 18 <grass
18 name="Grass 2" 19 name="Grass - Tall Green"
19 species_id="2" 20 species_id="2"
20 texture_id="6c4727b8-ac79-ba44-3b81-f9aa887b47eb" 21 texture_id="6c4727b8-ac79-ba44-3b81-f9aa887b47eb"
21 blade_size_x="1.8" 22 blade_size_x="1.8"
22 blade_size_y="1.8" 23 blade_size_y="1.8"
23 /> 24 />
24 <grass 25 <grass
25 name="Grass 3" 26 name="Grass - Short 1"
26 species_id="3" 27 species_id="3"
27 texture_id="99bd60a2-3250-efc9-2e39-2fbcadefbecc" 28 texture_id="99bd60a2-3250-efc9-2e39-2fbcadefbecc"
28 blade_size_x="1.0" 29 blade_size_x="1.0"
29 blade_size_y="1.0" 30 blade_size_y="1.0"
30 /> 31 />
31 <grass 32 <grass
32 name="Grass 4" 33 name="Grass - Tall Brown"
33 species_id="4" 34 species_id="4"
34 texture_id="7a2b3a4a-53c2-53ac-5716-aac7d743c020" 35 texture_id="7a2b3a4a-53c2-53ac-5716-aac7d743c020"
35 blade_size_x="2.25" 36 blade_size_x="2.25"
36 blade_size_y="2.25" 37 blade_size_y="2.25"
37 /> 38 />
38 <grass 39 <grass
39 name="undergrowth_1" 40 name="Leafy Ground Cover"
40 species_id="5" 41 species_id="5"
41 texture_id="8f458549-173b-23ff-d4ff-bfaa5ea2371b" 42 texture_id="8f458549-173b-23ff-d4ff-bfaa5ea2371b"
42 blade_size_x="2.0" 43 blade_size_x="2.0"
43 blade_size_y="2.0" 44 blade_size_y="2.0"
44 /> 45 />
45 46
46
47</grass_defs> \ No newline at end of file 47</grass_defs> \ No newline at end of file
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index cce09e2..4947c45 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -4236,16 +4236,38 @@
4236 <string>default</string> 4236 <string>default</string>
4237 </map> 4237 </map>
4238 <key>LanguageIsPublic</key> 4238 <key>LanguageIsPublic</key>
4239 <map> 4239 <map>
4240 <key>Comment</key> 4240 <key>Comment</key>
4241 <string>Let other residents see our language information</string> 4241 <string>Let other residents see our language information</string>
4242 <key>Persist</key> 4242 <key>Persist</key>
4243 <integer>1</integer> 4243 <integer>1</integer>
4244 <key>Type</key> 4244 <key>Type</key>
4245 <string>Boolean</string> 4245 <string>Boolean</string>
4246 <key>Value</key> 4246 <key>Value</key>
4247 <integer>1</integer> 4247 <integer>1</integer>
4248 </map> 4248 </map>
4249 <key>LastGrass</key>
4250 <map>
4251 <key>Comment</key>
4252 <string>The last grass selected in the create dialog</string>
4253 <key>Persist</key>
4254 <integer>1</integer>
4255 <key>Type</key>
4256 <string>String</string>
4257 <key>Value</key>
4258 <integer>Random</integer>
4259 </map>
4260 <key>LastTree</key>
4261 <map>
4262 <key>Comment</key>
4263 <string>The last tree selected in the create dialog</string>
4264 <key>Persist</key>
4265 <integer>1</integer>
4266 <key>Type</key>
4267 <string>String</string>
4268 <key>Value</key>
4269 <integer>Random</integer>
4270 </map>
4249 <key>LastFeatureVersion</key> 4271 <key>LastFeatureVersion</key>
4250 <map> 4272 <map>
4251 <key>Comment</key> 4273 <key>Comment</key>
diff --git a/linden/indra/newview/app_settings/trees.xml b/linden/indra/newview/app_settings/trees.xml
index 213ee85..36ffa62 100644
--- a/linden/indra/newview/app_settings/trees.xml
+++ b/linden/indra/newview/app_settings/trees.xml
@@ -1,24 +1,24 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<tree_defs> 2<tree_defs>
3 <tree name="Pine 1" species_id="0" texture_id="0187babf-6c0d-5891-ebed-4ecab1426683" droop="60.0" twist="5.0" branches="5.0" depth="1" scale_step="0.7" trunk_depth="6" branch_length="8.0" trunk_length="11.5" leaf_scale="22.0" billboard_scale="39.5" billboard_ratio="1.1" trunk_aspect="0.1" branch_aspect="0.05" leaf_rotate="20.0" noise_mag="0.5" noise_scale="2.5" taper="0.8" repeat_z="3" /> 3 <tree name="Pine Tree - Ponderosa" species_id="0" texture_id="0187babf-6c0d-5891-ebed-4ecab1426683" droop="60.0" twist="5.0" branches="5.0" depth="1" scale_step="0.7" trunk_depth="6" branch_length="8.0" trunk_length="11.5" leaf_scale="22.0" billboard_scale="39.5" billboard_ratio="1.1" trunk_aspect="0.1" branch_aspect="0.05" leaf_rotate="20.0" noise_mag="0.5" noise_scale="2.5" taper="0.8" repeat_z="3" />
4 <tree name="Oak" species_id="1" texture_id="8a515889-eac9-fb55-8eba-d2dc09eb32c8" droop="35.0" twist="3.0" branches="4.0" depth="3" scale_step="0.7" trunk_depth="0" branch_length="3.0" trunk_length="3.8" leaf_scale="7.0" billboard_scale="10.25" billboard_ratio="1.0" trunk_aspect="0.15" branch_aspect="0.07" leaf_rotate="0.0" noise_mag="1.2" noise_scale="4.0" taper="0.3" repeat_z="4" /> 4 <tree name="Oak" species_id="1" texture_id="8a515889-eac9-fb55-8eba-d2dc09eb32c8" droop="35.0" twist="3.0" branches="4.0" depth="3" scale_step="0.7" trunk_depth="0" branch_length="3.0" trunk_length="3.8" leaf_scale="7.0" billboard_scale="10.25" billboard_ratio="1.0" trunk_aspect="0.15" branch_aspect="0.07" leaf_rotate="0.0" noise_mag="1.2" noise_scale="4.0" taper="0.3" repeat_z="4" />
5 <tree name="Tropical Bush 1" species_id="2" texture_id="5bc11cd6-2f40-071e-a8da-0903394204f9" droop="10.0" twist="0.0" branches="6.0" depth="1" scale_step="0.5" trunk_depth="1" branch_length="0.5" trunk_length="0.15" leaf_scale="7.5" billboard_scale="5.0" billboard_ratio="1.25" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" /> 5 <tree name="Tropical Plant 1" species_id="2" texture_id="5bc11cd6-2f40-071e-a8da-0903394204f9" droop="10.0" twist="0.0" branches="6.0" depth="1" scale_step="0.5" trunk_depth="1" branch_length="0.5" trunk_length="0.15" leaf_scale="7.5" billboard_scale="5.0" billboard_ratio="1.25" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" />
6 <tree name="Palm 1" species_id="3" texture_id="ca4e8c27-473c-eb1c-2f5d-50ee3f07d85c" droop="0.0" twist="0.0" branches="3.0" depth="1" scale_step="0.5" trunk_depth="0" branch_length="0.7" trunk_length="9.0" leaf_scale="10.0" billboard_scale="13.25" billboard_ratio="1.0" trunk_aspect="0.035" branch_aspect="0.03" leaf_rotate="0.0" noise_mag="0.2" noise_scale="6.0" taper="0.7" repeat_z="10" /> 6 <tree name="Palm Tree 1" species_id="3" texture_id="ca4e8c27-473c-eb1c-2f5d-50ee3f07d85c" droop="0.0" twist="0.0" branches="3.0" depth="1" scale_step="0.5" trunk_depth="0" branch_length="0.7" trunk_length="9.0" leaf_scale="10.0" billboard_scale="13.25" billboard_ratio="1.0" trunk_aspect="0.035" branch_aspect="0.03" leaf_rotate="0.0" noise_mag="0.2" noise_scale="6.0" taper="0.7" repeat_z="10" />
7 <tree name="Dogwood" species_id="4" texture_id="64367bd1-697e-b3e6-0b65-3f862a577366" droop="30.0" twist="0.0" branches="3.0" depth="2" scale_step="0.7" trunk_depth="1" branch_length="2.75" trunk_length="4.0" leaf_scale="5.5" billboard_scale="10.0" billboard_ratio="1.0" trunk_aspect="0.06" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="1.5" noise_scale="2.0" taper="0.8" repeat_z="3" /> 7 <tree name="Dogwood Tree" species_id="4" texture_id="64367bd1-697e-b3e6-0b65-3f862a577366" droop="30.0" twist="0.0" branches="3.0" depth="2" scale_step="0.7" trunk_depth="1" branch_length="2.75" trunk_length="4.0" leaf_scale="5.5" billboard_scale="10.0" billboard_ratio="1.0" trunk_aspect="0.06" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="1.5" noise_scale="2.0" taper="0.8" repeat_z="3" />
8 <tree name="Tropical Bush 2" species_id="5" texture_id="cdd9a9fc-6d0b-f90d-8416-c72b6019bca8" droop="10.0" twist="0.0" branches="3.0" depth="1" scale_step="0.5" trunk_depth="1" branch_length="0.5" trunk_length="0.15" leaf_scale="6.0" billboard_scale="4.5" billboard_ratio="0.9" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" /> 8 <tree name="Tropical Plant 2" species_id="5" texture_id="cdd9a9fc-6d0b-f90d-8416-c72b6019bca8" droop="10.0" twist="0.0" branches="3.0" depth="1" scale_step="0.5" trunk_depth="1" branch_length="0.5" trunk_length="0.15" leaf_scale="6.0" billboard_scale="4.5" billboard_ratio="0.9" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" />
9 <tree name="Palm 2" species_id="6" texture_id="2d784476-d0db-9979-0cff-9408745a7cf3" droop="0.0" twist="0.0" branches="3.0" depth="1" scale_step="0.5" trunk_depth="0" branch_length="0.7" trunk_length="10.0" leaf_scale="7.5" billboard_scale="13.5" billboard_ratio="1.0" trunk_aspect="0.035" branch_aspect="0.03" leaf_rotate="0.0" noise_mag="0.2" noise_scale="6.0" taper="0.6" repeat_z="12" /> 9 <tree name="Palm Tree 2" species_id="6" texture_id="2d784476-d0db-9979-0cff-9408745a7cf3" droop="0.0" twist="0.0" branches="3.0" depth="1" scale_step="0.5" trunk_depth="0" branch_length="0.7" trunk_length="10.0" leaf_scale="7.5" billboard_scale="13.5" billboard_ratio="1.0" trunk_aspect="0.035" branch_aspect="0.03" leaf_rotate="0.0" noise_mag="0.2" noise_scale="6.0" taper="0.6" repeat_z="12" />
10 <tree name="Cypress 1" species_id="7" texture_id="fb2ae204-3fd1-df33-594f-c9f882830e66" droop="30.0" twist="0.0" branches="3.0" depth="4" scale_step="0.5" trunk_depth="0" branch_length="10.0" trunk_length="10.0" leaf_scale="70.0" billboard_scale="22.5" billboard_ratio="1.0" trunk_aspect="0.05" branch_aspect="0.03" leaf_rotate="0.0" noise_mag="1.2" noise_scale="1.0" taper="0.5" repeat_z="6" /> 10 <tree name="Cypress Tree 1" species_id="7" texture_id="fb2ae204-3fd1-df33-594f-c9f882830e66" droop="30.0" twist="0.0" branches="3.0" depth="4" scale_step="0.5" trunk_depth="0" branch_length="10.0" trunk_length="10.0" leaf_scale="70.0" billboard_scale="22.5" billboard_ratio="1.0" trunk_aspect="0.05" branch_aspect="0.03" leaf_rotate="0.0" noise_mag="1.2" noise_scale="1.0" taper="0.5" repeat_z="6" />
11 <tree name="Cypress 2" species_id="8" texture_id="30047cec-269d-408e-0c30-b2603b887268" droop="30.0" twist="0.0" branches="3.0" depth="4" scale_step="0.6" trunk_depth="3.0" branch_length="7.5" trunk_length="10.0" leaf_scale="35.0" billboard_scale="25.0" billboard_ratio="0.8" trunk_aspect="0.05" branch_aspect="0.04" leaf_rotate="0.0" noise_mag="1.2" noise_scale="1.0" taper="0.5" repeat_z="5" /> 11 <tree name="Cypress Tree 2" species_id="8" texture_id="30047cec-269d-408e-0c30-b2603b887268" droop="30.0" twist="0.0" branches="3.0" depth="4" scale_step="0.6" trunk_depth="3.0" branch_length="7.5" trunk_length="10.0" leaf_scale="35.0" billboard_scale="25.0" billboard_ratio="0.8" trunk_aspect="0.05" branch_aspect="0.04" leaf_rotate="0.0" noise_mag="1.2" noise_scale="1.0" taper="0.5" repeat_z="5" />
12 <tree name="Pine 2" species_id="9" texture_id="d691a01c-13b7-578d-57c0-5caef0b4e7e1" droop="50.0" twist="7.5" branches="4.0" depth="2" scale_step="0.7" trunk_depth="6.0" branch_length="6.0" trunk_length="10.0" leaf_scale="15.5" billboard_scale="33.0" billboard_ratio="1.35" trunk_aspect="0.1" branch_aspect="0.08" leaf_rotate="5.0" noise_mag="0.5" noise_scale="2.5" taper="0.7" repeat_z="3" /> 12 <tree name="Pine Tree - Evergreen" species_id="9" texture_id="d691a01c-13b7-578d-57c0-5caef0b4e7e1" droop="50.0" twist="7.5" branches="4.0" depth="2" scale_step="0.7" trunk_depth="6.0" branch_length="6.0" trunk_length="10.0" leaf_scale="15.5" billboard_scale="33.0" billboard_ratio="1.35" trunk_aspect="0.1" branch_aspect="0.08" leaf_rotate="5.0" noise_mag="0.5" noise_scale="2.5" taper="0.7" repeat_z="3" />
13 <tree name="Plumeria" species_id="10" texture_id="6de37e4e-7029-61f5-54b8-f5e63f983f58" droop="8.0" twist="7.0" branches="3.0" depth="2" scale_step="0.6" trunk_depth="0" branch_length="3.0" trunk_length="0.1" leaf_scale="20" billboard_scale="10.0" billboard_ratio="1.35" trunk_aspect="0.10" branch_aspect="0.075" leaf_rotate="0.0" noise_mag="0" noise_scale="0" taper="0.85" repeat_z="2" /> 13 <tree name="Plumeria" species_id="10" texture_id="6de37e4e-7029-61f5-54b8-f5e63f983f58" droop="8.0" twist="7.0" branches="3.0" depth="2" scale_step="0.6" trunk_depth="0" branch_length="3.0" trunk_length="0.1" leaf_scale="20" billboard_scale="10.0" billboard_ratio="1.35" trunk_aspect="0.10" branch_aspect="0.075" leaf_rotate="0.0" noise_mag="0" noise_scale="0" taper="0.85" repeat_z="2" />
14 <tree name="Winter Pine 1" species_id="11" texture_id="10d2a01a-0818-84b9-4b96-c2eb63256519" droop="90.0" twist="2.5" branches="6.0" depth="1" scale_step="0.66" trunk_depth="8" branch_length="0.0" trunk_length="4" leaf_scale="6.75" billboard_scale="12.5" billboard_ratio="0.6" trunk_aspect="0.1" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="0.0" noise_scale="2.5" taper="0.85" repeat_z="2" /> 14 <tree name="Winter Pine Tree 1" species_id="11" texture_id="10d2a01a-0818-84b9-4b96-c2eb63256519" droop="90.0" twist="2.5" branches="6.0" depth="1" scale_step="0.66" trunk_depth="8" branch_length="0.0" trunk_length="4" leaf_scale="6.75" billboard_scale="12.5" billboard_ratio="0.6" trunk_aspect="0.1" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="0.0" noise_scale="2.5" taper="0.85" repeat_z="2" />
15 <tree name="Winter Aspen" species_id="12" texture_id="7c0cf89b-44b1-1ce2-dd74-07102a98ac2a" droop="85.0" twist="3.0" branches="5" depth="1" scale_step="0.6" trunk_depth="8" branch_length="3.0" trunk_length="4.5" leaf_scale="8" billboard_scale="12" billboard_ratio=".675" trunk_aspect="0.06" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="0.75" noise_scale="2.5" taper="0.8" repeat_z="2" /> 15 <tree name="Winter Aspen Tree" species_id="12" texture_id="7c0cf89b-44b1-1ce2-dd74-07102a98ac2a" droop="85.0" twist="3.0" branches="5" depth="1" scale_step="0.6" trunk_depth="8" branch_length="3.0" trunk_length="4.5" leaf_scale="8" billboard_scale="12" billboard_ratio=".675" trunk_aspect="0.06" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="0.75" noise_scale="2.5" taper="0.8" repeat_z="2" />
16 <tree name="Winter Pine 2" species_id="13" texture_id="67931331-0c02-4876-1255-28770896c6a2" droop="140.0" twist="5.0" branches="6.0" depth="1" scale_step="0.6" trunk_depth="7" branch_length="0.0" trunk_length="3" leaf_scale="5.0" billboard_scale="7.5" billboard_ratio="0.5" trunk_aspect="0.1" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="0.750" noise_scale="2.5" taper="0.5" repeat_z="2" /> 16 <tree name="Winter Pine Tree 2" species_id="13" texture_id="67931331-0c02-4876-1255-28770896c6a2" droop="140.0" twist="5.0" branches="6.0" depth="1" scale_step="0.6" trunk_depth="7" branch_length="0.0" trunk_length="3" leaf_scale="5.0" billboard_scale="7.5" billboard_ratio="0.5" trunk_aspect="0.1" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="0.750" noise_scale="2.5" taper="0.5" repeat_z="2" />
17 <tree name="Eucalyptus" species_id="14" texture_id="a6162133-724b-54df-a12f-51cd070ad6f3" droop="20.0" twist="5.0" branches="3.6" depth="4" scale_step="0.6" trunk_depth="0" branch_length="12.0" trunk_length="8.0" leaf_scale="33.0" billboard_scale="24" billboard_ratio="1.3" trunk_aspect="0.15" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="0" noise_scale="0" taper="0.675" repeat_z="3" /> 17 <tree name="Eucalyptus Tree" species_id="14" texture_id="a6162133-724b-54df-a12f-51cd070ad6f3" droop="20.0" twist="5.0" branches="3.6" depth="4" scale_step="0.6" trunk_depth="0" branch_length="12.0" trunk_length="8.0" leaf_scale="33.0" billboard_scale="24" billboard_ratio="1.3" trunk_aspect="0.15" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="0" noise_scale="0" taper="0.675" repeat_z="3" />
18 <tree name="Fern" species_id="15" texture_id="8872f2b8-31db-42d8-580a-b3e4a91262de" droop="12.0" twist="0.0" branches="7.0" depth="1" scale_step="0.5" trunk_depth="0.1" branch_length="0.01" trunk_length="0.0" leaf_scale="4" billboard_scale="3.5" billboard_ratio="0.85" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" /> 18 <tree name="Fern" species_id="15" texture_id="8872f2b8-31db-42d8-580a-b3e4a91262de" droop="12.0" twist="0.0" branches="7.0" depth="1" scale_step="0.5" trunk_depth="0.1" branch_length="0.01" trunk_length="0.0" leaf_scale="4" billboard_scale="3.5" billboard_ratio="0.85" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" />
19 <tree name="Eelgrass" species_id="16" texture_id="96b4de31-f4fa-337d-ec78-451e3609769e" droop="0.0" twist="0.0" branches="5.0" depth="1" scale_step="0.5" trunk_depth="1" branch_length="0.5" trunk_length="0.15" leaf_scale="5.0" billboard_scale="3.0" billboard_ratio="1.0" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" /> 19 <tree name="Eelgrass" species_id="16" texture_id="96b4de31-f4fa-337d-ec78-451e3609769e" droop="0.0" twist="0.0" branches="5.0" depth="1" scale_step="0.5" trunk_depth="1" branch_length="0.5" trunk_length="0.15" leaf_scale="5.0" billboard_scale="3.0" billboard_ratio="1.0" trunk_aspect="1.0" branch_aspect="0.08" leaf_rotate="0.0" noise_mag="1.0" noise_scale="1.0" taper="0.2" repeat_z="1" />
20 <tree name="Sea Sword" species_id="17" texture_id="5894e2e7-ab8d-edfa-e61c-18cf16854ba3" droop="0.0" twist="0.0" branches="6.0" depth="1" scale_step="0.7" trunk_depth="1" branch_length="0.0" trunk_length="0.0" leaf_scale="2.0" billboard_scale="2.0" billboard_ratio="1.0" trunk_aspect="1.0" branch_aspect="1.0" leaf_rotate="0.0" noise_mag="0.5" noise_scale="0.0" taper="0.0" repeat_z="1" /> 20 <tree name="Sea Sword" species_id="17" texture_id="5894e2e7-ab8d-edfa-e61c-18cf16854ba3" droop="0.0" twist="0.0" branches="6.0" depth="1" scale_step="0.7" trunk_depth="1" branch_length="0.0" trunk_length="0.0" leaf_scale="2.0" billboard_scale="2.0" billboard_ratio="1.0" trunk_aspect="1.0" branch_aspect="1.0" leaf_rotate="0.0" noise_mag="0.5" noise_scale="0.0" taper="0.0" repeat_z="1" />
21 <tree name="Kelp 1" species_id="18" texture_id="2caf1179-7861-6ff3-4b7d-46e17780bdfa" droop="-15.0" twist="0.0" branches="1.0" depth="1" scale_step="1.0" trunk_depth="3" branch_length="2.5" trunk_length="0.75" leaf_scale="1.85" billboard_scale="4.9" billboard_ratio="1.0" trunk_aspect="0.04" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="1.0" noise_scale="2.0" taper="0.8" repeat_z="2" /> 21 <tree name="Kelp (brown)" species_id="18" texture_id="2caf1179-7861-6ff3-4b7d-46e17780bdfa" droop="-15.0" twist="0.0" branches="1.0" depth="1" scale_step="1.0" trunk_depth="3" branch_length="2.5" trunk_length="0.75" leaf_scale="1.85" billboard_scale="4.9" billboard_ratio="1.0" trunk_aspect="0.04" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="1.0" noise_scale="2.0" taper="0.8" repeat_z="2" />
22 <tree name="Beach Grass 1" species_id="19" texture_id="18fb888b-e8f1-dce7-7da7-321d651ea6b0" droop="0.0" twist="0.0" branches="4.0" depth="1" scale_step="0.7" trunk_depth="1" branch_length="0.0" trunk_length="0.0" leaf_scale="4.0" billboard_scale="2.5" billboard_ratio="1.2" trunk_aspect="1.0" branch_aspect="1.0" leaf_rotate="0.0" noise_mag="0.5" noise_scale="0.0" taper="0.0" repeat_z="1" /> 22 <tree name="Beach Grass" species_id="19" texture_id="18fb888b-e8f1-dce7-7da7-321d651ea6b0" droop="0.0" twist="0.0" branches="4.0" depth="1" scale_step="0.7" trunk_depth="1" branch_length="0.0" trunk_length="0.0" leaf_scale="4.0" billboard_scale="2.5" billboard_ratio="1.2" trunk_aspect="1.0" branch_aspect="1.0" leaf_rotate="0.0" noise_mag="0.5" noise_scale="0.0" taper="0.0" repeat_z="1" />
23 <tree name="Kelp 2" species_id="20" texture_id="2a4880b6-b7a3-690a-2049-bfbe38eafb9f" droop="-15.0" twist="0.0" branches="1.0" depth="1" scale_step="1.0" trunk_depth="3" branch_length="2.5" trunk_length="1.35" leaf_scale="2.0" billboard_scale="4.9" billboard_ratio="1.0" trunk_aspect="0.025" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="1.0" noise_scale="2.0" taper="0.8" repeat_z="2" /> 23 <tree name="Kelp (green)" species_id="20" texture_id="2a4880b6-b7a3-690a-2049-bfbe38eafb9f" droop="-15.0" twist="0.0" branches="1.0" depth="1" scale_step="1.0" trunk_depth="3" branch_length="2.5" trunk_length="1.35" leaf_scale="2.0" billboard_scale="4.9" billboard_ratio="1.0" trunk_aspect="0.025" branch_aspect="0.05" leaf_rotate="0.0" noise_mag="1.0" noise_scale="2.0" taper="0.8" repeat_z="2" />
24</tree_defs> 24</tree_defs>
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp
index e723ba1..2fc4c71 100644
--- a/linden/indra/newview/llfloatertools.cpp
+++ b/linden/indra/newview/llfloatertools.cpp
@@ -77,6 +77,8 @@
77#include "llviewerwindow.h" 77#include "llviewerwindow.h"
78#include "llviewercontrol.h" 78#include "llviewercontrol.h"
79#include "llviewerjoystick.h" 79#include "llviewerjoystick.h"
80#include "llvograss.h"
81#include "llvotree.h"
80#include "lluictrlfactory.h" 82#include "lluictrlfactory.h"
81 83
82// Globals 84// Globals
@@ -276,10 +278,14 @@ BOOL LLFloaterTools::postBuild()
276 { 278 {
277 found->setClickedCallback(setObjectType,toolData[t]); 279 found->setClickedCallback(setObjectType,toolData[t]);
278 mButtons.push_back( found ); 280 mButtons.push_back( found );
279 }else{ 281 }
282 else
283 {
280 llwarns << "Tool button not found! DOA Pending." << llendl; 284 llwarns << "Tool button not found! DOA Pending." << llendl;
281 } 285 }
282 } 286 }
287 mComboTreesGrass = getChild<LLComboBox>("trees_grass");
288 childSetCommitCallback("trees_grass", onSelectTreesGrass, (void*)0);
283 mCheckCopySelection = getChild<LLCheckBoxCtrl>("checkbox copy selection"); 289 mCheckCopySelection = getChild<LLCheckBoxCtrl>("checkbox copy selection");
284 childSetValue("checkbox copy selection",(BOOL)gSavedSettings.getBOOL("CreateToolCopySelection")); 290 childSetValue("checkbox copy selection",(BOOL)gSavedSettings.getBOOL("CreateToolCopySelection"));
285 mCheckSticky = getChild<LLCheckBoxCtrl>("checkbox sticky"); 291 mCheckSticky = getChild<LLCheckBoxCtrl>("checkbox sticky");
@@ -381,6 +387,7 @@ LLFloaterTools::LLFloaterTools()
381 mBtnDuplicate(NULL), 387 mBtnDuplicate(NULL),
382 mBtnDuplicateInPlace(NULL), 388 mBtnDuplicateInPlace(NULL),
383 389
390 mComboTreesGrass(NULL),
384 mCheckSticky(NULL), 391 mCheckSticky(NULL),
385 mCheckCopySelection(NULL), 392 mCheckCopySelection(NULL),
386 mCheckCopyCenters(NULL), 393 mCheckCopyCenters(NULL),
@@ -659,6 +666,8 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
659 666
660 mBtnCreate ->setToggleState( tool == LLToolCompCreate::getInstance() ); 667 mBtnCreate ->setToggleState( tool == LLToolCompCreate::getInstance() );
661 668
669 updateTreeGrassCombo(create_visible);
670
662 if (mCheckCopySelection 671 if (mCheckCopySelection
663 && mCheckCopySelection->get()) 672 && mCheckCopySelection->get())
664 { 673 {
@@ -1004,6 +1013,7 @@ void LLFloaterTools::setObjectType( void* data )
1004 LLPCode pcode = *(LLPCode*) data; 1013 LLPCode pcode = *(LLPCode*) data;
1005 LLToolPlacer::setObjectType( pcode ); 1014 LLToolPlacer::setObjectType( pcode );
1006 gSavedSettings.setBOOL("CreateToolCopySelection", FALSE); 1015 gSavedSettings.setBOOL("CreateToolCopySelection", FALSE);
1016 gFloaterTools->updateTreeGrassCombo(true);
1007 gFocusMgr.setMouseCapture(NULL); 1017 gFocusMgr.setMouseCapture(NULL);
1008} 1018}
1009 1019
@@ -1026,3 +1036,65 @@ void LLFloaterTools::onFocusReceived()
1026 LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset); 1036 LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset);
1027 LLFloater::onFocusReceived(); 1037 LLFloater::onFocusReceived();
1028} 1038}
1039
1040void LLFloaterTools::updateTreeGrassCombo(bool visible)
1041{
1042 if (visible)
1043 {
1044 LLPCode pcode = LLToolPlacer::getObjectType();
1045 std::map<std::string, S32>::iterator it, end;
1046 std::string selected;
1047 if (pcode == LLToolPlacerPanel::sTree)
1048 {
1049 selected = gSavedSettings.getString("LastTree");
1050 it = LLVOTree::sSpeciesNames.begin();
1051 end = LLVOTree::sSpeciesNames.end();
1052 }
1053 else if (pcode == LLToolPlacerPanel::sGrass)
1054 {
1055 selected = gSavedSettings.getString("LastGrass");
1056 it = LLVOGrass::sSpeciesNames.begin();
1057 end = LLVOGrass::sSpeciesNames.end();
1058 }
1059 else
1060 {
1061 mComboTreesGrass->removeall();
1062 mComboTreesGrass->setLabel(LLStringExplicit("")); // LLComboBox::removeall() does not clear the label
1063 mComboTreesGrass->setEnabled(false);
1064 return;
1065 }
1066
1067 mComboTreesGrass->removeall();
1068 mComboTreesGrass->add("Random");
1069
1070 int select = 0, i = 0;
1071
1072 while (it != end)
1073 {
1074 const std::string &species = it->first;
1075 mComboTreesGrass->add(species); ++i;
1076 if (species == selected) select = i;
1077 ++it;
1078 }
1079 // if saved species not found, default to "Random"
1080 mComboTreesGrass->selectNthItem(select);
1081 mComboTreesGrass->setEnabled(true);
1082 }
1083
1084 mComboTreesGrass->setVisible(visible);
1085}
1086
1087// static
1088void LLFloaterTools::onSelectTreesGrass(LLUICtrl*, void*)
1089{
1090 const std::string &selected = gFloaterTools->mComboTreesGrass->getValue();
1091 LLPCode pcode = LLToolPlacer::getObjectType();
1092 if (pcode == LLToolPlacerPanel::sTree)
1093 {
1094 gSavedSettings.setString("LastTree", selected);
1095 }
1096 else if (pcode == LLToolPlacerPanel::sGrass)
1097 {
1098 gSavedSettings.setString("LastGrass", selected);
1099 }
1100}
diff --git a/linden/indra/newview/llfloatertools.h b/linden/indra/newview/llfloatertools.h
index 9d555d1..360b1df 100644
--- a/linden/indra/newview/llfloatertools.h
+++ b/linden/indra/newview/llfloatertools.h
@@ -153,6 +153,7 @@ public:
153 LLButton *mBtnDuplicateInPlace; 153 LLButton *mBtnDuplicateInPlace;
154 154
155 // Create buttons 155 // Create buttons
156 LLComboBox *mComboTreesGrass;
156 LLCheckBoxCtrl *mCheckSticky; 157 LLCheckBoxCtrl *mCheckSticky;
157 LLCheckBoxCtrl *mCheckCopySelection; 158 LLCheckBoxCtrl *mCheckCopySelection;
158 LLCheckBoxCtrl *mCheckCopyCenters; 159 LLCheckBoxCtrl *mCheckCopyCenters;
@@ -194,6 +195,9 @@ private:
194 S32 mLargeHeight; 195 S32 mLargeHeight;
195 196
196 std::map<std::string, std::string> mStatusText; 197 std::map<std::string, std::string> mStatusText;
198
199 void updateTreeGrassCombo(bool visible);
200 static void onSelectTreesGrass(LLUICtrl*, void*);
197}; 201};
198 202
199extern LLFloaterTools *gFloaterTools; 203extern LLFloaterTools *gFloaterTools;
diff --git a/linden/indra/newview/lltoolplacer.cpp b/linden/indra/newview/lltoolplacer.cpp
index dda21dd..297556e 100644
--- a/linden/indra/newview/lltoolplacer.cpp
+++ b/linden/indra/newview/lltoolplacer.cpp
@@ -156,6 +156,20 @@ BOOL LLToolPlacer::raycastForNewObjPos( S32 x, S32 y, LLViewerObject** hit_obj,
156} 156}
157 157
158 158
159static S32 getTreeGrassSpecies(std::map<std::string, S32> &table, const char *control, S32 max)
160{
161 const std::string &species = gSavedSettings.getString(control);
162 std::map<std::string, S32>::iterator it;
163 it = table.find(species);
164 if (it != table.end()) {
165 return it->second;
166 } else {
167 // if saved species not found, default to "Random"
168 return (rand() % max);
169 }
170}
171
172
159BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics ) 173BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )
160{ 174{
161 LLVector3 ray_start_region; 175 LLVector3 ray_start_region;
@@ -200,13 +214,13 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )
200 case LL_PCODE_LEGACY_GRASS: 214 case LL_PCODE_LEGACY_GRASS:
201 // Randomize size of grass patch 215 // Randomize size of grass patch
202 scale.setVec(10.f + ll_frand(20.f), 10.f + ll_frand(20.f), 1.f + ll_frand(2.f)); 216 scale.setVec(10.f + ll_frand(20.f), 10.f + ll_frand(20.f), 1.f + ll_frand(2.f));
203 state = rand() % LLVOGrass::sMaxGrassSpecies; 217 state = getTreeGrassSpecies(LLVOGrass::sSpeciesNames, "LastGrass", LLVOGrass::sMaxGrassSpecies);
204 break; 218 break;
205 219
206 220
207 case LL_PCODE_LEGACY_TREE: 221 case LL_PCODE_LEGACY_TREE:
208 case LL_PCODE_TREE_NEW: 222 case LL_PCODE_TREE_NEW:
209 state = rand() % LLVOTree::sMaxTreeSpecies; 223 state = getTreeGrassSpecies(LLVOTree::sSpeciesNames, "LastTree", LLVOTree::sMaxTreeSpecies);
210 break; 224 break;
211 225
212 case LL_PCODE_SPHERE: 226 case LL_PCODE_SPHERE:
diff --git a/linden/indra/newview/llvograss.cpp b/linden/indra/newview/llvograss.cpp
index 4e7816c..79addbb 100644
--- a/linden/indra/newview/llvograss.cpp
+++ b/linden/indra/newview/llvograss.cpp
@@ -71,6 +71,8 @@ F32 w_mod[GRASS_MAX_BLADES]; // Factor to modulate wind movement by to rand
71LLVOGrass::SpeciesMap LLVOGrass::sSpeciesTable; 71LLVOGrass::SpeciesMap LLVOGrass::sSpeciesTable;
72S32 LLVOGrass::sMaxGrassSpecies = 0; 72S32 LLVOGrass::sMaxGrassSpecies = 0;
73 73
74LLVOGrass::SpeciesNames LLVOGrass::sSpeciesNames;
75
74 76
75LLVOGrass::LLVOGrass(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp) 77LLVOGrass::LLVOGrass(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
76: LLAlphaObject(id, pcode, regionp) 78: LLAlphaObject(id, pcode, regionp)
@@ -201,11 +203,16 @@ void LLVOGrass::initClass()
201 203
202 if (species >= sMaxGrassSpecies) sMaxGrassSpecies = species + 1; 204 if (species >= sMaxGrassSpecies) sMaxGrassSpecies = species + 1;
203 205
206 std::string name;
207 static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
208 success &= grass_def->getFastAttributeString(name_string, name);
209 sSpeciesNames[name] = species;
210
204 if (!success) 211 if (!success)
205 { 212 {
206 std::string name; 213 /*std::string name;
207 static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name"); 214 static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
208 grass_def->getFastAttributeString(name_string, name); 215 grass_def->getFastAttributeString(name_string, name);*/
209 llwarns << "Incomplete definition of grass " << name << llendl; 216 llwarns << "Incomplete definition of grass " << name << llendl;
210 } 217 }
211 } 218 }
diff --git a/linden/indra/newview/llvograss.h b/linden/indra/newview/llvograss.h
index 95197a5..de700bd 100644
--- a/linden/indra/newview/llvograss.h
+++ b/linden/indra/newview/llvograss.h
@@ -116,6 +116,9 @@ public:
116 F32 mBladeWindAngle; 116 F32 mBladeWindAngle;
117 F32 mBWAOverlap; 117 F32 mBWAOverlap;
118 118
119 typedef std::map<std::string, S32> SpeciesNames;
120 static SpeciesNames sSpeciesNames;
121
119protected: 122protected:
120 ~LLVOGrass(); 123 ~LLVOGrass();
121 124
diff --git a/linden/indra/newview/llvotree.cpp b/linden/indra/newview/llvotree.cpp
index 23c92ea..e1c3542 100644
--- a/linden/indra/newview/llvotree.cpp
+++ b/linden/indra/newview/llvotree.cpp
@@ -77,6 +77,9 @@ F32 LLVOTree::sTreeFactor = 1.f;
77LLVOTree::SpeciesMap LLVOTree::sSpeciesTable; 77LLVOTree::SpeciesMap LLVOTree::sSpeciesTable;
78S32 LLVOTree::sMaxTreeSpecies = 0; 78S32 LLVOTree::sMaxTreeSpecies = 0;
79 79
80LLVOTree::SpeciesNames LLVOTree::sSpeciesNames;
81
82
80// Tree variables and functions 83// Tree variables and functions
81 84
82LLVOTree::LLVOTree(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp): 85LLVOTree::LLVOTree(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp):
@@ -230,11 +233,16 @@ void LLVOTree::initClass()
230 233
231 if (species >= sMaxTreeSpecies) sMaxTreeSpecies = species + 1; 234 if (species >= sMaxTreeSpecies) sMaxTreeSpecies = species + 1;
232 235
236 std::string name;
237 static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
238 success &= tree_def->getFastAttributeString(name_string, name);
239 sSpeciesNames[name] = species;
240
233 if (!success) 241 if (!success)
234 { 242 {
235 std::string name; 243 //std::string name;
236 static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name"); 244 //static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name");
237 tree_def->getFastAttributeString(name_string, name); 245 //tree_def->getFastAttributeString(name_string, name);
238 llwarns << "Incomplete definition of tree " << name << llendl; 246 llwarns << "Incomplete definition of tree " << name << llendl;
239 } 247 }
240 } 248 }
diff --git a/linden/indra/newview/llvotree.h b/linden/indra/newview/llvotree.h
index f34371e..055cfa3 100644
--- a/linden/indra/newview/llvotree.h
+++ b/linden/indra/newview/llvotree.h
@@ -120,6 +120,9 @@ public:
120 120
121 static F32 sTreeFactor; // Tree level of detail factor 121 static F32 sTreeFactor; // Tree level of detail factor
122 122
123 typedef std::map<std::string, S32> SpeciesNames;
124 static SpeciesNames sSpeciesNames;
125
123 friend class LLDrawPoolTree; 126 friend class LLDrawPoolTree;
124protected: 127protected:
125 LLVector3 mTrunkBend; // Accumulated wind (used for blowing trees) 128 LLVector3 mTrunkBend; // Accumulated wind (used for blowing trees)
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
index eb9b1c6..6fc5374 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml
@@ -227,6 +227,9 @@
227 image_unselected="object_grass.tga" label="" label_selected="" 227 image_unselected="object_grass.tga" label="" label_selected=""
228 left_delta="23" mouse_opaque="true" name="ToolGrass" scale_image="TRUE" 228 left_delta="23" mouse_opaque="true" name="ToolGrass" scale_image="TRUE"
229 tool_tip="Grass" width="24" /> 229 tool_tip="Grass" width="24" />
230 <combo_box max_chars="20" enabled="false" allow_text_entry="false" name="trees_grass"
231 height="18" width="135" right="-5" bottom="-122"
232 follows="left|top" mouse_opaque="true" />
230 <check_box bottom="-117" control_name="CreateToolKeepSelected" follows="left|top" 233 <check_box bottom="-117" control_name="CreateToolKeepSelected" follows="left|top"
231 font="SansSerifSmall" height="16" initial_value="false" 234 font="SansSerifSmall" height="16" initial_value="false"
232 label="Keep Tool Selected" left="4" mouse_opaque="true" 235 label="Keep Tool Selected" left="4" mouse_opaque="true"