[SCM] osgearth branch, master, updated. debian/1.4.1-1-39-g6366f59

Pirmin Kalberer pka at sourcepole.ch
Tue Jul 9 21:18:59 UTC 2013


The following commit has been merged in the master branch:
commit b16c527a80167103fb33b1505f4053aaaa9abea6
Author: Pirmin Kalberer <pka at sourcepole.ch>
Date:   Tue Jul 9 20:25:23 2013 +0200

    Upstream version 2.4

diff --git a/README.txt b/README.txt
index b8e386f..64ac1d9 100644
--- a/README.txt
+++ b/README.txt
@@ -1,5 +1,5 @@
 osgEarth - Dynamic map generation toolkit for OpenSceneGraph
-Copyright 2008-2012 Pelican Mapping
+Copyright 2008-2013 Pelican Mapping
 
 http://osgearth.org
 git://github.com/gwaldron/osgearth
diff --git a/data/resources/README.txt b/data/resources/README.txt
new file mode 100644
index 0000000..ca267b7
--- /dev/null
+++ b/data/resources/README.txt
@@ -0,0 +1,2 @@
+LICENSE
+Everything in this folder (data/resources) is in the PUBLIC DOMAIN.
diff --git a/data/resources/textures_us/barriers/fence.png b/data/resources/textures_us/barriers/fence.png
new file mode 100644
index 0000000..c719032
Binary files /dev/null and b/data/resources/textures_us/barriers/fence.png differ
diff --git a/data/resources/textures_us/barriers/fence2.png b/data/resources/textures_us/barriers/fence2.png
new file mode 100644
index 0000000..098af23
Binary files /dev/null and b/data/resources/textures_us/barriers/fence2.png differ
diff --git a/data/resources/textures_us/barriers/stonewall.jpg b/data/resources/textures_us/barriers/stonewall.jpg
new file mode 100644
index 0000000..f14a39f
Binary files /dev/null and b/data/resources/textures_us/barriers/stonewall.jpg differ
diff --git a/data/resources/textures_us/catalog.xml b/data/resources/textures_us/catalog.xml
new file mode 100644
index 0000000..eefff6d
--- /dev/null
+++ b/data/resources/textures_us/catalog.xml
@@ -0,0 +1,428 @@
+<?xml version="1.0" ?>
+<resources name="texlib-us">
+
+  <!-- tiled barriers textures -->
+
+    <skin name="fence" tags="barrier fence">
+        <url>barriers/fence2.png</url>
+        <tiled>false</tiled>
+        <image_width>2</image_width>
+        <image_height>2</image_height>
+        <texture_mode>blend</texture_mode>
+    </skin>
+
+    <skin name="stone-wall" type="skin" tags="barrier wall tile stone gray">
+        <url>barriers/stonewall.jpg</url>
+        <tiled>true</tiled>
+        <image_width>8</image_width>
+        <image_height>4</image_height>
+        <texture_mode>modulate</texture_mode>
+    </skin>
+
+  <!-- city office no reps -->
+
+    <skin name="50stOfficeGlassModern1" tags="building commercial us modern steel glass">
+        <url>commercial/50storySteelGlassmodern1.jpg</url>
+        <image_width>27</image_width>
+        <min_object_height>148</min_object_height>
+        <max_object_height>999</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="45stOfficeGlassModern1" tags="building commercial us modern glass">
+        <url>commercial/45storyglassmodern.jpg</url>
+        <image_width>40</image_width>
+        <min_object_height>136</min_object_height>
+        <max_object_height>148</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="42stOfficeModern2" tags="building commercial us modern steel glass">
+        <url>commercial/US-OfficeModern-42st.jpg</url>
+        <image_width>39</image_width>
+        <min_object_height>129</min_object_height>
+        <max_object_height>136</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="41stOfficeGlassWhiteModern" tags="building commercial us modern concrete glass white">
+        <url>commercial/41storyconcrglasswhitemodern2.jpg</url>
+        <image_width>20</image_width>
+        <min_object_height>125</min_object_height>
+        <max_object_height>133</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="40stOfficeModern" tags="building commercial us modern steel glass">
+        <url>commercial/40storymodern.jpg</url>
+        <image_width>40</image_width>
+        <min_object_height>118</min_object_height>
+        <max_object_height>127</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="36stGlassOfficeModern" tags="building commercial us modern steel glass">
+        <url>commercial/36storyconcrglassmodern.jpg</url>
+        <image_width>32</image_width>
+        <min_object_height>98</min_object_height>
+        <max_object_height>118</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="35stConcreteOfficeWhiteModern" tags="building commercial us modern concrete white">
+        <url>commercial/35storyconcrmodernwhite.jpg</url>
+        <image_width>25</image_width>
+        <min_object_height>104</min_object_height>
+        <max_object_height>116</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="30stOfficeConcrBrown" tags="building commercial us concrete brown">
+        <url>commercial/30storyconcrbrown4.jpg</url>
+        <image_width>29</image_width>
+        <min_object_height>91</min_object_height>
+        <max_object_height>98</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="28stOfficeGlassModern" tags="building commercial us steel modern">
+        <url>commercial/28storymodern.jpg</url>
+        <image_width>29</image_width>
+        <min_object_height>85</min_object_height>
+        <max_object_height>91</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="27stOfficeModernBrownConcrGlass" tags="building commercial us concrete brown modern">
+        <url>commercial/27storyConcrBrownGlass.jpg</url>
+        <image_width>17</image_width>
+        <min_object_height>79</min_object_height>
+        <max_object_height>89</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="25storyBrownWide1" tags="building commercial us concrete brown">
+        <url>commercial/25storyBrownWide1.jpg</url>
+        <image_width>60</image_width>
+        <min_object_height>67</min_object_height>
+        <max_object_height>179</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="20stOfficeBrownModern" tags="building commercial us concrete modern brown">
+        <url>commercial/20storybrownconcrmodern.jpg</url>
+        <image_width>29</image_width>
+        <min_object_height>61</min_object_height>
+        <max_object_height>67</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="20stGovtGrey" tags="building govt us concrete glass grey">
+        <url>commercial/20storygreycncrglassmodern.jpg</url>
+        <image_width>27</image_width>
+        <min_object_height>61</min_object_height>
+        <max_object_height>67</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="19stCommHotelWhite" tags="building commercial hotel us concrete glass white">
+        <url>commercial/19storyretromodern.jpg</url>
+        <image_width>30</image_width>
+        <min_object_height>53</min_object_height>
+        <max_object_height>61</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="18stOffice1" tags="building commercial us concrete tan">
+        <url>commercial/18storyoffice.jpg</url>
+        <image_width>28</image_width>
+        <min_object_height>49</min_object_height>
+        <max_object_height>58</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="16stOfficeGreyModern" tags="building commercial us concrete glass grey">
+        <url>commercial/16storyconcrglassgreymodern4.jpg</url>
+        <image_width>14</image_width>
+        <min_object_height>39</min_object_height>
+        <max_object_height>49</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="15stOfficeBrownConcrete" tags="building commercial us concrete brown">
+        <url>commercial/15storybrownconcr.jpg</url>
+        <image_width>38</image_width>
+        <min_object_height>44</min_object_height>
+        <max_object_height>51</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="15stOfficeLtBrownConcrete" tags="building commercial us concrete brown">
+        <url>commercial/15storyltbrownconcroffice3.jpg</url>
+        <image_width>29</image_width>
+        <min_object_height>45</min_object_height>
+        <max_object_height>51</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="12stGovtModern2" tags="building commercial us concrete glass brown">
+        <url>commercial/12storygovtmodern.jpg</url>
+        <image_width>21</image_width>
+        <min_object_height>37</min_object_height>
+        <max_object_height>45</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="10stOfficeWhite" tags="building commercial us concrete glass white">
+        <url>commercial/10storymodernconcrete.jpg</url>
+        <image_width>27</image_width>
+        <min_object_height>29</min_object_height>
+        <max_object_height>37</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="8stOffice" tags="building commercial us dc concrete white">
+        <url>commercial/US-dcofficeconcrwhite8st.jpg</url>
+        <image_width>24</image_width>
+        <min_object_height>19</min_object_height>
+        <max_object_height>29</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="8stHotel" tags="building commercial us dc concrete white">
+        <url>commercial/US-dchotelDC2_8st.jpg</url>
+        <image_width>15</image_width>
+        <min_object_height>18</min_object_height>
+        <max_object_height>26</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="7stWideOffice" tags="building commercial us dc concrete glass white">
+        <url>commercial/US-dcofficeconcrwhite6-7st.jpg</url>
+        <image_width>34</image_width>
+        <min_object_height>17</min_object_height>
+        <max_object_height>24</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="7stwhite" tags="building commercial us concrete white tree">
+        <url>commercial/7storymodernsq.jpg</url>
+        <image_width>19</image_width>
+        <min_object_height>16</min_object_height>
+        <max_object_height>23</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="5stwhite" tags="building commercial us arch white">
+        <url>commercial/US-dcdupontconcr5st.jpg</url>
+        <image_width>7</image_width>
+        <min_object_height>12</min_object_height>
+        <max_object_height>18</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="5stwhite" tags="building commercial us arch white">
+        <url>commercial/5storywhite.jpg</url>
+        <image_width>12</image_width>
+        <min_object_height>12</min_object_height>
+        <max_object_height>18</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="4stCommGovt" tags="building govt us dc concrete white">
+        <url>commercial/US-dcgovtconcrtan4st.jpg</url>
+        <image_width>18</image_width>
+        <min_object_height>12</min_object_height>
+        <max_object_height>17</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="3stStorefront" tags="building commercial us storefront concrete">
+        <url>commercial/3storystorefronttown.jpg</url>
+        <image_width>9</image_width>
+        <min_object_height>7</min_object_height>
+        <max_object_height>12</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="3stStoreFront2" tags="building commercial us storefront concrete">
+        <url>commercial/salmon_3_story_0_scale.jpg</url>
+        <image_width>8</image_width>
+        <min_object_height>6</min_object_height>
+        <max_object_height>11</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="2stCommFancyfront" tags="building commercial us me concrete">
+        <url>commercial/2stFancyconcrete1.jpg</url>
+        <image_width>14</image_width>
+        <min_object_height>1</min_object_height>
+        <max_object_height>7</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="2stGovtConcrete" tags="building govt us concrete tan">
+        <url>commercial/US-dcwhiteconcr2st.jpg</url>
+        <image_width>16</image_width>
+        <min_object_height>2</min_object_height>
+        <max_object_height>7</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+    <skin name="2stCommDarkBrick" tags="building commercial us brick brown">
+        <url>commercial/US-dctbrickcomm2st.jpg</url>
+        <image_width>21</image_width>
+        <min_object_height>2</min_object_height>
+        <max_object_height>7</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+
+  <!-- small offices and industrial -->
+
+   <skin name="4stCommIndstrGlass" tags="building commercial us glass concrete">
+        <url>commercial/USUAE-4stCommercial.jpg</url>
+        <image_width>20</image_width>
+        <min_object_height>11</min_object_height>
+        <max_object_height>14</max_object_height>
+        <tiled>false</tiled>
+   </skin>
+
+   <skin name="2stIndstrBrn" tags="building industrial us me glass brick brown">
+        <url>commercial/US-OfficeComm-2st.jpg</url>
+        <image_width>15</image_width>
+        <min_object_height>4</min_object_height>
+        <max_object_height>7</max_object_height>
+        <tiled>false</tiled>
+   </skin>
+
+   <skin name="1stIndWarehouse1" tags="building industrial us warehouse concrete white">
+        <url>commercial/US-1stCommWarehousewhite1.jpg</url>
+        <image_width>15</image_width>
+        <min_object_height>1</min_object_height>
+        <max_object_height>4</max_object_height>
+        <tiled>false</tiled>
+   </skin>
+
+   <skin name="1stCommWarehouse1" tags="building industrial us warehouse concrete brown">
+        <url>commercial/US-1stCommBrick2.jpg</url>
+        <image_width>15</image_width>
+        <min_object_height>1</min_object_height>
+        <max_object_height>4</max_object_height>
+        <tiled>false</tiled>
+   </skin>
+
+   <skin name="1stCommStorefront1" tags="building commercial us storefront">
+        <url>commercial/US-1stCommStFront3.jpg</url>
+        <image_width>10</image_width>
+        <min_object_height>1</min_object_height>
+        <max_object_height>4</max_object_height>
+        <tiled>false</tiled>
+   </skin>
+
+
+  <!-- residential -->
+
+   <skin name="8stResditentialTileApt" tags="building tile residential apt us concrete">
+        <url>residential/tiles/USUAE-8stTile_rep.jpg</url>
+        <image_width>19</image_width>
+        <min_object_height>21</min_object_height>
+        <max_object_height>29</max_object_height>
+        <tiled>false</tiled>
+   </skin>
+
+   <skin name="6stBrickBrownApt" tags="building residential us apt brick brown">
+        <url>residential/6storybrickbrown1.jpg</url>
+        <image_width>21</image_width>
+        <min_object_height>21</min_object_height>
+        <max_object_height>26</max_object_height>
+        <tiled>false</tiled>
+    </skin>
+
+   <skin name="5stResidentialCondoWhite2" tags="building residential apt us white">
+        <url>residential/5storyCondo_concrglasswhite.jpg</url>
+        <image_width>14</image_width>
+        <min_object_height>14</min_object_height>
+        <max_object_height>21</max_object_height>
+        <tiled>false</tiled>
+   </skin>
+
+   <skin name="4stResidentialBrownBrick" tags="building residential apt us brick brown">
+        <url>residential/US-CityCondo_brick_4st.jpg</url>
+        <image_width>16</image_width>
+        <min_object_height>9</min_object_height>
+        <max_object_height>14</max_object_height>
+        <tiled>false</tiled>
+   </skin>
+
+   <skin name="2stResidentialDarkApt" tags="building residential apt us brown">
+        <url>residential/US-CityCondo2st.jpg</url>
+        <image_width>11</image_width>
+        <min_object_height>4</min_object_height>
+        <max_object_height>7</max_object_height>
+        <tiled>false</tiled>
+   </skin>
+   
+<!-- rooftops : tiled -->
+
+   <skin name="roof_tiled1" tags="rooftop">
+       <url>rooftop/tiled/roof_tiled1.jpg</url>
+       <image_width>25</image_width>
+       <image_height>25</image_height>
+       <tiled>true</tiled>
+   </skin>
+
+   <skin name="roof_tiled2" tags="rooftop">
+       <url>rooftop/tiled/roof_tiled2.jpg</url>
+       <image_width>25</image_width>
+       <image_height>25</image_height>
+       <tiled>true</tiled>
+   </skin>
+
+   <skin name="roof_tiled3" tags="rooftop">
+       <url>rooftop/tiled/roof_tiled3.jpg</url>
+       <image_width>25</image_width>
+       <image_height>25</image_height>
+       <tiled>true</tiled>
+   </skin>
+   
+<!-- rooftops : non-tiled -->
+   
+   <skin name="roof_misc2" tags="rooftop">
+       <url>rooftop/roof_misc2.jpg</url>
+       <image_width>25</image_width>
+       <image_height>25</image_height>
+       <tiled>false</tiled>
+   </skin>
+   
+   <skin name="roof_misc3" tags="rooftop">
+       <url>rooftop/roof_misc3.jpg</url>
+       <image_width>25</image_width>
+       <image_height>25</image_height>
+       <tiled>false</tiled>
+   </skin>
+   
+   <skin name="roof_misc4" tags="rooftop">
+       <url>rooftop/roof_misc4.jpg</url>
+       <image_width>25</image_width>
+       <image_height>25</image_height>
+       <tiled>false</tiled>
+   </skin>
+   
+   <skin name="roof_misc5" tags="rooftop">
+       <url>rooftop/roof_misc5.jpg</url>
+       <image_width>25</image_width>
+       <image_height>25</image_height>
+       <tiled>false</tiled>
+   </skin>
+   
+ <!-- test patterns -->
+
+   <skin name="test-grid" tags="grid">
+       <url>misc/grid.png</url>
+       <image_width>50</image_width>
+       <image_height>50</image_height>
+       <tiled>true</tiled>
+   </skin>   
+
+</resources>
diff --git a/data/resources/textures_us/commercial/10storymodernconcrete.jpg b/data/resources/textures_us/commercial/10storymodernconcrete.jpg
new file mode 100644
index 0000000..def3d6e
Binary files /dev/null and b/data/resources/textures_us/commercial/10storymodernconcrete.jpg differ
diff --git a/data/resources/textures_us/commercial/11storymodernsq.jpg b/data/resources/textures_us/commercial/11storymodernsq.jpg
new file mode 100644
index 0000000..ea963f5
Binary files /dev/null and b/data/resources/textures_us/commercial/11storymodernsq.jpg differ
diff --git a/data/resources/textures_us/commercial/12storyconcrglassblkwhtmodern.jpg b/data/resources/textures_us/commercial/12storyconcrglassblkwhtmodern.jpg
new file mode 100644
index 0000000..8652a93
Binary files /dev/null and b/data/resources/textures_us/commercial/12storyconcrglassblkwhtmodern.jpg differ
diff --git a/data/resources/textures_us/commercial/12storygovtmodern.jpg b/data/resources/textures_us/commercial/12storygovtmodern.jpg
new file mode 100644
index 0000000..48d5bed
Binary files /dev/null and b/data/resources/textures_us/commercial/12storygovtmodern.jpg differ
diff --git a/data/resources/textures_us/commercial/14storyconcrwhite.jpg b/data/resources/textures_us/commercial/14storyconcrwhite.jpg
new file mode 100644
index 0000000..888599c
Binary files /dev/null and b/data/resources/textures_us/commercial/14storyconcrwhite.jpg differ
diff --git a/data/resources/textures_us/commercial/15storybrownconcr.jpg b/data/resources/textures_us/commercial/15storybrownconcr.jpg
new file mode 100644
index 0000000..b3e6b76
Binary files /dev/null and b/data/resources/textures_us/commercial/15storybrownconcr.jpg differ
diff --git a/data/resources/textures_us/commercial/15storybrownconcroffice2.jpg b/data/resources/textures_us/commercial/15storybrownconcroffice2.jpg
new file mode 100644
index 0000000..6466d89
Binary files /dev/null and b/data/resources/textures_us/commercial/15storybrownconcroffice2.jpg differ
diff --git a/data/resources/textures_us/commercial/15storyltbrownconcroffice3.jpg b/data/resources/textures_us/commercial/15storyltbrownconcroffice3.jpg
new file mode 100644
index 0000000..6cee6d2
Binary files /dev/null and b/data/resources/textures_us/commercial/15storyltbrownconcroffice3.jpg differ
diff --git a/data/resources/textures_us/commercial/16storyconcrglassgreymodern4.jpg b/data/resources/textures_us/commercial/16storyconcrglassgreymodern4.jpg
new file mode 100644
index 0000000..3295a2c
Binary files /dev/null and b/data/resources/textures_us/commercial/16storyconcrglassgreymodern4.jpg differ
diff --git a/data/resources/textures_us/commercial/17storygovtwhite.jpg b/data/resources/textures_us/commercial/17storygovtwhite.jpg
new file mode 100644
index 0000000..5c97ad3
Binary files /dev/null and b/data/resources/textures_us/commercial/17storygovtwhite.jpg differ
diff --git a/data/resources/textures_us/commercial/18storyconcrbrownoffice2.jpg b/data/resources/textures_us/commercial/18storyconcrbrownoffice2.jpg
new file mode 100644
index 0000000..c4dc858
Binary files /dev/null and b/data/resources/textures_us/commercial/18storyconcrbrownoffice2.jpg differ
diff --git a/data/resources/textures_us/commercial/18storyconcrgreyglassmodern.jpg b/data/resources/textures_us/commercial/18storyconcrgreyglassmodern.jpg
new file mode 100644
index 0000000..87a64de
Binary files /dev/null and b/data/resources/textures_us/commercial/18storyconcrgreyglassmodern.jpg differ
diff --git a/data/resources/textures_us/commercial/18storyoffice.jpg b/data/resources/textures_us/commercial/18storyoffice.jpg
new file mode 100644
index 0000000..d42fab9
Binary files /dev/null and b/data/resources/textures_us/commercial/18storyoffice.jpg differ
diff --git a/data/resources/textures_us/commercial/19storyretromodern.jpg b/data/resources/textures_us/commercial/19storyretromodern.jpg
new file mode 100644
index 0000000..eb499ab
Binary files /dev/null and b/data/resources/textures_us/commercial/19storyretromodern.jpg differ
diff --git a/data/resources/textures_us/commercial/1Flint_sm.jpg b/data/resources/textures_us/commercial/1Flint_sm.jpg
new file mode 100644
index 0000000..f5a853c
Binary files /dev/null and b/data/resources/textures_us/commercial/1Flint_sm.jpg differ
diff --git a/data/resources/textures_us/commercial/1stStorefront2.jpg b/data/resources/textures_us/commercial/1stStorefront2.jpg
new file mode 100644
index 0000000..fba94d5
Binary files /dev/null and b/data/resources/textures_us/commercial/1stStorefront2.jpg differ
diff --git a/data/resources/textures_us/commercial/20storybrownconcrmodern.jpg b/data/resources/textures_us/commercial/20storybrownconcrmodern.jpg
new file mode 100644
index 0000000..9a65f5f
Binary files /dev/null and b/data/resources/textures_us/commercial/20storybrownconcrmodern.jpg differ
diff --git a/data/resources/textures_us/commercial/20storygreycncrglassmodern.jpg b/data/resources/textures_us/commercial/20storygreycncrglassmodern.jpg
new file mode 100644
index 0000000..dcaca4b
Binary files /dev/null and b/data/resources/textures_us/commercial/20storygreycncrglassmodern.jpg differ
diff --git a/data/resources/textures_us/commercial/21storyconcrglasstanmodern.jpg b/data/resources/textures_us/commercial/21storyconcrglasstanmodern.jpg
new file mode 100644
index 0000000..fdbf6ad
Binary files /dev/null and b/data/resources/textures_us/commercial/21storyconcrglasstanmodern.jpg differ
diff --git a/data/resources/textures_us/commercial/25storyBrownWide1.jpg b/data/resources/textures_us/commercial/25storyBrownWide1.jpg
new file mode 100644
index 0000000..8fe1d28
Binary files /dev/null and b/data/resources/textures_us/commercial/25storyBrownWide1.jpg differ
diff --git a/data/resources/textures_us/commercial/27storyConcrBrownGlass.jpg b/data/resources/textures_us/commercial/27storyConcrBrownGlass.jpg
new file mode 100644
index 0000000..f3721de
Binary files /dev/null and b/data/resources/textures_us/commercial/27storyConcrBrownGlass.jpg differ
diff --git a/data/resources/textures_us/commercial/28storymodern.jpg b/data/resources/textures_us/commercial/28storymodern.jpg
new file mode 100644
index 0000000..c89262c
Binary files /dev/null and b/data/resources/textures_us/commercial/28storymodern.jpg differ
diff --git a/data/resources/textures_us/commercial/2stFancyconcrete1.jpg b/data/resources/textures_us/commercial/2stFancyconcrete1.jpg
new file mode 100644
index 0000000..9b6510b
Binary files /dev/null and b/data/resources/textures_us/commercial/2stFancyconcrete1.jpg differ
diff --git a/data/resources/textures_us/commercial/30storyconcrbrown4.jpg b/data/resources/textures_us/commercial/30storyconcrbrown4.jpg
new file mode 100644
index 0000000..d1a017b
Binary files /dev/null and b/data/resources/textures_us/commercial/30storyconcrbrown4.jpg differ
diff --git a/data/resources/textures_us/commercial/35storyconcrmodernwhite.jpg b/data/resources/textures_us/commercial/35storyconcrmodernwhite.jpg
new file mode 100644
index 0000000..5578a03
Binary files /dev/null and b/data/resources/textures_us/commercial/35storyconcrmodernwhite.jpg differ
diff --git a/data/resources/textures_us/commercial/36storyconcrglassmodern.jpg b/data/resources/textures_us/commercial/36storyconcrglassmodern.jpg
new file mode 100644
index 0000000..7ac4b77
Binary files /dev/null and b/data/resources/textures_us/commercial/36storyconcrglassmodern.jpg differ
diff --git a/data/resources/textures_us/commercial/3storyIndustrial_concrglasswhite1.jpg b/data/resources/textures_us/commercial/3storyIndustrial_concrglasswhite1.jpg
new file mode 100644
index 0000000..6d5019c
Binary files /dev/null and b/data/resources/textures_us/commercial/3storyIndustrial_concrglasswhite1.jpg differ
diff --git a/data/resources/textures_us/commercial/3storystorefronttown.jpg b/data/resources/textures_us/commercial/3storystorefronttown.jpg
new file mode 100644
index 0000000..edc9fe6
Binary files /dev/null and b/data/resources/textures_us/commercial/3storystorefronttown.jpg differ
diff --git a/data/resources/textures_us/commercial/3storywhiteglassStfront.jpg b/data/resources/textures_us/commercial/3storywhiteglassStfront.jpg
new file mode 100644
index 0000000..dd686b0
Binary files /dev/null and b/data/resources/textures_us/commercial/3storywhiteglassStfront.jpg differ
diff --git a/data/resources/textures_us/commercial/40storymodern.jpg b/data/resources/textures_us/commercial/40storymodern.jpg
new file mode 100644
index 0000000..555bbdb
Binary files /dev/null and b/data/resources/textures_us/commercial/40storymodern.jpg differ
diff --git a/data/resources/textures_us/commercial/41storyconcrglasswhitemodern2.jpg b/data/resources/textures_us/commercial/41storyconcrglasswhitemodern2.jpg
new file mode 100644
index 0000000..c3bdc12
Binary files /dev/null and b/data/resources/textures_us/commercial/41storyconcrglasswhitemodern2.jpg differ
diff --git a/data/resources/textures_us/commercial/45storyglassmodern.jpg b/data/resources/textures_us/commercial/45storyglassmodern.jpg
new file mode 100644
index 0000000..1642f60
Binary files /dev/null and b/data/resources/textures_us/commercial/45storyglassmodern.jpg differ
diff --git a/data/resources/textures_us/commercial/50storySteelGlassmodern1.jpg b/data/resources/textures_us/commercial/50storySteelGlassmodern1.jpg
new file mode 100644
index 0000000..74acc04
Binary files /dev/null and b/data/resources/textures_us/commercial/50storySteelGlassmodern1.jpg differ
diff --git a/data/resources/textures_us/commercial/5storywhite.jpg b/data/resources/textures_us/commercial/5storywhite.jpg
new file mode 100644
index 0000000..e7730e0
Binary files /dev/null and b/data/resources/textures_us/commercial/5storywhite.jpg differ
diff --git a/data/resources/textures_us/commercial/6storymodern.jpg b/data/resources/textures_us/commercial/6storymodern.jpg
new file mode 100644
index 0000000..47cdc54
Binary files /dev/null and b/data/resources/textures_us/commercial/6storymodern.jpg differ
diff --git a/data/resources/textures_us/commercial/7storymodernsq.jpg b/data/resources/textures_us/commercial/7storymodernsq.jpg
new file mode 100644
index 0000000..e7fc96b
Binary files /dev/null and b/data/resources/textures_us/commercial/7storymodernsq.jpg differ
diff --git a/data/resources/textures_us/commercial/8storygovt.jpg b/data/resources/textures_us/commercial/8storygovt.jpg
new file mode 100644
index 0000000..a95566b
Binary files /dev/null and b/data/resources/textures_us/commercial/8storygovt.jpg differ
diff --git a/data/resources/textures_us/commercial/BUILD_044.jpg b/data/resources/textures_us/commercial/BUILD_044.jpg
new file mode 100644
index 0000000..03bc1bd
Binary files /dev/null and b/data/resources/textures_us/commercial/BUILD_044.jpg differ
diff --git a/data/resources/textures_us/commercial/EU-ArtDeco-4st.jpg b/data/resources/textures_us/commercial/EU-ArtDeco-4st.jpg
new file mode 100644
index 0000000..d1859ac
Binary files /dev/null and b/data/resources/textures_us/commercial/EU-ArtDeco-4st.jpg differ
diff --git a/data/resources/textures_us/commercial/EU-StoreFront-2st.jpg b/data/resources/textures_us/commercial/EU-StoreFront-2st.jpg
new file mode 100644
index 0000000..2d90766
Binary files /dev/null and b/data/resources/textures_us/commercial/EU-StoreFront-2st.jpg differ
diff --git a/data/resources/textures_us/commercial/Tiles/1stTileCommercial1.jpg b/data/resources/textures_us/commercial/Tiles/1stTileCommercial1.jpg
new file mode 100644
index 0000000..db9eb78
Binary files /dev/null and b/data/resources/textures_us/commercial/Tiles/1stTileCommercial1.jpg differ
diff --git a/data/resources/textures_us/commercial/Tiles/20storyHzTileconcrwhite1.jpg b/data/resources/textures_us/commercial/Tiles/20storyHzTileconcrwhite1.jpg
new file mode 100644
index 0000000..ce27778
Binary files /dev/null and b/data/resources/textures_us/commercial/Tiles/20storyHzTileconcrwhite1.jpg differ
diff --git a/data/resources/textures_us/commercial/Tiles/2stTile_ParkingGarage.jpg b/data/resources/textures_us/commercial/Tiles/2stTile_ParkingGarage.jpg
new file mode 100644
index 0000000..8259a50
Binary files /dev/null and b/data/resources/textures_us/commercial/Tiles/2stTile_ParkingGarage.jpg differ
diff --git a/data/resources/textures_us/commercial/Tiles/3stTileCommercial.jpg b/data/resources/textures_us/commercial/Tiles/3stTileCommercial.jpg
new file mode 100644
index 0000000..9ffe7ae
Binary files /dev/null and b/data/resources/textures_us/commercial/Tiles/3stTileCommercial.jpg differ
diff --git a/data/resources/textures_us/commercial/Tiles/3stTile_ParkingGarage2.jpg b/data/resources/textures_us/commercial/Tiles/3stTile_ParkingGarage2.jpg
new file mode 100644
index 0000000..1d44848
Binary files /dev/null and b/data/resources/textures_us/commercial/Tiles/3stTile_ParkingGarage2.jpg differ
diff --git a/data/resources/textures_us/commercial/Tiles/USUAE-2stTile_rep.jpg b/data/resources/textures_us/commercial/Tiles/USUAE-2stTile_rep.jpg
new file mode 100644
index 0000000..2b569f6
Binary files /dev/null and b/data/resources/textures_us/commercial/Tiles/USUAE-2stTile_rep.jpg differ
diff --git a/data/resources/textures_us/commercial/Tiles/USUAE-3stTile_rep.jpg b/data/resources/textures_us/commercial/Tiles/USUAE-3stTile_rep.jpg
new file mode 100644
index 0000000..6a1750d
Binary files /dev/null and b/data/resources/textures_us/commercial/Tiles/USUAE-3stTile_rep.jpg differ
diff --git a/data/resources/textures_us/commercial/US-10stCommOfficeWhite2.jpg b/data/resources/textures_us/commercial/US-10stCommOfficeWhite2.jpg
new file mode 100644
index 0000000..387fbaa
Binary files /dev/null and b/data/resources/textures_us/commercial/US-10stCommOfficeWhite2.jpg differ
diff --git a/data/resources/textures_us/commercial/US-11stOfficeGlass.jpg b/data/resources/textures_us/commercial/US-11stOfficeGlass.jpg
new file mode 100644
index 0000000..d3ad93c
Binary files /dev/null and b/data/resources/textures_us/commercial/US-11stOfficeGlass.jpg differ
diff --git a/data/resources/textures_us/commercial/US-14stOfficeHotel.jpg b/data/resources/textures_us/commercial/US-14stOfficeHotel.jpg
new file mode 100644
index 0000000..a87fe53
Binary files /dev/null and b/data/resources/textures_us/commercial/US-14stOfficeHotel.jpg differ
diff --git a/data/resources/textures_us/commercial/US-1stComm5.jpg b/data/resources/textures_us/commercial/US-1stComm5.jpg
new file mode 100644
index 0000000..3fe2a95
Binary files /dev/null and b/data/resources/textures_us/commercial/US-1stComm5.jpg differ
diff --git a/data/resources/textures_us/commercial/US-1stCommBrick2.jpg b/data/resources/textures_us/commercial/US-1stCommBrick2.jpg
new file mode 100644
index 0000000..391f246
Binary files /dev/null and b/data/resources/textures_us/commercial/US-1stCommBrick2.jpg differ
diff --git a/data/resources/textures_us/commercial/US-1stCommBrick3.jpg b/data/resources/textures_us/commercial/US-1stCommBrick3.jpg
new file mode 100644
index 0000000..2d4f4eb
Binary files /dev/null and b/data/resources/textures_us/commercial/US-1stCommBrick3.jpg differ
diff --git a/data/resources/textures_us/commercial/US-1stCommStFront3.jpg b/data/resources/textures_us/commercial/US-1stCommStFront3.jpg
new file mode 100644
index 0000000..c4ed939
Binary files /dev/null and b/data/resources/textures_us/commercial/US-1stCommStFront3.jpg differ
diff --git a/data/resources/textures_us/commercial/US-1stCommWarehousewhite1.jpg b/data/resources/textures_us/commercial/US-1stCommWarehousewhite1.jpg
new file mode 100644
index 0000000..2c32f4d
Binary files /dev/null and b/data/resources/textures_us/commercial/US-1stCommWarehousewhite1.jpg differ
diff --git a/data/resources/textures_us/commercial/US-22stOfficeWhite.jpg b/data/resources/textures_us/commercial/US-22stOfficeWhite.jpg
new file mode 100644
index 0000000..ad5e9d9
Binary files /dev/null and b/data/resources/textures_us/commercial/US-22stOfficeWhite.jpg differ
diff --git a/data/resources/textures_us/commercial/US-2stCommRestRedBrick1.jpg b/data/resources/textures_us/commercial/US-2stCommRestRedBrick1.jpg
new file mode 100644
index 0000000..cb0f3f2
Binary files /dev/null and b/data/resources/textures_us/commercial/US-2stCommRestRedBrick1.jpg differ
diff --git a/data/resources/textures_us/commercial/US-3stCommBrnBrick1.jpg b/data/resources/textures_us/commercial/US-3stCommBrnBrick1.jpg
new file mode 100644
index 0000000..474cdfc
Binary files /dev/null and b/data/resources/textures_us/commercial/US-3stCommBrnBrick1.jpg differ
diff --git a/data/resources/textures_us/commercial/US-4stOffice.jpg b/data/resources/textures_us/commercial/US-4stOffice.jpg
new file mode 100644
index 0000000..e600f71
Binary files /dev/null and b/data/resources/textures_us/commercial/US-4stOffice.jpg differ
diff --git a/data/resources/textures_us/commercial/US-Artdeco-Storefront-3st.jpg b/data/resources/textures_us/commercial/US-Artdeco-Storefront-3st.jpg
new file mode 100644
index 0000000..3316f5d
Binary files /dev/null and b/data/resources/textures_us/commercial/US-Artdeco-Storefront-3st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-CityTownOffice_5st.jpg b/data/resources/textures_us/commercial/US-CityTownOffice_5st.jpg
new file mode 100644
index 0000000..ab9ddc0
Binary files /dev/null and b/data/resources/textures_us/commercial/US-CityTownOffice_5st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-Office-25st.jpg b/data/resources/textures_us/commercial/US-Office-25st.jpg
new file mode 100644
index 0000000..7335657
Binary files /dev/null and b/data/resources/textures_us/commercial/US-Office-25st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-OfficeComm-2st.jpg b/data/resources/textures_us/commercial/US-OfficeComm-2st.jpg
new file mode 100644
index 0000000..679bc17
Binary files /dev/null and b/data/resources/textures_us/commercial/US-OfficeComm-2st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-OfficeModern-42st.jpg b/data/resources/textures_us/commercial/US-OfficeModern-42st.jpg
new file mode 100644
index 0000000..6656f87
Binary files /dev/null and b/data/resources/textures_us/commercial/US-OfficeModern-42st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-OfficeWhite_7st.jpg b/data/resources/textures_us/commercial/US-OfficeWhite_7st.jpg
new file mode 100644
index 0000000..247acf2
Binary files /dev/null and b/data/resources/textures_us/commercial/US-OfficeWhite_7st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-Office_4st.jpg b/data/resources/textures_us/commercial/US-Office_4st.jpg
new file mode 100644
index 0000000..8001097
Binary files /dev/null and b/data/resources/textures_us/commercial/US-Office_4st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-Office_OldBank-3st.jpg b/data/resources/textures_us/commercial/US-Office_OldBank-3st.jpg
new file mode 100644
index 0000000..71c03b5
Binary files /dev/null and b/data/resources/textures_us/commercial/US-Office_OldBank-3st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-Office_Storefront-3st.jpg b/data/resources/textures_us/commercial/US-Office_Storefront-3st.jpg
new file mode 100644
index 0000000..3ace1aa
Binary files /dev/null and b/data/resources/textures_us/commercial/US-Office_Storefront-3st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-Town_StoreFront2_2st.jpg b/data/resources/textures_us/commercial/US-Town_StoreFront2_2st.jpg
new file mode 100644
index 0000000..b9afa75
Binary files /dev/null and b/data/resources/textures_us/commercial/US-Town_StoreFront2_2st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-Town_StoreFront3_2st.jpg b/data/resources/textures_us/commercial/US-Town_StoreFront3_2st.jpg
new file mode 100644
index 0000000..0a327d5
Binary files /dev/null and b/data/resources/textures_us/commercial/US-Town_StoreFront3_2st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-Town_StoreFront4_3st.jpg b/data/resources/textures_us/commercial/US-Town_StoreFront4_3st.jpg
new file mode 100644
index 0000000..9130ed7
Binary files /dev/null and b/data/resources/textures_us/commercial/US-Town_StoreFront4_3st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-Town_StoreFront_2st.jpg b/data/resources/textures_us/commercial/US-Town_StoreFront_2st.jpg
new file mode 100644
index 0000000..864d3e9
Binary files /dev/null and b/data/resources/textures_us/commercial/US-Town_StoreFront_2st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dccommstrfrontgtown3st.jpg b/data/resources/textures_us/commercial/US-dccommstrfrontgtown3st.jpg
new file mode 100644
index 0000000..a1620e6
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dccommstrfrontgtown3st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dcconcrsolidwhite5st.jpg b/data/resources/textures_us/commercial/US-dcconcrsolidwhite5st.jpg
new file mode 100644
index 0000000..453466b
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dcconcrsolidwhite5st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dcdupontconcr5st.jpg b/data/resources/textures_us/commercial/US-dcdupontconcr5st.jpg
new file mode 100644
index 0000000..90a6a1b
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dcdupontconcr5st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dcgovtconcrtan4st.jpg b/data/resources/textures_us/commercial/US-dcgovtconcrtan4st.jpg
new file mode 100644
index 0000000..222ab2c
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dcgovtconcrtan4st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dchotelDC2_8st.jpg b/data/resources/textures_us/commercial/US-dchotelDC2_8st.jpg
new file mode 100644
index 0000000..df59053
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dchotelDC2_8st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dcofficeconcrwhite6-7st.jpg b/data/resources/textures_us/commercial/US-dcofficeconcrwhite6-7st.jpg
new file mode 100644
index 0000000..2409f2a
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dcofficeconcrwhite6-7st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dcofficeconcrwhite8st.jpg b/data/resources/textures_us/commercial/US-dcofficeconcrwhite8st.jpg
new file mode 100644
index 0000000..1c2eed5
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dcofficeconcrwhite8st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dcofficeconctan12st.jpg b/data/resources/textures_us/commercial/US-dcofficeconctan12st.jpg
new file mode 100644
index 0000000..b925558
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dcofficeconctan12st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dctbrickcomm2st.jpg b/data/resources/textures_us/commercial/US-dctbrickcomm2st.jpg
new file mode 100644
index 0000000..8e356f5
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dctbrickcomm2st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dcwhiteconc10st.jpg b/data/resources/textures_us/commercial/US-dcwhiteconc10st.jpg
new file mode 100644
index 0000000..43fbabc
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dcwhiteconc10st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dcwhiteconc10st2.jpg b/data/resources/textures_us/commercial/US-dcwhiteconc10st2.jpg
new file mode 100644
index 0000000..21a1596
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dcwhiteconc10st2.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dcwhiteconcr2st.jpg b/data/resources/textures_us/commercial/US-dcwhiteconcr2st.jpg
new file mode 100644
index 0000000..ad72015
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dcwhiteconcr2st.jpg differ
diff --git a/data/resources/textures_us/commercial/US-dcwhiteconcr6st.jpg b/data/resources/textures_us/commercial/US-dcwhiteconcr6st.jpg
new file mode 100644
index 0000000..387757a
Binary files /dev/null and b/data/resources/textures_us/commercial/US-dcwhiteconcr6st.jpg differ
diff --git a/data/resources/textures_us/commercial/USUAE-4stCommercial.jpg b/data/resources/textures_us/commercial/USUAE-4stCommercial.jpg
new file mode 100644
index 0000000..596e268
Binary files /dev/null and b/data/resources/textures_us/commercial/USUAE-4stCommercial.jpg differ
diff --git a/data/resources/textures_us/commercial/dillingers_0_scale.jpg b/data/resources/textures_us/commercial/dillingers_0_scale.jpg
new file mode 100644
index 0000000..12f8f24
Binary files /dev/null and b/data/resources/textures_us/commercial/dillingers_0_scale.jpg differ
diff --git a/data/resources/textures_us/commercial/gray_2_story_0_scale.jpg b/data/resources/textures_us/commercial/gray_2_story_0_scale.jpg
new file mode 100644
index 0000000..a65ffa1
Binary files /dev/null and b/data/resources/textures_us/commercial/gray_2_story_0_scale.jpg differ
diff --git a/data/resources/textures_us/commercial/salmon_3_story_0_scale.jpg b/data/resources/textures_us/commercial/salmon_3_story_0_scale.jpg
new file mode 100644
index 0000000..16714d1
Binary files /dev/null and b/data/resources/textures_us/commercial/salmon_3_story_0_scale.jpg differ
diff --git a/data/resources/textures_us/misc/grid.jpg b/data/resources/textures_us/misc/grid.jpg
new file mode 100644
index 0000000..7df5f1c
Binary files /dev/null and b/data/resources/textures_us/misc/grid.jpg differ
diff --git a/data/resources/textures_us/misc/grid.png b/data/resources/textures_us/misc/grid.png
new file mode 100644
index 0000000..ec57932
Binary files /dev/null and b/data/resources/textures_us/misc/grid.png differ
diff --git a/data/resources/textures_us/residential/5storyCondo_concrglasswhite.jpg b/data/resources/textures_us/residential/5storyCondo_concrglasswhite.jpg
new file mode 100644
index 0000000..6c38819
Binary files /dev/null and b/data/resources/textures_us/residential/5storyCondo_concrglasswhite.jpg differ
diff --git a/data/resources/textures_us/residential/6storybrickbrown1.jpg b/data/resources/textures_us/residential/6storybrickbrown1.jpg
new file mode 100644
index 0000000..1d6d7b9
Binary files /dev/null and b/data/resources/textures_us/residential/6storybrickbrown1.jpg differ
diff --git a/data/resources/textures_us/residential/BUILDINGS_179.jpg b/data/resources/textures_us/residential/BUILDINGS_179.jpg
new file mode 100644
index 0000000..f9be1c7
Binary files /dev/null and b/data/resources/textures_us/residential/BUILDINGS_179.jpg differ
diff --git a/data/resources/textures_us/residential/US-CityCondo-3st.jpg b/data/resources/textures_us/residential/US-CityCondo-3st.jpg
new file mode 100644
index 0000000..dddc16e
Binary files /dev/null and b/data/resources/textures_us/residential/US-CityCondo-3st.jpg differ
diff --git a/data/resources/textures_us/residential/US-CityCondo-4st.jpg b/data/resources/textures_us/residential/US-CityCondo-4st.jpg
new file mode 100644
index 0000000..3b6e4ad
Binary files /dev/null and b/data/resources/textures_us/residential/US-CityCondo-4st.jpg differ
diff --git a/data/resources/textures_us/residential/US-CityCondo2st.jpg b/data/resources/textures_us/residential/US-CityCondo2st.jpg
new file mode 100644
index 0000000..f9be1c7
Binary files /dev/null and b/data/resources/textures_us/residential/US-CityCondo2st.jpg differ
diff --git a/data/resources/textures_us/residential/US-CityCondoBrownstone6Row_4st.jpg b/data/resources/textures_us/residential/US-CityCondoBrownstone6Row_4st.jpg
new file mode 100644
index 0000000..8066d22
Binary files /dev/null and b/data/resources/textures_us/residential/US-CityCondoBrownstone6Row_4st.jpg differ
diff --git a/data/resources/textures_us/residential/US-CityCondoModern_brick2_4st.jpg b/data/resources/textures_us/residential/US-CityCondoModern_brick2_4st.jpg
new file mode 100644
index 0000000..04619da
Binary files /dev/null and b/data/resources/textures_us/residential/US-CityCondoModern_brick2_4st.jpg differ
diff --git a/data/resources/textures_us/residential/US-CityCondo_brick_4st.jpg b/data/resources/textures_us/residential/US-CityCondo_brick_4st.jpg
new file mode 100644
index 0000000..7a84826
Binary files /dev/null and b/data/resources/textures_us/residential/US-CityCondo_brick_4st.jpg differ
diff --git a/data/resources/textures_us/residential/US-CityCondo_brick_wStore_4st.jpg b/data/resources/textures_us/residential/US-CityCondo_brick_wStore_4st.jpg
new file mode 100644
index 0000000..ce9c898
Binary files /dev/null and b/data/resources/textures_us/residential/US-CityCondo_brick_wStore_4st.jpg differ
diff --git a/data/resources/textures_us/residential/US-dcaptbrickbrown5st.jpg b/data/resources/textures_us/residential/US-dcaptbrickbrown5st.jpg
new file mode 100644
index 0000000..c9f47c5
Binary files /dev/null and b/data/resources/textures_us/residential/US-dcaptbrickbrown5st.jpg differ
diff --git a/data/resources/textures_us/residential/US-dccondoglass12st.jpg b/data/resources/textures_us/residential/US-dccondoglass12st.jpg
new file mode 100644
index 0000000..581bb2b
Binary files /dev/null and b/data/resources/textures_us/residential/US-dccondoglass12st.jpg differ
diff --git a/data/resources/textures_us/residential/US-dccondowhitestuc5st.jpg b/data/resources/textures_us/residential/US-dccondowhitestuc5st.jpg
new file mode 100644
index 0000000..6b996ff
Binary files /dev/null and b/data/resources/textures_us/residential/US-dccondowhitestuc5st.jpg differ
diff --git a/data/resources/textures_us/residential/US-dcresbrnstnbrick3st.jpg b/data/resources/textures_us/residential/US-dcresbrnstnbrick3st.jpg
new file mode 100644
index 0000000..50e23d1
Binary files /dev/null and b/data/resources/textures_us/residential/US-dcresbrnstnbrick3st.jpg differ
diff --git a/data/resources/textures_us/residential/tiles/USUAE-8stTile_rep.jpg b/data/resources/textures_us/residential/tiles/USUAE-8stTile_rep.jpg
new file mode 100644
index 0000000..67772b1
Binary files /dev/null and b/data/resources/textures_us/residential/tiles/USUAE-8stTile_rep.jpg differ
diff --git a/data/resources/textures_us/rooftop/roof_misc2.jpg b/data/resources/textures_us/rooftop/roof_misc2.jpg
new file mode 100644
index 0000000..4f408fc
Binary files /dev/null and b/data/resources/textures_us/rooftop/roof_misc2.jpg differ
diff --git a/data/resources/textures_us/rooftop/roof_misc3.jpg b/data/resources/textures_us/rooftop/roof_misc3.jpg
new file mode 100644
index 0000000..3ba3622
Binary files /dev/null and b/data/resources/textures_us/rooftop/roof_misc3.jpg differ
diff --git a/data/resources/textures_us/rooftop/roof_misc4.jpg b/data/resources/textures_us/rooftop/roof_misc4.jpg
new file mode 100644
index 0000000..f456941
Binary files /dev/null and b/data/resources/textures_us/rooftop/roof_misc4.jpg differ
diff --git a/data/resources/textures_us/rooftop/roof_misc5.jpg b/data/resources/textures_us/rooftop/roof_misc5.jpg
new file mode 100644
index 0000000..3dc0708
Binary files /dev/null and b/data/resources/textures_us/rooftop/roof_misc5.jpg differ
diff --git a/data/resources/textures_us/rooftop/tiled/roof_tiled1.jpg b/data/resources/textures_us/rooftop/tiled/roof_tiled1.jpg
new file mode 100644
index 0000000..4a2a235
Binary files /dev/null and b/data/resources/textures_us/rooftop/tiled/roof_tiled1.jpg differ
diff --git a/data/resources/textures_us/rooftop/tiled/roof_tiled2.jpg b/data/resources/textures_us/rooftop/tiled/roof_tiled2.jpg
new file mode 100644
index 0000000..0fa1ba9
Binary files /dev/null and b/data/resources/textures_us/rooftop/tiled/roof_tiled2.jpg differ
diff --git a/data/resources/textures_us/rooftop/tiled/roof_tiled3.jpg b/data/resources/textures_us/rooftop/tiled/roof_tiled3.jpg
new file mode 100644
index 0000000..f30d51f
Binary files /dev/null and b/data/resources/textures_us/rooftop/tiled/roof_tiled3.jpg differ
diff --git a/docs/source/data.rst b/docs/source/data.rst
index f60660a..538554e 100644
--- a/docs/source/data.rst
+++ b/docs/source/data.rst
@@ -96,8 +96,8 @@ Tips for Preparing your own Data
 
     **Build overviews**
     
-    Adding overviews (also called ''pyramids'' or ''rsets'') will greatly increase
-    the peformance of a datasource in osgEarth.  You can use the
+    Adding overviews (also called ''pyramids'' or ''rsets'') can sometimes increase
+    the performance of a datasource in osgEarth.  You can use the
     `gdaladdo <http://gdal.org/gdaladdo.html>`_ utility to add overviews to a dataset.
     
     For example::
diff --git a/docs/source/developer/custom_driver.rst b/docs/source/developer/custom_driver.rst
index cf99fa3..e69de29 100644
--- a/docs/source/developer/custom_driver.rst
+++ b/docs/source/developer/custom_driver.rst
@@ -1,4 +0,0 @@
-Building a Custom Driver
-========================
-
-TBD.
diff --git a/docs/source/developer/qt_integration.rst b/docs/source/developer/qt_integration.rst
index 2e6097d..e69de29 100644
--- a/docs/source/developer/qt_integration.rst
+++ b/docs/source/developer/qt_integration.rst
@@ -1,5 +0,0 @@
-Qt Integration
-==============
-
-TBD.
-
diff --git a/docs/source/developer/utilities.rst b/docs/source/developer/utilities.rst
index b647f45..47995ad 100644
--- a/docs/source/developer/utilities.rst
+++ b/docs/source/developer/utilities.rst
@@ -71,12 +71,6 @@ Example::
 .. _Military Grid Reference System: http://en.wikipedia.org/wiki/Military_grid_reference_system
 
 
-Graticules
-----------
-
-LineOfSight
------------
-
 MouseCoordsTool
 ---------------
 
@@ -114,13 +108,3 @@ For your convenience, ``MouseCoordsTool`` also comes with a stock callback that
 print the coords to ``osgEarthUtil::Controls::LabelControl``. You can even pass a
 ``LabelControl`` to the contructor to make it even easier.
 
-
-ObjectLocator
--------------
-
-SkyNode
--------
-
-TerrainProfile
---------------
-
diff --git a/docs/source/faq.rst b/docs/source/faq.rst
index 08032eb..b7293ef 100644
--- a/docs/source/faq.rst
+++ b/docs/source/faq.rst
@@ -1,24 +1,78 @@
 FAQ
 ===
 
-Miscellaneous
--------------
-
-**How do make the globe transparent so I can see underground?**
-
-	By default, the globe will be opaque white when there are no image layers, or when all the image
-	layers have their opacities set to zero. To make the underlying globe transparent, you need to 
-	enable *terrain blending*, like so::
-	
-		<map>
-		  <options>
-		    <terrain blending="true" ...
-			
-
-Other Terrain Technologies
---------------------------
-
-**Does osgEarth work with VirtualPlanetBuilder?**
+**Sections:**
+
+* `Common Usage`_
+* `Other Terrain Formats`_
+* `Community and Support`_
+* `Licensing`_
+
+
+Common Usage
+------------
+
+How do I place a 3D model on the map?
+.....................................
+
+    One way to position a 3D model is to use the ``ModelNode``. Here is the basic idea::
+
+        using namespace osgEarth;
+        using namespace osgEarth::Symbology;
+        ...
+
+        // load your model:
+        osg::Node* myModel = osgDB::readNodeFile(...);
+        
+        // establish the coordinate system you wish to use:
+        const SpatialReference* latLong = SpatialReference::get("wgs84");
+        
+        // construct your symbology:
+        Style style;
+        style.getOrCreate<ModelSymbol>()->setModel( myModel );
+        
+        // make a ModelNode:
+        ModelNode* model = new ModelNode( mapNode, style );
+        
+        // Set its location.
+        model->setPosition( GeoPoint(latLong, -121.0, 34.0, 1000.0, ALTMODE_ABSOLUTE) );
+
+    If you just want to make a ``osg::Matrix`` so you can position a model using your own 
+    ``osg::MatrixTransform``, you can use the ``GeoPoint`` class like so::
+    
+        GeoPoint point(latLong, -121.0, 34.0, 1000.0, ALTMODE_ABSOLUTE);
+        osg::Matrix matrix;
+        point.createLocalToWorld( matrix );
+        myMatrixTransform->setMatrix( matrix );
+
+    Look at the ``osgearth_annotation.cpp`` sample for more inspiration.
+    
+
+How do make the terrain transparent?
+....................................
+
+    By default, the globe will be opaque white when there are no image layers, or when all the image
+    layers have their opacities set to zero. To make the underlying globe transparent, set the 
+    base color of the terrain to a transparent color like so::
+
+        <map>
+            <options>
+                <terrain color="#ffffff00" ...
+
+    In code, this option is found in the ``MPTerrainEngineOptions`` class::
+    
+        #include <osgEarthDrivers/engine_mp/MPTerrainEngineOptions>
+        using namespace osgEarth::Drivers;
+        ...
+        MPTerrainEngineOptions options;
+        options.color() = osg::Vec4(1,1,1,0);
+
+
+Other Terrain Formats
+---------------------
+
+Does osgEarth work with VirtualPlanetBuilder?
+.............................................
 
 	VirtualPlanetBuilder_ (VPB) is a command-line terrain generation tool. Before osgEarth
 	came along, VPB	was probably the most-used open source tool for building terrains for
@@ -42,8 +96,10 @@ Other Terrain Technologies
 	model but no longer have access to the source data from which it was built. If at all
 	possible you should feed your source data directly into osgEarth instead of using the VPB
 	driver.
-	
-**Can osgEarth load TerraPage or MetaFlight?**
+
+
+Can osgEarth load TerraPage or MetaFlight?
+..........................................
 
 	osgEarth cannot natively load TerraPage (TXP) or MetaFlight. However, osgEarth does have a
 	"bring your own terrain" plugin that allows you to load an external model and use it as your
@@ -55,10 +111,11 @@ Other Terrain Technologies
 .. _VirtualPlanetBuilder:	http://www.openscenegraph.com/index.php/documentation/tools/virtual-planet-builder
 
 
-Community
----------
+Community and Support
+---------------------
 
-**What is the "best practice" for using GitHub?**
+What is the "best practice" for using GitHub?
+.............................................
 
 	The best way to work with the osgEarth repository is to make your own clone on GitHub
 	and to work from that clone. Why not work directly against the main repository? You
@@ -67,13 +124,16 @@ Community
 	
 	1. Create your own GitHub account and log in.
 	2. Clone the osgEarth repo.
-	3. Work from your clone. Update it from the main repository peridocially.
-	
-**How do I submit changes to osgEarth?**
+	3. Work from your clone. Sync it to the main repository peridocially to get the
+	   latest changes.
 
-	We accept contributions and bug fixes through GitHub's *pull request* mechanism.
 
-	First you need your own GitHub account and a clone of the repo (see above). Next,
+How do I submit changes to osgEarth?
+....................................
+
+	We accept contributions and bug fixes through GitHub's `Pull Request`_ mechanism.
+
+	First you need your own GitHub account and a fork of the repo (see above). Next,
 	follow these guidelines:
 	
 	1. Create a *branch* in which to make your changes.
@@ -86,17 +146,34 @@ Community
 	license since your changes are still available to the public - even if they are
 	not merged into the master repository.
 	
+.. _Pull Request:   https://help.github.com/articles/using-pull-requests
+
+
+Can I hire someone to help me with osgEarth?
+............................................
+
+    Of course! We at Pelican Mapping are in the business of supporting users of
+    the osgEarth SDK and are available for contracting, training, and integration
+    services. The easiest way to get in touch with us is through our web site
+    `contact form`_.
+    
+.. _contact form:   http://pelicanmapping.com/?page_id=2
+
+	
 Licensing
 ---------
 
-**Can I use osgEarth in a commercial product?**
+Can I use osgEarth in a commercial product?
+...........................................
 
 	Yes. The license permits use in a commercial product. The only requirement is that
 	any changes you make to the actual osgEarth library *itself* be made available
 	under the same license as osgEarth. You do *not* need to make other parts of your
 	application public.
-	
-**Can I use osgEarth in an iOS app?**
+
+
+Can I use osgEarth in an iOS app?
+.................................
 
 	Yes. Apple's policy requires only statically linked libraries. Technically, the
 	LGPL does not support static linking, but we grant an exception in this case.
diff --git a/docs/source/index.rst b/docs/source/index.rst
index d2ed9f0..851e3eb 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -5,12 +5,12 @@
 
 osgEarth - a C++ Terrain SDK
 ============================
-Welcome to the osgEarth_ documentation project.
+Welcome to the osgEarth_ documentation project!
 
-osgEarth_ is a big SDK with a LOT of functionality.  Keeping up on the documentation is
-not easy! So now we've moved the docs right into the osgEarth Git repository to make
-it easier for the osgEarth team and user community to help. Check the links at the 
-bottom of the sidebar.
+osgEarth_ is a big SDK. Keeping up on the documentation is not easy!
+So now we've moved the docs right into the osgEarth Git repository to make
+it easier for the osgEarth team and user community to help. Check the
+links at the bottom of the sidebar.
 
 Table of Contents
 -----------------
diff --git a/docs/source/install.rst b/docs/source/install.rst
index 38f5cc9..1a9d4b1 100644
--- a/docs/source/install.rst
+++ b/docs/source/install.rst
@@ -3,10 +3,11 @@ Building osgEarth
 osgEarth is a cross-platform library. It uses the  CMake cross-platform build system, version 2.8 or newer. This is the same build system that  OpenSceneGraph uses.
 
 Get the source code
-----------------
+-------------------
 #Option 1: Use GIT
 
-osgEarth source is hosted on GitHub. You will need a git client to access it. We recommend  TortoiseGit for Windows users.
+osgEarth source is hosted on GitHub. You will need a git client to access it.
+We recommend  TortoiseGit for Windows users.
 
 To clone the repository, point your client at git://github.com/gwaldron/osgearth.git
 
diff --git a/docs/source/references/drivers/feature/index.rst b/docs/source/references/drivers/feature/index.rst
new file mode 100644
index 0000000..b7599ca
--- /dev/null
+++ b/docs/source/references/drivers/feature/index.rst
@@ -0,0 +1,11 @@
+Feature Drivers
+===============
+A *Feature Driver* is a plugin that reads attributed vector data, also 
+known as *feature data*.
+
+.. toctree::
+   :maxdepth: 1
+
+   ogr
+   tfs
+   wfs
diff --git a/docs/source/references/drivers/feature/ogr.rst b/docs/source/references/drivers/feature/ogr.rst
new file mode 100644
index 0000000..e4e9203
--- /dev/null
+++ b/docs/source/references/drivers/feature/ogr.rst
@@ -0,0 +1,31 @@
+OGR
+===
+This plugin reads vector data from any of the formats supported by the
+`OGR Simple Feature Library`_ (which is quite a lot). Most common among
+these includes ESRI Shapefiles and GML.
+
+Example usage::
+
+    <model driver="feature_geom">
+        <features driver="ogr">
+            <url>data/world_boundaries.shp</url>
+        </features>
+        ...
+    
+Properties:
+
+    :url:                   Location from which to load feature data
+    :connection:            If the feature data is in a database, use this to specify the
+                            DB connection string instead of using the ``url``.
+    :geometry:              Specify *inline* geometry in `OGC WKT format`_ instead of using
+                            ``url`` or ``connection``.
+    :geometry_url:          Same as ``geometry`` except that the WKT string is in a file.
+    :ogr_driver:            ``OGR driver``_ to use. (default = "ESRI Shapefile")
+    :build_spatial_index:   Set to ``true`` to build a spatial index for the feature data,
+                            which will dramatically speed up access for larger datasets.
+    :layer:                 Some datasets require an addition layer identifier for sub-datasets;
+                            Set that here (integer).
+
+
+.. _OGR Simple Feature Library:  http://www.gdal.org/ogr
+.. _OGR driver:                  http://www.gdal.org/ogr/ogr_formats.html
diff --git a/docs/source/references/drivers/feature/tfs.rst b/docs/source/references/drivers/feature/tfs.rst
new file mode 100644
index 0000000..e4093e9
--- /dev/null
+++ b/docs/source/references/drivers/feature/tfs.rst
@@ -0,0 +1,19 @@
+TFS (Tiled Feature Service)
+===========================
+This plugin reads vector data from a *Tiled Feature Service* repository.
+TFS is a tiled layout similar to :doc:`/references/drivers/tile/tms` but 
+for cropped feature data.
+
+Example usage::
+
+    <model driver="feature_geom">
+        <features driver="tfs">
+            <url>http://readymap.org/features/1/tfs/</url>
+            <format>json</format>
+        </features>
+        ...
+    
+Properties:
+
+    :url:      Location from which to load feature data
+    :format:   Format of the TFS data; options are ``json`` (default) or ``gml``.
diff --git a/docs/source/references/drivers/feature/wfs.rst b/docs/source/references/drivers/feature/wfs.rst
new file mode 100644
index 0000000..c650f68
--- /dev/null
+++ b/docs/source/references/drivers/feature/wfs.rst
@@ -0,0 +1,23 @@
+WFS (OGC Web Feature Service)
+===========================
+This plugin reads vector data from an OGC `Web Feature Service`_ resource.
+
+Example usage::
+
+    <model driver="feature_geom">
+        <features name="states" driver="wfs">
+            <url> http://demo.opengeo.org/geoserver/wfs</url>
+            <typename>states</typename>
+            <outputformat>json</outputformat>
+        </features>
+        ...
+    
+Properties:
+
+    :url:             Location from which to load feature data
+    :typename:        WFS type name to access (i.e., the layer)
+    :outputformat:    Format to return from the service; ``json`` or ``gml``
+    :maxfeatures:     Maximum number of features to return for a query
+
+
+.. _Web Feature Service:    http://en.wikipedia.org/wiki/Web_Feature_Service
diff --git a/docs/source/references/drivers/index.rst b/docs/source/references/drivers/index.rst
new file mode 100644
index 0000000..fd0dbf9
--- /dev/null
+++ b/docs/source/references/drivers/index.rst
@@ -0,0 +1,14 @@
+Driver Reference
+================
+This document is a reference guide to all of osgEarth's stock *drivers*.
+A *driver* is a plugin module that implements support for some external
+resource within osgEarth.
+
+.. toctree::
+   :maxdepth: 2
+
+   tile/index
+   model/index
+   feature/index
+   terrain/index
+   loaders/index
diff --git a/docs/source/references/drivers/loaders/index.rst b/docs/source/references/drivers/loaders/index.rst
new file mode 100644
index 0000000..663ca96
--- /dev/null
+++ b/docs/source/references/drivers/loaders/index.rst
@@ -0,0 +1,10 @@
+Loaders
+=======
+A *Loader* is a plugin that reads a particular file type and transforms it
+into an osgEarth object or set of objects.
+
+.. toctree::
+   :maxdepth: 1
+
+   earth
+   kml
diff --git a/docs/source/references/drivers/model/feature_geom.rst b/docs/source/references/drivers/model/feature_geom.rst
new file mode 100644
index 0000000..666c93c
--- /dev/null
+++ b/docs/source/references/drivers/model/feature_geom.rst
@@ -0,0 +1,34 @@
+Feature Geometry
+================
+This plugin renders vector feature data into OSG geometry using style sheets.
+
+Example usage::
+
+    <model driver="feature_geom">
+        <features driver="ogr">
+            <url>world.shp</url>
+        </features>
+        <styles>
+            <style type="text/css">
+                default {
+                    stroke:       #ffff00;
+                    stroke-width: 2;
+                }
+            </style>
+        </styles>
+        <fading duration="1.0"/>
+    </model>
+    
+Properties:
+
+    :geo_interpolation:     How to interpolate geographic lines; options are ``great_circle`` or ``rhumb_line``
+    :instancing:            For point model substitution, whether to use GL draw-instanced (default is ``false``)
+
+.. include:: feature_model_shared_props.rst
+
+Also see:
+
+    ``feature_rasterize.earth`` sample in the repo
+
+
+.. include:: feature_model_shared_blocks.rst
diff --git a/docs/source/references/drivers/model/feature_model_shared_blocks.rst b/docs/source/references/drivers/model/feature_model_shared_blocks.rst
new file mode 100644
index 0000000..5d42393
--- /dev/null
+++ b/docs/source/references/drivers/model/feature_model_shared_blocks.rst
@@ -0,0 +1,27 @@
+----
+
+Fading
+~~~~~~
+When fading is supported on a model layer, you can control it like so::
+
+    <model ...
+        <fading duration  = "1.0"
+                max_range = "6000"
+                attenuation_distance = "1000" />
+                
+Properties:
+
+    :duration:              Time over which to fade in (seconds)
+    :max_range:             Distance at which to start the fade-in
+    :attenuation_distance:  Distance over which to fade in
+
+
+Shader Policy
+~~~~~~~~~~~~~
+Some drivers support a *shader policy* that lets you control how (or whether)
+to generate shaders for external geometry. For example, if you want to load
+an external model via a stylesheet, but do NOT want osgEarth to generate
+shaders for it::
+
+    <model ...
+        <shader_policy>disable</shader_policy>
diff --git a/docs/source/references/drivers/model/feature_model_shared_props.rst b/docs/source/references/drivers/model/feature_model_shared_props.rst
new file mode 100644
index 0000000..3424669
--- /dev/null
+++ b/docs/source/references/drivers/model/feature_model_shared_props.rst
@@ -0,0 +1,14 @@
+Shared properties:
+
+All the feature-rendering drivers share the following properties (in addition
+to those above):
+
+    :styles:                Stylesheet to use to render features (see: :doc:`/references/symbology`)
+    :layout:                Paged data layout (see: :doc:`/user/features`)
+    :cache_policy:          Caching policy (see: :doc:`/user/caching`)
+    :fading:                Fading behavior (see: Fading_)
+    :feature_name:          Expression evaluating to the attribute name containing the feature name
+    :feature_indexing:      Whether to index features for query (default is ``false``)
+    :lighting:              Whether to override and set the lighting mode on this layer (t/f)
+    :max_granularity:       Anglular threshold at which to subdivide lines on a globe (degrees)
+    :shader_policy:         Options for shader generation (see: `Shader Policy`_)
diff --git a/docs/source/references/drivers/model/feature_stencil.rst b/docs/source/references/drivers/model/feature_stencil.rst
new file mode 100644
index 0000000..b8f80ef
--- /dev/null
+++ b/docs/source/references/drivers/model/feature_stencil.rst
@@ -0,0 +1,41 @@
+Feature Stencil
+===============
+This plugin "drapes" vector feature data over the terrain using a
+stencil buffering technique.
+
+Example usage::
+
+    <model driver="feature_stencil">
+        <features name="world" driver="ogr">
+            <url>../data/world.shp</url>
+        </features>
+             
+        <styles>
+            <style type="text/css">
+                world {
+                   stroke:         #ffff007f;
+                   stroke-width:   0.1;
+                }            
+            </style>
+        </styles>
+    </model>
+    
+Properties:
+
+    :extrusion_distance:  How far to extrude stencil volumes (meters)
+    :inverted:            Whether to stencil the inversion of the feature data (true/false)
+    :mask:                Whether to use the stenciled region as a terrain mask (true/false)
+    :show_volumes:        For debugging; draws the actual stencil volume geometry
+
+.. include:: feature_model_shared_props.rst
+
+Also see:
+
+    ``feature_stencil_line_draping.earth`` sample in the repo
+    
+Notes:
+
+* This plugin does NOT support paging (display layouts).
+
+
+.. include:: feature_model_shared_blocks.rst
diff --git a/docs/source/references/drivers/model/index.rst b/docs/source/references/drivers/model/index.rst
new file mode 100644
index 0000000..e33a8b3
--- /dev/null
+++ b/docs/source/references/drivers/model/index.rst
@@ -0,0 +1,13 @@
+Model Source Drivers
+====================
+A *ModelSource Driver* is a driver that produces an OpenSceneGraph node.
+osgEarth uses ModelSources to display vector feature data and to
+load and display external 3D models.
+
+.. toctree::
+   :maxdepth: 1
+
+   feature_geom
+   feature_stencil
+   simple
+   
\ No newline at end of file
diff --git a/docs/source/references/drivers/model/simple.rst b/docs/source/references/drivers/model/simple.rst
new file mode 100644
index 0000000..abce08a
--- /dev/null
+++ b/docs/source/references/drivers/model/simple.rst
@@ -0,0 +1,21 @@
+Simple Model
+=============
+This plugin simply loads an external 3D model and optionally places it at
+map coordinates.
+
+Example usage::
+
+    <model name = "cow" driver="simple">
+        <url>../data/red_flag.osg.100,100,100.scale</url>
+        <location>-74.018 40.717 10</location>
+    </model>
+    
+Properties:
+
+    :url:       External model to load
+    :location:  Map coordinates at which to place the model. SRS is that of
+                the containing map.
+
+Also see:
+
+    ``simple_model.earth`` sample in the repo
diff --git a/docs/source/references/drivers/terrain/index.rst b/docs/source/references/drivers/terrain/index.rst
new file mode 100644
index 0000000..692e6ee
--- /dev/null
+++ b/docs/source/references/drivers/terrain/index.rst
@@ -0,0 +1,12 @@
+Terrain Engine Drivers
+======================
+A *Terrain Engine Driver* is a plugin that renders the osgEarth terrain.
+In most cases, you should use the default - but legacy terrain engine plugins
+are available to temporarily support uses that still need to transition to
+the newest version of osgEarth.
+
+.. toctree::
+   :maxdepth: 1
+
+   mp
+   quadtree
diff --git a/docs/source/references/drivers/terrain/mp.rst b/docs/source/references/drivers/terrain/mp.rst
new file mode 100644
index 0000000..5b9804c
--- /dev/null
+++ b/docs/source/references/drivers/terrain/mp.rst
@@ -0,0 +1,30 @@
+MP
+==
+The default terrain engine for osgEarth renders an unlimited number of
+image layers using a tile-level multipass blending technique.
+
+Example usage::
+
+    <map>
+        <options>
+            <terrain driver          = "mp"
+                     normalize_edges = "true" />
+
+Properties:
+
+    :skirt_ratio:               The "skirt" is a piece of vertical geometry that hides
+                                gaps between adjacent tiles with different levels of
+                                detail. This property sets the ratio of skirt height to
+                                the width of the tile.
+    :normalize_edges:           Post-process the normal vectors on tile boundaries to 
+                                smooth them across tiles, making the tile boundaries
+                                less visible when not using imagery.
+    :color:                     Color of the underlying terrain (without imagery) in
+                                HTML format. Default = "#ffffffff" (opaque white). You
+                                can adjust the alpha to get transparency.
+    :quick_release_gl_objects:  When true, installs a module that releases GL resources
+                                immediately when a tile pages out. This can prevent
+                                memory run-up when traversing a paged terrain at high
+                                speed.
+    
+.. include:: terrain_options_shared.rst
diff --git a/docs/source/references/drivers/terrain/terrain_options_shared.rst b/docs/source/references/drivers/terrain/terrain_options_shared.rst
new file mode 100644
index 0000000..59238e9
--- /dev/null
+++ b/docs/source/references/drivers/terrain/terrain_options_shared.rst
@@ -0,0 +1,11 @@
+Common Properties:
+
+    :sample_ratio:              Ratio at which to resample the number of height values
+                                in each elevation tile. (The preferred approach is to use
+                                MapOptions.elevation_tile_size instead.)
+    :min_tile_range_factor:     The "maximum visible distance" ratio for all tiles. The 
+                                maximum visible distance is computed as tile radius * 
+                                this value. (default = 6.0)
+    :cluster_culling:           Cluster culling discards back-facing tiles by default. You
+                                can disable it be setting this to ``false``, for example if
+                                you want to go underground and look up at the surface.
diff --git a/docs/source/references/drivers/tile/agglite.rst b/docs/source/references/drivers/tile/agglite.rst
new file mode 100644
index 0000000..5e77b29
--- /dev/null
+++ b/docs/source/references/drivers/tile/agglite.rst
@@ -0,0 +1,34 @@
+AGGLite Rasterizer
+==================
+This plugin uses the *agglite* library to rasterize feature data to image
+tiles. It is a simple yet powerful way to render vector graphics on to
+the map.
+
+Example usage::
+
+    <image driver="agglite">
+        <features driver="ogr">
+            <url>world.shp</url>
+        </features>
+        <styles>
+            <style type="text/css">
+                default {
+                    stroke:       #ffff00;
+                    stroke-width: 500m;
+                }
+            </style>
+        </styles>
+    </image>
+    
+Properties:
+
+    :optimize_line_sampling: Downsample the line data so that it is no higher
+                             resolution than to image to which we intend to rasterize
+                             it. If you don't do this, you run the risk of the buffer 
+                             operation taking forever on very high-resolution input data.
+                             (optional)
+
+Also see:
+
+    ``feature_rasterize.earth`` sample in the repo
+
diff --git a/docs/source/references/drivers/tile/arcgis.rst b/docs/source/references/drivers/tile/arcgis.rst
new file mode 100644
index 0000000..51b26ee
--- /dev/null
+++ b/docs/source/references/drivers/tile/arcgis.rst
@@ -0,0 +1,21 @@
+ArcGIS Server
+=============
+This plugin reads image tiles form an ESRI ArcGIS server REST API.
+
+Example usage::
+
+    <image driver="arcgis">
+        <url>http://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer</url>
+    </image>
+    
+Properties:
+
+    :url:   URL or the ArcGIS Server REST API entry point for the map service
+    :token: ArcGIS Server security token (optional)
+
+Also see:
+
+    ``arcgisonline.earth`` in the ``tests`` folder.
+
+
+*ArcGIS is a registered copyright of ESRI.*
diff --git a/docs/source/references/drivers/tile/debug.rst b/docs/source/references/drivers/tile/debug.rst
new file mode 100644
index 0000000..014d96e
--- /dev/null
+++ b/docs/source/references/drivers/tile/debug.rst
@@ -0,0 +1,18 @@
+Debug Display
+=============
+This plugin renders an overlay that shows the outline of each tile
+along with its tile key (x, y, and LOD).
+
+Example usage::
+
+    <image driver="debug">
+    </image>
+    
+Properties:
+
+    None.
+    
+Notes:
+
+    Data from this driver is not cacheable.
+
diff --git a/docs/source/references/drivers/tile/gdal.rst b/docs/source/references/drivers/tile/gdal.rst
new file mode 100644
index 0000000..b50859f
--- /dev/null
+++ b/docs/source/references/drivers/tile/gdal.rst
@@ -0,0 +1,54 @@
+GDAL (Geospatial Data Abstraction Library)
+==========================================
+The GDAL plugin will read most geospatial file types. This is the most
+common driver that you will use to read data on your local filesystem.
+
+The GDAL_ library support a huge `list of formats`_, among the most common
+being GeoTIFF, JPEG, and ECW. It can also read from databases and web
+services if properly configured.
+
+Example usage::
+
+    <image driver="gdal">
+        <url>data/world.tif</url>
+    </image>
+    
+Loading multiple files from a folder (they must all be in the same projection)::
+
+    <image driver="gdal">
+        <url>data</url>
+        <extensions>tif</extensions>
+    </image>
+    
+Properties:
+
+    :url:               Location of the file to load, or the location of a folder if
+                        you intend to load multiple files in the same projection.
+    :connection:        If the data source is a database (e.g., PostGIS), the connection
+                        string to use to open the database table.
+    :extensions:        One or more file extensions, separated by semicolons, to load when
+                        ``url`` points to a folder and you are trying to load multiple files.
+    :black_extensions:  Set of file extensions to ignore (opposite of ``extensions``)
+    :interpolation:     Interpolation method to use when resampling source data; options are
+                        ``nearest``, ``average``, and ``bilinear``.  Only effects elevation data
+                        unless interp_imagery is also set to true.
+    :max_data_level:    Maximum level of detail of available data
+    :subdataset:        Some GDAL-supported formats support sub-datasets; use this property
+                        to specify such a data source
+    :interp_imagery:    Set to true to also sample imagery using the method specified by "interpolation"
+                        By default imagery is sampled using nearest sampling.  This takes advantage of
+                        any built in overviews or wavelet compression in the source file but can 
+                        cause artifacts on neighboring tiles.  Interpolating the imagery can look nicer
+                        but will be much slower.
+    :warp_profile:      The "warp profile" is a way to tell the GDAL driver to keep the original SRS and geotransform of the source data
+                        but use a Warped VRT to make the data appear to conform to the given profile.  This is useful for merging multiple 
+                        files that may be in different projections using the composite driver.
+    
+Also see:
+
+    ``gdal_tiff.earth`` sample in the repo ``tests`` folder.
+
+
+
+.. _GDAL:               http://www.gdal.org
+.. _list of formats:    http://www.gdal.org/formats_list.html
\ No newline at end of file
diff --git a/docs/source/references/drivers/tile/index.rst b/docs/source/references/drivers/tile/index.rst
new file mode 100644
index 0000000..5482eea
--- /dev/null
+++ b/docs/source/references/drivers/tile/index.rst
@@ -0,0 +1,22 @@
+Tile Source Drivers
+===================
+A *TileSource Driver* is a driver that provides raster data to the osgEarth
+terrain engine. It can produce image tiles, elevation grid tiles, or both.
+
+.. toctree::
+   :maxdepth: 1
+
+   agglite
+   arcgis
+   arcgis_map_cache
+   debug
+   gdal
+   osg
+   tilecache
+   tileservice
+   tms
+   vpb
+   wcs
+   wms
+   xyz
+
diff --git a/docs/source/references/drivers/tile/osg.rst b/docs/source/references/drivers/tile/osg.rst
new file mode 100644
index 0000000..5b35929
--- /dev/null
+++ b/docs/source/references/drivers/tile/osg.rst
@@ -0,0 +1,20 @@
+OSG (OpenSceneGraph Loader)
+===========================
+This loader will use one of OpenSceneGraph's image plugins to load an image,
+and then return tiles based on that image. Since the image will not have its
+own SRS information, you are required to specify the geospatial profile.
+
+It is rare that you will need this plugin; the GDAL driver will handle most
+file types.
+
+Example usage::
+
+    <image driver="osg">
+        <url>images/world.png</url>
+        <profile>global-geodetic</profile>
+    </image>
+    
+Properties:
+
+    :url:      Location of the file to load.
+    :profile:  Geospatial profile for the image. See Profiles_.
diff --git a/docs/source/references/drivers/tile/tilecache.rst b/docs/source/references/drivers/tile/tilecache.rst
new file mode 100644
index 0000000..cca7b1c
--- /dev/null
+++ b/docs/source/references/drivers/tile/tilecache.rst
@@ -0,0 +1,22 @@
+TileCache
+=========
+TileCache_ (MetaCarta Labs) is a web map tile caching system with its own
+layout for encoding tile hierarchies. This plugin will read tiles from that
+file layout.
+
+Example usage::
+
+    <image driver="tilecache">
+        <url>http://server/tiles/root</url>
+        <layer>landuse</layer>
+        <format>jpg</format>
+    </image>
+    
+Properties:
+
+    :url:      Root URL (or pathname) of the tilecache repository
+    :layer:    Which TileCache layer to access
+    :format:   Format of the individual tiles (e.g., jpg, png)
+
+
+.. _TileCache:      http://tilecache.org/
diff --git a/docs/source/references/drivers/tile/tileservice.rst b/docs/source/references/drivers/tile/tileservice.rst
new file mode 100644
index 0000000..ce023e1
--- /dev/null
+++ b/docs/source/references/drivers/tile/tileservice.rst
@@ -0,0 +1,20 @@
+WorldWind TileService
+=====================
+This plugin reads tiles stored in the NASA WorldWind TileService_ layout.
+
+Example usage::
+
+    <image driver="tileservice">
+        <url>http://server/tileservice/tiles</url>
+        <dataset>weather</dataset>
+        <format>png</format>
+    </image>
+    
+Properties:
+
+    :url:      Root URL (or pathname) of the TileService repository
+    :dataset:  Which WW dataset (layer) to access
+    :format:   Format of the individual tiles (e.g., jpg, png)
+
+
+.. _TileService:  http://www.worldwindcentral.com/wiki/TileService
diff --git a/docs/source/references/drivers/tile/tms.rst b/docs/source/references/drivers/tile/tms.rst
new file mode 100644
index 0000000..66eabb1
--- /dev/null
+++ b/docs/source/references/drivers/tile/tms.rst
@@ -0,0 +1,19 @@
+TMS (Tile Map Service)
+======================
+This plugin reads data stored according to the widely-used
+OSGeo `Tile Map Service`_ specification.
+
+Example usage::
+
+    <image driver="tms">
+        <url>http://readymap.org:8080/readymap/tiles/1.0.0/79/</url>
+    </image>
+    
+Properties:
+
+    :url:      Root URL (or pathname) of the TMS repository
+    :tmsType:  Set to ``google`` to invert the Y axis of the tile index
+    :format:   Override the format reported by the service (e.g., jpg, png)
+
+
+.. _Tile Map Service:  http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification
diff --git a/docs/source/references/drivers/tile/vpb.rst b/docs/source/references/drivers/tile/vpb.rst
new file mode 100644
index 0000000..1d016ef
--- /dev/null
+++ b/docs/source/references/drivers/tile/vpb.rst
@@ -0,0 +1,29 @@
+VPB (VirtualPlanerBuilder)
+==========================
+VirtualPlanerBuilder_ (VPB) is an OSG application for generating paged terrain models.
+This plugin will attempt to "scrape" the image and elevation grid tiles from a VPB model
+and provide that data to the osgEarth engine for rendering.
+
+    **Note**: We only provide this driver as a stopgap solution for those who have legacy 
+    VPB models but no longer have access to the source data. Configuring this driver can be
+    tricky since the VPB model format does not convey all the parameters that were used
+    when the model was built!
+
+Example usage::
+
+    <image driver="vpb">
+        <url>http://www.openscenegraph.org/data/earth_bayarea/earth.ive</url>
+        <primary_split_level>5</primary_split_level>
+        <secondary_split_level>11</secondary_split_level>
+        <directory_structure>nested</directory_structure>
+    </image>
+    
+Properties:
+
+    :url:                   Root file of the VPB model
+    :primary_split_level:   As set when VPB was run; see the VPB docs
+    :secondary_split_level: As set when VPB was run; see the VPB docs
+    :directory_structure:   Default is ``nested``; options are ``nested``, ``flat`` and ``task``
+
+
+.. _VirtualPlanerBuilder:  http://www.openscenegraph.com/index.php/documentation/tools/virtual-planet-builder
diff --git a/docs/source/references/drivers/tile/wcs.rst b/docs/source/references/drivers/tile/wcs.rst
new file mode 100644
index 0000000..1495210
--- /dev/null
+++ b/docs/source/references/drivers/tile/wcs.rst
@@ -0,0 +1,24 @@
+WCS (OGC Web Coverage Service)
+==============================
+This plugin reads raster coverage data in a limited fashion based on the
+OGC `Web Coverage Service`_ specification. In osgEarth it is only really useful
+for fetching elevation grid data tiles. We support a subset of WCS 1.1.
+
+Example usage::
+
+    <elevation driver="wcs">
+        <url>http://server</url>
+        <identifier>elevation</identifier>
+        <format>image/GeoTIFF<format>
+    </elevation>
+    
+Properties:
+
+    :url:            Location of the WCS resource
+    :identifier:     WCS identifier (i.e., layer to read)
+    :format:         Format of the data to return (usually ``tif``)
+    :elevation_unit: Unit to use when interpreting elevation grid height values (defaults to ``m``)
+    :range_subset:   WCS range subset string (see the WCS docs)
+
+
+.. _Web Coverage Service:  http://en.wikipedia.org/wiki/Web_Coverage_Service
diff --git a/docs/source/references/drivers/tile/wms.rst b/docs/source/references/drivers/tile/wms.rst
new file mode 100644
index 0000000..ab04ca9
--- /dev/null
+++ b/docs/source/references/drivers/tile/wms.rst
@@ -0,0 +1,34 @@
+WMS (OGC Web Map Service)
+=========================
+This plugin reads image data from an OGC `Web Map Service`_ resource.
+
+Example usage::
+
+    <image name="Landsat" driver="wms">
+        <url>http://onearth.jpl.nasa.gov/wms.cgi</url>
+        <srs>EPSG:4326</srs>
+        <tile_size>512</tile_size>
+        <layers>global_mosaic</layers>
+        <styles>visual</styles>
+        <format>jpeg</format>
+    </image>  
+    
+Properties:
+
+    :url:            Location of the WMS resource
+    :srs:            Spatial reference in which to return tiles
+    :tile_size:      Override the default tile size (default = 256)
+    :layers:         WMS layer list to composite and return
+    :styles:         WMS styles to render
+    :format:         Image format to return
+
+Notes:
+
+    * This plugin will recognize the JPL WMS-C implementation and use it if detected.
+    
+Also see:
+
+    ``wms_jpl_landsat.earth`` sample in the repo ``tests`` folder
+    
+
+.. _Web Map Service:  http://en.wikipedia.org/wiki/Web_Map_Service
diff --git a/docs/source/references/drivers/tile/xyz.rst b/docs/source/references/drivers/tile/xyz.rst
new file mode 100644
index 0000000..05d3807
--- /dev/null
+++ b/docs/source/references/drivers/tile/xyz.rst
@@ -0,0 +1,37 @@
+XYZ
+===
+The XYZ plugin is useful for reading web map tile repositories with a
+standard X/Y/LOD setup but that don't explicitly report any metadata.
+Many of the popular web mapping services (like MapQuest_) fall into 
+this category. You need to provide osgEarth with a ``profile`` when
+using this driver.
+
+Example usage::
+
+    <image name="mapquest_open_aerial" driver="xyz">
+        <url>http://oatile[1234].mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.jpg</url>
+        <profile>spherical-mercator</profile>
+    </image>
+
+Creating the URL template:
+
+    The square brackets [] indicate that osgEarth should "cycle through" the characters
+    within, resulting in round-robin server requests. Some services require this.
+    
+    The curly braces {} are templates into which osgEarth will insert the proper
+    ``x``, ``y``, and ``z`` values for the tile it's requesting.
+    
+Properties:
+
+    :url:            Location of the tile repository (URL template -- see above)
+    :profile:        Spatial profile of the repository
+    :invert_y:       Set to true to invert the Y axis for tile indexing
+    :format:         If the format is not part of the URL itself, you can specify it here.
+    
+Also see:
+
+    ``mapquest_open_aerial.earth`` and ``openstreetmap.earth`` samples
+    in the repo ``tests`` folder.
+
+
+.. _MapQuest: http://developer.mapquest.com/web/products/open/map
diff --git a/docs/source/references/earthfile.rst b/docs/source/references/earthfile.rst
index 599c6b4..39b7a64 100644
--- a/docs/source/references/earthfile.rst
+++ b/docs/source/references/earthfile.rst
@@ -1,5 +1,5 @@
-Earth File Reference Guide
---------------------------
+Earth File Reference
+====================
 
 Map
 ~~~
@@ -294,7 +294,7 @@ tiling scheme that it should use to render map tiles.
 .. parsed-literal::
 
     <profile srs    = "+proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"
-             vdatum = "nad83"
+             vdatum = "egm96"
              xmin   = "560725.500"
              xmax   = "573866.500"
              ymin   = "4385762.500"
diff --git a/docs/source/references/envvars.rst b/docs/source/references/envvars.rst
new file mode 100644
index 0000000..1396ea9
--- /dev/null
+++ b/docs/source/references/envvars.rst
@@ -0,0 +1,41 @@
+Environment Variables
+=====================
+This is a list of environment variables supported by osgEarth.
+
+Caching:
+
+    :OSGEARTH_CACHE_PATH:   Sets up a cache at the specified folder (path)
+    :OSGEARTH_CACHE_ONLY:   Directs osgEarth to ONLY use the cache and no data sources (set to 1)
+    :OSGEARTH_NO_CACHE:     Directs osgEarth to NEVER use the cache (set to 1)
+
+Debugging:
+
+    :OSGEARTH_NOTIFY_LEVEL:     Similar to ``OSG_NOTIFY_LEVEL``, sets the verbosity for
+                                console output. Values are ``DEBUG``, ``INFO``, ``NOTICE``,
+                                and ``WARN``. Default is ``NOTICE``.
+    :OSGEARTH_MERGE_SHADERS:    Consolidate all shaders within a shader program; this is
+                                required for GLES so this is useful for testing, and also
+                                makes shader dumps more readable (set to 1)
+    :OSGEARTH_DUMP_SHADERS:     Prints composited shader code to the console (set to 1)
+
+Rendering:
+
+    :OSGEARTH_TERRAIN_ENGINE:     Sets the terrain engine driver to use; Default is ``mp``;
+                                  legacy options are ``quadtree`` or ``osgterrain``
+    :OSGEARTH_DEFAULT_FONT:       Name of the default font to use for text symbology
+    :OSGEARTH_MIN_STAR_MAGNITUDE: Smallest star magnitude to use in SkyNode
+    
+Networking:
+
+    :OSGEARTH_HTTP_DEBUG:                  Prints HTTP debugging messages (set to 1)
+    :OSGEARTH_SIMULATE_HTTP_RESPONSE_CODE: Simulates HTTP errors (set to HTTP response code)
+    :OSGEARTH_HTTP_TIMEOUT:                Sets an HTTP timeout (seconds)
+    :OSG_CURL_PROXY:                       Sets a proxy server for HTTP requests (string)
+    :OSG_CURL_PROXYPORT:                   Sets a proxy port for HTTP proxy server (integer)
+    :OSGEARTH_PROXYAUTH:                   Sets proxy authentication information (username:password)
+
+Misc:
+
+    :OSGEARTH_USE_PBUFFER_TEST: Directs the osgEarth platform Capabilities analyzer to
+                                create a PBUFFER-based graphics context for collecting
+                                GL support information. (set to 1)
diff --git a/docs/source/references/index.rst b/docs/source/references/index.rst
index 1e4e720..a4c6ea4 100644
--- a/docs/source/references/index.rst
+++ b/docs/source/references/index.rst
@@ -5,5 +5,7 @@ Reference Guides
    :maxdepth: 1
    
    earthfile
+   drivers/index
    symbology
    colorfilters
+   envvars
diff --git a/docs/source/references/symbology.rst b/docs/source/references/symbology.rst
index a7c2459..9bd4458 100644
--- a/docs/source/references/symbology.rst
+++ b/docs/source/references/symbology.rst
@@ -1,5 +1,5 @@
-Symbology Reference Guide
-=========================
+Symbology Reference
+===================
 
 osgEarth renders *features* and *annotations* using *stylesheets*.
 This document lists all the symbol properties available for use in a
diff --git a/docs/source/releasenotes.rst b/docs/source/releasenotes.rst
index 6b75279..44db6bb 100644
--- a/docs/source/releasenotes.rst
+++ b/docs/source/releasenotes.rst
@@ -33,3 +33,4 @@ Version 2.4 (April 2013)
 * New "first_lod" property lets you force a minimum LOD to start at
 * Better support for tiled data layers
 * Lots of bug fixes and performance improvements
+* New documentation site stored in the osgEarth repo (docs.osgearth.org)
diff --git a/docs/source/startup.rst b/docs/source/startup.rst
index bf1b525..57a813c 100644
--- a/docs/source/startup.rst
+++ b/docs/source/startup.rst
@@ -5,14 +5,15 @@ osgEarth is a cross-platform library. It uses the CMake_ build system.
 You will need **version 2.8** or newer. 
 (This is the same build system that OpenSceneGraph_ uses.)
 
-NOTE: To build osgEarth for iOS see :doc:`ios`
+    NOTE: To build osgEarth for iOS see :doc:`ios`
+    
 
 Get the Source Code
 -------------------
 
 **Option 1: use GIT**
 
-    osgEarth is hosted on GitHub_. You will nee da *git* client to access it.
+    osgEarth is hosted on GitHub_. You will need a *git* client to access it.
     We recommend TortoiseGit_ for Windows users.
 
     To clone the repository, point your client at::
@@ -25,6 +26,7 @@ Get the Source Code
     `osgEarth Tags`_ and select the one you want. The latest official release
     will be at the top.
 
+
 Get the Dependencies
 --------------------
 
@@ -51,7 +53,7 @@ but some functionality will be missing:
     * AlphaPixel_ has pre-built OSG_ and 3rd-party dependencies for various architectures.
     * `Mike Weiblen`_ has some pre-built OSG_ binaries and dependencies too.
     * FWTools_ has pre-built GDAL binaries with all the fixins.
-    * Pre-built `GDAL binaries` for various architectures.
+    * Pre-built `GDAL binaries`_ for various architectures.
     
 Build it
 --------
diff --git a/docs/source/user/caching.rst b/docs/source/user/caching.rst
new file mode 100644
index 0000000..d6c0731
--- /dev/null
+++ b/docs/source/user/caching.rst
@@ -0,0 +1,94 @@
+Caching
+=======
+Depending on the nature of the source data, osgEarth may have to perform
+some processing on it before it becomes a terrain tile. This may
+include downloading, reprojection, cropping, mosacing, or compositing, to
+name a few. These operations can become expensive. By setting up a cache,
+you can direct osgEarth to store the result of the processing so that it
+doesn't need to do it again the next time the same tile is needed.
+
+    Note! osgEarth's cache uses an internal data storage representation that
+    is not intended to be accessed through any public API. It's intended for
+    use ONLY as a transient cache and not at a data publication format. The
+    structure is subject to change at any time. If you want to publish a data 
+    repository, consider the ``osgearth_package`` utility instead!
+
+
+Setting up a Cache
+------------------
+You can set up a cache in your *earth file*. The following setup will
+automatically activate caching on all your imagery and elevation layers::
+
+    <map>
+        <options>
+            <cache type="filesystem">
+                <path>folder_name</path>
+            </cache>
+            
+In code this would look like this::
+
+    FileSystemCacheOptions cacheOptions;
+    cacheOptions.path() = ...;
+
+    MapOptions mapOptions;
+    mapOptions.cache() = cacheOptions;
+    
+Or, you can use an environment variable that will apply to all earth files::
+
+   set OSGEARTH_CACHE_PATH=folder_name
+
+In code you can set a global cache in the osgEarth resgistry::
+
+    osgEarth::Registry::instance()->setCache(...);
+    osgEarth::Registry::instance()->setDefaultCachePolicy(...);
+
+
+Caching Policies
+----------------
+Once you have a cache set up, osgEarth will use it be default for all your
+imagery and elevation layers. If you want to override this behavior, you can
+use a *cache policy*. A cache policy tells osgEarth how a certain object 
+should treat the cache.
+
+In an *earth file* you can do this by using the ``cache_policy`` block. Here 
+we apply it to the entire map::
+
+    <map>
+        <options>
+            <cache_policy usage="cache_only"/>
+            
+Or you can apply a policy to a single layer::
+
+    <image>
+        <cache_policy usage="no_cache"/>
+        ...
+        
+
+The values for cache policy *usage* are:
+
+    :read_write:        The default. Use a cache if one is configured.
+    :no_cache:          Even if a cache is in place, do not use it. Only read
+                        directly from the data source.
+    :cache_only:        If a cache if set up, ONLY use data in the cache; never go 
+                        to the data source.
+
+Environment Variables
+---------------------
+Sometimes it's more convenient to control caching from the environment,
+especially during development. Here are some environment variables you can use.
+
+    :OSGEARTH_CACHE_PATH:   Root folder for a file system cache.
+    :OSGEARTH_NO_CACHE:     Enables a ``no_cache`` policy for any osgEarth map. (set to 1)
+    :OSGEARTH_CACHE_ONLY:   Enabled a ``cache_only`` policy for any osgEarth map. (set to 1)
+
+**Note**: environment variables *override* the cache settings in an *earth file*!
+
+
+Seeding the Cache
+-----------------
+Sometimes it is useful to pre-seed your cache for a particular area of interest.
+osgEarth provides a utility application called ``osgearth_cache`` to accomplish
+this task. ``osgearth_cache`` will take an Earth file and populate any caches
+it finds.
+
+    Type ``osgearth_cache --help`` on the command line for usage information.
diff --git a/docs/source/user/imagery.rst b/docs/source/user/imagery.rst
index 77bc25c..e69de29 100644
--- a/docs/source/user/imagery.rst
+++ b/docs/source/user/imagery.rst
@@ -1,2 +0,0 @@
-Imagery
-=======
diff --git a/docs/source/user/index.rst b/docs/source/user/index.rst
index 7e90ee7..2e06cc6 100644
--- a/docs/source/user/index.rst
+++ b/docs/source/user/index.rst
@@ -4,8 +4,10 @@ User Guide
 .. toctree::
    :maxdepth: 2
    
+   tools
    earthfiles
    maps
+   caching
    spatialreference
    profiles
    imagery
diff --git a/docs/source/user/spatialreference.rst b/docs/source/user/spatialreference.rst
index d31ac1c..155909f 100644
--- a/docs/source/user/spatialreference.rst
+++ b/docs/source/user/spatialreference.rst
@@ -186,7 +186,8 @@ osgEarth require an SRS. Here's how you create on in code::
 That will give you an SRS. The ``get()`` function will accept any of the SRS
 representations we discussed above: WKT, PROJ4, EPSG, or Aliases.
 
-If you need an SRS with a vertical datum, express that as a second parameter::
+If you need an SRS with a vertical datum, express that as a second parameter.
+osgEarth support ``egm84``, ``egm96``, and ``egm2008``. Use it like this::
 
     srs = SpatialReference::get("epsg:4326", "egm96");
 
diff --git a/docs/source/user/tools.rst b/docs/source/user/tools.rst
new file mode 100644
index 0000000..1794aa9
--- /dev/null
+++ b/docs/source/user/tools.rst
@@ -0,0 +1,230 @@
+Tools
+=====
+
+osgEarth comes with many tools that help you work with earth files and geospatial data.
+
+osgearth_viewer
+---------------
+osgearth_viewer can load and display a map from and command line.  The osgEarth EarthManipulator is
+used to control the camera and is optimized for viewing geospatial data.
+
+**Sample Usage**
+::
+    osgearth_viewer earthfile.earth [options]
+
+
++----------------------------+--------------------------------------------------------------------+
+| Option                     | Description                                                        |
++============================+====================================================================+
+| ``--sky``                  | Installs a SkyNode (sun, moon, stars and atmosphere..globe only)   |
++----------------------------+--------------------------------------------------------------------+
+| ``--ocean``                | Installs a sample ocean surface node                               |
++----------------------------+--------------------------------------------------------------------+
+| ``--kml [file.kml]``       | Loads a KML or KMZ file                                            |
++----------------------------+--------------------------------------------------------------------+
+| ``--coords``               | Displays map coords under mouse                                    |
++----------------------------+--------------------------------------------------------------------+
+| ``--dms``                  | Displays map coords as degrees/mins/seconds                        |
++----------------------------+--------------------------------------------------------------------+
+| ``--dd``                   | Displays map coords as decimal degrees                             |
++----------------------------+--------------------------------------------------------------------+
+| ``--mgrs``                 | Displays map coords as MGRS                                        |
++----------------------------+--------------------------------------------------------------------+
+| ``--ortho``                | Installs an orthographic camera projection                         |
++----------------------------+--------------------------------------------------------------------+
+| ``--autoclip``             | Installs an automatic clip plane handler                           |
++----------------------------+--------------------------------------------------------------------+
+| ``--images [path]``        | Finds images in [path] and loads them as image layers              |
++----------------------------+--------------------------------------------------------------------+
+| ``--image-extensions [*]`` | With ``--images``, only considers the listed extensions            |
++----------------------------+--------------------------------------------------------------------+
+| ``--out-earth [out.earth]``| With ``--images``, writes out an earth file                        |
++----------------------------+--------------------------------------------------------------------+
+
+
+osgearth_version
+----------------
+**osgearth_version** displays the current version of osgEarth.
+
++----------------------------+--------------------------------------------------------------------+
+| Argument                   | Description                                                        |
++============================+====================================================================+
+| ``--caps``                 | Print out system capabilities                                      |
++----------------------------+--------------------------------------------------------------------+
+| ``--major-number``         | Print out major version number only                                |
++----------------------------+--------------------------------------------------------------------+
+| ``--minor-number``         | Print out minor version number only                                |
++----------------------------+--------------------------------------------------------------------+
+| ``--patch-number``         | Print out patch version number only                                |
++----------------------------+--------------------------------------------------------------------+
+| ``--so-number``            | Print out shared object version number only                        |
++----------------------------+--------------------------------------------------------------------+
+| ``--version-number``       | Print out version number only                                      |
++----------------------------+--------------------------------------------------------------------+
+
+osgearth_cache
+--------------
+osgearth_cache can be used to manage osgEarth's cache.  See :doc:`/user/caching` for more information on caching.
+The most common usage of osgearth_cache is to populate a cache in a non-interactive manner using the ``--seed`` argument.
+
+**Sample Usage**
+::
+    osgearth_cache --seed file.earth
+
++-------------------------------------+--------------------------------------------------------------------+
+| Argument                            | Description                                                        |
++=====================================+====================================================================+
+| ``--list``                          | Lists info about the cache in a .earth file                        |
++-------------------------------------+--------------------------------------------------------------------+
+| ``--seed``                          | Seeds the cache in a .earth file                                   |
++-------------------------------------+--------------------------------------------------------------------+
+| ``--min-level level``               | Lowest LOD level to seed (default=0)                               |
++-------------------------------------+--------------------------------------------------------------------+
+| ``--max-level level``               | Highest LOD level to seed (default=highest available)              |
++-------------------------------------+--------------------------------------------------------------------+
+| ``--bounds xmin ymin xmax ymax``    | Geospatial bounding box to seed                                    |
+|                                     | (in map coordinates; default=entire map                            |
++-------------------------------------+--------------------------------------------------------------------+
+| ``--cache-path path``               | Overrides the cache path in the .earth file                        |
++-------------------------------------+--------------------------------------------------------------------+
+| ``--cache-type type``               | Overrides the cache type in the .earth file                        |
++-------------------------------------+--------------------------------------------------------------------+
+| ``--purge``                         | Purges a layer cache in a .earth file                              |
++-------------------------------------+--------------------------------------------------------------------+       
+
+osgearth_package
+----------------
+osgearth_package creates a redistributable `TMS`_ based package from an earth file.
+
+**Sample Usage**
+::
+    osgearth_package --tms file.earth --out package
+
++------------------------------------+--------------------------------------------------------------------+
+| Argument                           | Description                                                        |
++====================================+====================================================================+
+| ``--tms``                          | make a TMS repo                                                    |
++------------------------------------+--------------------------------------------------------------------+
+| ``--out path``                     | root output folder of the TMS repo (required)                      |
++------------------------------------+--------------------------------------------------------------------+
+| ``--bounds xmin ymin xmax ymax``   | bounds to package (in map coordinates; default=entire map)         |
+|                                    | You can provide multiple bounds                                    |
++------------------------------------+--------------------------------------------------------------------+
+| ``--max-level level``              | max LOD level for tiles (all layers; default=inf)                  |
++------------------------------------+--------------------------------------------------------------------+
+| ``--out-earth earthfile``          | export an earth file referencing the new repo                      |
++------------------------------------+--------------------------------------------------------------------+
+| ``--ext extension``                | overrides the image file extension (e.g. jpg)                      |
++------------------------------------+--------------------------------------------------------------------+
+| ``--overwrite``                    | overwrite existing tiles                                           |
++------------------------------------+--------------------------------------------------------------------+
+| ``--keep-empties``                 | writes out fully transparent image tiles (normally discarded)      |
++------------------------------------+--------------------------------------------------------------------+
+| ``--db-options``                   | db options string to pass to the image writer                      |
+|                                    | in quotes (e.g., "JPEG_QUALITY 60")                                |
++------------------------------------+--------------------------------------------------------------------+
+
+osgearth_tfs
+------------
+osgearth_tfs generates a TFS dataset from a feature source such as a shapefile.  By pre-processing your features
+into the gridded structure provided by TFS you can significantly increase performance of large datasets.
+In addition, the TFS package generated can be served by any standard web server, web enabling your dataset.
+
+**Sample Usage**
+::
+    osgearth_tfs filename
+
++----------------------------------+--------------------------------------------------------------------+
+| Argument                         | Description                                                        |
++==================================+====================================================================+
+| ``filename``                     | Shapefile (or other feature source data file )                     |
++----------------------------------+--------------------------------------------------------------------+
+| ``--first-level level``          | The first level where features will be added to the quadtree       |
++----------------------------------+--------------------------------------------------------------------+
+| ``--max-level level``            | The maximum level of the feature quadtree                          | 
++----------------------------------+--------------------------------------------------------------------+
+| ``--max-features``               | The maximum number of features per tile                            |
++----------------------------------+--------------------------------------------------------------------+
+| ``--out``                        | The destination directory                                          |
++----------------------------------+--------------------------------------------------------------------+
+| ``--layer``                      | The name of the layer to be written to the metadata document       |
++----------------------------------+--------------------------------------------------------------------+
+| ``--description``                | The abstract/description of the layer to be written                |
+|                                  | to the metadata document                                           |
++----------------------------------+--------------------------------------------------------------------+
+| ``--expression``                 | The expression to run on the feature source,                       |
+|                                  | specific to the feature source                                     |
++----------------------------------+--------------------------------------------------------------------+
+| ``--order-by``                   | Sort the features, if not already included in the expression.      |
+|                                  | Append DESC for descending order!                                  |
++----------------------------------+--------------------------------------------------------------------+
+| ``--crop``                       | Crops features instead of doing a centroid check.                  |
+|                                  | Features can be added to multiple tiles when cropping is enabled   |
++----------------------------------+--------------------------------------------------------------------+
+| ``--dest-srs``                   | The destination SRS string in any format osgEarth can              |
+|                                  | understand (wkt, proj4, epsg).                                     |
+|                                  | If none is specific the source data SRS will be used.              |
++----------------------------------+--------------------------------------------------------------------+
+
+osgearth_backfill
+-----------------
+osgearth_backfill is a specialty tool that is used to post-process `TMS`_ datasets.  Some web mapping services use different completely different datasets 
+at different zoom levels.  For example, they may use NASA BlueMarble imagery until they reach level 4, then abruptly switch to LANDSAT data.  This is fine for
+2D slippy map visualization but can be visually distracting when viewed in 3D because neighboring tiles at different LODs look completely different.
+
+osgearth_backfill lets you generate a TMS dataset like you normally would (using osgearth_package or another tool) and then "backfill" lower levels of detail from
+a specified higher level of detail.  For example, you can specify a max level of 10 and lods 0-9 will be regenerated based on the data found in level 10.
+
+**Sample Usage**
+::
+    osgearth_backfill tms.xml
+
++----------------------------------+--------------------------------------------------------------------+
+| Argument                         | Description                                                        |
++==================================+====================================================================+
+| ``--bounds xmin ymin xmax ymax`` | bounds to backfill (in map coordinates; default=entire map         |
++----------------------------------+--------------------------------------------------------------------+
+| ``--min-level level``            | The minimum level to stop backfilling to. (default=0)              |
++----------------------------------+--------------------------------------------------------------------+
+| ``--max-level level``            | The level to start backfilling from(default=inf)                   |
++----------------------------------+--------------------------------------------------------------------+
+| ``--db-options``                 | db options string to pass to the                                   |
+|                                  | image writer in quotes (e.g., "JPEG_QUALITY 60")                   |
++----------------------------------+--------------------------------------------------------------------+
+
+
+osgearth_boundarygen
+-----------------
+osgearth_boundarygen generates boundary geometry that you can use with an osgEarth <mask> layer in order to 
+stich an external model into the terrain.
+
+**Sample Usage**
+::
+    osgearth_boundarygen model_file
+
++----------------------------------+--------------------------------------------------------------------+
+| Argument                         | Description                                                        |
++==================================+====================================================================+
+| ``--out file_name``              | output file for boundary geometry( default is boundary.txt)        |
++----------------------------------+--------------------------------------------------------------------+
+| ``--no-geocentric``              | Skip geocentric reprojection (for flat databases)                  |
++----------------------------------+--------------------------------------------------------------------+
+| ``--convex-hull``                | calculate a convex hull instead of a full boundary                 |
++----------------------------------+--------------------------------------------------------------------+
+| ``--verbose``                    | print progress to console                                          |
++----------------------------------+--------------------------------------------------------------------+
+| ``--view``                       | show result in 3D window                                           |
++----------------------------------+--------------------------------------------------------------------+
+
+
+
+osgearth_overlayviewer
+----------------------
+**osgearth_overlayviewer** is a utility for debugging the overlay decorator capability in osgEarth.  It shows two windows, one with the normal
+view of the map and another that shows the bounding frustums that are used for the overlay computations.
+
+.. _TMS: http://en.wikipedia.org/wiki/Tile_Map_Service
+
+
+
+
diff --git a/src/applications/CMakeLists.txt b/src/applications/CMakeLists.txt
index 058aa01..b131dce 100644
--- a/src/applications/CMakeLists.txt
+++ b/src/applications/CMakeLists.txt
@@ -29,7 +29,6 @@ SET(TARGET_DEFAULT_LABEL_PREFIX "Tool")
 SET(TARGET_DEFAULT_APPLICATION_FOLDER "Tools")
 ADD_SUBDIRECTORY(osgearth_viewer)
 ADD_SUBDIRECTORY(osgearth_seed)
-ADD_SUBDIRECTORY(osgearth_featureinfo)
 ADD_SUBDIRECTORY(osgearth_package)
 ADD_SUBDIRECTORY(osgearth_tfs)
 ADD_SUBDIRECTORY(osgearth_boundarygen)
@@ -48,6 +47,7 @@ ADD_SUBDIRECTORY(osgearth_manip)
 ADD_SUBDIRECTORY(osgearth_toc)
 ADD_SUBDIRECTORY(osgearth_elevation)
 ADD_SUBDIRECTORY(osgearth_features)
+ADD_SUBDIRECTORY(osgearth_featureinfo)
 ADD_SUBDIRECTORY(osgearth_featurefilter)
 ADD_SUBDIRECTORY(osgearth_los)
 ADD_SUBDIRECTORY(osgearth_terrainprofile)
@@ -55,6 +55,7 @@ ADD_SUBDIRECTORY(osgearth_map)
 ADD_SUBDIRECTORY(osgearth_annotation)
 ADD_SUBDIRECTORY(osgearth_tracks)
 
+
 IF(NOT ${OPENSCENEGRAPH_VERSION} VERSION_LESS "2.9.6")
     ADD_SUBDIRECTORY(osgearth_featureeditor)
 ENDIF()
diff --git a/src/applications/osgearth_package_qt/package_qt.cpp b/src/applications/osgearth_package_qt/package_qt.cpp
index b438604..3d3a808 100644
--- a/src/applications/osgearth_package_qt/package_qt.cpp
+++ b/src/applications/osgearth_package_qt/package_qt.cpp
@@ -103,6 +103,9 @@ int main(int argc, char** argv)
   if (views.size() > 0)
     mainView = views[0];
 
+  if (mainView.valid())
+    mainView->getCamera()->setNearFarRatio(0.00002);
+
   //create the SceneController, if no earth file is specified a blank
   //globe will be loaded
   osg::ArgumentParser args(&argc,argv);
diff --git a/src/applications/osgearth_viewer/osgearth_viewer.cpp b/src/applications/osgearth_viewer/osgearth_viewer.cpp
index 2c1363e..d6ee38b 100644
--- a/src/applications/osgearth_viewer/osgearth_viewer.cpp
+++ b/src/applications/osgearth_viewer/osgearth_viewer.cpp
@@ -29,10 +29,22 @@ using namespace osgEarth;
 using namespace osgEarth::Util;
 using namespace osgEarth::Annotation;
 
+int usage(char** argv)
+{
+    OE_NOTICE 
+        << "\nUsage: " << argv[0] << " file.earth" << std::endl
+        << MapNodeHelper().usage() << std::endl;
+    return 0;
+}
+
 int
 main(int argc, char** argv)
 {
     osg::ArgumentParser arguments(&argc,argv);
+
+    if ( arguments.read("--help") )
+        return usage( argv );
+
     if ( arguments.read("--stencil") )
         osg::DisplaySettings::instance()->setMinimumNumStencilBits( 8 );
 
@@ -59,9 +71,7 @@ main(int argc, char** argv)
     }
     else
     {
-        OE_NOTICE 
-            << "\nUsage: " << argv[0] << " file.earth" << std::endl
-            << MapNodeHelper().usage() << std::endl;
+        return usage(argv);
     }
     return 0;
 }
diff --git a/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/MultiTouchManipulator/EarthMultiTouchManipulator.cpp b/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/MultiTouchManipulator/EarthMultiTouchManipulator.cpp
index a55a8bc..c431c0a 100644
--- a/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/MultiTouchManipulator/EarthMultiTouchManipulator.cpp
+++ b/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/MultiTouchManipulator/EarthMultiTouchManipulator.cpp
@@ -98,8 +98,6 @@ osgGA::GUIEventAdapter* EarthMultiTouchManipulator::handleMultiTouchDrag(osgGA::
 
 bool EarthMultiTouchManipulator::handle( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us )
 {
-
-    bool handled(false);
     
     osg::ref_ptr<osgGA::GUIEventAdapter> touchAdpt = NULL;
 
diff --git a/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/ViewController.h b/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/ViewController.h
index 4d52641..1f5e80f 100644
--- a/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/ViewController.h
+++ b/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/ViewController.h
@@ -6,6 +6,7 @@
 //
 
 #import <UIKit/UIKit.h>
+#import <QuartzCore/QuartzCore.h>
 
 #include <osgViewer/Viewer>
 
diff --git a/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/ViewController.m b/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/ViewController.m
index fceaa0c..cbc2575 100644
--- a/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/ViewController.m
+++ b/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/ViewController.m
@@ -57,8 +57,14 @@ using namespace osgEarth::Util;
 - (void)loadOsgEarthDemoScene{
 
     // install our default manipulator (do this before calling load)
-    _viewer->setCameraManipulator( new osgEarth::Util::EarthManipulator() );
+    //    _viewer->setCameraManipulator( new osgEarth::Util::EarthManipulator() );
     
+    // This chunk inverts the Y axis.
+    osgEarth::Util::EarthManipulator* manip = new osgEarth::Util::EarthManipulator();
+    osgEarth::Util::EarthManipulator::ActionOptions options;
+    options.add(osgEarth::Util::EarthManipulator::OPTION_SCALE_Y, -1.0);
+    manip->getSettings()->bindMouse(osgEarth::Util::EarthManipulator::ACTION_PAN, osgGA::GUIEventAdapter::LEFT_MOUSE_BUTTON, 0L, options);
+    _viewer->setCameraManipulator( manip );
     
     osg::Node* node = osgDB::readNodeFile(osgDB::findDataFile("tests/" + _file));
     if ( !node )
@@ -75,8 +81,8 @@ using namespace osgEarth::Util;
     }
     
     // warn about not having an earth manip
-    osgEarth::Util::EarthManipulator* manip = dynamic_cast<osgEarth::Util::EarthManipulator*>(_viewer->getCameraManipulator());
-    if ( manip == 0L )
+    osgEarth::Util::EarthManipulator* manip_temp = dynamic_cast<osgEarth::Util::EarthManipulator*>(_viewer->getCameraManipulator());
+    if ( manip_temp == 0L )
     {
         OSG_WARN << "Helper used before installing an EarthManipulator" << std::endl;
     }
@@ -95,7 +101,7 @@ using namespace osgEarth::Util;
     root->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);//comment out to disable lighting
     
     double hours = 12.0f;
-    float ambientBrightness = 0.4f;
+    float ambientBrightness = 1.0f;
     osgEarth::Util::SkyNode* sky = new osgEarth::Util::SkyNode( mapNode->getMap() );
     sky->setAmbientBrightness( ambientBrightness );
     sky->setDateTime( 1984, 11, 8, hours );
@@ -138,7 +144,7 @@ using namespace osgEarth::Util;
 	traits->alpha = 8;
     //traits->samples = 4;
     //traits->sampleBuffers = 2;
-	traits->stencil = 1;
+	traits->stencil = 0;
 	traits->windowDecoration = false;
 	traits->doubleBuffer = true;
 	traits->sharedContext = 0;
@@ -175,9 +181,9 @@ using namespace osgEarth::Util;
     
     // osgEarth benefits from pre-compilation of GL objects in the pager. In newer versions of
     // OSG, this activates OSG's IncrementalCompileOpeartion in order to avoid frame breaks.
-    _viewer->getDatabasePager()->setDoPreCompile( true );
-    _viewer->getDatabasePager()->setTargetMaximumNumberOfPageLOD(0);
-    _viewer->getDatabasePager()->setUnrefImageDataAfterApplyPolicy(true,true);
+//    _viewer->getDatabasePager()->setDoPreCompile( true );
+//   _viewer->getDatabasePager()->setTargetMaximumNumberOfPageLOD(0);
+//    _viewer->getDatabasePager()->setUnrefImageDataAfterApplyPolicy(true,true);
 
   
     _isAnimating=false;
diff --git a/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/osgPlugins.h b/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/osgPlugins.h
index eafb485..a3d132e 100755
--- a/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/osgPlugins.h
+++ b/src/applications/osgearth_viewerIOS/osgEarthViewerIOS/osgPlugins.h
@@ -65,6 +65,7 @@ USE_OSGPLUGIN(osgearth_vdatum_egm2008)
 USE_OSGPLUGIN(osgearth_model_simple)
 //USE_OSGPLUGIN(osgearth_engine_osgterrain)
 USE_OSGPLUGIN(osgearth_engine_quadtree)
+USE_OSGPLUGIN(osgearth_engine_mp)
 USE_OSGPLUGIN(osgearth_vdatum_egm96)
 USE_OSGPLUGIN(osgearth_ocean_surface)
 USE_OSGPLUGIN(osgearth_debug)
diff --git a/src/osgEarth/Map.cpp b/src/osgEarth/Map.cpp
index 9819619..b1dac48 100644
--- a/src/osgEarth/Map.cpp
+++ b/src/osgEarth/Map.cpp
@@ -43,7 +43,7 @@ _dataModelRevision   ( 0 )
         OE_INFO << LC << "CACHE-ONLY MODE activated from map" << std::endl;
     }
 
-    // if the map was a cache policy set, make this the system-wide default, UNLESS
+    // if the map has a cache policy set, make this the system-wide default, UNLESS
     // there ALREADY IS a registry default, in which case THAT will override THIS one.
     // (In other words, whichever one is set first wins. And of course, if the registry
     // has an override set, that will cancel out all of this.)
diff --git a/src/osgEarth/Version b/src/osgEarth/Version
index b8ab10d..cf5e5b9 100644
--- a/src/osgEarth/Version
+++ b/src/osgEarth/Version
@@ -28,7 +28,7 @@ extern "C" {
 #define OSGEARTH_MINOR_VERSION    4
 #define OSGEARTH_PATCH_VERSION    0
 #define OSGEARTH_SOVERSION        0
-#define OSGEARTH_RC_VERSION       2
+#define OSGEARTH_RC_VERSION       0
 
 /* Convenience macro that can be used to decide whether a feature is present or not i.e.
  * #if OSGEARTH_MIN_VERSION_REQUIRED(1,4,0)
diff --git a/src/osgEarthAnnotation/FeatureEditing b/src/osgEarthAnnotation/FeatureEditing
index a9fadac..92f1453 100644
--- a/src/osgEarthAnnotation/FeatureEditing
+++ b/src/osgEarthAnnotation/FeatureEditing
@@ -43,7 +43,7 @@ namespace osgEarth { namespace Annotation {
          * @param mapSRS
          *      The srs of the Map
          */
-        AddPointHandler(osgEarth::Features::Feature* feature, osgEarth::Features::FeatureListSource* source, const osgEarth::SpatialReference* mapSRS);
+        AddPointHandler(osgEarth::Features::Feature* feature, osgEarth::Features::FeatureSource* source, const osgEarth::SpatialReference* mapSRS);
 
         bool handle( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa );
 
@@ -67,7 +67,7 @@ namespace osgEarth { namespace Annotation {
         osgGA::GUIEventAdapter::MouseButtonMask _mouseButton;
         bool _mouseDown;
         bool _firstMove;
-        osg::ref_ptr< osgEarth::Features::FeatureListSource > _source;
+        osg::ref_ptr< osgEarth::Features::FeatureSource > _source;
         osg::ref_ptr< osgEarth::Features::Feature > _feature;
         osg::ref_ptr<const SpatialReference> _mapSRS;
         osg::Node::NodeMask _intersectionMask;
diff --git a/src/osgEarthAnnotation/FeatureEditing.cpp b/src/osgEarthAnnotation/FeatureEditing.cpp
index 0909e33..5d90590 100644
--- a/src/osgEarthAnnotation/FeatureEditing.cpp
+++ b/src/osgEarthAnnotation/FeatureEditing.cpp
@@ -26,7 +26,7 @@ using namespace osgEarth::Symbology;
 using namespace osgEarth::Features;
 
 /****************************************************************/
-AddPointHandler::AddPointHandler(Feature* feature, FeatureListSource* source, const osgEarth::SpatialReference* mapSRS):
+AddPointHandler::AddPointHandler(Feature* feature, FeatureSource* source, const osgEarth::SpatialReference* mapSRS):
 _feature(feature),
 _source( source ),
 _mapSRS( mapSRS ),
diff --git a/src/osgEarthDrivers/gdal/GDALOptions b/src/osgEarthDrivers/gdal/GDALOptions
index abfc543..982e6cd 100644
--- a/src/osgEarthDrivers/gdal/GDALOptions
+++ b/src/osgEarthDrivers/gdal/GDALOptions
@@ -60,24 +60,54 @@ namespace osgEarth { namespace Drivers
         optional<URI>& url() { return _url; }
         const optional<URI>& url() const { return _url; }
 
+        /*
+         * If the data source is a database (e.g., PostGIS), the connection
+         * string to use to open the database table.
+         */
         optional<std::string>& connection() { return _connection; }
         const optional<std::string>& connection() const { return _connection; }
 
+        /*
+         * One or more file extensions, separated by semicolons, to load when
+         * url points to a folder and you are trying to load multiple files.
+         */
         optional<std::string>& extensions() { return _extensions; }
         const optional<std::string>& extensions() const { return _extensions; }
         
+        /**
+         * Set of file extensions to ignore (opposite of extensions)
+         */
         optional<std::string>& blackExtensions() { return _blackExtensions; }
         const optional<std::string>& blackExtensions() const { return _blackExtensions; }
         
+        /**
+         * Interpolation method to use when resampling source data; options are
+         * nearest, average, and bilinear.  Only effects elevation data
+         * unless interp_imagery is also set to true.
+         */
         optional<ElevationInterpolation>& interpolation() { return _interpolation; }
         const optional<ElevationInterpolation>& interpolation() const { return _interpolation; }
 
+        /*
+         * Maximum level of detail of available data
+         */
         optional<unsigned int>& maxDataLevel() { return _maxDataLevel;}
         const optional<unsigned int>& maxDataLevel() const { return _maxDataLevel;}
 
+        /*
+         * Some GDAL-supported formats support sub-datasets; use this property
+         * to specify such a data source
+         */
         optional<unsigned int>& subDataSet() { return _subDataSet;}
         const optional<unsigned int>& subDataSet() const { return _subDataSet;}
 
+        /**
+         * Set to true to also sample imagery using the method specified by "interpolation"
+         * By default imagery is sampled using nearest sampling.  This takes advantage of
+         * any built in overviews or wavelet compression in the source file but can 
+         * cause artifacts on neighboring tiles.  Interpolating the imagery can look nicer
+         * but will be much slower.
+         */
         optional<bool>& interpolateImagery() { return _interpolateImagery;}
         const optional<bool>& interpolateImagery() const { return _interpolateImagery;}
 
diff --git a/src/osgEarthUtil/ExampleResources.cpp-2.2 b/src/osgEarthUtil/ExampleResources.cpp-2.2
deleted file mode 100644
index 2bf9a42..0000000
--- a/src/osgEarthUtil/ExampleResources.cpp-2.2
+++ /dev/null
@@ -1,631 +0,0 @@
-/* -*-c++-*- */
-/* osgEarth - Dynamic map generation toolkit for OpenSceneGraph
-* Copyright 2008-2012 Pelican Mapping
-* http://osgearth.org
-*
-* osgEarth is free software; you can redistribute it and/or modify
-* it under the terms of the GNU Lesser General Public License as published by
-* the Free Software Foundation; either version 2 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public License
-* along with this program.  If not, see <http://www.gnu.org/licenses/>
-*/
-
-#include <osgEarthUtil/ExampleResources>
-#include <osgEarthUtil/EarthManipulator>
-#include <osgEarthUtil/LatLongFormatter>
-#include <osgEarthUtil/MGRSFormatter>
-#include <osgEarthUtil/MouseCoordsTool>
-#include <osgEarthUtil/AutoClipPlaneHandler>
-
-#include <osgEarthAnnotation/AnnotationData>
-#include <osgEarthAnnotation/AnnotationRegistry>
-#include <osgEarthAnnotation/Decluttering>
-
-#include <osgEarth/XmlUtils>
-#include <osgEarth/StringUtils>
-
-#include <osgEarthDrivers/kml/KML>
-
-#include <osgGA/StateSetManipulator>
-#include <osgViewer/ViewerEventHandlers>
-#include <osgDB/FileNameUtils>
-
-#define KML_PUSHPIN_URL "http://demo.pelicanmapping.com/icons/pushpin_yellow.png"
-
-#define VP_DURATION 4.5 // time to fly to a viewpoint
-
-
-using namespace osgEarth;
-using namespace osgEarth::Util;
-using namespace osgEarth::Util::Controls;
-using namespace osgEarth::Symbology;
-using namespace osgEarth::Annotation;
-
-//------------------------------------------------------------------------
-
-/** Shared event handlers. */
-namespace
-{
-    // flies to a viewpoint in response to control event (click)
-    struct ClickViewpointHandler : public ControlEventHandler
-    {
-        ClickViewpointHandler( const Viewpoint& vp, osgGA::CameraManipulator* manip ) 
-            : _vp(vp), _manip( dynamic_cast<EarthManipulator*>(manip) ) { }
-
-        Viewpoint         _vp;
-        EarthManipulator* _manip;
-
-        virtual void onClick( class Control* control )
-        {
-            if ( _manip )
-                _manip->setViewpoint( _vp, VP_DURATION );
-        }
-    };
-
-
-    // toggles a node in response to a control event (checkbox)
-    struct ToggleNodeHandler : public ControlEventHandler
-    {
-        ToggleNodeHandler( osg::Node* node ) : _node(node) { }
-
-        virtual void onValueChanged( class Control* control, bool value )
-        {
-            osg::ref_ptr<osg::Node> safeNode = _node.get();
-            if ( safeNode.valid() )
-                safeNode->setNodeMask( value ? ~0 : 0 );
-        }
-
-        osg::observer_ptr<osg::Node> _node;
-    };
-}
-
-//------------------------------------------------------------------------
-
-namespace
-{
-    struct ViewpointHandler : public osgGA::GUIEventHandler
-    {
-        ViewpointHandler( const std::vector<Viewpoint>& viewpoints, osgViewer::View* view )
-            : _viewpoints( viewpoints ),
-              _manip( dynamic_cast<EarthManipulator*>(view->getCameraManipulator()) ) { }
-
-        bool handle( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa )
-        {
-            if ( ea.getEventType() == ea.KEYDOWN )
-            {
-                int index = (int)ea.getKey() - (int)'1';
-                if ( index >= 0 && index < (int)_viewpoints.size() )
-                {
-                    _manip->setViewpoint( _viewpoints[index], VP_DURATION );
-                }
-                else if ( ea.getKey() == 'v' )
-                {
-                    XmlDocument xml( _manip->getViewpoint().getConfig() );
-                    xml.store( std::cout );
-                    std::cout << std::endl;
-                }
-                aa.requestRedraw();
-            }
-            return false;
-        }
-
-        std::vector<Viewpoint> _viewpoints;
-        EarthManipulator*      _manip;
-    };
-}
-
-
-Control*
-ViewpointControlFactory::create(const std::vector<Viewpoint>& viewpoints,
-                                osgViewer::View*              view) const
-{
-    Grid* grid = 0L;
-
-    if ( viewpoints.size() > 0 )
-    {
-        // the viewpoint container:
-        grid = new Grid();
-        grid->setChildSpacing( 0 );
-        grid->setChildVertAlign( Control::ALIGN_CENTER );
-
-        for( unsigned i=0; i<viewpoints.size(); ++i )
-        {
-            const Viewpoint& vp = viewpoints[i];
-            Control* num = new LabelControl(Stringify() << (i+1), 16.0f, osg::Vec4f(1,1,0,1));
-            num->setPadding( 4 );
-            grid->setControl( 0, i, num );
-
-            Control* vpc = new LabelControl(vp.getName().empty() ? "<no name>" : vp.getName(), 16.0f);
-            vpc->setPadding( 4 );
-            vpc->setHorizFill( true );
-            vpc->setActiveColor( Color::Blue );
-            vpc->addEventHandler( new ClickViewpointHandler(vp, view->getCameraManipulator()) );
-            grid->setControl( 1, i, vpc );
-        }
-
-        view->addEventHandler( new ViewpointHandler(viewpoints, view) );
-    }
-
-    return grid;
-}
-
-//------------------------------------------------------------------------
-
-Control*
-MouseCoordsControlFactory::create(MapNode*         mapNode,
-                                  osgViewer::View* view     ) const
-{
-    // readout for coordinates under the mouse   
-    LabelControl* readout = new LabelControl();
-    readout->setHorizAlign( Control::ALIGN_RIGHT );
-    readout->setVertAlign( Control::ALIGN_BOTTOM );
-
-    Formatter* formatter = new LatLongFormatter(LatLongFormatter::FORMAT_DECIMAL_DEGREES);
-    MouseCoordsTool* mcTool = new MouseCoordsTool( mapNode );
-    mcTool->addCallback( new MouseCoordsLabelCallback(readout, formatter) );
-    view->addEventHandler( mcTool );
-
-    return readout;
-}
-
-//------------------------------------------------------------------------
-
-namespace
-{
-    struct SkySliderHandler : public ControlEventHandler
-    {
-        SkySliderHandler(SkyNode* sky) : _sky(sky) { }
-
-        SkyNode* _sky;
-
-        virtual void onValueChanged( class Control* control, float value )
-        {
-            _sky->setDateTime( 2011, 3, 6, value );
-        }
-    };
-}
-
-Control*
-SkyControlFactory::create(SkyNode*         sky,
-                          osgViewer::View* view) const
-{
-    HBox* skyBox = new HBox();
-    skyBox->setChildVertAlign( Control::ALIGN_CENTER );
-    skyBox->setChildSpacing( 10 );
-    skyBox->setHorizFill( true );
-
-    skyBox->addControl( new LabelControl("Time: ", 16) );
-
-    HSliderControl* skySlider = skyBox->addControl(new HSliderControl( 0.0f, 24.0f, 18.0f ));
-    skySlider->setBackColor( Color::Gray );
-    skySlider->setHeight( 12 );
-    skySlider->setHorizFill( true, 200 );
-    skySlider->addEventHandler( new SkySliderHandler(sky) );
-
-    return skyBox;
-}
-
-//------------------------------------------------------------------------
-
-namespace
-{
-    struct ChangeSeaLevel : public ControlEventHandler
-    {
-        ChangeSeaLevel( OceanSurfaceNode* ocean ) : _ocean(ocean) { }
-
-        OceanSurfaceNode* _ocean;
-
-        virtual void onValueChanged( class Control* control, float value )
-        {
-            _ocean->options().seaLevel() = value;
-            _ocean->dirty();
-        }
-    };
-
-    struct ChangeLowFeather : public ControlEventHandler
-    {
-        ChangeLowFeather( OceanSurfaceNode* ocean ) : _ocean(ocean) { }
-
-        OceanSurfaceNode* _ocean;
-
-        virtual void onValueChanged( class Control* control, float value )
-        {
-            _ocean->options().lowFeatherOffset() = value;
-            _ocean->dirty();
-        }
-    };
-
-    struct ChangeHighFeather : public ControlEventHandler
-    {
-        ChangeHighFeather( OceanSurfaceNode* ocean ) : _ocean(ocean) { }
-
-        OceanSurfaceNode* _ocean;
-
-        virtual void onValueChanged( class Control* control, float value )
-        {
-            _ocean->options().highFeatherOffset() = value;
-            _ocean->dirty();
-        }
-    };
-}
-
-Control*
-OceanControlFactory::create(OceanSurfaceNode* ocean,
-                            osgViewer::View*  view   ) const
-{
-    VBox* main = new VBox();
-
-    HBox* oceanBox1 = main->addControl(new HBox());
-    oceanBox1->setChildVertAlign( Control::ALIGN_CENTER );
-    oceanBox1->setChildSpacing( 10 );
-    oceanBox1->setHorizFill( true );
-
-    oceanBox1->addControl( new LabelControl("Sea Level: ", 16) );
-
-    HSliderControl* mslSlider = oceanBox1->addControl(new HSliderControl( -250.0f, 250.0f, 0.0f ));
-    mslSlider->setBackColor( Color::Gray );
-    mslSlider->setHeight( 12 );
-    mslSlider->setHorizFill( true, 200 );
-    mslSlider->addEventHandler( new ChangeSeaLevel(ocean) );
-
-    HBox* oceanBox2 = main->addControl(new HBox());
-    oceanBox2->setChildVertAlign( Control::ALIGN_CENTER );
-    oceanBox2->setChildSpacing( 10 );
-    oceanBox2->setHorizFill( true );
-
-    oceanBox2->addControl( new LabelControl("Low Feather: ", 16) );
-
-    HSliderControl* lfSlider = oceanBox2->addControl(new HSliderControl( -1000.0, 250.0f, -100.0f ));
-    lfSlider->setBackColor( Color::Gray );
-    lfSlider->setHeight( 12 );
-    lfSlider->setHorizFill( true, 200 );
-    lfSlider->addEventHandler( new ChangeLowFeather(ocean) );
-
-    HBox* oceanBox3 = main->addControl(new HBox());
-    oceanBox3->setChildVertAlign( Control::ALIGN_CENTER );
-    oceanBox3->setChildSpacing( 10 );
-    oceanBox3->setHorizFill( true );
-
-    oceanBox3->addControl( new LabelControl("High Feather: ", 16) );
-
-    HSliderControl* hfSlider = oceanBox3->addControl(new HSliderControl( -500.0f, 500.0f, -10.0f ));
-    hfSlider->setBackColor( Color::Gray );
-    hfSlider->setHeight( 12 );
-    hfSlider->setHorizFill( true, 200 );
-    hfSlider->addEventHandler( new ChangeHighFeather(ocean) );
-
-    return main;
-}
-
-//------------------------------------------------------------------------
-
-namespace
-{
-    struct AnnoControlBuilder : public osg::NodeVisitor
-    {
-        AnnoControlBuilder(osgViewer::View* view)
-            : osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN)
-        {
-            _grid = new Grid();
-            _grid->setHorizFill( true );
-            _grid->setAbsorbEvents( true );
-            _grid->setPadding( 5 );
-            _grid->setBackColor( Color(Color::Black,0.5) );
-
-            _manip = dynamic_cast<EarthManipulator*>(view->getCameraManipulator());
-        }
-
-        void apply( osg::Node& node )
-        {
-            AnnotationData* data = dynamic_cast<AnnotationData*>( node.getUserData() );
-            if ( data )
-            {
-                ControlVector row;
-                CheckBoxControl* cb = new CheckBoxControl( node.getNodeMask() != 0, new ToggleNodeHandler( &node ) );
-                cb->setSize( 12, 12 );
-                row.push_back( cb );
-                std::string name = trim(data->getName());
-                if ( name.empty() ) name = "<unnamed>";
-                LabelControl* label = new LabelControl( name, 14.0f );
-                unsigned relDepth = osg::clampAbove(3u, (unsigned int)this->getNodePath().size());
-                label->setMargin(Gutter(0,0,0,(relDepth-3)*20));
-                if ( data->getViewpoint() )
-                {
-                    label->addEventHandler( new ClickViewpointHandler(*data->getViewpoint(), _manip) );
-                    label->setActiveColor( Color::Blue );
-                }
-                row.push_back( label );
-                _grid->addControls( row );
-            }
-            traverse(node);
-        }
-
-        Grid*             _grid;
-        EarthManipulator* _manip;
-    };
-}
-
-Control*
-AnnotationGraphControlFactory::create(osg::Node*       graph,
-                                      osgViewer::View* view) const
-{
-    AnnoControlBuilder builder( view );
-    if ( graph )
-        graph->accept( builder );
-
-    return builder._grid;
-}
-
-//------------------------------------------------------------------------
-
-#undef  LC
-#define LC "[MapNodeHelper] "
-
-osg::Group*
-MapNodeHelper::load(osg::ArgumentParser& args,
-                    osgViewer::View*     view,
-                    Control*             userControl ) const
-{
-    // read in the Earth file:
-    osg::Node* node = 0L;
-    for( int i=0; i<args.argc(); ++i )
-    {
-        if ( osgDB::getLowerCaseFileExtension(args[i]) == "earth" )
-        {
-            node = osgDB::readNodeFile( args[i] );
-            args.remove(i);
-            break;
-        }
-    }
-
-    if ( !node )
-    {
-        node = osgDB::readNodeFile( "gdal_tiff.earth" );
-        if ( !node )
-        {
-            OE_WARN << LC << "Unable to load an earth file from the command line." << std::endl;
-            return 0L;
-        }
-    }
-
-    osg::ref_ptr<MapNode> mapNode = MapNode::findMapNode(node);
-    if ( !mapNode.valid() )
-    {
-        OE_WARN << LC << "Loaded scene graph does not contain a MapNode - aborting" << std::endl;
-        return 0L;
-    }
-
-    // warn about not having an earth manip
-    EarthManipulator* manip = dynamic_cast<EarthManipulator*>(view->getCameraManipulator());
-    if ( manip == 0L )
-    {
-        OE_WARN << LC << "Helper used before installing an EarthManipulator" << std::endl;
-    }
-
-    // a root node to hold everything:
-    osg::Group* root = new osg::Group();
-    root->addChild( mapNode.get() );
-
-    // configures the viewer with some stock goodies
-    configureView( view );
-
-    // parses common cmdline arguments.
-    parse( mapNode.get(), args, view, root, userControl );
-
-    return root;
-}
-
-
-void
-MapNodeHelper::parse(MapNode*             mapNode,
-                     osg::ArgumentParser& args,
-                     osgViewer::View*     view,
-                     osg::Group*          root,
-                     Control*             userControl ) const
-{
-    if ( !root )
-        root = mapNode;
-
-    // parse out custom example arguments first:
-
-    bool useSky        = args.read("--sky");
-    bool useOcean      = args.read("--ocean");
-    bool useMGRS       = args.read("--mgrs");
-    bool useDMS        = args.read("--dms");
-    bool useDD         = args.read("--dd");
-    bool useCoords     = args.read("--coords") || useMGRS || useDMS || useDD;
-    bool useOrtho      = args.read("--ortho");
-    bool useAutoClip   = args.read("--autoclip");
-
-    std::string kmlFile;
-    args.read( "--kml", kmlFile );
-
-    // install a canvas for any UI controls we plan to create:
-    ControlCanvas* canvas = ControlCanvas::get(view, false);
-
-    Container* mainContainer = canvas->addControl( new VBox() );
-    mainContainer->setBackColor( Color(Color::Black, 0.8) );
-    mainContainer->setHorizAlign( Control::ALIGN_LEFT );
-    mainContainer->setVertAlign( Control::ALIGN_BOTTOM );
-
-    // install the user control:
-    if ( userControl )
-        mainContainer->addControl( userControl );
-
-    // look for external data in the map node:
-    const Config& externals = mapNode->externalConfig();
-
-    const Config& skyConf         = externals.child("sky");
-    const Config& oceanConf       = externals.child("ocean");
-    const Config& annoConf        = externals.child("annotations");
-    const Config& declutterConf   = externals.child("decluttering");
-    Config        viewpointsConf  = externals.child("viewpoints");
-
-    // backwards-compatibility: read viewpoints at the top level:
-    const ConfigSet& old_viewpoints = externals.children("viewpoint");
-    for( ConfigSet::const_iterator i = old_viewpoints.begin(); i != old_viewpoints.end(); ++i )
-        viewpointsConf.add( *i );
-
-    // Loading a viewpoint list from the earth file:
-    if ( !viewpointsConf.empty() )
-    {
-        std::vector<Viewpoint> viewpoints;
-
-        const ConfigSet& children = viewpointsConf.children();
-        if ( children.size() > 0 )
-        {
-            for( ConfigSet::const_iterator i = children.begin(); i != children.end(); ++i )
-            {
-                viewpoints.push_back( Viewpoint(*i) );
-            }
-        }
-
-        if ( viewpoints.size() > 0 )
-        {
-            Control* c = ViewpointControlFactory().create(viewpoints, view);
-            if ( c )
-                mainContainer->addControl( c );
-        }
-    }
-
-    // Adding a sky model:
-    if ( useSky || !skyConf.empty() )
-    {
-        double hours = skyConf.value( "hours", 12.0 );
-        SkyNode* sky = new SkyNode( mapNode->getMap() );
-        sky->setDateTime( 2011, 3, 6, hours );
-        sky->attach( view );
-        root->addChild( sky );
-        Control* c = SkyControlFactory().create(sky, view);
-        if ( c )
-            mainContainer->addControl( c );
-    }
-
-    // Adding an ocean model:
-    if ( useOcean || !oceanConf.empty() )
-    {
-        OceanSurfaceNode* ocean = new OceanSurfaceNode( mapNode, oceanConf );
-        if ( ocean )
-        {
-            root->addChild( ocean );
-            Control* c = OceanControlFactory().create(ocean, view);
-            if ( c )
-                mainContainer->addControl(c);
-        }
-    }
-
-    // Loading KML from the command line:
-    if ( !kmlFile.empty() )
-    {
-        KMLOptions kml_options;
-        kml_options.declutter() = true;
-        kml_options.defaultIconImage() = URI( KML_PUSHPIN_URL ).getImage();
-
-        osg::Node* kml = KML::load( URI(kmlFile), mapNode, kml_options );
-        if ( kml )
-        {
-            Control* c = AnnotationGraphControlFactory().create(kml, view);
-            if ( c )
-            {
-                c->setVertAlign( Control::ALIGN_TOP );
-                canvas->addControl( c );
-            }
-            root->addChild( kml );
-        }
-    }
-
-    // Annotations in the map node externals:
-    if ( !annoConf.empty() )
-    {
-        osg::Group* annotations = 0L;
-        AnnotationRegistry::instance()->create( mapNode, annoConf, annotations );
-        if ( annotations )
-        {
-            root->addChild( annotations );
-        }
-    }
-
-    // Configure the de-cluttering engine for labels and annotations:
-    if ( !declutterConf.empty() )
-    {
-        Decluttering::setOptions( DeclutteringOptions(declutterConf) );
-    }
-
-    // Configure the mouse coordinate readout:
-    if ( useCoords )
-    { 
-        LabelControl* readout = new LabelControl();
-        readout->setBackColor( Color(Color::Black, 0.8) );
-        readout->setHorizAlign( Control::ALIGN_RIGHT );
-        readout->setVertAlign( Control::ALIGN_BOTTOM );
-
-        Formatter* formatter = 
-            useMGRS ? (Formatter*)new MGRSFormatter(MGRSFormatter::PRECISION_1M, 0L, MGRSFormatter::USE_SPACES) :
-            useDMS  ? (Formatter*)new LatLongFormatter(LatLongFormatter::FORMAT_DEGREES_MINUTES_SECONDS) :
-            useDD   ? (Formatter*)new LatLongFormatter(LatLongFormatter::FORMAT_DECIMAL_DEGREES) :
-            0L;
-
-        MouseCoordsTool* mcTool = new MouseCoordsTool( mapNode );
-        mcTool->addCallback( new MouseCoordsLabelCallback(readout, formatter) );
-        view->addEventHandler( mcTool );
-
-        canvas->addControl( readout );
-    }
-
-    // Configure for an ortho camera:
-    if ( useOrtho )
-    {
-        EarthManipulator* manip = dynamic_cast<EarthManipulator*>(view->getCameraManipulator());
-        if ( manip )
-        {
-            manip->getSettings()->setCameraProjection( EarthManipulator::PROJ_ORTHOGRAPHIC );
-        }
-    }
-
-    // Install an auto clip plane clamper
-    if ( useAutoClip )
-    {
-        view->getCamera()->addCullCallback( new AutoClipPlaneCullCallback(mapNode) );
-    }
-
-    root->addChild( canvas );
-}
-
-
-void
-MapNodeHelper::configureView( osgViewer::View* view ) const
-{
-    // add some stock OSG handlers:
-    view->addEventHandler(new osgViewer::StatsHandler());
-    view->addEventHandler(new osgViewer::WindowSizeHandler());
-    view->addEventHandler(new osgViewer::ThreadingHandler());
-    view->addEventHandler(new osgViewer::LODScaleHandler());
-    view->addEventHandler(new osgGA::StateSetManipulator(view->getCamera()->getOrCreateStateSet()));
-
-    // osgEarth benefits from pre-compilation of GL objects in the pager. In newer versions of
-    // OSG, this activates OSG's IncrementalCompileOpeartion in order to avoid frame breaks.
-    view->getDatabasePager()->setDoPreCompile( true );
-}
-
-
-std::string
-MapNodeHelper::usage() const
-{
-    return Stringify()
-        << "    --sky                : add a sky model\n"
-        << "    --ocean              : add an ocean model\n"
-        << "    --kml <file.kml>     : load a KML or KMZ file\n"
-        << "    --coords             : display map coords under mouse\n"
-        << "    --dms                : dispay deg/min/sec coords under mouse\n"
-        << "    --dd                 : display decimal degrees coords under mouse\n"
-        << "    --mgrs               : show MGRS coords under mouse\n"
-        << "    --ortho              : use an orthographic camera\n"
-        << "    --autoclip           : installs an auto-clip plane callback\n";
-}
diff --git a/src/osgEarthUtil/MeasureTool b/src/osgEarthUtil/MeasureTool
index 0f72252..dd0c54d 100644
--- a/src/osgEarthUtil/MeasureTool
+++ b/src/osgEarthUtil/MeasureTool
@@ -73,6 +73,8 @@ namespace osgEarth { namespace Util
 
         void setIntersectionMask( osg::Node::NodeMask intersectionMask ) { _intersectionMask = intersectionMask; }
         osg::Node::NodeMask getIntersectionMask() const { return _intersectionMask;}
+        
+        osgEarth::Features::Feature* getFeature() const { return _feature.get(); }
 
     public: // MapNodeObserver
 
diff --git a/tests/attenuation_distance.earth b/tests/attenuation_distance.earth
deleted file mode 100644
index 268d7ba..0000000
--- a/tests/attenuation_distance.earth
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
-This example demonstrates the "max_range" and "attenuation_distance" settings.
-"max_range" controls the maximum distance from camera (i.e., elevation) from which
-an image layer is visible. The "attenuation_distance" is the range over which that
-layer will "fade in" to view.
-
-Please note that usage of Yahoo! map data is subject to Yahoo!'s terms of service.
--->
-
-<map name="Yahoo Levels" type="geocentric" version="2">
-
-    <options>
-        <terrain attenuation_distance="1e6"/>
-        <cache_policy usage="no_cache"/>
-    </options>
-    
-    <!-- this level will be visible at lower resolutions -->
-    <image name="yahoo_sat" driver="yahoo">
-        <dataset>satellite</dataset>
-        <max_level>5</max_level>
-    </image> 
-
-    <!-- this level will be visible at higher resolutions -->
-    <image name="yahoo_maps" driver="yahoo" max_range="5e6">
-    </image> 
-   
-</map>
diff --git a/tests/feature_tfs.earth b/tests/feature_tfs.earth
index a926dc1..27411ec 100644
--- a/tests/feature_tfs.earth
+++ b/tests/feature_tfs.earth
@@ -1,45 +1,45 @@
-<!--
-osgEarth Sample - TFS
-
-This example shows how to use the TFS driver.
--->
-<map name="TFS" type="geocentric" version="2">
-
-    <model name="buildings" driver="feature_geom">
-    
-        <features name="buildings" driver="tfs">		                
-			<url>http://readymap.org/readymap/features/tfs/4/</url>
-            <format>json</format>            
-        </features>
-        
-        <layout>        
-            <tile_size_factor>5.0</tile_size_factor>
-        </layout>
-        
-        <styles>                
-            <style type="text/css">
-                buildings {
-                    extrusion-height:  15;
-                    extrusion-flatten: true;
-                    fill:              #ff7f2f;
-                    altitude-clamping: terrain;
-                }            
-            </style>
-        </styles>  
-        
-        <lighting>true</lighting>
-    </model>
-                    
- 
-
-    <image name="esri imagery" driver="arcgis">
-        <url>http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer</url>
-        <nodata_image>http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer/tile/100/0/0.jpeg</nodata_image>
-    </image>
-    
-    <external>
-        <sky hours="20.0"/>
-        <viewpoint name="Mexico Buildings" height="0" lat="19.42" long="-99.163" pitch="-89" range="5000"/>
-    </external>
-  
-</map>
+<!--
+osgEarth Sample - TFS
+
+This example shows how to use the TFS driver.
+-->
+<map name="TFS" type="geocentric" version="2">
+
+    <model name="buildings" driver="feature_geom">
+    
+        <features name="buildings" driver="tfs">		                
+			<url>http://readymap.org/readymap/features/tfs/4/</url>
+            <format>json</format>            
+        </features>
+        
+        <layout>        
+            <tile_size_factor>5.0</tile_size_factor>
+        </layout>
+        
+        <styles>                
+            <style type="text/css">
+                buildings {
+                    extrusion-height:  15;
+                    extrusion-flatten: true;
+                    fill:              #ff7f2f;
+                    altitude-clamping: terrain;
+                }            
+            </style>
+        </styles>  
+        
+        <lighting>true</lighting>
+    </model>
+                    
+ 
+
+    <image name="esri imagery" driver="arcgis">
+        <url>http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer</url>
+        <nodata_image>http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer/tile/100/0/0.jpeg</nodata_image>
+    </image>
+    
+    <external>
+        <sky hours="20.0"/>
+        <viewpoint name="Mexico Buildings" height="0" lat="19.42" long="-99.163" pitch="-89" range="5000"/>
+    </external>
+  
+</map>
diff --git a/tests/mb_tiles.earth b/tests/mb_tiles.earth
index 9df2d27..d04007a 100644
--- a/tests/mb_tiles.earth
+++ b/tests/mb_tiles.earth
@@ -1,19 +1,19 @@
-<!--
-osgEarth Sample
-
-This example shows how to access an MBTiles dataset.  The MBTiles datasets are very large so they are no in the osgEarth repository.  You can download samples from http://mapbox.com/#/
--->
-
-<map name="MBTiles" type="geocentric" version="2">    
-   
-   <image driver="gdal" name="world-tiff">
-        <url>../data/world.tif</url>
-    </image>	
-	  
-    <!--Add the haiti mbtiles dataset.  You may need to change the path to point to your download location-->	  
-    <image name="haiti" driver="mbtiles">
-        <filename>../data/haiti-terrain-grey.mbtiles</filename>
-		<format>jpg</format>
-    </image>
-   
-</map>
+<!--
+osgEarth Sample
+
+This example shows how to access an MBTiles dataset.  The MBTiles datasets are very large so they are no in the osgEarth repository.  You can download samples from http://mapbox.com/#/
+-->
+
+<map name="MBTiles" type="geocentric" version="2">    
+   
+   <image driver="gdal" name="world-tiff">
+        <url>../data/world.tif</url>
+    </image>	
+	  
+    <!--Add the haiti mbtiles dataset.  You may need to change the path to point to your download location-->	  
+    <image name="haiti" driver="mbtiles">
+        <filename>../data/haiti-terrain-grey.mbtiles</filename>
+		<format>jpg</format>
+    </image>
+   
+</map>
diff --git a/tests/refresh.earth b/tests/refresh.earth
index bbb2184..6902616 100644
--- a/tests/refresh.earth
+++ b/tests/refresh.earth
@@ -1,33 +1,33 @@
-<!--
-osgEarth Sample - Refresh
-
-This example is a test of a dynamic image capability that refreshes an image every N seconds.  This doesn't really serve any purpose other than to serve
-as a an example of how one might go about providing a dynamically refreshing image for a tile.
--->
-<map name="refresh" type="geocentric" version="2">
-
-    <image name="Refresh" driver="refresh">
-	    <!--This url is a traffic camera that changes periodically.  The resolution isn't great but you can get the idea.
-		You can also point to a local file, load it in an image editing program and save it and the new image will appear
-		-->
-        <url>http://webcam.mta.info/mta3/servlet/MtaImageServlet?cam_id=5</url>
-		
-		<!--Polling frequency.  How often to refresh the image.  You don't want this too high or too many images will be loaded since the same image applies to every tile.-->
-		<frequency>2.0</frequency>
-    </image>
-  
-    
-    <options>
-        <terrain>
-            <lighting>false</lighting>            
-			<!--
-			Setting the filters to linear disables mipmapping and reduces frame breaks b/c many new images are being sent to the graphics card when it refresh
-			and can cause stalls when generating mipmaps
-			-->
-			<min_filter>LINEAR</min_filter>
-			<mag_filter>LINEAR</mag_filter>
-			
-        </terrain>
-    </options>
-    
-</map>
+<!--
+osgEarth Sample - Refresh
+
+This example is a test of a dynamic image capability that refreshes an image every N seconds.  This doesn't really serve any purpose other than to serve
+as a an example of how one might go about providing a dynamically refreshing image for a tile.
+-->
+<map name="refresh" type="geocentric" version="2">
+
+    <image name="Refresh" driver="refresh">
+	    <!--This url is a traffic camera that changes periodically.  The resolution isn't great but you can get the idea.
+		You can also point to a local file, load it in an image editing program and save it and the new image will appear
+		-->
+        <url>http://webcam.mta.info/mta3/servlet/MtaImageServlet?cam_id=5</url>
+		
+		<!--Polling frequency.  How often to refresh the image.  You don't want this too high or too many images will be loaded since the same image applies to every tile.-->
+		<frequency>2.0</frequency>
+    </image>
+  
+    
+    <options>
+        <terrain>
+            <lighting>false</lighting>            
+			<!--
+			Setting the filters to linear disables mipmapping and reduces frame breaks b/c many new images are being sent to the graphics card when it refresh
+			and can cause stalls when generating mipmaps
+			-->
+			<min_filter>LINEAR</min_filter>
+			<mag_filter>LINEAR</mag_filter>
+			
+        </terrain>
+    </options>
+    
+</map>
diff --git a/tests/t.earth b/tests/t.earth
deleted file mode 100644
index 8669bef..0000000
--- a/tests/t.earth
+++ /dev/null
@@ -1,34 +0,0 @@
-<!--
-osgEarth Sample - ReadyMap.ORG Server - http://readymap.org
-
-ReadyMap.ORG provides free global base map data for osgEarth developers!
-This tiled, worldwide dataset of imagery, elevation, and street map data
-is a great base map that provides global context for your own local datasets.
-It works "out of the box" with osgEarth applications.
-
-**** NOTICE ****
-YOU ARE RESPONSIBLE for abiding by the TERMS AND CONDITIONS outlined at:
-http://readymap.org
-
--->
-<map name="readymap.org" type="geocentric" version="2">
-
-    <image name="ReadyMap.org - Imagery" driver="tms">
-        <url>http://readymap.org/readymap/tiles/1.0.0/7/</url>
-    </image>
-
-    <image name="ReadyMap.org - Street Map" driver="tms">
-        <url>http://readymap.org/readymap/tiles/1.0.0/35/</url>
-    </image>
-        
-    <elevation name="ReadyMap.org - Elevation" driver="tms">
-        <url>http://readymap.org/readymap/tiles/1.0.0/9/</url>
-    </elevation>
-    
-    <options>
-        <terrain>
-            <lighting>false</lighting>
-        </terrain>
-    </options>
-    
-</map>

-- 
osgEarth terrain rendering toolkit



More information about the Pkg-grass-devel mailing list