<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Kristoffer's tidbits : Virtual Earth 3D Plugins</title><link>http://blogs.msdn.com/kristoffer/archive/tags/Virtual+Earth+3D+Plugins/default.aspx</link><description>Tags: Virtual Earth 3D Plugins</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>How does Virtual Earth 3D find and load plugins?</title><link>http://blogs.msdn.com/kristoffer/archive/2007/12/07/how-does-virtual-earth-3d-find-and-load-plugins.aspx</link><pubDate>Fri, 07 Dec 2007 21:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6696138</guid><dc:creator>Kristoffer</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/kristoffer/comments/6696138.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kristoffer/commentrss.aspx?PostID=6696138</wfw:commentRss><description>&lt;p&gt;On startup VE3D looks in the Plugins folder of the install directory (ProgramFiles\Virtual Earth 3D) and iterates through the assemblies in each subfolder of Plugins. A plugin named Sample would install itself as C:\Program Files\Virtual Earth 3D\Plugins\Sample\Sample.dll. Note that this folder doesn't exist by default so your plugin installer will need to create it.&lt;br&gt; &lt;/p&gt;
&lt;p&gt;Next each assembly is probed for classes that descend from &lt;span style="font-size: 10pt; font-family: Courier New;"&gt;&lt;span style="color: black;"&gt;Microsoft.MapPoint.PlugIns.&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;PlugIn&lt;/span&gt;&lt;/span&gt;. For security reasons only assemblies that are in the GAC are allowed to run. The good news is that we are investigating allowing partially trusted plugins for our next release. This means you will be able to visit a website and have it load its own plugins to add new functionality to VE3D without forcing you to go through an install process. Since we're still in the early parts of our next release I don't know for sure if this will make the cut but it is something we would like to add.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6696138" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kristoffer/archive/tags/Virtual+Earth+3D/default.aspx">Virtual Earth 3D</category><category domain="http://blogs.msdn.com/kristoffer/archive/tags/Virtual+Earth+3D+Plugins/default.aspx">Virtual Earth 3D Plugins</category></item><item><title>Using a plugin to add a billboard to Virtual Earth 3D</title><link>http://blogs.msdn.com/kristoffer/archive/2007/11/14/using-a-plugin-to-add-a-billboard-to-virtual-earth-3d.aspx</link><pubDate>Wed, 14 Nov 2007 23:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6223935</guid><dc:creator>Kristoffer</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/kristoffer/comments/6223935.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kristoffer/commentrss.aspx?PostID=6223935</wfw:commentRss><description>&lt;P&gt;To add objects to the VE3D world we need to create our own actor that knows how to render itself.&lt;/P&gt;
&lt;P&gt;Actors descend from &lt;SPAN style="FONT-FAMILY: Courier New"&gt;Microsoft.MapPoint.Rendering3D.Steps.Actors.&lt;SPAN style="COLOR: #2b91af"&gt;Actor&lt;/SPAN&gt;&lt;/SPAN&gt; and must override the &lt;SPAN style="FONT-FAMILY: Courier New"&gt;Render&lt;/SPAN&gt; method. When it comes time to render a frame, all actors have their Render method called to queue up renderable objects. To show a billboard we'll create a BillboardActor and use a SpriteGraphicsObject to render our image.&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&lt;/SPAN&gt; BillboardActor(&lt;SPAN style="COLOR: #2b91af"&gt;LatLonAlt&lt;/SPAN&gt; position)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.texture = &lt;SPAN style="COLOR: #2b91af"&gt;Texture&lt;/SPAN&gt;.FromResource(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.GetType().Assembly, &lt;SPAN style="COLOR: #a31515"&gt;"VirtualEarth3DSamplePlugins.Billboard.Flower.png"&lt;/SPAN&gt;);&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.billboard = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;SpriteGraphicsObject&lt;/SPAN&gt;();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.billboard.Texture = &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.texture;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.billboard.Mode = &lt;SPAN style="COLOR: #2b91af"&gt;SpriteMode&lt;/SPAN&gt;.Billboard;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.billboard.Scale = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Vector2D&lt;/SPAN&gt;(1000, 1000);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.billboard.Color = &lt;SPAN style="COLOR: #2b91af"&gt;Color&lt;/SPAN&gt;.White;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.billboard.AlphaEnable = &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.billboard.Position = position.GetVector();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;/DIV&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Render(Microsoft.MapPoint.Rendering3D.Scene.&lt;SPAN style="COLOR: #2b91af"&gt;SceneState&lt;/SPAN&gt; sceneState)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;RenderQueues&lt;/SPAN&gt; renderQueues = sceneState.GetData&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;RenderQueues&lt;/SPAN&gt;&amp;gt;();&lt;/P&gt;
&lt;P style="MARGIN: 0px" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; renderQueues.AddAlphaRenderable(0, &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.billboard);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;Once we have our actor we just need to add it to the ActorManager so it knows to start rendering it. We can do this in our Activate method on the plugin.&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;LatLonAlt&lt;/SPAN&gt; position = &lt;SPAN style="COLOR: #2b91af"&gt;LatLonAlt&lt;/SPAN&gt;.CreateUsingDegrees(46.849743288383046, -121.7498016357422, 5000);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// Add the actor at the specified position&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.Host.Actors.Add(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;BillboardActor&lt;/SPAN&gt;(position));&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;IMG title="Billboard in action" style="WIDTH: 886px; HEIGHT: 714px" height=714 alt="Billboard in action" src="http://kristoffer.members.winisp.net/Images/VirtualEarth3DPlugins/VirtualEarth3DBillboardPlugin.png" width=886 border=0 mce_src="http://kristoffer.members.winisp.net/Images/VirtualEarth3DPlugins/VirtualEarth3DBillboardPlugin.png"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can browse the source code for the actor and the plugin online or download the entire project.&lt;BR&gt;&lt;A title="BillboardActor.cs source code" href="http://blogs.msdn.com/Kristoffer/pages/billboardactor-cs.aspx" mce_href="http://blogs.msdn.com/Kristoffer/pages/billboardactor-cs.aspx"&gt;BillboardActor.cs&lt;/A&gt;&amp;nbsp;| &lt;A title="BillboardPlugin.cs source code" href="http://blogs.msdn.com/Kristoffer/pages/billboardplugin-cs.aspx" mce_href="http://blogs.msdn.com/Kristoffer/pages/billboardplugin-cs.aspx"&gt;BillboardPlugin.cs&lt;/A&gt;&lt;BR&gt;&lt;A href="http://kristoffer.members.winisp.net/VE3D/VirtualEarth3DPlugins.zip"&gt;Download project&lt;/P&gt;&lt;/A&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6223935" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kristoffer/archive/tags/Virtual+Earth+3D/default.aspx">Virtual Earth 3D</category><category domain="http://blogs.msdn.com/kristoffer/archive/tags/Virtual+Earth+3D+Plugins/default.aspx">Virtual Earth 3D Plugins</category></item><item><title>Creating a Hello World plugin for Virtual Earth 3D</title><link>http://blogs.msdn.com/kristoffer/archive/2007/11/13/creating-a-hello-world-plugin-for-virtual-earth-3d.aspx</link><pubDate>Tue, 13 Nov 2007 20:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6178675</guid><dc:creator>Kristoffer</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/kristoffer/comments/6178675.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kristoffer/commentrss.aspx?PostID=6178675</wfw:commentRss><description>&lt;p&gt;With latest&amp;nbsp;release of the Virtual Earth 3D release we now support loading plugins to perform additional functionality not implemented in the main product. Two new features of the release are even implemented as plugins (bird's eye photos and user created models).&lt;/p&gt;
&lt;p&gt;To get you started with creating your own plugin for VE3D here's a short starter guide using Visual Studio 2005.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new C# Class Library project, call it HelloWorld.&lt;/li&gt;
&lt;li&gt;Add references to the following assemblies located in C:\Program Files\Virtual Earth 3D:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft.MapPoint.Rendering3D.dll&lt;/li&gt;
&lt;li&gt;Microsoft.MapPoint.Rendering3D.Utility.dll&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Rename Class1.cs to HelloWorldPlugin.cs and paste the following code over the file:&lt;br&gt;
&lt;div style="background: white none repeat scroll 0% 50%; font-size: 10pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: Courier New;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt;
&lt;p style="margin: 0px;" mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; Microsoft.MapPoint.PlugIns;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; Microsoft.MapPoint.Rendering3D;&lt;/p&gt;
&lt;p style="margin: 0px;" mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; VirtualEarth3DSamplePlugins.HelloWorld&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;HelloWorldPlugin&lt;/span&gt; : PlugIn&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Constructor&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; HelloWorldPlugin(Host host)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;span style="color: blue;"&gt;base&lt;/span&gt;(host)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Overrides&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Activate(&lt;span style="color: blue;"&gt;object&lt;/span&gt; activationObject)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Host.Notifications.Display(&lt;span style="color: rgb(163, 21, 21);"&gt;"Hello world!"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;" mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;base&lt;/span&gt;.Activate(activationObject);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; Name&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;get&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;"HelloWorldPlugin"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Go to Project Properties, Signing, check &lt;b&gt;Sign the assembly&lt;/b&gt; and create a new key to sign your project with. Only plugins that are in the GAC will be granted permissions to run and only strongly named assemblies may be placed in the GAC. 
&lt;p&gt;Build your project and copy HelloWorld.dll to a new folder named &lt;b&gt;C:\Program Files\Virtual Earth 3D\Plugins\HelloWorld&lt;/b&gt;. From a &lt;b&gt;Visual Studio 2005 Command Prompt&lt;/b&gt; run &lt;br&gt;&lt;font style="font-family: Courier New;"&gt;gacutil -i "C:\Program Files\Virtual Earth 3D\Plugins\HelloWorld\HelloWorld.dll"&lt;/font&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Now start up 3D mode on &lt;a href="http://maps.live.com/" class="" mce_href="http://maps.live.com/"&gt;maps.live.com&lt;/a&gt;&amp;nbsp;and you should see a notification upon startup from the hello world plugin.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://kristoffer.members.winisp.net/Images/VirtualEarth3DPlugins/HelloWorldFromPlugin.png" style="width: 874px; height: 704px;" mce_src="http://kristoffer.members.winisp.net/Images/VirtualEarth3DPlugins/HelloWorldFromPlugin.png" border="0" height="704" width="874"&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;That's it for creating a simple plugin. If you want to explore further on your own the Host object contains all the interfaces for a plugin to communicate with VE3D.&lt;/p&gt;&lt;p&gt;Mandatory disclaimer so I don't get into trouble: creating plugins is not officially supported.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6178675" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kristoffer/archive/tags/Virtual+Earth+3D/default.aspx">Virtual Earth 3D</category><category domain="http://blogs.msdn.com/kristoffer/archive/tags/Virtual+Earth+3D+Plugins/default.aspx">Virtual Earth 3D Plugins</category></item></channel></rss>